1 /* 2 * Copyright (c) 2010 Broadcom Corporation 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 11 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 13 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef _wl_iw_h_ 18 #define _wl_iw_h_ 19 20 #include <linux/wireless.h> 21 22 #include <wlioctl.h> 23 24 #define WL_SCAN_PARAMS_SSID_MAX 10 25 #define GET_SSID "SSID=" 26 #define GET_CHANNEL "CH=" 27 #define GET_NPROBE "NPROBE=" 28 #define GET_ACTIVE_ASSOC_DWELL "ACTIVE=" 29 #define GET_PASSIVE_ASSOC_DWELL "PASSIVE=" 30 #define GET_HOME_DWELL "HOME=" 31 #define GET_SCAN_TYPE "TYPE=" 32 33 #define BAND_GET_CMD "BANDGET" 34 #define BAND_SET_CMD "BANDSET" 35 #define DTIM_SKIP_GET_CMD "DTIMSKIPGET" 36 #define DTIM_SKIP_SET_CMD "DTIMSKIPSET" 37 #define SETSUSPEND_CMD "SETSUSPENDOPT" 38 #define PNOSSIDCLR_SET_CMD "PNOSSIDCLR" 39 #define PNOSETUP_SET_CMD "PNOSETUP" 40 #define PNOENABLE_SET_CMD "PNOFORCE" 41 #define PNODEBUG_SET_CMD "PNODEBUG" 42 43 typedef struct wl_iw_extra_params { 44 int target_channel; 45 } wl_iw_extra_params_t; 46 47 #define WL_IW_RSSI_MINVAL -200 48 #define WL_IW_RSSI_NO_SIGNAL -91 49 #define WL_IW_RSSI_VERY_LOW -80 50 #define WL_IW_RSSI_LOW -70 51 #define WL_IW_RSSI_GOOD -68 52 #define WL_IW_RSSI_VERY_GOOD -58 53 #define WL_IW_RSSI_EXCELLENT -57 54 #define WL_IW_RSSI_INVALID 0 55 #define MAX_WX_STRING 80 56 #define WL_IW_SET_ACTIVE_SCAN (SIOCIWFIRSTPRIV+1) 57 #define WL_IW_GET_RSSI (SIOCIWFIRSTPRIV+3) 58 #define WL_IW_SET_PASSIVE_SCAN (SIOCIWFIRSTPRIV+5) 59 #define WL_IW_GET_LINK_SPEED (SIOCIWFIRSTPRIV+7) 60 #define WL_IW_GET_CURR_MACADDR (SIOCIWFIRSTPRIV+9) 61 #define WL_IW_SET_STOP (SIOCIWFIRSTPRIV+11) 62 #define WL_IW_SET_START (SIOCIWFIRSTPRIV+13) 63 64 #define WL_SET_AP_CFG (SIOCIWFIRSTPRIV+15) 65 #define WL_AP_STA_LIST (SIOCIWFIRSTPRIV+17) 66 #define WL_AP_MAC_FLTR (SIOCIWFIRSTPRIV+19) 67 #define WL_AP_BSS_START (SIOCIWFIRSTPRIV+21) 68 #define AP_LPB_CMD (SIOCIWFIRSTPRIV+23) 69 #define WL_AP_STOP (SIOCIWFIRSTPRIV+25) 70 #define WL_FW_RELOAD (SIOCIWFIRSTPRIV+27) 71 #define WL_COMBO_SCAN (SIOCIWFIRSTPRIV+29) 72 #define WL_AP_SPARE3 (SIOCIWFIRSTPRIV+31) 73 #define G_SCAN_RESULTS (8*1024) 74 #define WE_ADD_EVENT_FIX 0x80 75 #define G_WLAN_SET_ON 0 76 #define G_WLAN_SET_OFF 1 77 78 #define CHECK_EXTRA_FOR_NULL(extra) \ 79 if (!extra) { \ 80 WL_ERROR("%s: error : extra is null pointer\n", __func__); \ 81 return -EINVAL; \ 82 } 83 84 typedef struct wl_iw { 85 char nickname[IW_ESSID_MAX_SIZE]; 86 87 struct iw_statistics wstats; 88 89 int spy_num; 90 u32 pwsec; 91 u32 gwsec; 92 bool privacy_invoked; 93 94 u8 spy_addr[IW_MAX_SPY][ETH_ALEN]; 95 struct iw_quality spy_qual[IW_MAX_SPY]; 96 void *wlinfo; 97 dhd_pub_t *pub; 98 } wl_iw_t; 99 100 #if WIRELESS_EXT > 12 101 #include <net/iw_handler.h> 102 extern const struct iw_handler_def wl_iw_handler_def; 103 #endif 104 105 extern int wl_iw_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 106 extern void wl_iw_event(struct net_device *dev, wl_event_msg_t *e, void *data); 107 extern int wl_iw_get_wireless_stats(struct net_device *dev, 108 struct iw_statistics *wstats); 109 int wl_iw_attach(struct net_device *dev, void *dhdp); 110 void wl_iw_detach(void); 111 extern int net_os_set_suspend_disable(struct net_device *dev, int val); 112 extern int net_os_set_suspend(struct net_device *dev, int val); 113 extern int net_os_set_dtim_skip(struct net_device *dev, int val); 114 extern int net_os_set_packet_filter(struct net_device *dev, int val); 115 116 #define IWE_STREAM_ADD_EVENT(info, stream, ends, iwe, extra) \ 117 iwe_stream_add_event(info, stream, ends, iwe, extra) 118 #define IWE_STREAM_ADD_VALUE(info, event, value, ends, iwe, event_len) \ 119 iwe_stream_add_value(info, event, value, ends, iwe, event_len) 120 #define IWE_STREAM_ADD_POINT(info, stream, ends, iwe, extra) \ 121 iwe_stream_add_point(info, stream, ends, iwe, extra) 122 123 extern int dhd_pno_enable(dhd_pub_t *dhd, int pfn_enabled); 124 extern int dhd_pno_clean(dhd_pub_t *dhd); 125 extern int dhd_pno_set(dhd_pub_t *dhd, wlc_ssid_t *ssids_local, int nssid, 126 unsigned char scan_fr); 127 extern int dhd_pno_get_status(dhd_pub_t *dhd); 128 extern int dhd_dev_pno_reset(struct net_device *dev); 129 extern int dhd_dev_pno_set(struct net_device *dev, wlc_ssid_t *ssids_local, 130 int nssid, unsigned char scan_fr); 131 extern int dhd_dev_pno_enable(struct net_device *dev, int pfn_enabled); 132 extern int dhd_dev_get_pno_status(struct net_device *dev); 133 134 #define PNO_TLV_PREFIX 'S' 135 #define PNO_TLV_VERSION 1 136 #define PNO_TLV_SUBVERSION 0 137 #define PNO_TLV_RESERVED 0 138 #define PNO_TLV_TYPE_SSID_IE 'S' 139 #define PNO_TLV_TYPE_TIME 'T' 140 #define PNO_EVENT_UP "PNO_EVENT" 141 142 #endif /* _wl_iw_h_ */ 143