1
0
Fork 0

xen-netfront: frags -> slots in xennet_get_responses

This function is in fact counting the ring slots required for responses.
Separate the concepts of ring slots and skb frags make the code clearer, as
now netfront and netback can have different MAX_SKB_FRAGS, slot and frag are
not mapped 1:1 any more.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
hifive-unleashed-5.1
Wei Liu 2013-03-25 01:08:19 +00:00 committed by David S. Miller
parent e2d617c0cc
commit 7158ff6d0c
1 changed files with 9 additions and 9 deletions

View File

@ -712,7 +712,7 @@ static int xennet_get_responses(struct netfront_info *np,
struct sk_buff *skb = xennet_get_rx_skb(np, cons);
grant_ref_t ref = xennet_get_rx_ref(np, cons);
int max = MAX_SKB_FRAGS + (rx->status <= RX_COPY_THRESHOLD);
int frags = 1;
int slots = 1;
int err = 0;
unsigned long ret;
@ -756,27 +756,27 @@ next:
if (!(rx->flags & XEN_NETRXF_more_data))
break;
if (cons + frags == rp) {
if (cons + slots == rp) {
if (net_ratelimit())
dev_warn(dev, "Need more frags\n");
dev_warn(dev, "Need more slots\n");
err = -ENOENT;
break;
}
rx = RING_GET_RESPONSE(&np->rx, cons + frags);
skb = xennet_get_rx_skb(np, cons + frags);
ref = xennet_get_rx_ref(np, cons + frags);
frags++;
rx = RING_GET_RESPONSE(&np->rx, cons + slots);
skb = xennet_get_rx_skb(np, cons + slots);
ref = xennet_get_rx_ref(np, cons + slots);
slots++;
}
if (unlikely(frags > max)) {
if (unlikely(slots > max)) {
if (net_ratelimit())
dev_warn(dev, "Too many frags\n");
err = -E2BIG;
}
if (unlikely(err))
np->rx.rsp_cons = cons + frags;
np->rx.rsp_cons = cons + slots;
return err;
}