ar9170: cleanup of bss_info_changed and beacon config
PATCH v2 1/2 ar9170: cleanup of bss_info_changed and beacon config
Add beacon control by BSS_CHANGED_BEACON_ENABLED and bss_conf->enable_beacon from mac80211.
Signed-off-by Joerg Albert <[email protected]>
---
As suggested by Christian this version preserves the old behaviour for STA mode.
drivers/net/wireless/ath/ar9170/ar9170.h | 1 + drivers/net/wireless/ath/ar9170/mac.c | 24 ++++++++++++++---------- drivers/net/wireless/ath/ar9170/main.c | 15 ++++++++------- 3 files changed, 23 insertions(+), 17 deletions(-)
drivers/net/wireless/ath/ar9170/ar9170.h +1 -0
@@ -178,6 +178,7 @@ struct ar9170 {/* beaconing */ struct sk_buff *beacon;struct work_struct beacon_work; +bool enable_beacon;/* cryptographic engine */ u64 usedkeys;
drivers/net/wireless/ath/ar9170/mac.c +14 -10
@@ -383,20 +383,24 @@ int ar9170_set_beacon_timers(struct ar9170 *ar)if (ar->vif) { v |= ar->vif->bss_conf.beacon_int; -switch (ar->vif->type) { -case NL80211_IFTYPE_MESH_POINT : -case NL80211_IFTYPE_ADHOC : - v |=BIT (25 ); -break ; -case NL80211_IFTYPE_AP : - v |=BIT (24 ); - pretbtt = (ar->vif->bss_conf.beacon_int -6 ) <<16 ; -break ; -default : +if (ar->enable_beacon) { + +switch (ar->vif->type) { +case NL80211_IFTYPE_MESH_POINT : +case NL80211_IFTYPE_ADHOC : + v |=BIT (25 ); +break ; +case NL80211_IFTYPE_AP : + v |=BIT (24 ); + pretbtt = (ar->vif->bss_conf.beacon_int -6 ) <<16 ; +break ; +default :break ; + } } v |= ar->vif->bss_conf.dtim_period <<16 ; + }ar9170_regwrite_begin (ar);
drivers/net/wireless/ath/ar9170/main.c +8 -7
@@ -2148,11 +2148,18 @@ static void ar9170_op_bss_info_changed(struct ieee80211_hw *hw, goto out; } -if (changed & (BSS_CHANGED_BEACON |BSS_CHANGED_BEACON_ENABLED )) { +if (changed &BSS_CHANGED_BEACON_ENABLED ) { + ar->enable_beacon = bss_conf->enable_beacon; + } + +if (changed &BSS_CHANGED_BEACON ) { err =ar9170_update_beacon (ar);if (err) goto out; + } +if (changed & (BSS_CHANGED_BEACON_ENABLED |BSS_CHANGED_BEACON | +BSS_CHANGED_BEACON_INT )) { err =ar9170_set_beacon_timers (ar);if (err) goto out;
@@ -2165,12 +2172,6 @@ static void ar9170_op_bss_info_changed(struct ieee80211_hw *hw,#endif /* CONFIG_AR9170_LEDS */ } -if (changed &BSS_CHANGED_BEACON_INT ) { - err =ar9170_set_beacon_timers (ar); -if (err) - goto out; - } -if (changed &BSS_CHANGED_HT ) {/* TODO */ err =0 ;
Signature · 1 line
1.6.0.4
PATCH v3 1/2 ar9170: cleanup of bss_info_changed and beacon config
From: Joerg Albert <[email protected]>
Add beacon control by BSS_CHANGED_BEACON_ENABLED and bss_conf->enable_beacon from mac80211.
Signed-off-by Joerg Albert <[email protected]>
Signed-off-by Christian Lamparter <[email protected]>
---
About time they show up ;-)
changes from v2:
- fixed both checkpatch.pl complains
- removed a few empty lines.
hope this one is fine...
---
drivers/net/wireless/ath/ar9170/ar9170.h +1 -0
@@ -178,6 +178,7 @@ struct ar9170 {/* beaconing */ struct sk_buff *beacon;struct work_struct beacon_work; +bool enable_beacon;/* cryptographic engine */ u64 usedkeys;
drivers/net/wireless/ath/ar9170/mac.c +13 -11
@@ -383,24 +383,26 @@ int ar9170_set_beacon_timers(struct ar9170 *ar)if (ar->vif) { v |= ar->vif->bss_conf.beacon_int; -switch (ar->vif->type) { -case NL80211_IFTYPE_MESH_POINT : -case NL80211_IFTYPE_ADHOC : - v |=BIT (25 ); -break ; -case NL80211_IFTYPE_AP : - v |=BIT (24 ); - pretbtt = (ar->vif->bss_conf.beacon_int -6 ) <<16 ; -break ; -default : +if (ar->enable_beacon) { +switch (ar->vif->type) { +case NL80211_IFTYPE_MESH_POINT : +case NL80211_IFTYPE_ADHOC : + v |=BIT (25 ); +break ; +case NL80211_IFTYPE_AP : + v |=BIT (24 ); + pretbtt = (ar->vif->bss_conf.beacon_int -6 ) << +16 ; +break ; +default :break ; + } } v |= ar->vif->bss_conf.dtim_period <<16 ; }ar9170_regwrite_begin (ar); -ar9170_regwrite (AR9170_MAC_REG_PRETBTT , pretbtt);ar9170_regwrite (AR9170_MAC_REG_BCN_PERIOD , v);ar9170_regwrite_finish ();
drivers/net/wireless/ath/ar9170/main.c +7 -7
@@ -2148,11 +2148,17 @@ static void ar9170_op_bss_info_changed(struct ieee80211_hw *hw, goto out; } -if (changed & (BSS_CHANGED_BEACON |BSS_CHANGED_BEACON_ENABLED )) { +if (changed &BSS_CHANGED_BEACON_ENABLED ) + ar->enable_beacon = bss_conf->enable_beacon; + +if (changed &BSS_CHANGED_BEACON ) { err =ar9170_update_beacon (ar);if (err) goto out; + } +if (changed & (BSS_CHANGED_BEACON_ENABLED |BSS_CHANGED_BEACON | +BSS_CHANGED_BEACON_INT )) { err =ar9170_set_beacon_timers (ar);if (err) goto out;
@@ -2165,12 +2171,6 @@ static void ar9170_op_bss_info_changed(struct ieee80211_hw *hw,#endif /* CONFIG_AR9170_LEDS */ } -if (changed &BSS_CHANGED_BEACON_INT ) { - err =ar9170_set_beacon_timers (ar); -if (err) - goto out; - } -if (changed &BSS_CHANGED_HT ) {/* TODO */ err =0 ;