ice: always report VF overflowing mailbox even without PF VSI
authorJacob Keller <jacob.e.keller@intel.com>
Wed, 22 Feb 2023 17:09:15 +0000 (09:09 -0800)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 13 Mar 2023 18:06:06 +0000 (11:06 -0700)
In ice_is_malicious_vf we report a message warning the system administrator
when a VF is potentially spamming the PF with asynchronous messages that
could overflow the PF mailbox.

The specific message was requested by our customer support team to include
the VF and PF MAC address. In some cases we may not be able to locate the
PF VSI to obtain the MAC address for the PF. The current implementation
discards the message entirely in this case. Fix this to instead print a
zero address in that case so that we always print something here. Note that
dev_warn will also include the PCI device information allowing another
mechanism for determining on which PF the potentially malicious VF belongs.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Tested-by: Marek Szlosek <marek.szlosek@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_sriov.c

index 79159cb..185673a 100644 (file)
@@ -1817,11 +1817,11 @@ ice_is_malicious_vf(struct ice_pf *pf, struct ice_rq_event_info *event,
 
        if (report_malvf) {
                struct ice_vsi *pf_vsi = ice_get_main_vsi(pf);
+               u8 zero_addr[ETH_ALEN] = {};
 
-               if (pf_vsi)
-                       dev_warn(dev, "VF MAC %pM on PF MAC %pM is generating asynchronous messages and may be overflowing the PF message queue. Please see the Adapter User Guide for more information\n",
-                                &vf->dev_lan_addr[0],
-                                pf_vsi->netdev->dev_addr);
+               dev_warn(dev, "VF MAC %pM on PF MAC %pM is generating asynchronous messages and may be overflowing the PF message queue. Please see the Adapter User Guide for more information\n",
+                        &vf->dev_lan_addr[0],
+                        pf_vsi ? pf_vsi->netdev->dev_addr : zero_addr);
        }
 
 out_put_vf: