aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-10-09 06:18:51 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-10-31 19:00:07 -0400
commite8975581f63870be42ff4662b293d1b0c8c21350 (patch)
tree3d0d67e73d009ea6480b459585c0a70fc35fa9da /include
parent0f4ac38b5999c3d51adad52d61c56c1b99c247ec (diff)
mac80211: introduce hw config change flags
This makes mac80211 notify the driver which configuration actually changed, e.g. channel etc. No driver changes, this is just plumbing, driver authors are expected to act on this if they want to. Also remove the HW CONFIG debug printk, it's incorrect, often we configure something else. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include')
-rw-r--r--include/net/mac80211.h30
1 files changed, 25 insertions, 5 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 5f28b7f89887..34e8569b59bb 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -464,12 +464,32 @@ static inline int __deprecated __IEEE80211_CONF_SHORT_SLOT_TIME(void)
464#define IEEE80211_CONF_SHORT_SLOT_TIME (__IEEE80211_CONF_SHORT_SLOT_TIME()) 464#define IEEE80211_CONF_SHORT_SLOT_TIME (__IEEE80211_CONF_SHORT_SLOT_TIME())
465 465
466/** 466/**
467 * enum ieee80211_conf_changed - denotes which configuration changed
468 *
469 * @IEEE80211_CONF_CHANGE_RADIO_ENABLED: the value of radio_enabled changed
470 * @IEEE80211_CONF_CHANGE_BEACON_INTERVAL: the beacon interval changed
471 * @IEEE80211_CONF_CHANGE_LISTEN_INTERVAL: the listen interval changed
472 * @IEEE80211_CONF_CHANGE_RADIOTAP: the radiotap flag changed
473 * @IEEE80211_CONF_CHANGE_PS: the PS flag changed
474 * @IEEE80211_CONF_CHANGE_POWER: the TX power changed
475 * @IEEE80211_CONF_CHANGE_CHANNEL: the channel changed
476 */
477enum ieee80211_conf_changed {
478 IEEE80211_CONF_CHANGE_RADIO_ENABLED = BIT(0),
479 IEEE80211_CONF_CHANGE_BEACON_INTERVAL = BIT(1),
480 IEEE80211_CONF_CHANGE_LISTEN_INTERVAL = BIT(2),
481 IEEE80211_CONF_CHANGE_RADIOTAP = BIT(3),
482 IEEE80211_CONF_CHANGE_PS = BIT(4),
483 IEEE80211_CONF_CHANGE_POWER = BIT(5),
484 IEEE80211_CONF_CHANGE_CHANNEL = BIT(6),
485};
486
487/**
467 * struct ieee80211_conf - configuration of the device 488 * struct ieee80211_conf - configuration of the device
468 * 489 *
469 * This struct indicates how the driver shall configure the hardware. 490 * This struct indicates how the driver shall configure the hardware.
470 * 491 *
471 * @radio_enabled: when zero, driver is required to switch off the radio. 492 * @radio_enabled: when zero, driver is required to switch off the radio.
472 * TODO make a flag
473 * @beacon_int: beacon interval (TODO make interface config) 493 * @beacon_int: beacon interval (TODO make interface config)
474 * @listen_interval: listen interval in units of beacon interval 494 * @listen_interval: listen interval in units of beacon interval
475 * @flags: configuration flags defined above 495 * @flags: configuration flags defined above
@@ -479,13 +499,13 @@ static inline int __deprecated __IEEE80211_CONF_SHORT_SLOT_TIME(void)
479 * @channel: the channel to tune to 499 * @channel: the channel to tune to
480 */ 500 */
481struct ieee80211_conf { 501struct ieee80211_conf {
482 int radio_enabled;
483
484 int beacon_int; 502 int beacon_int;
485 u16 listen_interval;
486 u32 flags; 503 u32 flags;
487 int power_level; 504 int power_level;
488 505
506 u16 listen_interval;
507 bool radio_enabled;
508
489 struct ieee80211_channel *channel; 509 struct ieee80211_channel *channel;
490 510
491 struct ieee80211_sta_ht_cap ht_cap; 511 struct ieee80211_sta_ht_cap ht_cap;
@@ -1214,7 +1234,7 @@ struct ieee80211_ops {
1214 struct ieee80211_if_init_conf *conf); 1234 struct ieee80211_if_init_conf *conf);
1215 void (*remove_interface)(struct ieee80211_hw *hw, 1235 void (*remove_interface)(struct ieee80211_hw *hw,
1216 struct ieee80211_if_init_conf *conf); 1236 struct ieee80211_if_init_conf *conf);
1217 int (*config)(struct ieee80211_hw *hw, struct ieee80211_conf *conf); 1237 int (*config)(struct ieee80211_hw *hw, u32 changed);
1218 int (*config_interface)(struct ieee80211_hw *hw, 1238 int (*config_interface)(struct ieee80211_hw *hw,
1219 struct ieee80211_vif *vif, 1239 struct ieee80211_vif *vif,
1220 struct ieee80211_if_conf *conf); 1240 struct ieee80211_if_conf *conf);