Commit e84448d5 authored by David Vrabel's avatar David Vrabel Committed by David S. Miller

xen-netfront: refactor skb slot counting

A function to count the number of slots an skb needs is more useful
than one that counts the slots needed for only the frags.
Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 28e98c2c
...@@ -517,13 +517,15 @@ static void xennet_make_frags(struct sk_buff *skb, struct netfront_queue *queue, ...@@ -517,13 +517,15 @@ static void xennet_make_frags(struct sk_buff *skb, struct netfront_queue *queue,
} }
/* /*
* Count how many ring slots are required to send the frags of this * Count how many ring slots are required to send this skb. Each frag
* skb. Each frag might be a compound page. * might be a compound page.
*/ */
static int xennet_count_skb_frag_slots(struct sk_buff *skb) static int xennet_count_skb_slots(struct sk_buff *skb)
{ {
int i, frags = skb_shinfo(skb)->nr_frags; int i, frags = skb_shinfo(skb)->nr_frags;
int pages = 0; int pages;
pages = PFN_UP(offset_in_page(skb->data) + skb_headlen(skb));
for (i = 0; i < frags; i++) { for (i = 0; i < frags; i++) {
skb_frag_t *frag = skb_shinfo(skb)->frags + i; skb_frag_t *frag = skb_shinfo(skb)->frags + i;
...@@ -593,8 +595,7 @@ static int xennet_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -593,8 +595,7 @@ static int xennet_start_xmit(struct sk_buff *skb, struct net_device *dev)
goto drop; goto drop;
} }
slots = DIV_ROUND_UP(offset + len, PAGE_SIZE) + slots = xennet_count_skb_slots(skb);
xennet_count_skb_frag_slots(skb);
if (unlikely(slots > MAX_SKB_FRAGS + 1)) { if (unlikely(slots > MAX_SKB_FRAGS + 1)) {
net_dbg_ratelimited("xennet: skb rides the rocket: %d slots, %d bytes\n", net_dbg_ratelimited("xennet: skb rides the rocket: %d slots, %d bytes\n",
slots, skb->len); slots, skb->len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment