Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[linux-2.6-microblaze.git] / drivers / net / ethernet / mellanox / mlx5 / core / en_main.c
index 2a56e66..09ed7f5 100644 (file)
@@ -63,6 +63,7 @@
 #include "en/xsk/rx.h"
 #include "en/xsk/tx.h"
 #include "en/hv_vhca_stats.h"
+#include "lib/mlx5.h"
 
 
 bool mlx5e_check_fragmented_striding_rq_cap(struct mlx5_core_dev *mdev)
@@ -408,12 +409,9 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
                rq->stats = &c->priv->channel_stats[c->ix].rq;
        INIT_WORK(&rq->recover_work, mlx5e_rq_err_cqe_work);
 
-       rq->xdp_prog = params->xdp_prog ? bpf_prog_inc(params->xdp_prog) : NULL;
-       if (IS_ERR(rq->xdp_prog)) {
-               err = PTR_ERR(rq->xdp_prog);
-               rq->xdp_prog = NULL;
-               goto err_rq_wq_destroy;
-       }
+       if (params->xdp_prog)
+               bpf_prog_inc(params->xdp_prog);
+       rq->xdp_prog = params->xdp_prog;
 
        rq_xdp_ix = rq->ix;
        if (xsk)
@@ -4409,16 +4407,11 @@ static int mlx5e_xdp_set(struct net_device *netdev, struct bpf_prog *prog)
        /* no need for full reset when exchanging programs */
        reset = (!priv->channels.params.xdp_prog || !prog);
 
-       if (was_opened && !reset) {
+       if (was_opened && !reset)
                /* num_channels is invariant here, so we can take the
                 * batched reference right upfront.
                 */
-               prog = bpf_prog_add(prog, priv->channels.num);
-               if (IS_ERR(prog)) {
-                       err = PTR_ERR(prog);
-                       goto unlock;
-               }
-       }
+               bpf_prog_add(prog, priv->channels.num);
 
        if (was_opened && reset) {
                struct mlx5e_channels new_channels = {};
@@ -5430,6 +5423,7 @@ static void *mlx5e_add(struct mlx5_core_dev *mdev)
                return NULL;
        }
 
+       dev_net_set(netdev, mlx5_core_net(mdev));
        priv = netdev_priv(netdev);
 
        err = mlx5e_attach(mdev, priv);