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 /net/rxrpc/af_rxrpc.c | |
parent | 8a5f2166a6288ee4b5a393f1ebc8cfb26b0510f0 (diff) | |
download | op-kernel-dev-a68f4a27f55f1d54e35c270aff89383da4b1b656.zip op-kernel-dev-a68f4a27f55f1d54e35c270aff89383da4b1b656.tar.gz |
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 'net/rxrpc/af_rxrpc.c')
-rw-r--r-- | net/rxrpc/af_rxrpc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c index fb17552..481f7dc 100644 --- a/net/rxrpc/af_rxrpc.c +++ b/net/rxrpc/af_rxrpc.c @@ -265,6 +265,7 @@ static int rxrpc_listen(struct socket *sock, int backlog) * @tx_total_len: Total length of data to transmit during the call (or -1) * @gfp: The allocation constraints * @notify_rx: Where to send notifications instead of socket queue + * @upgrade: Request service upgrade for call * * Allow a kernel service to begin a call on the nominated socket. This just * sets up all the internal tracking structures and allocates connection and @@ -279,7 +280,8 @@ struct rxrpc_call *rxrpc_kernel_begin_call(struct socket *sock, unsigned long user_call_ID, s64 tx_total_len, gfp_t gfp, - rxrpc_notify_rx_t notify_rx) + rxrpc_notify_rx_t notify_rx, + bool upgrade) { struct rxrpc_conn_parameters cp; struct rxrpc_call *call; @@ -304,6 +306,7 @@ struct rxrpc_call *rxrpc_kernel_begin_call(struct socket *sock, cp.key = key; cp.security_level = 0; cp.exclusive = false; + cp.upgrade = upgrade; cp.service_id = srx->srx_service; call = rxrpc_new_client_call(rx, &cp, srx, user_call_ID, tx_total_len, gfp); |