|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
From 2d7190695574d4a39597a65d3ba3858098f22da4 Mon Sep 17 00:00:00 2001
|
|
|
|
|
From 48468975242efd6098b66685a00e6f906fa740e2 Mon Sep 17 00:00:00 2001
|
|
|
|
|
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
|
|
|
|
|
<marmarek@invisiblethingslab.com>
|
|
|
|
|
Date: Wed, 16 Dec 2015 05:09:55 +0100
|
|
|
|
@ -18,10 +18,10 @@ Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
|
|
|
|
|
1 file changed, 25 insertions(+), 26 deletions(-)
|
|
|
|
|
|
|
|
|
|
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
|
|
|
|
|
index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
index f1688897b256..4d8d53862d1b 100644
|
|
|
|
|
--- a/drivers/net/xen-netfront.c
|
|
|
|
|
+++ b/drivers/net/xen-netfront.c
|
|
|
|
|
@@ -387,13 +387,13 @@ static void xennet_tx_buf_gc(struct netfront_queue *queue)
|
|
|
|
|
@@ -385,13 +385,13 @@ static void xennet_tx_buf_gc(struct netfront_queue *queue)
|
|
|
|
|
rmb(); /* Ensure we see responses up to 'rp'. */
|
|
|
|
|
|
|
|
|
|
for (cons = queue->tx.rsp_cons; cons != prod; cons++) {
|
|
|
|
@ -39,7 +39,7 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
skb = queue->tx_skbs[id].skb;
|
|
|
|
|
if (unlikely(gnttab_query_foreign_access(
|
|
|
|
|
queue->grant_tx_ref[id]) != 0)) {
|
|
|
|
|
@@ -742,7 +742,7 @@ static int xennet_get_extras(struct netfront_queue *queue,
|
|
|
|
|
@@ -740,7 +740,7 @@ static int xennet_get_extras(struct netfront_queue *queue,
|
|
|
|
|
RING_IDX rp)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
@ -48,7 +48,7 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
struct device *dev = &queue->info->netdev->dev;
|
|
|
|
|
RING_IDX cons = queue->rx.rsp_cons;
|
|
|
|
|
int err = 0;
|
|
|
|
|
@@ -758,24 +758,23 @@ static int xennet_get_extras(struct netfront_queue *queue,
|
|
|
|
|
@@ -756,24 +756,23 @@ static int xennet_get_extras(struct netfront_queue *queue,
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -80,7 +80,7 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
|
|
|
|
|
queue->rx.rsp_cons = cons;
|
|
|
|
|
return err;
|
|
|
|
|
@@ -785,28 +784,28 @@ static int xennet_get_responses(struct netfront_queue *queue,
|
|
|
|
|
@@ -783,28 +782,28 @@ static int xennet_get_responses(struct netfront_queue *queue,
|
|
|
|
|
struct netfront_rx_info *rinfo, RING_IDX rp,
|
|
|
|
|
struct sk_buff_head *list)
|
|
|
|
|
{
|
|
|
|
@ -115,7 +115,7 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
xennet_move_rx_slot(queue, skb, ref);
|
|
|
|
|
err = -EINVAL;
|
|
|
|
|
goto next;
|
|
|
|
|
@@ -820,7 +819,7 @@ static int xennet_get_responses(struct netfront_queue *queue,
|
|
|
|
|
@@ -818,7 +817,7 @@ static int xennet_get_responses(struct netfront_queue *queue,
|
|
|
|
|
if (ref == GRANT_INVALID_REF) {
|
|
|
|
|
if (net_ratelimit())
|
|
|
|
|
dev_warn(dev, "Bad rx response id %d.\n",
|
|
|
|
@ -124,7 +124,7 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
err = -EINVAL;
|
|
|
|
|
goto next;
|
|
|
|
|
}
|
|
|
|
|
@@ -833,7 +832,7 @@ static int xennet_get_responses(struct netfront_queue *queue,
|
|
|
|
|
@@ -831,7 +830,7 @@ static int xennet_get_responses(struct netfront_queue *queue,
|
|
|
|
|
__skb_queue_tail(list, skb);
|
|
|
|
|
|
|
|
|
|
next:
|
|
|
|
@ -133,7 +133,7 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
if (cons + slots == rp) {
|
|
|
|
|
@@ -843,7 +842,7 @@ static int xennet_get_responses(struct netfront_queue *queue,
|
|
|
|
|
@@ -841,7 +840,7 @@ static int xennet_get_responses(struct netfront_queue *queue,
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -142,7 +142,7 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
skb = xennet_get_rx_skb(queue, cons + slots);
|
|
|
|
|
ref = xennet_get_rx_ref(queue, cons + slots);
|
|
|
|
|
slots++;
|
|
|
|
|
@@ -898,9 +897,9 @@ static RING_IDX xennet_fill_frags(struct netfront_queue *queue,
|
|
|
|
|
@@ -896,9 +895,9 @@ static RING_IDX xennet_fill_frags(struct netfront_queue *queue,
|
|
|
|
|
struct sk_buff *nskb;
|
|
|
|
|
|
|
|
|
|
while ((nskb = __skb_dequeue(list))) {
|
|
|
|
@ -154,7 +154,7 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
|
|
|
|
|
if (skb_shinfo(skb)->nr_frags == MAX_SKB_FRAGS) {
|
|
|
|
|
unsigned int pull_to = NETFRONT_SKB_CB(skb)->pull_to;
|
|
|
|
|
@@ -916,7 +915,7 @@ static RING_IDX xennet_fill_frags(struct netfront_queue *queue,
|
|
|
|
|
@@ -914,7 +913,7 @@ static RING_IDX xennet_fill_frags(struct netfront_queue *queue,
|
|
|
|
|
|
|
|
|
|
skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
|
|
|
|
|
skb_frag_page(nfrag),
|
|
|
|
@ -163,7 +163,7 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
|
|
|
|
|
skb_shinfo(nskb)->nr_frags = 0;
|
|
|
|
|
kfree_skb(nskb);
|
|
|
|
|
@@ -1012,7 +1011,7 @@ static int xennet_poll(struct napi_struct *napi, int budget)
|
|
|
|
|
@@ -1010,7 +1009,7 @@ static int xennet_poll(struct napi_struct *napi, int budget)
|
|
|
|
|
i = queue->rx.rsp_cons;
|
|
|
|
|
work_done = 0;
|
|
|
|
|
while ((i != rp) && (work_done < budget)) {
|
|
|
|
@ -173,5 +173,5 @@ index 61298526aee3..08ea5004e86b 100644
|
|
|
|
|
|
|
|
|
|
err = xennet_get_responses(queue, &rinfo, rp, &tmpq);
|
|
|
|
|
--
|
|
|
|
|
2.17.1
|
|
|
|
|
2.20.1
|
|
|
|
|
|
|
|
|
|