]> err.no Git - linux-2.6/blobdiff - include/net/mac80211.h
[MAC80211]: remove IEEE80211_HW_DATA_NULLFUNC_ACK
[linux-2.6] / include / net / mac80211.h
index c34fd9a6160a8ce2a67689728a59368277a89ccb..427ff6d36265dc778015f4231666e759ea9030b2 100644 (file)
@@ -192,9 +192,15 @@ struct ieee80211_tx_control {
 #define IEEE80211_TXCTL_FIRST_FRAGMENT (1<<8) /* this is a first fragment of
                                                * the frame */
 #define IEEE80211_TXCTL_TKIP_NEW_PHASE1_KEY (1<<9)
+#define IEEE80211_TXCTL_LONG_RETRY_LIMIT (1<<10) /* this frame should be send
+                                                 * using the through
+                                                 * set_retry_limit configured
+                                                 * long retry value */
        u32 flags;                             /* tx control flags defined
                                                * above */
-       u8 retry_limit;         /* 1 = only first attempt, 2 = one retry, .. */
+       u8 retry_limit;         /* 1 = only first attempt, 2 = one retry, ..
+                                * This could be used when set_retry_limit
+                                * is not implemented by the driver */
        u8 power_level;         /* per-packet transmit power level, in dBm */
        u8 antenna_sel_tx;      /* 0 = default/diversity, 1 = Ant0, 2 = Ant1 */
        s8 key_idx;             /* -1 = do not encrypt, >= 0 keyidx from
@@ -457,14 +463,13 @@ struct ieee80211_hw {
 
        /* TODO: frame_type 802.11/802.3, sw_encryption requirements */
 
-       /* Some wireless LAN chipsets generate beacons in the hardware/firmware
-        * and others rely on host generated beacons. This option is used to
-        * configure the upper layer IEEE 802.11 module to generate beacons.
-        * The low-level driver can use ieee80211_beacon_get() to fetch the
-        * next beacon frame. */
-#define IEEE80211_HW_HOST_GEN_BEACON (1<<0)
+/* hole at 0 */
 
-       /* The device needs to be supplied with a beacon template only. */
+       /*
+        * The device only needs to be supplied with a beacon template.
+        * If you need the host to generate each beacon then don't use
+        * this flag and use ieee80211_beacon_get().
+        */
 #define IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE (1<<1)
 
        /* Some devices handle decryption internally and do not
@@ -486,8 +491,7 @@ struct ieee80211_hw {
 
 #define IEEE80211_HW_WEP_INCLUDE_IV (1<<5)
 
-       /* will data nullfunc frames get proper TX status callback */
-#define IEEE80211_HW_DATA_NULLFUNC_ACK (1<<6)
+/* hole at 6 */
 
        /* Force software encryption for TKIP packets if WMM is enabled. */
 #define IEEE80211_HW_NO_TKIP_WMM_HWACCEL (1<<7)
@@ -562,9 +566,6 @@ struct ieee80211_ops {
        int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb,
                  struct ieee80211_tx_control *control);
 
-       /* Handler for performing hardware reset. */
-       int (*reset)(struct ieee80211_hw *hw);
-
        /* Handler that is called when any netdevice attached to the hardware
         * device is set UP for the first time. This can be used, e.g., to
         * enable interrupts and beacon sending. */
@@ -626,8 +627,7 @@ struct ieee80211_ops {
         * station hwaddr for individual keys. aid of the station is given
         * to help low-level driver in selecting which key->hw_key_idx to use
         * for this key. TX control data will use the hw_key_idx selected by
-        * the low-level driver.
-        * Must be atomic. */
+        * the low-level driver. */
        int (*set_key)(struct ieee80211_hw *hw, set_key_cmd cmd,
                       u8 *addr, struct ieee80211_key_conf *key, int aid);
 
@@ -692,6 +692,14 @@ struct ieee80211_ops {
        void (*sta_table_notification)(struct ieee80211_hw *hw,
                                       int num_sta);
 
+       /* Handle ERP IE change notifications. Must be atomic. */
+       void (*erp_ie_changed)(struct ieee80211_hw *hw, u8 changes,
+                              int cts_protection, int preamble);
+
+       /* Flags for the erp_ie_changed changes parameter */
+#define IEEE80211_ERP_CHANGE_PROTECTION (1<<0) /* protection flag changed */
+#define IEEE80211_ERP_CHANGE_PREAMBLE (1<<1) /* barker preamble mode changed */
+
        /* Configure TX queue parameters (EDCF (aifs, cw_min, cw_max),
         * bursting) for a hardware TX queue.
         * queue = IEEE80211_TX_QUEUE_*.
@@ -830,6 +838,7 @@ struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw,
 /**
  * ieee80211_rts_get - RTS frame generation function
  * @hw: pointer obtained from ieee80211_alloc_hw().
+ * @if_id: interface ID from &struct ieee80211_if_init_conf.
  * @frame: pointer to the frame that is going to be protected by the RTS.
  * @frame_len: the frame length (in octets).
  * @frame_txctl: &struct ieee80211_tx_control of the frame.
@@ -840,7 +849,7 @@ struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw,
  * the next RTS frame from the 802.11 code. The low-level is responsible
  * for calling this function before and RTS frame is needed.
  */
-void ieee80211_rts_get(struct ieee80211_hw *hw,
+void ieee80211_rts_get(struct ieee80211_hw *hw, int if_id,
                       const void *frame, size_t frame_len,
                       const struct ieee80211_tx_control *frame_txctl,
                       struct ieee80211_rts *rts);
@@ -848,6 +857,7 @@ void ieee80211_rts_get(struct ieee80211_hw *hw,
 /**
  * ieee80211_rts_duration - Get the duration field for an RTS frame
  * @hw: pointer obtained from ieee80211_alloc_hw().
+ * @if_id: interface ID from &struct ieee80211_if_init_conf.
  * @frame_len: the length of the frame that is going to be protected by the RTS.
  * @frame_txctl: &struct ieee80211_tx_control of the frame.
  *
@@ -855,13 +865,14 @@ void ieee80211_rts_get(struct ieee80211_hw *hw,
  * the duration field, the low-level driver uses this function to receive
  * the duration field value in little-endian byteorder.
  */
-__le16 ieee80211_rts_duration(struct ieee80211_hw *hw,
+__le16 ieee80211_rts_duration(struct ieee80211_hw *hw, int if_id,
                              size_t frame_len,
                              const struct ieee80211_tx_control *frame_txctl);
 
 /**
  * ieee80211_ctstoself_get - CTS-to-self frame generation function
  * @hw: pointer obtained from ieee80211_alloc_hw().
+ * @if_id: interface ID from &struct ieee80211_if_init_conf.
  * @frame: pointer to the frame that is going to be protected by the CTS-to-self.
  * @frame_len: the frame length (in octets).
  * @frame_txctl: &struct ieee80211_tx_control of the frame.
@@ -872,7 +883,7 @@ __le16 ieee80211_rts_duration(struct ieee80211_hw *hw,
  * the next CTS-to-self frame from the 802.11 code. The low-level is responsible
  * for calling this function before and CTS-to-self frame is needed.
  */
-void ieee80211_ctstoself_get(struct ieee80211_hw *hw,
+void ieee80211_ctstoself_get(struct ieee80211_hw *hw, int if_id,
                             const void *frame, size_t frame_len,
                             const struct ieee80211_tx_control *frame_txctl,
                             struct ieee80211_cts *cts);
@@ -880,6 +891,7 @@ void ieee80211_ctstoself_get(struct ieee80211_hw *hw,
 /**
  * ieee80211_ctstoself_duration - Get the duration field for a CTS-to-self frame
  * @hw: pointer obtained from ieee80211_alloc_hw().
+ * @if_id: interface ID from &struct ieee80211_if_init_conf.
  * @frame_len: the length of the frame that is going to be protected by the CTS-to-self.
  * @frame_txctl: &struct ieee80211_tx_control of the frame.
  *
@@ -887,20 +899,21 @@ void ieee80211_ctstoself_get(struct ieee80211_hw *hw,
  * the duration field, the low-level driver uses this function to receive
  * the duration field value in little-endian byteorder.
  */
-__le16 ieee80211_ctstoself_duration(struct ieee80211_hw *hw,
+__le16 ieee80211_ctstoself_duration(struct ieee80211_hw *hw, int if_id,
                                    size_t frame_len,
                                    const struct ieee80211_tx_control *frame_txctl);
 
 /**
  * ieee80211_generic_frame_duration - Calculate the duration field for a frame
  * @hw: pointer obtained from ieee80211_alloc_hw().
+ * @if_id: interface ID from &struct ieee80211_if_init_conf.
  * @frame_len: the length of the frame.
  * @rate: the rate (in 100kbps) at which the frame is going to be transmitted.
  *
  * Calculate the duration field of some generic frame, given its
  * length and transmission rate (in 100kbps).
  */
-__le16 ieee80211_generic_frame_duration(struct ieee80211_hw *hw,
+__le16 ieee80211_generic_frame_duration(struct ieee80211_hw *hw, int if_id,
                                        size_t frame_len,
                                        int rate);