• nikolay@redhat.com's avatar
    netxen: write IP address to firmware when using bonding · 8a7fbfab
    nikolay@redhat.com authored
    This patch allows LRO aggregation on bonded devices that contain an
    NX3031 device. It also adds a for_each_netdev_in_bond_rcu(bond, slave)
    macro which executes for each slave that has bond as master.
    
    V3: After testing and discussing this with Rajesh, I decided to keep the
        vlan ip cache and just rename it to ip_cache since it will store bond
        ip addresses too. A new master flag has been added to the ip cache to
        denote that the address has been added because of a master device.
        I've taken care of the enslave/release cases by checking for various
        combinations of events and flags (e.g. netxen has a master, it's a
        bond master and it's not marked as a slave means it is being enslaved
        and is dev_open()ed in bond_enslave).
        I've changed netxen_free_ip_list() to have a "master" parameter which
        causes all IP addresses marked as master to be deleted (used when a
        netxen is being released). I've made the patch use the new upper
        device API as well. The following cases were tested:
        - bond -> netxen
        - vlan -> netxen
        - vlan -> bond -> netxen
    
    V2: Remove local ip caching, retrieve addresses dynamically and
        restore them if necessary.
    
    Note: Tested with NX3031 adapter.
    Tested-by: default avatarRajesh Borundia <rajesh.borundia@qlogic.com>
    Signed-off-by: default avatarAndy Gospodarek <agospoda@redhat.com>
    Signed-off-by: default avatarNikolay Aleksandrov <nikolay@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8a7fbfab
netxen_nic_main.c 82.1 KB