|
@@ -982,6 +982,7 @@ static int mlx5e_open_channel(struct mlx5e_priv *priv, int ix,
|
|
|
mlx5e_build_channeltc_to_txq_map(priv, ix);
|
|
|
|
|
|
netif_napi_add(netdev, &c->napi, mlx5e_napi_poll, 64);
|
|
|
+ napi_hash_add(&c->napi);
|
|
|
|
|
|
err = mlx5e_open_tx_cqs(c, cparam);
|
|
|
if (err)
|
|
@@ -1020,6 +1021,7 @@ err_close_tx_cqs:
|
|
|
|
|
|
err_napi_del:
|
|
|
netif_napi_del(&c->napi);
|
|
|
+ napi_hash_del(&c->napi);
|
|
|
kfree(c);
|
|
|
|
|
|
return err;
|
|
@@ -1033,6 +1035,10 @@ static void mlx5e_close_channel(struct mlx5e_channel *c)
|
|
|
mlx5e_close_cq(&c->rq.cq);
|
|
|
mlx5e_close_tx_cqs(c);
|
|
|
netif_napi_del(&c->napi);
|
|
|
+
|
|
|
+ napi_hash_del(&c->napi);
|
|
|
+ synchronize_rcu();
|
|
|
+
|
|
|
kfree(c);
|
|
|
}
|
|
|
|