Skip to content

Commit

Permalink
xen-netfront: frags -> slots in xennet_get_responses
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Wei Liu authored and David S. Miller committed Mar 25, 2013
1 parent e2d617c commit 7158ff6
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions drivers/net/xen-netfront.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -756,27 +756,27 @@ static int xennet_get_responses(struct netfront_info *np,
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;
}
Expand Down

0 comments on commit 7158ff6

Please sign in to comment.