ice: Check if unicast MAC exists before setting VF MAC
authorBrett Creeley <brett.creeley@intel.com>
Sat, 16 May 2020 00:36:33 +0000 (17:36 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 23 May 2020 05:20:22 +0000 (22:20 -0700)
commit47ebc7b02485aa0c0e18f96368e6f6958735fcea
tree44dc2825c5e8b83de4f8456f68d17bb5a9388002
parent4dc926d3a59e73b8c4adf51b261f1a1bbd48a989
ice: Check if unicast MAC exists before setting VF MAC

Currently if a unicast MAC is set via ndo_set_vf_mac, the PF driver will
set the VF's dflt_lan_addr.addr once some basic checks have passed. The
VF is then reset. During reset the PF driver will attempt to program the
VF's MAC from the dflt_lan_addr.addr field. This fails when the MAC
already exists on the PF's switch.

This is causing the VF to be completely disabled until removing/enabling
any VFs via sysfs.

Fix this by checking if the unicast MAC exists before triggering a VF
reset directly in ndo_set_vf_mac. Also, add a check if the unicast MAC
is set to the same value as before and return 0 if that is the case.

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c