net: marvell: always set skb_shared_info in mvneta_swbm_add_rx_fragment
Always set skb_shared_info data structure in mvneta_swbm_add_rx_fragment routine even if the fragment contains only the ethernet FCS. Fixes: 039fbc47f9f1 ("net: mvneta: alloc skb_shared_info on the mvneta_rx_swbm stack") Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b43c8909be
commit
6ff63a150b
@ -2299,19 +2299,19 @@ mvneta_swbm_add_rx_fragment(struct mvneta_port *pp,
|
|||||||
skb_frag_off_set(frag, pp->rx_offset_correction);
|
skb_frag_off_set(frag, pp->rx_offset_correction);
|
||||||
skb_frag_size_set(frag, data_len);
|
skb_frag_size_set(frag, data_len);
|
||||||
__skb_frag_set_page(frag, page);
|
__skb_frag_set_page(frag, page);
|
||||||
|
|
||||||
/* last fragment */
|
|
||||||
if (len == *size) {
|
|
||||||
struct skb_shared_info *sinfo;
|
|
||||||
|
|
||||||
sinfo = xdp_get_shared_info_from_buff(xdp);
|
|
||||||
sinfo->nr_frags = xdp_sinfo->nr_frags;
|
|
||||||
memcpy(sinfo->frags, xdp_sinfo->frags,
|
|
||||||
sinfo->nr_frags * sizeof(skb_frag_t));
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
page_pool_put_full_page(rxq->page_pool, page, true);
|
page_pool_put_full_page(rxq->page_pool, page, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* last fragment */
|
||||||
|
if (len == *size) {
|
||||||
|
struct skb_shared_info *sinfo;
|
||||||
|
|
||||||
|
sinfo = xdp_get_shared_info_from_buff(xdp);
|
||||||
|
sinfo->nr_frags = xdp_sinfo->nr_frags;
|
||||||
|
memcpy(sinfo->frags, xdp_sinfo->frags,
|
||||||
|
sinfo->nr_frags * sizeof(skb_frag_t));
|
||||||
|
}
|
||||||
*size -= len;
|
*size -= len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user