mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
net/mlx5: Refactor fragmented buffer struct fields and init flow
Take struct mlx5_frag_buf out of mlx5_frag_buf_ctrl, as it is not needed to manage and control the datapath of the fragmented buffers API. struct mlx5_frag_buf contains control info to manage the allocation and de-allocation of the fragmented buffer. Its fields are not relevant for datapath, so here I take them out of the struct mlx5_frag_buf_ctrl, except for the fragments array itself. In addition, modified mlx5_fill_fbc to initialise the frags pointers as well. This implies that the buffer must be allocated before the function is called. A set of type-specific *_get_byte_size() functions are replaced by a generic one. Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
3a3295bfa6
commit
4972e6fa3a
4 changed files with 69 additions and 105 deletions
|
@ -357,7 +357,7 @@ struct mlx5_frag_buf {
|
|||
};
|
||||
|
||||
struct mlx5_frag_buf_ctrl {
|
||||
struct mlx5_frag_buf frag_buf;
|
||||
struct mlx5_buf_list *frags;
|
||||
u32 sz_m1;
|
||||
u16 frag_sz_m1;
|
||||
u16 strides_offset;
|
||||
|
@ -994,10 +994,12 @@ static inline u32 mlx5_base_mkey(const u32 key)
|
|||
return key & 0xffffff00u;
|
||||
}
|
||||
|
||||
static inline void mlx5_fill_fbc_offset(u8 log_stride, u8 log_sz,
|
||||
static inline void mlx5_init_fbc_offset(struct mlx5_buf_list *frags,
|
||||
u8 log_stride, u8 log_sz,
|
||||
u16 strides_offset,
|
||||
struct mlx5_frag_buf_ctrl *fbc)
|
||||
{
|
||||
fbc->frags = frags;
|
||||
fbc->log_stride = log_stride;
|
||||
fbc->log_sz = log_sz;
|
||||
fbc->sz_m1 = (1 << fbc->log_sz) - 1;
|
||||
|
@ -1006,18 +1008,11 @@ static inline void mlx5_fill_fbc_offset(u8 log_stride, u8 log_sz,
|
|||
fbc->strides_offset = strides_offset;
|
||||
}
|
||||
|
||||
static inline void mlx5_fill_fbc(u8 log_stride, u8 log_sz,
|
||||
static inline void mlx5_init_fbc(struct mlx5_buf_list *frags,
|
||||
u8 log_stride, u8 log_sz,
|
||||
struct mlx5_frag_buf_ctrl *fbc)
|
||||
{
|
||||
mlx5_fill_fbc_offset(log_stride, log_sz, 0, fbc);
|
||||
}
|
||||
|
||||
static inline void mlx5_core_init_cq_frag_buf(struct mlx5_frag_buf_ctrl *fbc,
|
||||
void *cqc)
|
||||
{
|
||||
mlx5_fill_fbc(6 + MLX5_GET(cqc, cqc, cqe_sz),
|
||||
MLX5_GET(cqc, cqc, log_cq_size),
|
||||
fbc);
|
||||
mlx5_init_fbc_offset(frags, log_stride, log_sz, 0, fbc);
|
||||
}
|
||||
|
||||
static inline void *mlx5_frag_buf_get_wqe(struct mlx5_frag_buf_ctrl *fbc,
|
||||
|
@ -1028,8 +1023,7 @@ static inline void *mlx5_frag_buf_get_wqe(struct mlx5_frag_buf_ctrl *fbc,
|
|||
ix += fbc->strides_offset;
|
||||
frag = ix >> fbc->log_frag_strides;
|
||||
|
||||
return fbc->frag_buf.frags[frag].buf +
|
||||
((fbc->frag_sz_m1 & ix) << fbc->log_stride);
|
||||
return fbc->frags[frag].buf + ((fbc->frag_sz_m1 & ix) << fbc->log_stride);
|
||||
}
|
||||
|
||||
int mlx5_cmd_init(struct mlx5_core_dev *dev);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue