diff options
Diffstat (limited to 'drivers/net/bnx2.c')
-rw-r--r-- | drivers/net/bnx2.c | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 7635736cc791..d55b0f7939a6 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
@@ -57,8 +57,8 @@ | |||
57 | 57 | ||
58 | #define DRV_MODULE_NAME "bnx2" | 58 | #define DRV_MODULE_NAME "bnx2" |
59 | #define PFX DRV_MODULE_NAME ": " | 59 | #define PFX DRV_MODULE_NAME ": " |
60 | #define DRV_MODULE_VERSION "1.4.42" | 60 | #define DRV_MODULE_VERSION "1.4.43" |
61 | #define DRV_MODULE_RELDATE "June 12, 2006" | 61 | #define DRV_MODULE_RELDATE "June 28, 2006" |
62 | 62 | ||
63 | #define RUN_AT(x) (jiffies + (x)) | 63 | #define RUN_AT(x) (jiffies + (x)) |
64 | 64 | ||
@@ -1676,7 +1676,7 @@ bnx2_tx_int(struct bnx2 *bp) | |||
1676 | 1676 | ||
1677 | tx_free_bd += last + 1; | 1677 | tx_free_bd += last + 1; |
1678 | 1678 | ||
1679 | dev_kfree_skb_irq(skb); | 1679 | dev_kfree_skb(skb); |
1680 | 1680 | ||
1681 | hw_cons = bp->hw_tx_cons = | 1681 | hw_cons = bp->hw_tx_cons = |
1682 | sblk->status_tx_quick_consumer_index0; | 1682 | sblk->status_tx_quick_consumer_index0; |
@@ -1824,7 +1824,7 @@ reuse_rx: | |||
1824 | if ((len > (bp->dev->mtu + ETH_HLEN)) && | 1824 | if ((len > (bp->dev->mtu + ETH_HLEN)) && |
1825 | (ntohs(skb->protocol) != 0x8100)) { | 1825 | (ntohs(skb->protocol) != 0x8100)) { |
1826 | 1826 | ||
1827 | dev_kfree_skb_irq(skb); | 1827 | dev_kfree_skb(skb); |
1828 | goto next_rx; | 1828 | goto next_rx; |
1829 | 1829 | ||
1830 | } | 1830 | } |
@@ -3643,7 +3643,7 @@ bnx2_free_tx_skbs(struct bnx2 *bp) | |||
3643 | skb_shinfo(skb)->frags[j].size, | 3643 | skb_shinfo(skb)->frags[j].size, |
3644 | PCI_DMA_TODEVICE); | 3644 | PCI_DMA_TODEVICE); |
3645 | } | 3645 | } |
3646 | dev_kfree_skb_any(skb); | 3646 | dev_kfree_skb(skb); |
3647 | i += j + 1; | 3647 | i += j + 1; |
3648 | } | 3648 | } |
3649 | 3649 | ||
@@ -3669,7 +3669,7 @@ bnx2_free_rx_skbs(struct bnx2 *bp) | |||
3669 | 3669 | ||
3670 | rx_buf->skb = NULL; | 3670 | rx_buf->skb = NULL; |
3671 | 3671 | ||
3672 | dev_kfree_skb_any(skb); | 3672 | dev_kfree_skb(skb); |
3673 | } | 3673 | } |
3674 | } | 3674 | } |
3675 | 3675 | ||
@@ -3999,7 +3999,7 @@ bnx2_run_loopback(struct bnx2 *bp, int loopback_mode) | |||
3999 | udelay(5); | 3999 | udelay(5); |
4000 | 4000 | ||
4001 | pci_unmap_single(bp->pdev, map, pkt_size, PCI_DMA_TODEVICE); | 4001 | pci_unmap_single(bp->pdev, map, pkt_size, PCI_DMA_TODEVICE); |
4002 | dev_kfree_skb_irq(skb); | 4002 | dev_kfree_skb(skb); |
4003 | 4003 | ||
4004 | if (bp->status_blk->status_tx_quick_consumer_index0 != bp->tx_prod) { | 4004 | if (bp->status_blk->status_tx_quick_consumer_index0 != bp->tx_prod) { |
4005 | goto loopback_test_done; | 4005 | goto loopback_test_done; |
@@ -4541,7 +4541,7 @@ bnx2_close(struct net_device *dev) | |||
4541 | bnx2_netif_stop(bp); | 4541 | bnx2_netif_stop(bp); |
4542 | del_timer_sync(&bp->timer); | 4542 | del_timer_sync(&bp->timer); |
4543 | if (bp->flags & NO_WOL_FLAG) | 4543 | if (bp->flags & NO_WOL_FLAG) |
4544 | reset_code = BNX2_DRV_MSG_CODE_UNLOAD; | 4544 | reset_code = BNX2_DRV_MSG_CODE_UNLOAD_LNK_DN; |
4545 | else if (bp->wol) | 4545 | else if (bp->wol) |
4546 | reset_code = BNX2_DRV_MSG_CODE_SUSPEND_WOL; | 4546 | reset_code = BNX2_DRV_MSG_CODE_SUSPEND_WOL; |
4547 | else | 4547 | else |
@@ -5128,6 +5128,16 @@ bnx2_set_rx_csum(struct net_device *dev, u32 data) | |||
5128 | return 0; | 5128 | return 0; |
5129 | } | 5129 | } |
5130 | 5130 | ||
5131 | static int | ||
5132 | bnx2_set_tso(struct net_device *dev, u32 data) | ||
5133 | { | ||
5134 | if (data) | ||
5135 | dev->features |= NETIF_F_TSO | NETIF_F_TSO_ECN; | ||
5136 | else | ||
5137 | dev->features &= ~(NETIF_F_TSO | NETIF_F_TSO_ECN); | ||
5138 | return 0; | ||
5139 | } | ||
5140 | |||
5131 | #define BNX2_NUM_STATS 46 | 5141 | #define BNX2_NUM_STATS 46 |
5132 | 5142 | ||
5133 | static struct { | 5143 | static struct { |
@@ -5445,7 +5455,7 @@ static struct ethtool_ops bnx2_ethtool_ops = { | |||
5445 | .set_sg = ethtool_op_set_sg, | 5455 | .set_sg = ethtool_op_set_sg, |
5446 | #ifdef BCM_TSO | 5456 | #ifdef BCM_TSO |
5447 | .get_tso = ethtool_op_get_tso, | 5457 | .get_tso = ethtool_op_get_tso, |
5448 | .set_tso = ethtool_op_set_tso, | 5458 | .set_tso = bnx2_set_tso, |
5449 | #endif | 5459 | #endif |
5450 | .self_test_count = bnx2_self_test_count, | 5460 | .self_test_count = bnx2_self_test_count, |
5451 | .self_test = bnx2_self_test, | 5461 | .self_test = bnx2_self_test, |
@@ -5926,7 +5936,7 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
5926 | dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; | 5936 | dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; |
5927 | #endif | 5937 | #endif |
5928 | #ifdef BCM_TSO | 5938 | #ifdef BCM_TSO |
5929 | dev->features |= NETIF_F_TSO; | 5939 | dev->features |= NETIF_F_TSO | NETIF_F_TSO_ECN; |
5930 | #endif | 5940 | #endif |
5931 | 5941 | ||
5932 | netif_carrier_off(bp->dev); | 5942 | netif_carrier_off(bp->dev); |
@@ -5968,7 +5978,7 @@ bnx2_suspend(struct pci_dev *pdev, pm_message_t state) | |||
5968 | netif_device_detach(dev); | 5978 | netif_device_detach(dev); |
5969 | del_timer_sync(&bp->timer); | 5979 | del_timer_sync(&bp->timer); |
5970 | if (bp->flags & NO_WOL_FLAG) | 5980 | if (bp->flags & NO_WOL_FLAG) |
5971 | reset_code = BNX2_DRV_MSG_CODE_UNLOAD; | 5981 | reset_code = BNX2_DRV_MSG_CODE_UNLOAD_LNK_DN; |
5972 | else if (bp->wol) | 5982 | else if (bp->wol) |
5973 | reset_code = BNX2_DRV_MSG_CODE_SUSPEND_WOL; | 5983 | reset_code = BNX2_DRV_MSG_CODE_SUSPEND_WOL; |
5974 | else | 5984 | else |