iwlwifi: transport: track number of allocated queues
authorJohannes Berg <johannes.berg@intel.com>
Fri, 22 May 2015 09:33:12 +0000 (11:33 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Mon, 5 Oct 2015 11:33:27 +0000 (14:33 +0300)
As the transport will decide how many queues (and MSI-X vectors)
to allocate, add a field to indicate that to the op-mode so it
can size/allocate its own data structures appropriately.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/iwlwifi/iwl-trans.c
drivers/net/wireless/iwlwifi/iwl-trans.h

index 9f8bcef..7161096 100644 (file)
@@ -87,6 +87,7 @@ struct iwl_trans *iwl_trans_alloc(unsigned int priv_size,
        trans->cfg = cfg;
        trans->ops = ops;
        trans->dev_cmd_headroom = dev_cmd_headroom;
+       trans->num_rx_queues = 1;
 
        snprintf(trans->dev_cmd_pool_name, sizeof(trans->dev_cmd_pool_name),
                 "iwl_cmd_pool:%s", dev_name(trans->dev));
index c829c50..bb51b6f 100644 (file)
@@ -386,6 +386,7 @@ static inline void iwl_free_rxb(struct iwl_rx_cmd_buffer *r)
 #define IWL_MAX_HW_QUEUES              32
 #define IWL_MAX_TID_COUNT      8
 #define IWL_FRAME_LIMIT        64
+#define IWL_MAX_RX_HW_QUEUES   16
 
 /**
  * enum iwl_wowlan_status - WoWLAN image/device status
@@ -654,6 +655,8 @@ enum iwl_d0i3_mode {
  * @hw_id_str: a string with info about HW ID. Set during transport allocation.
  * @pm_support: set to true in start_hw if link pm is supported
  * @ltr_enabled: set to true if the LTR is enabled
+ * @num_rx_queues: number of RX queues allocated by the transport;
+ *     the transport must set this before calling iwl_drv_start()
  * @dev_cmd_pool: pool for Tx cmd allocation - for internal use only.
  *     The user should use iwl_trans_{alloc,free}_tx_cmd.
  * @dev_cmd_headroom: room needed for the transport's private use before the
@@ -693,6 +696,8 @@ struct iwl_trans {
        bool pm_support;
        bool ltr_enabled;
 
+       u8 num_rx_queues;
+
        /* The following fields are internal only */
        struct kmem_cache *dev_cmd_pool;
        size_t dev_cmd_headroom;