1 /* 2 * Copyright (c) 2014-2020 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /** 21 * DOC: qdf_status 22 * QCA driver framework (QDF) status codes 23 * Basic status codes/definitions used by QDF 24 */ 25 26 #ifndef __QDF_STATUS_H 27 #define __QDF_STATUS_H 28 29 /** 30 * typedef QDF_STATUS - QDF error codes 31 * @QDF_STATUS_SUCCESS: success 32 * @QDF_STATUS_E_RESOURCES: system resource(other than memory) not available 33 * @QDF_STATUS_E_NOMEM: not enough memory 34 * @QDF_STATUS_E_AGAIN: try again 35 * @QDF_STATUS_E_INVAL: invalid request 36 * @QDF_STATUS_E_FAULT: system fault 37 * @QDF_STATUS_E_ALREADY: another request already in progress 38 * @QDF_STATUS_E_BADMSG: bad message 39 * @QDF_STATUS_E_BUSY: device or resource busy 40 * @QDF_STATUS_E_CANCELED: request cancelled 41 * @QDF_STATUS_E_ABORTED: request aborted 42 * @QDF_STATUS_E_NOSUPPORT: request not supported 43 * @QDF_STATUS_E_PERM: operation not permitted 44 * @QDF_STATUS_E_EMPTY: empty condition 45 * @QDF_STATUS_E_EXISTS: existence failure 46 * @QDF_STATUS_E_TIMEOUT: operation timeout 47 * @QDF_STATUS_E_FAILURE: unknown reason do not use unless nothing else applies 48 * @QDF_STATUS_E_NOENT: No such file or directory 49 * @QDF_STATUS_E_E2BIG: Arg list too long 50 * @QDF_STATUS_E_NOSPC: no space left on device 51 * @QDF_STATUS_E_ADDRNOTAVAIL: Cannot assign requested address 52 * @QDF_STATUS_E_ENXIO: No such device or address 53 * @QDF_STATUS_E_NETDOWN: network is down 54 * @QDF_STATUS_E_IO: I/O Error 55 * @QDF_STATUS_E_PENDING: pending status 56 * @QDF_STATUS_E_NETRESET: Network dropped connection because of reset 57 * @QDF_STATUS_E_SIG: Exit due to received SIGINT 58 * @QDF_STATUS_E_PROTO: protocol error 59 * @QDF_STATUS_NOT_INITIALIZED: resource not initialized 60 * @QDF_STATUS_E_NULL_VALUE: request is null 61 * @QDF_STATUS_HEARTBEAT_TMOUT: hearbeat timeout error 62 * @QDF_STATUS_NTH_BEACON_DELIVERY: Nth beacon delivery 63 * @QDF_STATUS_CSR_WRONG_STATE: csr in wrong state 64 * @QDF_STATUS_FT_PREAUTH_KEY_SUCCESS: ft preauth key success 65 * @QDF_STATUS_FT_PREAUTH_KEY_FAILED: ft preauth key failed 66 * @QDF_STATUS_CMD_NOT_QUEUED: command not queued 67 * @QDF_STATUS_FW_MSG_TIMEDOUT: target message timeout 68 * @QDF_STATUS_E_USB_ERROR: USB transaction error 69 * @QDF_STATUS_MAXCOMP_FAIL: Component id is more than MAX UMAC components 70 * @QDF_STATUS_COMP_DISABLED: UMAC Component is disabled 71 * @QDF_STATUS_COMP_ASYNC: UMAC component runs in asynchronous communication 72 * @QDF_STATUS_CRYPTO_PN_ERROR: PN ERROR in received frame 73 * @QDF_STATUS_CRYPTO_MIC_FAILURE: MIC failure in received frame 74 * @QDF_STATUS_CRYPTO_ENCRYPT_FAILED: encryption failed 75 * @QDF_STATUS_CRYPTO_DECRYPT_FAILED: decryption failed 76 * @QDF_STATUS_E_RANGE: result/parameter/operation was out of range 77 * @QDF_STATUS_E_GRO_DROP: return code for GRO drop 78 * @QDF_STATUS_E_RESTART: return error code for wait_event_interruptible 79 * @QDF_STATUS_MAX: not a real value just a place holder for max 80 */ 81 typedef enum { 82 QDF_STATUS_SUCCESS, 83 QDF_STATUS_E_RESOURCES, 84 QDF_STATUS_E_NOMEM, 85 QDF_STATUS_E_AGAIN, 86 QDF_STATUS_E_INVAL, 87 QDF_STATUS_E_FAULT, 88 QDF_STATUS_E_ALREADY, 89 QDF_STATUS_E_BADMSG, 90 QDF_STATUS_E_BUSY, 91 QDF_STATUS_E_CANCELED, 92 QDF_STATUS_E_ABORTED, 93 QDF_STATUS_E_NOSUPPORT, 94 QDF_STATUS_E_PERM, 95 QDF_STATUS_E_EMPTY, 96 QDF_STATUS_E_EXISTS, 97 QDF_STATUS_E_TIMEOUT, 98 QDF_STATUS_E_FAILURE, 99 QDF_STATUS_E_NOENT, 100 QDF_STATUS_E_E2BIG, 101 QDF_STATUS_E_NOSPC, 102 QDF_STATUS_E_ADDRNOTAVAIL, 103 QDF_STATUS_E_ENXIO, 104 QDF_STATUS_E_NETDOWN, 105 QDF_STATUS_E_IO, 106 QDF_STATUS_E_PENDING, 107 QDF_STATUS_E_NETRESET, 108 QDF_STATUS_E_SIG, 109 QDF_STATUS_E_PROTO, 110 QDF_STATUS_NOT_INITIALIZED, 111 QDF_STATUS_E_NULL_VALUE, 112 QDF_STATUS_HEARTBEAT_TMOUT, 113 QDF_STATUS_NTH_BEACON_DELIVERY, 114 QDF_STATUS_CSR_WRONG_STATE, 115 QDF_STATUS_FT_PREAUTH_KEY_SUCCESS, 116 QDF_STATUS_FT_PREAUTH_KEY_FAILED, 117 QDF_STATUS_CMD_NOT_QUEUED, 118 QDF_STATUS_FW_MSG_TIMEDOUT, 119 QDF_STATUS_E_USB_ERROR, 120 QDF_STATUS_MAXCOMP_FAIL, 121 QDF_STATUS_COMP_DISABLED, 122 QDF_STATUS_COMP_ASYNC, 123 QDF_STATUS_CRYPTO_PN_ERROR, 124 QDF_STATUS_CRYPTO_MIC_FAILURE, 125 QDF_STATUS_CRYPTO_ENCRYPT_FAILED, 126 QDF_STATUS_CRYPTO_DECRYPT_FAILED, 127 QDF_STATUS_E_DEFRAG_ERROR, 128 QDF_STATUS_E_RANGE, 129 QDF_STATUS_E_GRO_DROP, 130 QDF_STATUS_E_RESTART, 131 QDF_STATUS_MAX 132 } QDF_STATUS; 133 134 #define QDF_IS_STATUS_SUCCESS(status) (QDF_STATUS_SUCCESS == (status)) 135 #define QDF_IS_STATUS_ERROR(status) (QDF_STATUS_SUCCESS != (status)) 136 137 /** 138 * qdf_status_to_os_return() - map a QDF_STATUS into an OS specific return code 139 * @status: QDF_STATUS to map 140 * 141 * Return: an OS specific error code 142 */ 143 int qdf_status_to_os_return(QDF_STATUS status); 144 145 /** 146 * qdf_status_from_os_return() - map an OS specific return code to a QDF_STATUS 147 * @rc: the input return code to map 148 * 149 * Return: QDF_STATUS 150 */ 151 QDF_STATUS qdf_status_from_os_return(int rc); 152 153 #endif /* __QDF_STATUS_H */ 154 155