OSDN Git Service

i40e: broadcast filters can trigger overflow promiscuous
authorAlan Brady <alan.brady@intel.com>
Mon, 22 Jan 2018 17:00:33 +0000 (12:00 -0500)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 13 Feb 2018 19:40:10 +0000 (11:40 -0800)
When adding a bunch of VLANs to all the ports on a device, it's possible
to run out of space for broadcast filters.  The driver should trigger
overflow promiscuous in this circumstance to prevent traffic from being
unexpectedly dropped.

Signed-off-by: Alan Brady <alan.brady@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 0f256ee..d96ecfc 100644 (file)
@@ -2177,11 +2177,13 @@ i40e_aqc_broadcast_filter(struct i40e_vsi *vsi, const char *vsi_name,
                                                            NULL);
        }
 
-       if (aq_ret)
+       if (aq_ret) {
+               set_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
                dev_warn(&vsi->back->pdev->dev,
-                        "Error %s setting broadcast promiscuous mode on %s\n",
+                        "Error %s, forcing overflow promiscuous on %s\n",
                         i40e_aq_str(hw, hw->aq.asq_last_status),
                         vsi_name);
+       }
 
        return aq_ret;
 }