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 | 
