Commit cd27bc3c authored by Amitkumar Karwar's avatar Amitkumar Karwar Committed by John W. Linville

mwifiex: 11n specific configuration for transmit

Currently device is not able to transmit in 40MHz in spite of
enabling 40MHz support in HTCapInfo IE in assoc req, because
11n specific FW capabilities for transmission are not initialized.
This patch adds code to initilize these capabilities.
Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarYogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: default avatarKiran Divekar <dkiran@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 5c3d29fc
...@@ -157,6 +157,17 @@ enum MWIFIEX_802_11_WEP_STATUS { ...@@ -157,6 +157,17 @@ enum MWIFIEX_802_11_WEP_STATUS {
#define ISSUPP_RXSTBC(Dot11nDevCap) (Dot11nDevCap & BIT(26)) #define ISSUPP_RXSTBC(Dot11nDevCap) (Dot11nDevCap & BIT(26))
#define ISSUPP_GREENFIELD(Dot11nDevCap) (Dot11nDevCap & BIT(29)) #define ISSUPP_GREENFIELD(Dot11nDevCap) (Dot11nDevCap & BIT(29))
/* httxcfg bitmap
* 0 reserved
* 1 20/40 Mhz enable(1)/disable(0)
* 2-3 reserved
* 4 green field enable(1)/disable(0)
* 5 short GI in 20 Mhz enable(1)/disable(0)
* 6 short GI in 40 Mhz enable(1)/disable(0)
* 7-15 reserved
*/
#define MWIFIEX_FW_DEF_HTTXCFG (BIT(1) | BIT(4) | BIT(5) | BIT(6))
#define GET_RXMCSSUPP(DevMCSSupported) (DevMCSSupported & 0x0f) #define GET_RXMCSSUPP(DevMCSSupported) (DevMCSSupported & 0x0f)
#define SETHT_MCS32(x) (x[4] |= 1) #define SETHT_MCS32(x) (x[4] |= 1)
......
...@@ -1113,6 +1113,7 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta) ...@@ -1113,6 +1113,7 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta)
struct mwifiex_ds_11n_amsdu_aggr_ctrl amsdu_aggr_ctrl; struct mwifiex_ds_11n_amsdu_aggr_ctrl amsdu_aggr_ctrl;
struct mwifiex_ds_auto_ds auto_ds; struct mwifiex_ds_auto_ds auto_ds;
enum state_11d_t state_11d; enum state_11d_t state_11d;
struct mwifiex_ds_11n_tx_cfg tx_cfg;
if (first_sta) { if (first_sta) {
...@@ -1198,8 +1199,15 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta) ...@@ -1198,8 +1199,15 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta)
if (ret) if (ret)
dev_err(priv->adapter->dev, "11D: failed to enable 11D\n"); dev_err(priv->adapter->dev, "11D: failed to enable 11D\n");
/* Send cmd to FW to configure 11n specific configuration
* (Short GI, Channel BW, Green field support etc.) for transmit
*/
tx_cfg.tx_htcap = MWIFIEX_FW_DEF_HTTXCFG;
ret = mwifiex_send_cmd_async(priv, HostCmd_CMD_11N_CFG,
HostCmd_ACT_GEN_SET, 0, &tx_cfg);
/* set last_init_cmd */ /* set last_init_cmd */
priv->adapter->last_init_cmd = HostCmd_CMD_802_11_SNMP_MIB; priv->adapter->last_init_cmd = HostCmd_CMD_11N_CFG;
ret = -EINPROGRESS; ret = -EINPROGRESS;
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment