diff options
| author | David Vrabel <david.vrabel@citrix.com> | 2014-10-22 17:08:53 +0400 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-10-25 22:15:20 +0400 | 
| commit | bc96f648df1bbc2729abbb84513cf4f64273a1f1 (patch) | |
| tree | ad8044147004ba38641bc727bf3b0f866c2e05ac /drivers/net/xen-netback/interface.c | |
| parent | 5345c1d417c1b0caf46fd2766d16bb4357a347d8 (diff) | |
| download | linux-bc96f648df1bbc2729abbb84513cf4f64273a1f1.tar.xz | |
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 f379689dde30..c6759b1ec18d 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);  	}  | 
