mlx5e_rq
struct mlx5e_rq *rq);
int mlx5e_wait_for_min_rx_wqes(struct mlx5e_rq *rq, int wait_time);
void mlx5e_close_rq(struct mlx5e_rq *rq);
int mlx5e_create_rq(struct mlx5e_rq *rq, struct mlx5e_rq_param *param, u16 q_counter);
void mlx5e_destroy_rq(struct mlx5e_rq *rq);
int mlx5e_flush_rq(struct mlx5e_rq *rq, int curr_state);
void mlx5e_activate_rq(struct mlx5e_rq *rq);
void mlx5e_deactivate_rq(struct mlx5e_rq *rq);
struct mlx5e_rq *drop_rq);
void mlx5e_close_drop_rq(struct mlx5e_rq *drop_rq);
struct mlx5e_rq *rq;
struct mlx5e_rq;
typedef void (*mlx5e_fp_handle_rx_cqe)(struct mlx5e_rq*, struct mlx5_cqe64*);
typedef bool (*mlx5e_fp_post_rx_wqes)(struct mlx5e_rq *rq);
typedef void (*mlx5e_fp_dealloc_wqe)(struct mlx5e_rq*, u16);
typedef void (*mlx5e_fp_shampo_dealloc_hd)(struct mlx5e_rq*, u16, u16, bool);
int mlx5e_rq_set_handlers(struct mlx5e_rq *rq, struct mlx5e_params *params, bool xsk);
void mlx5e_rq_set_trap_handlers(struct mlx5e_rq *rq, struct mlx5e_params *params);
struct mlx5e_rq rq;
struct mlx5e_rq xskrq;
struct mlx5e_rq drop_rq;
struct mlx5e_rq;
int mlx5e_dim_rx_change(struct mlx5e_rq *rq, bool enabled);
void mlx5e_reporter_rq_cqe_err(struct mlx5e_rq *rq);
void mlx5e_reporter_rx_timeout(struct mlx5e_rq *rq);
struct mlx5e_rq *rq = &c->rq;
struct mlx5e_rq *rq)
struct mlx5e_rq rq;
void mlx5e_rep_tc_receive(struct mlx5_cqe64 *cqe, struct mlx5e_rq *rq,
void mlx5e_rep_tc_receive(struct mlx5_cqe64 *cqe, struct mlx5e_rq *rq,
mlx5e_rep_tc_receive(struct mlx5_cqe64 *cqe, struct mlx5e_rq *rq,
struct mlx5e_rq *rq = ctx;
struct mlx5e_rq *rq;
static void mlx5e_health_rq_put_sw_state(struct devlink_fmsg *fmsg, struct mlx5e_rq *rq)
mlx5e_rx_reporter_build_diagnose_output_rq_common(struct mlx5e_rq *rq,
static void mlx5e_rx_reporter_build_diagnose_output(struct mlx5e_rq *rq,
static void mlx5e_rx_reporter_diagnose_generic_rq(struct mlx5e_rq *rq,
struct mlx5e_rq *generic_rq = &priv->channels.c[0]->rq;
static void mlx5e_rx_reporter_build_diagnose_output_ptp_rq(struct mlx5e_rq *rq,
struct mlx5e_rq *rq;
struct mlx5e_rq *rq = ctx;
struct mlx5e_rq *rq = &priv->channels.c[i]->rq;
void mlx5e_reporter_rx_timeout(struct mlx5e_rq *rq)
void mlx5e_reporter_rq_cqe_err(struct mlx5e_rq *rq)
struct mlx5e_rq *xskrq = NULL;
struct mlx5e_rq *rq;
struct mlx5e_rq *rq = &trap_ctx->rq;
struct mlx5e_rq *rq)
struct mlx5e_rq *rq = &t->rq;
static void mlx5e_close_trap_rq(struct mlx5e_rq *rq)
struct mlx5e_rq rq;
static inline u16 mlx5e_shampo_get_cqe_header_index(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
struct mlx5e_rq *rq;
static inline void mlx5e_rqwq_reset(struct mlx5e_rq *rq)
static inline u32 mlx5e_rqwq_get_size(struct mlx5e_rq *rq)
static inline u32 mlx5e_rqwq_get_cur_sz(struct mlx5e_rq *rq)
static inline u16 mlx5e_rqwq_get_head(struct mlx5e_rq *rq)
static inline u16 mlx5e_rqwq_get_wqe_counter(struct mlx5e_rq *rq)
static inline struct mlx5e_mpw_info *mlx5e_get_mpw_info(struct mlx5e_rq *rq, int i)
INDIRECT_CALLABLE_DECLARE(bool mlx5e_post_rx_wqes(struct mlx5e_rq *rq));
INDIRECT_CALLABLE_DECLARE(bool mlx5e_post_rx_mpwqes(struct mlx5e_rq *rq));
void mlx5e_free_rx_descs(struct mlx5e_rq *rq);
void mlx5e_free_rx_missing_descs(struct mlx5e_rq *rq);
bool mlx5e_xdp_handle(struct mlx5e_rq *rq,
mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5e_rq *rq,
void mlx5e_xdp_rx_poll_complete(struct mlx5e_rq *rq)
bool mlx5e_xdp_handle(struct mlx5e_rq *rq,
void mlx5e_xdp_rx_poll_complete(struct mlx5e_rq *rq);
struct mlx5e_rq *rq;
int mlx5e_xsk_alloc_rx_wqes_batched(struct mlx5e_rq *rq, u16 ix, int wqe_bulk)
int mlx5e_xsk_alloc_rx_mpwqe(struct mlx5e_rq *rq, u16 ix)
int mlx5e_xsk_alloc_rx_wqes(struct mlx5e_rq *rq, u16 ix, int wqe_bulk)
static struct sk_buff *mlx5e_xsk_construct_skb(struct mlx5e_rq *rq, struct xdp_buff *xdp)
struct sk_buff *mlx5e_xsk_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq,
struct sk_buff *mlx5e_xsk_skb_from_cqe_linear(struct mlx5e_rq *rq,
int mlx5e_xsk_alloc_rx_mpwqe(struct mlx5e_rq *rq, u16 ix);
int mlx5e_xsk_alloc_rx_wqes_batched(struct mlx5e_rq *rq, u16 ix, int wqe_bulk);
int mlx5e_xsk_alloc_rx_wqes(struct mlx5e_rq *rq, u16 ix, int wqe_bulk);
struct sk_buff *mlx5e_xsk_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq,
struct sk_buff *mlx5e_xsk_skb_from_cqe_linear(struct mlx5e_rq *rq,
struct mlx5e_rq *rq)
struct mlx5e_rq *xskrq = &c->xskrq;
static void resync_update_sn(struct mlx5e_rq *rq, struct sk_buff *skb)
void mlx5e_ktls_handle_rx_skb(struct mlx5e_rq *rq, struct sk_buff *skb,
void mlx5e_ktls_handle_rx_skb(struct mlx5e_rq *rq, struct sk_buff *skb,
static inline void mlx5e_ktls_handle_rx_skb(struct mlx5e_rq *rq,
struct mlx5e_rq *rq = dim->priv;
int mlx5e_dim_rx_change(struct mlx5e_rq *rq, bool enable)
static void mlx5e_free_rq(struct mlx5e_rq *rq)
int mlx5e_create_rq(struct mlx5e_rq *rq, struct mlx5e_rq_param *param, u16 q_counter)
static int mlx5e_modify_rq_state(struct mlx5e_rq *rq, int curr_state, int next_state)
static void mlx5e_flush_rq_cq(struct mlx5e_rq *rq)
int mlx5e_flush_rq(struct mlx5e_rq *rq, int curr_state)
static int mlx5e_modify_rq_vsd(struct mlx5e_rq *rq, bool vsd)
void mlx5e_destroy_rq(struct mlx5e_rq *rq)
int mlx5e_wait_for_min_rx_wqes(struct mlx5e_rq *rq, int wait_time)
void mlx5e_free_rx_missing_descs(struct mlx5e_rq *rq)
void mlx5e_free_rx_descs(struct mlx5e_rq *rq)
struct mlx5e_rq *rq)
void mlx5e_activate_rq(struct mlx5e_rq *rq)
void mlx5e_deactivate_rq(struct mlx5e_rq *rq)
void mlx5e_close_rq(struct mlx5e_rq *rq)
static inline void mlx5e_build_umr_wqe(struct mlx5e_rq *rq,
static int mlx5e_rq_alloc_mpwqe_info(struct mlx5e_rq *rq, int node)
static void mlx5e_free_drop_rq(struct mlx5e_rq *rq)
struct mlx5e_rq *rq,
struct mlx5e_rq *drop_rq)
void mlx5e_close_drop_rq(struct mlx5e_rq *drop_rq)
static int mlx5e_create_rq_umr_mkey(struct mlx5_core_dev *mdev, struct mlx5e_rq *rq)
static void mlx5e_rq_replace_xdp_prog(struct mlx5e_rq *rq, struct bpf_prog *prog)
static void mlx5e_init_frags_partition(struct mlx5e_rq *rq)
static void mlx5e_init_xsk_buffs(struct mlx5e_rq *rq)
static int mlx5e_init_wqe_alloc_info(struct mlx5e_rq *rq, int node)
static void mlx5e_free_wqe_alloc_info(struct mlx5e_rq *rq)
struct mlx5e_rq *rq = container_of(recover_work, struct mlx5e_rq, recover_work);
struct mlx5e_rq *rq = container_of(timeout_work,
struct mlx5e_rq,
static int mlx5e_alloc_mpwqe_rq_drop_page(struct mlx5e_rq *rq)
static void mlx5e_free_mpwqe_rq_drop_page(struct mlx5e_rq *rq)
u32 xdp_frag_size, struct mlx5e_rq *rq)
static void mlx5e_release_rq_hd_pages(struct mlx5e_rq *rq,
static int mlx5e_alloc_rq_hd_pages(struct mlx5e_rq *rq, int node,
struct mlx5e_rq *rq,
static void mlx5e_rq_free_shampo(struct mlx5e_rq *rq)
int node, struct mlx5e_rq *rq)
static void mlx5e_shampo_update_ipv4_udp_hdr(struct mlx5e_rq *rq, struct iphdr *ipv4)
static void mlx5e_shampo_update_ipv6_udp_hdr(struct mlx5e_rq *rq, struct ipv6hdr *ipv6)
static void mlx5e_shampo_get_hd_buf_info(struct mlx5e_rq *rq,
static void *mlx5e_shampo_get_hdr(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe,
static inline void mlx5e_read_title_slot(struct mlx5e_rq *rq,
static void mlx5e_shampo_update_fin_psh_flags(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe,
static void mlx5e_shampo_update_ipv4_tcp_hdr(struct mlx5e_rq *rq, struct iphdr *ipv4,
static void mlx5e_shampo_update_ipv6_tcp_hdr(struct mlx5e_rq *rq, struct ipv6hdr *ipv6,
static void mlx5e_shampo_update_hdr(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe, bool match)
static inline void mlx5e_enable_ecn(struct mlx5e_rq *rq, struct sk_buff *skb)
struct mlx5e_rq *rq,
struct mlx5e_rq *rq,
static bool mlx5e_shampo_complete_rx_cqe(struct mlx5e_rq *rq,
static inline bool mlx5e_complete_rx_cqe(struct mlx5e_rq *rq,
struct sk_buff *mlx5e_build_linear_skb(struct mlx5e_rq *rq, void *va,
static void mlx5e_fill_mxbuf(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe,
mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi,
static inline void mlx5e_decompress_cqe(struct mlx5e_rq *rq,
mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi,
static void trigger_report(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
static void mlx5e_handle_rx_err_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
static void mlx5e_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
static void mlx5e_handle_rx_cqe_rep(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
static void mlx5e_handle_rx_cqe_mpwrq_rep(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
static inline void mlx5e_decompress_cqe_no_hash(struct mlx5e_rq *rq,
mlx5e_shampo_fill_skb_data(struct sk_buff *skb, struct mlx5e_rq *rq,
mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
static u32 mlx5e_decompress_enhanced_cqe(struct mlx5e_rq *rq,
mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
mlx5e_shampo_flush_skb(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe, bool match)
static void mlx5e_handle_rx_cqe_mpwrq_shampo(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
static inline u32 mlx5e_decompress_cqes_cont(struct mlx5e_rq *rq,
static void mlx5e_handle_rx_cqe_mpwrq(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
static int mlx5e_rx_cq_process_enhanced_cqe_comp(struct mlx5e_rq *rq,
static int mlx5e_rx_cq_process_basic_cqe_comp(struct mlx5e_rq *rq,
struct mlx5e_rq *rq = container_of(cq, struct mlx5e_rq, cq);
static inline void mlx5i_complete_rx_cqe(struct mlx5e_rq *rq,
static void mlx5i_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
static inline u32 mlx5e_decompress_cqes_start(struct mlx5e_rq *rq,
int mlx5e_rq_set_handlers(struct mlx5e_rq *rq, struct mlx5e_params *params, bool xsk)
static void mlx5e_trap_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
void mlx5e_rq_set_trap_handlers(struct mlx5e_rq *rq, struct mlx5e_params *params)
static inline int mlx5e_get_rx_frag(struct mlx5e_rq *rq,
static inline void mlx5e_put_rx_frag(struct mlx5e_rq *rq,
static inline struct mlx5e_wqe_frag_info *get_frag(struct mlx5e_rq *rq, u16 ix)
static int mlx5e_alloc_rx_wqe(struct mlx5e_rq *rq, struct mlx5e_rx_wqe_cyc *wqe,
static inline void mlx5e_free_rx_wqe(struct mlx5e_rq *rq,
static void mlx5e_dealloc_rx_wqe(struct mlx5e_rq *rq, u16 ix)
static void mlx5e_xsk_free_rx_wqes(struct mlx5e_rq *rq, u16 ix, int wqe_bulk)
static void mlx5e_free_rx_wqes(struct mlx5e_rq *rq, u16 ix, int wqe_bulk)
static int mlx5e_alloc_rx_wqes(struct mlx5e_rq *rq, u16 ix, int wqe_bulk)
static int mlx5e_refill_rx_wqes(struct mlx5e_rq *rq, u16 ix, int wqe_bulk)
mlx5e_add_skb_shared_info_frag(struct mlx5e_rq *rq, struct skb_shared_info *sinfo,
mlx5e_add_skb_frag(struct mlx5e_rq *rq, struct sk_buff *skb,
mlx5e_copy_skb_header(struct mlx5e_rq *rq, struct sk_buff *skb,
mlx5e_free_rx_mpwqe(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi)
static void mlx5e_post_rx_mpwqe(struct mlx5e_rq *rq, u8 n)
static int mlx5e_alloc_rx_mpwqe(struct mlx5e_rq *rq, u16 ix)
mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
static void mlx5e_dealloc_rx_mpwqe(struct mlx5e_rq *rq, u16 ix)
INDIRECT_CALLABLE_SCOPE bool mlx5e_post_rx_wqes(struct mlx5e_rq *rq)
static void mlx5e_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
static void mlx5e_handle_rx_cqe_mpwrq(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
static void mlx5e_handle_rx_cqe_mpwrq_shampo(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
static void mlx5e_reclaim_mpwqe_pages(struct mlx5e_rq *rq, int head,
INDIRECT_CALLABLE_SCOPE bool mlx5e_post_rx_mpwqes(struct mlx5e_rq *rq)
static void mlx5e_read_enhanced_title_slot(struct mlx5e_rq *rq,
struct mlx5e_rq *xskrq = &c->xskrq;
struct mlx5e_rq *rq = &c->rq;
static void mlx5e_handle_rx_dim(struct mlx5e_rq *rq)
static bool mlx5e_napi_xsk_post(struct mlx5e_xdpsq *xsksq, struct mlx5e_rq *xskrq)