unsigned long timestamp, newest_last_rx, timeout;
int last_seq;
struct lnet_hdr hdr;
+ struct lnet_nid srcnid;
ENTRY;
/* Short circuit if the ep_handle is null.
/* only get SMSG payload for IMMEDIATE */
atomic64_add(msg->gnm_payload_len, &conn->gnc_device->gnd_short_rxbytes);
lnet_hdr_from_nid4(&hdr, &msg->gnm_u.immediate.gnim_hdr);
- rc = lnet_parse(net->gnn_ni, &hdr, msg->gnm_srcnid, rx, 0);
+ lnet_nid4_to_nid(msg->gnm_srcnid, &srcnid);
+ rc = lnet_parse(net->gnn_ni, &hdr, &srcnid, rx, 0);
repost = rc < 0;
break;
case GNILND_MSG_GET_REQ_REV:
case GNILND_MSG_PUT_REQ:
lnet_hdr_from_nid4(&hdr, &msg->gnm_u.putreq.gnprm_hdr);
- rc = lnet_parse(net->gnn_ni, &hdr, msg->gnm_srcnid, rx, 1);
+ lnet_nid4_to_nid(msg->gnm_srcnid, &srcnid);
+ rc = lnet_parse(net->gnn_ni, &hdr, &srcnid, rx, 1);
repost = rc < 0;
break;
case GNILND_MSG_GET_NAK_REV:
case GNILND_MSG_PUT_REQ_REV:
case GNILND_MSG_GET_REQ:
lnet_hdr_from_nid4(&hdr, &msg->gnm_u.get.gngm_hdr);
- rc = lnet_parse(net->gnn_ni, &hdr, msg->gnm_srcnid, rx, 1);
+ lnet_nid4_to_nid(msg->gnm_srcnid, &srcnid);
+ rc = lnet_parse(net->gnn_ni, &hdr, &srcnid, rx, 1);
repost = rc < 0;
break;
int rc2;
int post_credit;
struct lnet_hdr hdr;
+ struct lnet_nid srcnid;
LASSERT (conn->ibc_state >= IBLND_CONN_ESTABLISHED);
case IBLND_MSG_IMMEDIATE:
post_credit = IBLND_POSTRX_DONT_POST;
lnet_hdr_from_nid4(&hdr, &msg->ibm_u.immediate.ibim_hdr);
- rc = lnet_parse(ni, &hdr, msg->ibm_srcnid, rx, 0);
+ lnet_nid4_to_nid(msg->ibm_srcnid, &srcnid);
+ rc = lnet_parse(ni, &hdr, &srcnid, rx, 0);
if (rc < 0) /* repost on error */
post_credit = IBLND_POSTRX_PEER_CREDIT;
break;
case IBLND_MSG_PUT_REQ:
post_credit = IBLND_POSTRX_DONT_POST;
lnet_hdr_from_nid4(&hdr, &msg->ibm_u.putreq.ibprm_hdr);
- rc = lnet_parse(ni, &hdr, msg->ibm_srcnid, rx, 1);
+ lnet_nid4_to_nid(msg->ibm_srcnid, &srcnid);
+ rc = lnet_parse(ni, &hdr, &srcnid, rx, 1);
if (rc < 0) /* repost on error */
post_credit = IBLND_POSTRX_PEER_CREDIT;
break;
case IBLND_MSG_GET_REQ:
post_credit = IBLND_POSTRX_DONT_POST;
lnet_hdr_from_nid4(&hdr, &msg->ibm_u.get.ibgm_hdr);
- rc = lnet_parse(ni, &hdr, msg->ibm_srcnid, rx, 1);
+ lnet_nid4_to_nid(msg->ibm_srcnid, &srcnid);
+ rc = lnet_parse(ni, &hdr, &srcnid, rx, 1);
if (rc < 0) /* repost on error */
post_credit = IBLND_POSTRX_PEER_CREDIT;
break;
EXPORT_SYMBOL(lnet_msgtyp2str);
int
-lnet_parse(struct lnet_ni *ni, struct lnet_hdr *hdr, lnet_nid_t from_nid4,
- void *private, int rdma_req)
+lnet_parse(struct lnet_ni *ni, struct lnet_hdr *hdr,
+ struct lnet_nid *from_nid, void *private, int rdma_req)
{
struct lnet_peer_ni *lpni;
struct lnet_msg *msg;
lnet_pid_t dest_pid;
struct lnet_nid dest_nid;
struct lnet_nid src_nid;
- struct lnet_nid from_nid;
bool push = false;
int for_me;
__u32 type;
LASSERT (!in_interrupt ());
- lnet_nid4_to_nid(from_nid4, &from_nid);
-
type = hdr->type;
src_nid = hdr->src_nid;
dest_nid = hdr->dest_nid;
payload_length = hdr->payload_length;
for_me = nid_same(&ni->ni_nid, &dest_nid);
- cpt = lnet_nid2cpt(&from_nid, ni);
+ cpt = lnet_nid2cpt(from_nid, ni);
CDEBUG(D_NET, "TRACE: %s(%s) <- %s : %s - %s\n",
libcfs_nidstr(&dest_nid),
case LNET_MSG_GET:
if (payload_length > 0) {
CERROR("%s, src %s: bad %s payload %d (0 expected)\n",
- libcfs_nid2str(from_nid4),
+ libcfs_nidstr(from_nid),
libcfs_nidstr(&src_nid),
lnet_msgtyp2str(type), payload_length);
return -EPROTO;
(__u32)(for_me ? LNET_MAX_PAYLOAD : LNET_MTU)) {
CERROR("%s, src %s: bad %s payload %d "
"(%d max expected)\n",
- libcfs_nid2str(from_nid4),
+ libcfs_nidstr(from_nid),
libcfs_nidstr(&src_nid),
lnet_msgtyp2str(type),
payload_length,
default:
CERROR("%s, src %s: Bad message type 0x%x\n",
- libcfs_nid2str(from_nid4),
+ libcfs_nidstr(from_nid),
libcfs_nidstr(&src_nid), type);
return -EPROTO;
}
/* should have gone direct */
CERROR("%s, src %s: Bad dest nid %s "
"(should have been sent direct)\n",
- libcfs_nid2str(from_nid4),
+ libcfs_nidstr(from_nid),
libcfs_nidstr(&src_nid),
libcfs_nidstr(&dest_nid));
return -EPROTO;
* this node's NID on its own network */
CERROR("%s, src %s: Bad dest nid %s "
"(it's my nid but on a different network)\n",
- libcfs_nid2str(from_nid4),
+ libcfs_nidstr(from_nid),
libcfs_nidstr(&src_nid),
libcfs_nidstr(&dest_nid));
return -EPROTO;
if (rdma_req && type == LNET_MSG_GET) {
CERROR("%s, src %s: Bad optimized GET for %s "
"(final destination must be me)\n",
- libcfs_nid2str(from_nid4),
+ libcfs_nidstr(from_nid),
libcfs_nidstr(&src_nid),
libcfs_nidstr(&dest_nid));
return -EPROTO;
if (!the_lnet.ln_routing) {
CERROR("%s, src %s: Dropping message for %s "
"(routing not enabled)\n",
- libcfs_nid2str(from_nid4),
+ libcfs_nidstr(from_nid),
libcfs_nidstr(&src_nid),
libcfs_nidstr(&dest_nid));
goto drop;
if (!list_empty(&the_lnet.ln_test_peers) && /* normally we don't */
fail_peer(&src_nid, 0)) { /* shall we now? */
CERROR("%s, src %s: Dropping %s to simulate failure\n",
- libcfs_nid2str(from_nid4), libcfs_nidstr(&src_nid),
+ libcfs_nidstr(from_nid), libcfs_nidstr(&src_nid),
lnet_msgtyp2str(type));
goto drop;
}
lnet_drop_rule_match(hdr, lnet_nid_to_nid4(&ni->ni_nid), NULL)) {
CDEBUG(D_NET,
"%s, src %s, dst %s: Dropping %s to simulate silent message loss\n",
- libcfs_nid2str(from_nid4), libcfs_nidstr(&src_nid),
+ libcfs_nidstr(from_nid), libcfs_nidstr(&src_nid),
libcfs_nidstr(&dest_nid), lnet_msgtyp2str(type));
goto drop;
}
msg = lnet_msg_alloc();
if (msg == NULL) {
CERROR("%s, src %s: Dropping %s (out of memory)\n",
- libcfs_nid2str(from_nid4), libcfs_nidstr(&src_nid),
+ libcfs_nidstr(from_nid), libcfs_nidstr(&src_nid),
lnet_msgtyp2str(type));
goto drop;
}
msg->msg_offset = 0;
msg->msg_hdr = *hdr;
/* for building message event */
- msg->msg_from = from_nid;
+ msg->msg_from = *from_nid;
if (!for_me) {
msg->msg_target.pid = dest_pid;
msg->msg_target.nid = dest_nid;
}
lnet_net_lock(cpt);
- lpni = lnet_peerni_by_nid_locked(&from_nid, &ni->ni_nid, cpt);
+ lpni = lnet_peerni_by_nid_locked(from_nid, &ni->ni_nid, cpt);
if (IS_ERR(lpni)) {
lnet_net_unlock(cpt);
rc = PTR_ERR(lpni);
CERROR("%s, src %s: Dropping %s (error %d looking up sender)\n",
- libcfs_nid2str(from_nid4), libcfs_nidstr(&src_nid),
+ libcfs_nidstr(from_nid), libcfs_nidstr(&src_nid),
lnet_msgtyp2str(type), rc);
lnet_msg_free(msg);
if (rc == -ESHUTDOWN)
*/
if (((lnet_drop_asym_route && for_me) ||
!lpni->lpni_peer_net->lpn_peer->lp_alive) &&
- LNET_NID_NET(&src_nid) != LNET_NIDNET(from_nid4)) {
+ LNET_NID_NET(&src_nid) != LNET_NID_NET(from_nid)) {
__u32 src_net_id = LNET_NID_NET(&src_nid);
struct lnet_peer *gw = lpni->lpni_peer_net->lpn_peer;
struct lnet_route *route;
* => asymmetric routing detected but forbidden
*/
CERROR("%s, src %s: Dropping asymmetrical route %s\n",
- libcfs_nid2str(from_nid4),
+ libcfs_nidstr(from_nid),
libcfs_nidstr(&src_nid), lnet_msgtyp2str(type));
lnet_msg_free(msg);
goto drop;