diff options
author | David S. Miller <davem@davemloft.net> | 2014-03-29 18:48:54 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-03-29 18:48:54 -0400 |
commit | 64c27237a07129758e33f5f824ba5c33b7f57417 (patch) | |
tree | 4c0c0a9b6d282d600f2226e1b3510096b9d789dd /drivers/net | |
parent | 77a9939426f7a3f35f460afc9b11f1fe45955409 (diff) | |
parent | 49d8137a4039c63c834827f4bfe875e27bb9c521 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/marvell/mvneta.c
The mvneta.c conflict is a case of overlapping changes,
a conversion to devm_ioremap_resource() vs. a conversion
to netdev_alloc_pcpu_stats.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/broadcom/tg3.c | 5 | ||||
-rw-r--r-- | drivers/net/ethernet/marvell/mvneta.c | 43 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/main.c | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/qlogic/qlge/qlge_main.c | 4 | ||||
-rw-r--r-- | drivers/net/ifb.c | 3 | ||||
-rw-r--r-- | drivers/net/usb/usbnet.c | 33 | ||||
-rw-r--r-- | drivers/net/veth.c | 5 | ||||
-rw-r--r-- | drivers/net/virtio_net.c | 6 |
8 files changed, 47 insertions, 58 deletions
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c index 22586e92da0e..b9f7022f4e81 100644 --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c | |||
@@ -17641,8 +17641,6 @@ static int tg3_init_one(struct pci_dev *pdev, | |||
17641 | 17641 | ||
17642 | tg3_init_bufmgr_config(tp); | 17642 | tg3_init_bufmgr_config(tp); |
17643 | 17643 | ||
17644 | features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX; | ||
17645 | |||
17646 | /* 5700 B0 chips do not support checksumming correctly due | 17644 | /* 5700 B0 chips do not support checksumming correctly due |
17647 | * to hardware bugs. | 17645 | * to hardware bugs. |
17648 | */ | 17646 | */ |
@@ -17674,7 +17672,8 @@ static int tg3_init_one(struct pci_dev *pdev, | |||
17674 | features |= NETIF_F_TSO_ECN; | 17672 | features |= NETIF_F_TSO_ECN; |
17675 | } | 17673 | } |
17676 | 17674 | ||
17677 | dev->features |= features; | 17675 | dev->features |= features | NETIF_F_HW_VLAN_CTAG_TX | |
17676 | NETIF_F_HW_VLAN_CTAG_RX; | ||
17678 | dev->vlan_features |= features; | 17677 | dev->vlan_features |= features; |
17679 | 17678 | ||
17680 | /* | 17679 | /* |
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index bcce0b437722..d04b1c3c9b85 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c | |||
@@ -89,8 +89,9 @@ | |||
89 | #define MVNETA_TX_IN_PRGRS BIT(1) | 89 | #define MVNETA_TX_IN_PRGRS BIT(1) |
90 | #define MVNETA_TX_FIFO_EMPTY BIT(8) | 90 | #define MVNETA_TX_FIFO_EMPTY BIT(8) |
91 | #define MVNETA_RX_MIN_FRAME_SIZE 0x247c | 91 | #define MVNETA_RX_MIN_FRAME_SIZE 0x247c |
92 | #define MVNETA_SGMII_SERDES_CFG 0x24A0 | 92 | #define MVNETA_SERDES_CFG 0x24A0 |
93 | #define MVNETA_SGMII_SERDES_PROTO 0x0cc7 | 93 | #define MVNETA_SGMII_SERDES_PROTO 0x0cc7 |
94 | #define MVNETA_RGMII_SERDES_PROTO 0x0667 | ||
94 | #define MVNETA_TYPE_PRIO 0x24bc | 95 | #define MVNETA_TYPE_PRIO 0x24bc |
95 | #define MVNETA_FORCE_UNI BIT(21) | 96 | #define MVNETA_FORCE_UNI BIT(21) |
96 | #define MVNETA_TXQ_CMD_1 0x24e4 | 97 | #define MVNETA_TXQ_CMD_1 0x24e4 |
@@ -162,7 +163,7 @@ | |||
162 | #define MVNETA_GMAC_MAX_RX_SIZE_MASK 0x7ffc | 163 | #define MVNETA_GMAC_MAX_RX_SIZE_MASK 0x7ffc |
163 | #define MVNETA_GMAC0_PORT_ENABLE BIT(0) | 164 | #define MVNETA_GMAC0_PORT_ENABLE BIT(0) |
164 | #define MVNETA_GMAC_CTRL_2 0x2c08 | 165 | #define MVNETA_GMAC_CTRL_2 0x2c08 |
165 | #define MVNETA_GMAC2_PSC_ENABLE BIT(3) | 166 | #define MVNETA_GMAC2_PCS_ENABLE BIT(3) |
166 | #define MVNETA_GMAC2_PORT_RGMII BIT(4) | 167 | #define MVNETA_GMAC2_PORT_RGMII BIT(4) |
167 | #define MVNETA_GMAC2_PORT_RESET BIT(6) | 168 | #define MVNETA_GMAC2_PORT_RESET BIT(6) |
168 | #define MVNETA_GMAC_STATUS 0x2c10 | 169 | #define MVNETA_GMAC_STATUS 0x2c10 |
@@ -711,35 +712,6 @@ static void mvneta_rxq_bm_disable(struct mvneta_port *pp, | |||
711 | mvreg_write(pp, MVNETA_RXQ_CONFIG_REG(rxq->id), val); | 712 | mvreg_write(pp, MVNETA_RXQ_CONFIG_REG(rxq->id), val); |
712 | } | 713 | } |
713 | 714 | ||
714 | |||
715 | |||
716 | /* Sets the RGMII Enable bit (RGMIIEn) in port MAC control register */ | ||
717 | static void mvneta_gmac_rgmii_set(struct mvneta_port *pp, int enable) | ||
718 | { | ||
719 | u32 val; | ||
720 | |||
721 | val = mvreg_read(pp, MVNETA_GMAC_CTRL_2); | ||
722 | |||
723 | if (enable) | ||
724 | val |= MVNETA_GMAC2_PORT_RGMII; | ||
725 | else | ||
726 | val &= ~MVNETA_GMAC2_PORT_RGMII; | ||
727 | |||
728 | mvreg_write(pp, MVNETA_GMAC_CTRL_2, val); | ||
729 | } | ||
730 | |||
731 | /* Config SGMII port */ | ||
732 | static void mvneta_port_sgmii_config(struct mvneta_port *pp) | ||
733 | { | ||
734 | u32 val; | ||
735 | |||
736 | val = mvreg_read(pp, MVNETA_GMAC_CTRL_2); | ||
737 | val |= MVNETA_GMAC2_PSC_ENABLE; | ||
738 | mvreg_write(pp, MVNETA_GMAC_CTRL_2, val); | ||
739 | |||
740 | mvreg_write(pp, MVNETA_SGMII_SERDES_CFG, MVNETA_SGMII_SERDES_PROTO); | ||
741 | } | ||
742 | |||
743 | /* Start the Ethernet port RX and TX activity */ | 715 | /* Start the Ethernet port RX and TX activity */ |
744 | static void mvneta_port_up(struct mvneta_port *pp) | 716 | static void mvneta_port_up(struct mvneta_port *pp) |
745 | { | 717 | { |
@@ -2757,12 +2729,15 @@ static void mvneta_port_power_up(struct mvneta_port *pp, int phy_mode) | |||
2757 | mvreg_write(pp, MVNETA_UNIT_INTR_CAUSE, 0); | 2729 | mvreg_write(pp, MVNETA_UNIT_INTR_CAUSE, 0); |
2758 | 2730 | ||
2759 | if (phy_mode == PHY_INTERFACE_MODE_SGMII) | 2731 | if (phy_mode == PHY_INTERFACE_MODE_SGMII) |
2760 | mvneta_port_sgmii_config(pp); | 2732 | mvreg_write(pp, MVNETA_SERDES_CFG, MVNETA_SGMII_SERDES_PROTO); |
2733 | else | ||
2734 | mvreg_write(pp, MVNETA_SERDES_CFG, MVNETA_RGMII_SERDES_PROTO); | ||
2761 | 2735 | ||
2762 | mvneta_gmac_rgmii_set(pp, 1); | 2736 | val = mvreg_read(pp, MVNETA_GMAC_CTRL_2); |
2737 | |||
2738 | val |= MVNETA_GMAC2_PCS_ENABLE | MVNETA_GMAC2_PORT_RGMII; | ||
2763 | 2739 | ||
2764 | /* Cancel Port Reset */ | 2740 | /* Cancel Port Reset */ |
2765 | val = mvreg_read(pp, MVNETA_GMAC_CTRL_2); | ||
2766 | val &= ~MVNETA_GMAC2_PORT_RESET; | 2741 | val &= ~MVNETA_GMAC2_PORT_RESET; |
2767 | mvreg_write(pp, MVNETA_GMAC_CTRL_2, val); | 2742 | mvreg_write(pp, MVNETA_GMAC_CTRL_2, val); |
2768 | 2743 | ||
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c index 61d7bcff4533..f0ae95f66ceb 100644 --- a/drivers/net/ethernet/mellanox/mlx4/main.c +++ b/drivers/net/ethernet/mellanox/mlx4/main.c | |||
@@ -2755,7 +2755,11 @@ static pci_ers_result_t mlx4_pci_err_detected(struct pci_dev *pdev, | |||
2755 | 2755 | ||
2756 | static pci_ers_result_t mlx4_pci_slot_reset(struct pci_dev *pdev) | 2756 | static pci_ers_result_t mlx4_pci_slot_reset(struct pci_dev *pdev) |
2757 | { | 2757 | { |
2758 | int ret = __mlx4_init_one(pdev, 0); | 2758 | const struct pci_device_id *id; |
2759 | int ret; | ||
2760 | |||
2761 | id = pci_match_id(mlx4_pci_table, pdev); | ||
2762 | ret = __mlx4_init_one(pdev, id->driver_data); | ||
2759 | 2763 | ||
2760 | return ret ? PCI_ERS_RESULT_DISCONNECT : PCI_ERS_RESULT_RECOVERED; | 2764 | return ret ? PCI_ERS_RESULT_DISCONNECT : PCI_ERS_RESULT_RECOVERED; |
2761 | } | 2765 | } |
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c index 5b63405f9d3c..0a1d76acab81 100644 --- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c +++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c | |||
@@ -4756,7 +4756,9 @@ static int qlge_probe(struct pci_dev *pdev, | |||
4756 | ndev->features = ndev->hw_features; | 4756 | ndev->features = ndev->hw_features; |
4757 | ndev->vlan_features = ndev->hw_features; | 4757 | ndev->vlan_features = ndev->hw_features; |
4758 | /* vlan gets same features (except vlan filter) */ | 4758 | /* vlan gets same features (except vlan filter) */ |
4759 | ndev->vlan_features &= ~NETIF_F_HW_VLAN_CTAG_FILTER; | 4759 | ndev->vlan_features &= ~(NETIF_F_HW_VLAN_CTAG_FILTER | |
4760 | NETIF_F_HW_VLAN_CTAG_TX | | ||
4761 | NETIF_F_HW_VLAN_CTAG_RX); | ||
4760 | 4762 | ||
4761 | if (test_bit(QL_DMA64, &qdev->flags)) | 4763 | if (test_bit(QL_DMA64, &qdev->flags)) |
4762 | ndev->features |= NETIF_F_HIGHDMA; | 4764 | ndev->features |= NETIF_F_HIGHDMA; |
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c index 1da36764b1a4..46a7790be004 100644 --- a/drivers/net/ifb.c +++ b/drivers/net/ifb.c | |||
@@ -180,7 +180,8 @@ static void ifb_setup(struct net_device *dev) | |||
180 | dev->tx_queue_len = TX_Q_LIMIT; | 180 | dev->tx_queue_len = TX_Q_LIMIT; |
181 | 181 | ||
182 | dev->features |= IFB_FEATURES; | 182 | dev->features |= IFB_FEATURES; |
183 | dev->vlan_features |= IFB_FEATURES; | 183 | dev->vlan_features |= IFB_FEATURES & ~(NETIF_F_HW_VLAN_CTAG_TX | |
184 | NETIF_F_HW_VLAN_STAG_TX); | ||
184 | 185 | ||
185 | dev->flags |= IFF_NOARP; | 186 | dev->flags |= IFF_NOARP; |
186 | dev->flags &= ~IFF_MULTICAST; | 187 | dev->flags &= ~IFF_MULTICAST; |
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index dd10d5817d2a..f9e96c427558 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c | |||
@@ -752,14 +752,12 @@ EXPORT_SYMBOL_GPL(usbnet_unlink_rx_urbs); | |||
752 | // precondition: never called in_interrupt | 752 | // precondition: never called in_interrupt |
753 | static void usbnet_terminate_urbs(struct usbnet *dev) | 753 | static void usbnet_terminate_urbs(struct usbnet *dev) |
754 | { | 754 | { |
755 | DECLARE_WAIT_QUEUE_HEAD_ONSTACK(unlink_wakeup); | ||
756 | DECLARE_WAITQUEUE(wait, current); | 755 | DECLARE_WAITQUEUE(wait, current); |
757 | int temp; | 756 | int temp; |
758 | 757 | ||
759 | /* ensure there are no more active urbs */ | 758 | /* ensure there are no more active urbs */ |
760 | add_wait_queue(&unlink_wakeup, &wait); | 759 | add_wait_queue(&dev->wait, &wait); |
761 | set_current_state(TASK_UNINTERRUPTIBLE); | 760 | set_current_state(TASK_UNINTERRUPTIBLE); |
762 | dev->wait = &unlink_wakeup; | ||
763 | temp = unlink_urbs(dev, &dev->txq) + | 761 | temp = unlink_urbs(dev, &dev->txq) + |
764 | unlink_urbs(dev, &dev->rxq); | 762 | unlink_urbs(dev, &dev->rxq); |
765 | 763 | ||
@@ -773,15 +771,14 @@ static void usbnet_terminate_urbs(struct usbnet *dev) | |||
773 | "waited for %d urb completions\n", temp); | 771 | "waited for %d urb completions\n", temp); |
774 | } | 772 | } |
775 | set_current_state(TASK_RUNNING); | 773 | set_current_state(TASK_RUNNING); |
776 | dev->wait = NULL; | 774 | remove_wait_queue(&dev->wait, &wait); |
777 | remove_wait_queue(&unlink_wakeup, &wait); | ||
778 | } | 775 | } |
779 | 776 | ||
780 | int usbnet_stop (struct net_device *net) | 777 | int usbnet_stop (struct net_device *net) |
781 | { | 778 | { |
782 | struct usbnet *dev = netdev_priv(net); | 779 | struct usbnet *dev = netdev_priv(net); |
783 | struct driver_info *info = dev->driver_info; | 780 | struct driver_info *info = dev->driver_info; |
784 | int retval; | 781 | int retval, pm; |
785 | 782 | ||
786 | clear_bit(EVENT_DEV_OPEN, &dev->flags); | 783 | clear_bit(EVENT_DEV_OPEN, &dev->flags); |
787 | netif_stop_queue (net); | 784 | netif_stop_queue (net); |
@@ -791,6 +788,8 @@ int usbnet_stop (struct net_device *net) | |||
791 | net->stats.rx_packets, net->stats.tx_packets, | 788 | net->stats.rx_packets, net->stats.tx_packets, |
792 | net->stats.rx_errors, net->stats.tx_errors); | 789 | net->stats.rx_errors, net->stats.tx_errors); |
793 | 790 | ||
791 | /* to not race resume */ | ||
792 | pm = usb_autopm_get_interface(dev->intf); | ||
794 | /* allow minidriver to stop correctly (wireless devices to turn off | 793 | /* allow minidriver to stop correctly (wireless devices to turn off |
795 | * radio etc) */ | 794 | * radio etc) */ |
796 | if (info->stop) { | 795 | if (info->stop) { |
@@ -817,6 +816,9 @@ int usbnet_stop (struct net_device *net) | |||
817 | dev->flags = 0; | 816 | dev->flags = 0; |
818 | del_timer_sync (&dev->delay); | 817 | del_timer_sync (&dev->delay); |
819 | tasklet_kill (&dev->bh); | 818 | tasklet_kill (&dev->bh); |
819 | if (!pm) | ||
820 | usb_autopm_put_interface(dev->intf); | ||
821 | |||
820 | if (info->manage_power && | 822 | if (info->manage_power && |
821 | !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags)) | 823 | !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags)) |
822 | info->manage_power(dev, 0); | 824 | info->manage_power(dev, 0); |
@@ -1437,11 +1439,12 @@ static void usbnet_bh (unsigned long param) | |||
1437 | /* restart RX again after disabling due to high error rate */ | 1439 | /* restart RX again after disabling due to high error rate */ |
1438 | clear_bit(EVENT_RX_KILL, &dev->flags); | 1440 | clear_bit(EVENT_RX_KILL, &dev->flags); |
1439 | 1441 | ||
1440 | // waiting for all pending urbs to complete? | 1442 | /* waiting for all pending urbs to complete? |
1441 | if (dev->wait) { | 1443 | * only then can we forgo submitting anew |
1442 | if ((dev->txq.qlen + dev->rxq.qlen + dev->done.qlen) == 0) { | 1444 | */ |
1443 | wake_up (dev->wait); | 1445 | if (waitqueue_active(&dev->wait)) { |
1444 | } | 1446 | if (dev->txq.qlen + dev->rxq.qlen + dev->done.qlen == 0) |
1447 | wake_up_all(&dev->wait); | ||
1445 | 1448 | ||
1446 | // or are we maybe short a few urbs? | 1449 | // or are we maybe short a few urbs? |
1447 | } else if (netif_running (dev->net) && | 1450 | } else if (netif_running (dev->net) && |
@@ -1580,6 +1583,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod) | |||
1580 | dev->driver_name = name; | 1583 | dev->driver_name = name; |
1581 | dev->msg_enable = netif_msg_init (msg_level, NETIF_MSG_DRV | 1584 | dev->msg_enable = netif_msg_init (msg_level, NETIF_MSG_DRV |
1582 | | NETIF_MSG_PROBE | NETIF_MSG_LINK); | 1585 | | NETIF_MSG_PROBE | NETIF_MSG_LINK); |
1586 | init_waitqueue_head(&dev->wait); | ||
1583 | skb_queue_head_init (&dev->rxq); | 1587 | skb_queue_head_init (&dev->rxq); |
1584 | skb_queue_head_init (&dev->txq); | 1588 | skb_queue_head_init (&dev->txq); |
1585 | skb_queue_head_init (&dev->done); | 1589 | skb_queue_head_init (&dev->done); |
@@ -1791,9 +1795,10 @@ int usbnet_resume (struct usb_interface *intf) | |||
1791 | spin_unlock_irq(&dev->txq.lock); | 1795 | spin_unlock_irq(&dev->txq.lock); |
1792 | 1796 | ||
1793 | if (test_bit(EVENT_DEV_OPEN, &dev->flags)) { | 1797 | if (test_bit(EVENT_DEV_OPEN, &dev->flags)) { |
1794 | /* handle remote wakeup ASAP */ | 1798 | /* handle remote wakeup ASAP |
1795 | if (!dev->wait && | 1799 | * we cannot race against stop |
1796 | netif_device_present(dev->net) && | 1800 | */ |
1801 | if (netif_device_present(dev->net) && | ||
1797 | !timer_pending(&dev->delay) && | 1802 | !timer_pending(&dev->delay) && |
1798 | !test_bit(EVENT_RX_HALT, &dev->flags)) | 1803 | !test_bit(EVENT_RX_HALT, &dev->flags)) |
1799 | rx_alloc_submit(dev, GFP_NOIO); | 1804 | rx_alloc_submit(dev, GFP_NOIO); |
diff --git a/drivers/net/veth.c b/drivers/net/veth.c index e1c77d4b80e4..b4a10bcb66a0 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c | |||
@@ -278,7 +278,10 @@ static void veth_setup(struct net_device *dev) | |||
278 | dev->features |= NETIF_F_LLTX; | 278 | dev->features |= NETIF_F_LLTX; |
279 | dev->features |= VETH_FEATURES; | 279 | dev->features |= VETH_FEATURES; |
280 | dev->vlan_features = dev->features & | 280 | dev->vlan_features = dev->features & |
281 | ~(NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX); | 281 | ~(NETIF_F_HW_VLAN_CTAG_TX | |
282 | NETIF_F_HW_VLAN_STAG_TX | | ||
283 | NETIF_F_HW_VLAN_CTAG_RX | | ||
284 | NETIF_F_HW_VLAN_STAG_RX); | ||
282 | dev->destructor = veth_dev_free; | 285 | dev->destructor = veth_dev_free; |
283 | 286 | ||
284 | dev->hw_features = VETH_FEATURES; | 287 | dev->hw_features = VETH_FEATURES; |
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 99fa48c941c6..6f15d9b315a1 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -671,8 +671,7 @@ static bool try_fill_recv(struct receive_queue *rq, gfp_t gfp) | |||
671 | if (err) | 671 | if (err) |
672 | break; | 672 | break; |
673 | } while (rq->vq->num_free); | 673 | } while (rq->vq->num_free); |
674 | if (unlikely(!virtqueue_kick(rq->vq))) | 674 | virtqueue_kick(rq->vq); |
675 | return false; | ||
676 | return !oom; | 675 | return !oom; |
677 | } | 676 | } |
678 | 677 | ||
@@ -877,7 +876,7 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
877 | err = xmit_skb(sq, skb); | 876 | err = xmit_skb(sq, skb); |
878 | 877 | ||
879 | /* This should not happen! */ | 878 | /* This should not happen! */ |
880 | if (unlikely(err) || unlikely(!virtqueue_kick(sq->vq))) { | 879 | if (unlikely(err)) { |
881 | dev->stats.tx_fifo_errors++; | 880 | dev->stats.tx_fifo_errors++; |
882 | if (net_ratelimit()) | 881 | if (net_ratelimit()) |
883 | dev_warn(&dev->dev, | 882 | dev_warn(&dev->dev, |
@@ -886,6 +885,7 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
886 | dev_kfree_skb_any(skb); | 885 | dev_kfree_skb_any(skb); |
887 | return NETDEV_TX_OK; | 886 | return NETDEV_TX_OK; |
888 | } | 887 | } |
888 | virtqueue_kick(sq->vq); | ||
889 | 889 | ||
890 | /* Don't wait up for transmitted skbs to be freed. */ | 890 | /* Don't wait up for transmitted skbs to be freed. */ |
891 | skb_orphan(skb); | 891 | skb_orphan(skb); |