2016-11-18 6 views
0

Ich bin neu in der Programmierung von Rdma und bin gerade dabei, einen einfachen Client/Server mit ib Verben und Rdma Cma einzurichten, aber habe eine Wand getroffen. Mein Server läuft und wartet auf die Verbindung, aber mein Client verbindet sich nie, weil er bei rdma_create_qp() fehlschlägt. Ich bin mir nicht sicher, welche Informationen benötigt wird, kann dies zu helfen, löst aber ich werde in den benötigten Informationen bearbeiten, wie verlangt. (Derzeit snipets die betreffenden Informationen, wie sie in meinem Code erscheinen)rdma_create_qp() Fehler: ungültiges Argument

qp_init_attr.send_cq = cq; 
qp_init_attr.recv_cq = cq; 
qp_init_attr.qp_type = IBV_QPT_RC; 
qp_init_attr.cap.max_send_wr = 16; 
qp_init_attr.cap.max_recv_wr = 16; 
qp_init_attr.cap.max_send_sge = 8; 
qp_init_attr.cap.max_recv_sge = 8; 
if(rdma_create_qp(cm_id, pd, &qp_init_attr)){ 
    fprintf(stderr, "Error, rdma_create_qp() failed: %s\n", strerror(errno)); 
    return -1; 
} 
+0

Sie sollten den Wert von errno überprüfen. Das könnte Ihnen Hinweise geben, was gerade passiert. – JC1

Antwort

0

aus dem git Seite von librdmacm (https://github.com/linux-rdma/rdma-core/blob/master/librdmacm/cma.c):

Sie würden EINVAL in folgenden Fällen erhalten:

  1. id-> QP nicht NULL ist (bereits belegt).
  2. Der Kontext der ID unterscheidet sich von dem der optional angegebenen PD.
  3. send_cq oder receive_cq sind der ID zugeordnet und unterscheiden sich von denen, die in qp_init_attr angegeben sind.
0

Nicht mit cm_id aufrufen. Angenommen, Sie rufen rdma_create_qp für das Ereignis RDMA_CM_EVENT_ROUTE_RESOLVED auf, sollten Sie evt->id verwenden. Dies ist die rdma_id für die von Ihnen erstellte Clientverbindung.

Verwandte Themen