Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ea45783 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (29 commits)
  drivers/net: Correct NULL test
  MAINTAINERS: networking drivers - Add git net-next tree
  net/sched: Fix module name in Kconfig
  cxgb3: fix GRO checksum check
  dst: call cond_resched() in dst_gc_task()
  netfilter: nf_conntrack: fix hash resizing with namespaces
  netfilter: xtables: compat out of scope fix
  netfilter: nf_conntrack: restrict runtime expect hashsize modifications
  netfilter: nf_conntrack: per netns nf_conntrack_cachep
  netfilter: nf_conntrack: fix memory corruption with multiple namespaces
  Bluetooth: Keep a copy of each HID device's report descriptor
  pktgen: Fix freezing problem
  igb: make certain to reassign legacy interrupt vectors after reset
  irda: add missing BKL in irnet_ppp ioctl
  irda: unbalanced lock_kernel in irnet_ppp
  ixgbe: Fix return of invalid txq
  ixgbe: Fix ixgbe_tx_map error path
  netxen: protect resource cleanup by rtnl lock
  netxen: fix tx timeout recovery for NX2031 chip
  Bluetooth: Enter active mode before establishing a SCO link.
  ...
parents ac73fddf 44bfce5c
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -3836,6 +3836,7 @@ NETWORKING DRIVERS
L:	netdev@vger.kernel.org
L:	netdev@vger.kernel.org
W:	http://www.linuxfoundation.org/en/Net
W:	http://www.linuxfoundation.org/en/Net
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6.git
S:	Odd Fixes
S:	Odd Fixes
F:	drivers/net/
F:	drivers/net/
F:	include/linux/if_*
F:	include/linux/if_*
+1 −0
Original line number Original line Diff line number Diff line
@@ -808,6 +808,7 @@ static int btmrvl_sdio_host_to_card(struct btmrvl_private *priv,


exit:
exit:
	sdio_release_host(card->func);
	sdio_release_host(card->func);
	kfree(tmpbuf);


	return ret;
	return ret;
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -921,7 +921,7 @@ static int ax_probe(struct platform_device *pdev)
 		size = (res->end - res->start) + 1;
 		size = (res->end - res->start) + 1;


		ax->mem2 = request_mem_region(res->start, size, pdev->name);
		ax->mem2 = request_mem_region(res->start, size, pdev->name);
		if (ax->mem == NULL) {
		if (ax->mem2 == NULL) {
			dev_err(&pdev->dev, "cannot reserve registers\n");
			dev_err(&pdev->dev, "cannot reserve registers\n");
			ret = -ENXIO;
			ret = -ENXIO;
			goto exit_mem1;
			goto exit_mem1;
+12 −8
Original line number Original line Diff line number Diff line
@@ -2079,6 +2079,7 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
			 struct sge_fl *fl, int len, int complete)
			 struct sge_fl *fl, int len, int complete)
{
{
	struct rx_sw_desc *sd = &fl->sdesc[fl->cidx];
	struct rx_sw_desc *sd = &fl->sdesc[fl->cidx];
	struct port_info *pi = netdev_priv(qs->netdev);
	struct sk_buff *skb = NULL;
	struct sk_buff *skb = NULL;
	struct cpl_rx_pkt *cpl;
	struct cpl_rx_pkt *cpl;
	struct skb_frag_struct *rx_frag;
	struct skb_frag_struct *rx_frag;
@@ -2116,11 +2117,18 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,


	if (!nr_frags) {
	if (!nr_frags) {
		offset = 2 + sizeof(struct cpl_rx_pkt);
		offset = 2 + sizeof(struct cpl_rx_pkt);
		qs->lro_va = sd->pg_chunk.va + 2;
		cpl = qs->lro_va = sd->pg_chunk.va + 2;
	}
	len -= offset;


	prefetch(qs->lro_va);
		if ((pi->rx_offload & T3_RX_CSUM) &&
		     cpl->csum_valid && cpl->csum == htons(0xffff)) {
			skb->ip_summed = CHECKSUM_UNNECESSARY;
			qs->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++;
		} else
			skb->ip_summed = CHECKSUM_NONE;
	} else
		cpl = qs->lro_va;

	len -= offset;


	rx_frag += nr_frags;
	rx_frag += nr_frags;
	rx_frag->page = sd->pg_chunk.page;
	rx_frag->page = sd->pg_chunk.page;
@@ -2136,12 +2144,8 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
		return;
		return;


	skb_record_rx_queue(skb, qs - &adap->sge.qs[0]);
	skb_record_rx_queue(skb, qs - &adap->sge.qs[0]);
	skb->ip_summed = CHECKSUM_UNNECESSARY;
	cpl = qs->lro_va;


	if (unlikely(cpl->vlan_valid)) {
	if (unlikely(cpl->vlan_valid)) {
		struct net_device *dev = qs->netdev;
		struct port_info *pi = netdev_priv(dev);
		struct vlan_group *grp = pi->vlan_grp;
		struct vlan_group *grp = pi->vlan_grp;


		if (likely(grp != NULL)) {
		if (likely(grp != NULL)) {
+5 −15
Original line number Original line Diff line number Diff line
@@ -421,6 +421,8 @@ static void igb_assign_vector(struct igb_q_vector *q_vector, int msix_vector)
			msixbm = E1000_EICR_RX_QUEUE0 << rx_queue;
			msixbm = E1000_EICR_RX_QUEUE0 << rx_queue;
		if (tx_queue > IGB_N0_QUEUE)
		if (tx_queue > IGB_N0_QUEUE)
			msixbm |= E1000_EICR_TX_QUEUE0 << tx_queue;
			msixbm |= E1000_EICR_TX_QUEUE0 << tx_queue;
		if (!adapter->msix_entries && msix_vector == 0)
			msixbm |= E1000_EIMS_OTHER;
		array_wr32(E1000_MSIXBM(0), msix_vector, msixbm);
		array_wr32(E1000_MSIXBM(0), msix_vector, msixbm);
		q_vector->eims_value = msixbm;
		q_vector->eims_value = msixbm;
		break;
		break;
@@ -877,7 +879,6 @@ static int igb_request_irq(struct igb_adapter *adapter)
{
{
	struct net_device *netdev = adapter->netdev;
	struct net_device *netdev = adapter->netdev;
	struct pci_dev *pdev = adapter->pdev;
	struct pci_dev *pdev = adapter->pdev;
	struct e1000_hw *hw = &adapter->hw;
	int err = 0;
	int err = 0;


	if (adapter->msix_entries) {
	if (adapter->msix_entries) {
@@ -909,20 +910,7 @@ static int igb_request_irq(struct igb_adapter *adapter)
		igb_setup_all_tx_resources(adapter);
		igb_setup_all_tx_resources(adapter);
		igb_setup_all_rx_resources(adapter);
		igb_setup_all_rx_resources(adapter);
	} else {
	} else {
		switch (hw->mac.type) {
		igb_assign_vector(adapter->q_vector[0], 0);
		case e1000_82575:
			wr32(E1000_MSIXBM(0),
			     (E1000_EICR_RX_QUEUE0 |
			      E1000_EICR_TX_QUEUE0 |
			      E1000_EIMS_OTHER));
			break;
		case e1000_82580:
		case e1000_82576:
			wr32(E1000_IVAR0, E1000_IVAR_VALID);
			break;
		default:
			break;
		}
	}
	}


	if (adapter->flags & IGB_FLAG_HAS_MSI) {
	if (adapter->flags & IGB_FLAG_HAS_MSI) {
@@ -1140,6 +1128,8 @@ int igb_up(struct igb_adapter *adapter)
	}
	}
	if (adapter->msix_entries)
	if (adapter->msix_entries)
		igb_configure_msix(adapter);
		igb_configure_msix(adapter);
	else
		igb_assign_vector(adapter->q_vector[0], 0);


	/* Clear any pending interrupts. */
	/* Clear any pending interrupts. */
	rd32(E1000_ICR);
	rd32(E1000_ICR);
Loading