1/* 2 * NDIS Error codes 3 * 4 * Copyright (C) 2015, Broadcom Corporation 5 * All Rights Reserved. 6 * 7 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation; 8 * the contents of this file may not be disclosed to third parties, copied 9 * or duplicated in any form, in whole or in part, without the prior 10 * written permission of Broadcom Corporation. 11 * 12 * $Id: ndiserrmap.c 419467 2013-08-21 09:19:48Z $ 13 */ 14#ifndef NDIS 15#include <bcm_ndis.h> 16#endif 17#include <typedefs.h> 18#include <osl.h> 19#include <epivers.h> 20#include <bcmutils.h> 21 22#include <ndiserrmap.h> 23 24 25static NDIS_STATUS ndisbcmerrormap[] = 26{ NDIS_STATUS_SUCCESS, /* 0 */ 27 NDIS_STATUS_FAILURE, /* BCME_ERROR */ 28 NDIS_STATUS_INVALID_DATA, /* BCME_BADARG */ 29 NDIS_STATUS_INVALID_DATA, /* BCME_BADOPTION */ 30 NDIS_STATUS_INVALID_DATA, /* BCME_NOTUP */ 31 NDIS_STATUS_INVALID_DATA, /* BCME_NOTDOWN */ 32 NDIS_STATUS_INVALID_DATA, /* BCME_NOTAP */ 33 NDIS_STATUS_INVALID_DATA, /* BCME_NOTSTA */ 34 NDIS_STATUS_INVALID_DATA, /* BCME_BADKEYIDX */ 35 NDIS_STATUS_INVALID_DATA, /* BCME_RADIOOFF */ 36 NDIS_STATUS_INVALID_DATA, /* BCME_NOTBANDLOCKED */ 37 NDIS_STATUS_INVALID_DATA, /* BCME_NOCLK */ 38 NDIS_STATUS_INVALID_DATA, /* BCME_BADRATESET */ 39 NDIS_STATUS_INVALID_DATA, /* BCME_BADBAND */ 40 NDIS_STATUS_INVALID_LENGTH, /* BCME_BUFTOOSHORT */ 41 NDIS_STATUS_INVALID_LENGTH, /* BCME_BUFTOOLONG */ 42 NDIS_STATUS_INVALID_DATA, /* BCME_BUSY */ 43 NDIS_STATUS_INVALID_DATA, /* BCME_NOTASSOCIATED */ 44 NDIS_STATUS_INVALID_LENGTH, /* BCME_BADSSIDLEN */ 45 NDIS_STATUS_INVALID_DATA, /* BCME_OUTOFRANGECHAN */ 46 NDIS_STATUS_INVALID_DATA, /* BCME_BADCHAN */ 47 NDIS_STATUS_INVALID_DATA, /* BCME_BADADDR */ 48 NDIS_STATUS_RESOURCES, /* BCME_NORESOURCE */ 49 NDIS_STATUS_NOT_SUPPORTED, /* BCME_UNSUPPORTED */ 50 NDIS_STATUS_INVALID_LENGTH, /* BCME_BADLENGTH */ 51 NDIS_STATUS_ADAPTER_NOT_READY, /* BCME_NOTREADY */ 52 NDIS_STATUS_FAILURE, /* BCME_NOTPERMITTED */ 53 NDIS_STATUS_RESOURCES, /* BCME_NOMEM */ 54 NDIS_STATUS_INVALID_DATA, /* BCME_ASSOCIATED */ 55 NDIS_STATUS_INVALID_DATA, /* BCME_RANGE */ 56 NDIS_STATUS_INVALID_DATA, /* BCME_NOTFOUND */ 57 NDIS_STATUS_INVALID_DATA, /* BCME_WME_NOT_ENABLED */ 58 NDIS_STATUS_INVALID_DATA, /* BCME_TSPEC_NOTFOUND */ 59 NDIS_STATUS_INVALID_DATA, /* BCME_ACM_NOTSUPPORTED */ 60 NDIS_STATUS_INVALID_DATA, /* BCME_NOT_WME_ASSOCIATION */ 61 NDIS_STATUS_FAILURE, /* BCME_SDIO_ERROR */ 62 NDIS_STATUS_FAILURE, /* BCME_DONGLE_DOWN */ 63 NDIS_STATUS_FAILURE, /* BCME_VERSION */ 64 NDIS_STATUS_FAILURE, /* BCME_TXFAIL */ 65 NDIS_STATUS_FAILURE, /* BCME_RXFAIL */ 66 NDIS_STATUS_ADAPTER_REMOVED, /* BCME_NODEVICE */ 67 NDIS_STATUS_FAILURE, /* BCME_NMODE_DISABLED */ 68 NDIS_STATUS_INVALID_DATA, /* BCME_NONRESIDENT */ 69 NDIS_STATUS_FAILURE, /* BCME_SCANREJECT */ 70 NDIS_STATUS_FAILURE, /* unused */ 71 NDIS_STATUS_FAILURE, /* unused */ 72 NDIS_STATUS_FAILURE, /* unused */ 73 NDIS_STATUS_NOT_SUPPORTED, /* BCME_DISABLED */ 74 75/* When an new error code is added to bcmutils.h, add os 76 * spcecific error translation here as well 77 */ 78/* check if BCME_LAST changed since the last time this function was updated */ 79#if BCME_LAST != -47 80#error "You need to add a OS error translation in the ndisbcmerrormap \ 81 for new error code defined in bcmutils.h" 82#endif /* BCME_LAST != -47 */ 83 }; 84 85int 86ndisstatus2bcmerror(NDIS_STATUS status) 87{ 88 int i, array_size = ARRAYSIZE(ndisbcmerrormap); 89 90 ASSERT(ABS(BCME_LAST) == (array_size - 1)); 91 92 for (i = 0; i < array_size; i++) 93 if (ndisbcmerrormap[i] == status) 94 return -i; 95 96 if (status == NDIS_STATUS_INVALID_OID) 97 return BCME_UNSUPPORTED; 98 99 return BCME_ERROR; 100} 101 102NDIS_STATUS 103bcmerror2ndisstatus(int bcmerror) 104{ 105 if (bcmerror > 0) 106 bcmerror = 0; 107 else if (bcmerror < BCME_LAST) 108 bcmerror = BCME_ERROR; 109 110 /* Array bounds covered by ASSERT in osl_attach */ 111 return ndisbcmerrormap[-bcmerror]; 112} 113