[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Xennet half die---netfront TX queue was stopped.

  • To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: "Yi, Shunli" <syi@xxxxxxxxxxxx>
  • Date: Wed, 31 Oct 2012 03:47:53 +0000
  • Accept-language: zh-CN, en-US
  • Delivery-date: Wed, 31 Oct 2012 03:48:35 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>
  • Thread-index: Ac23Gm/GoGh3r8OSR5q8PANust8HvA==
  • Thread-topic: Xennet half die---netfront TX queue was stopped.


I encountered a strange issue, the xennet interface in DomU stopped sending out anything in some rare cases.

I got chance to get more information on one reproduce, here are some findings.


The netfront driver check there isn’t available TX slot any more, and it stopped the TX queue.


static inline int netfront_tx_slot_available(struct netfront_info *np)


    return ((np->tx.req_prod_pvt - np->tx.rsp_cons) <

        (TX_MAX_TARGET - MAX_SKB_FRAGS - 2));



Here is some runtime debugging information after that issue occurred:

[3833225.489956] tx.req_prod_pvt=0x210daaa tx.rsp_cons=0x210d9be

[3833225.489958] TX_MAX_TARGET = 0x100, MAX_SKB_FRAGS = 0x12 dev->state=0x7

[3833225.489961] np->tx.sring->rsp_prod = 0x210d9be np->tx.sring->req_prod=0x210daaa

[3833225.489964] np->tx.sring->req_event=0x210d9bf np->tx.sring->rsp_event=0x210da35


The “dev->state” of  xennet interface in DomU:

[3833225.489968] __LINK_STATE_XOFF:                                                yes

[3833225.489970] __LINK_STATE_START:                                              yes

[3833225.489971] __LINK_STATE_PRESENT:                                         yes

[3833225.489973] __LINK_STATE_SCHED:                                             no

[3833225.489975] __LINK_STATE_NOCARRIER:                                   no

[3833225.489976] __LINK_STATE_RX_SCHED:                                      no

[3833225.489978] __LINK_STATE_LINKWATCH_PENDING:             no

[3833225.489979] __LINK_STATE_DORMANT:                                     no

[3833225.489981] __LINK_STATE_QDISC_RUNNING:                        no


Due to  tx.rsp_cons == np->tx.sring->rsp_prod  == 0x210d9be, the network_tx_buf_gc() will do nothing.

The problem is, the TX queue will never been enable any more.


Could anybody helps to understand this, any inputs are appreciated.


The platform information:

Xen:     3.4.2                                        x86_64  8GB MEM + 8 CPU cores.

Dom0:  kernel)        x86      1 GB MEM + 1 CPU cores

DomU:  kernel)        x86      3 GB MEM + 2 CPU cores

<there are other two DomUs running without any problems>








Protected by Websense Hosted Email Security — www.websense.com

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.