David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 1 | /* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */ |
| 2 | /* |
| 3 | * Copyright(c) 2016 Google Inc. All rights reserved. |
| 4 | * Copyright(c) 2016 Linaro Ltd. All rights reserved. |
| 5 | */ |
| 6 | |
| 7 | #ifndef __ARPC_H |
| 8 | #define __ARPC_H |
| 9 | |
| 10 | /* APBridgeA RPC (ARPC) */ |
| 11 | |
| 12 | enum arpc_result { |
| 13 | ARPC_SUCCESS = 0x00, |
| 14 | ARPC_NO_MEMORY = 0x01, |
| 15 | ARPC_INVALID = 0x02, |
| 16 | ARPC_TIMEOUT = 0x03, |
| 17 | ARPC_UNKNOWN_ERROR = 0xff, |
| 18 | }; |
| 19 | |
| 20 | struct arpc_request_message { |
| 21 | __le16 id; /* RPC unique id */ |
| 22 | __le16 size; /* Size in bytes of header + payload */ |
| 23 | __u8 type; /* RPC type */ |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 24 | __u8 data[]; /* ARPC data */ |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 25 | } __packed; |
| 26 | |
| 27 | struct arpc_response_message { |
| 28 | __le16 id; /* RPC unique id */ |
| 29 | __u8 result; /* Result of RPC */ |
| 30 | } __packed; |
| 31 | |
| 32 | /* ARPC requests */ |
| 33 | #define ARPC_TYPE_CPORT_CONNECTED 0x01 |
| 34 | #define ARPC_TYPE_CPORT_QUIESCE 0x02 |
| 35 | #define ARPC_TYPE_CPORT_CLEAR 0x03 |
| 36 | #define ARPC_TYPE_CPORT_FLUSH 0x04 |
| 37 | #define ARPC_TYPE_CPORT_SHUTDOWN 0x05 |
| 38 | |
| 39 | struct arpc_cport_connected_req { |
| 40 | __le16 cport_id; |
| 41 | } __packed; |
| 42 | |
| 43 | struct arpc_cport_quiesce_req { |
| 44 | __le16 cport_id; |
| 45 | __le16 peer_space; |
| 46 | __le16 timeout; |
| 47 | } __packed; |
| 48 | |
| 49 | struct arpc_cport_clear_req { |
| 50 | __le16 cport_id; |
| 51 | } __packed; |
| 52 | |
| 53 | struct arpc_cport_flush_req { |
| 54 | __le16 cport_id; |
| 55 | } __packed; |
| 56 | |
| 57 | struct arpc_cport_shutdown_req { |
| 58 | __le16 cport_id; |
| 59 | __le16 timeout; |
| 60 | __u8 phase; |
| 61 | } __packed; |
| 62 | |
| 63 | #endif /* __ARPC_H */ |