diff options
Diffstat (limited to 'drivers/net/xen-netfront.c')
| -rw-r--r-- | drivers/net/xen-netfront.c | 10 | 
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index 8d33970a2950..e14ec75b61d6 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -531,7 +531,7 @@ static int xennet_count_skb_slots(struct sk_buff *skb)  	for (i = 0; i < frags; i++) {  		skb_frag_t *frag = skb_shinfo(skb)->frags + i;  		unsigned long size = skb_frag_size(frag); -		unsigned long offset = frag->page_offset; +		unsigned long offset = skb_frag_off(frag);  		/* Skip unused frames from start of page */  		offset &= ~PAGE_MASK; @@ -674,8 +674,8 @@ static netdev_tx_t xennet_start_xmit(struct sk_buff *skb, struct net_device *dev  	/* Requests for all the frags. */  	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {  		skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; -		tx = xennet_make_txreqs(queue, tx, skb, -					skb_frag_page(frag), frag->page_offset, +		tx = xennet_make_txreqs(queue, tx, skb, skb_frag_page(frag), +					skb_frag_off(frag),  					skb_frag_size(frag));  	} @@ -906,7 +906,7 @@ static RING_IDX xennet_fill_frags(struct netfront_queue *queue,  			__pskb_pull_tail(skb, pull_to - skb_headlen(skb));  		}  		if (unlikely(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS)) { -			queue->rx.rsp_cons = ++cons; +			queue->rx.rsp_cons = ++cons + skb_queue_len(list);  			kfree_skb(nskb);  			return ~0U;  		} @@ -1040,7 +1040,7 @@ err:  		if (NETFRONT_SKB_CB(skb)->pull_to > RX_COPY_THRESHOLD)  			NETFRONT_SKB_CB(skb)->pull_to = RX_COPY_THRESHOLD; -		skb_shinfo(skb)->frags[0].page_offset = rx->offset; +		skb_frag_off_set(&skb_shinfo(skb)->frags[0], rx->offset);  		skb_frag_size_set(&skb_shinfo(skb)->frags[0], rx->status);  		skb->data_len = rx->status;  		skb->len += rx->status;  |