#include <net/lib80211.h>
#include <linux/firmware.h>
#include <linux/ctype.h>
+#include <linux/regulator/machine.h>
#include "decl.h"
#include "ioctl.h"
#define MWIFIEX_EVENT_HEADER_LEN 4
-#define MWIFIEX_QUEUE_TIMEOUT_MSEC 5000
+/* Threshold for tx_timeout_cnt before we trigger a card reset */
+#define TX_TIMEOUT_THRESHOLD 6
struct mwifiex_dbg {
u32 num_cmd_host_to_card_failure;
u8 curr_addr[ETH_ALEN];
u8 media_connected;
u32 num_tx_timeout;
+ /* track consecutive timeout */
+ u8 tx_timeout_cnt;
struct net_device *netdev;
struct net_device_stats stats;
u16 curr_pkt_filter;
struct semaphore async_sem;
u8 report_scan_result;
struct cfg80211_scan_request *scan_request;
- struct mwifiex_user_scan_cfg *user_scan_cfg;
u8 cfg_bssid[6];
u8 country_code[IEEE80211_COUNTRY_STRING_LEN];
struct wps wps;
struct mwifiex_ds_misc_subsc_evt async_subsc_evt_storage;
u32 mgmt_frame_mask;
u32 mgmt_rx_freq;
+ bool scan_aborting;
};
enum mwifiex_ba_status {
void (*cleanup_mpa_buf) (struct mwifiex_adapter *);
int (*cmdrsp_complete) (struct mwifiex_adapter *, struct sk_buff *);
int (*event_complete) (struct mwifiex_adapter *, struct sk_buff *);
+ void (*reg_dbg) (struct mwifiex_adapter *);
+ void (*card_reset) (struct mwifiex_adapter *);
};
struct mwifiex_adapter {
struct mwifiex_bss_info *);
int mwifiex_fill_new_bss_desc(struct mwifiex_private *priv,
struct cfg80211_bss *bss,
- struct mwifiex_bssdescriptor *bss_desc);
+ struct mwifiex_bssdescriptor *bss_desc,
+ u8 *beacon_ie, size_t beacon_ie_len);
int mwifiex_update_bss_desc_with_ie(struct mwifiex_adapter *adapter,
struct mwifiex_bssdescriptor *bss_entry);
int mwifiex_check_network_compatibility(struct mwifiex_private *priv,