SMPs traveling through links in INIT should be forwarded
See 7.2.2 and other places in the IBA.
Pass if the current routing is for a SMP through to link_valid
--- ibsim/sim_mad.c | 25 ++++++++++++++----------- 1 files changed, 14 insertions(+), 11 deletions(-)
This applies on top of Rolf's patch to fix combind DR/LID routed SMPs
ibsim/sim_mad.c +14 -11
@@ -911,7 +911,7 @@ static int is_port_lid(Port * port, int lid)return 1 ; } -static int link_valid (Port * port) +static int link_valid (Port * port,int is_smp) {Node *node = port->node;
@@ -921,7 +921,7 @@ static int link_valid(Port * port) node->nodeid, node->numports);return 0 ; } -if (port->state !=4 ) {// Active ? +if (!is_smp && port->state !=4 ) {// Active ? DEBUG("port 0x%" PRIx64 " %d in not Active (%d)(node %s ports %d)", port->portguid, port->portnum, port->state, node->nodeid,
@@ -932,7 +932,7 @@ static int link_valid(Port * port)return 1 ; } -static Port *lid_route_MAD (Port * port,int lid) +static Port *lid_route_MAD (Port * port,int lid,int is_smp) {int hop, portnum;Node *node = port->node;
@@ -978,7 +978,7 @@ static Port *lid_route_MAD(Port * port, int lid)DEBUG ("outport 0x%" PRIx64" (%d)" , port->portguid, port->portnum); -if (!link_valid (port)) { +if (!link_valid (port, is_smp)) {pc_add_error_xmitdiscards (port);return 0 ; }
@@ -997,7 +997,7 @@ static Port *lid_route_MAD(Port * port, int lid)if (!node || !port)// double check ?... IBPANIC ("bad node %p or port %p" , node, port); -if (!link_valid (port)) { +if (!link_valid (port, is_smp)) {pc_add_error_xmitdiscards (tport);return 0 ; }
@@ -1108,10 +1108,11 @@ static Port *direct_route_out_MAD(Port * port, ib_dr_path_t * path)return port; } -static Port *route_MAD (Port * port,int response,int lid,ib_dr_path_t * path) +static Port *route_MAD (Port * port,int response,int lid,ib_dr_path_t * path, +int is_smp) {if (lid >=0 && lid <0xffff ) { - port =lid_route_MAD (port, lid); + port =lid_route_MAD (port, lid, is_smp);if (!port)return NULL ;if (!path)
@@ -1128,7 +1129,7 @@ static Port *route_MAD(Port * port, int response, int lid, ib_dr_path_t * path) }if (port && lid >=0 && lid <0xffff ) - port =lid_route_MAD (port, lid); + port =lid_route_MAD (port, lid, is_smp);return port; }
@@ -1190,7 +1191,8 @@ int process_packet(Client * cl, void *p, int size, Client ** dcl) } port =route_MAD (cl->port, response,ntohs (r->dlid), - rpc.mgtclass ==0x81 ? &path :NULL ); + rpc.mgtclass ==0x81 ? &path :NULL , + rpc.mgtclass ==0x1 || rpc.mgtclass ==0x81 );if (!port) {IBWARN ("routing failed: no route to dest lid %u path %s" ,ntohs (r->dlid),pathstr (0 , &path));
@@ -1236,7 +1238,8 @@ int process_packet(Client * cl, void *p, int size, Client ** dcl) r->status =0 ; port =route_MAD (port,1 ,ntohs (r->dlid), - rpc.mgtclass ==0x81 ? &path :NULL ); + rpc.mgtclass ==0x81 ? &path :NULL , + rpc.mgtclass ==0x1 || rpc.mgtclass ==0x81 );if (!port || cl->port->node != port->node) {VERB ("PKT roll back did not succeed" ); goto _dropped;
@@ -1324,7 +1327,7 @@ int send_trap(Port * port, unsigned trapnum)if (encode_trapfn (port, data) <0 )return -1 ; -if (!(destport =lid_route_MAD (port, port->smlid))) { +if (!(destport =lid_route_MAD (port, port->smlid,1 ))) {IBWARN ("routing failed: no route to dest lid %u" , port->smlid);return -1 ; }
Signature · 6 lines
1.7.1 -- 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): 20110915175701.GA6020-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org
T24gVGh1LCBTZXAgMTUsIDIwMTEgYXQgMTo1NyBQTSwgSmFzb24gR3VudGhvcnBlCjxqZ3VudGhv cnBlQG9ic2lkaWFucmVzZWFyY2guY29tPiB3cm90ZToKPiBTZWUgNy4yLjIgYW5kIG90aGVyIHBs YWNlcyBpbiB0aGUgSUJBLgo+Cj4gUGFzcyBpZiB0aGUgY3VycmVudCByb3V0aW5nIGlzIGZvciBh IFNNUCB0aHJvdWdoIHRvIGxpbmtfdmFsaWQKPiAtLS0KPiDCoGlic2ltL3NpbV9tYWQuYyB8IMKg IDI1ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiDCoDEgZmlsZXMgY2hhbmdlZCwgMTQgaW5z ZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCj4KPiBUaGlzIGFwcGxpZXMgb24gdG9wIG9mIFJv bGYncyBwYXRjaCB0byBmaXggY29tYmluZCBEUi9MSUQgcm91dGVkIFNNUHMKPgo+IGRpZmYgLS1n aXQgYS9pYnNpbS9zaW1fbWFkLmMgYi9pYnNpbS9zaW1fbWFkLmMKPiBpbmRleCAyNzY3MGE4Li44 M2Q0ZTNiIDEwMDY0NAo+IC0tLSBhL2lic2ltL3NpbV9tYWQuYwo+ICsrKyBiL2lic2ltL3NpbV9t YWQuYwo+IEBAIC05MTEsNyArOTExLDcgQEAgc3RhdGljIGludCBpc19wb3J0X2xpZChQb3J0ICog cG9ydCwgaW50IGxpZCkKPiDCoCDCoCDCoCDCoHJldHVybiAxOwo+IMKgfQo+Cj4gLXN0YXRpYyBp bnQgbGlua192YWxpZChQb3J0ICogcG9ydCkKPiArc3RhdGljIGludCBsaW5rX3ZhbGlkKFBvcnQg KiBwb3J0LGludCBpc19zbXApCj4gwqB7Cj4gwqAgwqAgwqAgwqBOb2RlICpub2RlID0gcG9ydC0+ bm9kZTsKPgo+IEBAIC05MjEsNyArOTIxLDcgQEAgc3RhdGljIGludCBsaW5rX3ZhbGlkKFBvcnQg KiBwb3J0KQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbm9kZS0+bm9kZWlkLCBu b2RlLT5udW1wb3J0cyk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm4gMDsKPiDCoCDC oCDCoCDCoH0KPiAtIMKgIMKgIMKgIGlmIChwb3J0LT5zdGF0ZSAhPSA0KSB7IC8vIEFjdGl2ZSA/ Cj4gKyDCoCDCoCDCoCBpZiAoIWlzX3NtcCAmJiBwb3J0LT5zdGF0ZSAhPSA0KSB7IMKgIMKgIMKg Ly8gQWN0aXZlID8KClNob3VsZG4ndCBzbXBzIG9ubHkgYmUgdmFsaWQgd2hlbiBwb3J0LT5zdGF0 ZSAhPSAxIChub3QgZG93bikgPwoKLS0gSGFsCgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgREVC VUcoInBvcnQgMHglIiBQUkl4NjQKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCIg JWQgaW4gbm90IEFjdGl2ZSAoJWQpKG5vZGUgJXMgcG9ydHMgJWQpIiwKPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHBvcnQtPnBvcnRndWlkLCBwb3J0LT5wb3J0bnVtLCBwb3J0LT5z dGF0ZSwgbm9kZS0+bm9kZWlkLAo+IEBAIC05MzIsNyArOTMyLDcgQEAgc3RhdGljIGludCBsaW5r X3ZhbGlkKFBvcnQgKiBwb3J0KQo+IMKgIMKgIMKgIMKgcmV0dXJuIDE7Cj4gwqB9Cj4KPiAtc3Rh dGljIFBvcnQgKmxpZF9yb3V0ZV9NQUQoUG9ydCAqIHBvcnQsIGludCBsaWQpCj4gK3N0YXRpYyBQ b3J0ICpsaWRfcm91dGVfTUFEKFBvcnQgKiBwb3J0LCBpbnQgbGlkLCBpbnQgaXNfc21wKQo+IMKg ewo+IMKgIMKgIMKgIMKgaW50IGhvcCwgcG9ydG51bTsKPiDCoCDCoCDCoCDCoE5vZGUgKm5vZGUg PSBwb3J0LT5ub2RlOwo+IEBAIC05NzgsNyArOTc4LDcgQEAgc3RhdGljIFBvcnQgKmxpZF9yb3V0 ZV9NQUQoUG9ydCAqIHBvcnQsIGludCBsaWQpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBERUJV Rygib3V0cG9ydCAweCUiIFBSSXg2NCAiICglZCkiLCBwb3J0LT5wb3J0Z3VpZCwKPiDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHBvcnQtPnBvcnRudW0pOwo+Cj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCBpZiAoIWxpbmtfdmFsaWQocG9ydCkpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGlmICghbGlua192YWxpZChwb3J0LCBpc19zbXApKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBwY19hZGRfZXJyb3JfeG1pdGRpc2NhcmRzKHBvcnQpOwo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIDA7Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqB9Cj4gQEAgLTk5Nyw3ICs5OTcsNyBAQCBzdGF0aWMgUG9ydCAqbGlkX3JvdXRlX01B RChQb3J0ICogcG9ydCwgaW50IGxpZCkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmICghbm9k ZSB8fCAhcG9ydCkgwqAgwqAgLy8gZG91YmxlIGNoZWNrID8uLi4KPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoElCUEFOSUMoImJhZCBub2RlICVwIG9yIHBvcnQgJXAiLCBub2Rl LCBwb3J0KTsKPgo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFsaW5rX3ZhbGlkKHBvcnQp KSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoIWxpbmtfdmFsaWQocG9ydCwgaXNfc21w KSkgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcGNfYWRkX2Vycm9yX3ht aXRkaXNjYXJkcyh0cG9ydCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBy ZXR1cm4gMDsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiBAQCAtMTEwOCwxMCArMTEwOCwx MSBAQCBzdGF0aWMgUG9ydCAqZGlyZWN0X3JvdXRlX291dF9NQUQoUG9ydCAqIHBvcnQsIGliX2Ry X3BhdGhfdCAqIHBhdGgpCj4gwqAgwqAgwqAgwqByZXR1cm4gcG9ydDsKPiDCoH0KPgo+IC1zdGF0 aWMgUG9ydCAqcm91dGVfTUFEKFBvcnQgKiBwb3J0LCBpbnQgcmVzcG9uc2UsIGludCBsaWQsIGli X2RyX3BhdGhfdCAqIHBhdGgpCj4gK3N0YXRpYyBQb3J0ICpyb3V0ZV9NQUQoUG9ydCAqIHBvcnQs IGludCByZXNwb25zZSwgaW50IGxpZCwgaWJfZHJfcGF0aF90ICogcGF0aCwKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaW50IGlzX3NtcCkKPiDCoHsKPiDCoCDCoCDCoCDCoGlm IChsaWQgPj0gMCAmJiBsaWQgPCAweGZmZmYpIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBv cnQgPSBsaWRfcm91dGVfTUFEKHBvcnQsIGxpZCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBw b3J0ID0gbGlkX3JvdXRlX01BRChwb3J0LCBsaWQsIGlzX3NtcCk7Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBpZiAoIXBvcnQpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBy ZXR1cm4gTlVMTDsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmICghcGF0aCkKPiBAQCAtMTEy OCw3ICsxMTI5LDcgQEAgc3RhdGljIFBvcnQgKnJvdXRlX01BRChQb3J0ICogcG9ydCwgaW50IHJl c3BvbnNlLCBpbnQgbGlkLCBpYl9kcl9wYXRoX3QgKiBwYXRoKQo+IMKgIMKgIMKgIMKgfQo+Cj4g wqAgwqAgwqAgwqBpZiAocG9ydCAmJiBsaWQgPj0gMCAmJiBsaWQgPCAweGZmZmYpCj4gLSDCoCDC oCDCoCDCoCDCoCDCoCDCoCBwb3J0ID0gbGlkX3JvdXRlX01BRChwb3J0LCBsaWQpOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcG9ydCA9IGxpZF9yb3V0ZV9NQUQocG9ydCwgbGlkLCBpc19zbXAp Owo+Cj4gwqAgwqAgwqAgwqByZXR1cm4gcG9ydDsKPiDCoH0KPiBAQCAtMTE5MCw3ICsxMTkxLDgg QEAgaW50IHByb2Nlc3NfcGFja2V0KENsaWVudCAqIGNsLCB2b2lkICpwLCBpbnQgc2l6ZSwgQ2xp ZW50ICoqIGRjbCkKPiDCoCDCoCDCoCDCoH0KPgo+IMKgIMKgIMKgIMKgcG9ydCA9IHJvdXRlX01B RChjbC0+cG9ydCwgcmVzcG9uc2UsIG50b2hzKHItPmRsaWQpLAo+IC0gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBycGMubWd0Y2xhc3MgPT0gMHg4MSA/ICZwYXRoIDogTlVMTCk7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJwYy5tZ3RjbGFzcyA9PSAw eDgxID8gJnBhdGggOiBOVUxMLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBycGMubWd0Y2xhc3MgPT0gMHgxIHx8IHJwYy5tZ3RjbGFzcyA9PSAweDgxKTsKPiDCoCDCoCDC oCDCoGlmICghcG9ydCkgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSUJXQVJOKCJyb3V0aW5n IGZhaWxlZDogbm8gcm91dGUgdG8gZGVzdCBsaWQgJXUgcGF0aCAlcyIsCj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgbnRvaHMoci0+ZGxpZCksIHBhdGhzdHIoMCwgJnBhdGgpKTsK PiBAQCAtMTIzNiw3ICsxMjM4LDggQEAgaW50IHByb2Nlc3NfcGFja2V0KENsaWVudCAqIGNsLCB2 b2lkICpwLCBpbnQgc2l6ZSwgQ2xpZW50ICoqIGRjbCkKPiDCoCDCoCDCoCDCoHItPnN0YXR1cyA9 IDA7Cj4KPiDCoCDCoCDCoCDCoHBvcnQgPSByb3V0ZV9NQUQocG9ydCwgMSwgbnRvaHMoci0+ZGxp ZCksCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJwYy5tZ3RjbGFzcyA9 PSAweDgxID8gJnBhdGggOiBOVUxMKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgcnBjLm1ndGNsYXNzID09IDB4ODEgPyAmcGF0aCA6IE5VTEwsCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJwYy5tZ3RjbGFzcyA9PSAweDEgfHwgcnBjLm1ndGNs YXNzID09IDB4ODEpOwo+IMKgIMKgIMKgIMKgaWYgKCFwb3J0IHx8IGNsLT5wb3J0LT5ub2RlICE9 IHBvcnQtPm5vZGUpIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFZFUkIoIlBLVCByb2xsIGJh Y2sgZGlkIG5vdCBzdWNjZWVkIik7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBnb3RvIF9kcm9w cGVkOwo+IEBAIC0xMzI0LDcgKzEzMjcsNyBAQCBpbnQgc2VuZF90cmFwKFBvcnQgKiBwb3J0LCB1 bnNpZ25lZCB0cmFwbnVtKQo+IMKgIMKgIMKgIMKgaWYgKGVuY29kZV90cmFwZm4ocG9ydCwgZGF0 YSkgPCAwKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIC0xOwo+Cj4gLSDCoCDCoCDC oCBpZiAoIShkZXN0cG9ydCA9IGxpZF9yb3V0ZV9NQUQocG9ydCwgcG9ydC0+c21saWQpKSkgewo+ ICsgwqAgwqAgwqAgaWYgKCEoZGVzdHBvcnQgPSBsaWRfcm91dGVfTUFEKHBvcnQsIHBvcnQtPnNt bGlkLCAxKSkpIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElCV0FSTigicm91dGluZyBmYWls ZWQ6IG5vIHJvdXRlIHRvIGRlc3QgbGlkICV1IiwgcG9ydC0+c21saWQpOwo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgcmV0dXJuIC0xOwo+IMKgIMKgIMKgIMKgfQo+IC0tCj4gMS43LjEKPgo+IC0t Cj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2Ny aWJlIGxpbnV4LXJkbWEiIGluCj4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2 Z2VyLmtlcm5lbC5vcmcKPiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0IMKgaHR0cDovL3ZnZXIua2Vy bmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCj4K
--
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