From b7871f64ad1aa958b2a102d4429dde87a74769e2 Mon Sep 17 00:00:00 2001 From: Dustin Brown Date: Tue, 15 May 2018 16:31:38 -0700 Subject: [PATCH] qcacmn: Add qdf_status_from_os_return() It is sometimes useful to reverse map an errno into a QDF_STATUS. For this purpose, introduce qdf_status_from_os_return(), the logical inverse operation of qdf_status_to_os_return(). Change-Id: I053f43867ef603c2654eca64fe76c7bd313e14e4 CRs-Fixed: 2242664 --- qdf/inc/qdf_util.h | 11 +++++++++ qdf/linux/src/i_qdf_util.h | 50 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/qdf/inc/qdf_util.h b/qdf/inc/qdf_util.h index a66fbb5b8377..e5700e3c9d4d 100644 --- a/qdf/inc/qdf_util.h +++ b/qdf/inc/qdf_util.h @@ -128,6 +128,17 @@ static inline int qdf_status_to_os_return(QDF_STATUS status) return __qdf_status_to_os_return(status); } +/** + * qdf_status_from_os_return() - map OS specific return code to a QDF_STATUS + * @rc: the input return code to map + * + * Return: QDF_STATUS + */ +static inline QDF_STATUS qdf_status_from_os_return(int rc) +{ + return __qdf_status_from_os_return(rc); +} + /** * qdf_set_bit() - set bit in address * @nr: bit number to be set diff --git a/qdf/linux/src/i_qdf_util.h b/qdf/linux/src/i_qdf_util.h index e0917e763467..0f92aa1fea16 100644 --- a/qdf/linux/src/i_qdf_util.h +++ b/qdf/linux/src/i_qdf_util.h @@ -150,6 +150,56 @@ static inline int __qdf_status_to_os_return(QDF_STATUS status) } } +static inline QDF_STATUS __qdf_status_from_os_return(int rc) +{ + switch (rc) { + case 0: + return QDF_STATUS_SUCCESS; + case -ENOMEM: + return QDF_STATUS_E_NOMEM; + case -EAGAIN: + return QDF_STATUS_E_AGAIN; + case -EINVAL: + return QDF_STATUS_E_INVAL; + case -EFAULT: + return QDF_STATUS_E_FAULT; + case -EALREADY: + return QDF_STATUS_E_ALREADY; + case -EBADMSG: + return QDF_STATUS_E_BADMSG; + case -EBUSY: + return QDF_STATUS_E_BUSY; + case -ECANCELED: + return QDF_STATUS_E_CANCELED; + case -ECONNABORTED: + return QDF_STATUS_E_ABORTED; + case -EPERM: + return QDF_STATUS_E_PERM; + case -EEXIST: + return QDF_STATUS_E_EXISTS; + case -ENOENT: + return QDF_STATUS_E_NOENT; + case -E2BIG: + return QDF_STATUS_E_E2BIG; + case -ENOSPC: + return QDF_STATUS_E_NOSPC; + case -EADDRNOTAVAIL: + return QDF_STATUS_E_ADDRNOTAVAIL; + case -ENXIO: + return QDF_STATUS_E_ENXIO; + case -ENETDOWN: + return QDF_STATUS_E_NETDOWN; + case -EIO: + return QDF_STATUS_E_IO; + case -ENETRESET: + return QDF_STATUS_E_NETRESET; + case -EINPROGRESS: + return QDF_STATUS_E_PENDING; + default: + return QDF_STATUS_E_PERM; + } +} + /** * __qdf_set_bit() - set bit in address * @nr: bit number to be set