lnet_incr_stats(&msg->msg_txpeer->lpni_stats,
msg->msg_type,
LNET_STATS_TYPE_DROP);
- if (msg->msg_txni)
- lnet_incr_stats(&msg->msg_txni->ni_stats,
- msg->msg_type,
- LNET_STATS_TYPE_DROP);
+
+ lnet_incr_stats(&msg->msg_txni->ni_stats,
+ msg->msg_type,
+ LNET_STATS_TYPE_DROP);
if (rc == -EHOSTUNREACH) {
CNETERR("Dropping message for %s: peer not alive\n",
LASSERT(rxpeerni->lpni_peer_net);
LASSERT(rxpeerni->lpni_peer_net->lpn_peer);
+ spin_lock(&rxpeerni->lpni_lock);
/* give back peer router credits */
msg->msg_peerrtrcredit = 0;
-
- spin_lock(&rxpeerni->lpni_lock);
rxpeerni->lpni_rtrcredits++;
spin_unlock(&rxpeerni->lpni_lock);
/* pick the healthiest peer ni */
if (lpni_healthv < best_lpni_healthv)
continue;
- else if (lpni_healthv > best_lpni_healthv) {
- if (best_lpni_is_preferred)
- best_lpni_is_preferred = false;
+ else if (lpni_healthv > best_lpni_healthv)
goto select_lpni;
- }
if (lpni_sel_prio > best_sel_prio)
continue;
- else if (lpni_sel_prio < best_sel_prio) {
- if (best_lpni_is_preferred)
- best_lpni_is_preferred = false;
+ else if (lpni_sel_prio < best_sel_prio)
goto select_lpni;
- }
- /* if this is a preferred peer use it */
- if (!best_lpni_is_preferred && lpni_is_preferred) {
- best_lpni_is_preferred = true;
+ /* If this is a preferred peer - use it. Otherwise, ignore it */
+ if (!best_lpni_is_preferred && lpni_is_preferred)
goto select_lpni;
- } else if (best_lpni_is_preferred && !lpni_is_preferred) {
- /* this is not the preferred peer so let's ignore
- * it.
- */
+ else if (best_lpni_is_preferred && !lpni_is_preferred)
continue;
- }
if (lpni->lpni_txcredits < best_lpni_credits)
/* We already have a peer that has more credits
net_healthv = lnet_get_net_healthv_locked(net);
net_sel_prio = net->net_sel_priority;
- if (!best_lpn)
+ if (!best_lpn || !best_net)
goto select_lpn;
else
CDEBUG(D_NET,
if (!rspt) {
CERROR("Dropping PUT to %s: ENOMEM on response tracker\n",
libcfs_idstr(target));
+ lnet_msg_free(msg);
return -ENOMEM;
}
INIT_LIST_HEAD(&rspt->rspt_on_list);
if (!rspt) {
CERROR("Dropping GET to %s: ENOMEM on response tracker\n",
libcfs_idstr(target));
+ lnet_msg_free(msg);
return -ENOMEM;
}
INIT_LIST_HEAD(&rspt->rspt_on_list);