• suresh kumar's avatar
    bonding: do not discard lowest hash bit for non layer3+4 hashing · 49aefd13
    suresh kumar authored
    Commit b5f86218 was introduced to discard lowest hash bit for layer3+4 hashing
    but it also removes last bit from non layer3+4 hashing
    
    Below script shows layer2+3 hashing will result in same slave to be used with above commit.
    $ cat hash.py
    #/usr/bin/python3.6
    
    h_dests=[0xa0, 0xa1]
    h_source=0xe3
    hproto=0x8
    saddr=0x1e7aa8c0
    daddr=0x17aa8c0
    
    for h_dest in h_dests:
        hash = (h_dest ^ h_source ^ hproto ^ saddr ^ daddr)
        hash ^= hash >> 16
        hash ^= hash >> 8
        print(hash)
    
    print("with last bit removed")
    for h_dest in h_dests:
        hash = (h_dest ^ h_source ^ hproto ^ saddr ^ daddr)
        hash ^= hash >> 16
        hash ^= hash >> 8
        hash = hash >> 1
        print(hash)
    
    Output:
    $ python3.6 hash.py
    522133332
    522133333   <-------------- will result in both slaves being used
    
    with last bit removed
    261066666
    261066666   <-------------- only single slave used
    Signed-off-by: default avatarsuresh kumar <suresh2514@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    49aefd13
bond_main.c 172 KB