diff options
author | Magnus Karlsson <magnus.karlsson@intel.com> | 2020-11-16 14:12:46 +0300 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2020-11-18 00:07:40 +0300 |
commit | 9349eb3a9d2ae0151510dd98b6640dfaeebee9cc (patch) | |
tree | bbec51e0e7477b2c69ff7b2c3ae5cdd7297e162f /include/net/xdp_sock_drv.h | |
parent | b8c7aece29bc06e1e63efeefb9e31ab259e84ea2 (diff) | |
download | linux-9349eb3a9d2ae0151510dd98b6640dfaeebee9cc.tar.xz |
xsk: Introduce batched Tx descriptor interfaces
Introduce batched descriptor interfaces in the xsk core code for the
Tx path to be used in the driver to write a code path with higher
performance. This interface will be used by the i40e driver in the
next patch. Though other drivers would likely benefit from this new
interface too.
Note that batching is only implemented for the common case when
there is only one socket bound to the same device and queue id. When
this is not the case, we fall back to the old non-batched version of
the function.
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/bpf/1605525167-14450-5-git-send-email-magnus.karlsson@gmail.com
Diffstat (limited to 'include/net/xdp_sock_drv.h')
-rw-r--r-- | include/net/xdp_sock_drv.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/net/xdp_sock_drv.h b/include/net/xdp_sock_drv.h index 5b1ee8a9976d..4e295541e396 100644 --- a/include/net/xdp_sock_drv.h +++ b/include/net/xdp_sock_drv.h @@ -13,6 +13,7 @@ void xsk_tx_completed(struct xsk_buff_pool *pool, u32 nb_entries); bool xsk_tx_peek_desc(struct xsk_buff_pool *pool, struct xdp_desc *desc); +u32 xsk_tx_peek_release_desc_batch(struct xsk_buff_pool *pool, struct xdp_desc *desc, u32 max); void xsk_tx_release(struct xsk_buff_pool *pool); struct xsk_buff_pool *xsk_get_pool_from_qid(struct net_device *dev, u16 queue_id); @@ -128,6 +129,12 @@ static inline bool xsk_tx_peek_desc(struct xsk_buff_pool *pool, return false; } +static inline u32 xsk_tx_peek_release_desc_batch(struct xsk_buff_pool *pool, struct xdp_desc *desc, + u32 max) +{ + return 0; +} + static inline void xsk_tx_release(struct xsk_buff_pool *pool) { } |