diff options
author | David Vrabel <david.vrabel@citrix.com> | 2014-10-22 14:08:53 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-10-25 14:15:20 -0400 |
commit | bc96f648df1bbc2729abbb84513cf4f64273a1f1 (patch) | |
tree | ad8044147004ba38641bc727bf3b0f866c2e05ac /drivers/net/xen-netback/interface.c | |
parent | 5345c1d417c1b0caf46fd2766d16bb4357a347d8 (diff) | |
download | op-kernel-dev-bc96f648df1bbc2729abbb84513cf4f64273a1f1.zip op-kernel-dev-bc96f648df1bbc2729abbb84513cf4f64273a1f1.tar.gz |
xen-netback: make feature-rx-notify mandatory
Frontends that do not provide feature-rx-notify may stall because
netback depends on the notification from frontend to wake the guest Rx
thread (even if can_queue is false).
This could be fixed but feature-rx-notify was introduced in 2006 and I
am not aware of any frontends that do not implement this.
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
-rw-r--r-- | drivers/net/xen-netback/interface.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index f379689..c6759b1 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@ -60,16 +60,6 @@ void xenvif_skb_zerocopy_complete(struct xenvif_queue *queue) atomic_dec(&queue->inflight_packets); } -static inline void xenvif_stop_queue(struct xenvif_queue *queue) -{ - struct net_device *dev = queue->vif->dev; - - if (!queue->vif->can_queue) - return; - - netif_tx_stop_queue(netdev_get_tx_queue(dev, queue->id)); -} - int xenvif_schedulable(struct xenvif *vif) { return netif_running(vif->dev) && @@ -209,7 +199,7 @@ static int xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev) if (!xenvif_rx_ring_slots_available(queue, min_slots_needed)) { queue->rx_stalled.function = xenvif_rx_stalled; queue->rx_stalled.data = (unsigned long)queue; - xenvif_stop_queue(queue); + netif_tx_stop_queue(netdev_get_tx_queue(dev, queue->id)); mod_timer(&queue->rx_stalled, jiffies + rx_drain_timeout_jiffies); } |