mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-05 11:53:41 +00:00

In preparation for support for a new datapath format move all ring and fast path logic into separate files. It is basically a verbatim move with some wrapping functions, no new structures and functions added. The current data path is called NFD3 from the initial version of the driver ABI it used. The non-fast path, but ring related functions are moved to nfp_net_dp.c file. Changes to Jakub's work: * Rebase on xsk related code. * Split the patch, move the callback changes to next commit. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Fei Qin <fei.qin@corigine.com> Signed-off-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: David S. Miller <davem@davemloft.net>
42 lines
1.2 KiB
C
42 lines
1.2 KiB
C
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
|
|
/* Copyright (C) 2018 Netronome Systems, Inc */
|
|
/* Copyright (C) 2021 Corigine, Inc */
|
|
|
|
#ifndef _NFP_XSK_H_
|
|
#define _NFP_XSK_H_
|
|
|
|
#include <net/xdp_sock_drv.h>
|
|
|
|
#define NFP_NET_XSK_TX_BATCH 16 /* XSK TX transmission batch size. */
|
|
|
|
static inline bool nfp_net_has_xsk_pool_slow(struct nfp_net_dp *dp,
|
|
unsigned int qid)
|
|
{
|
|
return dp->xdp_prog && dp->xsk_pools[qid];
|
|
}
|
|
|
|
static inline int nfp_net_rx_space(struct nfp_net_rx_ring *rx_ring)
|
|
{
|
|
return rx_ring->cnt - rx_ring->wr_p + rx_ring->rd_p - 1;
|
|
}
|
|
|
|
static inline int nfp_net_tx_space(struct nfp_net_tx_ring *tx_ring)
|
|
{
|
|
return tx_ring->cnt - tx_ring->wr_p + tx_ring->rd_p - 1;
|
|
}
|
|
|
|
void nfp_net_xsk_rx_unstash(struct nfp_net_xsk_rx_buf *rxbuf);
|
|
void nfp_net_xsk_rx_free(struct nfp_net_xsk_rx_buf *rxbuf);
|
|
void nfp_net_xsk_rx_drop(struct nfp_net_r_vector *r_vec,
|
|
struct nfp_net_xsk_rx_buf *xrxbuf);
|
|
int nfp_net_xsk_setup_pool(struct net_device *netdev, struct xsk_buff_pool *pool,
|
|
u16 queue_id);
|
|
|
|
void nfp_net_xsk_rx_bufs_free(struct nfp_net_rx_ring *rx_ring);
|
|
|
|
void nfp_net_xsk_rx_ring_fill_freelist(struct nfp_net_rx_ring *rx_ring);
|
|
|
|
int nfp_net_xsk_wakeup(struct net_device *netdev, u32 queue_id, u32 flags);
|
|
|
|
#endif /* _NFP_XSK_H_ */
|