Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/* Copyright (C) 2025 Intel Corporation */
|
|
|
|
#define DEFAULT_SYMBOL_NAMESPACE "LIBETH"
|
|
|
|
#include <net/libeth/xdp.h>
|
|
|
|
#include "priv.h"
|
|
|
|
/* Tx buffer completion */
|
|
|
|
DEFINE_STATIC_CALL_NULL(bulk, libeth_xdp_return_buff_bulk);
|
|
DEFINE_STATIC_CALL_NULL(xsk, libeth_xsk_buff_free_slow);
|
|
|
|
/**
|
|
* libeth_tx_complete_any - perform Tx completion for one SQE of any type
|
|
* @sqe: Tx buffer to complete
|
|
* @cp: polling params
|
|
*
|
|
* Can be used to complete both regular and XDP SQEs, for example when
|
|
* destroying queues.
|
|
* When libeth_xdp is not loaded, XDPSQEs won't be handled.
|
|
*/
|
|
void libeth_tx_complete_any(struct libeth_sqe *sqe, struct libeth_cq_pp *cp)
|
|
{
|
|
if (sqe->type >= __LIBETH_SQE_XDP_START)
|
|
__libeth_xdp_complete_tx(sqe, cp, static_call(bulk),
|
|
static_call(xsk));
|
|
else
|
|
libeth_tx_complete(sqe, cp);
|
|
}
|
|
EXPORT_SYMBOL_GPL(libeth_tx_complete_any);
|
|
|
|
/* Module */
|
|
|
|
void libeth_attach_xdp(const struct libeth_xdp_ops *ops)
|
|
{
|
|
static_call_update(bulk, ops ? ops->bulk : NULL);
|
|
static_call_update(xsk, ops ? ops->xsk : NULL);
|
|
}
|
|
EXPORT_SYMBOL_GPL(libeth_attach_xdp);
|