mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-16 19:29:06 +08:00
net: ethernet: mediatek: Add metadata support for xdp mode
Set metadata size building the skb from xdp_buff in mediatek driver. mtk_eth_soc driver sets xdp headroom to XDP_PACKET_HEADROOM so the headroom is large enough to contain xdp_frame and xdp metadata. Please note this patch is just compiled tested. Reviewed-by: Michal Kubiak <michal.kubiak@intel.com> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Link: https://patch.msgid.link/20250318-mvneta-xdp-meta-v2-5-b6075778f61f@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
33bfff8fc8
commit
74fb1346bc
@@ -2122,7 +2122,7 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
|
||||
if (ring->page_pool) {
|
||||
struct page *page = virt_to_head_page(data);
|
||||
struct xdp_buff xdp;
|
||||
u32 ret;
|
||||
u32 ret, metasize;
|
||||
|
||||
new_data = mtk_page_pool_get_buff(ring->page_pool,
|
||||
&dma_addr,
|
||||
@@ -2138,7 +2138,7 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
|
||||
|
||||
xdp_init_buff(&xdp, PAGE_SIZE, &ring->xdp_q);
|
||||
xdp_prepare_buff(&xdp, data, MTK_PP_HEADROOM, pktlen,
|
||||
false);
|
||||
true);
|
||||
xdp_buff_clear_frags_flag(&xdp);
|
||||
|
||||
ret = mtk_xdp_run(eth, ring, &xdp, netdev);
|
||||
@@ -2158,6 +2158,9 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
|
||||
|
||||
skb_reserve(skb, xdp.data - xdp.data_hard_start);
|
||||
skb_put(skb, xdp.data_end - xdp.data);
|
||||
metasize = xdp.data - xdp.data_meta;
|
||||
if (metasize)
|
||||
skb_metadata_set(skb, metasize);
|
||||
skb_mark_for_recycle(skb);
|
||||
} else {
|
||||
if (ring->frag_size <= PAGE_SIZE)
|
||||
|
||||
Reference in New Issue
Block a user