Skip to contentSkip to conversation

REQ GID enforcement in the CM

DISCUSSION Or Gerlitz 2 participants 4 messages Oct 27, 2011 – Oct 31, 2011 3 messages not in the archive InfiniBand

lore
Share & tools
lore

Or Gerlitz

author
#0 lore raw

Hi Sean,

Looking on that case, I noted that the CM code (SB) checks that the GID in the incoming REQ is present in at least of one the ports of the relevant device, but not specifically on the port this request arrived to, is that following IBTA? I thought it could be problematic e.g in the case of RC QP being set by this establishment, later the RC packets would be dropped by the device if they have GRH and the GID isn't on that port table, isn't that?

Or.

Quoted 11 lines
    ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av);
        if (ret) {
                ib_get_cached_gid(work->port->cm_dev->ib_device,
                                  work->port->port_num, 0, 
&work->path[0].sgid);
                ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID,
&work->path[0].sgid, sizeof work->path[0].sgid,
                               NULL, 0);
                goto rejected;
        }
Quoted 12 lines
 read_lock_irqsave(&cm.device_lock, flags);
        list_for_each_entry(cm_dev, &cm.device_list, list) {
                if (!ib_find_cached_gid(cm_dev->ib_device, &path->sgid,
&p, NULL)) {
                        port = cm_dev->port[p-1];
                        break;
                }
        }
        read_unlock_irqrestore(&cm.device_lock, flags);

        if (!port)
                return -EINVAL;

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): 4EA9672F.2010601-VPRAkNaXOzVWk0Htik3J/[email protected]

#2 lore raw
Quoted 7 lines · Or Gerlitz

Looking on that case, I noted that the CM code (SB) checks that the GID in the incoming REQ is present in at least of one the ports of the relevant device, but not specifically on the port this request arrived to, is that following IBTA? I thought it could be problematic e.g in the case of RC QP being set by this establishment, later the RC packets would be dropped by the device if they have GRH and the GID isn't on that port table, isn't that?

You can use the CM to establish a connection on another port, eg send CM GMPs to port 1, specify the primary data path is port 2 and specify the alternate data path is port 1.

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): 20111027165522.GA16878-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org

author
#4 lore raw
Quoted 1 line · Jason Gunthorpe

You can use the CM to establish a connection on another port, eg send CM GMPs to port 1, specify the primary data path is port 2 and specify the alternate data path is port 1. Jason

makes sense, still, maybe the code here could/should be made more strict here for the case of a REQ sent with primary path only, agree?

Or.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): 4EAD239A.2050702-VPRAkNaXOzVWk0Htik3J/[email protected]

#6 lore raw
Quoted 8 lines · Or Gerlitz
Quoted 3 lines · Jason Gunthorpe

You can use the CM to establish a connection on another port, eg send CM GMPs to port 1, specify the primary data path is port 2 and specify the alternate data path is port 1. Jason

makes sense, still, maybe the code here could/should be made more strict here for the case of a REQ sent with primary path only, agree?

I'm not quite sure what you are proposing?

IBA places no requirements on the how the GMP path for CM messages is related to the data path.

The only validation you can do is to ensure that end port described by the GID also has the LID as part of its LID/LMC range, which I thought I saw happening?

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html