Merge tag 'nfs-for-4.19-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
[sfrench/cifs-2.6.git] / drivers / net / ethernet / mellanox / mlx5 / core / en_rep.c
index 2b8040a3cdbd7c2f74bb854bd8141ba379ea37de..c9cc9747d21d187810c9f93efaf0937bb9c1ebe2 100644 (file)
@@ -698,8 +698,8 @@ static int mlx5e_rep_open(struct net_device *dev)
                goto unlock;
 
        if (!mlx5_modify_vport_admin_state(priv->mdev,
-                                          MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
-                                          rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_UP))
+                                          MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
+                                          rep->vport, MLX5_VPORT_ADMIN_STATE_UP))
                netif_carrier_on(dev);
 
 unlock:
@@ -716,8 +716,8 @@ static int mlx5e_rep_close(struct net_device *dev)
 
        mutex_lock(&priv->state_lock);
        mlx5_modify_vport_admin_state(priv->mdev,
-                                     MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
-                                     rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_DOWN);
+                                     MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
+                                     rep->vport, MLX5_VPORT_ADMIN_STATE_DOWN);
        ret = mlx5e_close_locked(dev);
        mutex_unlock(&priv->state_lock);
        return ret;
@@ -797,7 +797,7 @@ static int mlx5e_rep_setup_tc_block(struct net_device *dev,
        switch (f->command) {
        case TC_BLOCK_BIND:
                return tcf_block_cb_register(f->block, mlx5e_rep_setup_tc_cb,
-                                            priv, priv);
+                                            priv, priv, f->extack);
        case TC_BLOCK_UNBIND:
                tcf_block_cb_unregister(f->block, mlx5e_rep_setup_tc_cb, priv);
                return 0;
@@ -897,6 +897,9 @@ mlx5e_rep_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
 {
        struct mlx5e_priv *priv = netdev_priv(dev);
 
+       /* update HW stats in background for next time */
+       queue_delayed_work(priv->wq, &priv->update_stats_work, 0);
+
        memcpy(stats, &priv->stats.vf_vport, sizeof(*stats));
 }