net/mlx5e: Re-work TIS creation functions
authorTariq Toukan <tariqt@mellanox.com>
Fri, 5 Jul 2019 15:30:20 +0000 (18:30 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 5 Jul 2019 23:29:19 +0000 (16:29 -0700)
Let the EN TIS creation function (mlx5e_create_tis) be responsible
for applying common mdev related fields.
Other specific fields must be set by the caller and passed within
the inbox.

Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Reviewed-by: Boris Pismenny <borisp@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.h
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.h
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib_vlan.c

index 09c43c9f3b4a1f27ed61d92b215f481d48fde21b..d3d2733917ff7ffcf85e0a7cd3055c34b6030813 100644 (file)
@@ -1053,8 +1053,7 @@ int mlx5e_create_direct_tirs(struct mlx5e_priv *priv, struct mlx5e_tir *tirs);
 void mlx5e_destroy_direct_tirs(struct mlx5e_priv *priv, struct mlx5e_tir *tirs);
 void mlx5e_destroy_rqt(struct mlx5e_priv *priv, struct mlx5e_rqt *rqt);
 
-int mlx5e_create_tis(struct mlx5_core_dev *mdev, int tc,
-                    u32 underlay_qpn, u32 *tisn);
+int mlx5e_create_tis(struct mlx5_core_dev *mdev, void *in, u32 *tisn);
 void mlx5e_destroy_tis(struct mlx5_core_dev *mdev, u32 tisn);
 
 int mlx5e_create_tises(struct mlx5e_priv *priv);
index edbedb1c85f8f95b8743d06dc75b69c8f8d71f1c..075496de00e53d75973d955bd0841948561b5a7a 100644 (file)
@@ -3150,20 +3150,16 @@ void mlx5e_close_drop_rq(struct mlx5e_rq *drop_rq)
        mlx5e_free_cq(&drop_rq->cq);
 }
 
-int mlx5e_create_tis(struct mlx5_core_dev *mdev, int tc,
-                    u32 underlay_qpn, u32 *tisn)
+int mlx5e_create_tis(struct mlx5_core_dev *mdev, void *in, u32 *tisn)
 {
-       u32 in[MLX5_ST_SZ_DW(create_tis_in)] = {0};
        void *tisc = MLX5_ADDR_OF(create_tis_in, in, ctx);
 
-       MLX5_SET(tisc, tisc, prio, tc << 1);
-       MLX5_SET(tisc, tisc, underlay_qpn, underlay_qpn);
        MLX5_SET(tisc, tisc, transport_domain, mdev->mlx5e_res.td.tdn);
 
        if (mlx5_lag_is_lacp_owner(mdev))
                MLX5_SET(tisc, tisc, strict_lag_tx_port_affinity, 1);
 
-       return mlx5_core_create_tis(mdev, in, sizeof(in), tisn);
+       return mlx5_core_create_tis(mdev, in, MLX5_ST_SZ_BYTES(create_tis_in), tisn);
 }
 
 void mlx5e_destroy_tis(struct mlx5_core_dev *mdev, u32 tisn)
@@ -3177,7 +3173,14 @@ int mlx5e_create_tises(struct mlx5e_priv *priv)
        int tc;
 
        for (tc = 0; tc < priv->profile->max_tc; tc++) {
-               err = mlx5e_create_tis(priv->mdev, tc, 0, &priv->tisn[tc]);
+               u32 in[MLX5_ST_SZ_DW(create_tis_in)] = {};
+               void *tisc;
+
+               tisc = MLX5_ADDR_OF(create_tis_in, in, ctx);
+
+               MLX5_SET(tisc, tisc, prio, tc << 1);
+
+               err = mlx5e_create_tis(priv->mdev, in, &priv->tisn[tc]);
                if (err)
                        goto err_close_tises;
        }
index 00e66c3772ccd06f462385ff9dc0a9253944bb1d..faf197d537430ee3633485b11b859cecfc81f750 100644 (file)
@@ -258,6 +258,18 @@ void mlx5i_destroy_underlay_qp(struct mlx5_core_dev *mdev, struct mlx5_core_qp *
        mlx5_core_destroy_qp(mdev, qp);
 }
 
+int mlx5i_create_tis(struct mlx5_core_dev *mdev, u32 underlay_qpn, u32 *tisn)
+{
+       u32 in[MLX5_ST_SZ_DW(create_tis_in)] = {};
+       void *tisc;
+
+       tisc = MLX5_ADDR_OF(create_tis_in, in, ctx);
+
+       MLX5_SET(tisc, tisc, underlay_qpn, underlay_qpn);
+
+       return mlx5e_create_tis(mdev, in, tisn);
+}
+
 static int mlx5i_init_tx(struct mlx5e_priv *priv)
 {
        struct mlx5i_priv *ipriv = priv->ppriv;
@@ -269,7 +281,7 @@ static int mlx5i_init_tx(struct mlx5e_priv *priv)
                return err;
        }
 
-       err = mlx5e_create_tis(priv->mdev, 0 /* tc */, ipriv->qp.qpn, &priv->tisn[0]);
+       err = mlx5i_create_tis(priv->mdev, ipriv->qp.qpn, &priv->tisn[0]);
        if (err) {
                mlx5_core_warn(priv->mdev, "create tis failed, %d\n", err);
                goto err_destroy_underlay_qp;
index e19ba3fcd1b76eae75c67359d07ea7f4f0db8f58..c87962cab9219fd808068b227d3a29f43dd04df2 100644 (file)
@@ -59,6 +59,8 @@ struct mlx5i_priv {
        char  *mlx5e_priv[0];
 };
 
+int mlx5i_create_tis(struct mlx5_core_dev *mdev, u32 underlay_qpn, u32 *tisn);
+
 /* Underlay QP create/destroy functions */
 int mlx5i_create_underlay_qp(struct mlx5_core_dev *mdev, struct mlx5_core_qp *qp);
 void mlx5i_destroy_underlay_qp(struct mlx5_core_dev *mdev, struct mlx5_core_qp *qp);
index e05186ada721aed2ea2ad0972dc7f2ce79f38617..6e56fa769d2eb97b593b2c3da4c5aa5c40c1afdc 100644 (file)
@@ -210,7 +210,7 @@ static int mlx5i_pkey_open(struct net_device *netdev)
                goto err_unint_underlay_qp;
        }
 
-       err = mlx5e_create_tis(mdev, 0 /* tc */, ipriv->qp.qpn, &epriv->tisn[0]);
+       err = mlx5i_create_tis(mdev, ipriv->qp.qpn, &epriv->tisn[0]);
        if (err) {
                mlx5_core_warn(mdev, "create child tis failed, %d\n", err);
                goto err_remove_rx_uderlay_qp;