aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/netpoll.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/netpoll.c')
-rw-r--r--net/core/netpoll.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index 907fb5e36c02..e6645b4f330a 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -72,7 +72,6 @@ module_param(carrier_timeout, uint, 0644);
72static int netpoll_start_xmit(struct sk_buff *skb, struct net_device *dev, 72static int netpoll_start_xmit(struct sk_buff *skb, struct net_device *dev,
73 struct netdev_queue *txq) 73 struct netdev_queue *txq)
74{ 74{
75 const struct net_device_ops *ops = dev->netdev_ops;
76 int status = NETDEV_TX_OK; 75 int status = NETDEV_TX_OK;
77 netdev_features_t features; 76 netdev_features_t features;
78 77
@@ -92,9 +91,7 @@ static int netpoll_start_xmit(struct sk_buff *skb, struct net_device *dev,
92 skb->vlan_tci = 0; 91 skb->vlan_tci = 0;
93 } 92 }
94 93
95 status = ops->ndo_start_xmit(skb, dev); 94 status = netdev_start_xmit(skb, dev, txq, false);
96 if (status == NETDEV_TX_OK)
97 txq_trans_update(txq);
98 95
99out: 96out:
100 return status; 97 return status;
@@ -116,7 +113,7 @@ static void queue_process(struct work_struct *work)
116 continue; 113 continue;
117 } 114 }
118 115
119 txq = netdev_get_tx_queue(dev, skb_get_queue_mapping(skb)); 116 txq = skb_get_tx_queue(dev, skb);
120 117
121 local_irq_save(flags); 118 local_irq_save(flags);
122 HARD_TX_LOCK(dev, txq, smp_processor_id()); 119 HARD_TX_LOCK(dev, txq, smp_processor_id());