1 /* 2 * Copyright (c) 2014-2019 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 #include "linux/errno.h" 21 #include "qdf_module.h" 22 #include "qdf_status.h" 23 24 /* 25 * Customer to make use of this API to map 26 * QDF errors to customer specific error codes 27 * or standard errors as need be. 28 */ 29 #ifdef WLAN_CUSTOMIZE_ERROR_CODES 30 int qdf_status_to_os_return(QDF_STATUS status) 31 { 32 switch (status) { 33 case QDF_STATUS_SUCCESS: 34 return 0; 35 default: 36 return -EPERM; 37 } 38 } 39 40 qdf_export_symbol(qdf_status_to_os_return); 41 #else 42 int qdf_status_to_os_return(QDF_STATUS status) 43 { 44 switch (status) { 45 case QDF_STATUS_SUCCESS: 46 return 0; 47 case QDF_STATUS_E_RESOURCES: 48 return -EBUSY; 49 case QDF_STATUS_E_NOMEM: 50 return -ENOMEM; 51 case QDF_STATUS_E_AGAIN: 52 return -EAGAIN; 53 case QDF_STATUS_E_INVAL: 54 return -EINVAL; 55 case QDF_STATUS_E_FAULT: 56 return -EFAULT; 57 case QDF_STATUS_E_ALREADY: 58 return -EALREADY; 59 case QDF_STATUS_E_BADMSG: 60 return -EBADMSG; 61 case QDF_STATUS_E_BUSY: 62 return -EBUSY; 63 case QDF_STATUS_E_CANCELED: 64 return -ECANCELED; 65 case QDF_STATUS_E_ABORTED: 66 return -ECONNABORTED; 67 case QDF_STATUS_E_PERM: 68 return -EPERM; 69 case QDF_STATUS_E_EXISTS: 70 return -EEXIST; 71 case QDF_STATUS_E_NOENT: 72 return -ENOENT; 73 case QDF_STATUS_E_E2BIG: 74 return -E2BIG; 75 case QDF_STATUS_E_NOSPC: 76 return -ENOSPC; 77 case QDF_STATUS_E_ADDRNOTAVAIL: 78 return -EADDRNOTAVAIL; 79 case QDF_STATUS_E_ENXIO: 80 return -ENXIO; 81 case QDF_STATUS_E_NETDOWN: 82 return -ENETDOWN; 83 case QDF_STATUS_E_IO: 84 return -EIO; 85 case QDF_STATUS_E_NETRESET: 86 return -ENETRESET; 87 case QDF_STATUS_E_PENDING: 88 return -EINPROGRESS; 89 case QDF_STATUS_E_TIMEOUT: 90 return -ETIMEDOUT; 91 default: 92 return -EPERM; 93 } 94 } 95 qdf_export_symbol(qdf_status_to_os_return); 96 #endif 97 98 QDF_STATUS qdf_status_from_os_return(int rc) 99 { 100 switch (rc) { 101 case 0: 102 return QDF_STATUS_SUCCESS; 103 case -ENOMEM: 104 return QDF_STATUS_E_NOMEM; 105 case -EAGAIN: 106 return QDF_STATUS_E_AGAIN; 107 case -EINVAL: 108 return QDF_STATUS_E_INVAL; 109 case -EFAULT: 110 return QDF_STATUS_E_FAULT; 111 case -EALREADY: 112 return QDF_STATUS_E_ALREADY; 113 case -EBADMSG: 114 return QDF_STATUS_E_BADMSG; 115 case -EBUSY: 116 return QDF_STATUS_E_BUSY; 117 case -ECANCELED: 118 return QDF_STATUS_E_CANCELED; 119 case -ECONNABORTED: 120 return QDF_STATUS_E_ABORTED; 121 case -EPERM: 122 return QDF_STATUS_E_PERM; 123 case -EEXIST: 124 return QDF_STATUS_E_EXISTS; 125 case -ENOENT: 126 return QDF_STATUS_E_NOENT; 127 case -E2BIG: 128 return QDF_STATUS_E_E2BIG; 129 case -ENOSPC: 130 return QDF_STATUS_E_NOSPC; 131 case -EADDRNOTAVAIL: 132 return QDF_STATUS_E_ADDRNOTAVAIL; 133 case -ENXIO: 134 return QDF_STATUS_E_ENXIO; 135 case -ENETDOWN: 136 return QDF_STATUS_E_NETDOWN; 137 case -EIO: 138 return QDF_STATUS_E_IO; 139 case -ENETRESET: 140 return QDF_STATUS_E_NETRESET; 141 case -EINPROGRESS: 142 return QDF_STATUS_E_PENDING; 143 case -ETIMEDOUT: 144 return QDF_STATUS_E_TIMEOUT; 145 case -ERESTARTSYS: 146 return QDF_STATUS_E_RESTART; 147 default: 148 return QDF_STATUS_E_PERM; 149 } 150 } 151 qdf_export_symbol(qdf_status_from_os_return); 152 153