• Jacob Keller's avatar
    i40e: set broadcast promiscuous mode for each active VLAN · 435c084a
    Jacob Keller authored
    A previous workaround added to ensure receipt of all broadcast frames
    incorrectly set the broadcast promiscuous mode unconditionally
    regardless of active VLAN status.
    
    Replace this partial workaround with a complete solution that sets the
    broadcast promiscuous filters in i40e_sync_vsi_filters. This new method
    sets the promiscuous mode based on when broadcast filters are added or
    removed.
    
    I40E_VLAN_ANY will request a broadcast filter for all VLANs, (as we're
    in untagged mode) while a broadcast filter on a specific VLAN will only
    request broadcast for that VLAN.
    
    Thus, we restore addition of broadcast filter to the array, but we add
    special handling for these such that they enable the broadcast
    promiscuous mode instead of being sent as regular filters.
    
    The end result is that we will correctly receive all broadcast packets
    (even those with a *source* address equal to the broadcast address) but
    will not receive packets for which we don't have an active VLAN filter.
    
    Change-ID: I7d0585c5cec1a5bf55bf533b42e5e817d5db6a2d
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    435c084a
i40e_main.c 323 KB