opensm/osm_trap_rcv.c: In trap_rcv_process_request, no need to sweep on trap 145 and certain trap 144s
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
Hi Hal,
Quoted 23 lines · Hal Rosenstock
NodeDescription changed trap only needs to query the new NodeDescription and not cause sweep
Similarly for SystemImageGUID changed (trap 145)
LinkWidth/SpeedEnabled changed traps (at least right now) and SM priority changed traps do need to sweep.
In the future, LinkWidth/SpeedEnabled changed trap handling can query PortInfo (may also need to bounce port too).
Also, as noted in related email thread, it's unclear what sweeping on non generic traps accomplishes but this behavior is preserved.
Signed-off-by Hal Rosenstock <[email protected]>---
opensm/opensm/osm_trap_rcv.c +0
-0
opensm/opensm/osm_trap_rcv.c trap_rcv_process_request(IN osm_sm_t * sm, · line 296
Quoted 7 lines
opensm/opensm/osm_trap_rcv.c +2
-1@@ -291,8 +291,9 @@ trap_rcv_process_request(IN osm_sm_t * sm,osm_physp_t *p_physp;cl_ptr_vector_t *p_tbl;osm_port_t *p_port; +osm_node_t *p_node;ib_net16_t source_lid =0 ; -boolean_t is_gsi = TRUE; +boolean_t is_gsi = TRUE, is_trap144_sweep = FALSE;
What about reusing already existing 'run_heavy_sweep' variable and not introduce new one?
opensm/opensm/osm_trap_rcv.c trap_rcv_process_request(IN osm_sm_t * sm, · line 549
Quoted 6 lines
opensm/opensm/osm_trap_rcv.c +0
-0uint8_t port_num =0 ;boolean_t physp_change_trap = FALSE;uint64_t event_wheel_timeout =OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT ;@@ -547,44 +548,59 @@ trap_rcv_process_request(IN osm_sm_t * sm, } }
In general: function trap_rcv_process_request() already has 400 lines of code and adding there more lines without simplifying flows makes me nervous.
Quoted 12 lines
opensm/opensm/osm_trap_rcv.c +0
-11-/* Check for node description update. IB Spec v1.2.1 pg 823 */ -if (ib_notice_is_generic (p_ntci) && -cl_ntoh16 (p_ntci->g_or_v.generic.trap_num) ==144 && - p_ntci->data_details.ntc_144.local_changes &TRAP_144_MASK_OTHER_LOCAL_CHANGES && - p_ntci->data_details.ntc_144.change_flgs &TRAP_144_MASK_NODE_DESCRIPTION_CHANGE ) { -OSM_LOG (sm->p_log,OSM_LOG_INFO ,"Trap 144 Node description update\n" ); - -if (p_physp) { -CL_PLOCK_ACQUIRE (sm->p_lock); -osm_req_get_node_desc (sm, p_physp); -CL_PLOCK_RELEASE (sm->p_lock);
opensm/opensm/osm_trap_rcv.c trap_rcv_process_request(IN osm_sm_t * sm, · line 554
Quoted 10 lines
opensm/opensm/osm_trap_rcv.c +5
-5- }else -OSM_LOG (sm->p_log,OSM_LOG_ERROR , -"ERR 3812: No physical port found for " -"trap 144: \"node description update\"\n" ); - } +if (ib_notice_is_generic (p_ntci)) { +/* Check for node description update. IB Spec v1.2.1 pg 823 */ +if (cl_ntoh16 (p_ntci->g_or_v.generic.trap_num) ==144 ) { +/* update port's capability mask (in PortInfo) */ + p_physp->port_info.capability_mask = p_ntci->data_details.ntc_144.new_cap_mask;
Hmm, could this introduce some issues?
opensm/opensm/osm_trap_rcv.c trap_rcv_process_request(IN osm_sm_t * sm, · line 556
Quoted 2 lines
opensm/opensm/osm_trap_rcv.c +2
-0+if (p_ntci->data_details.ntc_144.local_changes &TRAP_144_MASK_OTHER_LOCAL_CHANGES ) { +if (p_ntci->data_details.ntc_144.change_flgs &TRAP_144_MASK_NODE_DESCRIPTION_CHANGE ) {
if ((p_ntci->data_details.ntc_144.local_changes &
TRAP_144_MASK_OTHER_LOCAL_CHANGES) &&
(p_ntci->data_details.ntc_144.change_flgs &
TRAP_144_MASK_NODE_DESCRIPTION_CHANGE)) {Quoted 6 lines
opensm/opensm/osm_trap_rcv.c +6
-0+OSM_LOG (sm->p_log,OSM_LOG_INFO , +"Trap 144 Node description update\n" ); + +if (p_physp) { +CL_PLOCK_ACQUIRE (sm->p_lock); +osm_req_get_node_desc (sm, p_physp);
opensm/opensm/osm_trap_rcv.c trap_rcv_process_request(IN osm_sm_t * sm, · line 572
Quoted 10 lines
opensm/opensm/osm_trap_rcv.c +10
-0+CL_PLOCK_RELEASE (sm->p_lock); + }else +OSM_LOG (sm->p_log,OSM_LOG_ERROR , +"ERR 3812: No physical port found for " +"trap 144: \"node description update\"\n" ); + } + } +if (p_ntci->data_details.ntc_144.change_flgs &TRAP_144_MASK_LINK_WIDTH_ENABLE_CHANGE || + p_ntci->data_details.ntc_144.change_flgs &TRAP_144_MASK_LINK_SPEED_ENABLE_CHANGE || + p_ntci->data_details.ntc_144.change_flgs &TRAP_144_MASK_SM_PRIORITY_CHANGE )
if ((p_ntci->data_details.ntc_144.change_flgs & (TRAP_144_MASK_LINK_WIDTH_ENABLE_CHANGE | TRAP_144_MASK_LINK_SPEED_ENABLE_CHANGE | TRAP_144_MASK_SM_PRIORITY_CHANGE)))
Quoted 13 lines
opensm/opensm/osm_trap_rcv.c +2
-10+ is_trap144_sweep = TRUE; + } -/* do a sweep if we received a trap */ -if (sm->p_subn->opt.sweep_on_trap) { -/* if this is trap number 128 or run_heavy_sweep is TRUE - -update the force_heavy_sweep flag of the subnet. -Sweep also on traps 144/145 - these traps signal a change of -certain port capabilities/system image guid. -TODO: In the future this can be changed to just getting -PortInfo on this port instead of sweeping the entire subnet. */ - if (ib_notice_is_generic(p_ntci) && - (cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == 128 ||
opensm/opensm/osm_trap_rcv.c trap_rcv_process_request(IN osm_sm_t * sm, · line 579
Quoted 10 lines
opensm/opensm/osm_trap_rcv.c +4
-6- cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == 144 || - cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == 145 || - run_heavy_sweep)) { -OSM_LOG (sm->p_log,OSM_LOG_VERBOSE , -"Forcing heavy sweep. Received trap:%u\n" , -cl_ntoh16 (p_ntci->g_or_v.generic.trap_num)); +if (cl_ntoh16 (p_ntci->g_or_v.generic.trap_num) ==145 ) { +/* update system image guid (in NodeInfo) */ + p_node =osm_physp_get_node_ptr (p_physp); +if (p_node)
When 'p_node' could be NULL?
opensm/opensm/osm_trap_rcv.c trap_rcv_process_request(IN osm_sm_t * sm, · line 580
Quoted 1 line
opensm/opensm/osm_trap_rcv.c +1
-0+ p_node->node_info.node_guid = p_ntci->data_details.ntc_145.new_sys_guid;
Didn't you mean 'node_info.sys_guid' and 'node_info.node_guid'?
opensm/opensm/osm_trap_rcv.c trap_rcv_process_request(IN osm_sm_t * sm, · line 592
Quoted 12 lines
opensm/opensm/osm_trap_rcv.c +12
-0+ } + +/* do a sweep if we received a trap */ +if (sm->p_subn->opt.sweep_on_trap) { +/* if this is trap number 128 or run_heavy_sweep is +TRUE - update the force_heavy_sweep flag of the +subnet. Also, sweep on certain types of trap 144. +TODO: In the future this can be changed to just +getting PortInfo on this port instead of sweeping +the entire subnet. */ +if (cl_ntoh16 (p_ntci->g_or_v.generic.trap_num) ==128 || + is_trap144_sweep || run_heavy_sweep) {
It looks that prevents sweeping on PortInfo:CapMask change which is effectively breaks at least SM handover - new SM will be undetected.
Quoted 6 lines
opensm/opensm/osm_trap_rcv.c +4
-1+OSM_LOG (sm->p_log,OSM_LOG_VERBOSE , +"Forcing heavy sweep. Received trap:%u\n" , +cl_ntoh16 (p_ntci->g_or_v.generic.trap_num)); - sm->p_subn->force_heavy_sweep = TRUE; + sm->p_subn->force_heavy_sweep = TRUE;
opensm/opensm/osm_trap_rcv.c trap_rcv_process_request(IN osm_sm_t * sm, · line 606
Quoted 10 lines
opensm/opensm/osm_trap_rcv.c +3
-1+ } +osm_sm_signal (sm,OSM_SIGNAL_SWEEP ); } + }else if (sm->p_subn->opt.sweep_on_trap)osm_sm_signal (sm,OSM_SIGNAL_SWEEP ); - }/* If we reached here due to trap 129/130/131 - do not need to do the notice report. Just goto exit. We know this is the case
--
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
SGkgU2FzaGEsCgpPbiBUaHUsIE9jdCAyOSwgMjAwOSBhdCA5OjU3IFBNLCBTYXNoYSBLaGFweW9y c2t5IDxzYXNoYWtAdm9sdGFpcmUuY29tPiB3cm90ZToKPiBIaSBIYWwsCj4KPiBPbiAxODoyNyBX ZWQgMDUgQXVnIMKgIMKgICwgSGFsIFJvc2Vuc3RvY2sgd3JvdGU6Cj4+Cj4+IE5vZGVEZXNjcmlw dGlvbiBjaGFuZ2VkIHRyYXAgb25seSBuZWVkcyB0byBxdWVyeSB0aGUgbmV3IE5vZGVEZXNjcmlw dGlvbgo+PiBhbmQgbm90IGNhdXNlIHN3ZWVwCj4+Cj4+IFNpbWlsYXJseSBmb3IgU3lzdGVtSW1h Z2VHVUlEIGNoYW5nZWQgKHRyYXAgMTQ1KQo+Pgo+PiBMaW5rV2lkdGgvU3BlZWRFbmFibGVkIGNo YW5nZWQgdHJhcHMgKGF0IGxlYXN0IHJpZ2h0IG5vdykgYW5kCj4+IFNNIHByaW9yaXR5IGNoYW5n ZWQgdHJhcHMgZG8gbmVlZCB0byBzd2VlcC4KPj4KPj4gSW4gdGhlIGZ1dHVyZSwgTGlua1dpZHRo L1NwZWVkRW5hYmxlZCBjaGFuZ2VkIHRyYXAgaGFuZGxpbmcKPj4gY2FuIHF1ZXJ5IFBvcnRJbmZv IChtYXkgYWxzbyBuZWVkIHRvIGJvdW5jZSBwb3J0IHRvbykuCj4+Cj4+IEFsc28sIGFzIG5vdGVk IGluIHJlbGF0ZWQgZW1haWwgdGhyZWFkLCBpdCdzIHVuY2xlYXIgd2hhdAo+PiBzd2VlcGluZyBv biBub24gZ2VuZXJpYyB0cmFwcyBhY2NvbXBsaXNoZXMgYnV0IHRoaXMgYmVoYXZpb3IKPj4gaXMg cHJlc2VydmVkLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBIYWwgUm9zZW5zdG9jayA8aGFsLnJvc2Vu c3RvY2tAZ21haWwuY29tPgo+PiAtLS0KPj4gZGlmZiAtLWdpdCBhL29wZW5zbS9vcGVuc20vb3Nt X3RyYXBfcmN2LmMgYi9vcGVuc20vb3BlbnNtL29zbV90cmFwX3Jjdi5jCj4+IGluZGV4IGQyZTQy MDIuLmU1YmQ1MjkgMTAwNjQ0Cj4+IC0tLSBhL29wZW5zbS9vcGVuc20vb3NtX3RyYXBfcmN2LmMK Pj4gKysrIGIvb3BlbnNtL29wZW5zbS9vc21fdHJhcF9yY3YuYwo+PiBAQCAtMjkxLDggKzI5MSw5 IEBAIHRyYXBfcmN2X3Byb2Nlc3NfcmVxdWVzdChJTiBvc21fc21fdCAqIHNtLAo+PiDCoCDCoCDC oCBvc21fcGh5c3BfdCAqcF9waHlzcDsKPj4gwqAgwqAgwqAgY2xfcHRyX3ZlY3Rvcl90ICpwX3Ri bDsKPj4gwqAgwqAgwqAgb3NtX3BvcnRfdCAqcF9wb3J0Owo+PiArIMKgIMKgIG9zbV9ub2RlX3Qg KnBfbm9kZTsKPj4gwqAgwqAgwqAgaWJfbmV0MTZfdCBzb3VyY2VfbGlkID0gMDsKPj4gLSDCoCDC oCBib29sZWFuX3QgaXNfZ3NpID0gVFJVRTsKPj4gKyDCoCDCoCBib29sZWFuX3QgaXNfZ3NpID0g VFJVRSwgaXNfdHJhcDE0NF9zd2VlcCA9IEZBTFNFOwo+Cj4gV2hhdCBhYm91dCByZXVzaW5nIGFs cmVhZHkgZXhpc3RpbmcgJ3J1bl9oZWF2eV9zd2VlcCcgdmFyaWFibGUgYW5kIG5vdAo+IGludHJv ZHVjZSBuZXcgb25lPwoKU3VyZS4KCj4+IMKgIMKgIMKgIHVpbnQ4X3QgcG9ydF9udW0gPSAwOwo+ PiDCoCDCoCDCoCBib29sZWFuX3QgcGh5c3BfY2hhbmdlX3RyYXAgPSBGQUxTRTsKPj4gwqAgwqAg wqAgdWludDY0X3QgZXZlbnRfd2hlZWxfdGltZW91dCA9IE9TTV9ERUZBVUxUX1RSQVBfU1VQUkVT U0lPTl9USU1FT1VUOwo+PiBAQCAtNTQ3LDQ0ICs1NDgsNTkgQEAgdHJhcF9yY3ZfcHJvY2Vzc19y ZXF1ZXN0KElOIG9zbV9zbV90ICogc20sCj4+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPj4gwqAg wqAgwqAgfQo+Cj4gSW4gZ2VuZXJhbDogZnVuY3Rpb24gdHJhcF9yY3ZfcHJvY2Vzc19yZXF1ZXN0 KCkgYWxyZWFkeSBoYXMgNDAwIGxpbmVzIG9mCj4gY29kZSBhbmQgYWRkaW5nIHRoZXJlIG1vcmUg bGluZXMgd2l0aG91dCBzaW1wbGlmeWluZyBmbG93cyBtYWtlcyBtZQo+IG5lcnZvdXMuCgpBcmUg eW91IGdvaW5nIHRvIGJsb2NrIHRoaXMgY2hhbmdlIHVudGlsIHN1Y2ggcmVzdHJ1Y3R1cmUgPwoK Pj4gLSDCoCDCoCAvKiBDaGVjayBmb3Igbm9kZSBkZXNjcmlwdGlvbiB1cGRhdGUuIElCIFNwZWMg djEuMi4xIHBnIDgyMyAqLwo+PiAtIMKgIMKgIGlmIChpYl9ub3RpY2VfaXNfZ2VuZXJpYyhwX250 Y2kpICYmCj4+IC0gwqAgwqAgwqAgwqAgY2xfbnRvaDE2KHBfbnRjaS0+Z19vcl92LmdlbmVyaWMu dHJhcF9udW0pID09IDE0NCAmJgo+PiAtIMKgIMKgIMKgIMKgIHBfbnRjaS0+ZGF0YV9kZXRhaWxz Lm50Y18xNDQubG9jYWxfY2hhbmdlcyAmIFRSQVBfMTQ0X01BU0tfT1RIRVJfTE9DQUxfQ0hBTkdF UyAmJgo+PiAtIMKgIMKgIMKgIMKgIHBfbnRjaS0+ZGF0YV9kZXRhaWxzLm50Y18xNDQuY2hhbmdl X2ZsZ3MgJiBUUkFQXzE0NF9NQVNLX05PREVfREVTQ1JJUFRJT05fQ0hBTkdFKSB7Cj4+IC0gwqAg wqAgwqAgwqAgwqAgwqAgT1NNX0xPRyhzbS0+cF9sb2csIE9TTV9MT0dfSU5GTywgIlRyYXAgMTQ0 IE5vZGUgZGVzY3JpcHRpb24gdXBkYXRlXG4iKTsKPj4gLQo+PiAtIMKgIMKgIMKgIMKgIMKgIMKg IGlmIChwX3BoeXNwKSB7Cj4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQ0xfUExP Q0tfQUNRVUlSRShzbS0+cF9sb2NrKTsKPj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBvc21fcmVxX2dldF9ub2RlX2Rlc2Moc20sIHBfcGh5c3ApOwo+PiAtIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIENMX1BMT0NLX1JFTEVBU0Uoc20tPnBfbG9jayk7Cj4+IC0gwqAgwqAg wqAgwqAgwqAgwqAgfSBlbHNlCj4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgT1NN X0xPRyhzbS0+cF9sb2csIE9TTV9MT0dfRVJST1IsCj4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgIkVSUiAzODEyOiBObyBwaHlzaWNhbCBwb3J0IGZvdW5kIGZv ciAiCj4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgInRyYXAg MTQ0OiBcIm5vZGUgZGVzY3JpcHRpb24gdXBkYXRlXCJcbiIpOwo+PiAtIMKgIMKgIH0KPj4gKyDC oCDCoCBpZiAoaWJfbm90aWNlX2lzX2dlbmVyaWMocF9udGNpKSkgewo+PiArIMKgIMKgIMKgIMKg IMKgIMKgIC8qIENoZWNrIGZvciBub2RlIGRlc2NyaXB0aW9uIHVwZGF0ZS4gSUIgU3BlYyB2MS4y LjEgcGcgODIzICovCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGNsX250b2gxNihwX250Y2kt Pmdfb3Jfdi5nZW5lcmljLnRyYXBfbnVtKSA9PSAxNDQpIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCAvKiB1cGRhdGUgcG9ydCdzIGNhcGFiaWxpdHkgbWFzayAoaW4gUG9ydElu Zm8pICovCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcF9waHlzcC0+cG9ydF9p bmZvLmNhcGFiaWxpdHlfbWFzayA9IHBfbnRjaS0+ZGF0YV9kZXRhaWxzLm50Y18xNDQubmV3X2Nh cF9tYXNrOwo+Cj4gSG1tLCBjb3VsZCB0aGlzIGludHJvZHVjZSBzb21lIGlzc3Vlcz8KCkxpa2Ug d2hhdCA/Cgo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwX250Y2ktPmRh dGFfZGV0YWlscy5udGNfMTQ0LmxvY2FsX2NoYW5nZXMgJiBUUkFQXzE0NF9NQVNLX09USEVSX0xP Q0FMX0NIQU5HRVMpIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBpZiAocF9udGNpLT5kYXRhX2RldGFpbHMubnRjXzE0NC5jaGFuZ2VfZmxncyAmIFRSQVBf MTQ0X01BU0tfTk9ERV9ERVNDUklQVElPTl9DSEFOR0UpIHsKPgo+IMKgIMKgIMKgIMKgaWYgKChw X250Y2ktPmRhdGFfZGV0YWlscy5udGNfMTQ0LmxvY2FsX2NoYW5nZXMgJgo+IMKgIMKgIMKgIMKg IMKgIMKgIFRSQVBfMTQ0X01BU0tfT1RIRVJfTE9DQUxfQ0hBTkdFUykgJiYKPiDCoCDCoCDCoCDC oCDCoCDCoChwX250Y2ktPmRhdGFfZGV0YWlscy5udGNfMTQ0LmNoYW5nZV9mbGdzICYKPiDCoCDC oCDCoCDCoCDCoCDCoCBUUkFQXzE0NF9NQVNLX05PREVfREVTQ1JJUFRJT05fQ0hBTkdFKSkgewo+ Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgT1NNX0xPRyhzbS0+cF9sb2csIE9TTV9MT0dfSU5GTywKPj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAiVHJhcCAx NDQgTm9kZSBkZXNjcmlwdGlvbiB1cGRhdGVcbiIpOwo+PiArCj4+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBfcGh5c3ApIHsKPj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBDTF9QTE9DS19BQ1FVSVJFKHNtLT5wX2xvY2spOwo+PiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG9z bV9yZXFfZ2V0X25vZGVfZGVzYyhzbSwgcF9waHlzcCk7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQ0xfUExPQ0tf UkVMRUFTRShzbS0+cF9sb2NrKTsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2UKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBPU01fTE9HKHNtLT5w X2xvZywgT1NNX0xPR19FUlJPUiwKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAiRVJSIDM4MTI6 IE5vIHBoeXNpY2FsIHBvcnQgZm91bmQgZm9yICIKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAi dHJhcCAxNDQ6IFwibm9kZSBkZXNjcmlwdGlvbiB1cGRhdGVcIlxuIik7Cj4+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+PiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIH0KPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocF9u dGNpLT5kYXRhX2RldGFpbHMubnRjXzE0NC5jaGFuZ2VfZmxncyAmIFRSQVBfMTQ0X01BU0tfTElO S19XSURUSF9FTkFCTEVfQ0hBTkdFIHx8Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgcF9udGNpLT5kYXRhX2RldGFpbHMubnRjXzE0NC5jaGFuZ2VfZmxncyAmIFRSQVBf MTQ0X01BU0tfTElOS19TUEVFRF9FTkFCTEVfQ0hBTkdFIHx8Cj4+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcF9udGNpLT5kYXRhX2RldGFpbHMubnRjXzE0NC5jaGFuZ2Vf ZmxncyAmIFRSQVBfMTQ0X01BU0tfU01fUFJJT1JJVFlfQ0hBTkdFKQo+Cj4gwqAgwqAgwqAgwqBp ZiAoKHBfbnRjaS0+ZGF0YV9kZXRhaWxzLm50Y18xNDQuY2hhbmdlX2ZsZ3MgJgo+IMKgIMKgIMKg IMKgIMKgIMKgIChUUkFQXzE0NF9NQVNLX0xJTktfV0lEVEhfRU5BQkxFX0NIQU5HRSB8Cj4gwqAg wqAgwqAgwqAgwqAgwqAgwqBUUkFQXzE0NF9NQVNLX0xJTktfU1BFRURfRU5BQkxFX0NIQU5HRSB8 Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqBUUkFQXzE0NF9NQVNLX1NNX1BSSU9SSVRZX0NIQU5HRSkp KQo+Cj4KPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpc190 cmFwMTQ0X3N3ZWVwID0gVFJVRTsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4+Cj4+IC0gwqAg wqAgLyogZG8gYSBzd2VlcCBpZiB3ZSByZWNlaXZlZCBhIHRyYXAgKi8KPj4gLSDCoCDCoCBpZiAo c20tPnBfc3Vibi0+b3B0LnN3ZWVwX29uX3RyYXApIHsKPj4gLSDCoCDCoCDCoCDCoCDCoCDCoCAv KiBpZiB0aGlzIGlzIHRyYXAgbnVtYmVyIDEyOCBvciBydW5faGVhdnlfc3dlZXAgaXMgVFJVRSAt Cj4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB1cGRhdGUgdGhlIGZvcmNlX2hlYXZ5X3N3ZWVw IGZsYWcgb2YgdGhlIHN1Ym5ldC4KPj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFN3ZWVwIGFs c28gb24gdHJhcHMgMTQ0LzE0NSAtIHRoZXNlIHRyYXBzIHNpZ25hbCBhIGNoYW5nZSBvZgo+PiAt IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2VydGFpbiBwb3J0IGNhcGFiaWxpdGllcy9zeXN0ZW0g aW1hZ2UgZ3VpZC4KPj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFRPRE86IEluIHRoZSBmdXR1 cmUgdGhpcyBjYW4gYmUgY2hhbmdlZCB0byBqdXN0IGdldHRpbmcKPj4gLSDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoFBvcnRJbmZvIG9uIHRoaXMgcG9ydCBpbnN0ZWFkIG9mIHN3ZWVwaW5nIHRoZSBl bnRpcmUgc3VibmV0LiAqLwo+PiAtIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpYl9ub3RpY2VfaXNf Z2VuZXJpYyhwX250Y2kpICYmCj4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGNsX250b2gx NihwX250Y2ktPmdfb3Jfdi5nZW5lcmljLnRyYXBfbnVtKSA9PSAxMjggfHwKPj4gLSDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGNsX250b2gxNihwX250Y2ktPmdfb3Jfdi5nZW5lcmljLnRyYXBf bnVtKSA9PSAxNDQgfHwKPj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNsX250b2gxNihw X250Y2ktPmdfb3Jfdi5nZW5lcmljLnRyYXBfbnVtKSA9PSAxNDUgfHwKPj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHJ1bl9oZWF2eV9zd2VlcCkpIHsKPj4gLSDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBPU01fTE9HKHNtLT5wX2xvZywgT1NNX0xPR19WRVJCT1NFLAo+PiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJGb3JjaW5nIGhlYXZ5IHN3 ZWVwLiBSZWNlaXZlZCB0cmFwOiV1XG4iLAo+PiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGNsX250b2gxNihwX250Y2ktPmdfb3Jfdi5nZW5lcmljLnRyYXBfbnVt KSk7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGNsX250b2gxNihwX250Y2ktPmdfb3Jfdi5n ZW5lcmljLnRyYXBfbnVtKSA9PSAxNDUpIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCAvKiB1cGRhdGUgc3lzdGVtIGltYWdlIGd1aWQgKGluIE5vZGVJbmZvKSAqLwo+PiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBfbm9kZSA9IG9zbV9waHlzcF9nZXRfbm9kZV9w dHIocF9waHlzcCk7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBfbm9k ZSkKPgo+IFdoZW4gJ3Bfbm9kZScgY291bGQgYmUgTlVMTD8KCkl0J3MganVzdCBhIHBvc3NpYmxl IHJldHVybiBmcm9tIG9zbV9waHlzcF9nZXRfbm9kZV9wdHIgYW5kIHdhbnRlZCB0bwpiZSBzdXJl IHRoaXMgd2FzIG5vdCB0aGUgY2FzZSBiZWZvcmUgc2V0dGluZyBub2RlX2luZm8uIFNob3VsZCB0 aGlzIGJlCmVsaW1pbmF0ZWQgPwoKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBwX25vZGUtPm5vZGVfaW5mby5ub2RlX2d1aWQgPSBwX250Y2ktPmRhdGFfZGV0 YWlscy5udGNfMTQ1Lm5ld19zeXNfZ3VpZDsKPgo+IERpZG4ndCB5b3UgbWVhbiAnbm9kZV9pbmZv LnN5c19ndWlkJyBhbmQgJ25vZGVfaW5mby5ub2RlX2d1aWQnPwoKSnVzdCBzeXNfZ3VpZC4KCj4+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgfQo+PiArCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgLyogZG8g YSBzd2VlcCBpZiB3ZSByZWNlaXZlZCBhIHRyYXAgKi8KPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCBp ZiAoc20tPnBfc3Vibi0+b3B0LnN3ZWVwX29uX3RyYXApIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCAvKiBpZiB0aGlzIGlzIHRyYXAgbnVtYmVyIDEyOCBvciBydW5faGVhdnlf c3dlZXAgaXMKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFRSVUUgLSB1 cGRhdGUgdGhlIGZvcmNlX2hlYXZ5X3N3ZWVwIGZsYWcgb2YgdGhlCj4+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdWJuZXQuIEFsc28sIHN3ZWVwIG9uIGNlcnRhaW4gdHlw ZXMgb2YgdHJhcCAxNDQuCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBU T0RPOiBJbiB0aGUgZnV0dXJlIHRoaXMgY2FuIGJlIGNoYW5nZWQgdG8ganVzdAo+PiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ2V0dGluZyBQb3J0SW5mbyBvbiB0aGlzIHBv cnQgaW5zdGVhZCBvZiBzd2VlcGluZwo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgdGhlIGVudGlyZSBzdWJuZXQuICovCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgaWYgKGNsX250b2gxNihwX250Y2ktPmdfb3Jfdi5nZW5lcmljLnRyYXBfbnVtKSA9PSAx MjggfHwKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpc190cmFwMTQ0 X3N3ZWVwIHx8IHJ1bl9oZWF2eV9zd2VlcCkgewo+Cj4gSXQgbG9va3MgdGhhdCBwcmV2ZW50cyBz d2VlcGluZyBvbiBQb3J0SW5mbzpDYXBNYXNrIGNoYW5nZSB3aGljaAo+IGlzIGVmZmVjdGl2ZWx5 IGJyZWFrcyBhdCBsZWFzdCBTTSBoYW5kb3ZlciAtIG5ldyBTTSB3aWxsIGJlIHVuZGV0ZWN0ZWQu CgpZZXMsIENhcE1hc2sgY2hhbmdlIHNob3VsZCBiZSBpbmNsdWRlZCBhbG9uZyB3aXRoIHRoZSBv dGhlciBsb2NhbApjaGFuZ2VzIHRvIGNhdXNlIHN3ZWVwLgoKLS0gSGFsCgo+PiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIE9TTV9MT0coc20tPnBfbG9nLCBPU01f TE9HX1ZFUkJPU0UsCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgIkZvcmNpbmcgaGVhdnkgc3dlZXAuIFJlY2VpdmVkIHRyYXA6JXVcbiIs Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgY2xfbnRvaDE2KHBfbnRjaS0+Z19vcl92LmdlbmVyaWMudHJhcF9udW0pKTsKPj4KPj4gLSDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzbS0+cF9zdWJuLT5mb3JjZV9oZWF2eV9zd2Vl cCA9IFRSVUU7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg c20tPnBfc3Vibi0+Zm9yY2VfaGVhdnlfc3dlZXAgPSBUUlVFOwo+PiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIH0KPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBvc21f c21fc2lnbmFsKHNtLCBPU01fU0lHTkFMX1NXRUVQKTsKPj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg fQo+PiArIMKgIMKgIH0gZWxzZSBpZiAoc20tPnBfc3Vibi0+b3B0LnN3ZWVwX29uX3RyYXApCj4+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIG9zbV9zbV9zaWduYWwoc20sIE9TTV9TSUdOQUxfU1dFRVAp Owo+PiAtIMKgIMKgIH0KPj4KPj4gwqAgwqAgwqAgLyogSWYgd2UgcmVhY2hlZCBoZXJlIGR1ZSB0 byB0cmFwIDEyOS8xMzAvMTMxIC0gZG8gbm90IG5lZWQgdG8gZG8KPj4gwqAgwqAgwqAgwqAgwqB0 aGUgbm90aWNlIHJlcG9ydC4gSnVzdCBnb3RvIGV4aXQuIFdlIGtub3cgdGhpcyBpcyB0aGUgY2Fz ZQo+Pgo+IC0tCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUg InVuc3Vic2NyaWJlIGxpbnV4LXJkbWEiIGluCj4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1h am9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKPiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0IMKgaHR0cDov L3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCj4K
--
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): f0e08f230910300823j56edb800nf88efca23165bf5-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org
Quoted 6 lines · Hal Rosenstock
Quoted 4 lines
In general: function
trap_rcv_process_request()already has 400 lines of code and adding there more lines without simplifying flows makes me nervous.Are you going to block this change until such restructure ?
I would prefer to improve it at least in a part where patch adds even more flows. Also there are many issues yet without restructuring.
Quoted 23 lines
Quoted 23 lines
Quoted 22 lines
- /* Check for node description update. IB Spec v1.2.1 pg 823 */
- if (ib_notice_is_generic(p_ntci)&&
-cl_ntoh16(p_ntci->g_or_v.generic.trap_num)== 144 &&
-p_ntci->data_details.ntc_144.local_changes&TRAP_144_MASK_OTHER_LOCAL_CHANGES&&
-p_ntci->data_details.ntc_144.change_flgs&TRAP_144_MASK_NODE_DESCRIPTION_CHANGE) {
-OSM_LOG(sm->p_log, OSM_LOG_INFO, "Trap 144 Node description update\n"); -
- if (p_physp) {
-CL_PLOCK_ACQUIRE(sm->p_lock);
-osm_req_get_node_desc(sm, p_physp);
-CL_PLOCK_RELEASE(sm->p_lock);
- } else
- OSM_LOG(sm->p_log,OSM_LOG_ERROR,
- "ERR 3812: No physical port found for "
- "trap 144: \"node description update\"\n");
- }
+ if (ib_notice_is_generic(p_ntci)) {
+ /* Check for node description update. IB Spec v1.2.1 pg 823 */
+ if (cl_ntoh16(p_ntci->g_or_v.generic.trap_num)== 144) {
+ /* update port's capability mask (in PortInfo) */
+p_physp->port_info.capability_mask=p_ntci->data_details.ntc_144.new_cap_mask;
Quoted 3 lines
Quoted 1 line
Hmm, could this introduce some issues?
Like what ?
Like ignoring isSM bit and maybe some other "problematic" bits which required SM DB update.
Quoted 56 lines
Quoted 56 lines
Quoted 3 lines
+ if (
p_ntci->data_details.ntc_144.local_changes&TRAP_144_MASK_OTHER_LOCAL_CHANGES) {
+ if (p_ntci->data_details.ntc_144.change_flgs&TRAP_144_MASK_NODE_DESCRIPTION_CHANGE) {if ((
p_ntci->data_details.ntc_144.local_changes&TRAP_144_MASK_OTHER_LOCAL_CHANGES) && (p_ntci->data_details.ntc_144.change_flgs&TRAP_144_MASK_NODE_DESCRIPTION_CHANGE)) {Quoted 8 lines
+ OSM_LOG(sm->p_log,
OSM_LOG_INFO,
+ "Trap 144 Node description update\n"); +
+ if (p_physp) {
+CL_PLOCK_ACQUIRE(sm->p_lock);
+osm_req_get_node_desc(sm, p_physp);
+CL_PLOCK_RELEASE(sm->p_lock);
+ } elseQuoted 8 lines
+ OSM_LOG(sm->p_log,
OSM_LOG_ERROR,
+ "ERR 3812: No physical port found for "
+ "trap 144: \"node description update\"\n");
+ }
+ }
+ if (p_ntci->data_details.ntc_144.change_flgs&TRAP_144_MASK_LINK_WIDTH_ENABLE_CHANGE||
+p_ntci->data_details.ntc_144.change_flgs&TRAP_144_MASK_LINK_SPEED_ENABLE_CHANGE||
+p_ntci->data_details.ntc_144.change_flgs&TRAP_144_MASK_SM_PRIORITY_CHANGE)if ((
p_ntci->data_details.ntc_144.change_flgs& (TRAP_144_MASK_LINK_WIDTH_ENABLE_CHANGE|TRAP_144_MASK_LINK_SPEED_ENABLE_CHANGE|TRAP_144_MASK_SM_PRIORITY_CHANGE)))Quoted 23 lines
+
is_trap144_sweep= TRUE;
+ }- /* do a sweep if we received a trap */
- if (sm->p_subn->opt.sweep_on_trap) {
- /* if this is trap number 128 orrun_heavy_sweepis TRUE -
- update theforce_heavy_sweepflag of the subnet.
- Sweep also on traps 144/145 - these traps signal a change of
- certain port capabilities/system image guid.
- TODO: In the future this can be changed to just getting
- PortInfo on this port instead of sweeping the entire subnet. */
- if (ib_notice_is_generic(p_ntci)&&- (cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == 128 || - cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == 144 || - cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == 145 ||- run_heavy_sweep)) {
- OSM_LOG(sm->p_log,OSM_LOG_VERBOSE,
- "Forcing heavy sweep. Received trap:%u\n",
-cl_ntoh16(p_ntci->g_or_v.generic.trap_num));
+ if (cl_ntoh16(p_ntci->g_or_v.generic.trap_num)== 145) {
+ /* update system image guid (in NodeInfo) */
+p_node=osm_physp_get_node_ptr(p_physp);
+ if (p_node)
Quoted 5 lines
Quoted 1 line
When '
p_node' could be NULL?It's just a possible return from
osm_physp_get_node_ptrand wanted to be sure this was not the case before settingnode_info. Should this be eliminated ?
If p_physp->p_node cannot be NULL legally, then the check should be eliminated in order to not hide an errors and to not eat cpu cycles.
Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
+
p_node->node_info.node_guid=p_ntci->data_details.ntc_145.new_sys_guid;Didn't you mean 'node_info.sys_guid' and 'node_info.node_guid'?
Just
sys_guid.
Sorry typo, I tried to ask: shouldn't be:
p_node->node_info.sys_guid = p_ntci->data_details.ntc_145.new_sys_guid;
, instead?
Quoted 14 lines
Quoted 14 lines
Quoted 13 lines
+ }
+
+ /* do a sweep if we received a trap */
+ if (sm->p_subn->opt.sweep_on_trap) {
+ /* if this is trap number 128 orrun_heavy_sweepis
+ TRUE - update theforce_heavy_sweepflag of the
+ subnet. Also, sweep on certain types of trap 144.
+ TODO: In the future this can be changed to just
+ getting PortInfo on this port instead of sweeping
+ the entire subnet. */
+ if (cl_ntoh16(p_ntci->g_or_v.generic.trap_num)== 128 ||
+is_trap144_sweep||run_heavy_sweep) {
Quoted 5 lines
Quoted 2 lines
It looks that prevents sweeping on PortInfo:CapMask change which is effectively breaks at least SM handover - new SM will be undetected.
Yes, CapMask change should be included along with the other local changes to cause sweep.
So this should change the patch.
Sasha
--
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
T24gU3VuLCBOb3YgMSwgMjAwOSBhdCAxMTo0OSBBTSwgU2FzaGEgS2hhcHlvcnNreSA8c2FzaGFr QHZvbHRhaXJlLmNvbT4gd3JvdGU6Cj4gT24gMTE6MjMgRnJpIDMwIE9jdCDCoCDCoCAsIEhhbCBS b3NlbnN0b2NrIHdyb3RlOgo+PiA+Cj4+ID4gSW4gZ2VuZXJhbDogZnVuY3Rpb24gdHJhcF9yY3Zf cHJvY2Vzc19yZXF1ZXN0KCkgYWxyZWFkeSBoYXMgNDAwIGxpbmVzIG9mCj4+ID4gY29kZSBhbmQg YWRkaW5nIHRoZXJlIG1vcmUgbGluZXMgd2l0aG91dCBzaW1wbGlmeWluZyBmbG93cyBtYWtlcyBt ZQo+PiA+IG5lcnZvdXMuCj4+Cj4+IEFyZSB5b3UgZ29pbmcgdG8gYmxvY2sgdGhpcyBjaGFuZ2Ug dW50aWwgc3VjaCByZXN0cnVjdHVyZSA/Cj4KPiBJIHdvdWxkIHByZWZlciB0byBpbXByb3ZlIGl0 IGF0IGxlYXN0IGluIGEgcGFydCB3aGVyZSBwYXRjaCBhZGRzIGV2ZW4KPiBtb3JlIGZsb3dzLiBB bHNvIHRoZXJlIGFyZSBtYW55IGlzc3VlcyB5ZXQgd2l0aG91dCByZXN0cnVjdHVyaW5nLgoKVGhl IGxhdHRlciBpcyBhIGhvcnNlIG9mIGEgZGlmZmVyZW50IGNvbG9yIElNTy4KCj4+Cj4+ID4+IC0g wqAgwqAgLyogQ2hlY2sgZm9yIG5vZGUgZGVzY3JpcHRpb24gdXBkYXRlLiBJQiBTcGVjIHYxLjIu MSBwZyA4MjMgKi8KPj4gPj4gLSDCoCDCoCBpZiAoaWJfbm90aWNlX2lzX2dlbmVyaWMocF9udGNp KSAmJgo+PiA+PiAtIMKgIMKgIMKgIMKgIGNsX250b2gxNihwX250Y2ktPmdfb3Jfdi5nZW5lcmlj LnRyYXBfbnVtKSA9PSAxNDQgJiYKPj4gPj4gLSDCoCDCoCDCoCDCoCBwX250Y2ktPmRhdGFfZGV0 YWlscy5udGNfMTQ0LmxvY2FsX2NoYW5nZXMgJiBUUkFQXzE0NF9NQVNLX09USEVSX0xPQ0FMX0NI QU5HRVMgJiYKPj4gPj4gLSDCoCDCoCDCoCDCoCBwX250Y2ktPmRhdGFfZGV0YWlscy5udGNfMTQ0 LmNoYW5nZV9mbGdzICYgVFJBUF8xNDRfTUFTS19OT0RFX0RFU0NSSVBUSU9OX0NIQU5HRSkgewo+ PiA+PiAtIMKgIMKgIMKgIMKgIMKgIMKgIE9TTV9MT0coc20tPnBfbG9nLCBPU01fTE9HX0lORk8s ICJUcmFwIDE0NCBOb2RlIGRlc2NyaXB0aW9uIHVwZGF0ZVxuIik7Cj4+ID4+IC0KPj4gPj4gLSDC oCDCoCDCoCDCoCDCoCDCoCBpZiAocF9waHlzcCkgewo+PiA+PiAtIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIENMX1BMT0NLX0FDUVVJUkUoc20tPnBfbG9jayk7Cj4+ID4+IC0gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgb3NtX3JlcV9nZXRfbm9kZV9kZXNjKHNtLCBwX3BoeXNw KTsKPj4gPj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBDTF9QTE9DS19SRUxFQVNF KHNtLT5wX2xvY2spOwo+PiA+PiAtIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZQo+PiA+PiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIE9TTV9MT0coc20tPnBfbG9nLCBPU01fTE9HX0VS Uk9SLAo+PiA+PiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJF UlIgMzgxMjogTm8gcGh5c2ljYWwgcG9ydCBmb3VuZCBmb3IgIgo+PiA+PiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJ0cmFwIDE0NDogXCJub2RlIGRlc2NyaXB0 aW9uIHVwZGF0ZVwiXG4iKTsKPj4gPj4gLSDCoCDCoCB9Cj4+ID4+ICsgwqAgwqAgaWYgKGliX25v dGljZV9pc19nZW5lcmljKHBfbnRjaSkpIHsKPj4gPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCAvKiBD aGVjayBmb3Igbm9kZSBkZXNjcmlwdGlvbiB1cGRhdGUuIElCIFNwZWMgdjEuMi4xIHBnIDgyMyAq Lwo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChjbF9udG9oMTYocF9udGNpLT5nX29yX3Yu Z2VuZXJpYy50cmFwX251bSkgPT0gMTQ0KSB7Cj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgLyogdXBkYXRlIHBvcnQncyBjYXBhYmlsaXR5IG1hc2sgKGluIFBvcnRJbmZvKSAq Lwo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBfcGh5c3AtPnBvcnRfaW5m by5jYXBhYmlsaXR5X21hc2sgPSBwX250Y2ktPmRhdGFfZGV0YWlscy5udGNfMTQ0Lm5ld19jYXBf bWFzazsKPj4gPgo+PiA+IEhtbSwgY291bGQgdGhpcyBpbnRyb2R1Y2Ugc29tZSBpc3N1ZXM/Cj4+ Cj4+IExpa2Ugd2hhdCA/Cj4KPiBMaWtlIGlnbm9yaW5nIGlzU00gYml0IGFuZCBtYXliZSBzb21l IG90aGVyICJwcm9ibGVtYXRpYyIgYml0cyB3aGljaAo+IHJlcXVpcmVkIFNNIERCIHVwZGF0ZS4K CllvdSBoYWQgYWxyZWFkeSBwb2ludGVkIHRoYXQgaXNzdWUgb3V0IGVsc2V3aGVyZSBpbiB5b3Vy IGVtYWlsLgoKPj4KPj4gPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocF9u dGNpLT5kYXRhX2RldGFpbHMubnRjXzE0NC5sb2NhbF9jaGFuZ2VzICYgVFJBUF8xNDRfTUFTS19P VEhFUl9MT0NBTF9DSEFOR0VTKSB7Cj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgaWYgKHBfbnRjaS0+ZGF0YV9kZXRhaWxzLm50Y18xNDQuY2hhbmdlX2Zs Z3MgJiBUUkFQXzE0NF9NQVNLX05PREVfREVTQ1JJUFRJT05fQ0hBTkdFKSB7Cj4+ID4KPj4gPiDC oCDCoCDCoCDCoGlmICgocF9udGNpLT5kYXRhX2RldGFpbHMubnRjXzE0NC5sb2NhbF9jaGFuZ2Vz ICYKPj4gPiDCoCDCoCDCoCDCoCDCoCDCoCBUUkFQXzE0NF9NQVNLX09USEVSX0xPQ0FMX0NIQU5H RVMpICYmCj4+ID4gwqAgwqAgwqAgwqAgwqAgwqAocF9udGNpLT5kYXRhX2RldGFpbHMubnRjXzE0 NC5jaGFuZ2VfZmxncyAmCj4+ID4gwqAgwqAgwqAgwqAgwqAgwqAgVFJBUF8xNDRfTUFTS19OT0RF X0RFU0NSSVBUSU9OX0NIQU5HRSkpIHsKPj4gPgo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIE9TTV9MT0coc20tPnBfbG9nLCBPU01f TE9HX0lORk8sCj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgIlRyYXAgMTQ0IE5vZGUgZGVzY3JpcHRpb24gdXBk YXRlXG4iKTsKPj4gPj4gKwo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwX3BoeXNwKSB7Cj4+ID4+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQ0xf UExPQ0tfQUNRVUlSRShzbS0+cF9sb2NrKTsKPj4gPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBvc21fcmVxX2dldF9u b2RlX2Rlc2Moc20sIHBfcGh5c3ApOwo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIENMX1BMT0NLX1JFTEVBU0Uo c20tPnBfbG9jayk7Cj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlCj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgT1NNX0xPRyhzbS0+cF9s b2csIE9TTV9MT0dfRVJST1IsCj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgIkVSUiAzODEy OiBObyBwaHlzaWNhbCBwb3J0IGZvdW5kIGZvciAiCj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgInRyYXAgMTQ0OiBcIm5vZGUgZGVzY3JpcHRpb24gdXBkYXRlXCJcbiIpOwo+PiA+PiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPj4gPj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgaWYgKHBfbnRjaS0+ZGF0YV9kZXRhaWxzLm50Y18xNDQuY2hhbmdlX2ZsZ3MgJiBUUkFQ XzE0NF9NQVNLX0xJTktfV0lEVEhfRU5BQkxFX0NIQU5HRSB8fAo+PiA+PiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBfbnRjaS0+ZGF0YV9kZXRhaWxzLm50Y18xNDQuY2hh bmdlX2ZsZ3MgJiBUUkFQXzE0NF9NQVNLX0xJTktfU1BFRURfRU5BQkxFX0NIQU5HRSB8fAo+PiA+ PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBfbnRjaS0+ZGF0YV9kZXRh aWxzLm50Y18xNDQuY2hhbmdlX2ZsZ3MgJiBUUkFQXzE0NF9NQVNLX1NNX1BSSU9SSVRZX0NIQU5H RSkKPj4gPgo+PiA+IMKgIMKgIMKgIMKgaWYgKChwX250Y2ktPmRhdGFfZGV0YWlscy5udGNfMTQ0 LmNoYW5nZV9mbGdzICYKPj4gPiDCoCDCoCDCoCDCoCDCoCDCoCAoVFJBUF8xNDRfTUFTS19MSU5L X1dJRFRIX0VOQUJMRV9DSEFOR0UgfAo+PiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgVFJBUF8xNDRf TUFTS19MSU5LX1NQRUVEX0VOQUJMRV9DSEFOR0UgfAo+PiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKg VFJBUF8xNDRfTUFTS19TTV9QUklPUklUWV9DSEFOR0UpKSkKPj4gPgo+PiA+Cj4+ID4+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaXNfdHJhcDE0NF9zd2VlcCA9 IFRSVUU7Cj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgfQo+PiA+Pgo+PiA+PiAtIMKgIMKgIC8q IGRvIGEgc3dlZXAgaWYgd2UgcmVjZWl2ZWQgYSB0cmFwICovCj4+ID4+IC0gwqAgwqAgaWYgKHNt LT5wX3N1Ym4tPm9wdC5zd2VlcF9vbl90cmFwKSB7Cj4+ID4+IC0gwqAgwqAgwqAgwqAgwqAgwqAg LyogaWYgdGhpcyBpcyB0cmFwIG51bWJlciAxMjggb3IgcnVuX2hlYXZ5X3N3ZWVwIGlzIFRSVUUg LQo+PiA+PiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdXBkYXRlIHRoZSBmb3JjZV9oZWF2eV9z d2VlcCBmbGFnIG9mIHRoZSBzdWJuZXQuCj4+ID4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBT d2VlcCBhbHNvIG9uIHRyYXBzIDE0NC8xNDUgLSB0aGVzZSB0cmFwcyBzaWduYWwgYSBjaGFuZ2Ug b2YKPj4gPj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNlcnRhaW4gcG9ydCBjYXBhYmlsaXRp ZXMvc3lzdGVtIGltYWdlIGd1aWQuCj4+ID4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBUT0RP OiBJbiB0aGUgZnV0dXJlIHRoaXMgY2FuIGJlIGNoYW5nZWQgdG8ganVzdCBnZXR0aW5nCj4+ID4+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBQb3J0SW5mbyBvbiB0aGlzIHBvcnQgaW5zdGVhZCBv ZiBzd2VlcGluZyB0aGUgZW50aXJlIHN1Ym5ldC4gKi8KPj4gPj4gLSDCoCDCoCDCoCDCoCDCoCDC oCBpZiAoaWJfbm90aWNlX2lzX2dlbmVyaWMocF9udGNpKSAmJgo+PiA+PiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIChjbF9udG9oMTYocF9udGNpLT5nX29yX3YuZ2VuZXJpYy50cmFwX251bSkg PT0gMTI4IHx8Cj4+ID4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjbF9udG9oMTYocF9u dGNpLT5nX29yX3YuZ2VuZXJpYy50cmFwX251bSkgPT0gMTQ0IHx8Cj4+ID4+IC0gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBjbF9udG9oMTYocF9udGNpLT5nX29yX3YuZ2VuZXJpYy50cmFwX251 bSkgPT0gMTQ1IHx8Cj4+ID4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBydW5faGVhdnlf c3dlZXApKSB7Cj4+ID4+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgT1NNX0xPRyhz bS0+cF9sb2csIE9TTV9MT0dfVkVSQk9TRSwKPj4gPj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCAiRm9yY2luZyBoZWF2eSBzd2VlcC4gUmVjZWl2ZWQgdHJhcDol dVxuIiwKPj4gPj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBj bF9udG9oMTYocF9udGNpLT5nX29yX3YuZ2VuZXJpYy50cmFwX251bSkpOwo+PiA+PiArIMKgIMKg IMKgIMKgIMKgIMKgIGlmIChjbF9udG9oMTYocF9udGNpLT5nX29yX3YuZ2VuZXJpYy50cmFwX251 bSkgPT0gMTQ1KSB7Cj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogdXBk YXRlIHN5c3RlbSBpbWFnZSBndWlkIChpbiBOb2RlSW5mbykgKi8KPj4gPj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBwX25vZGUgPSBvc21fcGh5c3BfZ2V0X25vZGVfcHRyKHBfcGh5 c3ApOwo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwX25vZGUpCj4+ ID4KPj4gPiBXaGVuICdwX25vZGUnIGNvdWxkIGJlIE5VTEw/Cj4+Cj4+IEl0J3MganVzdCBhIHBv c3NpYmxlIHJldHVybiBmcm9tIG9zbV9waHlzcF9nZXRfbm9kZV9wdHIgYW5kIHdhbnRlZCB0bwo+ PiBiZSBzdXJlIHRoaXMgd2FzIG5vdCB0aGUgY2FzZSBiZWZvcmUgc2V0dGluZyBub2RlX2luZm8u IFNob3VsZCB0aGlzIGJlCj4+IGVsaW1pbmF0ZWQgPwo+Cj4gSWYgcF9waHlzcC0+cF9ub2RlIGNh bm5vdCBiZSBOVUxMIGxlZ2FsbHksIHRoZW4gdGhlIGNoZWNrIHNob3VsZCBiZQo+IGVsaW1pbmF0 ZWQgaW4gb3JkZXIgdG8gbm90IGhpZGUgYW4gZXJyb3JzIGFuZCB0byBub3QgZWF0IGNwdSBjeWNs ZXMuCj4KPj4KPj4gPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBwX25vZGUtPm5vZGVfaW5mby5ub2RlX2d1aWQgPSBwX250Y2ktPmRhdGFfZGV0YWlscy5udGNf MTQ1Lm5ld19zeXNfZ3VpZDsKPj4gPgo+PiA+IERpZG4ndCB5b3UgbWVhbiAnbm9kZV9pbmZvLnN5 c19ndWlkJyBhbmQgJ25vZGVfaW5mby5ub2RlX2d1aWQnPwo+Pgo+PiBKdXN0IHN5c19ndWlkLgo+ Cj4gU29ycnkgdHlwbywgSSB0cmllZCB0byBhc2s6IHNob3VsZG4ndCBiZToKPgo+IMKgIMKgIMKg IMKgcF9ub2RlLT5ub2RlX2luZm8uc3lzX2d1aWQgPSBwX250Y2ktPmRhdGFfZGV0YWlscy5udGNf MTQ1Lm5ld19zeXNfZ3VpZDsKPgo+ICwgaW5zdGVhZD8KClllcywgdGhhdCdzIHdoYXQgSSBtZWFu dCB3aGVuIEkgd3JvdGUgImp1c3Qgc3lzX2d1aWQiLgoKPj4KPj4gPj4gKyDCoCDCoCDCoCDCoCDC oCDCoCB9Cj4+ID4+ICsKPj4gPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCAvKiBkbyBhIHN3ZWVwIGlm IHdlIHJlY2VpdmVkIGEgdHJhcCAqLwo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChzbS0+ cF9zdWJuLT5vcHQuc3dlZXBfb25fdHJhcCkgewo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIC8qIGlmIHRoaXMgaXMgdHJhcCBudW1iZXIgMTI4IG9yIHJ1bl9oZWF2eV9zd2Vl cCBpcwo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgVFJVRSAtIHVw ZGF0ZSB0aGUgZm9yY2VfaGVhdnlfc3dlZXAgZmxhZyBvZiB0aGUKPj4gPj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN1Ym5ldC4gQWxzbywgc3dlZXAgb24gY2VydGFpbiB0 eXBlcyBvZiB0cmFwIDE0NC4KPj4gPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoFRPRE86IEluIHRoZSBmdXR1cmUgdGhpcyBjYW4gYmUgY2hhbmdlZCB0byBqdXN0Cj4+ID4+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBnZXR0aW5nIFBvcnRJbmZvIG9u IHRoaXMgcG9ydCBpbnN0ZWFkIG9mIHN3ZWVwaW5nCj4+ID4+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqB0aGUgZW50aXJlIHN1Ym5ldC4gKi8KPj4gPj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoY2xfbnRvaDE2KHBfbnRjaS0+Z19vcl92LmdlbmVyaWMu dHJhcF9udW0pID09IDEyOCB8fAo+PiA+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGlzX3RyYXAxNDRfc3dlZXAgfHwgcnVuX2hlYXZ5X3N3ZWVwKSB7Cj4+ID4KPj4gPiBJ dCBsb29rcyB0aGF0IHByZXZlbnRzIHN3ZWVwaW5nIG9uIFBvcnRJbmZvOkNhcE1hc2sgY2hhbmdl IHdoaWNoCj4+ID4gaXMgZWZmZWN0aXZlbHkgYnJlYWtzIGF0IGxlYXN0IFNNIGhhbmRvdmVyIC0g bmV3IFNNIHdpbGwgYmUgdW5kZXRlY3RlZC4KPj4KPj4gWWVzLCBDYXBNYXNrIGNoYW5nZSBzaG91 bGQgYmUgaW5jbHVkZWQgYWxvbmcgd2l0aCB0aGUgb3RoZXIgbG9jYWwKPj4gY2hhbmdlcyB0byBj YXVzZSBzd2VlcC4KPgo+IFNvIHRoaXMgc2hvdWxkIGNoYW5nZSB0aGUgcGF0Y2guCgpZZXMuCgot LSBIYWwKCj4gU2FzaGEKPgo=
--
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