diff options
author | David Howells <dhowells@redhat.com> | 2017-10-18 11:36:39 +0100 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2017-10-18 11:37:20 +0100 |
commit | a68f4a27f55f1d54e35c270aff89383da4b1b656 (patch) | |
tree | 72d70f77bee499627425bfaf8df64693320dbc67 /Documentation/networking/rxrpc.txt | |
parent | 8a5f2166a6288ee4b5a393f1ebc8cfb26b0510f0 (diff) | |
download | linux-stable-a68f4a27f55f1d54e35c270aff89383da4b1b656.tar.gz linux-stable-a68f4a27f55f1d54e35c270aff89383da4b1b656.tar.bz2 linux-stable-a68f4a27f55f1d54e35c270aff89383da4b1b656.zip |
rxrpc: Support service upgrade from a kernel service
Provide support for a kernel service to make use of the service upgrade
facility. This involves:
(1) Pass an upgrade request flag to rxrpc_kernel_begin_call().
(2) Make rxrpc_kernel_recv_data() return the call's current service ID so
that the caller can detect service upgrade and see what the service
was upgraded to.
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'Documentation/networking/rxrpc.txt')
-rw-r--r-- | Documentation/networking/rxrpc.txt | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/Documentation/networking/rxrpc.txt b/Documentation/networking/rxrpc.txt index 810620153a44..9fb61a6bc7cf 100644 --- a/Documentation/networking/rxrpc.txt +++ b/Documentation/networking/rxrpc.txt @@ -782,7 +782,9 @@ The kernel interface functions are as follows: struct key *key, unsigned long user_call_ID, s64 tx_total_len, - gfp_t gfp); + gfp_t gfp, + rxrpc_notify_rx_t notify_rx, + bool upgrade); This allocates the infrastructure to make a new RxRPC call and assigns call and connection numbers. The call will be made on the UDP port that @@ -803,6 +805,13 @@ The kernel interface functions are as follows: allows the kernel to encrypt directly to the packet buffers, thereby saving a copy. The value may not be less than -1. + notify_rx is a pointer to a function to be called when events such as + incoming data packets or remote aborts happen. + + upgrade should be set to true if a client operation should request that + the server upgrade the service to a better one. The resultant service ID + is returned by rxrpc_kernel_recv_data(). + If this function is successful, an opaque reference to the RxRPC call is returned. The caller now holds a reference on this and it must be properly ended. @@ -850,7 +859,8 @@ The kernel interface functions are as follows: size_t size, size_t *_offset, bool want_more, - u32 *_abort) + u32 *_abort, + u16 *_service) This is used to receive data from either the reply part of a client call or the request part of a service call. buf and size specify how much @@ -873,6 +883,9 @@ The kernel interface functions are as follows: If a remote ABORT is detected, the abort code received will be stored in *_abort and ECONNABORTED will be returned. + The service ID that the call ended up with is returned into *_service. + This can be used to see if a call got a service upgrade. + (*) Abort a call. void rxrpc_kernel_abort_call(struct socket *sock, |