• Andre Guedes's avatar
    igc: Fix NFC rules restoration · d957c601
    Andre Guedes authored
    When network interface is brought up, the driver re-enables the NFC
    rules previously configured. However, this is done in reverse order
    the rules were added and hardware filters are configured differently.
    
    For example, consider the following rules:
    
    $ ethtool -N eth0 flow-type ether dst 00:00:00:00:00:AA queue 0
    $ ethtool -N eth0 flow-type ether dst 00:00:00:00:00:BB queue 1
    $ ethtool -N eth0 flow-type ether dst 00:00:00:00:00:CC queue 2
    $ ethtool -N eth0 flow-type ether dst 00:00:00:00:00:DD queue 3
    
    RAL/RAH registers are configure so filter index 1 has address ending
    with AA, filter index 2 has address ending in BB, and so on.
    
    If we bring the interface down and up again, RAL/RAH registers are
    configured so filter index 1 has address ending in DD, filter index 2
    has CC, and so on. IOW, in reverse order we had before bringing the
    interface down.
    
    This issue can be fixed by traversing adapter->nfc_rule_list in
    backwards when restoring the rules. Since hlist doesn't support
    backwards traversal, this patch replaces it by list_head and fixes
    igc_restore_nfc_rules() accordingly.
    Signed-off-by: default avatarAndre Guedes <andre.guedes@intel.com>
    Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    d957c601
igc_main.c 141 KB