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);
|
return (mlx5_wq_cyc_ctr2ix(wq, cc - pc) >= n) || (cc == pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void mlx5e_sq_fetch_wqe(struct mlx5e_txqsq *sq,
|
static inline void *
|
||||||
struct mlx5e_tx_wqe **wqe,
|
mlx5e_sq_fetch_wqe(struct mlx5e_txqsq *sq, size_t size, u16 *pi)
|
||||||
u16 *pi)
|
|
||||||
{
|
{
|
||||||
struct mlx5_wq_cyc *wq = &sq->wq;
|
struct mlx5_wq_cyc *wq = &sq->wq;
|
||||||
|
void *wqe;
|
||||||
|
|
||||||
*pi = mlx5_wq_cyc_ctr2ix(wq, sq->pc);
|
*pi = mlx5_wq_cyc_ctr2ix(wq, sq->pc);
|
||||||
*wqe = mlx5_wq_cyc_get_wqe(wq, *pi);
|
wqe = mlx5_wq_cyc_get_wqe(wq, *pi);
|
||||||
memset(*wqe, 0, sizeof(**wqe));
|
memset(wqe, 0, size);
|
||||||
|
|
||||||
|
return wqe;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct mlx5e_tx_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,
|
mlx5e_tls_complete_sync_skb(skb, nskb, tcp_seq, headln,
|
||||||
cpu_to_be64(info.rcd_sn));
|
cpu_to_be64(info.rcd_sn));
|
||||||
mlx5e_sq_xmit(sq, nskb, *wqe, *pi, true);
|
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;
|
return skb;
|
||||||
|
|
||||||
err_out:
|
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;
|
struct mlx5_wqe_eth_seg cur_eth = wqe->eth;
|
||||||
#endif
|
#endif
|
||||||
mlx5e_fill_sq_frag_edge(sq, wq, pi, contig_wqebbs_room);
|
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
|
#ifdef CONFIG_MLX5_EN_IPSEC
|
||||||
wqe->eth = cur_eth;
|
wqe->eth = cur_eth;
|
||||||
#endif
|
#endif
|
||||||
@ -397,7 +397,7 @@ netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||||||
u16 pi;
|
u16 pi;
|
||||||
|
|
||||||
sq = priv->txq2sq[skb_get_queue_mapping(skb)];
|
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 */
|
/* might send skbs and update wqe and pi */
|
||||||
skb = mlx5e_accel_handle_tx(skb, sq, dev, &wqe, &pi);
|
skb = mlx5e_accel_handle_tx(skb, sq, dev, &wqe, &pi);
|
||||||
|
Loading…
Reference in New Issue
Block a user