mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 06:55:13 +08:00
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.
|
* RD responder bit to set to clear in the extended capability header.
|
||||||
*/
|
*/
|
||||||
void
|
int mwifiex_fill_cap_info(struct mwifiex_private *priv, u8 radio_type,
|
||||||
mwifiex_fill_cap_info(struct mwifiex_private *priv, u8 radio_type,
|
struct ieee80211_ht_cap *ht_cap)
|
||||||
struct mwifiex_ie_types_htcap *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 =
|
struct ieee80211_supported_band *sband =
|
||||||
priv->wdev->wiphy->bands[radio_type];
|
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 &
|
(sband->ht_cap.ampdu_factor &
|
||||||
IEEE80211_HT_AMPDU_PARM_FACTOR) |
|
IEEE80211_HT_AMPDU_PARM_FACTOR) |
|
||||||
((sband->ht_cap.ampdu_density <<
|
((sband->ht_cap.ampdu_density <<
|
||||||
IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT) &
|
IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT) &
|
||||||
IEEE80211_HT_AMPDU_PARM_DENSITY);
|
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));
|
sizeof(sband->ht_cap.mcs));
|
||||||
|
|
||||||
if (priv->bss_mode == NL80211_IFTYPE_STATION ||
|
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 !=
|
(priv->adapter->sec_chan_offset !=
|
||||||
IEEE80211_HT_PARAM_CHA_SEC_NONE)))
|
IEEE80211_HT_PARAM_CHA_SEC_NONE)))
|
||||||
/* Set MCS32 for infra mode or ad-hoc mode with 40MHz support */
|
/* 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 */
|
/* Clear RD responder bit */
|
||||||
ht_ext_cap &= ~IEEE80211_HT_EXT_CAP_RD_RESPONDER;
|
ht_ext_cap &= ~IEEE80211_HT_EXT_CAP_RD_RESPONDER;
|
||||||
|
|
||||||
ht_cap->ht_cap.cap_info = cpu_to_le16(sband->ht_cap.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->extended_ht_cap_info = cpu_to_le16(ht_ext_cap);
|
||||||
|
|
||||||
if (ISSUPP_BEAMFORMING(priv->adapter->hw_dot_11n_dev_cap))
|
if (ISSUPP_BEAMFORMING(priv->adapter->hw_dot_11n_dev_cap))
|
||||||
ht_cap->ht_cap.tx_BF_cap_info =
|
ht_cap->tx_BF_cap_info = cpu_to_le32(MWIFIEX_DEF_11N_TX_BF_CAP);
|
||||||
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),
|
sizeof(struct ieee_types_header),
|
||||||
le16_to_cpu(ht_cap->header.len));
|
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);
|
*buffer += sizeof(struct mwifiex_ie_types_htcap);
|
||||||
ret_len += 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,
|
int mwifiex_cmd_append_11n_tlv(struct mwifiex_private *priv,
|
||||||
struct mwifiex_bssdescriptor *bss_desc,
|
struct mwifiex_bssdescriptor *bss_desc,
|
||||||
u8 **buffer);
|
u8 **buffer);
|
||||||
void mwifiex_fill_cap_info(struct mwifiex_private *, u8 radio_type,
|
int mwifiex_fill_cap_info(struct mwifiex_private *, u8 radio_type,
|
||||||
struct mwifiex_ie_types_htcap *);
|
struct ieee80211_ht_cap *);
|
||||||
int mwifiex_set_get_11n_htcap_cfg(struct mwifiex_private *priv,
|
int mwifiex_set_get_11n_htcap_cfg(struct mwifiex_private *priv,
|
||||||
u16 action, int *htcap_cfg);
|
u16 action, int *htcap_cfg);
|
||||||
void mwifiex_11n_delete_tx_ba_stream_tbl_entry(struct mwifiex_private *priv,
|
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));
|
cpu_to_le16(sizeof(struct ieee80211_ht_cap));
|
||||||
radio_type = mwifiex_band_to_radio_type(
|
radio_type = mwifiex_band_to_radio_type(
|
||||||
priv->adapter->config_bands);
|
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 ==
|
if (adapter->sec_chan_offset ==
|
||||||
IEEE80211_HT_PARAM_CHA_SEC_NONE) {
|
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));
|
cpu_to_le16(sizeof(struct ieee80211_ht_cap));
|
||||||
radio_type =
|
radio_type =
|
||||||
mwifiex_band_to_radio_type(priv->adapter->config_bands);
|
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);
|
tlv_pos += sizeof(struct mwifiex_ie_types_htcap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user