diff options
Diffstat (limited to 'drivers/net/wireless/mwifiex/main.h')
-rw-r--r-- | drivers/net/wireless/mwifiex/main.h | 111 |
1 files changed, 98 insertions, 13 deletions
diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h index d8ad554ce39f..a67f7da12b30 100644 --- a/drivers/net/wireless/mwifiex/main.h +++ b/drivers/net/wireless/mwifiex/main.h | |||
@@ -59,7 +59,7 @@ enum { | |||
59 | 59 | ||
60 | #define MWIFIEX_UPLD_SIZE (2312) | 60 | #define MWIFIEX_UPLD_SIZE (2312) |
61 | 61 | ||
62 | #define MAX_EVENT_SIZE 1024 | 62 | #define MAX_EVENT_SIZE 2048 |
63 | 63 | ||
64 | #define ARP_FILTER_MAX_BUF_SIZE 68 | 64 | #define ARP_FILTER_MAX_BUF_SIZE 68 |
65 | 65 | ||
@@ -116,7 +116,7 @@ enum { | |||
116 | #define MWIFIEX_TYPE_DATA 0 | 116 | #define MWIFIEX_TYPE_DATA 0 |
117 | #define MWIFIEX_TYPE_EVENT 3 | 117 | #define MWIFIEX_TYPE_EVENT 3 |
118 | 118 | ||
119 | #define MAX_BITMAP_RATES_SIZE 10 | 119 | #define MAX_BITMAP_RATES_SIZE 18 |
120 | 120 | ||
121 | #define MAX_CHANNEL_BAND_BG 14 | 121 | #define MAX_CHANNEL_BAND_BG 14 |
122 | #define MAX_CHANNEL_BAND_A 165 | 122 | #define MAX_CHANNEL_BAND_A 165 |
@@ -145,7 +145,6 @@ struct mwifiex_dbg { | |||
145 | u32 num_cmd_assoc_success; | 145 | u32 num_cmd_assoc_success; |
146 | u32 num_cmd_assoc_failure; | 146 | u32 num_cmd_assoc_failure; |
147 | u32 num_tx_timeout; | 147 | u32 num_tx_timeout; |
148 | u32 num_cmd_timeout; | ||
149 | u16 timeout_cmd_id; | 148 | u16 timeout_cmd_id; |
150 | u16 timeout_cmd_act; | 149 | u16 timeout_cmd_act; |
151 | u16 last_cmd_id[DBG_CMD_NUM]; | 150 | u16 last_cmd_id[DBG_CMD_NUM]; |
@@ -193,6 +192,8 @@ struct mwifiex_add_ba_param { | |||
193 | u32 tx_win_size; | 192 | u32 tx_win_size; |
194 | u32 rx_win_size; | 193 | u32 rx_win_size; |
195 | u32 timeout; | 194 | u32 timeout; |
195 | u8 tx_amsdu; | ||
196 | u8 rx_amsdu; | ||
196 | }; | 197 | }; |
197 | 198 | ||
198 | struct mwifiex_tx_aggr { | 199 | struct mwifiex_tx_aggr { |
@@ -210,6 +211,7 @@ struct mwifiex_ra_list_tbl { | |||
210 | u16 ba_pkt_count; | 211 | u16 ba_pkt_count; |
211 | u8 ba_packet_thr; | 212 | u8 ba_packet_thr; |
212 | u16 total_pkt_count; | 213 | u16 total_pkt_count; |
214 | bool tdls_link; | ||
213 | }; | 215 | }; |
214 | 216 | ||
215 | struct mwifiex_tid_tbl { | 217 | struct mwifiex_tid_tbl { |
@@ -262,6 +264,31 @@ struct ieee_types_generic { | |||
262 | u8 data[IEEE_MAX_IE_SIZE - sizeof(struct ieee_types_header)]; | 264 | u8 data[IEEE_MAX_IE_SIZE - sizeof(struct ieee_types_header)]; |
263 | } __packed; | 265 | } __packed; |
264 | 266 | ||
267 | struct ieee_types_bss_co_2040 { | ||
268 | struct ieee_types_header ieee_hdr; | ||
269 | u8 bss_2040co; | ||
270 | } __packed; | ||
271 | |||
272 | struct ieee_types_extcap { | ||
273 | struct ieee_types_header ieee_hdr; | ||
274 | u8 ext_capab[8]; | ||
275 | } __packed; | ||
276 | |||
277 | struct ieee_types_vht_cap { | ||
278 | struct ieee_types_header ieee_hdr; | ||
279 | struct ieee80211_vht_cap vhtcap; | ||
280 | } __packed; | ||
281 | |||
282 | struct ieee_types_vht_oper { | ||
283 | struct ieee_types_header ieee_hdr; | ||
284 | struct ieee80211_vht_operation vhtoper; | ||
285 | } __packed; | ||
286 | |||
287 | struct ieee_types_aid { | ||
288 | struct ieee_types_header ieee_hdr; | ||
289 | u16 aid; | ||
290 | } __packed; | ||
291 | |||
265 | struct mwifiex_bssdescriptor { | 292 | struct mwifiex_bssdescriptor { |
266 | u8 mac_address[ETH_ALEN]; | 293 | u8 mac_address[ETH_ALEN]; |
267 | struct cfg80211_ssid ssid; | 294 | struct cfg80211_ssid ssid; |
@@ -443,6 +470,7 @@ struct mwifiex_private { | |||
443 | u8 wpa_ie_len; | 470 | u8 wpa_ie_len; |
444 | u8 wpa_is_gtk_set; | 471 | u8 wpa_is_gtk_set; |
445 | struct host_cmd_ds_802_11_key_material aes_key; | 472 | struct host_cmd_ds_802_11_key_material aes_key; |
473 | struct host_cmd_ds_802_11_key_material_v2 aes_key_v2; | ||
446 | u8 wapi_ie[256]; | 474 | u8 wapi_ie[256]; |
447 | u8 wapi_ie_len; | 475 | u8 wapi_ie_len; |
448 | u8 *wps_ie; | 476 | u8 *wps_ie; |
@@ -461,6 +489,7 @@ struct mwifiex_private { | |||
461 | struct mwifiex_tx_aggr aggr_prio_tbl[MAX_NUM_TID]; | 489 | struct mwifiex_tx_aggr aggr_prio_tbl[MAX_NUM_TID]; |
462 | struct mwifiex_add_ba_param add_ba_param; | 490 | struct mwifiex_add_ba_param add_ba_param; |
463 | u16 rx_seq[MAX_NUM_TID]; | 491 | u16 rx_seq[MAX_NUM_TID]; |
492 | u8 tos_to_tid_inv[MAX_NUM_TID]; | ||
464 | struct list_head rx_reorder_tbl_ptr; | 493 | struct list_head rx_reorder_tbl_ptr; |
465 | /* spin lock for rx_reorder_tbl_ptr queue */ | 494 | /* spin lock for rx_reorder_tbl_ptr queue */ |
466 | spinlock_t rx_reorder_tbl_lock; | 495 | spinlock_t rx_reorder_tbl_lock; |
@@ -518,6 +547,8 @@ struct mwifiex_private { | |||
518 | unsigned long csa_expire_time; | 547 | unsigned long csa_expire_time; |
519 | u8 del_list_idx; | 548 | u8 del_list_idx; |
520 | bool hs2_enabled; | 549 | bool hs2_enabled; |
550 | struct station_parameters *sta_params; | ||
551 | struct sk_buff_head tdls_txq; | ||
521 | }; | 552 | }; |
522 | 553 | ||
523 | enum mwifiex_ba_status { | 554 | enum mwifiex_ba_status { |
@@ -531,6 +562,7 @@ struct mwifiex_tx_ba_stream_tbl { | |||
531 | int tid; | 562 | int tid; |
532 | u8 ra[ETH_ALEN]; | 563 | u8 ra[ETH_ALEN]; |
533 | enum mwifiex_ba_status ba_status; | 564 | enum mwifiex_ba_status ba_status; |
565 | u8 amsdu; | ||
534 | }; | 566 | }; |
535 | 567 | ||
536 | struct mwifiex_rx_reorder_tbl; | 568 | struct mwifiex_rx_reorder_tbl; |
@@ -545,10 +577,12 @@ struct mwifiex_rx_reorder_tbl { | |||
545 | struct list_head list; | 577 | struct list_head list; |
546 | int tid; | 578 | int tid; |
547 | u8 ta[ETH_ALEN]; | 579 | u8 ta[ETH_ALEN]; |
580 | int init_win; | ||
548 | int start_win; | 581 | int start_win; |
549 | int win_size; | 582 | int win_size; |
550 | void **rx_reorder_ptr; | 583 | void **rx_reorder_ptr; |
551 | struct reorder_tmr_cnxt timer_context; | 584 | struct reorder_tmr_cnxt timer_context; |
585 | u8 amsdu; | ||
552 | u8 flags; | 586 | u8 flags; |
553 | }; | 587 | }; |
554 | 588 | ||
@@ -583,17 +617,35 @@ struct mwifiex_bss_priv { | |||
583 | u64 fw_tsf; | 617 | u64 fw_tsf; |
584 | }; | 618 | }; |
585 | 619 | ||
586 | /* This is AP specific structure which stores information | 620 | struct mwifiex_tdls_capab { |
587 | * about associated STA | 621 | __le16 capab; |
622 | u8 rates[32]; | ||
623 | u8 rates_len; | ||
624 | u8 qos_info; | ||
625 | u8 coex_2040; | ||
626 | u16 aid; | ||
627 | struct ieee80211_ht_cap ht_capb; | ||
628 | struct ieee80211_ht_operation ht_oper; | ||
629 | struct ieee_types_extcap extcap; | ||
630 | struct ieee_types_generic rsn_ie; | ||
631 | struct ieee80211_vht_cap vhtcap; | ||
632 | struct ieee80211_vht_operation vhtoper; | ||
633 | }; | ||
634 | |||
635 | /* This is AP/TDLS specific structure which stores information | ||
636 | * about associated/peer STA | ||
588 | */ | 637 | */ |
589 | struct mwifiex_sta_node { | 638 | struct mwifiex_sta_node { |
590 | struct list_head list; | 639 | struct list_head list; |
591 | u8 mac_addr[ETH_ALEN]; | 640 | u8 mac_addr[ETH_ALEN]; |
592 | u8 is_wmm_enabled; | 641 | u8 is_wmm_enabled; |
593 | u8 is_11n_enabled; | 642 | u8 is_11n_enabled; |
643 | u8 is_11ac_enabled; | ||
594 | u8 ampdu_sta[MAX_NUM_TID]; | 644 | u8 ampdu_sta[MAX_NUM_TID]; |
595 | u16 rx_seq[MAX_NUM_TID]; | 645 | u16 rx_seq[MAX_NUM_TID]; |
596 | u16 max_amsdu; | 646 | u16 max_amsdu; |
647 | u8 tdls_status; | ||
648 | struct mwifiex_tdls_capab tdls_cap; | ||
597 | }; | 649 | }; |
598 | 650 | ||
599 | struct mwifiex_if_ops { | 651 | struct mwifiex_if_ops { |
@@ -671,7 +723,7 @@ struct mwifiex_adapter { | |||
671 | struct cmd_ctrl_node *curr_cmd; | 723 | struct cmd_ctrl_node *curr_cmd; |
672 | /* spin lock for command */ | 724 | /* spin lock for command */ |
673 | spinlock_t mwifiex_cmd_lock; | 725 | spinlock_t mwifiex_cmd_lock; |
674 | u32 num_cmd_timeout; | 726 | u8 is_cmd_timedout; |
675 | u16 last_init_cmd; | 727 | u16 last_init_cmd; |
676 | struct timer_list cmd_timer; | 728 | struct timer_list cmd_timer; |
677 | struct list_head cmd_free_q; | 729 | struct list_head cmd_free_q; |
@@ -725,12 +777,12 @@ struct mwifiex_adapter { | |||
725 | u8 event_body[MAX_EVENT_SIZE]; | 777 | u8 event_body[MAX_EVENT_SIZE]; |
726 | u32 hw_dot_11n_dev_cap; | 778 | u32 hw_dot_11n_dev_cap; |
727 | u8 hw_dev_mcs_support; | 779 | u8 hw_dev_mcs_support; |
780 | u8 user_dev_mcs_support; | ||
728 | u8 adhoc_11n_enabled; | 781 | u8 adhoc_11n_enabled; |
729 | u8 sec_chan_offset; | 782 | u8 sec_chan_offset; |
730 | struct mwifiex_dbg dbg; | 783 | struct mwifiex_dbg dbg; |
731 | u8 arp_filter[ARP_FILTER_MAX_BUF_SIZE]; | 784 | u8 arp_filter[ARP_FILTER_MAX_BUF_SIZE]; |
732 | u32 arp_filter_size; | 785 | u32 arp_filter_size; |
733 | u16 cmd_wait_q_required; | ||
734 | struct mwifiex_wait_queue cmd_wait_q; | 786 | struct mwifiex_wait_queue cmd_wait_q; |
735 | u8 scan_wait_q_woken; | 787 | u8 scan_wait_q_woken; |
736 | spinlock_t queue_lock; /* lock for tx queues */ | 788 | spinlock_t queue_lock; /* lock for tx queues */ |
@@ -753,6 +805,9 @@ struct mwifiex_adapter { | |||
753 | atomic_t is_tx_received; | 805 | atomic_t is_tx_received; |
754 | atomic_t pending_bridged_pkts; | 806 | atomic_t pending_bridged_pkts; |
755 | struct semaphore *card_sem; | 807 | struct semaphore *card_sem; |
808 | bool ext_scan; | ||
809 | u8 fw_api_ver; | ||
810 | u8 fw_key_api_major_ver, fw_key_api_minor_ver; | ||
756 | }; | 811 | }; |
757 | 812 | ||
758 | int mwifiex_init_lock_list(struct mwifiex_adapter *adapter); | 813 | int mwifiex_init_lock_list(struct mwifiex_adapter *adapter); |
@@ -788,11 +843,8 @@ int mwifiex_process_event(struct mwifiex_adapter *adapter); | |||
788 | int mwifiex_complete_cmd(struct mwifiex_adapter *adapter, | 843 | int mwifiex_complete_cmd(struct mwifiex_adapter *adapter, |
789 | struct cmd_ctrl_node *cmd_node); | 844 | struct cmd_ctrl_node *cmd_node); |
790 | 845 | ||
791 | int mwifiex_send_cmd_async(struct mwifiex_private *priv, uint16_t cmd_no, | 846 | int mwifiex_send_cmd(struct mwifiex_private *priv, u16 cmd_no, |
792 | u16 cmd_action, u32 cmd_oid, void *data_buf); | 847 | u16 cmd_action, u32 cmd_oid, void *data_buf, bool sync); |
793 | |||
794 | int mwifiex_send_cmd_sync(struct mwifiex_private *priv, uint16_t cmd_no, | ||
795 | u16 cmd_action, u32 cmd_oid, void *data_buf); | ||
796 | 848 | ||
797 | void mwifiex_cmd_timeout_func(unsigned long function_context); | 849 | void mwifiex_cmd_timeout_func(unsigned long function_context); |
798 | 850 | ||
@@ -880,6 +932,7 @@ int mwifiex_ret_802_11_associate(struct mwifiex_private *priv, | |||
880 | void mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason); | 932 | void mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason); |
881 | u8 mwifiex_band_to_radio_type(u8 band); | 933 | u8 mwifiex_band_to_radio_type(u8 band); |
882 | int mwifiex_deauthenticate(struct mwifiex_private *priv, u8 *mac); | 934 | int mwifiex_deauthenticate(struct mwifiex_private *priv, u8 *mac); |
935 | void mwifiex_deauthenticate_all(struct mwifiex_adapter *adapter); | ||
883 | int mwifiex_adhoc_start(struct mwifiex_private *priv, | 936 | int mwifiex_adhoc_start(struct mwifiex_private *priv, |
884 | struct cfg80211_ssid *adhoc_ssid); | 937 | struct cfg80211_ssid *adhoc_ssid); |
885 | int mwifiex_adhoc_join(struct mwifiex_private *priv, | 938 | int mwifiex_adhoc_join(struct mwifiex_private *priv, |
@@ -938,6 +991,12 @@ mwifiex_set_wmm_params(struct mwifiex_private *priv, | |||
938 | struct cfg80211_ap_settings *params); | 991 | struct cfg80211_ap_settings *params); |
939 | void mwifiex_set_ba_params(struct mwifiex_private *priv); | 992 | void mwifiex_set_ba_params(struct mwifiex_private *priv); |
940 | void mwifiex_set_11ac_ba_params(struct mwifiex_private *priv); | 993 | void mwifiex_set_11ac_ba_params(struct mwifiex_private *priv); |
994 | int mwifiex_cmd_802_11_scan_ext(struct mwifiex_private *priv, | ||
995 | struct host_cmd_ds_command *cmd, | ||
996 | void *data_buf); | ||
997 | int mwifiex_ret_802_11_scan_ext(struct mwifiex_private *priv); | ||
998 | int mwifiex_handle_event_ext_scan_report(struct mwifiex_private *priv, | ||
999 | void *buf); | ||
941 | 1000 | ||
942 | /* | 1001 | /* |
943 | * This function checks if the queuing is RA based or not. | 1002 | * This function checks if the queuing is RA based or not. |
@@ -1078,7 +1137,7 @@ int mwifiex_set_encode(struct mwifiex_private *priv, struct key_params *kp, | |||
1078 | const u8 *key, int key_len, u8 key_index, | 1137 | const u8 *key, int key_len, u8 key_index, |
1079 | const u8 *mac_addr, int disable); | 1138 | const u8 *mac_addr, int disable); |
1080 | 1139 | ||
1081 | int mwifiex_set_gen_ie(struct mwifiex_private *priv, u8 *ie, int ie_len); | 1140 | int mwifiex_set_gen_ie(struct mwifiex_private *priv, const u8 *ie, int ie_len); |
1082 | 1141 | ||
1083 | int mwifiex_get_ver_ext(struct mwifiex_private *priv); | 1142 | int mwifiex_get_ver_ext(struct mwifiex_private *priv); |
1084 | 1143 | ||
@@ -1159,6 +1218,32 @@ void mwifiex_dnld_txpwr_table(struct mwifiex_private *priv); | |||
1159 | 1218 | ||
1160 | extern const struct ethtool_ops mwifiex_ethtool_ops; | 1219 | extern const struct ethtool_ops mwifiex_ethtool_ops; |
1161 | 1220 | ||
1221 | void mwifiex_del_all_sta_list(struct mwifiex_private *priv); | ||
1222 | void mwifiex_del_sta_entry(struct mwifiex_private *priv, u8 *mac); | ||
1223 | void | ||
1224 | mwifiex_set_sta_ht_cap(struct mwifiex_private *priv, const u8 *ies, | ||
1225 | int ies_len, struct mwifiex_sta_node *node); | ||
1226 | struct mwifiex_sta_node * | ||
1227 | mwifiex_add_sta_entry(struct mwifiex_private *priv, u8 *mac); | ||
1228 | struct mwifiex_sta_node * | ||
1229 | mwifiex_get_sta_entry(struct mwifiex_private *priv, u8 *mac); | ||
1230 | int mwifiex_send_tdls_data_frame(struct mwifiex_private *priv, u8 *peer, | ||
1231 | u8 action_code, u8 dialog_token, | ||
1232 | u16 status_code, const u8 *extra_ies, | ||
1233 | size_t extra_ies_len); | ||
1234 | int mwifiex_send_tdls_action_frame(struct mwifiex_private *priv, | ||
1235 | u8 *peer, u8 action_code, u8 dialog_token, | ||
1236 | u16 status_code, const u8 *extra_ies, | ||
1237 | size_t extra_ies_len); | ||
1238 | void mwifiex_process_tdls_action_frame(struct mwifiex_private *priv, | ||
1239 | u8 *buf, int len); | ||
1240 | int mwifiex_tdls_oper(struct mwifiex_private *priv, u8 *peer, u8 action); | ||
1241 | int mwifiex_get_tdls_link_status(struct mwifiex_private *priv, u8 *mac); | ||
1242 | void mwifiex_disable_all_tdls_links(struct mwifiex_private *priv); | ||
1243 | bool mwifiex_is_bss_in_11ac_mode(struct mwifiex_private *priv); | ||
1244 | u8 mwifiex_get_center_freq_index(struct mwifiex_private *priv, u8 band, | ||
1245 | u32 pri_chan, u8 chan_bw); | ||
1246 | |||
1162 | #ifdef CONFIG_DEBUG_FS | 1247 | #ifdef CONFIG_DEBUG_FS |
1163 | void mwifiex_debugfs_init(void); | 1248 | void mwifiex_debugfs_init(void); |
1164 | void mwifiex_debugfs_remove(void); | 1249 | void mwifiex_debugfs_remove(void); |