• Tom Tucker's avatar
    RPC/RDMA: fix connection IRD/ORD setting · b334eaab
    Tom Tucker authored
    This logic sets the connection parameter that configures the local device
    and informs the remote peer how many concurrent incoming RDMA_READ
    requests are supported. The original logic didn't really do what was
    intended for two reasons:
    
    - The max number supported by the device is typically smaller than
    any one factor in the calculation used, and
    
    - The field in the connection parameter structure where the value is
    stored is a u8 and always overflows for the default settings.
    
    So what really happens is the value requested for responder resources
    is the left over 8 bits from the "desired value". If the desired value
    happened to be a multiple of 256, the result was zero and it wouldn't
    connect at all.
    
    Given the above and the fact that max_requests is almost always larger
    than the max responder resources supported by the adapter, this patch
    simplifies this logic and simply requests the max supported by the device,
    subject to a reasonable limit.
    
    This bug was found by Jim Schutt at Sandia.
    Signed-off-by: default avatarTom Tucker <tom@opengridcomputing.com>
    Acked-by: default avatarTom Talpey <talpey@netapp.com>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    b334eaab
verbs.c 48.8 KB