X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lnet%2Fklnds%2Fptllnd%2Fptllnd.h;h=3df2c3a29d8f613dbad9f5900c7d5a51874d35e0;hb=027fddd052930686339e2067c6869d0846563ffe;hp=598c4b811c53150b7e0694db43b1f7039c5f9273;hpb=ebe2426e8ee140c9ee3fef34eef99fb8fd8649ea;p=fs%2Flustre-release.git diff --git a/lnet/klnds/ptllnd/ptllnd.h b/lnet/klnds/ptllnd/ptllnd.h index 598c4b8..3df2c3a 100755 --- a/lnet/klnds/ptllnd/ptllnd.h +++ b/lnet/klnds/ptllnd/ptllnd.h @@ -90,6 +90,7 @@ typedef struct int *kptl_max_msg_size; /* max immd message size*/ int *kptl_peer_hash_table_size; /* # slots in peer hash table */ int *kptl_reschedule_loops; /* scheduler yield loops */ + int *kptl_ack_puts; /* make portals ack PUTs */ #ifdef CRAY_XT3 int *kptl_ptltrace_on_timeout; /* dump pltrace on timeout? */ char **kptl_ptltrace_basename; /* ptltrace dump file basename */ @@ -125,6 +126,7 @@ typedef struct kptl_rx /* receive message */ kptl_rx_buffer_t *rx_rxb; /* the rx buffer pointer */ kptl_msg_t *rx_msg; /* received message */ int rx_nob; /* received message size */ + unsigned long rx_treceived; /* time received */ ptl_process_id_t rx_initiator; /* sender's address */ #ifdef CRAY_XT3 ptl_uid_t rx_uid; /* sender's uid */ @@ -182,6 +184,7 @@ typedef struct kptl_tx /* transmit message */ enum kptl_tx_type tx_type; /* small msg/{put,get}{req,resp} */ int tx_active:1; /* queued on the peer */ int tx_idle:1; /* on the free list */ + int tx_acked:1; /* portals ACK wanted (for debug only) */ kptl_eventarg_t tx_msg_eventarg; /* event->md.user_ptr */ kptl_eventarg_t tx_rdma_eventarg; /* event->md.user_ptr */ int tx_status; /* the status of this tx descriptor */ @@ -192,8 +195,9 @@ typedef struct kptl_tx /* transmit message */ kptl_msg_t *tx_msg; /* the message data */ kptl_peer_t *tx_peer; /* the peer this is waiting on */ unsigned long tx_deadline; /* deadline */ - ptl_md_t tx_rdma_md; /* rdma buffer */ - kptl_fragvec_t *tx_rdma_frags; /* buffer fragments */ + unsigned long tx_tposted; /* time posted */ + ptl_md_t tx_rdma_md; /* rdma descriptor */ + kptl_fragvec_t *tx_frags; /* buffer fragments */ } kptl_tx_t; enum kptllnd_peer_state @@ -221,8 +225,11 @@ struct kptl_peer int peer_sent_hello; /* have I sent HELLO? */ int peer_credits; /* number of send credits */ int peer_outstanding_credits;/* number of peer credits to return */ - int peer_active_rxs; /* # rx-es being handled */ + int peer_sent_credits; /* #msg buffers posted for peer */ + int peer_max_msg_size; /* peer's rx buffer size */ int peer_error; /* errno on closing this peer */ + int peer_retry_noop; /* need to retry returning credits */ + int peer_check_stamp; /* watchdog check stamp */ cfs_time_t peer_last_alive; /* when (in jiffies) I was last alive */ __u64 peer_next_matchbits; /* Next value to register RDMA from peer */ __u64 peer_last_matchbits_seen; /* last matchbits used to RDMA to peer */ @@ -319,6 +326,7 @@ void kptllnd_tunables_fini(void); const char *kptllnd_evtype2str(int evtype); const char *kptllnd_msgtype2str(int msgtype); +const char *kptllnd_errtype2str(int errtype); static inline void * kptllnd_eventarg2obj (kptl_eventarg_t *eva) @@ -412,8 +420,9 @@ void kptllnd_peer_close(kptl_peer_t *peer, int why); void kptllnd_handle_closing_peers(void); int kptllnd_peer_connect(kptl_tx_t *tx, lnet_nid_t nid); void kptllnd_peer_check_sends(kptl_peer_t *peer); -void kptllnd_peer_check_bucket(int idx); -void kptllnd_tx_launch(kptl_tx_t *tx, lnet_process_id_t target); +void kptllnd_peer_check_bucket(int idx, int stamp); +void kptllnd_tx_launch(kptl_peer_t *peer, kptl_tx_t *tx, int nfrag); +int kptllnd_find_target(kptl_peer_t **peerp, lnet_process_id_t target); kptl_peer_t *kptllnd_peer_handle_hello(ptl_process_id_t initiator, kptl_msg_t *msg); kptl_peer_t *kptllnd_id2peer_locked(lnet_process_id_t id);