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