From mboxrd@z Thu Jan 1 00:00:00 1970 From: Saeed Mahameed Subject: [net-next 01/17] net/mlx5e: IPOIB, Fix overflowing SQ WQE memset Date: Fri, 1 Jun 2018 17:05:28 -0700 Message-ID: <20180602000544.18717-2-saeedm@mellanox.com> References: <20180602000544.18717-1-saeedm@mellanox.com> Cc: netdev@vger.kernel.org, Tariq Toukan , Saeed Mahameed To: "David S. Miller" Return-path: Received: from mail-il-dmz.mellanox.com ([193.47.165.129]:59728 "EHLO mellanox.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751424AbeFBAZy (ORCPT ); Fri, 1 Jun 2018 20:25:54 -0400 In-Reply-To: <20180602000544.18717-1-saeedm@mellanox.com> Sender: netdev-owner@vger.kernel.org List-ID: From: Tariq Toukan IPoIB WQE size is larger than a single WQEBB. Must not fetch the WQE, and surely not memset it, until it is guaranteed that there are enough WQEBBs available before getting to SQ/frag edge. Fixes: 043dc78ecf07 ("net/mlx5e: TX, Use actual WQE size for SQ edge fill") Signed-off-by: Tariq Toukan Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c index aafd75257fd0..9829ee02de31 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c @@ -653,8 +653,6 @@ netdev_tx_t mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb, int num_dma; __be16 mss; - mlx5i_sq_fetch_wqe(sq, &wqe, &pi); - /* Calc ihs and ds cnt, no writes to wqe yet */ ds_cnt = sizeof(*wqe) / MLX5_SEND_WQE_DS; if (skb_is_gso(skb)) { @@ -686,10 +684,12 @@ netdev_tx_t mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb, num_wqebbs = DIV_ROUND_UP(ds_cnt, MLX5_SEND_WQEBB_NUM_DS); frag_pi = mlx5_wq_cyc_ctr2fragix(wq, sq->pc); if (unlikely(frag_pi + num_wqebbs > mlx5_wq_cyc_get_frag_size(wq))) { + pi = mlx5_wq_cyc_ctr2ix(wq, sq->pc); mlx5e_fill_sq_frag_edge(sq, wq, pi, frag_pi); - mlx5i_sq_fetch_wqe(sq, &wqe, &pi); } + mlx5i_sq_fetch_wqe(sq, &wqe, &pi); + /* fill wqe */ wi = &sq->db.wqe_info[pi]; cseg = &wqe->ctrl; -- 2.17.0