mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
iwlwifi: Fix MIMO PS mode
This patch setups correctly MIMO PS mode flags Signed-off-by: Guy Cohen <guy.cohen@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
bd8a040e24
commit
e53cfe0ead
2 changed files with 24 additions and 5 deletions
|
@ -4658,17 +4658,30 @@ void iwl4965_set_ht_add_station(struct iwl4965_priv *priv, u8 index,
|
||||||
struct ieee80211_ht_info *sta_ht_inf)
|
struct ieee80211_ht_info *sta_ht_inf)
|
||||||
{
|
{
|
||||||
__le32 sta_flags;
|
__le32 sta_flags;
|
||||||
|
u8 mimo_ps_mode;
|
||||||
|
|
||||||
if (!sta_ht_inf || !sta_ht_inf->ht_supported)
|
if (!sta_ht_inf || !sta_ht_inf->ht_supported)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
|
mimo_ps_mode = (sta_ht_inf->cap & IEEE80211_HT_CAP_MIMO_PS) >> 2;
|
||||||
|
|
||||||
sta_flags = priv->stations[index].sta.station_flags;
|
sta_flags = priv->stations[index].sta.station_flags;
|
||||||
|
|
||||||
if (((sta_ht_inf->cap & IEEE80211_HT_CAP_MIMO_PS >> 2))
|
sta_flags &= ~(STA_FLG_RTS_MIMO_PROT_MSK | STA_FLG_MIMO_DIS_MSK);
|
||||||
== IWL_MIMO_PS_DYNAMIC)
|
|
||||||
|
switch (mimo_ps_mode) {
|
||||||
|
case WLAN_HT_CAP_MIMO_PS_STATIC:
|
||||||
|
sta_flags |= STA_FLG_MIMO_DIS_MSK;
|
||||||
|
break;
|
||||||
|
case WLAN_HT_CAP_MIMO_PS_DYNAMIC:
|
||||||
sta_flags |= STA_FLG_RTS_MIMO_PROT_MSK;
|
sta_flags |= STA_FLG_RTS_MIMO_PROT_MSK;
|
||||||
else
|
break;
|
||||||
sta_flags &= ~STA_FLG_RTS_MIMO_PROT_MSK;
|
case WLAN_HT_CAP_MIMO_PS_DISABLED:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
IWL_WARNING("Invalid MIMO PS mode %d", mimo_ps_mode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
sta_flags |= cpu_to_le32(
|
sta_flags |= cpu_to_le32(
|
||||||
(u32)sta_ht_inf->ampdu_factor << STA_FLG_MAX_AGG_SIZE_POS);
|
(u32)sta_ht_inf->ampdu_factor << STA_FLG_MAX_AGG_SIZE_POS);
|
||||||
|
@ -4679,7 +4692,7 @@ void iwl4965_set_ht_add_station(struct iwl4965_priv *priv, u8 index,
|
||||||
if (iwl4965_is_fat_tx_allowed(priv, sta_ht_inf))
|
if (iwl4965_is_fat_tx_allowed(priv, sta_ht_inf))
|
||||||
sta_flags |= STA_FLG_FAT_EN_MSK;
|
sta_flags |= STA_FLG_FAT_EN_MSK;
|
||||||
else
|
else
|
||||||
sta_flags &= (~STA_FLG_FAT_EN_MSK);
|
sta_flags &= ~STA_FLG_FAT_EN_MSK;
|
||||||
|
|
||||||
priv->stations[index].sta.station_flags = sta_flags;
|
priv->stations[index].sta.station_flags = sta_flags;
|
||||||
done:
|
done:
|
||||||
|
|
|
@ -287,6 +287,12 @@ struct ieee80211_ht_addt_info {
|
||||||
#define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004
|
#define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004
|
||||||
#define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010
|
#define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010
|
||||||
|
|
||||||
|
/* MIMO Power Save Modes */
|
||||||
|
#define WLAN_HT_CAP_MIMO_PS_STATIC 0
|
||||||
|
#define WLAN_HT_CAP_MIMO_PS_DYNAMIC 1
|
||||||
|
#define WLAN_HT_CAP_MIMO_PS_INVALID 2
|
||||||
|
#define WLAN_HT_CAP_MIMO_PS_DISABLED 3
|
||||||
|
|
||||||
/* Authentication algorithms */
|
/* Authentication algorithms */
|
||||||
#define WLAN_AUTH_OPEN 0
|
#define WLAN_AUTH_OPEN 0
|
||||||
#define WLAN_AUTH_SHARED_KEY 1
|
#define WLAN_AUTH_SHARED_KEY 1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue