forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 9999e48639b3cecb08ffb37358bcba3b48161b29
kernel/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib_vlan.c
....@@ -146,6 +146,7 @@
146146 .ndo_open = mlx5i_pkey_open,
147147 .ndo_stop = mlx5i_pkey_close,
148148 .ndo_init = mlx5i_pkey_dev_init,
149
+ .ndo_get_stats64 = mlx5i_get_stats,
149150 .ndo_uninit = mlx5i_pkey_dev_cleanup,
150151 .ndo_change_mtu = mlx5i_pkey_change_mtu,
151152 .ndo_do_ioctl = mlx5i_pkey_ioctl,
....@@ -203,13 +204,13 @@
203204 goto err_release_lock;
204205 }
205206
206
- err = mlx5_fs_add_rx_underlay_qpn(mdev, ipriv->qp.qpn);
207
+ err = mlx5_fs_add_rx_underlay_qpn(mdev, ipriv->qpn);
207208 if (err) {
208209 mlx5_core_warn(mdev, "attach child underlay qp to ft failed, %d\n", err);
209210 goto err_unint_underlay_qp;
210211 }
211212
212
- err = mlx5e_create_tis(mdev, 0 /* tc */, ipriv->qp.qpn, &epriv->tisn[0]);
213
+ err = mlx5i_create_tis(mdev, ipriv->qpn, &epriv->tisn[0][0]);
213214 if (err) {
214215 mlx5_core_warn(mdev, "create child tis failed, %d\n", err);
215216 goto err_remove_rx_uderlay_qp;
....@@ -220,16 +221,16 @@
220221 mlx5_core_warn(mdev, "opening child channels failed, %d\n", err);
221222 goto err_clear_state_opened_flag;
222223 }
223
- mlx5e_refresh_tirs(epriv, false);
224
+ epriv->profile->update_rx(epriv);
224225 mlx5e_activate_priv_channels(epriv);
225226 mutex_unlock(&epriv->state_lock);
226227
227228 return 0;
228229
229230 err_clear_state_opened_flag:
230
- mlx5e_destroy_tis(mdev, epriv->tisn[0]);
231
+ mlx5e_destroy_tis(mdev, epriv->tisn[0][0]);
231232 err_remove_rx_uderlay_qp:
232
- mlx5_fs_remove_rx_underlay_qpn(mdev, ipriv->qp.qpn);
233
+ mlx5_fs_remove_rx_underlay_qpn(mdev, ipriv->qpn);
233234 err_unint_underlay_qp:
234235 mlx5i_uninit_underlay_qp(epriv);
235236 err_release_lock:
....@@ -252,11 +253,11 @@
252253 clear_bit(MLX5E_STATE_OPENED, &priv->state);
253254
254255 netif_carrier_off(priv->netdev);
255
- mlx5_fs_remove_rx_underlay_qpn(mdev, ipriv->qp.qpn);
256
+ mlx5_fs_remove_rx_underlay_qpn(mdev, ipriv->qpn);
256257 mlx5i_uninit_underlay_qp(priv);
257258 mlx5e_deactivate_priv_channels(priv);
258259 mlx5e_close_channels(&priv->channels);
259
- mlx5e_destroy_tis(mdev, priv->tisn[0]);
260
+ mlx5e_destroy_tis(mdev, priv->tisn[0][0]);
260261 unlock:
261262 mutex_unlock(&priv->state_lock);
262263 return 0;
....@@ -274,14 +275,17 @@
274275 }
275276
276277 /* Called directly after IPoIB netdevice was created to initialize SW structs */
277
-static void mlx5i_pkey_init(struct mlx5_core_dev *mdev,
278
- struct net_device *netdev,
279
- const struct mlx5e_profile *profile,
280
- void *ppriv)
278
+static int mlx5i_pkey_init(struct mlx5_core_dev *mdev,
279
+ struct net_device *netdev,
280
+ const struct mlx5e_profile *profile,
281
+ void *ppriv)
281282 {
282283 struct mlx5e_priv *priv = mlx5i_epriv(netdev);
284
+ int err;
283285
284
- mlx5i_init(mdev, netdev, profile, ppriv);
286
+ err = mlx5i_init(mdev, netdev, profile, ppriv);
287
+ if (err)
288
+ return err;
285289
286290 /* Override parent ndo */
287291 netdev->netdev_ops = &mlx5i_pkey_netdev_ops;
....@@ -291,33 +295,32 @@
291295
292296 /* Use dummy rqs */
293297 priv->channels.params.log_rq_mtu_frames = MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE;
298
+
299
+ return 0;
294300 }
295301
296302 /* Called directly before IPoIB netdevice is destroyed to cleanup SW structs */
297303 static void mlx5i_pkey_cleanup(struct mlx5e_priv *priv)
298304 {
299
- /* Do nothing .. */
305
+ mlx5i_cleanup(priv);
300306 }
301307
302308 static int mlx5i_pkey_init_tx(struct mlx5e_priv *priv)
303309 {
304
- struct mlx5i_priv *ipriv = priv->ppriv;
305310 int err;
306311
307
- err = mlx5i_create_underlay_qp(priv->mdev, &ipriv->qp);
308
- if (err) {
312
+ err = mlx5i_create_underlay_qp(priv);
313
+ if (err)
309314 mlx5_core_warn(priv->mdev, "create child underlay QP failed, %d\n", err);
310
- return err;
311
- }
312315
313
- return 0;
316
+ return err;
314317 }
315318
316319 static void mlx5i_pkey_cleanup_tx(struct mlx5e_priv *priv)
317320 {
318321 struct mlx5i_priv *ipriv = priv->ppriv;
319322
320
- mlx5i_destroy_underlay_qp(priv->mdev, &ipriv->qp);
323
+ mlx5i_destroy_underlay_qp(priv->mdev, ipriv->qpn);
321324 }
322325
323326 static int mlx5i_pkey_init_rx(struct mlx5e_priv *priv)
....@@ -344,11 +347,11 @@
344347 .cleanup_rx = mlx5i_pkey_cleanup_rx,
345348 .enable = NULL,
346349 .disable = NULL,
350
+ .update_rx = mlx5i_update_nic_rx,
347351 .update_stats = NULL,
348
- .max_nch = mlx5e_get_max_num_channels,
349
- .rx_handlers.handle_rx_cqe = mlx5i_handle_rx_cqe,
350
- .rx_handlers.handle_rx_cqe_mpwqe = NULL, /* Not supported */
352
+ .rx_handlers = &mlx5i_rx_handlers,
351353 .max_tc = MLX5I_MAX_NUM_TC,
354
+ .rq_groups = MLX5E_NUM_RQ_GROUPS(REGULAR),
352355 };
353356
354357 const struct mlx5e_profile *mlx5i_pkey_get_profile(void)