1  /*
2   * Copyright (c) 2014-2020 The Linux Foundation. All rights reserved.
3   * Copyright (c) 2022-2023 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: heartbeat 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_FILT_REQ_ERROR: return error code cee filter rule request
80   * @QDF_STATUS_TDLS_MLO_SYNC: tdls mlo sync
81   * @QDF_STATUS_CRYPTO_INVALID_KEYLEN: return code for invalid key length
82   * @QDF_STATUS_CRYPTO_INVALID_KEYID: return code for invalid key index
83   * @QDF_STATUS_CRYPTO_INVALID_CIPHERTYPE: return code for invalid cipher type
84   * @QDF_STATUS_INVALID_ASSOCID: return code for invalid assoc id
85   * @QDF_STATUS_MAX_VHT_STREAMS: Max VHT streams
86   * @QDF_STATUS_NO_OVERLAP_LEGACY_RATES: no overlap legacy rate with assoc-req
87   * @QDF_STATUS_MAX: not a real value just a place holder for max
88   */
89  typedef enum {
90  	QDF_STATUS_SUCCESS,
91  	QDF_STATUS_E_RESOURCES,
92  	QDF_STATUS_E_NOMEM,
93  	QDF_STATUS_E_AGAIN,
94  	QDF_STATUS_E_INVAL,
95  	QDF_STATUS_E_FAULT,
96  	QDF_STATUS_E_ALREADY,
97  	QDF_STATUS_E_BADMSG,
98  	QDF_STATUS_E_BUSY,
99  	QDF_STATUS_E_CANCELED,
100  	QDF_STATUS_E_ABORTED,
101  	QDF_STATUS_E_NOSUPPORT,
102  	QDF_STATUS_E_PERM,
103  	QDF_STATUS_E_EMPTY,
104  	QDF_STATUS_E_EXISTS,
105  	QDF_STATUS_E_TIMEOUT,
106  	QDF_STATUS_E_FAILURE,
107  	QDF_STATUS_E_NOENT,
108  	QDF_STATUS_E_E2BIG,
109  	QDF_STATUS_E_NOSPC,
110  	QDF_STATUS_E_ADDRNOTAVAIL,
111  	QDF_STATUS_E_ENXIO,
112  	QDF_STATUS_E_NETDOWN,
113  	QDF_STATUS_E_IO,
114  	QDF_STATUS_E_PENDING,
115  	QDF_STATUS_E_NETRESET,
116  	QDF_STATUS_E_SIG,
117  	QDF_STATUS_E_PROTO,
118  	QDF_STATUS_NOT_INITIALIZED,
119  	QDF_STATUS_E_NULL_VALUE,
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_E_RESTART,
139  	QDF_STATUS_FILT_REQ_ERROR,
140  	QDF_STATUS_TDLS_MLO_SYNC,
141  	QDF_STATUS_CRYPTO_INVALID_KEYLEN,
142  	QDF_STATUS_CRYPTO_INVALID_KEYID,
143  	QDF_STATUS_CRYPTO_INVALID_CIPHERTYPE,
144  	QDF_STATUS_INVALID_ASSOCID,
145  	QDF_STATUS_MAX_VHT_STREAMS,
146  	QDF_STATUS_NO_OVERLAP_LEGACY_RATES,
147  	QDF_STATUS_MAX
148  } QDF_STATUS;
149  
150  #define QDF_IS_STATUS_SUCCESS(status) (QDF_STATUS_SUCCESS == (status))
151  #define QDF_IS_STATUS_ERROR(status) (QDF_STATUS_SUCCESS != (status))
152  
153  /**
154   * qdf_status_to_os_return() - map a QDF_STATUS into an OS specific return code
155   * @status: QDF_STATUS to map
156   *
157   * Return: an OS specific error code
158   */
159  int qdf_status_to_os_return(QDF_STATUS status);
160  
161  /**
162   * qdf_status_from_os_return() - map an OS specific return code to a QDF_STATUS
163   * @rc: the input return code to map
164   *
165   * Return: QDF_STATUS
166   */
167  QDF_STATUS qdf_status_from_os_return(int rc);
168  
169  #endif /* __QDF_STATUS_H */
170  
171