> -----Original Message----- > From: Eric Dumazet [mailto:eric.dumazet@xxxxxxxxx] > Sent: Monday, March 19, 2012 2:31 PM > To: Haiyang Zhang > Cc: Stephen Hemminger; KY Srinivasan; davem@xxxxxxxxxxxxx; > netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > devel@xxxxxxxxxxxxxxxxxxxxxx > Subject: RE: [PATCH 1/1] net/hyperv: Fix the code handling tx busy > > On Mon, 2012-03-19 at 17:50 +0000, Haiyang Zhang wrote: > > > As in my previous reply to Eric -- > > We actually stop queue when the ring buffer is busy, see the code in > > netvsc.c > > > > I have tested with one CPU. After NETDEV_TX_BUSY is returned, the > > Linux guest OS continues to respond without any problem. > > Then something is wrong somewhere. > > Dont hide a bug adding a trick. > > If you ever return NETDEV_TX_BUSY from start_xmit(), then you MUST call > netif_tx_stop_queue() as well right before. Yes, we called the stop_queue before returning NETDEV_TX_BUSY. The stop_queue was called in the function netvsc_send() in file netvsc.c, then it returns to rndis_filter_send(), which returns to netvsc_start_xmit() in file netvsc_drv.c. So the NETDEV_TX_BUSY is indeed returned AFTER queue is stopped. Thanks, - Haiyang _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel