• Bart Van Assche's avatar
    IB/srp: Disallow duplicate RDMA/CM connections · b470c154
    Bart Van Assche authored
    According to the SRP standard the INITIATOR and TARGET PORT IDENTIFIER
    fields from the login request specify the I_T nexus. Whether or not an
    SRP target closes an existing connection for an I_T nexus when a login
    request is received depends on the value of the MULTICHANNEL field in
    the login request. The SRP initiator derives the value of the
    INITIATOR and TARGET PORT IDENTIFIER fields from the .id_ext,
    .ioc_guid, .initiator_ext .sgid members of the srp_target_port
    structure. This means that the .rdma_cm.dst check must be removed from
    srp_conn_unique(). This patch avoids that for target ports that have
    multiple addresses, e.g. an IPv4 and an IPv6 address, and if a
    connection is established to both target port addresses, that the
    initiator logs in alternatingly every 10 seconds to the other target
    port address. An SRP target must namely terminate all but one
    connections for a given I_T nexus if the MULTICHANNEL field has not
    been set in the login request.
    
    Fixes: 19f31343 ("IB/srp: Add RDMA/CM support")
    Signed-off-by: default avatarBart Van Assche <bart.vanassche@wdc.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    b470c154
ib_srp.c 111 KB