2011-03-21 18:00:50 -07:00
/*
* Marvell Wireless LAN device driver : major data structures and prototypes
*
2014-06-19 21:38:57 -07:00
* Copyright ( C ) 2011 - 2014 , Marvell International Ltd .
2011-03-21 18:00:50 -07:00
*
* This software file ( the " File " ) is distributed by Marvell International
* Ltd . under the terms of the GNU General Public License Version 2 , June 1991
* ( the " License " ) . You may use , redistribute and / or modify this File in
* accordance with the terms and conditions of the License , a copy of which
* is available by writing to the Free Software Foundation , Inc . ,
* 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA or on the
* worldwide web at http : //www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* THE FILE IS DISTRIBUTED AS - IS , WITHOUT WARRANTY OF ANY KIND , AND THE
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
* ARE EXPRESSLY DISCLAIMED . The License provides additional details about
* this warranty disclaimer .
*/
# ifndef _MWIFIEX_MAIN_H_
# define _MWIFIEX_MAIN_H_
# include <linux/kernel.h>
# include <linux/module.h>
# include <linux/sched.h>
# include <linux/semaphore.h>
# include <linux/ip.h>
# include <linux/skbuff.h>
# include <linux/if_arp.h>
# include <linux/etherdevice.h>
# include <net/sock.h>
# include <net/lib80211.h>
2014-06-19 21:38:52 -07:00
# include <linux/vmalloc.h>
2011-03-21 18:00:50 -07:00
# include <linux/firmware.h>
# include <linux/ctype.h>
2013-12-13 18:33:01 -08:00
# include <linux/of.h>
2014-11-25 06:43:05 -08:00
# include <linux/idr.h>
2015-03-12 00:38:39 -07:00
# include <linux/inetdevice.h>
2011-03-21 18:00:50 -07:00
# include "decl.h"
# include "ioctl.h"
# include "util.h"
# include "fw.h"
2011-10-11 17:41:21 -07:00
# include "pcie.h"
2014-12-23 19:14:10 +05:30
# include "usb.h"
# include "sdio.h"
2011-03-21 18:00:50 -07:00
extern const char driver_version [ ] ;
enum {
2011-04-13 17:27:06 -07:00
MWIFIEX_ASYNC_CMD ,
MWIFIEX_SYNC_CMD
2011-03-21 18:00:50 -07:00
} ;
2014-11-05 19:38:11 +05:30
# define MWIFIEX_DRIVER_MODE_STA BIT(0)
# define MWIFIEX_DRIVER_MODE_UAP BIT(1)
# define MWIFIEX_DRIVER_MODE_P2P BIT(2)
# define MWIFIEX_DRIVER_MODE_BITMASK (BIT(0) | BIT(1) | BIT(2))
2011-07-13 18:38:34 -07:00
# define MWIFIEX_MAX_AP 64
2015-03-13 17:37:57 +05:30
# define MWIFIEX_MAX_PKTS_TXQ 16
2011-03-21 18:00:50 -07:00
# define MWIFIEX_DEFAULT_WATCHDOG_TIMEOUT (5 * HZ)
# define MWIFIEX_TIMER_10S 10000
# define MWIFIEX_TIMER_1S 1000
2011-05-16 19:17:53 -07:00
# define MAX_TX_PENDING 100
# define LOW_TX_PENDING 80
2011-03-21 18:00:50 -07:00
2014-09-12 20:08:59 +05:30
# define HIGH_RX_PENDING 50
# define LOW_RX_PENDING 20
2011-03-21 18:00:50 -07:00
# define MWIFIEX_UPLD_SIZE (2312)
2014-02-11 18:39:56 -08:00
# define MAX_EVENT_SIZE 2048
2011-03-21 18:00:50 -07:00
# define ARP_FILTER_MAX_BUF_SIZE 68
# define MWIFIEX_KEY_BUFFER_SIZE 16
# define MWIFIEX_DEFAULT_LISTEN_INTERVAL 10
# define MWIFIEX_MAX_REGION_CODE 7
# define DEFAULT_BCN_AVG_FACTOR 8
# define DEFAULT_DATA_AVG_FACTOR 8
# define FIRST_VALID_CHANNEL 0xff
# define DEFAULT_AD_HOC_CHANNEL 6
# define DEFAULT_AD_HOC_CHANNEL_A 36
# define DEFAULT_BCN_MISS_TIMEOUT 5
# define MAX_SCAN_BEACON_BUFFER 8000
# define SCAN_BEACON_ENTRY_PAD 6
2012-06-06 21:12:40 -07:00
# define MWIFIEX_PASSIVE_SCAN_CHAN_TIME 110
# define MWIFIEX_ACTIVE_SCAN_CHAN_TIME 30
# define MWIFIEX_SPECIFIC_SCAN_CHAN_TIME 30
2014-09-12 20:08:54 +05:30
# define MWIFIEX_DEF_SCAN_CHAN_GAP_TIME 50
2011-03-21 18:00:50 -07:00
# define SCAN_RSSI(RSSI) (0x100 - ((u8)(RSSI)))
# define MWIFIEX_MAX_TOTAL_SCAN_TIME (MWIFIEX_TIMER_10S - MWIFIEX_TIMER_1S)
# define RSN_GTK_OUI_OFFSET 2
# define MWIFIEX_OUI_NOT_PRESENT 0
# define MWIFIEX_OUI_PRESENT 1
2012-09-25 20:23:32 -07:00
# define PKT_TYPE_MGMT 0xE5
2012-04-18 20:08:28 -07:00
/*
* Do not check for data_received for USB , as data_received
* is handled in mwifiex_usb_recv for USB
*/
2011-03-21 18:00:50 -07:00
# define IS_CARD_RX_RCVD(adapter) (adapter->cmd_resp_received || \
2012-04-18 20:08:28 -07:00
adapter - > event_received | | \
2014-11-05 17:04:27 +05:30
adapter - > data_received )
2011-03-21 18:00:50 -07:00
# define MWIFIEX_TYPE_CMD 1
# define MWIFIEX_TYPE_DATA 0
2015-03-13 17:37:58 +05:30
# define MWIFIEX_TYPE_AGGR_DATA 10
2011-03-21 18:00:50 -07:00
# define MWIFIEX_TYPE_EVENT 3
2014-03-07 19:41:27 -08:00
# define MAX_BITMAP_RATES_SIZE 18
2011-03-21 18:00:50 -07:00
# define MAX_CHANNEL_BAND_BG 14
2012-08-27 20:32:53 -07:00
# define MAX_CHANNEL_BAND_A 165
2011-03-21 18:00:50 -07:00
# define MAX_FREQUENCY_BAND_BG 2484
2011-10-11 17:41:21 -07:00
# define MWIFIEX_EVENT_HEADER_LEN 4
2012-05-08 18:30:25 -07:00
# define MWIFIEX_UAP_EVENT_EXTRA_HEADER 2
2011-10-11 17:41:21 -07:00
2012-04-18 20:08:28 -07:00
# define MWIFIEX_TYPE_LEN 4
# define MWIFIEX_USB_TYPE_CMD 0xF00DFACE
# define MWIFIEX_USB_TYPE_DATA 0xBEADC0DE
# define MWIFIEX_USB_TYPE_EVENT 0xBEEFFACE
2013-03-08 10:58:45 -08:00
/* Threshold for tx_timeout_cnt before we trigger a card reset */
# define TX_TIMEOUT_THRESHOLD 6
2014-12-23 19:14:10 +05:30
# define MWIFIEX_DRV_INFO_SIZE_MAX 0x40000
2015-02-13 17:41:08 +05:30
/* Address alignment */
# define MWIFIEX_ALIGN_ADDR(p, a) (((long)(p) + (a) - 1) & ~((a) - 1))
2011-03-21 18:00:50 -07:00
struct mwifiex_dbg {
u32 num_cmd_host_to_card_failure ;
u32 num_cmd_sleep_cfm_host_to_card_failure ;
u32 num_tx_host_to_card_failure ;
u32 num_event_deauth ;
u32 num_event_disassoc ;
u32 num_event_link_lost ;
u32 num_cmd_deauth ;
u32 num_cmd_assoc_success ;
u32 num_cmd_assoc_failure ;
u32 num_tx_timeout ;
u16 timeout_cmd_id ;
u16 timeout_cmd_act ;
u16 last_cmd_id [ DBG_CMD_NUM ] ;
u16 last_cmd_act [ DBG_CMD_NUM ] ;
u16 last_cmd_index ;
u16 last_cmd_resp_id [ DBG_CMD_NUM ] ;
u16 last_cmd_resp_index ;
u16 last_event [ DBG_CMD_NUM ] ;
u16 last_event_index ;
} ;
enum MWIFIEX_HARDWARE_STATUS {
MWIFIEX_HW_STATUS_READY ,
MWIFIEX_HW_STATUS_INITIALIZING ,
MWIFIEX_HW_STATUS_INIT_DONE ,
MWIFIEX_HW_STATUS_RESET ,
MWIFIEX_HW_STATUS_CLOSING ,
MWIFIEX_HW_STATUS_NOT_READY
} ;
enum MWIFIEX_802_11_POWER_MODE {
MWIFIEX_802_11_POWER_MODE_CAM ,
MWIFIEX_802_11_POWER_MODE_PSP
} ;
struct mwifiex_tx_param {
u32 next_pkt_len ;
} ;
enum MWIFIEX_PS_STATE {
PS_STATE_AWAKE ,
PS_STATE_PRE_SLEEP ,
PS_STATE_SLEEP_CFM ,
PS_STATE_SLEEP
} ;
2011-10-11 17:41:21 -07:00
enum mwifiex_iface_type {
MWIFIEX_SDIO ,
MWIFIEX_PCIE ,
2012-04-18 20:08:28 -07:00
MWIFIEX_USB
2011-10-11 17:41:21 -07:00
} ;
2011-03-21 18:00:50 -07:00
struct mwifiex_add_ba_param {
u32 tx_win_size ;
u32 rx_win_size ;
u32 timeout ;
2014-03-07 19:41:31 -08:00
u8 tx_amsdu ;
u8 rx_amsdu ;
2011-03-21 18:00:50 -07:00
} ;
struct mwifiex_tx_aggr {
u8 ampdu_user ;
u8 ampdu_ap ;
u8 amsdu ;
} ;
2015-03-13 17:37:55 +05:30
enum mwifiex_ba_status {
BA_SETUP_NONE = 0 ,
BA_SETUP_INPROGRESS ,
BA_SETUP_COMPLETE
} ;
2011-03-21 18:00:50 -07:00
struct mwifiex_ra_list_tbl {
struct list_head list ;
struct sk_buff_head skb_head ;
u8 ra [ ETH_ALEN ] ;
u32 is_11n_enabled ;
2012-08-03 18:06:10 -07:00
u16 max_amsdu ;
2013-07-22 19:17:39 -07:00
u16 ba_pkt_count ;
2012-08-03 18:06:10 -07:00
u8 ba_packet_thr ;
2015-03-13 17:37:55 +05:30
enum mwifiex_ba_status ba_status ;
u8 amsdu_in_ampdu ;
2013-07-22 19:17:40 -07:00
u16 total_pkt_count ;
2014-02-07 16:30:37 -08:00
bool tdls_link ;
2011-03-21 18:00:50 -07:00
} ;
struct mwifiex_tid_tbl {
struct list_head ra_list ;
} ;
# define WMM_HIGHEST_PRIORITY 7
# define HIGH_PRIO_TID 7
# define LOW_PRIO_TID 0
struct mwifiex_wmm_desc {
struct mwifiex_tid_tbl tid_tbl_ptr [ MAX_NUM_TID ] ;
u32 packets_out [ MAX_NUM_TID ] ;
/* spin lock to protect ra_list */
spinlock_t ra_list_spinlock ;
2012-03-27 14:07:59 +02:00
struct mwifiex_wmm_ac_status ac_status [ IEEE80211_NUM_ACS ] ;
enum mwifiex_wmm_ac_e ac_down_graded_vals [ IEEE80211_NUM_ACS ] ;
2011-03-21 18:00:50 -07:00
u32 drv_pkt_delay_max ;
2012-03-27 14:07:59 +02:00
u8 queue_priority [ IEEE80211_NUM_ACS ] ;
2011-03-21 18:00:50 -07:00
u32 user_pri_pkt_tx_ctrl [ WMM_HIGHEST_PRIORITY + 1 ] ; /* UP: 0 to 7 */
2011-05-16 19:17:49 -07:00
/* Number of transmit packets queued */
atomic_t tx_pkts_queued ;
2011-05-16 19:17:50 -07:00
/* Tracks highest priority with a packet queued */
atomic_t highest_queued_prio ;
2011-03-21 18:00:50 -07:00
} ;
struct mwifiex_802_11_security {
u8 wpa_enabled ;
u8 wpa2_enabled ;
u8 wapi_enabled ;
u8 wapi_key_on ;
2012-02-24 21:36:04 -08:00
u8 wep_enabled ;
2011-03-21 18:00:50 -07:00
u32 authentication_mode ;
2012-02-24 21:36:05 -08:00
u8 is_authtype_auto ;
2011-03-21 18:00:50 -07:00
u32 encryption_mode ;
} ;
struct ieee_types_header {
u8 element_id ;
u8 len ;
} __packed ;
struct ieee_types_vendor_specific {
struct ieee_types_vendor_header vend_hdr ;
u8 data [ IEEE_MAX_IE_SIZE - sizeof ( struct ieee_types_vendor_header ) ] ;
} __packed ;
struct ieee_types_generic {
struct ieee_types_header ieee_hdr ;
u8 data [ IEEE_MAX_IE_SIZE - sizeof ( struct ieee_types_header ) ] ;
} __packed ;
2014-02-07 16:27:32 -08:00
struct ieee_types_bss_co_2040 {
struct ieee_types_header ieee_hdr ;
u8 bss_2040co ;
} __packed ;
struct ieee_types_extcap {
struct ieee_types_header ieee_hdr ;
u8 ext_capab [ 8 ] ;
} __packed ;
2014-02-07 16:30:39 -08:00
struct ieee_types_vht_cap {
struct ieee_types_header ieee_hdr ;
struct ieee80211_vht_cap vhtcap ;
} __packed ;
struct ieee_types_vht_oper {
struct ieee_types_header ieee_hdr ;
struct ieee80211_vht_operation vhtoper ;
} __packed ;
struct ieee_types_aid {
struct ieee_types_header ieee_hdr ;
u16 aid ;
} __packed ;
2011-03-21 18:00:50 -07:00
struct mwifiex_bssdescriptor {
u8 mac_address [ ETH_ALEN ] ;
2012-02-27 22:04:14 -08:00
struct cfg80211_ssid ssid ;
2011-03-21 18:00:50 -07:00
u32 privacy ;
s32 rssi ;
u32 channel ;
u32 freq ;
u16 beacon_period ;
u8 erp_flags ;
u32 bss_mode ;
u8 supported_rates [ MWIFIEX_SUPPORTED_RATES ] ;
u8 data_rates [ MWIFIEX_SUPPORTED_RATES ] ;
/* Network band.
* BAND_B ( 0x01 ) : ' b ' band
* BAND_G ( 0x02 ) : ' g ' band
* BAND_A ( 0 X04 ) : ' a ' band
*/
u16 bss_band ;
2012-04-16 21:36:52 -07:00
u64 fw_tsf ;
u64 timestamp ;
2011-03-21 18:00:50 -07:00
union ieee_types_phy_param_set phy_param_set ;
union ieee_types_ss_param_set ss_param_set ;
u16 cap_info_bitmap ;
struct ieee_types_wmm_parameter wmm_ie ;
u8 disable_11n ;
struct ieee80211_ht_cap * bcn_ht_cap ;
u16 ht_cap_offset ;
2012-03-15 19:45:16 +01:00
struct ieee80211_ht_operation * bcn_ht_oper ;
2011-03-21 18:00:50 -07:00
u16 ht_info_offset ;
u8 * bcn_bss_co_2040 ;
u16 bss_co_2040_offset ;
u8 * bcn_ext_cap ;
u16 ext_cap_offset ;
2013-02-15 21:44:30 -08:00
struct ieee80211_vht_cap * bcn_vht_cap ;
u16 vht_cap_offset ;
struct ieee80211_vht_operation * bcn_vht_oper ;
u16 vht_info_offset ;
struct ieee_types_oper_mode_ntf * oper_mode ;
u16 oper_mode_offset ;
u8 disable_11ac ;
2011-03-21 18:00:50 -07:00
struct ieee_types_vendor_specific * bcn_wpa_ie ;
u16 wpa_offset ;
struct ieee_types_generic * bcn_rsn_ie ;
u16 rsn_offset ;
struct ieee_types_generic * bcn_wapi_ie ;
u16 wapi_offset ;
u8 * beacon_buf ;
u32 beacon_buf_size ;
2013-06-19 08:49:05 -07:00
u8 sensed_11h ;
u8 local_constraint ;
u8 chan_sw_ie_present ;
2011-03-21 18:00:50 -07:00
} ;
struct mwifiex_current_bss_params {
struct mwifiex_bssdescriptor bss_descriptor ;
u8 wmm_enabled ;
u8 wmm_uapsd_enabled ;
u8 band ;
u32 num_of_rates ;
u8 data_rates [ MWIFIEX_SUPPORTED_RATES ] ;
} ;
struct mwifiex_sleep_params {
u16 sp_error ;
u16 sp_offset ;
u16 sp_stable_time ;
u8 sp_cal_control ;
u8 sp_ext_sleep_clk ;
u16 sp_reserved ;
} ;
struct mwifiex_sleep_period {
u16 period ;
u16 reserved ;
} ;
struct mwifiex_wep_key {
u32 length ;
u32 key_index ;
u32 key_length ;
u8 key_material [ MWIFIEX_KEY_BUFFER_SIZE ] ;
} ;
# define MAX_REGION_CHANNEL_NUM 2
struct mwifiex_chan_freq_power {
u16 channel ;
u32 freq ;
u16 max_tx_power ;
u8 unsupported ;
} ;
enum state_11d_t {
DISABLE_11D = 0 ,
ENABLE_11D = 1 ,
} ;
# define MWIFIEX_MAX_TRIPLET_802_11D 83
struct mwifiex_802_11d_domain_reg {
u8 country_code [ IEEE80211_COUNTRY_STRING_LEN ] ;
u8 no_of_triplet ;
struct ieee80211_country_ie_triplet
triplet [ MWIFIEX_MAX_TRIPLET_802_11D ] ;
} ;
struct mwifiex_vendor_spec_cfg_ie {
u16 mask ;
u16 flag ;
u8 ie [ MWIFIEX_MAX_VSIE_LEN ] ;
} ;
struct wps {
u8 session_enable ;
} ;
2012-09-25 20:23:36 -07:00
struct mwifiex_roc_cfg {
u64 cookie ;
struct ieee80211_channel chan ;
} ;
2014-06-19 21:38:52 -07:00
# define MWIFIEX_FW_DUMP_IDX 0xff
2014-12-23 19:14:10 +05:30
# define MWIFIEX_DRV_INFO_IDX 20
2014-06-19 21:38:52 -07:00
# define FW_DUMP_MAX_NAME_LEN 8
# define FW_DUMP_HOST_READY 0xEE
# define FW_DUMP_DONE 0xFF
2014-09-18 07:18:50 -04:00
# define FW_DUMP_READ_DONE 0xFE
2014-06-19 21:38:52 -07:00
struct memory_type_mapping {
u8 mem_name [ FW_DUMP_MAX_NAME_LEN ] ;
u8 * mem_ptr ;
u32 mem_size ;
u8 done_flag ;
} ;
enum rdwr_status {
RDWR_STATUS_SUCCESS = 0 ,
RDWR_STATUS_FAILURE = 1 ,
RDWR_STATUS_DONE = 2
} ;
enum mwifiex_iface_work_flags {
MWIFIEX_IFACE_WORK_FW_DUMP ,
2014-06-19 21:38:53 -07:00
MWIFIEX_IFACE_WORK_CARD_RESET ,
2014-06-19 21:38:52 -07:00
} ;
2011-03-21 18:00:50 -07:00
struct mwifiex_adapter ;
struct mwifiex_private ;
struct mwifiex_private {
struct mwifiex_adapter * adapter ;
u8 bss_type ;
u8 bss_role ;
u8 bss_priority ;
u8 bss_num ;
2012-05-08 18:30:15 -07:00
u8 bss_started ;
2011-03-21 18:00:50 -07:00
u8 frame_type ;
u8 curr_addr [ ETH_ALEN ] ;
u8 media_connected ;
u32 num_tx_timeout ;
2013-03-08 10:58:45 -08:00
/* track consecutive timeout */
u8 tx_timeout_cnt ;
2011-03-21 18:00:50 -07:00
struct net_device * netdev ;
struct net_device_stats stats ;
u16 curr_pkt_filter ;
u32 bss_mode ;
u32 pkt_tx_ctrl ;
u16 tx_power_level ;
u8 max_tx_power_level ;
u8 min_tx_power_level ;
u8 tx_rate ;
u8 tx_htinfo ;
u8 rxpd_htinfo ;
u8 rxpd_rate ;
u16 rate_bitmap ;
u16 bitmap_rates [ MAX_BITMAP_RATES_SIZE ] ;
u32 data_rate ;
u8 is_data_rate_auto ;
u16 bcn_avg_factor ;
u16 data_avg_factor ;
s16 data_rssi_last ;
s16 data_nf_last ;
s16 data_rssi_avg ;
s16 data_nf_avg ;
s16 bcn_rssi_last ;
s16 bcn_nf_last ;
s16 bcn_rssi_avg ;
s16 bcn_nf_avg ;
struct mwifiex_bssdescriptor * attempted_bss_desc ;
2012-02-27 22:04:14 -08:00
struct cfg80211_ssid prev_ssid ;
2011-03-21 18:00:50 -07:00
u8 prev_bssid [ ETH_ALEN ] ;
struct mwifiex_current_bss_params curr_bss_params ;
u16 beacon_period ;
2012-02-02 20:48:58 -08:00
u8 dtim_period ;
2011-03-21 18:00:50 -07:00
u16 listen_interval ;
u16 atim_window ;
u8 adhoc_channel ;
u8 adhoc_is_link_sensed ;
u8 adhoc_state ;
struct mwifiex_802_11_security sec_info ;
struct mwifiex_wep_key wep_key [ NUM_WEP_KEYS ] ;
u16 wep_key_curr_index ;
u8 wpa_ie [ 256 ] ;
u8 wpa_ie_len ;
u8 wpa_is_gtk_set ;
struct host_cmd_ds_802_11_key_material aes_key ;
2014-02-07 16:32:35 -08:00
struct host_cmd_ds_802_11_key_material_v2 aes_key_v2 ;
2011-03-21 18:00:50 -07:00
u8 wapi_ie [ 256 ] ;
u8 wapi_ie_len ;
2012-04-09 20:06:56 -07:00
u8 * wps_ie ;
u8 wps_ie_len ;
2011-03-21 18:00:50 -07:00
u8 wmm_required ;
u8 wmm_enabled ;
u8 wmm_qosinfo ;
struct mwifiex_wmm_desc wmm ;
2012-11-01 18:44:16 -07:00
atomic_t wmm_tx_pending [ IEEE80211_NUM_ACS ] ;
2012-08-03 18:06:07 -07:00
struct list_head sta_list ;
2014-11-13 21:54:16 +05:30
/* spin lock for associated station/TDLS peers list */
2012-08-03 18:06:07 -07:00
spinlock_t sta_list_spinlock ;
2014-11-13 21:54:16 +05:30
struct list_head auto_tdls_list ;
/* spin lock for auto TDLS peer list */
spinlock_t auto_tdls_lock ;
2011-03-21 18:00:50 -07:00
struct list_head tx_ba_stream_tbl_ptr ;
/* spin lock for tx_ba_stream_tbl_ptr queue */
spinlock_t tx_ba_stream_tbl_lock ;
struct mwifiex_tx_aggr aggr_prio_tbl [ MAX_NUM_TID ] ;
struct mwifiex_add_ba_param add_ba_param ;
u16 rx_seq [ MAX_NUM_TID ] ;
2014-02-07 16:27:29 -08:00
u8 tos_to_tid_inv [ MAX_NUM_TID ] ;
2011-03-21 18:00:50 -07:00
struct list_head rx_reorder_tbl_ptr ;
/* spin lock for rx_reorder_tbl_ptr queue */
spinlock_t rx_reorder_tbl_lock ;
/* spin lock for Rx packets */
spinlock_t rx_pkt_lock ;
# define MWIFIEX_ASSOC_RSP_BUF_SIZE 500
u8 assoc_rsp_buf [ MWIFIEX_ASSOC_RSP_BUF_SIZE ] ;
u32 assoc_rsp_size ;
# define MWIFIEX_GENIE_BUF_SIZE 256
u8 gen_ie_buf [ MWIFIEX_GENIE_BUF_SIZE ] ;
u8 gen_ie_buf_len ;
struct mwifiex_vendor_spec_cfg_ie vs_ie [ MWIFIEX_MAX_VSIE_NUM ] ;
# define MWIFIEX_ASSOC_TLV_BUF_SIZE 256
u8 assoc_tlv_buf [ MWIFIEX_ASSOC_TLV_BUF_SIZE ] ;
u8 assoc_tlv_buf_len ;
u8 * curr_bcn_buf ;
u32 curr_bcn_size ;
/* spin lock for beacon buffer */
spinlock_t curr_bcn_buf_lock ;
2015-01-28 15:42:00 +05:30
struct wireless_dev wdev ;
2011-03-21 18:00:50 -07:00
struct mwifiex_chan_freq_power cfp ;
char version_str [ 128 ] ;
# ifdef CONFIG_DEBUG_FS
struct dentry * dfs_dev_dir ;
# endif
u16 current_key_index ;
struct semaphore async_sem ;
struct cfg80211_scan_request * scan_request ;
u8 cfg_bssid [ 6 ] ;
struct wps wps ;
u8 scan_block ;
2012-03-15 20:51:51 -07:00
s32 cqm_rssi_thold ;
u32 cqm_rssi_hyst ;
u8 subsc_evt_rssi_state ;
2012-08-30 18:20:55 -07:00
struct mwifiex_ds_misc_subsc_evt async_subsc_evt_storage ;
2012-05-08 18:30:28 -07:00
struct mwifiex_ie mgmt_ie [ MAX_MGMT_IE_INDEX ] ;
2012-05-08 18:30:29 -07:00
u16 beacon_idx ;
u16 proberesp_idx ;
u16 assocresp_idx ;
2015-01-28 15:54:20 +05:30
u16 gen_idx ;
2012-08-03 18:06:05 -07:00
u8 ap_11n_enabled ;
2013-02-15 21:44:30 -08:00
u8 ap_11ac_enabled ;
2012-09-25 20:23:34 -07:00
u32 mgmt_frame_mask ;
2012-09-25 20:23:36 -07:00
struct mwifiex_roc_cfg roc_cfg ;
2013-05-17 17:50:20 -07:00
bool scan_aborting ;
2013-06-18 16:36:58 -07:00
u8 csa_chan ;
unsigned long csa_expire_time ;
2013-07-22 19:17:41 -07:00
u8 del_list_idx ;
2013-08-23 16:48:23 -07:00
bool hs2_enabled ;
2015-01-28 15:54:17 +05:30
struct mwifiex_uap_bss_param bss_cfg ;
2014-02-07 16:30:34 -08:00
struct station_parameters * sta_params ;
2014-02-07 16:30:35 -08:00
struct sk_buff_head tdls_txq ;
2014-11-13 21:54:16 +05:30
u8 check_tdls_tx ;
struct timer_list auto_tdls_timer ;
bool auto_tdls_timer_active ;
2014-11-25 06:43:05 -08:00
struct idr ack_status_frames ;
/* spin lock for ack status */
spinlock_t ack_status_lock ;
2014-12-23 19:14:07 +05:30
/** rx histogram data */
struct mwifiex_histogram_data * hist_data ;
2015-01-28 15:54:21 +05:30
struct cfg80211_chan_def dfs_chandef ;
struct workqueue_struct * dfs_cac_workqueue ;
struct delayed_work dfs_cac_work ;
2015-01-28 15:54:24 +05:30
struct timer_list dfs_chan_switch_timer ;
struct workqueue_struct * dfs_chan_sw_workqueue ;
struct delayed_work dfs_chan_sw_work ;
struct cfg80211_beacon_data beacon_after ;
2015-01-28 15:54:25 +05:30
struct mwifiex_11h_intf_state state_11h ;
2011-03-21 18:00:50 -07:00
} ;
struct mwifiex_tx_ba_stream_tbl {
struct list_head list ;
int tid ;
u8 ra [ ETH_ALEN ] ;
enum mwifiex_ba_status ba_status ;
2014-03-07 19:41:31 -08:00
u8 amsdu ;
2011-03-21 18:00:50 -07:00
} ;
struct mwifiex_rx_reorder_tbl ;
struct reorder_tmr_cnxt {
struct timer_list timer ;
struct mwifiex_rx_reorder_tbl * ptr ;
struct mwifiex_private * priv ;
2014-10-29 22:44:34 +05:30
u8 timer_is_set ;
2011-03-21 18:00:50 -07:00
} ;
struct mwifiex_rx_reorder_tbl {
struct list_head list ;
int tid ;
u8 ta [ ETH_ALEN ] ;
2014-02-25 16:31:37 -08:00
int init_win ;
2011-03-21 18:00:50 -07:00
int start_win ;
int win_size ;
void * * rx_reorder_ptr ;
struct reorder_tmr_cnxt timer_context ;
2014-03-07 19:41:31 -08:00
u8 amsdu ;
2012-09-27 19:00:10 -07:00
u8 flags ;
2011-03-21 18:00:50 -07:00
} ;
struct mwifiex_bss_prio_node {
struct list_head list ;
struct mwifiex_private * priv ;
} ;
struct mwifiex_bss_prio_tbl {
struct list_head bss_prio_head ;
/* spin lock for bss priority */
spinlock_t bss_prio_lock ;
struct mwifiex_bss_prio_node * bss_prio_cur ;
} ;
struct cmd_ctrl_node {
struct list_head list ;
struct mwifiex_private * priv ;
u32 cmd_oid ;
u32 cmd_flag ;
struct sk_buff * cmd_skb ;
struct sk_buff * resp_skb ;
void * data_buf ;
2011-04-13 17:27:06 -07:00
u32 wait_q_enabled ;
2011-03-21 18:00:50 -07:00
struct sk_buff * skb ;
2011-10-12 20:28:06 -07:00
u8 * condition ;
u8 cmd_wait_q_woken ;
2011-03-21 18:00:50 -07:00
} ;
2012-04-16 21:36:52 -07:00
struct mwifiex_bss_priv {
u8 band ;
u64 fw_tsf ;
} ;
2014-02-07 16:27:33 -08:00
struct mwifiex_tdls_capab {
__le16 capab ;
u8 rates [ 32 ] ;
u8 rates_len ;
u8 qos_info ;
u8 coex_2040 ;
2014-02-07 16:30:39 -08:00
u16 aid ;
2014-02-07 16:27:33 -08:00
struct ieee80211_ht_cap ht_capb ;
struct ieee80211_ht_operation ht_oper ;
struct ieee_types_extcap extcap ;
struct ieee_types_generic rsn_ie ;
2014-02-07 16:30:39 -08:00
struct ieee80211_vht_cap vhtcap ;
struct ieee80211_vht_operation vhtoper ;
2014-02-07 16:27:33 -08:00
} ;
/* This is AP/TDLS specific structure which stores information
* about associated / peer STA
2012-08-03 18:06:07 -07:00
*/
struct mwifiex_sta_node {
struct list_head list ;
u8 mac_addr [ ETH_ALEN ] ;
u8 is_wmm_enabled ;
u8 is_11n_enabled ;
2014-02-07 16:30:39 -08:00
u8 is_11ac_enabled ;
2012-08-03 18:06:07 -07:00
u8 ampdu_sta [ MAX_NUM_TID ] ;
u16 rx_seq [ MAX_NUM_TID ] ;
u16 max_amsdu ;
2014-02-07 16:27:34 -08:00
u8 tdls_status ;
2014-02-07 16:27:33 -08:00
struct mwifiex_tdls_capab tdls_cap ;
2012-08-03 18:06:07 -07:00
} ;
2014-11-13 21:54:16 +05:30
struct mwifiex_auto_tdls_peer {
struct list_head list ;
u8 mac_addr [ ETH_ALEN ] ;
u8 tdls_status ;
int rssi ;
long rssi_jiffies ;
u8 failure_count ;
u8 do_discover ;
u8 do_setup ;
} ;
2011-03-21 18:00:50 -07:00
struct mwifiex_if_ops {
int ( * init_if ) ( struct mwifiex_adapter * ) ;
void ( * cleanup_if ) ( struct mwifiex_adapter * ) ;
2011-10-11 17:41:21 -07:00
int ( * check_fw_status ) ( struct mwifiex_adapter * , u32 ) ;
2011-03-21 18:00:50 -07:00
int ( * prog_fw ) ( struct mwifiex_adapter * , struct mwifiex_fw_image * ) ;
int ( * register_dev ) ( struct mwifiex_adapter * ) ;
void ( * unregister_dev ) ( struct mwifiex_adapter * ) ;
int ( * enable_int ) ( struct mwifiex_adapter * ) ;
2013-07-13 10:57:10 -04:00
void ( * disable_int ) ( struct mwifiex_adapter * ) ;
2011-03-21 18:00:50 -07:00
int ( * process_int_status ) ( struct mwifiex_adapter * ) ;
2011-10-11 17:41:21 -07:00
int ( * host_to_card ) ( struct mwifiex_adapter * , u8 , struct sk_buff * ,
2011-03-21 18:00:50 -07:00
struct mwifiex_tx_param * ) ;
int ( * wakeup ) ( struct mwifiex_adapter * ) ;
int ( * wakeup_complete ) ( struct mwifiex_adapter * ) ;
2011-10-11 17:41:21 -07:00
/* Interface specific functions */
2011-03-21 18:00:50 -07:00
void ( * update_mp_end_port ) ( struct mwifiex_adapter * , u16 ) ;
void ( * cleanup_mpa_buf ) ( struct mwifiex_adapter * ) ;
2011-10-11 17:41:21 -07:00
int ( * cmdrsp_complete ) ( struct mwifiex_adapter * , struct sk_buff * ) ;
int ( * event_complete ) ( struct mwifiex_adapter * , struct sk_buff * ) ;
2013-01-03 21:21:29 -08:00
int ( * init_fw_port ) ( struct mwifiex_adapter * ) ;
2012-04-18 20:08:28 -07:00
int ( * dnld_fw ) ( struct mwifiex_adapter * , struct mwifiex_fw_image * ) ;
2012-11-01 18:44:14 -07:00
void ( * card_reset ) ( struct mwifiex_adapter * ) ;
2014-04-17 11:46:59 -07:00
void ( * fw_dump ) ( struct mwifiex_adapter * ) ;
2014-12-23 19:14:11 +05:30
int ( * reg_dump ) ( struct mwifiex_adapter * , char * ) ;
2013-01-03 21:21:31 -08:00
int ( * clean_pcie_ring ) ( struct mwifiex_adapter * adapter ) ;
2014-06-19 21:38:52 -07:00
void ( * iface_work ) ( struct work_struct * work ) ;
2014-11-05 17:04:29 +05:30
void ( * submit_rem_rx_urbs ) ( struct mwifiex_adapter * adapter ) ;
2015-03-13 17:37:58 +05:30
void ( * deaggr_pkt ) ( struct mwifiex_adapter * , struct sk_buff * ) ;
2011-03-21 18:00:50 -07:00
} ;
struct mwifiex_adapter {
2011-10-11 17:41:21 -07:00
u8 iface_type ;
2015-01-28 15:42:03 +05:30
struct mwifiex_iface_comb iface_limit ;
struct mwifiex_iface_comb curr_iface_comb ;
2011-03-21 18:00:50 -07:00
struct mwifiex_private * priv [ MWIFIEX_MAX_BSS_NUM ] ;
u8 priv_num ;
const struct firmware * firmware ;
2011-05-23 18:00:17 -07:00
char fw_name [ 32 ] ;
2011-10-11 17:41:21 -07:00
int winner ;
2011-03-21 18:00:50 -07:00
struct device * dev ;
2012-05-08 18:30:15 -07:00
struct wiphy * wiphy ;
2015-01-28 15:42:01 +05:30
u8 perm_addr [ ETH_ALEN ] ;
2011-03-21 18:00:50 -07:00
bool surprise_removed ;
u32 fw_release_number ;
u16 init_wait_q_woken ;
wait_queue_head_t init_wait_q ;
void * card ;
struct mwifiex_if_ops if_ops ;
atomic_t rx_pending ;
atomic_t tx_pending ;
2011-04-13 17:27:06 -07:00
atomic_t cmd_pending ;
2011-03-21 18:00:50 -07:00
struct workqueue_struct * workqueue ;
struct work_struct main_work ;
2014-09-12 20:08:59 +05:30
struct workqueue_struct * rx_workqueue ;
struct work_struct rx_work ;
2015-01-28 15:54:21 +05:30
struct workqueue_struct * dfs_workqueue ;
struct work_struct dfs_work ;
2014-09-12 20:08:59 +05:30
bool rx_work_enabled ;
bool rx_processing ;
bool delay_main_work ;
bool rx_locked ;
2015-03-13 17:37:51 +05:30
bool main_locked ;
2011-03-21 18:00:50 -07:00
struct mwifiex_bss_prio_tbl bss_prio_tbl [ MWIFIEX_MAX_BSS_NUM ] ;
/* spin lock for init/shutdown */
spinlock_t mwifiex_lock ;
/* spin lock for main process */
spinlock_t main_proc_lock ;
u32 mwifiex_processing ;
2015-02-11 23:12:24 +05:30
u8 more_task_flag ;
2011-03-21 18:00:50 -07:00
u16 tx_buf_size ;
u16 curr_tx_buf_size ;
2015-03-13 17:37:58 +05:30
bool sdio_rx_aggr_enable ;
u16 sdio_rx_block_size ;
2011-03-21 18:00:50 -07:00
u32 ioport ;
enum MWIFIEX_HARDWARE_STATUS hw_status ;
u16 number_of_antenna ;
u32 fw_cap_info ;
/* spin lock for interrupt handling */
spinlock_t int_lock ;
u8 int_status ;
u32 event_cause ;
struct sk_buff * event_skb ;
u8 upld_buf [ MWIFIEX_UPLD_SIZE ] ;
u8 data_sent ;
u8 cmd_sent ;
u8 cmd_resp_received ;
u8 event_received ;
u8 data_received ;
u16 seq_num ;
struct cmd_ctrl_node * cmd_pool ;
struct cmd_ctrl_node * curr_cmd ;
/* spin lock for command */
spinlock_t mwifiex_cmd_lock ;
2014-02-27 19:35:17 -08:00
u8 is_cmd_timedout ;
2011-03-21 18:00:50 -07:00
u16 last_init_cmd ;
struct timer_list cmd_timer ;
struct list_head cmd_free_q ;
/* spin lock for cmd_free_q */
spinlock_t cmd_free_q_lock ;
struct list_head cmd_pending_q ;
/* spin lock for cmd_pending_q */
spinlock_t cmd_pending_q_lock ;
struct list_head scan_pending_q ;
/* spin lock for scan_pending_q */
spinlock_t scan_pending_q_lock ;
2014-09-12 20:08:59 +05:30
/* spin lock for RX processing routine */
spinlock_t rx_proc_lock ;
2015-03-13 17:37:57 +05:30
struct sk_buff_head tx_data_q ;
atomic_t tx_queued ;
2011-03-21 18:00:50 -07:00
u32 scan_processing ;
u16 region_code ;
struct mwifiex_802_11d_domain_reg domain_reg ;
u16 scan_probes ;
u32 scan_mode ;
u16 specific_scan_time ;
u16 active_scan_time ;
u16 passive_scan_time ;
2014-09-12 20:08:54 +05:30
u16 scan_chan_gap_time ;
2011-03-21 18:00:50 -07:00
u8 fw_bands ;
u8 adhoc_start_band ;
u8 config_bands ;
struct mwifiex_chan_scan_param_set * scan_channels ;
u8 tx_lock_flag ;
struct mwifiex_sleep_params sleep_params ;
struct mwifiex_sleep_period sleep_period ;
u16 ps_mode ;
u32 ps_state ;
u8 need_to_wakeup ;
u16 multiple_dtim ;
u16 local_listen_interval ;
u16 null_pkt_interval ;
struct sk_buff * sleep_cfm ;
u16 bcn_miss_time_out ;
u16 adhoc_awake_period ;
u8 is_deep_sleep ;
u8 delay_null_pkt ;
u16 delay_to_ps ;
u16 enhanced_ps_mode ;
u8 pm_wakeup_card_req ;
u16 gen_null_pkt ;
u16 pps_uapsd_mode ;
u32 pm_wakeup_fw_try ;
2014-12-31 02:36:41 -08:00
struct timer_list wakeup_timer ;
2011-03-21 18:00:50 -07:00
u8 is_hs_configured ;
struct mwifiex_hs_config_param hs_cfg ;
u8 hs_activated ;
u16 hs_activate_wait_q_woken ;
wait_queue_head_t hs_activate_wait_q ;
bool is_suspended ;
2014-03-25 19:01:20 -07:00
bool hs_enabling ;
2011-03-21 18:00:50 -07:00
u8 event_body [ MAX_EVENT_SIZE ] ;
u32 hw_dot_11n_dev_cap ;
u8 hw_dev_mcs_support ;
2014-02-27 19:35:18 -08:00
u8 user_dev_mcs_support ;
2011-03-21 18:00:50 -07:00
u8 adhoc_11n_enabled ;
2011-12-20 23:47:21 -08:00
u8 sec_chan_offset ;
2011-03-21 18:00:50 -07:00
struct mwifiex_dbg dbg ;
u8 arp_filter [ ARP_FILTER_MAX_BUF_SIZE ] ;
u32 arp_filter_size ;
2011-04-13 17:27:06 -07:00
struct mwifiex_wait_queue cmd_wait_q ;
2011-10-12 20:28:06 -07:00
u8 scan_wait_q_woken ;
2011-12-08 20:41:05 -08:00
spinlock_t queue_lock ; /* lock for tx queues */
2012-05-08 18:30:17 -07:00
u8 country_code [ IEEE80211_COUNTRY_STRING_LEN ] ;
2012-05-08 18:30:28 -07:00
u16 max_mgmt_ie_index ;
2013-05-17 17:50:25 -07:00
const struct firmware * cal_data ;
2013-12-13 18:33:01 -08:00
struct device_node * dt_node ;
2013-02-15 21:44:30 -08:00
/* 11AC */
u32 is_hw_11ac_capable ;
u32 hw_dot_11ac_dev_cap ;
u32 hw_dot_11ac_mcs_support ;
u32 usr_dot_11ac_dev_cap_bg ;
u32 usr_dot_11ac_dev_cap_a ;
u32 usr_dot_11ac_mcs_support ;
2012-08-03 18:06:08 -07:00
atomic_t pending_bridged_pkts ;
2013-07-22 19:17:55 -07:00
struct semaphore * card_sem ;
2014-02-11 18:39:56 -08:00
bool ext_scan ;
2014-03-07 19:41:26 -08:00
u8 fw_api_ver ;
2014-08-19 08:24:25 -04:00
u8 key_api_major_ver , key_api_minor_ver ;
2014-06-19 21:38:52 -07:00
struct memory_type_mapping * mem_type_mapping_tbl ;
u8 num_mem_types ;
u8 curr_mem_idx ;
2014-12-23 19:14:10 +05:30
void * drv_info_dump ;
u32 drv_info_size ;
2014-09-12 20:08:54 +05:30
bool scan_chan_gap_enabled ;
2014-09-12 20:08:59 +05:30
struct sk_buff_head rx_data_q ;
2014-10-31 16:08:26 +05:30
struct mwifiex_chan_stats * chan_stats ;
u32 num_in_chan_stats ;
int survey_idx ;
2014-11-13 21:54:16 +05:30
bool auto_tdls ;
2011-03-21 18:00:50 -07:00
} ;
2015-03-13 17:37:57 +05:30
void mwifiex_process_tx_queue ( struct mwifiex_adapter * adapter ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_init_lock_list ( struct mwifiex_adapter * adapter ) ;
2011-12-08 20:41:05 -08:00
void mwifiex_set_trans_start ( struct net_device * dev ) ;
void mwifiex_stop_net_dev_queue ( struct net_device * netdev ,
struct mwifiex_adapter * adapter ) ;
void mwifiex_wake_up_net_dev_queue ( struct net_device * netdev ,
struct mwifiex_adapter * adapter ) ;
2012-09-25 20:23:42 -07:00
int mwifiex_init_priv ( struct mwifiex_private * priv ) ;
void mwifiex_free_priv ( struct mwifiex_private * priv ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_init_fw ( struct mwifiex_adapter * adapter ) ;
int mwifiex_init_fw_complete ( struct mwifiex_adapter * adapter ) ;
int mwifiex_shutdown_drv ( struct mwifiex_adapter * adapter ) ;
int mwifiex_shutdown_fw_complete ( struct mwifiex_adapter * adapter ) ;
int mwifiex_dnld_fw ( struct mwifiex_adapter * , struct mwifiex_fw_image * ) ;
2012-10-19 19:19:21 -07:00
int mwifiex_recv_packet ( struct mwifiex_private * priv , struct sk_buff * skb ) ;
2011-03-21 18:00:50 -07:00
2012-10-19 19:19:21 -07:00
int mwifiex_process_mgmt_packet ( struct mwifiex_private * priv ,
2012-09-25 20:23:35 -07:00
struct sk_buff * skb ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_process_event ( struct mwifiex_adapter * adapter ) ;
2011-10-12 20:28:06 -07:00
int mwifiex_complete_cmd ( struct mwifiex_adapter * adapter ,
struct cmd_ctrl_node * cmd_node ) ;
2011-03-21 18:00:50 -07:00
2014-02-27 19:35:12 -08:00
int mwifiex_send_cmd ( struct mwifiex_private * priv , u16 cmd_no ,
u16 cmd_action , u32 cmd_oid , void * data_buf , bool sync ) ;
2011-03-21 18:00:50 -07:00
void mwifiex_cmd_timeout_func ( unsigned long function_context ) ;
int mwifiex_get_debug_info ( struct mwifiex_private * ,
struct mwifiex_debug_info * ) ;
int mwifiex_alloc_cmd_buffer ( struct mwifiex_adapter * adapter ) ;
int mwifiex_free_cmd_buffer ( struct mwifiex_adapter * adapter ) ;
void mwifiex_cancel_all_pending_cmd ( struct mwifiex_adapter * adapter ) ;
2011-04-13 17:27:06 -07:00
void mwifiex_cancel_pending_ioctl ( struct mwifiex_adapter * adapter ) ;
2011-03-21 18:00:50 -07:00
void mwifiex_insert_cmd_to_free_q ( struct mwifiex_adapter * adapter ,
struct cmd_ctrl_node * cmd_node ) ;
2013-04-01 12:44:46 -07:00
void mwifiex_recycle_cmd_node ( struct mwifiex_adapter * adapter ,
struct cmd_ctrl_node * cmd_node ) ;
2011-03-21 18:00:50 -07:00
void mwifiex_insert_cmd_to_pending_q ( struct mwifiex_adapter * adapter ,
struct cmd_ctrl_node * cmd_node ,
u32 addtail ) ;
int mwifiex_exec_next_cmd ( struct mwifiex_adapter * adapter ) ;
int mwifiex_process_cmdresp ( struct mwifiex_adapter * adapter ) ;
int mwifiex_handle_rx_packet ( struct mwifiex_adapter * adapter ,
struct sk_buff * skb ) ;
int mwifiex_process_tx ( struct mwifiex_private * priv , struct sk_buff * skb ,
struct mwifiex_tx_param * tx_param ) ;
int mwifiex_send_null_packet ( struct mwifiex_private * priv , u8 flags ) ;
int mwifiex_write_data_complete ( struct mwifiex_adapter * adapter ,
2012-11-01 18:44:16 -07:00
struct sk_buff * skb , int aggr , int status ) ;
2011-03-21 18:00:50 -07:00
void mwifiex_clean_txrx ( struct mwifiex_private * priv ) ;
u8 mwifiex_check_last_packet_indication ( struct mwifiex_private * priv ) ;
void mwifiex_check_ps_cond ( struct mwifiex_adapter * adapter ) ;
void mwifiex_process_sleep_confirm_resp ( struct mwifiex_adapter * , u8 * ,
u32 ) ;
int mwifiex_cmd_enh_power_mode ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * cmd ,
u16 cmd_action , uint16_t ps_bitmap ,
2011-06-20 15:21:48 -07:00
struct mwifiex_ds_auto_ds * auto_ds ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_ret_enh_power_mode ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * resp ,
2011-06-20 15:21:48 -07:00
struct mwifiex_ds_pm_cfg * pm_cfg ) ;
2011-03-21 18:00:50 -07:00
void mwifiex_process_hs_config ( struct mwifiex_adapter * adapter ) ;
void mwifiex_hs_activated_event ( struct mwifiex_private * priv ,
u8 activated ) ;
2014-06-19 21:38:56 -07:00
int mwifiex_set_hs_params ( struct mwifiex_private * priv , u16 action ,
int cmd_type , struct mwifiex_ds_hs_cfg * hs_cfg ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_ret_802_11_hs_cfg ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * resp ) ;
2012-10-19 19:19:21 -07:00
int mwifiex_process_rx_packet ( struct mwifiex_private * priv ,
2011-03-21 18:00:50 -07:00
struct sk_buff * skb ) ;
int mwifiex_sta_prepare_cmd ( struct mwifiex_private * , uint16_t cmd_no ,
u16 cmd_action , u32 cmd_oid ,
void * data_buf , void * cmd_buf ) ;
2012-05-08 18:30:19 -07:00
int mwifiex_uap_prepare_cmd ( struct mwifiex_private * priv , uint16_t cmd_no ,
u16 cmd_action , u32 cmd_oid ,
void * data_buf , void * cmd_buf ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_process_sta_cmdresp ( struct mwifiex_private * , u16 cmdresp_no ,
2011-06-20 15:21:48 -07:00
struct host_cmd_ds_command * resp ) ;
2012-10-19 19:19:21 -07:00
int mwifiex_process_sta_rx_packet ( struct mwifiex_private * ,
2011-03-21 18:00:50 -07:00
struct sk_buff * skb ) ;
2012-10-19 19:19:21 -07:00
int mwifiex_process_uap_rx_packet ( struct mwifiex_private * priv ,
2012-08-03 18:06:08 -07:00
struct sk_buff * skb ) ;
int mwifiex_handle_uap_rx_forward ( struct mwifiex_private * priv ,
struct sk_buff * skb ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_process_sta_event ( struct mwifiex_private * ) ;
2012-08-03 18:06:06 -07:00
int mwifiex_process_uap_event ( struct mwifiex_private * ) ;
2012-08-03 18:06:07 -07:00
void mwifiex_delete_all_station_list ( struct mwifiex_private * priv ) ;
2014-12-05 23:23:40 +05:30
void mwifiex_wmm_del_peer_ra_list ( struct mwifiex_private * priv ,
const u8 * ra_addr ) ;
2011-03-21 18:00:50 -07:00
void * mwifiex_process_sta_txpd ( struct mwifiex_private * , struct sk_buff * skb ) ;
2012-09-10 18:30:49 -07:00
void * mwifiex_process_uap_txpd ( struct mwifiex_private * , struct sk_buff * skb ) ;
2015-01-28 15:42:02 +05:30
int mwifiex_sta_init_cmd ( struct mwifiex_private * , u8 first_sta , bool init ) ;
2011-04-13 17:27:08 -07:00
int mwifiex_cmd_802_11_scan ( struct host_cmd_ds_command * cmd ,
2011-06-20 15:21:48 -07:00
struct mwifiex_scan_cmd_config * scan_cfg ) ;
2011-03-21 18:00:50 -07:00
void mwifiex_queue_scan_cmd ( struct mwifiex_private * priv ,
struct cmd_ctrl_node * cmd_node ) ;
int mwifiex_ret_802_11_scan ( struct mwifiex_private * priv ,
2011-04-13 17:27:06 -07:00
struct host_cmd_ds_command * resp ) ;
2012-02-27 22:04:14 -08:00
s32 mwifiex_ssid_cmp ( struct cfg80211_ssid * ssid1 , struct cfg80211_ssid * ssid2 ) ;
2011-04-13 17:27:06 -07:00
int mwifiex_associate ( struct mwifiex_private * priv ,
2011-03-21 18:00:50 -07:00
struct mwifiex_bssdescriptor * bss_desc ) ;
int mwifiex_cmd_802_11_associate ( struct mwifiex_private * priv ,
2011-06-20 15:21:48 -07:00
struct host_cmd_ds_command * cmd ,
struct mwifiex_bssdescriptor * bss_desc ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_ret_802_11_associate ( struct mwifiex_private * priv ,
2011-04-13 17:27:06 -07:00
struct host_cmd_ds_command * resp ) ;
2012-10-05 20:21:43 -07:00
void mwifiex_reset_connect_state ( struct mwifiex_private * priv , u16 reason ) ;
2011-03-21 18:00:50 -07:00
u8 mwifiex_band_to_radio_type ( u8 band ) ;
2011-04-13 17:27:06 -07:00
int mwifiex_deauthenticate ( struct mwifiex_private * priv , u8 * mac ) ;
2014-02-27 19:35:17 -08:00
void mwifiex_deauthenticate_all ( struct mwifiex_adapter * adapter ) ;
2011-04-13 17:27:06 -07:00
int mwifiex_adhoc_start ( struct mwifiex_private * priv ,
2012-02-27 22:04:14 -08:00
struct cfg80211_ssid * adhoc_ssid ) ;
2011-04-13 17:27:06 -07:00
int mwifiex_adhoc_join ( struct mwifiex_private * priv ,
2011-03-21 18:00:50 -07:00
struct mwifiex_bssdescriptor * bss_desc ) ;
int mwifiex_cmd_802_11_ad_hoc_start ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * cmd ,
2012-02-27 22:04:14 -08:00
struct cfg80211_ssid * req_ssid ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_cmd_802_11_ad_hoc_join ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * cmd ,
2011-06-20 15:21:48 -07:00
struct mwifiex_bssdescriptor * bss_desc ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_ret_802_11_ad_hoc ( struct mwifiex_private * priv ,
2011-04-13 17:27:06 -07:00
struct host_cmd_ds_command * resp ) ;
2011-04-13 17:27:08 -07:00
int mwifiex_cmd_802_11_bg_scan_query ( struct host_cmd_ds_command * cmd ) ;
2012-03-12 19:35:10 -07:00
struct mwifiex_chan_freq_power * mwifiex_get_cfp ( struct mwifiex_private * priv ,
u8 band , u16 channel , u32 freq ) ;
2013-02-15 21:44:30 -08:00
u32 mwifiex_index_to_data_rate ( struct mwifiex_private * priv ,
u8 index , u8 ht_info ) ;
u32 mwifiex_index_to_acs_data_rate ( struct mwifiex_private * priv ,
u8 index , u8 ht_info ) ;
2011-03-21 18:00:50 -07:00
u32 mwifiex_find_freq_from_band_chan ( u8 , u8 ) ;
int mwifiex_cmd_append_vsie_tlv ( struct mwifiex_private * priv , u16 vsie_mask ,
u8 * * buffer ) ;
u32 mwifiex_get_active_data_rates ( struct mwifiex_private * priv ,
u8 * rates ) ;
u32 mwifiex_get_supported_rates ( struct mwifiex_private * priv , u8 * rates ) ;
2013-07-30 17:18:56 -07:00
u32 mwifiex_get_rates_from_cfg80211 ( struct mwifiex_private * priv ,
u8 * rates , u8 radio_type ) ;
2011-03-21 18:00:50 -07:00
u8 mwifiex_is_rate_auto ( struct mwifiex_private * priv ) ;
extern u16 region_code_index [ MWIFIEX_MAX_REGION_CODE ] ;
void mwifiex_save_curr_bcn ( struct mwifiex_private * priv ) ;
void mwifiex_free_curr_bcn ( struct mwifiex_private * priv ) ;
int mwifiex_cmd_get_hw_spec ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * cmd ) ;
int mwifiex_ret_get_hw_spec ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * resp ) ;
int is_command_pending ( struct mwifiex_adapter * adapter ) ;
2011-09-26 20:37:26 -07:00
void mwifiex_init_priv_params ( struct mwifiex_private * priv ,
struct net_device * dev ) ;
2012-05-08 18:30:26 -07:00
int mwifiex_set_secure_params ( struct mwifiex_private * priv ,
struct mwifiex_uap_bss_param * bss_config ,
struct cfg80211_ap_settings * params ) ;
2012-06-15 12:21:53 -07:00
void mwifiex_set_ht_params ( struct mwifiex_private * priv ,
struct mwifiex_uap_bss_param * bss_cfg ,
struct cfg80211_ap_settings * params ) ;
2013-03-18 20:06:03 -07:00
void mwifiex_set_vht_params ( struct mwifiex_private * priv ,
struct mwifiex_uap_bss_param * bss_cfg ,
struct cfg80211_ap_settings * params ) ;
2012-08-27 20:32:53 -07:00
void mwifiex_set_uap_rates ( struct mwifiex_uap_bss_param * bss_cfg ,
struct cfg80211_ap_settings * params ) ;
2013-03-18 20:06:03 -07:00
void mwifiex_set_vht_width ( struct mwifiex_private * priv ,
enum nl80211_chan_width width ,
bool ap_11ac_disable ) ;
2013-01-02 16:56:01 -08:00
void
mwifiex_set_wmm_params ( struct mwifiex_private * priv ,
struct mwifiex_uap_bss_param * bss_cfg ,
struct cfg80211_ap_settings * params ) ;
2013-03-27 19:10:31 -07:00
void mwifiex_set_ba_params ( struct mwifiex_private * priv ) ;
2013-03-27 19:10:32 -07:00
void mwifiex_set_11ac_ba_params ( struct mwifiex_private * priv ) ;
2014-02-11 18:39:56 -08:00
int mwifiex_cmd_802_11_scan_ext ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * cmd ,
void * data_buf ) ;
2014-10-31 16:08:26 +05:30
int mwifiex_ret_802_11_scan_ext ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * resp ) ;
2014-02-11 18:39:56 -08:00
int mwifiex_handle_event_ext_scan_report ( struct mwifiex_private * priv ,
void * buf ) ;
2011-03-21 18:00:50 -07:00
/*
* This function checks if the queuing is RA based or not .
*/
static inline u8
mwifiex_queuing_ra_based ( struct mwifiex_private * priv )
{
/*
* Currently we assume if we are in Infra , then DA = RA . This might not be
* true in the future
*/
2011-03-28 17:55:41 -07:00
if ( ( priv - > bss_mode = = NL80211_IFTYPE_STATION ) & &
2011-03-21 18:00:50 -07:00
( GET_BSS_ROLE ( priv ) = = MWIFIEX_BSS_ROLE_STA ) )
return false ;
return true ;
}
/*
* This function copies rates .
*/
static inline u32
mwifiex_copy_rates ( u8 * dest , u32 pos , u8 * src , int len )
{
int i ;
for ( i = 0 ; i < len & & src [ i ] ; i + + , pos + + ) {
if ( pos > = MWIFIEX_SUPPORTED_RATES )
break ;
dest [ pos ] = src [ i ] ;
}
return pos ;
}
/*
* This function returns the correct private structure pointer based
* upon the BSS type and BSS number .
*/
static inline struct mwifiex_private *
mwifiex_get_priv_by_id ( struct mwifiex_adapter * adapter ,
2011-04-15 20:50:42 -07:00
u8 bss_num , u8 bss_type )
2011-03-21 18:00:50 -07:00
{
int i ;
for ( i = 0 ; i < adapter - > priv_num ; i + + ) {
if ( adapter - > priv [ i ] ) {
2012-03-13 19:22:37 -07:00
if ( ( adapter - > priv [ i ] - > bss_num = = bss_num ) & &
( adapter - > priv [ i ] - > bss_type = = bss_type ) )
2011-03-21 18:00:50 -07:00
break ;
}
}
return ( ( i < adapter - > priv_num ) ? adapter - > priv [ i ] : NULL ) ;
}
/*
* This function returns the first available private structure pointer
* based upon the BSS role .
*/
static inline struct mwifiex_private *
mwifiex_get_priv ( struct mwifiex_adapter * adapter ,
enum mwifiex_bss_role bss_role )
{
int i ;
for ( i = 0 ; i < adapter - > priv_num ; i + + ) {
if ( adapter - > priv [ i ] ) {
if ( bss_role = = MWIFIEX_BSS_ROLE_ANY | |
GET_BSS_ROLE ( adapter - > priv [ i ] ) = = bss_role )
break ;
}
}
return ( ( i < adapter - > priv_num ) ? adapter - > priv [ i ] : NULL ) ;
}
2015-01-28 15:42:03 +05:30
/*
* This function returns the first available unused private structure pointer .
*/
static inline struct mwifiex_private *
mwifiex_get_unused_priv ( struct mwifiex_adapter * adapter )
{
int i ;
for ( i = 0 ; i < adapter - > priv_num ; i + + ) {
if ( adapter - > priv [ i ] ) {
if ( adapter - > priv [ i ] - > bss_mode = =
NL80211_IFTYPE_UNSPECIFIED )
break ;
}
}
return ( ( i < adapter - > priv_num ) ? adapter - > priv [ i ] : NULL ) ;
}
2011-03-21 18:00:50 -07:00
/*
* This function returns the driver private structure of a network device .
*/
static inline struct mwifiex_private *
mwifiex_netdev_get_priv ( struct net_device * dev )
{
return ( struct mwifiex_private * ) ( * ( unsigned long * ) netdev_priv ( dev ) ) ;
}
2012-09-25 20:23:32 -07:00
/*
* This function checks if a skb holds a management frame .
*/
static inline bool mwifiex_is_skb_mgmt_frame ( struct sk_buff * skb )
{
2013-08-26 09:18:06 +02:00
return ( le32_to_cpu ( * ( __le32 * ) skb - > data ) = = PKT_TYPE_MGMT ) ;
2012-09-25 20:23:32 -07:00
}
2013-06-18 16:36:58 -07:00
/* This function retrieves channel closed for operation by Channel
* Switch Announcement .
*/
static inline u8
mwifiex_11h_get_csa_closed_channel ( struct mwifiex_private * priv )
{
if ( ! priv - > csa_chan )
return 0 ;
/* Clear csa channel, if DFS channel move time has passed */
2014-05-25 19:59:36 +02:00
if ( time_after ( jiffies , priv - > csa_expire_time ) ) {
2013-06-18 16:36:58 -07:00
priv - > csa_chan = 0 ;
priv - > csa_expire_time = 0 ;
}
return priv - > csa_chan ;
}
2014-09-12 20:08:54 +05:30
static inline u8 mwifiex_is_any_intf_active ( struct mwifiex_private * priv )
{
struct mwifiex_private * priv_num ;
int i ;
for ( i = 0 ; i < priv - > adapter - > priv_num ; i + + ) {
priv_num = priv - > adapter - > priv [ i ] ;
if ( priv_num ) {
if ( ( GET_BSS_ROLE ( priv_num ) = = MWIFIEX_BSS_ROLE_UAP & &
priv_num - > bss_started ) | |
( GET_BSS_ROLE ( priv_num ) = = MWIFIEX_BSS_ROLE_STA & &
priv_num - > media_connected ) )
return 1 ;
}
}
return 0 ;
}
2011-04-13 17:27:06 -07:00
int mwifiex_init_shutdown_fw ( struct mwifiex_private * priv ,
u32 func_init_shutdown ) ;
2011-10-11 17:41:21 -07:00
int mwifiex_add_card ( void * , struct semaphore * , struct mwifiex_if_ops * , u8 ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_remove_card ( struct mwifiex_adapter * , struct semaphore * ) ;
void mwifiex_get_version ( struct mwifiex_adapter * adapter , char * version ,
int maxlen ) ;
2011-04-13 17:27:06 -07:00
int mwifiex_request_set_multicast_list ( struct mwifiex_private * priv ,
struct mwifiex_multicast_list * mcast_list ) ;
int mwifiex_copy_mcast_addr ( struct mwifiex_multicast_list * mlist ,
struct net_device * dev ) ;
2013-03-15 18:47:05 -07:00
int mwifiex_wait_queue_complete ( struct mwifiex_adapter * adapter ,
struct cmd_ctrl_node * cmd_queued ) ;
2011-08-10 18:53:57 -07:00
int mwifiex_bss_start ( struct mwifiex_private * priv , struct cfg80211_bss * bss ,
2012-02-27 22:04:14 -08:00
struct cfg80211_ssid * req_ssid ) ;
2011-04-13 17:27:06 -07:00
int mwifiex_cancel_hs ( struct mwifiex_private * priv , int cmd_type ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_enable_hs ( struct mwifiex_adapter * adapter ) ;
2011-07-13 20:51:59 -07:00
int mwifiex_disable_auto_ds ( struct mwifiex_private * priv ) ;
2012-07-13 20:09:31 -07:00
int mwifiex_drv_get_data_rate ( struct mwifiex_private * priv , u32 * rate ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_request_scan ( struct mwifiex_private * priv ,
2012-02-27 22:04:14 -08:00
struct cfg80211_ssid * req_ssid ) ;
2012-06-27 19:57:56 -07:00
int mwifiex_scan_networks ( struct mwifiex_private * priv ,
const struct mwifiex_user_scan_cfg * user_scan_in ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_set_radio ( struct mwifiex_private * priv , u8 option ) ;
2012-08-03 18:06:13 -07:00
int mwifiex_set_encode ( struct mwifiex_private * priv , struct key_params * kp ,
const u8 * key , int key_len , u8 key_index ,
const u8 * mac_addr , int disable ) ;
2011-03-21 18:00:50 -07:00
2014-01-15 14:55:59 +01:00
int mwifiex_set_gen_ie ( struct mwifiex_private * priv , const u8 * ie , int ie_len ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_get_ver_ext ( struct mwifiex_private * priv ) ;
2012-09-25 20:23:36 -07:00
int mwifiex_remain_on_chan_cfg ( struct mwifiex_private * priv , u16 action ,
struct ieee80211_channel * chan ,
unsigned int duration ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_get_stats_info ( struct mwifiex_private * priv ,
struct mwifiex_ds_get_stats * log ) ;
int mwifiex_reg_write ( struct mwifiex_private * priv , u32 reg_type ,
u32 reg_offset , u32 reg_value ) ;
int mwifiex_reg_read ( struct mwifiex_private * priv , u32 reg_type ,
u32 reg_offset , u32 * value ) ;
int mwifiex_eeprom_read ( struct mwifiex_private * priv , u16 offset , u16 bytes ,
u8 * value ) ;
int mwifiex_set_11n_httx_cfg ( struct mwifiex_private * priv , int data ) ;
int mwifiex_get_11n_httx_cfg ( struct mwifiex_private * priv , int * data ) ;
int mwifiex_set_tx_rate_cfg ( struct mwifiex_private * priv , int tx_rate_index ) ;
int mwifiex_get_tx_rate_cfg ( struct mwifiex_private * priv , int * tx_rate_index ) ;
2011-04-13 17:27:06 -07:00
int mwifiex_drv_set_power ( struct mwifiex_private * priv , u32 * ps_mode ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_drv_get_driver_version ( struct mwifiex_adapter * adapter ,
char * version , int max_len ) ;
2011-04-13 17:27:06 -07:00
int mwifiex_set_tx_power ( struct mwifiex_private * priv ,
struct mwifiex_power_cfg * power_cfg ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_main_process ( struct mwifiex_adapter * ) ;
2012-09-25 20:23:32 -07:00
int mwifiex_queue_tx_pkt ( struct mwifiex_private * priv , struct sk_buff * skb ) ;
2011-03-21 18:00:50 -07:00
int mwifiex_get_bss_info ( struct mwifiex_private * ,
struct mwifiex_bss_info * ) ;
2011-08-10 18:53:57 -07:00
int mwifiex_fill_new_bss_desc ( struct mwifiex_private * priv ,
2012-04-16 21:36:51 -07:00
struct cfg80211_bss * bss ,
2011-08-10 18:53:57 -07:00
struct mwifiex_bssdescriptor * bss_desc ) ;
int mwifiex_update_bss_desc_with_ie ( struct mwifiex_adapter * adapter ,
2012-04-16 21:36:51 -07:00
struct mwifiex_bssdescriptor * bss_entry ) ;
2011-08-10 18:53:57 -07:00
int mwifiex_check_network_compatibility ( struct mwifiex_private * priv ,
struct mwifiex_bssdescriptor * bss_desc ) ;
2011-03-21 18:00:50 -07:00
2012-09-25 20:23:36 -07:00
u8 mwifiex_chan_type_to_sec_chan_offset ( enum nl80211_channel_type chan_type ) ;
2012-06-16 00:00:26 +02:00
struct wireless_dev * mwifiex_add_virtual_intf ( struct wiphy * wiphy ,
2012-09-19 09:26:06 +02:00
const char * name ,
2015-03-18 11:13:39 +01:00
unsigned char name_assign_type ,
2012-06-16 00:00:26 +02:00
enum nl80211_iftype type ,
u32 * flags ,
struct vif_params * params ) ;
int mwifiex_del_virtual_intf ( struct wiphy * wiphy , struct wireless_dev * wdev ) ;
2011-09-26 20:37:26 -07:00
2012-05-08 18:30:23 -07:00
void mwifiex_set_sys_config_invalid_data ( struct mwifiex_uap_bss_param * config ) ;
2013-03-04 16:27:59 -08:00
int mwifiex_add_wowlan_magic_pkt_filter ( struct mwifiex_adapter * adapter ) ;
2012-05-08 18:30:29 -07:00
int mwifiex_set_mgmt_ies ( struct mwifiex_private * priv ,
2012-06-28 20:30:25 -07:00
struct cfg80211_beacon_data * data ) ;
2012-05-08 18:30:30 -07:00
int mwifiex_del_mgmt_ies ( struct mwifiex_private * priv ) ;
2012-04-09 20:06:54 -07:00
u8 * mwifiex_11d_code_2_region ( u8 code ) ;
2015-01-28 15:54:19 +05:30
void mwifiex_uap_set_channel ( struct mwifiex_uap_bss_param * bss_cfg ,
struct cfg80211_chan_def chandef ) ;
int mwifiex_config_start_uap ( struct mwifiex_private * priv ,
struct mwifiex_uap_bss_param * bss_cfg ) ;
2013-05-17 17:50:23 -07:00
void mwifiex_uap_del_sta_data ( struct mwifiex_private * priv ,
struct mwifiex_sta_node * node ) ;
2011-09-26 20:37:26 -07:00
2015-01-28 15:54:25 +05:30
void mwifiex_init_11h_params ( struct mwifiex_private * priv ) ;
int mwifiex_is_11h_active ( struct mwifiex_private * priv ) ;
int mwifiex_11h_activate ( struct mwifiex_private * priv , bool flag ) ;
2013-06-19 08:49:05 -07:00
void mwifiex_11h_process_join ( struct mwifiex_private * priv , u8 * * buffer ,
struct mwifiex_bssdescriptor * bss_desc ) ;
int mwifiex_11h_handle_event_chanswann ( struct mwifiex_private * priv ) ;
2013-12-13 18:33:02 -08:00
int mwifiex_dnld_dt_cfgdata ( struct mwifiex_private * priv ,
struct device_node * node , const char * prefix ) ;
2014-01-08 15:45:57 -08:00
void mwifiex_dnld_txpwr_table ( struct mwifiex_private * priv ) ;
2013-06-19 08:49:05 -07:00
2013-03-04 16:27:58 -08:00
extern const struct ethtool_ops mwifiex_ethtool_ops ;
2014-02-07 16:27:30 -08:00
void mwifiex_del_all_sta_list ( struct mwifiex_private * priv ) ;
2014-05-19 17:19:31 +02:00
void mwifiex_del_sta_entry ( struct mwifiex_private * priv , const u8 * mac ) ;
2014-02-07 16:27:30 -08:00
void
mwifiex_set_sta_ht_cap ( struct mwifiex_private * priv , const u8 * ies ,
int ies_len , struct mwifiex_sta_node * node ) ;
struct mwifiex_sta_node *
2014-05-19 17:19:31 +02:00
mwifiex_add_sta_entry ( struct mwifiex_private * priv , const u8 * mac ) ;
2014-02-07 16:27:30 -08:00
struct mwifiex_sta_node *
2014-05-19 17:19:31 +02:00
mwifiex_get_sta_entry ( struct mwifiex_private * priv , const u8 * mac ) ;
int mwifiex_send_tdls_data_frame ( struct mwifiex_private * priv , const u8 * peer ,
2014-02-07 16:27:32 -08:00
u8 action_code , u8 dialog_token ,
u16 status_code , const u8 * extra_ies ,
size_t extra_ies_len ) ;
2014-05-19 17:19:31 +02:00
int mwifiex_send_tdls_action_frame ( struct mwifiex_private * priv , const u8 * peer ,
u8 action_code , u8 dialog_token ,
u16 status_code , const u8 * extra_ies ,
size_t extra_ies_len ) ;
2014-02-07 16:27:33 -08:00
void mwifiex_process_tdls_action_frame ( struct mwifiex_private * priv ,
u8 * buf , int len ) ;
2014-05-19 17:19:31 +02:00
int mwifiex_tdls_oper ( struct mwifiex_private * priv , const u8 * peer , u8 action ) ;
int mwifiex_get_tdls_link_status ( struct mwifiex_private * priv , const u8 * mac ) ;
2014-12-23 19:14:05 +05:30
int mwifiex_get_tdls_list ( struct mwifiex_private * priv ,
struct tdls_peer_info * buf ) ;
2014-02-07 16:30:41 -08:00
void mwifiex_disable_all_tdls_links ( struct mwifiex_private * priv ) ;
2014-02-07 16:30:39 -08:00
bool mwifiex_is_bss_in_11ac_mode ( struct mwifiex_private * priv ) ;
u8 mwifiex_get_center_freq_index ( struct mwifiex_private * priv , u8 band ,
u32 pri_chan , u8 chan_bw ) ;
2014-09-12 20:08:54 +05:30
int mwifiex_init_channel_scan_gap ( struct mwifiex_adapter * adapter ) ;
2014-02-07 16:27:30 -08:00
2014-11-13 21:54:16 +05:30
int mwifiex_tdls_check_tx ( struct mwifiex_private * priv , struct sk_buff * skb ) ;
void mwifiex_flush_auto_tdls_list ( struct mwifiex_private * priv ) ;
void mwifiex_auto_tdls_update_peer_status ( struct mwifiex_private * priv ,
const u8 * mac , u8 link_status ) ;
void mwifiex_auto_tdls_update_peer_signal ( struct mwifiex_private * priv ,
u8 * mac , s8 snr , s8 nflr ) ;
void mwifiex_check_auto_tdls ( unsigned long context ) ;
void mwifiex_add_auto_tdls_peer ( struct mwifiex_private * priv , const u8 * mac ) ;
void mwifiex_setup_auto_tdls_timer ( struct mwifiex_private * priv ) ;
void mwifiex_clean_auto_tdls ( struct mwifiex_private * priv ) ;
2015-01-28 15:54:21 +05:30
int mwifiex_cmd_issue_chan_report_request ( struct mwifiex_private * priv ,
struct host_cmd_ds_command * cmd ,
void * data_buf ) ;
2015-01-28 15:54:22 +05:30
int mwifiex_11h_handle_chanrpt_ready ( struct mwifiex_private * priv ,
struct sk_buff * skb ) ;
2014-11-13 21:54:16 +05:30
2014-11-25 06:43:05 -08:00
void mwifiex_parse_tx_status_event ( struct mwifiex_private * priv ,
void * event_body ) ;
2014-11-25 06:43:06 -08:00
struct sk_buff *
mwifiex_clone_skb_for_tx_status ( struct mwifiex_private * priv ,
struct sk_buff * skb , u8 flag , u64 * cookie ) ;
2015-01-28 15:54:21 +05:30
void mwifiex_dfs_cac_work_queue ( struct work_struct * work ) ;
2015-01-28 15:54:24 +05:30
void mwifiex_dfs_chan_sw_work_queue ( struct work_struct * work ) ;
2015-01-28 15:54:21 +05:30
void mwifiex_abort_cac ( struct mwifiex_private * priv ) ;
2015-01-28 15:54:23 +05:30
int mwifiex_11h_handle_radar_detected ( struct mwifiex_private * priv ,
struct sk_buff * skb ) ;
2014-11-25 06:43:06 -08:00
2014-12-23 19:14:07 +05:30
void mwifiex_hist_data_set ( struct mwifiex_private * priv , u8 rx_rate , s8 snr ,
s8 nflr ) ;
void mwifiex_hist_data_reset ( struct mwifiex_private * priv ) ;
void mwifiex_hist_data_add ( struct mwifiex_private * priv ,
u8 rx_rate , s8 snr , s8 nflr ) ;
u8 mwifiex_adjust_data_rate ( struct mwifiex_private * priv ,
u8 rx_rate , u8 ht_info ) ;
2014-12-23 19:14:10 +05:30
void mwifiex_dump_drv_info ( struct mwifiex_adapter * adapter ) ;
2015-03-13 17:37:52 +05:30
void * mwifiex_alloc_dma_align_buf ( int rx_len , gfp_t flags ) ;
2015-03-13 17:37:54 +05:30
void mwifiex_queue_main_work ( struct mwifiex_adapter * adapter ) ;
2014-12-23 19:14:10 +05:30
2011-03-21 18:00:50 -07:00
# ifdef CONFIG_DEBUG_FS
void mwifiex_debugfs_init ( void ) ;
void mwifiex_debugfs_remove ( void ) ;
void mwifiex_dev_debugfs_init ( struct mwifiex_private * priv ) ;
void mwifiex_dev_debugfs_remove ( struct mwifiex_private * priv ) ;
# endif
# endif /* !_MWIFIEX_MAIN_H_ */