LNET_MSG_STATUS_REMOTE_ERROR,
LNET_MSG_STATUS_REMOTE_DROPPED,
LNET_MSG_STATUS_REMOTE_TIMEOUT,
- LNET_MSG_STATUS_NETWORK_TIMEOUT
+ LNET_MSG_STATUS_NETWORK_TIMEOUT,
+ LNET_MSG_STATUS_END,
};
struct lnet_rsp_tracker {
struct list_head rspt_on_list;
/* cpt to lock */
int rspt_cpt;
+ /* nid of next hop */
+ lnet_nid_t rspt_next_hop_nid;
/* deadline of the REPLY/ACK */
ktime_t rspt_deadline;
/* parent MD */
LNET_NET_STATE_DELETING
};
-#define LNET_NI_STATE_INIT (1 << 0)
-#define LNET_NI_STATE_ACTIVE (1 << 1)
-#define LNET_NI_STATE_FAILED (1 << 2)
-#define LNET_NI_STATE_RECOVERY_PENDING (1 << 3)
-#define LNET_NI_STATE_DELETING (1 << 4)
+enum lnet_ni_state {
+ /* initial state when NI is created */
+ LNET_NI_STATE_INIT = 0,
+ /* set when NI is brought up */
+ LNET_NI_STATE_ACTIVE,
+ /* set when NI is being shutdown */
+ LNET_NI_STATE_DELETING,
+};
+
+#define LNET_NI_RECOVERY_PENDING BIT(0)
+#define LNET_NI_RECOVERY_FAILED BIT(1)
enum lnet_stats_type {
LNET_STATS_TYPE_SEND = 0,
/* chain on the lnet_net structure */
struct list_head ni_netlist;
- /* chain on net_ni_cpt */
- struct list_head ni_cptlist;
-
/* chain on the recovery queue */
struct list_head ni_recovery;
/* my health status */
struct lnet_ni_status *ni_status;
- /* NI FSM */
- __u32 ni_state;
+ /* NI FSM. Protected by lnet_ni_lock() */
+ enum lnet_ni_state ni_state;
+
+ /* Recovery state. Protected by lnet_ni_lock() */
+ __u32 ni_recovery_state;
/* per NI LND tunables */
struct lnet_lnd_tunables ni_lnd_tunables;
#define LNET_PEER_NI_NON_MR_PREF (1 << 0)
/* peer is being recovered. */
#define LNET_PEER_NI_RECOVERY_PENDING (1 << 1)
+/* recovery ping failed */
+#define LNET_PEER_NI_RECOVERY_FAILED (1 << 2)
/* peer is being deleted */
-#define LNET_PEER_NI_DELETING (1 << 2)
+#define LNET_PEER_NI_DELETING (1 << 3)
struct lnet_peer {
/* chain on pt_peer_list */