• Parav Pandit's avatar
    IB/core: Simplify ib_query_gid to always refer to cache · f35faa4b
    Parav Pandit authored
    Currently following inconsistencies exist.
    1. ib_query_gid() returns GID from the software cache for a RoCE port
    and returns GID from the HCA for an IB port.
    This is incorrect because software GID cache is maintained regardless
    of HCA port type.
    
    2. GID is queries from the HCA via ib_query_gid and updated in the
    software cache for IB link layer. Both of them might not be in sync.
    
    ULPs such as SRP initiator, SRP target, IPoIB driver have historically
    used ib_query_gid() API to query the GID. However CM used cached version
    during CM processing, When software cache was introduced, this
    inconsitency remained.
    
    In order to simplify, improve readability and avoid link layer
    specific above inconsistencies, this patch brings following changes.
    
    1. ib_query_gid() always refers to the cache layer regardless of link
    layer.
    
    2. cache module who reads the GID entry from HCA and builds the cache,
    directly invokes the HCA provider verb's query_gid() callback function.
    
    3. ib_query_port() is being called in early stage where GID cache is not
    yet build while reading port immutable property. Therefore it needs to
    read the default GID from the HCA for IB link layer to publish the
    subnet prefix.
    Signed-off-by: default avatarParav Pandit <parav@mellanox.com>
    Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    f35faa4b
cache.c 32.2 KB