if (ev_type == LNET_EVENT_SEND) {
/* event for active message */
- lnet_nid4_to_nid(le64_to_cpu(hdr->dest_nid), &ev->target.nid);
- ev->target.pid = le32_to_cpu(hdr->dest_pid);
+ ev->target.nid = hdr->dest_nid;
+ ev->target.pid = hdr->dest_pid;
ev->initiator.nid = LNET_ANY_NID;
ev->initiator.pid = the_lnet.ln_pid;
ev->source.nid = LNET_ANY_NID;
} else {
/* event for passive message */
ev->target.pid = hdr->dest_pid;
- lnet_nid4_to_nid(hdr->dest_nid, &ev->target.nid);
+ ev->target.nid = hdr->dest_nid;
ev->initiator.pid = hdr->src_pid;
/* Multi-Rail: resolve src_nid to "primary" peer NID */
ev->initiator.nid = msg->msg_initiator;
/* Multi-Rail: track source NID. */
ev->source.pid = hdr->src_pid;
- lnet_nid4_to_nid(hdr->src_nid, &ev->source.nid);
+ ev->source.nid = hdr->src_nid;
ev->rlength = hdr->payload_length;
ev->sender = msg->msg_from;
ev->mlength = msg->msg_wanted;
ack_wmd = msg->msg_hdr.msg.put.ack_wmd;
- lnet_prep_send(msg, LNET_MSG_ACK,
- lnet_pid_to_pid4(&msg->msg_ev.source), 0, 0);
+ lnet_prep_send(msg, LNET_MSG_ACK, &msg->msg_ev.source, 0, 0);
msg->msg_hdr.msg.ack.dst_wmd = ack_wmd;
msg->msg_hdr.msg.ack.match_bits = msg->msg_ev.match_bits;
* this message consumed. The message will
* consume another credit when it gets resent.
*/
- lnet_nid4_to_nid(msg->msg_hdr.dest_nid, &msg->msg_target.nid);
+ msg->msg_target.nid = msg->msg_hdr.dest_nid;
lnet_msg_decommit_tx(msg, -EAGAIN);
msg->msg_sending = 0;
msg->msg_receiving = 0;
msg->msg_target_is_router = 0;
CDEBUG(D_NET, "%s->%s:%s:%s - queuing msg (%p) for resend\n",
- libcfs_nid2str(msg->msg_hdr.src_nid),
- libcfs_nid2str(msg->msg_hdr.dest_nid),
+ libcfs_nidstr(&msg->msg_hdr.src_nid),
+ libcfs_nidstr(&msg->msg_hdr.dest_nid),
lnet_msgtyp2str(msg->msg_type),
lnet_health_error2str(msg->msg_health_status), msg);
return 0;
}
- while (!list_empty(&container->msc_resending)) {
- msg = list_entry(container->msc_resending.next,
- struct lnet_msg, msg_list);
+ while ((msg = list_first_entry_or_null(&container->msc_resending,
+ struct lnet_msg,
+ msg_list)) != NULL) {
list_del(&msg->msg_list);
/*
if (!lnet_isrouter(lpni))
handle_remote_health = false;
}
+ /* Do not put my interfaces into peer NI recovery. They should
+ * be handled with local NI recovery.
+ */
+ if (handle_remote_health && lpni &&
+ lnet_nid_to_ni_locked(&lpni->lpni_nid, 0))
+ handle_remote_health = false;
lnet_net_unlock(0);
}
return false;
/* match only health rules */
- if (!lnet_drop_rule_match(&msg->msg_hdr, LNET_NID_ANY,
- hstatus))
+ if (!lnet_drop_rule_match(&msg->msg_hdr, NULL, hstatus))
return false;
CDEBUG(D_NET, "src %s(%s)->dst %s: %s simulate health error: %s\n",
- libcfs_nid2str(msg->msg_hdr.src_nid),
+ libcfs_nidstr(&msg->msg_hdr.src_nid),
libcfs_nidstr(&msg->msg_txni->ni_nid),
- libcfs_nid2str(msg->msg_hdr.dest_nid),
+ libcfs_nidstr(&msg->msg_hdr.dest_nid),
lnet_msgtyp2str(msg->msg_type),
lnet_health_error2str(*hstatus));
}
rc = 0;
- while (!list_empty(&container->msc_finalizing)) {
- msg = list_entry(container->msc_finalizing.next,
- struct lnet_msg, msg_list);
-
+ while ((msg = list_first_entry_or_null(&container->msc_finalizing,
+ struct lnet_msg,
+ msg_list)) != NULL) {
list_del_init(&msg->msg_list);
/* NB drops and regains the lnet lock if it actually does
void
lnet_msg_container_cleanup(struct lnet_msg_container *container)
{
- int count = 0;
+ struct lnet_msg *msg;
+ int count = 0;
if (container->msc_init == 0)
return;
- while (!list_empty(&container->msc_active)) {
- struct lnet_msg *msg;
-
- msg = list_entry(container->msc_active.next,
- struct lnet_msg, msg_activelist);
+ while ((msg = list_first_entry_or_null(&container->msc_active,
+ struct lnet_msg,
+ msg_activelist)) != NULL) {
LASSERT(msg->msg_onactivelist);
msg->msg_onactivelist = 0;
list_del_init(&msg->msg_activelist);