diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index e30d800..5d23266 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -741,18 +741,26 @@ static int xennet_get_responses(struct netfront_info *np, int slots = 1; int err = 0; unsigned long ret; - + int cons_changed = 0; + int cons_before = 0; + int xennet_get_extras_err = 0; + if (rx->flags & XEN_NETRXF_extra_info) { err = xennet_get_extras(np, extras, rp); + xennet_get_extras_err = err; + cons_before = cons; cons = np->rx.rsp_cons; + cons_changed++; } for (;;) { if (unlikely(rx->status < 0 || rx->offset + rx->status > PAGE_SIZE)) { - if (net_ratelimit()) + if (net_ratelimit()){ dev_warn(dev, "rx->offset: %x, size: %u\n", rx->offset, rx->status); + dev_warn(dev, "cons:%d slots:%d rp:%d max:%d err:%d rx->id:%d rx->offset:%x size:%u ref:%ld pagesize:%d skb_ipsummed:%d is_gso:%d gso_size:%d gso_type:%d gso_segs:%d RING_HAS_UNCONSUMED_RESPONSES:%d cons_changed:%d cons_before:%d xennet_get_extras_err:%d\n", cons, slots, rp, max, err, rx->id, rx->offset, rx->status, ref, PAGE_SIZE, skb->ip_summed, skb_is_gso(skb) ? 1 : 0, skb_shinfo(skb)->gso_size, skb_shinfo(skb)->gso_type, skb_shinfo(skb)->gso_segs, RING_HAS_UNCONSUMED_RESPONSES(&np->rx), cons_changed, cons_before, xennet_get_extras_err); + } xennet_move_rx_slot(np, skb, ref); err = -EINVAL; goto next;