mwifiex: cleanup in mwifiex_fill_cap_info()
Pass 'struct ieee80211_ht_cap' pointer to mwifiex_fill_cap_info() instead of 'struct mwifiex_ie_types_htcap' pointer, because the routine internally uses the later one. This patch also adds WARN_ON_ONCE check for NULL band. Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
4bcf93d3a4
commit
341b880072
|
@ -34,22 +34,26 @@
|
|||
*
|
||||
* RD responder bit to set to clear in the extended capability header.
|
||||
*/
|
||||
void
|
||||
mwifiex_fill_cap_info(struct mwifiex_private *priv, u8 radio_type,
|
||||
struct mwifiex_ie_types_htcap *ht_cap)
|
||||
int mwifiex_fill_cap_info(struct mwifiex_private *priv, u8 radio_type,
|
||||
struct ieee80211_ht_cap *ht_cap)
|
||||
{
|
||||
uint16_t ht_ext_cap = le16_to_cpu(ht_cap->ht_cap.extended_ht_cap_info);
|
||||
uint16_t ht_ext_cap = le16_to_cpu(ht_cap->extended_ht_cap_info);
|
||||
struct ieee80211_supported_band *sband =
|
||||
priv->wdev->wiphy->bands[radio_type];
|
||||
|
||||
ht_cap->ht_cap.ampdu_params_info =
|
||||
if (WARN_ON_ONCE(!sband)) {
|
||||
dev_err(priv->adapter->dev, "Invalid radio type!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ht_cap->ampdu_params_info =
|
||||
(sband->ht_cap.ampdu_factor &
|
||||
IEEE80211_HT_AMPDU_PARM_FACTOR) |
|
||||
((sband->ht_cap.ampdu_density <<
|
||||
IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT) &
|
||||
IEEE80211_HT_AMPDU_PARM_DENSITY);
|
||||
|
||||
memcpy((u8 *) &ht_cap->ht_cap.mcs, &sband->ht_cap.mcs,
|
||||
memcpy((u8 *)&ht_cap->mcs, &sband->ht_cap.mcs,
|
||||
sizeof(sband->ht_cap.mcs));
|
||||
|
||||
if (priv->bss_mode == NL80211_IFTYPE_STATION ||
|
||||
|
@ -57,17 +61,18 @@ mwifiex_fill_cap_info(struct mwifiex_private *priv, u8 radio_type,
|
|||
(priv->adapter->sec_chan_offset !=
|
||||
IEEE80211_HT_PARAM_CHA_SEC_NONE)))
|
||||
/* Set MCS32 for infra mode or ad-hoc mode with 40MHz support */
|
||||
SETHT_MCS32(ht_cap->ht_cap.mcs.rx_mask);
|
||||
SETHT_MCS32(ht_cap->mcs.rx_mask);
|
||||
|
||||
/* Clear RD responder bit */
|
||||
ht_ext_cap &= ~IEEE80211_HT_EXT_CAP_RD_RESPONDER;
|
||||
|
||||
ht_cap->ht_cap.cap_info = cpu_to_le16(sband->ht_cap.cap);
|
||||
ht_cap->ht_cap.extended_ht_cap_info = cpu_to_le16(ht_ext_cap);
|
||||
ht_cap->cap_info = cpu_to_le16(sband->ht_cap.cap);
|
||||
ht_cap->extended_ht_cap_info = cpu_to_le16(ht_ext_cap);
|
||||
|
||||
if (ISSUPP_BEAMFORMING(priv->adapter->hw_dot_11n_dev_cap))
|
||||
ht_cap->ht_cap.tx_BF_cap_info =
|
||||
cpu_to_le32(MWIFIEX_DEF_11N_TX_BF_CAP);
|
||||
ht_cap->tx_BF_cap_info = cpu_to_le32(MWIFIEX_DEF_11N_TX_BF_CAP);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -316,7 +321,7 @@ mwifiex_cmd_append_11n_tlv(struct mwifiex_private *priv,
|
|||
sizeof(struct ieee_types_header),
|
||||
le16_to_cpu(ht_cap->header.len));
|
||||
|
||||
mwifiex_fill_cap_info(priv, radio_type, ht_cap);
|
||||
mwifiex_fill_cap_info(priv, radio_type, &ht_cap->ht_cap);
|
||||
|
||||
*buffer += sizeof(struct mwifiex_ie_types_htcap);
|
||||
ret_len += sizeof(struct mwifiex_ie_types_htcap);
|
||||
|
|
|
@ -34,8 +34,8 @@ int mwifiex_cmd_11n_cfg(struct mwifiex_private *priv,
|
|||
int mwifiex_cmd_append_11n_tlv(struct mwifiex_private *priv,
|
||||
struct mwifiex_bssdescriptor *bss_desc,
|
||||
u8 **buffer);
|
||||
void mwifiex_fill_cap_info(struct mwifiex_private *, u8 radio_type,
|
||||
struct mwifiex_ie_types_htcap *);
|
||||
int mwifiex_fill_cap_info(struct mwifiex_private *, u8 radio_type,
|
||||
struct ieee80211_ht_cap *);
|
||||
int mwifiex_set_get_11n_htcap_cfg(struct mwifiex_private *priv,
|
||||
u16 action, int *htcap_cfg);
|
||||
void mwifiex_11n_delete_tx_ba_stream_tbl_entry(struct mwifiex_private *priv,
|
||||
|
|
|
@ -982,7 +982,7 @@ mwifiex_cmd_802_11_ad_hoc_start(struct mwifiex_private *priv,
|
|||
cpu_to_le16(sizeof(struct ieee80211_ht_cap));
|
||||
radio_type = mwifiex_band_to_radio_type(
|
||||
priv->adapter->config_bands);
|
||||
mwifiex_fill_cap_info(priv, radio_type, ht_cap);
|
||||
mwifiex_fill_cap_info(priv, radio_type, &ht_cap->ht_cap);
|
||||
|
||||
if (adapter->sec_chan_offset ==
|
||||
IEEE80211_HT_PARAM_CHA_SEC_NONE) {
|
||||
|
|
|
@ -957,7 +957,7 @@ mwifiex_config_scan(struct mwifiex_private *priv,
|
|||
cpu_to_le16(sizeof(struct ieee80211_ht_cap));
|
||||
radio_type =
|
||||
mwifiex_band_to_radio_type(priv->adapter->config_bands);
|
||||
mwifiex_fill_cap_info(priv, radio_type, ht_cap);
|
||||
mwifiex_fill_cap_info(priv, radio_type, &ht_cap->ht_cap);
|
||||
tlv_pos += sizeof(struct mwifiex_ie_types_htcap);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue