mirror of https://gitee.com/openkylin/linux.git
net/mlx5e: Tx, Make SQ WQE fetch function type generic
Change mlx5e_sq_fetch_wqe to be agnostic to the Work Queue Element (WQE) type. Before this patch, it was specific for struct mlx5e_tx_wqe. In order to allow the change, the function now returns the generic void pointer, and gets the WQE size to do the zero memset. Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
740114a87e
commit
fd1b225963
|
@ -14,15 +14,17 @@ mlx5e_wqc_has_room_for(struct mlx5_wq_cyc *wq, u16 cc, u16 pc, u16 n)
|
|||
return (mlx5_wq_cyc_ctr2ix(wq, cc - pc) >= n) || (cc == pc);
|
||||
}
|
||||
|
||||
static inline void mlx5e_sq_fetch_wqe(struct mlx5e_txqsq *sq,
|
||||
struct mlx5e_tx_wqe **wqe,
|
||||
u16 *pi)
|
||||
static inline void *
|
||||
mlx5e_sq_fetch_wqe(struct mlx5e_txqsq *sq, size_t size, u16 *pi)
|
||||
{
|
||||
struct mlx5_wq_cyc *wq = &sq->wq;
|
||||
void *wqe;
|
||||
|
||||
*pi = mlx5_wq_cyc_ctr2ix(wq, sq->pc);
|
||||
*wqe = mlx5_wq_cyc_get_wqe(wq, *pi);
|
||||
memset(*wqe, 0, sizeof(**wqe));
|
||||
wqe = mlx5_wq_cyc_get_wqe(wq, *pi);
|
||||
memset(wqe, 0, size);
|
||||
|
||||
return wqe;
|
||||
}
|
||||
|
||||
static inline struct mlx5e_tx_wqe *
|
||||
|
|
|
@ -248,7 +248,7 @@ mlx5e_tls_handle_ooo(struct mlx5e_tls_offload_context_tx *context,
|
|||
mlx5e_tls_complete_sync_skb(skb, nskb, tcp_seq, headln,
|
||||
cpu_to_be64(info.rcd_sn));
|
||||
mlx5e_sq_xmit(sq, nskb, *wqe, *pi, true);
|
||||
mlx5e_sq_fetch_wqe(sq, wqe, pi);
|
||||
*wqe = mlx5e_sq_fetch_wqe(sq, sizeof(**wqe), pi);
|
||||
return skb;
|
||||
|
||||
err_out:
|
||||
|
|
|
@ -335,7 +335,7 @@ netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
|
|||
struct mlx5_wqe_eth_seg cur_eth = wqe->eth;
|
||||
#endif
|
||||
mlx5e_fill_sq_frag_edge(sq, wq, pi, contig_wqebbs_room);
|
||||
mlx5e_sq_fetch_wqe(sq, &wqe, &pi);
|
||||
wqe = mlx5e_sq_fetch_wqe(sq, sizeof(*wqe), &pi);
|
||||
#ifdef CONFIG_MLX5_EN_IPSEC
|
||||
wqe->eth = cur_eth;
|
||||
#endif
|
||||
|
@ -397,7 +397,7 @@ netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
u16 pi;
|
||||
|
||||
sq = priv->txq2sq[skb_get_queue_mapping(skb)];
|
||||
mlx5e_sq_fetch_wqe(sq, &wqe, &pi);
|
||||
wqe = mlx5e_sq_fetch_wqe(sq, sizeof(*wqe), &pi);
|
||||
|
||||
/* might send skbs and update wqe and pi */
|
||||
skb = mlx5e_accel_handle_tx(skb, sq, dev, &wqe, &pi);
|
||||
|
|
Loading…
Reference in New Issue