• Shannon Nelson's avatar
    ionic: handle vlan id overflow · 9b0b6ba6
    Shannon Nelson authored
    Add vlans to the existing rx_filter_sync mechanics currently
    used for managing mac filters.
    
    Older versions of our firmware had no enforced limits on the
    number of vlans that the LIF could request, but requesting large
    numbers of vlans caused issues in FW memory management, so an
    arbitrary limit was added in the FW.  The FW now returns -ENOSPC
    when it hits that limit, which the driver needs to handle.
    
    Unfortunately, the FW doesn't advertise the vlan id limit,
    as it does with mac filters, so the driver won't know the
    limit until it bumps into it.  We'll grab the current vlan id
    count and use that as the limit from there on and thus prevent
    getting any more -ENOSPC errors.
    
    Just as is done for the mac filters, the device puts the device
    into promiscuous mode when -ENOSPC is seen for vlan ids, and
    the driver will track the vlans that aren't synced to the FW.
    When vlans are removed, the driver will retry the un-synced
    vlans.  If all outstanding vlans are synced, the promiscuous
    mode will be disabled.
    Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9b0b6ba6
ionic_rx_filter.h 1.8 KB