net/funeth: Fix fun_xdp_tx() and XDP packet reclaim
authorDimitris Michailidis <d.michailidis@fungible.com>
Tue, 26 Jul 2022 21:59:23 +0000 (14:59 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 28 Jul 2022 10:54:10 +0000 (12:54 +0200)
commit51a83391d77bb0f7ff0aef06ca4c7f5aa9e80b4c
tree36686d10aaf8f1c24dac791cde91cb24e61b49dd
parentbf84719df765f1a832a770f3cd0cdc8bee20c91f
net/funeth: Fix fun_xdp_tx() and XDP packet reclaim

The current implementation of fun_xdp_tx(), used for XPD_TX, is
incorrect in that it takes an address/length pair and later releases it
with page_frag_free(). It is OK for XDP_TX but the same code is used by
ndo_xdp_xmit. In that case it loses the XDP memory type and releases the
packet incorrectly for some of the types. Assorted breakage follows.

Change fun_xdp_tx() to take xdp_frame and rely on xdp_return_frame() in
reclaim.

Fixes: db37bc177dae ("net/funeth: add the data path")
Signed-off-by: Dimitris Michailidis <dmichail@fungible.com>
Link: https://lore.kernel.org/r/20220726215923.7887-1-dmichail@fungible.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/fungible/funeth/funeth_rx.c
drivers/net/ethernet/fungible/funeth/funeth_tx.c
drivers/net/ethernet/fungible/funeth/funeth_txrx.h