mirror of
https://github.com/nxp-imx/mwifiex.git
synced 2024-12-04 23:37:35 +00:00
mxm_wifiex: update to mxm6x18505.p4 release
Corresponding firmware version: SDIO-UART W8987 Firmware version 16.92.21.p142.3 PCIE-UART W8997 Firmware version 16.92.21.p137.4 SDIO-UART W8997 Firmware version 16.92.21.p137.4 SDIO-UART IW416 Firmware version 16.92.21.p142.3 SDIO_UART IW610 Firmware version 18.99.5.p39 SDIO_UART IW612 Firmware version 18.99.3.p21.10 SDIO-UART W8801 Firmware version 14.92.36.p195 SDIO-UART W9098 Firmware version 17.92.1.p149.53 PCIE-UART W9098 Firmware version 17.92.1.p149.53 Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
This commit is contained in:
parent
e4ffd91b62
commit
5ad19e194f
10 changed files with 99 additions and 30 deletions
2
Makefile
2
Makefile
|
@ -188,7 +188,7 @@ APPDIR= $(shell if test -d "mapp"; then echo mapp; fi)
|
|||
#############################################################################
|
||||
|
||||
ccflags-y += -I$(KERNELDIR)/include
|
||||
ccflags-y += -DMLAN_RELEASE_VERSION='"505.p1"'
|
||||
ccflags-y += -DMLAN_RELEASE_VERSION='"505.p4"'
|
||||
|
||||
ccflags-y += -DFPNUM='"92"'
|
||||
|
||||
|
|
|
@ -998,6 +998,8 @@ mlan_status wlan_cmd_11ax_cmd(pmlan_private pmpriv, HostCmd_DS_COMMAND *cmd,
|
|||
(mlan_ds_11ax_llde_cmd *)&ds_11ax_cmd->param;
|
||||
mlan_ds_11ax_rutxpwr_cmd *rutxpwr_cmd =
|
||||
(mlan_ds_11ax_rutxpwr_cmd *)&ds_11ax_cmd->param;
|
||||
mlan_ds_11ax_HeSuER_cmd *HeSuER_cmd =
|
||||
(mlan_ds_11ax_HeSuER_cmd *)&ds_11ax_cmd->param;
|
||||
MrvlIEtypes_Data_t *tlv = MNULL;
|
||||
|
||||
ENTER();
|
||||
|
@ -1055,6 +1057,10 @@ mlan_status wlan_cmd_11ax_cmd(pmlan_private pmpriv, HostCmd_DS_COMMAND *cmd,
|
|||
sizeof(t_u8), sizeof(t_u8));
|
||||
cmd->size += sizeof(t_u8);
|
||||
break;
|
||||
case MLAN_11AXCMD_HESUER_SUBID:
|
||||
axcmd->val[0] = HeSuER_cmd->value;
|
||||
cmd->size += sizeof(t_u8);
|
||||
break;
|
||||
|
||||
default:
|
||||
PRINTM(MERROR, "Unknown subcmd %x\n", ds_11ax_cmd->sub_id);
|
||||
|
@ -1147,6 +1153,10 @@ mlan_status wlan_ret_11ax_cmd(pmlan_private pmpriv, HostCmd_DS_COMMAND *resp,
|
|||
sizeof(mlan_ds_11ax_rutxpwr_cmd),
|
||||
sizeof(mlan_ds_11ax_rutxpwr_cmd));
|
||||
break;
|
||||
case MLAN_11AXCMD_HESUER_SUBID:
|
||||
cfg->param.HeSuER_cfg.value = *axcmd->val;
|
||||
break;
|
||||
|
||||
default:
|
||||
PRINTM(MERROR, "Unknown subcmd %x\n", axcmd->sub_id);
|
||||
break;
|
||||
|
|
|
@ -4068,6 +4068,7 @@ typedef struct _mlan_ds_11ax_cfg {
|
|||
#define MLAN_11AXCMD_CFG_ID_SET_BSRP 8
|
||||
#define MLAN_11AXCMD_CFG_ID_LLDE 9
|
||||
#define MLAN_11AXCMD_CFG_ID_RUTXPWR 10
|
||||
#define MLAN_11AXCMD_CFG_ID_HESUER 11
|
||||
|
||||
#define MLAN_11AXCMD_SR_SUBID 0x102
|
||||
#define MLAN_11AXCMD_BEAM_SUBID 0x103
|
||||
|
@ -4078,6 +4079,7 @@ typedef struct _mlan_ds_11ax_cfg {
|
|||
#define MLAN_11AXCMD_SET_BSRP_SUBID 0x109
|
||||
#define MLAN_11AXCMD_LLDE_SUBID 0x110
|
||||
#define MLAN_11AXCMD_RUTXSUBPWR_SUBID 0x118
|
||||
#define MLAN_11AXCMD_HESUER_SUBID 0x121
|
||||
|
||||
#define MLAN_11AX_TWT_SETUP_SUBID 0x114
|
||||
#define MLAN_11AX_TWT_TEARDOWN_SUBID 0x115
|
||||
|
@ -4201,6 +4203,12 @@ typedef struct _mlan_ds_11ax_rutxpwr_cmd {
|
|||
t_s8 rutxSubPwr[89];
|
||||
} mlan_ds_11ax_rutxpwr_cmd, *pmlan_ds_11ax_rutxpwr_cmd;
|
||||
|
||||
/** Type definition of mlan_ds_11ax_HeSuER_cmd for MLAN_11AXCMD_HESUER_SUBID */
|
||||
typedef struct _mlan_ds_11ax_HeSuER_cmd {
|
||||
/** command value: 1 is enable, 0 is disable*/
|
||||
t_u8 value;
|
||||
} mlan_ds_11ax_HeSuER_cmd, *pmlan_ds_11ax_HeSuER_cmd;
|
||||
|
||||
/** Type definition of mlan_ds_11ax_cmd_cfg for MLAN_OID_11AX_CMD_CFG */
|
||||
typedef struct _mlan_ds_11ax_cmd_cfg {
|
||||
/** Sub-command */
|
||||
|
@ -4228,6 +4236,8 @@ typedef struct _mlan_ds_11ax_cmd_cfg {
|
|||
mlan_ds_11ax_llde_cmd llde_cfg;
|
||||
/* MLAN_11AXCMD_RUTXPWR_SUBID */
|
||||
mlan_ds_11ax_rutxpwr_cmd rutxpwr_cfg;
|
||||
/** HeSuER configuration for MLAN_11AXCMD_HESUER_SUBID */
|
||||
mlan_ds_11ax_HeSuER_cmd HeSuER_cfg;
|
||||
} param;
|
||||
} mlan_ds_11ax_cmd_cfg, *pmlan_ds_11ax_cmd_cfg;
|
||||
|
||||
|
|
|
@ -3042,7 +3042,7 @@ struct _mlan_adapter {
|
|||
/** LLDE enable/disable */
|
||||
t_u8 llde_enabled;
|
||||
/** LLDE modes 0 - default; 1 - carplay; 2 - gameplay; 3 - sound bar, 4
|
||||
* <EFBFBD> validation, 5- event driven */
|
||||
* – validation, 5- event driven */
|
||||
t_u8 llde_mode;
|
||||
/** high priority data packet type. 0: All traffic, 1: ping, 2: TCP ACK,
|
||||
* 4: TCP Data, 8: UDP */
|
||||
|
|
|
@ -4068,6 +4068,7 @@ typedef struct _mlan_ds_11ax_cfg {
|
|||
#define MLAN_11AXCMD_CFG_ID_SET_BSRP 8
|
||||
#define MLAN_11AXCMD_CFG_ID_LLDE 9
|
||||
#define MLAN_11AXCMD_CFG_ID_RUTXPWR 10
|
||||
#define MLAN_11AXCMD_CFG_ID_HESUER 11
|
||||
|
||||
#define MLAN_11AXCMD_SR_SUBID 0x102
|
||||
#define MLAN_11AXCMD_BEAM_SUBID 0x103
|
||||
|
@ -4078,6 +4079,7 @@ typedef struct _mlan_ds_11ax_cfg {
|
|||
#define MLAN_11AXCMD_SET_BSRP_SUBID 0x109
|
||||
#define MLAN_11AXCMD_LLDE_SUBID 0x110
|
||||
#define MLAN_11AXCMD_RUTXSUBPWR_SUBID 0x118
|
||||
#define MLAN_11AXCMD_HESUER_SUBID 0x121
|
||||
|
||||
#define MLAN_11AX_TWT_SETUP_SUBID 0x114
|
||||
#define MLAN_11AX_TWT_TEARDOWN_SUBID 0x115
|
||||
|
@ -4201,6 +4203,12 @@ typedef struct _mlan_ds_11ax_rutxpwr_cmd {
|
|||
t_s8 rutxSubPwr[89];
|
||||
} mlan_ds_11ax_rutxpwr_cmd, *pmlan_ds_11ax_rutxpwr_cmd;
|
||||
|
||||
/** Type definition of mlan_ds_11ax_HeSuER_cmd for MLAN_11AXCMD_HESUER_SUBID */
|
||||
typedef struct _mlan_ds_11ax_HeSuER_cmd {
|
||||
/** command value: 1 is enable, 0 is disable*/
|
||||
t_u8 value;
|
||||
} mlan_ds_11ax_HeSuER_cmd, *pmlan_ds_11ax_HeSuER_cmd;
|
||||
|
||||
/** Type definition of mlan_ds_11ax_cmd_cfg for MLAN_OID_11AX_CMD_CFG */
|
||||
typedef struct _mlan_ds_11ax_cmd_cfg {
|
||||
/** Sub-command */
|
||||
|
@ -4228,6 +4236,8 @@ typedef struct _mlan_ds_11ax_cmd_cfg {
|
|||
mlan_ds_11ax_llde_cmd llde_cfg;
|
||||
/* MLAN_11AXCMD_RUTXPWR_SUBID */
|
||||
mlan_ds_11ax_rutxpwr_cmd rutxpwr_cfg;
|
||||
/** HeSuER configuration for MLAN_11AXCMD_HESUER_SUBID */
|
||||
mlan_ds_11ax_HeSuER_cmd HeSuER_cfg;
|
||||
} param;
|
||||
} mlan_ds_11ax_cmd_cfg, *pmlan_ds_11ax_cmd_cfg;
|
||||
|
||||
|
|
|
@ -660,6 +660,10 @@ static int woal_setget_priv_11axcmdcfg(moal_private *priv, t_u8 *respbuf,
|
|||
case MLAN_11AXCMD_CFG_ID_RUTXPWR:
|
||||
cfg->sub_id = MLAN_11AXCMD_RUTXSUBPWR_SUBID;
|
||||
break;
|
||||
case MLAN_11AXCMD_CFG_ID_HESUER:
|
||||
cfg->sub_id = MLAN_11AXCMD_HESUER_SUBID;
|
||||
cfg->param.HeSuER_cfg.value = data[1];
|
||||
break;
|
||||
|
||||
default:
|
||||
PRINTM(MERROR, "unknown 11axcmd\n");
|
||||
|
|
|
@ -12333,6 +12333,10 @@ t_void woal_evt_work_queue(struct work_struct *work)
|
|||
woal_host_mlme_process_assoc_timeout(
|
||||
(moal_private *)evt->priv, evt->assoc_bss);
|
||||
break;
|
||||
case WOAL_EVENT_RESET_WIFI:
|
||||
woal_reset_wifi(handle, evt->deauth_evt_cnt,
|
||||
"EAPOL timeout");
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef UAP_SUPPORT
|
||||
|
|
|
@ -174,10 +174,7 @@ Change log:
|
|||
#define IMX_ANDROID_14 0
|
||||
#define IMX_ANDROID_12_BACKPORT 0
|
||||
|
||||
#if defined(IMX_SUPPORT)
|
||||
|
||||
#if defined(IMX_ANDROID)
|
||||
|
||||
#ifdef ANDROID_SDK_VERSION
|
||||
#if CFG80211_VERSION_CODE >= KERNEL_VERSION(5, 15, 52)
|
||||
#undef IMX_ANDROID_13
|
||||
#define IMX_ANDROID_13 1
|
||||
|
@ -190,7 +187,7 @@ Change log:
|
|||
#undef IMX_ANDROID_12_BACKPORT
|
||||
#define IMX_ANDROID_12_BACKPORT 1
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@ -1043,7 +1040,7 @@ typedef struct _wait_queue {
|
|||
/** flag for wait_timeout */
|
||||
t_u8 wait_timeout;
|
||||
/** retry count */
|
||||
t_u8 retry;
|
||||
t_u16 retry;
|
||||
} wait_queue, *pwait_queue;
|
||||
|
||||
/** Auto Rate */
|
||||
|
@ -1258,6 +1255,7 @@ enum woal_event_type {
|
|||
#endif
|
||||
#endif
|
||||
WOAL_EVENT_RGPWR_KEY_MISMATCH,
|
||||
WOAL_EVENT_RESET_WIFI,
|
||||
};
|
||||
|
||||
/** chan_rpt_info */
|
||||
|
@ -1290,6 +1288,7 @@ struct woal_event {
|
|||
mlan_ds_assoc_info assoc_info;
|
||||
mlan_deauth_param deauth_info;
|
||||
chan_radar_info radar_info;
|
||||
t_u8 deauth_evt_cnt;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -2699,6 +2699,35 @@ static void woal_rgpower_key_mismatch_event(moal_private *priv)
|
|||
}
|
||||
}
|
||||
|
||||
#if CFG80211_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
|
||||
/**
|
||||
* @brief This function prepare wifi reset event
|
||||
*
|
||||
* @param priv pointer to the moal_private structure.
|
||||
*
|
||||
* @return N/A
|
||||
*/
|
||||
static void woal_wifi_reset_event(moal_private *priv, t_u8 deauth_evt_cnt)
|
||||
{
|
||||
struct woal_event *evt;
|
||||
unsigned long flags;
|
||||
moal_handle *handle = priv->phandle;
|
||||
|
||||
evt = kzalloc(sizeof(struct woal_event), GFP_ATOMIC);
|
||||
if (evt) {
|
||||
evt->priv = priv;
|
||||
evt->type = WOAL_EVENT_RESET_WIFI;
|
||||
evt->deauth_evt_cnt = deauth_evt_cnt;
|
||||
INIT_LIST_HEAD(&evt->link);
|
||||
spin_lock_irqsave(&handle->evt_lock, flags);
|
||||
list_add_tail(&evt->link, &handle->evt_queue);
|
||||
spin_unlock_irqrestore(&handle->evt_lock, flags);
|
||||
queue_work(handle->evt_workqueue, &handle->evt_work);
|
||||
}
|
||||
// coverity[leaked_storage]: SUPPRESS
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief This function handles defer event receive
|
||||
*
|
||||
|
@ -4478,14 +4507,11 @@ mlan_status moal_recv_event(t_void *pmoal, pmlan_event pmevent)
|
|||
#define MAX_DEAUTH_COUNTER 5
|
||||
if (priv->deauth_evt_cnt >=
|
||||
MAX_DEAUTH_COUNTER) {
|
||||
if (woal_reset_wifi(
|
||||
priv->phandle,
|
||||
priv->deauth_evt_cnt,
|
||||
"EAPOL timeout") ==
|
||||
MLAN_STATUS_SUCCESS) {
|
||||
priv->deauth_evt_cnt =
|
||||
0;
|
||||
}
|
||||
woal_wifi_reset_event(
|
||||
priv,
|
||||
priv->deauth_evt_cnt);
|
||||
priv->deauth_evt_cnt =
|
||||
0;
|
||||
}
|
||||
}
|
||||
priv->cfg_disconnect = MTRUE;
|
||||
|
|
|
@ -1661,7 +1661,18 @@ mlan_status woal_reset_wifi(moal_handle *handle, t_u8 cnt, char *reason)
|
|||
static wifi_timeval reset_time;
|
||||
wifi_timeval ts;
|
||||
t_u64 diff;
|
||||
t_u8 intf_num;
|
||||
|
||||
/* Disconnect all interfaces */
|
||||
for (intf_num = 0; intf_num < handle->priv_num; intf_num++) {
|
||||
if (handle->priv[intf_num] &&
|
||||
handle->priv[intf_num]->media_connected == MTRUE) {
|
||||
if (woal_disconnect(handle->priv[intf_num],
|
||||
MOAL_IOCTL_WAIT, NULL,
|
||||
DEF_DEAUTH_REASON_CODE))
|
||||
PRINTM(MERROR, "woal_disconnect failed\n");
|
||||
}
|
||||
}
|
||||
#define MAX_WIFI_RESET_INTERVAL 15 * 60 * 1000000 // 15 minute
|
||||
woal_get_monotonic_time(&ts);
|
||||
diff = (t_u64)(timeval_to_usec(ts) - timeval_to_usec(reset_time));
|
||||
|
@ -5010,23 +5021,18 @@ static int woal_cfg80211_scan(struct wiphy *wiphy, struct net_device *dev,
|
|||
if (chan->flags & IEEE80211_CHAN_PASSIVE_SCAN)
|
||||
scan_req->chan_list[num_chans].scan_time =
|
||||
INIT_PASSIVE_SCAN_CHAN_TIME;
|
||||
else if ((priv->bss_type == MLAN_BSS_TYPE_STA) &&
|
||||
(1 ==
|
||||
priv->phandle->scan_request->n_channels)) {
|
||||
else if (priv->bss_type == MLAN_BSS_TYPE_STA) {
|
||||
/*
|
||||
* Set passive scan time to 110ms to discover
|
||||
* all nearby AP's, Current 40ms passive scan
|
||||
* time does not scan all AP's. There are issues
|
||||
* with 40ms scan time:
|
||||
* 1. Regular user passive scan does list
|
||||
* limited nearby AP's.
|
||||
* 2. Radio Measurement RPT with beacon report
|
||||
* for passive scan mode does not list all
|
||||
* required AP's and hence cert fails. This
|
||||
* change is limited to below scenario only:
|
||||
* 1. Single channel user scan is requested
|
||||
* 2. STA is in connected state
|
||||
* 3. Scan type is passive
|
||||
* time does not scan all AP's. As beacon
|
||||
* interval is 100ms and dwell time on channel
|
||||
* is 40ms There are issues with 40ms scan time:
|
||||
* 1. Passive scan does list limited nearby
|
||||
* AP's. This change is limited to below
|
||||
* scenario only:
|
||||
* 1. STA is in connected state
|
||||
* 2. Scan type is passive
|
||||
*/
|
||||
if (scan_req->chan_list[num_chans].scan_type ==
|
||||
MLAN_SCAN_TYPE_PASSIVE)
|
||||
|
|
Loading…
Reference in a new issue