|
@@ -1743,19 +1743,45 @@ void ieee80211_tx_status_irqsafe(struct ieee80211_hw *hw,
|
|
|
struct sk_buff *skb);
|
|
|
|
|
|
/**
|
|
|
- * ieee80211_beacon_get - beacon generation function
|
|
|
+ * ieee80211_beacon_get_tim - beacon generation function
|
|
|
* @hw: pointer obtained from ieee80211_alloc_hw().
|
|
|
* @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf.
|
|
|
+ * @tim_offset: pointer to variable that will receive the TIM IE offset.
|
|
|
+ * Set to 0 if invalid (in non-AP modes).
|
|
|
+ * @tim_length: pointer to variable that will receive the TIM IE length,
|
|
|
+ * (including the ID and length bytes!).
|
|
|
+ * Set to 0 if invalid (in non-AP modes).
|
|
|
+ *
|
|
|
+ * If the driver implements beaconing modes, it must use this function to
|
|
|
+ * obtain the beacon frame/template.
|
|
|
*
|
|
|
* If the beacon frames are generated by the host system (i.e., not in
|
|
|
- * hardware/firmware), the low-level driver uses this function to receive
|
|
|
- * the next beacon frame from the 802.11 code. The low-level is responsible
|
|
|
- * for calling this function before beacon data is needed (e.g., based on
|
|
|
- * hardware interrupt). Returned skb is used only once and low-level driver
|
|
|
- * is responsible for freeing it.
|
|
|
+ * hardware/firmware), the driver uses this function to get each beacon
|
|
|
+ * frame from mac80211 -- it is responsible for calling this function
|
|
|
+ * before the beacon is needed (e.g. based on hardware interrupt).
|
|
|
+ *
|
|
|
+ * If the beacon frames are generated by the device, then the driver
|
|
|
+ * must use the returned beacon as the template and change the TIM IE
|
|
|
+ * according to the current DTIM parameters/TIM bitmap.
|
|
|
+ *
|
|
|
+ * The driver is responsible for freeing the returned skb.
|
|
|
+ */
|
|
|
+struct sk_buff *ieee80211_beacon_get_tim(struct ieee80211_hw *hw,
|
|
|
+ struct ieee80211_vif *vif,
|
|
|
+ u16 *tim_offset, u16 *tim_length);
|
|
|
+
|
|
|
+/**
|
|
|
+ * ieee80211_beacon_get - beacon generation function
|
|
|
+ * @hw: pointer obtained from ieee80211_alloc_hw().
|
|
|
+ * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf.
|
|
|
+ *
|
|
|
+ * See ieee80211_beacon_get_tim().
|
|
|
*/
|
|
|
-struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw,
|
|
|
- struct ieee80211_vif *vif);
|
|
|
+static inline struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw,
|
|
|
+ struct ieee80211_vif *vif)
|
|
|
+{
|
|
|
+ return ieee80211_beacon_get_tim(hw, vif, NULL, NULL);
|
|
|
+}
|
|
|
|
|
|
/**
|
|
|
* ieee80211_rts_get - RTS frame generation function
|