All of lore.kernel.org
 help / color / mirror / Atom feed
From: Linhaifeng <haifeng.lin@huawei.com>
To: <netdev@vger.kernel.org>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	lilijun <jerry.lilijun@huawei.com>,
	"liuyongan@huawei.com" <liuyongan@huawei.com>,
	"lixiao (H)" <lixiao91@huawei.com>
Subject: virtio-net: tx queue was stopped
Date: Sun, 15 Mar 2015 14:50:27 +0800	[thread overview]
Message-ID: <55052BB3.2080705@huawei.com> (raw)

Hi,Michael

I had tested the start_xmit function by the follow code found that the tx queue's state is stopped and can't send any packets anymore.

static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
{
	... ...


        capacity = 10;	//########## test code : force to call netif_stop_queue

        if (capacity < 2+MAX_SKB_FRAGS) {
                netif_stop_queue(dev);

                if (unlikely(!virtqueue_enable_cb_delayed(vi->svq))) {
                        /* More just got used, free them then recheck. */
                        capacity += free_old_xmit_skbs(vi);
                        dev_warn(&dev->dev, "free_old_xmit_skbs capacity =%d MAX_SKB_FRAGS=%d", capacity, MAX_SKB_FRAGS);

                        capacity = 10;		//########## test code : force not to call  netif_start_queue

                        if (capacity >= 2+MAX_SKB_FRAGS) {
                                netif_start_queue(dev);
                                virtqueue_disable_cb(vi->svq);
                        } else {
				//########## OTOH if often enter this branch tx queue maybe stopped.
			}
			
                }

		//########## Should we start queue here? I found that sometimes skb_xmit_done run before netif_stop_queue if this occurred the queue's state is
		//########## stopped and have to reload virtio-net module to restore network.

        }
	
}

ping 9.62.1.2 -i 0.1
64 bytes from 9.62.1.2: icmp_seq=19 ttl=64 time=0.115 ms
64 bytes from 9.62.1.2: icmp_seq=20 ttl=64 time=0.101 ms
64 bytes from 9.62.1.2: icmp_seq=21 ttl=64 time=0.094 ms
64 bytes from 9.62.1.2: icmp_seq=22 ttl=64 time=0.098 ms
64 bytes from 9.62.1.2: icmp_seq=23 ttl=64 time=0.097 ms
64 bytes from 9.62.1.2: icmp_seq=24 ttl=64 time=0.095 ms
64 bytes from 9.62.1.2: icmp_seq=25 ttl=64 time=0.095 ms
....
ping:  sendmsg:  No buffer space available
ping:  sendmsg:  No buffer space available
ping:  sendmsg:  No buffer space available
ping:  sendmsg:  No buffer space available
ping:  sendmsg:  No buffer space available
ping:  sendmsg:  No buffer space available
....

-- 
Regards,
Haifeng

             reply	other threads:[~2015-03-15  6:51 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-15  6:50 Linhaifeng [this message]
2015-03-15  8:40 ` virtio-net: tx queue was stopped Michael S. Tsirkin
2015-03-16  9:24   ` Linhaifeng
2015-03-16  9:24   ` Linhaifeng
2015-03-16 12:26     ` Michael S. Tsirkin
2015-03-16 12:26       ` Michael S. Tsirkin
2015-03-20  9:23       ` Linhaifeng
2015-03-20  9:23       ` Linhaifeng
2015-03-15  8:40 ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55052BB3.2080705@huawei.com \
    --to=haifeng.lin@huawei.com \
    --cc=jerry.lilijun@huawei.com \
    --cc=liuyongan@huawei.com \
    --cc=lixiao91@huawei.com \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.