Repository navigation
UCT/IB/UD: Introduce EP check (Keep Alive) - #6080
Conversation
d3a495a to
02aebf6
Compare
| UCT_UD_PACKET_FLAG_NAK = UCS_BIT(27), | ||
| UCT_UD_PACKET_FLAG_PUT = UCS_BIT(28), | ||
| UCT_UD_PACKET_FLAG_CTL = UCS_BIT(29), | ||
| UCT_UD_PACKET_FLAG_CHECK = UCS_BIT(30), |
There was a problem hiding this comment.
no need for special flag, it should be just ACK+ACK_REQ
There was a problem hiding this comment.
i'm not sure that it would work (e.g. in case of user doesn't do AM/PUT operations), since we should increase local psn, and get ACKs on it
There was a problem hiding this comment.
yes, I checked, it doesn't work
udx/test_ucp_peer_failure_keepalive.kill_receiver/0 doesn't detect an error, because acked_psn == psn - 1 - so UD considers peer as alive.
There was a problem hiding this comment.
ic, need to psn++, so can it be a PUT message?
There was a problem hiding this comment.
so can it be a PUT message?
do you mean to implement the same scheme as in RC? but it will consume receive WQ element on peer
I guess it was intent on Rc to not consume and repost receive WQ element
| skb = uct_ud_ep_prepare_check(ep); | ||
| if (skb == NULL) { | ||
| /* schedule keepalive request to pending queue for futher sending */ | ||
| uct_ud_ep_ctl_op_add(iface, ep, UCT_UD_EP_OP_CHECK); | ||
| goto out; | ||
| } | ||
|
|
||
| uct_ud_iface_send_ctl(iface, ep, skb, NULL, 0, 0, 1); | ||
| uct_ud_iface_complete_tx_skb(iface, ep, skb); |
There was a problem hiding this comment.
just need to add ctl_op, and let it be sent from progress
|
@yosefe replaced by doing PUT in EP Check instead of a new operation. much easier :) thanks for the advise! |
| if (/* check that TX resources are available (i.e. there are no signaled | ||
| * operations which provide actual peer status) */ |
There was a problem hiding this comment.
ud_enter
if (!connected || !last_ack_recvd) {
ud_leave();
return OK;
}
ud_leave()
return uct_ep_put_short(...)
3c6d46a to
d19a639
Compare
What
Introduce EP check (Keep Alive) in UCT/UD.
Why ?
To extend the functionality provided by UCT/UD and use it in UCP for better error handling.
How ?
UCT_UD_PACKET_FLAG_CHECK.uct_ep_check()(it is not sent if UD Ep is not connected or there are some unacked TX operations).