xref: /wlan-dirver/qca-wifi-host-cmn/qdf/linux/src/qdf_status.c (revision 8ddef7dd9a290d4a9b1efd5d3efacf51d78a1a0d)
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 #include "linux/errno.h"
20 #include "qdf_module.h"
21 #include "qdf_status.h"
22 
23 int qdf_status_to_os_return(QDF_STATUS status)
24 {
25 	switch (status) {
26 	case QDF_STATUS_SUCCESS:
27 		return 0;
28 	case QDF_STATUS_E_RESOURCES:
29 		return -EBUSY;
30 	case QDF_STATUS_E_NOMEM:
31 		return -ENOMEM;
32 	case QDF_STATUS_E_AGAIN:
33 		return -EAGAIN;
34 	case QDF_STATUS_E_INVAL:
35 		return -EINVAL;
36 	case QDF_STATUS_E_FAULT:
37 		return -EFAULT;
38 	case QDF_STATUS_E_ALREADY:
39 		return -EALREADY;
40 	case QDF_STATUS_E_BADMSG:
41 		return -EBADMSG;
42 	case QDF_STATUS_E_BUSY:
43 		return -EBUSY;
44 	case QDF_STATUS_E_CANCELED:
45 		return -ECANCELED;
46 	case QDF_STATUS_E_ABORTED:
47 		return -ECONNABORTED;
48 	case QDF_STATUS_E_PERM:
49 		return -EPERM;
50 	case QDF_STATUS_E_EXISTS:
51 		return -EEXIST;
52 	case QDF_STATUS_E_NOENT:
53 		return -ENOENT;
54 	case QDF_STATUS_E_E2BIG:
55 		return -E2BIG;
56 	case QDF_STATUS_E_NOSPC:
57 		return -ENOSPC;
58 	case QDF_STATUS_E_ADDRNOTAVAIL:
59 		return -EADDRNOTAVAIL;
60 	case QDF_STATUS_E_ENXIO:
61 		return -ENXIO;
62 	case QDF_STATUS_E_NETDOWN:
63 		return -ENETDOWN;
64 	case QDF_STATUS_E_IO:
65 		return -EIO;
66 	case QDF_STATUS_E_NETRESET:
67 		return -ENETRESET;
68 	case QDF_STATUS_E_PENDING:
69 		return -EINPROGRESS;
70 	case QDF_STATUS_E_TIMEOUT:
71 		return -ETIMEDOUT;
72 	default:
73 		return -EPERM;
74 	}
75 }
76 qdf_export_symbol(qdf_status_to_os_return);
77 
78 QDF_STATUS qdf_status_from_os_return(int rc)
79 {
80 	switch (rc) {
81 	case 0:
82 		return QDF_STATUS_SUCCESS;
83 	case -ENOMEM:
84 		return QDF_STATUS_E_NOMEM;
85 	case -EAGAIN:
86 		return QDF_STATUS_E_AGAIN;
87 	case -EINVAL:
88 		return QDF_STATUS_E_INVAL;
89 	case -EFAULT:
90 		return QDF_STATUS_E_FAULT;
91 	case -EALREADY:
92 		return QDF_STATUS_E_ALREADY;
93 	case -EBADMSG:
94 		return QDF_STATUS_E_BADMSG;
95 	case -EBUSY:
96 		return QDF_STATUS_E_BUSY;
97 	case -ECANCELED:
98 		return QDF_STATUS_E_CANCELED;
99 	case -ECONNABORTED:
100 		return QDF_STATUS_E_ABORTED;
101 	case -EPERM:
102 		return QDF_STATUS_E_PERM;
103 	case -EEXIST:
104 		return QDF_STATUS_E_EXISTS;
105 	case -ENOENT:
106 		return QDF_STATUS_E_NOENT;
107 	case -E2BIG:
108 		return QDF_STATUS_E_E2BIG;
109 	case -ENOSPC:
110 		return QDF_STATUS_E_NOSPC;
111 	case -EADDRNOTAVAIL:
112 		return QDF_STATUS_E_ADDRNOTAVAIL;
113 	case -ENXIO:
114 		return QDF_STATUS_E_ENXIO;
115 	case -ENETDOWN:
116 		return QDF_STATUS_E_NETDOWN;
117 	case -EIO:
118 		return QDF_STATUS_E_IO;
119 	case -ENETRESET:
120 		return QDF_STATUS_E_NETRESET;
121 	case -EINPROGRESS:
122 		return QDF_STATUS_E_PENDING;
123 	case -ETIMEDOUT:
124 		return QDF_STATUS_E_TIMEOUT;
125 	default:
126 		return QDF_STATUS_E_PERM;
127 	}
128 }
129 qdf_export_symbol(qdf_status_from_os_return);
130 
131