<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Reviewed-by: Doug Oucharek <<a href="mailto:dougso@me.com" class="">dougso@me.com</a>>
<div class=""><br class="">
</div>
<div class="">Doug</div>
<div class=""><br class="">
<div style="">
<blockquote type="cite" class="">
<div class="">On Sep 6, 2018, at 5:49 PM, NeilBrown <<a href="mailto:neilb@suse.com" class="">neilb@suse.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">When choosing a cpt to use for a given network (identified by nid),<br class="">
the choice might depend on a particular interface which has<br class="">
already been identified - different interfaces can have different<br class="">
sets of cpts.<br class="">
<br class="">
So add an 'ni' arg to lnet_cpt_of_nid(). If given, choose a cpt<br class="">
from the cpts of that interface. If not given, choose one from<br class="">
the set of all cpts associated with any interface on the network.<br class="">
<br class="">
This is part of<br class="">
   8cbb8cd3e771e7f7e0f99cafc19fad32770dc015<br class="">
      LU-7734 lnet: Multi-Rail local NI split<br class="">
<br class="">
Signed-off-by: NeilBrown <<a href="mailto:neilb@suse.com" class="">neilb@suse.com</a>><br class="">
---<br class="">
.../staging/lustre/include/linux/lnet/lib-lnet.h   |    4 +-<br class="">
.../staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c    |    4 +-<br class="">
.../staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c |    2 -<br class="">
.../staging/lustre/lnet/klnds/socklnd/socklnd.c    |    4 +-<br class="">
drivers/staging/lustre/lnet/lnet/api-ni.c          |   41 ++++++++++++--------<br class="">
drivers/staging/lustre/lnet/lnet/lib-move.c        |   12 +++---<br class="">
drivers/staging/lustre/lnet/lnet/lib-ptl.c         |    2 -<br class="">
drivers/staging/lustre/lnet/lnet/peer.c            |    4 +-<br class="">
drivers/staging/lustre/lnet/lnet/router.c          |    4 +-<br class="">
drivers/staging/lustre/lnet/selftest/brw_test.c    |    2 -<br class="">
drivers/staging/lustre/lnet/selftest/framework.c   |    3 +<br class="">
drivers/staging/lustre/lnet/selftest/selftest.h    |    2 -<br class="">
12 files changed, 48 insertions(+), 36 deletions(-)<br class="">
<br class="">
diff --git a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h<br class="">
index 34509e52bac7..e32dbb854d80 100644<br class="">
--- a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h<br class="">
+++ b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h<br class="">
@@ -395,8 +395,8 @@ lnet_net2rnethash(__u32 net)<br class="">
extern struct lnet_lnd the_lolnd;<br class="">
extern int avoid_asym_router_failure;<br class="">
<br class="">
-int lnet_cpt_of_nid_locked(lnet_nid_t nid);<br class="">
-int lnet_cpt_of_nid(lnet_nid_t nid);<br class="">
+int lnet_cpt_of_nid_locked(lnet_nid_t nid, struct lnet_ni *ni);<br class="">
+int lnet_cpt_of_nid(lnet_nid_t nid, struct lnet_ni *ni);<br class="">
struct lnet_ni *lnet_nid2ni_locked(lnet_nid_t nid, int cpt);<br class="">
struct lnet_ni *lnet_net2ni_locked(__u32 net, int cpt);<br class="">
struct lnet_ni *lnet_net2ni(__u32 net);<br class="">
diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c<br class="">
index ade566d20c69..958ac9a99045 100644<br class="">
--- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c<br class="">
+++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c<br class="">
@@ -320,7 +320,7 @@ int kiblnd_create_peer(struct lnet_ni *ni, struct kib_peer **peerp,<br class="">
{<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct kib_peer *peer;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct kib_net *net = ni->ni_data;<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(nid, ni);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>unsigned long flags;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(net);<br class="">
@@ -643,7 +643,7 @@ struct kib_conn *kiblnd_create_conn(struct kib_peer *peer, struct rdma_cm_id *cm<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>dev = net->ibn_dev;<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer->ibp_nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer->ibp_nid, peer->ibp_ni);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>sched = kiblnd_data.kib_scheds[cpt];<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(sched->ibs_nthreads > 0);<br class="">
diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c<br class="">
index c266940cb2ae..e64c14914924 100644<br class="">
--- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c<br class="">
+++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c<br class="">
@@ -119,7 +119,7 @@ kiblnd_get_idle_tx(struct lnet_ni *ni, lnet_nid_t target)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct kib_tx *tx;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct kib_tx_poolset *tps;<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>tps = net->ibn_tx_ps[lnet_cpt_of_nid(target)];<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>tps = net->ibn_tx_ps[lnet_cpt_of_nid(target, ni)];<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>node = kiblnd_pool_alloc_node(&tps->tps_poolset);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>if (!node)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return NULL;<br class="">
diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c<br class="">
index 2036a0ae5917..ba68bcee90bc 100644<br class="">
--- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c<br class="">
+++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c<br class="">
@@ -101,7 +101,7 @@ static int<br class="">
ksocknal_create_peer(struct ksock_peer **peerp, struct lnet_ni *ni,<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>    struct lnet_process_id id)<br class="">
{<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(id.nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(id.nid, ni);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct ksock_net *net = ni->ni_data;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct ksock_peer *peer;<br class="">
<br class="">
@@ -1099,7 +1099,7 @@ ksocknal_create_conn(struct lnet_ni *ni, struct ksock_route *route,<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(conn->ksnc_proto);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(peerid.nid != LNET_NID_ANY);<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peerid.nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peerid.nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>if (active) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>ksocknal_peer_addref(peer);<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c b/drivers/staging/lustre/lnet/lnet/api-ni.c<br class="">
index c21aef32cdde..6e0b8310574d 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/api-ni.c<br class="">
+++ b/drivers/staging/lustre/lnet/lnet/api-ni.c<br class="">
@@ -713,31 +713,41 @@ lnet_nid_cpt_hash(lnet_nid_t nid, unsigned int number)<br class="">
}<br class="">
<br class="">
int<br class="">
-lnet_cpt_of_nid_locked(lnet_nid_t nid)<br class="">
+lnet_cpt_of_nid_locked(lnet_nid_t nid, struct lnet_ni *ni)<br class="">
{<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>struct lnet_ni *ni;<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>struct lnet_net *net;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>/* must called with hold of lnet_net_lock */<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>if (LNET_CPT_NUMBER == 1)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return 0; /* the only one */<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>/* take lnet_net_lock(any) would be OK */<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>if (!list_empty(&the_lnet.ln_nis_cpt)) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>list_for_each_entry(ni, &the_lnet.ln_nis_cpt, ni_cptlist) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (LNET_NIDNET(ni->ni_nid) != LNET_NIDNET(nid))<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>continue;<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>/*<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>* If NI is provided then use the CPT identified in the NI cpt<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>* list if one exists. If one doesn't exist, then that NI is<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>* associated with all CPTs and it follows that the net it belongs<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>* to is implicitly associated with all CPTs, so just hash the nid<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>* and return that.<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>*/<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>if (ni != NULL) {<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>if (ni->ni_cpts != NULL)<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return ni->ni_cpts[lnet_nid_cpt_hash(nid,<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>    ni->ni_ncpts)];<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>else<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return lnet_nid_cpt_hash(nid, LNET_CPT_NUMBER);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>}<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(ni->ni_cpts);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return ni->ni_cpts[lnet_nid_cpt_hash<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>  (nid,
 ni->ni_ncpts)];<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>}<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>/* no NI provided so look at the net */<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>net = lnet_get_net_locked(LNET_NIDNET(nid));<br class="">
+<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>if (net != NULL && net->net_cpts) {<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>return net->net_cpts[lnet_nid_cpt_hash(nid, net->net_ncpts)];<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>}<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>return lnet_nid_cpt_hash(nid, LNET_CPT_NUMBER);<br class="">
}<br class="">
<br class="">
int<br class="">
-lnet_cpt_of_nid(lnet_nid_t nid)<br class="">
+lnet_cpt_of_nid(lnet_nid_t nid, struct lnet_ni *ni)<br class="">
{<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>int cpt;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>int cpt2;<br class="">
@@ -745,11 +755,10 @@ lnet_cpt_of_nid(lnet_nid_t nid)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>if (LNET_CPT_NUMBER == 1)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return 0; /* the only one */<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>if (list_empty(&the_lnet.ln_nis_cpt))<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>return lnet_nid_cpt_hash(nid, LNET_CPT_NUMBER);<br class="">
-<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>cpt = lnet_net_lock_current();<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt2 = lnet_cpt_of_nid_locked(nid);<br class="">
+<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>cpt2 = lnet_cpt_of_nid_locked(nid, ni);<br class="">
+<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_unlock(cpt);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>return cpt2;<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/lib-move.c b/drivers/staging/lustre/lnet/lnet/lib-move.c<br class="">
index b6e81a693fc3..02cd1a5a466f 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/lib-move.c<br class="">
+++ b/drivers/staging/lustre/lnet/lnet/lib-move.c<br class="">
@@ -1095,7 +1095,9 @@ lnet_send(lnet_nid_t src_nid, struct lnet_msg *msg, lnet_nid_t rtr_nid)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>msg->msg_sending = 1;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(!msg->msg_tx_committed);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(rtr_nid == LNET_NID_ANY ? dst_nid : rtr_nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>local_ni = lnet_net2ni(LNET_NIDNET(dst_nid));<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(rtr_nid == LNET_NID_ANY ? dst_nid : rtr_nid,<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>     local_ni);<br class="">
 again:<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_lock(cpt);<br class="">
<br class="">
@@ -1188,7 +1190,7 @@ lnet_send(lnet_nid_t src_nid, struct lnet_msg *msg, lnet_nid_t rtr_nid)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>* was changed when we release the lock<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>*/<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (rtr_nid != lp->lp_nid) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt2 = lnet_cpt_of_nid_locked(lp->lp_nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt2 = lp->lp_cpt;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (cpt2 != cpt) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (src_ni)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>lnet_ni_decref_locked(src_ni,
 cpt);<br class="">
@@ -1677,7 +1679,7 @@ lnet_parse(struct lnet_ni *ni, struct lnet_hdr *hdr, lnet_nid_t from_nid,<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>payload_length = le32_to_cpu(hdr->payload_length);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>for_me = (ni->ni_nid == dest_nid);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(from_nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(from_nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>switch (type) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>case LNET_MSG_ACK:<br class="">
@@ -2149,7 +2151,7 @@ lnet_create_reply_msg(struct lnet_ni *ni, struct lnet_msg *getmsg)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_msg_attach_md(msg, getmd, getmd->md_offset, getmd->md_length);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_res_unlock(cpt);<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer_id.nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer_id.nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_lock(cpt);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_msg_commit(msg, cpt);<br class="">
@@ -2160,7 +2162,7 @@ lnet_create_reply_msg(struct lnet_ni *ni, struct lnet_msg *getmsg)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>return msg;<br class="">
<br class="">
 drop:<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer_id.nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer_id.nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_lock(cpt);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>the_lnet.ln_counters[cpt]->drop_count++;<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/lib-ptl.c b/drivers/staging/lustre/lnet/lnet/lib-ptl.c<br class="">
index 90ce51801726..c8d8162cc706 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/lib-ptl.c<br class="">
+++ b/drivers/staging/lustre/lnet/lnet/lib-ptl.c<br class="">
@@ -220,7 +220,7 @@ lnet_match2mt(struct lnet_portal *ptl, struct lnet_process_id id, __u64 mbits)<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>/* if it's a unique portal, return match-table hashed by NID */<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>return lnet_ptl_is_unique(ptl) ?<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>      ptl->ptl_mtables[lnet_cpt_of_nid(id.nid)] : NULL;<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>      ptl->ptl_mtables[lnet_cpt_of_nid(id.nid, NULL)] : NULL;<br class="">
}<br class="">
<br class="">
struct lnet_match_table *<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/peer.c b/drivers/staging/lustre/lnet/lnet/peer.c<br class="">
index ed29124ebded..808ce25f1f00 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/peer.c<br class="">
+++ b/drivers/staging/lustre/lnet/lnet/peer.c<br class="">
@@ -270,7 +270,7 @@ lnet_nid2peer_locked(struct lnet_peer **lpp, lnet_nid_t nid, int cpt)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return -ESHUTDOWN;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>/* cpt can be LNET_LOCK_EX if it's called from router functions */<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt2 = cpt != LNET_LOCK_EX ? cpt : lnet_cpt_of_nid_locked(nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>cpt2 = cpt != LNET_LOCK_EX ? cpt : lnet_cpt_of_nid_locked(nid, NULL);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>ptable = the_lnet.ln_peer_tables[cpt2];<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lp = lnet_find_peer_locked(ptable, nid);<br class="">
@@ -362,7 +362,7 @@ lnet_debug_peer(lnet_nid_t nid)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>int rc;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>int cpt;<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(nid, NULL);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_lock(cpt);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>rc = lnet_nid2peer_locked(&lp, nid, cpt);<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/router.c b/drivers/staging/lustre/lnet/lnet/router.c<br class="">
index 72b8ca2b0fc6..5493d13de6d9 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/router.c<br class="">
+++ b/drivers/staging/lustre/lnet/lnet/router.c<br class="">
@@ -1207,7 +1207,7 @@ lnet_router_checker(void *arg)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>version = the_lnet.ln_routers_version;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>list_for_each_entry(rtr, &the_lnet.ln_routers, lp_rtr_list) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt2 = lnet_cpt_of_nid_locked(rtr->lp_nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt2 = rtr->lp_cpt;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (cpt != cpt2) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_unlock(cpt);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt = cpt2;<br class="">
@@ -1693,7 +1693,7 @@ lnet_notify(struct lnet_ni *ni, lnet_nid_t nid, int alive, time64_t when)<br class="">
{<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct lnet_peer *lp = NULL;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>time64_t now = ktime_get_seconds();<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(nid);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(!in_interrupt());<br class="">
<br class="">
diff --git a/drivers/staging/lustre/lnet/selftest/brw_test.c b/drivers/staging/lustre/lnet/selftest/brw_test.c<br class="">
index f1ee219bc8f3..e372ff3044c8 100644<br class="">
--- a/drivers/staging/lustre/lnet/selftest/brw_test.c<br class="">
+++ b/drivers/staging/lustre/lnet/selftest/brw_test.c<br class="">
@@ -124,7 +124,7 @@ brw_client_init(struct sfw_test_instance *tsi)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return -EINVAL;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>list_for_each_entry(tsu, &tsi->tsi_units, tsu_list) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>bulk = srpc_alloc_bulk(lnet_cpt_of_nid(tsu->tsu_dest.nid),<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>bulk = srpc_alloc_bulk(lnet_cpt_of_nid(tsu->tsu_dest.nid, NULL),<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>      off, npg, len,
 opc == LST_BRW_READ);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (!bulk) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>brw_client_fini(tsi);<br class="">
diff --git a/drivers/staging/lustre/lnet/selftest/framework.c b/drivers/staging/lustre/lnet/selftest/framework.c<br class="">
index 944a2a6598fa..a82efc394659 100644<br class="">
--- a/drivers/staging/lustre/lnet/selftest/framework.c<br class="">
+++ b/drivers/staging/lustre/lnet/selftest/framework.c<br class="">
@@ -1013,7 +1013,8 @@ sfw_run_batch(struct sfw_batch *tsb)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>tsu->tsu_loop = tsi->tsi_loop;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>wi = &tsu->tsu_worker;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>swi_init_workitem(wi, sfw_run_test,<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span> lst_test_wq[lnet_cpt_of_nid(tsu->tsu_dest.nid)]);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span> lst_test_wq[lnet_cpt_of_nid(tsu->tsu_dest.nid,<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span> NULL)]);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>swi_schedule_workitem(wi);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>}<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>}<br class="">
diff --git a/drivers/staging/lustre/lnet/selftest/selftest.h b/drivers/staging/lustre/lnet/selftest/selftest.h<br class="">
index 9dbb0a51d430..edf783af90e8 100644<br class="">
--- a/drivers/staging/lustre/lnet/selftest/selftest.h<br class="">
+++ b/drivers/staging/lustre/lnet/selftest/selftest.h<br class="">
@@ -527,7 +527,7 @@ srpc_init_client_rpc(struct srpc_client_rpc *rpc, struct lnet_process_id peer,<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>INIT_LIST_HEAD(&rpc->crpc_list);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>swi_init_workitem(&rpc->crpc_wi, srpc_send_rpc,<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span> lst_test_wq[lnet_cpt_of_nid(peer.nid)]);<br class="">
+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span> lst_test_wq[lnet_cpt_of_nid(peer.nid, NULL)]);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>spin_lock_init(&rpc->crpc_lock);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>atomic_set(&rpc->crpc_refcount, 1); /* 1 ref for caller */<br class="">
<br class="">
<br class="">
<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>