net/mlx5e: Tx, Make SQ WQE fetch function type generic
authorTariq Toukan <tariqt@mellanox.com>
Fri, 5 Jul 2019 15:30:17 +0000 (18:30 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 5 Jul 2019 23:29:19 +0000 (16:29 -0700)
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>
drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h
drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_rxtx.c
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c

index bd41f89..1280f41 100644 (file)
@@ -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 *
index 439bf59..7d191d9 100644 (file)
@@ -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:
index b1a163e..983ea62 100644 (file)
@@ -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);