REQ GID enforcement in the CM
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]
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
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]
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