diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/bluetooth/btmrvl_sdio.c | 1 | ||||
-rw-r--r-- | drivers/net/ax88796.c | 2 | ||||
-rw-r--r-- | drivers/net/cxgb3/sge.c | 20 | ||||
-rw-r--r-- | drivers/net/igb/igb_main.c | 20 |
4 files changed, 19 insertions, 24 deletions
diff --git a/drivers/bluetooth/btmrvl_sdio.c b/drivers/bluetooth/btmrvl_sdio.c index f36defa37764..57d965b7f521 100644 --- a/drivers/bluetooth/btmrvl_sdio.c +++ b/drivers/bluetooth/btmrvl_sdio.c | |||
@@ -808,6 +808,7 @@ static int btmrvl_sdio_host_to_card(struct btmrvl_private *priv, | |||
808 | 808 | ||
809 | exit: | 809 | exit: |
810 | sdio_release_host(card->func); | 810 | sdio_release_host(card->func); |
811 | kfree(tmpbuf); | ||
811 | 812 | ||
812 | return ret; | 813 | return ret; |
813 | } | 814 | } |
diff --git a/drivers/net/ax88796.c b/drivers/net/ax88796.c index 62d9c9cc5671..1dd4403247ca 100644 --- a/drivers/net/ax88796.c +++ b/drivers/net/ax88796.c | |||
@@ -921,7 +921,7 @@ static int ax_probe(struct platform_device *pdev) | |||
921 | size = (res->end - res->start) + 1; | 921 | size = (res->end - res->start) + 1; |
922 | 922 | ||
923 | ax->mem2 = request_mem_region(res->start, size, pdev->name); | 923 | ax->mem2 = request_mem_region(res->start, size, pdev->name); |
924 | if (ax->mem == NULL) { | 924 | if (ax->mem2 == NULL) { |
925 | dev_err(&pdev->dev, "cannot reserve registers\n"); | 925 | dev_err(&pdev->dev, "cannot reserve registers\n"); |
926 | ret = -ENXIO; | 926 | ret = -ENXIO; |
927 | goto exit_mem1; | 927 | goto exit_mem1; |
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index 4cf9b7962afa..048205903741 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c | |||
@@ -2080,6 +2080,7 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs, | |||
2080 | struct sge_fl *fl, int len, int complete) | 2080 | struct sge_fl *fl, int len, int complete) |
2081 | { | 2081 | { |
2082 | struct rx_sw_desc *sd = &fl->sdesc[fl->cidx]; | 2082 | struct rx_sw_desc *sd = &fl->sdesc[fl->cidx]; |
2083 | struct port_info *pi = netdev_priv(qs->netdev); | ||
2083 | struct sk_buff *skb = NULL; | 2084 | struct sk_buff *skb = NULL; |
2084 | struct cpl_rx_pkt *cpl; | 2085 | struct cpl_rx_pkt *cpl; |
2085 | struct skb_frag_struct *rx_frag; | 2086 | struct skb_frag_struct *rx_frag; |
@@ -2117,11 +2118,18 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs, | |||
2117 | 2118 | ||
2118 | if (!nr_frags) { | 2119 | if (!nr_frags) { |
2119 | offset = 2 + sizeof(struct cpl_rx_pkt); | 2120 | offset = 2 + sizeof(struct cpl_rx_pkt); |
2120 | qs->lro_va = sd->pg_chunk.va + 2; | 2121 | cpl = qs->lro_va = sd->pg_chunk.va + 2; |
2121 | } | ||
2122 | len -= offset; | ||
2123 | 2122 | ||
2124 | prefetch(qs->lro_va); | 2123 | if ((pi->rx_offload & T3_RX_CSUM) && |
2124 | cpl->csum_valid && cpl->csum == htons(0xffff)) { | ||
2125 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
2126 | qs->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++; | ||
2127 | } else | ||
2128 | skb->ip_summed = CHECKSUM_NONE; | ||
2129 | } else | ||
2130 | cpl = qs->lro_va; | ||
2131 | |||
2132 | len -= offset; | ||
2125 | 2133 | ||
2126 | rx_frag += nr_frags; | 2134 | rx_frag += nr_frags; |
2127 | rx_frag->page = sd->pg_chunk.page; | 2135 | rx_frag->page = sd->pg_chunk.page; |
@@ -2137,12 +2145,8 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs, | |||
2137 | return; | 2145 | return; |
2138 | 2146 | ||
2139 | skb_record_rx_queue(skb, qs - &adap->sge.qs[0]); | 2147 | skb_record_rx_queue(skb, qs - &adap->sge.qs[0]); |
2140 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
2141 | cpl = qs->lro_va; | ||
2142 | 2148 | ||
2143 | if (unlikely(cpl->vlan_valid)) { | 2149 | if (unlikely(cpl->vlan_valid)) { |
2144 | struct net_device *dev = qs->netdev; | ||
2145 | struct port_info *pi = netdev_priv(dev); | ||
2146 | struct vlan_group *grp = pi->vlan_grp; | 2150 | struct vlan_group *grp = pi->vlan_grp; |
2147 | 2151 | ||
2148 | if (likely(grp != NULL)) { | 2152 | if (likely(grp != NULL)) { |
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 0a064ce3eb45..83cd0d7417d0 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -421,6 +421,8 @@ static void igb_assign_vector(struct igb_q_vector *q_vector, int msix_vector) | |||
421 | msixbm = E1000_EICR_RX_QUEUE0 << rx_queue; | 421 | msixbm = E1000_EICR_RX_QUEUE0 << rx_queue; |
422 | if (tx_queue > IGB_N0_QUEUE) | 422 | if (tx_queue > IGB_N0_QUEUE) |
423 | msixbm |= E1000_EICR_TX_QUEUE0 << tx_queue; | 423 | msixbm |= E1000_EICR_TX_QUEUE0 << tx_queue; |
424 | if (!adapter->msix_entries && msix_vector == 0) | ||
425 | msixbm |= E1000_EIMS_OTHER; | ||
424 | array_wr32(E1000_MSIXBM(0), msix_vector, msixbm); | 426 | array_wr32(E1000_MSIXBM(0), msix_vector, msixbm); |
425 | q_vector->eims_value = msixbm; | 427 | q_vector->eims_value = msixbm; |
426 | break; | 428 | break; |
@@ -877,7 +879,6 @@ static int igb_request_irq(struct igb_adapter *adapter) | |||
877 | { | 879 | { |
878 | struct net_device *netdev = adapter->netdev; | 880 | struct net_device *netdev = adapter->netdev; |
879 | struct pci_dev *pdev = adapter->pdev; | 881 | struct pci_dev *pdev = adapter->pdev; |
880 | struct e1000_hw *hw = &adapter->hw; | ||
881 | int err = 0; | 882 | int err = 0; |
882 | 883 | ||
883 | if (adapter->msix_entries) { | 884 | if (adapter->msix_entries) { |
@@ -909,20 +910,7 @@ static int igb_request_irq(struct igb_adapter *adapter) | |||
909 | igb_setup_all_tx_resources(adapter); | 910 | igb_setup_all_tx_resources(adapter); |
910 | igb_setup_all_rx_resources(adapter); | 911 | igb_setup_all_rx_resources(adapter); |
911 | } else { | 912 | } else { |
912 | switch (hw->mac.type) { | 913 | igb_assign_vector(adapter->q_vector[0], 0); |
913 | case e1000_82575: | ||
914 | wr32(E1000_MSIXBM(0), | ||
915 | (E1000_EICR_RX_QUEUE0 | | ||
916 | E1000_EICR_TX_QUEUE0 | | ||
917 | E1000_EIMS_OTHER)); | ||
918 | break; | ||
919 | case e1000_82580: | ||
920 | case e1000_82576: | ||
921 | wr32(E1000_IVAR0, E1000_IVAR_VALID); | ||
922 | break; | ||
923 | default: | ||
924 | break; | ||
925 | } | ||
926 | } | 914 | } |
927 | 915 | ||
928 | if (adapter->flags & IGB_FLAG_HAS_MSI) { | 916 | if (adapter->flags & IGB_FLAG_HAS_MSI) { |
@@ -1140,6 +1128,8 @@ int igb_up(struct igb_adapter *adapter) | |||
1140 | } | 1128 | } |
1141 | if (adapter->msix_entries) | 1129 | if (adapter->msix_entries) |
1142 | igb_configure_msix(adapter); | 1130 | igb_configure_msix(adapter); |
1131 | else | ||
1132 | igb_assign_vector(adapter->q_vector[0], 0); | ||
1143 | 1133 | ||
1144 | /* Clear any pending interrupts. */ | 1134 | /* Clear any pending interrupts. */ |
1145 | rd32(E1000_ICR); | 1135 | rd32(E1000_ICR); |