• Home
  • Raw
  • Download

Lines Matching +full:always +full:- +full:wait +full:- +full:for +full:- +full:ack

1 .. SPDX-License-Identifier: GPL-2.0
7 The RxRPC protocol driver provides a reliable two-phase transport on top of UDP
38 RxRPC is a two-layer protocol. There is a session layer which provides
44 +-------------+
46 +-------------+
48 +-------------+
50 +-------------+
52 +-------------+
57 (1) Part of an RxRPC facility for both kernel and userspace applications by
60 (2) A two-phase protocol. The client transmits a blob (the request) and then
64 (3) Retention of the reusable bits of the transport system set up for one call
82 to use - currently only PF_INET is supported.
95 currently), and uses this to provide network transport. UDP ports, for
106 (#) Client-originating packets are marked, thus a transport endpoint can be
126 (#) Calls are two-phase and asymmetric: the client sends its request data,
137 (#) Security is negotiated on a per-connection basis. The connection is
141 set for the lifetime of that connection, and all subsequent calls made
146 (#) Calls use ACK packets to handle reliability. Data packets are also
149 (#) There are two types of positive acknowledgment: hard-ACKs and soft-ACKs.
150 A hard-ACK indicates to the far side that all the data received to a point
151 has been received and processed; a soft-ACK indicates that the data has
152 been received but may yet be discarded and re-requested. The sender may
153 not discard any transmittable packets until they've been hard-ACK'd.
155 (#) Reception of a reply data packet implicitly hard-ACK's all the data
159 received and the final hard-ACK on the last packet of the reply has
181 (#) Each connection is retained for a certain amount of time [tunable] after
185 (#) Each internal UDP socket is retained [tunable] for a certain amount of
189 (#) A client-side connection is only shared between calls if they have
191 would otherwise share the connection). Non-secured calls would also be
194 (#) A server-side connection is shared if the client says it is.
196 (#) ACK'ing is handled by the protocol driver automatically, including ping
209 non-zero service ID.
214 (#) The first sendmsg for a request to be sent from a client contains a tag to
218 (#) connect() is used to supply a default destination address for a client
235 the reply is transmitted with one or more sendmsgs, and then the final ACK
238 (#) When sending data for a call, sendmsg is given MSG_MORE if there's more
241 (#) When receiving data for a call, recvmsg flags MSG_MORE if there's more
242 data to come for that call.
244 (#) When receiving data or messages for a call, MSG_EOR is flagged by recvmsg
245 to indicate the terminal message for that call.
249 Any messages waiting in the receive queue for that call will be discarded.
255 (#) The control data part of the msghdr struct is used for a number of things:
286 manage to queue up all the data for transmission. This requires the
301 (b) it meets a non-data message,
315 for the next taker. MSG_TRUNC will never be flagged.
331 RXRPC_USER_CALL_ID sr- User ID App's call specifier
333 RXRPC_ACK -rt n/a Final ACK received
334 RXRPC_NET_ERROR -rt error num Network error on call
335 RXRPC_BUSY -rt n/a Call rejected (server busy)
336 RXRPC_LOCAL_ERROR -rt error num Local error encountered
337 RXRPC_NEW_CALL -r- n/a New call received
338 RXRPC_ACCEPT s-- n/a Accept new call
339 RXRPC_EXCLUSIVE_CALL s-- n/a Make an exclusive client call
340 RXRPC_UPGRADE_SERVICE s-- n/a Client call can be upgraded
341 RXRPC_TX_LENGTH s-- data len Total length of Tx data
364 This is delivered to a server application to indicate that the final ACK
372 errno-class integer value will be included in the control message data
386 errno-class integer value will be included in the control message data
407 This is used to indicate that a client call should be made on a one-off
414 recvmsg() for the service ID actually in use. The operation probed must
418 thereof) of the server, the service ID returned should be used for all
429 first sendmsg() providing data for a call. EMSGSIZE will be generated if
462 This is used to request that new connections should be used for each call
467 This is used to specify the minimum security level required for calls on
478 encrypted - which includes the actual packet length.
494 This is a read-only option that writes an int into the buffer indicating
503 (security index 2 - rxkad). This requires the rxkad module to be loaded and,
527 For the server, keys of type "rxrpc_s" must be made available to the server.
528 They have a description of "<serviceID>:<securityIndex>" (eg: "52:2" for an
529 rxkad key for the AFS VL service). When such a key is created, it should be
554 socket used - usually IPv4 but it can also be IPv6 [TODO].
569 non-privileged port will be used. A UDP port may be shared between
571 per-RxRPC virtual connection.
602 RXRPC_USER_CALL_ID specifies the user ID for this call
615 (6) The reply data will then be posted to the server socket for recvmsg() to
617 for a particular call to be read. MSG_EOR will be set on the terminal
618 read for a call.
622 RXRPC_USER_CALL_ID - specifies the user ID for this call
628 A client may ask for a service ID it knows and ask that this be upgraded to a
633 the service - otherwise it will be altered to indicate the service ID the
635 The caller has to wait until it sees the service ID in the reply before sending
650 socket used - usually IPv4.
694 (5) The server is then set to listen out for incoming calls::
699 it a message for each. This is received with recvmsg() on the server
706 ignored since the call for which the message was posted may have gone by
707 the time it is accepted - in which case the first call still on the queue
715 RXRPC_USER_CALL_ID specify user ID for this call
718 (8) The first request data packet will then be posted to the server socket for
719 recvmsg() to pick up. At that point, the RxRPC address for the call can
722 Subsequent request data will be posted to the server socket for recvmsg()
730 RXRPC_USER_CALL_ID specifies the user ID for this call
737 RXRPC_USER_CALL_ID specifies the user ID for this call
741 for a particular call.
743 (10) The final ACK from the client will be posted for retrieval by recvmsg()
748 RXRPC_USER_CALL_ID specifies the user ID for this call
749 RXRPC_ACK indicates final ACK (no data)
752 MSG_EOR will be flagged to indicate that this is the final message for
760 RXRPC_USER_CALL_ID specifies the user ID for this call
767 Note that all the communications for a particular service take place through
775 The AF_RXRPC module also provides an interface for use by in-kernel utilities
779 rather than having to open a whole slew of sockets, one for each key it
783 opening of a socket. Instead the utility is responsible for requesting a
784 key at the appropriate point. AFS, for instance, would do this during VFS
818 non-NULL).
829 with this call (or -1 if unknown at this point). Setting the data size
831 saving a copy. The value may not be less than -1.
842 allocated; if it is set, the function may return -ERESTARTSYS.
844 debug_id is the call debugging ID to be used for tracing. This can be
882 exclusively to in-kernel virtual addresses. msg.msg_flags may be given
883 MSG_MORE if there will be subsequent data sends for this call.
915 emptied and want_more was false; and -EAGAIN if the function needs to be
958 The skb->mark field indicates the type of message:
964 RXRPC_SKB_MARK_FINAL_ACK Final ACK received for an incoming call
983 is possible to get extra refs on all types of message for later freeing,
1005 a BUSY message. -ENODATA is returned if there were no incoming calls.
1006 Other errors may be returned if the call had been aborted (-ECONNABORTED)
1007 or had timed out (-ETIME).
1009 (#) Allocate a null key for doing anonymous security::
1014 anonymous security for a particular domain.
1030 call. It's intended to be used for setting the reply size as the request
1053 if the call is still alive after waiting for a suitable interval. It also
1057 if the call is still alive on the server while waiting for the server to
1060 The second function causes a ping ACK to be transmitted to try to provoke
1071 call to be queried. This value is returned. The function always
1087 aborted and -ETIME or -ETIMEDOUT will be returned.
1095 This specifies the minimum security level required for calls on this
1108 request-ack flag set before we honour the flag and actually send the
1109 requested ack.
1113 ACK permits several packets to be ACK'd in one go.
1118 generate a soft-ACK to tell the sender that it doesn't need to resend.
1123 received queue have been consumed before we generate a hard-ACK to tell
1125 we would send an ACK.
1130 transmit it again, assuming no ACK is received from the receiver telling
1141 list. Dead calls are kept around for a little while for the purpose of
1142 repeating ACK and ABORT packets.
1148 it serves as a placeholder for negotiated security; when it is deleted,
1160 unconsumed received packets we're willing to hold in memory for any
1171 packet. Non-terminal packets in a jumbo packet must contain a four byte