diff options
author | David S. Miller <davem@davemloft.net> | 2009-08-06 15:57:18 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-08-06 15:57:18 -0400 |
commit | bfe34ebbaa125f00da309f59cc9d30febe1e3115 (patch) | |
tree | 505b43fc81be09ec5b42f82a3e64f300a5e838d5 /include/net | |
parent | 3d7ddd540b4c2d24c6a3e7a52c083a0c31e6151c (diff) | |
parent | 6b4f645a491ac29c7dced415d034eea7736155a6 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/cfg80211.h | 14 | ||||
-rw-r--r-- | include/net/mac80211.h | 58 |
2 files changed, 48 insertions, 24 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index e1b92358242b..fa729979de88 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -1514,20 +1514,6 @@ unsigned int cfg80211_classify8021d(struct sk_buff *skb); | |||
1514 | extern int regulatory_hint(struct wiphy *wiphy, const char *alpha2); | 1514 | extern int regulatory_hint(struct wiphy *wiphy, const char *alpha2); |
1515 | 1515 | ||
1516 | /** | 1516 | /** |
1517 | * regulatory_hint_11d - hints a country IE as a regulatory domain | ||
1518 | * @wiphy: the wireless device giving the hint (used only for reporting | ||
1519 | * conflicts) | ||
1520 | * @country_ie: pointer to the country IE | ||
1521 | * @country_ie_len: length of the country IE | ||
1522 | * | ||
1523 | * We will intersect the rd with the what CRDA tells us should apply | ||
1524 | * for the alpha2 this country IE belongs to, this prevents APs from | ||
1525 | * sending us incorrect or outdated information against a country. | ||
1526 | */ | ||
1527 | extern void regulatory_hint_11d(struct wiphy *wiphy, | ||
1528 | u8 *country_ie, | ||
1529 | u8 country_ie_len); | ||
1530 | /** | ||
1531 | * wiphy_apply_custom_regulatory - apply a custom driver regulatory domain | 1517 | * wiphy_apply_custom_regulatory - apply a custom driver regulatory domain |
1532 | * @wiphy: the wireless device we want to process the regulatory domain on | 1518 | * @wiphy: the wireless device we want to process the regulatory domain on |
1533 | * @regd: the custom regulatory domain to use for this wiphy | 1519 | * @regd: the custom regulatory domain to use for this wiphy |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index d4e09a06b4a2..e2fb5767e1fa 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -73,6 +73,21 @@ | |||
73 | */ | 73 | */ |
74 | 74 | ||
75 | /** | 75 | /** |
76 | * DOC: mac80211 workqueue | ||
77 | * | ||
78 | * mac80211 provides its own workqueue for drivers and internal mac80211 use. | ||
79 | * The workqueue is a single threaded workqueue and can only be accessed by | ||
80 | * helpers for sanity checking. Drivers must ensure all work added onto the | ||
81 | * mac80211 workqueue should be cancelled on the driver stop() callback. | ||
82 | * | ||
83 | * mac80211 will flushed the workqueue upon interface removal and during | ||
84 | * suspend. | ||
85 | * | ||
86 | * All work performed on the mac80211 workqueue must not acquire the RTNL lock. | ||
87 | * | ||
88 | */ | ||
89 | |||
90 | /** | ||
76 | * enum ieee80211_max_queues - maximum number of queues | 91 | * enum ieee80211_max_queues - maximum number of queues |
77 | * | 92 | * |
78 | * @IEEE80211_MAX_QUEUES: Maximum number of regular device queues. | 93 | * @IEEE80211_MAX_QUEUES: Maximum number of regular device queues. |
@@ -913,12 +928,6 @@ enum ieee80211_hw_flags { | |||
913 | * | 928 | * |
914 | * @conf: &struct ieee80211_conf, device configuration, don't use. | 929 | * @conf: &struct ieee80211_conf, device configuration, don't use. |
915 | * | 930 | * |
916 | * @workqueue: single threaded workqueue available for driver use, | ||
917 | * allocated by mac80211 on registration and flushed when an | ||
918 | * interface is removed. | ||
919 | * NOTICE: All work performed on this workqueue must not | ||
920 | * acquire the RTNL lock. | ||
921 | * | ||
922 | * @priv: pointer to private area that was allocated for driver use | 931 | * @priv: pointer to private area that was allocated for driver use |
923 | * along with this structure. | 932 | * along with this structure. |
924 | * | 933 | * |
@@ -954,7 +963,6 @@ enum ieee80211_hw_flags { | |||
954 | struct ieee80211_hw { | 963 | struct ieee80211_hw { |
955 | struct ieee80211_conf conf; | 964 | struct ieee80211_conf conf; |
956 | struct wiphy *wiphy; | 965 | struct wiphy *wiphy; |
957 | struct workqueue_struct *workqueue; | ||
958 | const char *rate_control_algorithm; | 966 | const char *rate_control_algorithm; |
959 | void *priv; | 967 | void *priv; |
960 | u32 flags; | 968 | u32 flags; |
@@ -1236,10 +1244,13 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw, | |||
1236 | * mac80211 needs to do and the amount of CPU wakeups, so you should | 1244 | * mac80211 needs to do and the amount of CPU wakeups, so you should |
1237 | * honour this flag if possible. | 1245 | * honour this flag if possible. |
1238 | * | 1246 | * |
1239 | * @FIF_CONTROL: pass control frames, if PROMISC_IN_BSS is not set then | 1247 | * @FIF_CONTROL: pass control frames (except for PS Poll), if PROMISC_IN_BSS |
1240 | * only those addressed to this station | 1248 | * is not set then only those addressed to this station. |
1241 | * | 1249 | * |
1242 | * @FIF_OTHER_BSS: pass frames destined to other BSSes | 1250 | * @FIF_OTHER_BSS: pass frames destined to other BSSes |
1251 | * | ||
1252 | * @FIF_PSPOLL: pass PS Poll frames, if PROMISC_IN_BSS is not set then only | ||
1253 | * those addressed to this station. | ||
1243 | */ | 1254 | */ |
1244 | enum ieee80211_filter_flags { | 1255 | enum ieee80211_filter_flags { |
1245 | FIF_PROMISC_IN_BSS = 1<<0, | 1256 | FIF_PROMISC_IN_BSS = 1<<0, |
@@ -1249,6 +1260,7 @@ enum ieee80211_filter_flags { | |||
1249 | FIF_BCN_PRBRESP_PROMISC = 1<<4, | 1260 | FIF_BCN_PRBRESP_PROMISC = 1<<4, |
1250 | FIF_CONTROL = 1<<5, | 1261 | FIF_CONTROL = 1<<5, |
1251 | FIF_OTHER_BSS = 1<<6, | 1262 | FIF_OTHER_BSS = 1<<6, |
1263 | FIF_PSPOLL = 1<<7, | ||
1252 | }; | 1264 | }; |
1253 | 1265 | ||
1254 | /** | 1266 | /** |
@@ -1301,7 +1313,8 @@ enum ieee80211_ampdu_mlme_action { | |||
1301 | * is disabled. This should turn off the hardware (at least | 1313 | * is disabled. This should turn off the hardware (at least |
1302 | * it must turn off frame reception.) | 1314 | * it must turn off frame reception.) |
1303 | * May be called right after add_interface if that rejects | 1315 | * May be called right after add_interface if that rejects |
1304 | * an interface. | 1316 | * an interface. If you added any work onto the mac80211 workqueue |
1317 | * you should ensure to cancel it on this callback. | ||
1305 | * Must be implemented. | 1318 | * Must be implemented. |
1306 | * | 1319 | * |
1307 | * @add_interface: Called when a netdevice attached to the hardware is | 1320 | * @add_interface: Called when a netdevice attached to the hardware is |
@@ -1928,6 +1941,31 @@ void ieee80211_iterate_active_interfaces_atomic(struct ieee80211_hw *hw, | |||
1928 | void *data); | 1941 | void *data); |
1929 | 1942 | ||
1930 | /** | 1943 | /** |
1944 | * ieee80211_queue_work - add work onto the mac80211 workqueue | ||
1945 | * | ||
1946 | * Drivers and mac80211 use this to add work onto the mac80211 workqueue. | ||
1947 | * This helper ensures drivers are not queueing work when they should not be. | ||
1948 | * | ||
1949 | * @hw: the hardware struct for the interface we are adding work for | ||
1950 | * @work: the work we want to add onto the mac80211 workqueue | ||
1951 | */ | ||
1952 | void ieee80211_queue_work(struct ieee80211_hw *hw, struct work_struct *work); | ||
1953 | |||
1954 | /** | ||
1955 | * ieee80211_queue_delayed_work - add work onto the mac80211 workqueue | ||
1956 | * | ||
1957 | * Drivers and mac80211 use this to queue delayed work onto the mac80211 | ||
1958 | * workqueue. | ||
1959 | * | ||
1960 | * @hw: the hardware struct for the interface we are adding work for | ||
1961 | * @dwork: delayable work to queue onto the mac80211 workqueue | ||
1962 | * @delay: number of jiffies to wait before queueing | ||
1963 | */ | ||
1964 | void ieee80211_queue_delayed_work(struct ieee80211_hw *hw, | ||
1965 | struct delayed_work *dwork, | ||
1966 | unsigned long delay); | ||
1967 | |||
1968 | /** | ||
1931 | * ieee80211_start_tx_ba_session - Start a tx Block Ack session. | 1969 | * ieee80211_start_tx_ba_session - Start a tx Block Ack session. |
1932 | * @hw: pointer as obtained from ieee80211_alloc_hw(). | 1970 | * @hw: pointer as obtained from ieee80211_alloc_hw(). |
1933 | * @ra: receiver address of the BA session recipient | 1971 | * @ra: receiver address of the BA session recipient |