Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorDavid S. Miller <davem@davemloft.net>
Fri, 21 Feb 2020 21:39:34 +0000 (13:39 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Feb 2020 21:39:34 +0000 (13:39 -0800)
Conflict resolution of ice_virtchnl_pf.c based upon work by
Stephen Rothwell.

Signed-off-by: David S. Miller <davem@davemloft.net>
1  2 
drivers/net/bonding/bond_main.c
drivers/net/ethernet/intel/ice/ice_ethtool.c
drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h
drivers/net/ethernet/mellanox/mlx5/core/en/health.c
drivers/net/phy/broadcom.c
net/core/rtnetlink.c
net/netlink/af_netlink.c
net/openvswitch/flow_netlink.c
net/sched/cls_flower.c

Simple merge
@@@ -2791,8 -2738,7 +2833,8 @@@ ice_set_vf_port_vlan(struct net_device 
        struct ice_vsi *vsi;
        struct device *dev;
        struct ice_vf *vf;
-       int ret = 0;
 +      u16 vlanprio;
+       int ret;
  
        dev = ice_pf_to_dev(pf);
        if (ice_validate_vf_id(pf, vf_id))
  
        vf = &pf->vf[vf_id];
        vsi = pf->vsi[vf->lan_vsi_idx];
-       if (ice_check_vf_init(pf, vf))
-               return -EBUSY;
+       ret = ice_check_vf_ready_for_cfg(vf);
+       if (ret)
+               return ret;
  
 -      if (le16_to_cpu(vsi->info.pvid) == vlanprio) {
 +      vlanprio = vlan_id | (qos << VLAN_PRIO_SHIFT);
 +
 +      if (vf->port_vlan_info == vlanprio) {
                /* duplicate request, so just return success */
                dev_dbg(dev, "Duplicate pvid %d request\n", vlanprio);
-               return ret;
+               return 0;
        }
  
 -      /* If PVID, then remove all filters on the old VLAN */
 -      if (vsi->info.pvid)
 -              ice_vsi_kill_vlan(vsi, (le16_to_cpu(vsi->info.pvid) &
 -                                VLAN_VID_MASK));
 -
        if (vlan_id || qos) {
 +              /* remove VLAN 0 filter set by default when transitioning from
 +               * no port VLAN to a port VLAN. No change to old port VLAN on
 +               * failure.
 +               */
 +              ret = ice_vsi_kill_vlan(vsi, 0);
 +              if (ret)
 +                      return ret;
                ret = ice_vsi_manage_pvid(vsi, vlanprio, true);
                if (ret)
                        return ret;
        } else {
 -              ice_vsi_manage_pvid(vsi, 0, false);
 -              vsi->info.pvid = 0;
 +              /* add VLAN 0 filter back when transitioning from port VLAN to
 +               * no port VLAN. No change to old port VLAN on failure.
 +               */
 +              ret = ice_vsi_add_vlan(vsi, 0);
 +              if (ret)
 +                      return ret;
 +              ret = ice_vsi_manage_pvid(vsi, 0, false);
 +              if (ret)
-                       goto error_manage_pvid;
++                      return ret;
        }
  
        if (vlan_id) {
                dev_info(dev, "Setting VLAN %d, QoS 0x%x on VF %d\n",
                         vlan_id, qos, vf_id);
  
 -              /* add new VLAN filter for each MAC */
 +              /* add VLAN filter for the port VLAN */
                ret = ice_vsi_add_vlan(vsi, vlan_id);
                if (ret)
-                       goto error_manage_pvid;
+                       return ret;
        }
 +      /* remove old port VLAN filter with valid VLAN ID or QoS fields */
 +      if (vf->port_vlan_info)
 +              ice_vsi_kill_vlan(vsi, vf->port_vlan_info & VLAN_VID_MASK);
  
 -      /* The Port VLAN needs to be saved across resets the same as the
 -       * default LAN MAC address.
 -       */
 -      vf->port_vlan_id = le16_to_cpu(vsi->info.pvid);
 +      /* keep port VLAN information persistent on resets */
 +      vf->port_vlan_info = le16_to_cpu(vsi->info.pvid);
  
- error_manage_pvid:
-       return ret;
+       return 0;
  }
  
  /**
@@@ -198,10 -197,10 +198,10 @@@ int mlx5e_health_report(struct mlx5e_pr
                        struct devlink_health_reporter *reporter, char *err_str,
                        struct mlx5e_err_ctx *err_ctx)
  {
 -      netdev_err(priv->netdev, err_str);
 +      netdev_err(priv->netdev, "%s\n", err_str);
  
        if (!reporter)
-               return err_ctx->recover(&err_ctx->ctx);
+               return err_ctx->recover(err_ctx->ctx);
  
        return devlink_health_report(reporter, err_str, err_ctx);
  }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge