1 /**************************************************************************** 2 **+-----------------------------------------------------------------------+** 3 **| |** 4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 5 **| All rights reserved. |** 6 **| |** 7 **| Redistribution and use in source and binary forms, with or without |** 8 **| modification, are permitted provided that the following conditions |** 9 **| are met: |** 10 **| |** 11 **| * Redistributions of source code must retain the above copyright |** 12 **| notice, this list of conditions and the following disclaimer. |** 13 **| * Redistributions in binary form must reproduce the above copyright |** 14 **| notice, this list of conditions and the following disclaimer in |** 15 **| the documentation and/or other materials provided with the |** 16 **| distribution. |** 17 **| * Neither the name Texas Instruments nor the names of its |** 18 **| contributors may be used to endorse or promote products derived |** 19 **| from this software without specific prior written permission. |** 20 **| |** 21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 32 **| |** 33 **+-----------------------------------------------------------------------+** 34 ****************************************************************************/ 35 36 37 #include "ioctl_init.h" 38 #include "esta_drv.h" 39 40 #include "ioctl_utils.h" 41 42 #include "report.h" 43 #include "osClsfr.h" 44 45 #define CONFIG_MGR(dev) ((configMgr_t *) \ 46 ((dev && dev->priv) ? ((tiwlan_net_dev_t *) dev->priv)->adapter.CoreHalCtx : NULL ) ) 47 48 49 typedef struct 50 { 51 int err_code; 52 char *desc; 53 } 54 configMgr_error_desc_t; 55 56 57 static configMgr_error_desc_t configMgr_error_desc[] = 58 { 59 { OK, "OK" }, 60 { NOK, "NOK" }, 61 { PARAM_NOT_SUPPORTED, "PARAM_NOT_SUPPORTED" }, 62 { PARAM_VALUE_NOT_VALID, "PARAM_VALUE_NOT_VALID" }, 63 { CONFIGURATION_NOT_VALID, "CONFIGURATION_NOT_VALID" }, 64 { NO_SITE_SELECTED_YET, "NO_SITE_SELECTED_YET" }, 65 { RE_SCAN_NEEDED, "RE_SCAN_NEEDED" }, 66 { EXTERNAL_SET_PARAM_DENIED, "EXTERNAL_SET_PARAM_DENIED" }, 67 { EXTERNAL_GET_PARAM_DENIED, "EXTERNAL_GET_PARAM_DENIED" }, 68 { PARAM_MODULE_NUMBER_INVALID, "PARAM_MODULE_NUMBER_INVALID" }, 69 { STATION_IS_NOT_RUNNING, "STATION_IS_NOT_RUNNING" }, 70 { CARD_IS_NOT_INSTALLED, "CARD_IS_NOT_INSTALLED" }, 71 /* Data path section */ 72 /* { RX_BSS_TYPE_ERROR ,*/ 73 /* { RX_BSS_ID_ERROR ,*/ 74 /* { TX_QUEUE_SELECTED_OK ,*/ 75 /* { NO_TX_QUEUE_SELECTED ,*/ 76 /* { TX_STATUS_PENDING ,*/ 77 /* { TX_STATUS_NO_RESOURCES ,*/ 78 /* { TX_STATUS_FAILURE ,*/ 79 /* { TX_STATUS_OK ,*/ 80 81 /* 4x section */ 82 /* { MAKE_CONCATENATION ,*/ 83 /* { SEND_ONE_MSDU ,*/ 84 /* { DO_NOT_SEND_MSDU ,*/ 85 /* { FOUR_X_DISABLE ,*/ 86 /**/ 87 /* (Scanning section) */ 88 /* { NO_COUNTRY ,*/ 89 /**/ 90 /* (Setting power after select) */ 91 /* { TX_POWER_SHOULD_NOT_BE_SET ,*/ 92 /* (changing service channel) */ 93 /* { CHANNEL_CHANGED ,*/ 94 /* { SUPPORT_IMMEDIATE_MEASUREMENT_ONLY,*/ 95 /* { MEASUREMENT_TYPE_NOT_SUPPORT,*/ 96 /* { MEASUREMENT_CAN_NOT_EXECUTED_IN_PARALLEL,*/ 97 /* { MEASUREMENT_REQUEST_IGNORED,*/ 98 /* { CANNOT_SET_MEASUREMENT_PARAM_WHEN_ACTIVATED,*/ 99 /* { REGULATORY_DOMAIN_SET_TX_POWER_PARAM,*/ 100 /* { CANNOT_SET_CHANNEL_THAT_IS_NOT_SUPPORTED,*/ 101 }; 102 103 104 int print_err_desc(int err) 105 { 106 int i; 107 for( i=0; i<SIZE_ARR(configMgr_error_desc);i++ ) 108 { 109 if(configMgr_error_desc[i].err_code == err ) 110 { 111 print_err("---err(%d) configMgr() = %s\n", err, configMgr_error_desc[i].desc ); 112 return -err; 113 } 114 } 115 print_err("---err(%d) configMgr failed\n", err); 116 return -err; 117 } 118 119 void print_memory_dump(char *addr, int size ) 120 { 121 #ifdef DEBUG_MESSAGES 122 int i; 123 char buf[4096]; 124 125 if( size * 4 > sizeof(buf) ) { 126 print_err("print_memory_dump(): buffer too small\n"); 127 return; 128 } 129 130 buf[0] = 0; 131 for(i=0; i<size; i++ ) { 132 if( !(i % 16) ) 133 sprintf(&buf[strlen(buf)], "%s%p: ", (i) ? "\n" : "", addr+i ); 134 sprintf(&buf[strlen(buf)], "%02x ", (unsigned char)addr[i] ); 135 } 136 print_info("%s\n", buf); 137 #endif /* DEBUG_MESSAGES */ 138 } 139 140 #ifdef TI_DBG 141 #ifndef TIWLAN_MSM7000 142 TI_STATUS debugFunction(TI_HANDLE hConfigMgr, 143 UINT32 functionNumber, 144 void *pParam); 145 #endif 146 #endif 147 int util_hal_debug_print(struct net_device *dev, ULONG *data) 148 { 149 hal_print_param_t *p = (hal_print_param_t *) data; 150 UINT32 opt_data = 0; 151 152 if( p->optional_param ) 153 { 154 if( copy_from_user(&opt_data, p->optional_param, sizeof(opt_data) ) ) 155 return -EFAULT; 156 } 157 158 print_deb("HAL_DEBUG_PRINT: func_id=%d, param=%x\n", p->func_id, opt_data ); 159 #ifdef TI_DBG 160 debugFunction(CONFIG_MGR(dev), p->func_id, &opt_data ); 161 #endif 162 return 0; 163 } 164 165