linux/drivers/net/ethernet/intel/ice
Brett Creeley 3ba7f53f8b ice: don't remove netdev->dev_addr from uc sync list
In some circumstances, such as with bridging, it's possible that the
stack will add the device's own MAC address to its unicast address list.

If, later, the stack deletes this address, the driver will receive a
request to remove this address.

The driver stores its current MAC address as part of the VSI MAC filter
list instead of separately. So, this causes a problem when the device's
MAC address is deleted unexpectedly, which results in traffic failure in
some cases.

The following configuration steps will reproduce the previously
mentioned problem:

> ip link set eth0 up
> ip link add dev br0 type bridge
> ip link set br0 up
> ip addr flush dev eth0
> ip link set eth0 master br0
> echo 1 > /sys/class/net/br0/bridge/vlan_filtering
> modprobe -r veth
> modprobe -r bridge
> ip addr add 192.168.1.100/24 dev eth0

The following ping command fails due to the netdev->dev_addr being
deleted when removing the bridge module.
> ping <link partner>

Fix this by making sure to not delete the netdev->dev_addr during MAC
address sync. After fixing this issue it was noticed that the
netdev_warn() in .set_mac was overly verbose, so make it at
netdev_dbg().

Also, there is a possibility of a race condition between .set_mac and
.set_rx_mode. Fix this by calling netif_addr_lock_bh() and
netif_addr_unlock_bh() on the device's netdev when the netdev->dev_addr
is going to be updated in .set_mac.

Fixes: e94d447866 ("ice: Implement filter sync, NDO operations and bump version")
Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Tested-by: Liang Li <liali@redhat.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2021-08-09 09:59:23 -07:00
..
ice_adminq_cmd.h ice: add support for set/get of driver-stored firmware parameters 2021-06-11 07:38:00 -07:00
ice_arfs.c ice: Delay netdev registration 2021-03-31 14:21:27 -07:00
ice_arfs.h ice: use static inline for dummy functions 2021-06-07 08:59:01 -07:00
ice_base.c ice: enable transmit timestamps for E810 devices 2021-06-11 08:47:41 -07:00
ice_base.h ice: Refactor ice_setup_rx_ctx 2021-06-07 08:58:56 -07:00
ice_common.c ice: register 1588 PTP clock device object for E810 devices 2021-06-11 08:47:30 -07:00
ice_common.h ice: register 1588 PTP clock device object for E810 devices 2021-06-11 08:47:30 -07:00
ice_controlq.c ice: add support for sideband messages 2021-06-11 07:38:00 -07:00
ice_controlq.h ice: add support for sideband messages 2021-06-11 07:38:00 -07:00
ice_dcb_lib.c ice: Fix a memory leak in an error handling path in 'ice_pf_dcb_cfg()' 2021-06-25 11:30:50 -07:00
ice_dcb_lib.h ice: use static inline for dummy functions 2021-06-07 08:59:01 -07:00
ice_dcb_nl.c ice: remove DCBNL_DEVRESET bit from PF state 2021-03-29 10:37:19 -07:00
ice_dcb_nl.h ice: use static inline for dummy functions 2021-06-07 08:59:01 -07:00
ice_dcb.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-17 11:08:07 -07:00
ice_dcb.h ice: replace single-element array used for C struct hack 2020-07-01 16:35:23 -07:00
ice_devids.h ice: fix define for E822 backplane device 2020-02-19 13:39:33 -08:00
ice_devlink.c ice: wait for reset before reporting devlink info 2021-06-07 08:59:01 -07:00
ice_devlink.h ice: refactor devlink_port to be per-VSI 2020-10-09 13:14:19 -07:00
ice_ethtool_fdir.c ice: Drop leading underscores in enum ice_pf_state 2021-04-14 17:00:05 -07:00
ice_ethtool.c ice: enable transmit timestamps for E810 devices 2021-06-11 08:47:41 -07:00
ice_fdir.c ice: Fix prototype warnings 2021-03-23 11:34:02 -07:00
ice_fdir.h ice: Add more FDIR filter type for AVF 2021-03-22 11:32:12 -07:00
ice_flex_pipe.c ice: suppress false cppcheck issues 2021-04-14 17:12:17 -07:00
ice_flex_pipe.h ice: Support to separate GTP-U uplink and downlink 2021-03-22 11:32:12 -07:00
ice_flex_type.h ice: cleanup style issues 2021-03-31 14:21:28 -07:00
ice_flow.c ice: Support RSS configure removal for AVF 2021-04-22 09:26:22 -07:00
ice_flow.h ice: Support RSS configure removal for AVF 2021-04-22 09:26:22 -07:00
ice_fltr.c ice: refactor filter functions 2020-05-21 22:10:04 -07:00
ice_fltr.h ice: refactor filter functions 2020-05-21 22:10:04 -07:00
ice_fw_update.c ice: add error message when pldmfw_flash_image fails 2021-06-07 08:59:01 -07:00
ice_fw_update.h ice: add support for flash update overwrite mask 2020-09-25 17:20:57 -07:00
ice_hw_autogen.h ice: add support for auxiliary input/output pins 2021-06-25 11:30:49 -07:00
ice_idc_int.h ice: Implement iidc operations 2021-05-28 20:11:13 -07:00
ice_idc.c ice: Register auxiliary device to provide RDMA 2021-05-28 20:11:13 -07:00
ice_lag.c ice: Initialize RDMA support 2021-05-28 20:11:13 -07:00
ice_lag.h ice: Add initial support framework for LAG 2021-02-08 16:27:01 -08:00
ice_lan_tx_rx.h ice: report hash type such as L2/L3/L4 2021-06-18 08:59:46 -07:00
ice_lib.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-06-18 19:47:02 -07:00
ice_lib.h ice: enable receive hardware timestamping 2021-06-11 08:47:41 -07:00
ice_main.c ice: don't remove netdev->dev_addr from uc sync list 2021-08-09 09:59:23 -07:00
ice_nvm.c ice: suppress false cppcheck issues 2021-04-14 17:12:17 -07:00
ice_nvm.h ice: display stored UNDI firmware version via devlink info 2021-02-05 11:44:16 -08:00
ice_osdep.h
ice_protocol_type.h ice: Add more advanced protocol support in flow filter 2021-03-22 11:32:12 -07:00
ice_ptp_hw.c ice: remove redundant continue statement in a for-loop 2021-06-17 09:25:06 -07:00
ice_ptp_hw.h ice: add low level PTP clock access functions 2021-06-11 07:38:00 -07:00
ice_ptp.c ice: add support for auxiliary input/output pins 2021-06-25 11:30:49 -07:00
ice_ptp.h ice: add support for auxiliary input/output pins 2021-06-25 11:30:49 -07:00
ice_sbq_cmd.h ice: add support for sideband messages 2021-06-11 07:38:00 -07:00
ice_sched.c ice: remove the VSI info from previous agg 2021-06-25 11:30:49 -07:00
ice_sched.h ice: Use PSM clock frequency to calculate RL profiles 2021-02-08 16:27:01 -08:00
ice_sriov.c ice: warn about potentially malicious VFs 2021-04-22 09:26:22 -07:00
ice_sriov.h ice: warn about potentially malicious VFs 2021-04-22 09:26:22 -07:00
ice_status.h ice: display stored netlist versions via devlink info 2021-02-05 11:43:37 -08:00
ice_switch.c ice: Implement iidc operations 2021-05-28 20:11:13 -07:00
ice_switch.h ice: Remove the repeated declaration 2021-06-17 09:19:59 -07:00
ice_trace.h ice: add tracepoints 2021-06-25 08:32:18 -07:00
ice_txrx_lib.c ice: report hash type such as L2/L3/L4 2021-06-18 08:59:46 -07:00
ice_txrx_lib.h ice: report hash type such as L2/L3/L4 2021-06-18 08:59:46 -07:00
ice_txrx.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2021-06-28 15:28:03 -07:00
ice_txrx.h ice: enable transmit timestamps for E810 devices 2021-06-11 08:47:41 -07:00
ice_type.h ice: add low level PTP clock access functions 2021-06-11 07:38:00 -07:00
ice_virtchnl_allowlist.c ice: Enable RSS configure for AVF 2021-04-22 09:26:22 -07:00
ice_virtchnl_allowlist.h ice: Allow ignoring opcodes on specific VF 2021-04-22 09:26:22 -07:00
ice_virtchnl_fdir.c ice: Drop leading underscores in enum ice_pf_state 2021-04-14 17:00:05 -07:00
ice_virtchnl_fdir.h ice: Check FDIR program status for AVF 2021-03-22 11:32:12 -07:00
ice_virtchnl_pf.c ice: Stop processing VF messages during teardown 2021-08-09 09:59:23 -07:00
ice_virtchnl_pf.h ice: use static inline for dummy functions 2021-06-07 08:59:01 -07:00
ice_xsk.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2021-06-28 15:28:03 -07:00
ice_xsk.h ice: use static inline for dummy functions 2021-06-07 08:59:01 -07:00
ice.h ice: Stop processing VF messages during teardown 2021-08-09 09:59:23 -07:00
Makefile ice: register 1588 PTP clock device object for E810 devices 2021-06-11 08:47:30 -07:00