|
@@ -101,8 +101,9 @@
|
|
|
* Drivers indicate that they use this model by implementing the .wake_tx_queue
|
|
|
* driver operation.
|
|
|
*
|
|
|
- * Intermediate queues (struct ieee80211_txq) are kept per-sta per-tid, with a
|
|
|
- * single per-vif queue for multicast data frames.
|
|
|
+ * Intermediate queues (struct ieee80211_txq) are kept per-sta per-tid, with
|
|
|
+ * another per-sta for non-data/non-mgmt and bufferable management frames, and
|
|
|
+ * a single per-vif queue for multicast data frames.
|
|
|
*
|
|
|
* The driver is expected to initialize its private per-queue data for stations
|
|
|
* and interfaces in the .add_interface and .sta_add ops.
|
|
@@ -1843,7 +1844,8 @@ struct ieee80211_sta_rates {
|
|
|
* unlimited.
|
|
|
* @support_p2p_ps: indicates whether the STA supports P2P PS mechanism or not.
|
|
|
* @max_rc_amsdu_len: Maximum A-MSDU size in bytes recommended by rate control.
|
|
|
- * @txq: per-TID data TX queues (if driver uses the TXQ abstraction)
|
|
|
+ * @txq: per-TID data TX queues (if driver uses the TXQ abstraction); note that
|
|
|
+ * the last entry (%IEEE80211_NUM_TIDS) is used for non-data frames
|
|
|
*/
|
|
|
struct ieee80211_sta {
|
|
|
u32 supp_rates[NUM_NL80211_BANDS];
|
|
@@ -1884,7 +1886,7 @@ struct ieee80211_sta {
|
|
|
bool support_p2p_ps;
|
|
|
u16 max_rc_amsdu_len;
|
|
|
|
|
|
- struct ieee80211_txq *txq[IEEE80211_NUM_TIDS];
|
|
|
+ struct ieee80211_txq *txq[IEEE80211_NUM_TIDS + 1];
|
|
|
|
|
|
/* must be last */
|
|
|
u8 drv_priv[0] __aligned(sizeof(void *));
|
|
@@ -1918,7 +1920,8 @@ struct ieee80211_tx_control {
|
|
|
*
|
|
|
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
|
|
* @sta: station table entry, %NULL for per-vif queue
|
|
|
- * @tid: the TID for this queue (unused for per-vif queue)
|
|
|
+ * @tid: the TID for this queue (unused for per-vif queue),
|
|
|
+ * %IEEE80211_NUM_TIDS for non-data (if enabled)
|
|
|
* @ac: the AC for this queue
|
|
|
* @drv_priv: driver private area, sized by hw->txq_data_size
|
|
|
*
|
|
@@ -2131,6 +2134,9 @@ struct ieee80211_txq {
|
|
|
* @IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP: The driver (or firmware) doesn't
|
|
|
* support QoS NDP for AP probing - that's most likely a driver bug.
|
|
|
*
|
|
|
+ * @IEEE80211_HW_BUFF_MMPDU_TXQ: use the TXQ for bufferable MMPDUs, this of
|
|
|
+ * course requires the driver to use TXQs to start with.
|
|
|
+ *
|
|
|
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
|
|
|
*/
|
|
|
enum ieee80211_hw_flags {
|
|
@@ -2176,6 +2182,7 @@ enum ieee80211_hw_flags {
|
|
|
IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA,
|
|
|
IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP,
|
|
|
IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP,
|
|
|
+ IEEE80211_HW_BUFF_MMPDU_TXQ,
|
|
|
|
|
|
/* keep last, obviously */
|
|
|
NUM_IEEE80211_HW_FLAGS
|