mirror of https://gitee.com/openkylin/linux.git
net/mlx5e: Move mlx5e_rq struct declaration
Move struct mlx5e_rq and friends to appear after mlx5e_sq declaration in en.h. We will need this for next patch to move the mlx5e_sq instance into mlx5e_rq struct for XDP SQs. Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1c4bf94045
commit
eba2db2bd2
|
@ -297,115 +297,6 @@ struct mlx5e_cq {
|
||||||
struct mlx5_frag_wq_ctrl wq_ctrl;
|
struct mlx5_frag_wq_ctrl wq_ctrl;
|
||||||
} ____cacheline_aligned_in_smp;
|
} ____cacheline_aligned_in_smp;
|
||||||
|
|
||||||
struct mlx5e_rq;
|
|
||||||
typedef void (*mlx5e_fp_handle_rx_cqe)(struct mlx5e_rq *rq,
|
|
||||||
struct mlx5_cqe64 *cqe);
|
|
||||||
typedef int (*mlx5e_fp_alloc_wqe)(struct mlx5e_rq *rq, struct mlx5e_rx_wqe *wqe,
|
|
||||||
u16 ix);
|
|
||||||
|
|
||||||
typedef void (*mlx5e_fp_dealloc_wqe)(struct mlx5e_rq *rq, u16 ix);
|
|
||||||
|
|
||||||
struct mlx5e_dma_info {
|
|
||||||
struct page *page;
|
|
||||||
dma_addr_t addr;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct mlx5e_rx_am_stats {
|
|
||||||
int ppms; /* packets per msec */
|
|
||||||
int epms; /* events per msec */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct mlx5e_rx_am_sample {
|
|
||||||
ktime_t time;
|
|
||||||
unsigned int pkt_ctr;
|
|
||||||
u16 event_ctr;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct mlx5e_rx_am { /* Adaptive Moderation */
|
|
||||||
u8 state;
|
|
||||||
struct mlx5e_rx_am_stats prev_stats;
|
|
||||||
struct mlx5e_rx_am_sample start_sample;
|
|
||||||
struct work_struct work;
|
|
||||||
u8 profile_ix;
|
|
||||||
u8 mode;
|
|
||||||
u8 tune_state;
|
|
||||||
u8 steps_right;
|
|
||||||
u8 steps_left;
|
|
||||||
u8 tired;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* a single cache unit is capable to serve one napi call (for non-striding rq)
|
|
||||||
* or a MPWQE (for striding rq).
|
|
||||||
*/
|
|
||||||
#define MLX5E_CACHE_UNIT (MLX5_MPWRQ_PAGES_PER_WQE > NAPI_POLL_WEIGHT ? \
|
|
||||||
MLX5_MPWRQ_PAGES_PER_WQE : NAPI_POLL_WEIGHT)
|
|
||||||
#define MLX5E_CACHE_SIZE (2 * roundup_pow_of_two(MLX5E_CACHE_UNIT))
|
|
||||||
struct mlx5e_page_cache {
|
|
||||||
u32 head;
|
|
||||||
u32 tail;
|
|
||||||
struct mlx5e_dma_info page_cache[MLX5E_CACHE_SIZE];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct mlx5e_rq {
|
|
||||||
/* data path */
|
|
||||||
struct mlx5_wq_ll wq;
|
|
||||||
|
|
||||||
union {
|
|
||||||
struct mlx5e_dma_info *dma_info;
|
|
||||||
struct {
|
|
||||||
struct mlx5e_mpw_info *info;
|
|
||||||
void *mtt_no_align;
|
|
||||||
} mpwqe;
|
|
||||||
};
|
|
||||||
struct {
|
|
||||||
u8 page_order;
|
|
||||||
u32 wqe_sz; /* wqe data buffer size */
|
|
||||||
u8 map_dir; /* dma map direction */
|
|
||||||
} buff;
|
|
||||||
__be32 mkey_be;
|
|
||||||
|
|
||||||
struct device *pdev;
|
|
||||||
struct net_device *netdev;
|
|
||||||
struct mlx5e_tstamp *tstamp;
|
|
||||||
struct mlx5e_rq_stats stats;
|
|
||||||
struct mlx5e_cq cq;
|
|
||||||
struct mlx5e_page_cache page_cache;
|
|
||||||
|
|
||||||
mlx5e_fp_handle_rx_cqe handle_rx_cqe;
|
|
||||||
mlx5e_fp_alloc_wqe alloc_wqe;
|
|
||||||
mlx5e_fp_dealloc_wqe dealloc_wqe;
|
|
||||||
|
|
||||||
unsigned long state;
|
|
||||||
int ix;
|
|
||||||
u16 rx_headroom;
|
|
||||||
|
|
||||||
struct mlx5e_rx_am am; /* Adaptive Moderation */
|
|
||||||
struct bpf_prog *xdp_prog;
|
|
||||||
|
|
||||||
/* control */
|
|
||||||
struct mlx5_wq_ctrl wq_ctrl;
|
|
||||||
u8 wq_type;
|
|
||||||
u32 mpwqe_stride_sz;
|
|
||||||
u32 mpwqe_num_strides;
|
|
||||||
u32 rqn;
|
|
||||||
struct mlx5e_channel *channel;
|
|
||||||
struct mlx5e_priv *priv;
|
|
||||||
struct mlx5_core_mkey umr_mkey;
|
|
||||||
} ____cacheline_aligned_in_smp;
|
|
||||||
|
|
||||||
struct mlx5e_umr_dma_info {
|
|
||||||
__be64 *mtt;
|
|
||||||
dma_addr_t mtt_addr;
|
|
||||||
struct mlx5e_dma_info dma_info[MLX5_MPWRQ_PAGES_PER_WQE];
|
|
||||||
struct mlx5e_umr_wqe wqe;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct mlx5e_mpw_info {
|
|
||||||
struct mlx5e_umr_dma_info umr;
|
|
||||||
u16 consumed_strides;
|
|
||||||
u16 skbs_frags[MLX5_MPWRQ_PAGES_PER_WQE];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct mlx5e_tx_wqe_info {
|
struct mlx5e_tx_wqe_info {
|
||||||
u32 num_bytes;
|
u32 num_bytes;
|
||||||
u8 num_wqebbs;
|
u8 num_wqebbs;
|
||||||
|
@ -495,6 +386,112 @@ static inline bool mlx5e_sq_has_room_for(struct mlx5e_sq *sq, u16 n)
|
||||||
(sq->cc == sq->pc));
|
(sq->cc == sq->pc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct mlx5e_dma_info {
|
||||||
|
struct page *page;
|
||||||
|
dma_addr_t addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mlx5e_umr_dma_info {
|
||||||
|
__be64 *mtt;
|
||||||
|
dma_addr_t mtt_addr;
|
||||||
|
struct mlx5e_dma_info dma_info[MLX5_MPWRQ_PAGES_PER_WQE];
|
||||||
|
struct mlx5e_umr_wqe wqe;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mlx5e_mpw_info {
|
||||||
|
struct mlx5e_umr_dma_info umr;
|
||||||
|
u16 consumed_strides;
|
||||||
|
u16 skbs_frags[MLX5_MPWRQ_PAGES_PER_WQE];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mlx5e_rx_am_stats {
|
||||||
|
int ppms; /* packets per msec */
|
||||||
|
int epms; /* events per msec */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mlx5e_rx_am_sample {
|
||||||
|
ktime_t time;
|
||||||
|
unsigned int pkt_ctr;
|
||||||
|
u16 event_ctr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mlx5e_rx_am { /* Adaptive Moderation */
|
||||||
|
u8 state;
|
||||||
|
struct mlx5e_rx_am_stats prev_stats;
|
||||||
|
struct mlx5e_rx_am_sample start_sample;
|
||||||
|
struct work_struct work;
|
||||||
|
u8 profile_ix;
|
||||||
|
u8 mode;
|
||||||
|
u8 tune_state;
|
||||||
|
u8 steps_right;
|
||||||
|
u8 steps_left;
|
||||||
|
u8 tired;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* a single cache unit is capable to serve one napi call (for non-striding rq)
|
||||||
|
* or a MPWQE (for striding rq).
|
||||||
|
*/
|
||||||
|
#define MLX5E_CACHE_UNIT (MLX5_MPWRQ_PAGES_PER_WQE > NAPI_POLL_WEIGHT ? \
|
||||||
|
MLX5_MPWRQ_PAGES_PER_WQE : NAPI_POLL_WEIGHT)
|
||||||
|
#define MLX5E_CACHE_SIZE (2 * roundup_pow_of_two(MLX5E_CACHE_UNIT))
|
||||||
|
struct mlx5e_page_cache {
|
||||||
|
u32 head;
|
||||||
|
u32 tail;
|
||||||
|
struct mlx5e_dma_info page_cache[MLX5E_CACHE_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mlx5e_rq;
|
||||||
|
typedef void (*mlx5e_fp_handle_rx_cqe)(struct mlx5e_rq*, struct mlx5_cqe64*);
|
||||||
|
typedef int (*mlx5e_fp_alloc_wqe)(struct mlx5e_rq*, struct mlx5e_rx_wqe*, u16);
|
||||||
|
typedef void (*mlx5e_fp_dealloc_wqe)(struct mlx5e_rq*, u16);
|
||||||
|
|
||||||
|
struct mlx5e_rq {
|
||||||
|
/* data path */
|
||||||
|
struct mlx5_wq_ll wq;
|
||||||
|
|
||||||
|
union {
|
||||||
|
struct mlx5e_dma_info *dma_info;
|
||||||
|
struct {
|
||||||
|
struct mlx5e_mpw_info *info;
|
||||||
|
void *mtt_no_align;
|
||||||
|
} mpwqe;
|
||||||
|
};
|
||||||
|
struct {
|
||||||
|
u8 page_order;
|
||||||
|
u32 wqe_sz; /* wqe data buffer size */
|
||||||
|
u8 map_dir; /* dma map direction */
|
||||||
|
} buff;
|
||||||
|
__be32 mkey_be;
|
||||||
|
|
||||||
|
struct device *pdev;
|
||||||
|
struct net_device *netdev;
|
||||||
|
struct mlx5e_tstamp *tstamp;
|
||||||
|
struct mlx5e_rq_stats stats;
|
||||||
|
struct mlx5e_cq cq;
|
||||||
|
struct mlx5e_page_cache page_cache;
|
||||||
|
|
||||||
|
mlx5e_fp_handle_rx_cqe handle_rx_cqe;
|
||||||
|
mlx5e_fp_alloc_wqe alloc_wqe;
|
||||||
|
mlx5e_fp_dealloc_wqe dealloc_wqe;
|
||||||
|
|
||||||
|
unsigned long state;
|
||||||
|
int ix;
|
||||||
|
u16 rx_headroom;
|
||||||
|
|
||||||
|
struct mlx5e_rx_am am; /* Adaptive Moderation */
|
||||||
|
struct bpf_prog *xdp_prog;
|
||||||
|
|
||||||
|
/* control */
|
||||||
|
struct mlx5_wq_ctrl wq_ctrl;
|
||||||
|
u8 wq_type;
|
||||||
|
u32 mpwqe_stride_sz;
|
||||||
|
u32 mpwqe_num_strides;
|
||||||
|
u32 rqn;
|
||||||
|
struct mlx5e_channel *channel;
|
||||||
|
struct mlx5e_priv *priv;
|
||||||
|
struct mlx5_core_mkey umr_mkey;
|
||||||
|
} ____cacheline_aligned_in_smp;
|
||||||
|
|
||||||
enum channel_flags {
|
enum channel_flags {
|
||||||
MLX5E_CHANNEL_NAPI_SCHED = 1,
|
MLX5E_CHANNEL_NAPI_SCHED = 1,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue