• Jack Morgenstein's avatar
    IB/core: Handle table with full and partial membership for the same P_Key · ff7166c4
    Jack Morgenstein authored
    Extend the cached and non-cached P_Key table lookups to handle limited
    and full membership of the same P_Key to co-exist in the P_Key table.
    
    This is necessary for SR-IOV, to allow for some guests would to have
    the full membership P_Key in their virtual P_Key table, while other
    guests on the same physical HCA would have the limited one.
    To support this, we need both the limited and full membership P_Keys
    to be present in the master's (hypervisor physical port) P_Key table.
    
    The algorithm for handling P_Key tables which contain both the limited
    and the full membership versions of the same P_Key works as follows:
    
    When scanning the P_Key table for a 15-bit P_Key:
    
    A. If there is a full member version of that P_Key anywhere in the
        table, return its index (even if a limited-member version of the
        P_Key exists earlier in the table).
    
    B. If the full member version is not in the table, but the
       limited-member version is in the table, return the index of the
       limited P_Key.
    Signed-off-by: default avatarLiran Liss <liranl@mellanox.com>
    Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    ff7166c4
cache.c 10.3 KB