}
/* FMA CQ has overflowed: check ALL conns */
- CWARN("Scheduling ALL conns on device %d\n", dev->rad_id);
+ CWARN("FMA CQ overflow: scheduling ALL conns on device %d\n",
+ dev->rad_id);
for (i = 0; i < kranal_data.kra_conn_hash_size; i++) {
"dead socket timeout (seconds)");
static int nconnds = SOCKNAL_NCONND;
-CFS_MODULE_PARM(nconnds, "i", int, 0644,
+CFS_MODULE_PARM(nconnds, "i", int, 0444,
"# connection daemons");
static int min_reconnectms = SOCKNAL_MIN_RECONNECTMS;
#include <portals/lib-p30.h>
+#if 1
+/* Enforce the rule that the target NID must be that of the receiving NI */
+const int allow_destination_aliases = 0;
+#else
+/* Allow NID aliasing experiments */
static int allow_destination_aliases = 0;
CFS_MODULE_PARM(allow_destination_aliases, "i", int, 0644,
"Boolean: don't require strict destination NIDs");
+#endif
static int implicit_loopback = 1;
CFS_MODULE_PARM(implicit_loopback, "i", int, 0644,
- "Boolean: allow destination aliases when sending to yourself");
+ "Boolean: substitute 0@lo when sending to any local NID");
/* forward ref */
static void ptl_commit_md (ptl_libmd_t *md, ptl_msg_t *msg);
if (ni->ni_nal->nal_type != LONAL) {
if (gw_nid != ni->ni_nid) { /* it's not for me */
routing = gw_nid != target.nid; /* will gateway have to forward? */
- } else if (allow_destination_aliases || /* force lonal? */
- implicit_loopback) {
-
+ } else if (implicit_loopback) { /* force lonal? */
PTL_LOCK(flags);
ptl_ni_decref_locked(ni);
ni = ptl_loni;
if (ni == NULL) /* shutdown in progress */
return PTL_FAIL;
- if (implicit_loopback)
- target.nid = ni->ni_nid;
-
- } else { /* barf */
- ptl_ni_decref(ni);
- CERROR("Attempt to send to self via %s, not LONAL\n",
- libcfs_nid2str(target.nid));
- return PTL_FAIL;
+ target.nid = ni->ni_nid;
}
}
}
}
- if (!dup) {
+ if (!dup) { /* Adding a new network? */
list_add_tail(&ne->kpne_list, &kpr_state.kpr_nets);
} else {
dup = 0;
break;
}
- if (dup) {
+ if (dup) { /* Ignore duplicate route entry */
write_unlock_irqrestore(&kpr_state.kpr_rwlock, flags);
PORTAL_FREE(re, sizeof(*re));
PORTAL_FREE(ge, sizeof(*ge));
- return -EINVAL;
+ return 0;
}
}