Commit 5369774c authored by Sara Sharon's avatar Sara Sharon Committed by Luca Coelho
Browse files

iwlwifi: add TX queue size parameter to TX queue allocation



As preparation for dynamic queue sizing, add a parameter
of the TX queue size to the dynamic queue allocation op
mode API.

Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent 01302f5b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -131,6 +131,7 @@ enum iwl_tx_queue_cfg_actions {
	TX_QUEUE_CFG_TFD_SHORT_FORMAT		= BIT(1),
};

#define IWL_DEFAULT_QUEUE_SIZE 256
/**
 * struct iwl_tx_queue_cfg_cmd - txq hw scheduler config command
 * @sta_id: station id
+4 −4
Original line number Diff line number Diff line
@@ -554,7 +554,7 @@ struct iwl_trans_ops {
	/* 22000 functions */
	int (*txq_alloc)(struct iwl_trans *trans,
			 struct iwl_tx_queue_cfg_cmd *cmd,
			 int cmd_id,
			 int cmd_id, int size,
			 unsigned int queue_wdg_timeout);
	void (*txq_free)(struct iwl_trans *trans, int queue);

@@ -952,8 +952,8 @@ iwl_trans_txq_free(struct iwl_trans *trans, int queue)
static inline int
iwl_trans_txq_alloc(struct iwl_trans *trans,
		    struct iwl_tx_queue_cfg_cmd *cmd,
		    int cmd_id,
		    unsigned int queue_wdg_timeout)
		    int cmd_id, int size,
		    unsigned int wdg_timeout)
{
	might_sleep();

@@ -965,7 +965,7 @@ iwl_trans_txq_alloc(struct iwl_trans *trans,
		return -EIO;
	}

	return trans->ops->txq_alloc(trans, cmd, cmd_id, queue_wdg_timeout);
	return trans->ops->txq_alloc(trans, cmd, cmd_id, size, wdg_timeout);
}

static inline void iwl_trans_txq_set_shared_mode(struct iwl_trans *trans,
+2 −1
Original line number Diff line number Diff line
@@ -733,7 +733,8 @@ int iwl_mvm_tvqm_enable_txq(struct iwl_mvm *mvm, int mac80211_queue,
	if (cmd.tid == IWL_MAX_TID_COUNT)
		cmd.tid = IWL_MGMT_TID;
	queue = iwl_trans_txq_alloc(mvm->trans, (void *)&cmd,
				    SCD_QUEUE_CFG, timeout);
				    SCD_QUEUE_CFG, IWL_DEFAULT_QUEUE_SIZE,
				    timeout);

	if (queue < 0) {
		IWL_DEBUG_TX_QUEUES(mvm,
+1 −1
Original line number Diff line number Diff line
@@ -819,7 +819,7 @@ int iwl_trans_pcie_gen2_start_fw(struct iwl_trans *trans,
void iwl_trans_pcie_gen2_fw_alive(struct iwl_trans *trans, u32 scd_addr);
int iwl_trans_pcie_dyn_txq_alloc(struct iwl_trans *trans,
				 struct iwl_tx_queue_cfg_cmd *cmd,
				 int cmd_id,
				 int cmd_id, int size,
				 unsigned int timeout);
void iwl_trans_pcie_dyn_txq_free(struct iwl_trans *trans, int queue);
int iwl_trans_pcie_gen2_tx(struct iwl_trans *trans, struct sk_buff *skb,
+1 −1
Original line number Diff line number Diff line
@@ -1041,7 +1041,7 @@ static void iwl_pcie_gen2_txq_free(struct iwl_trans *trans, int txq_id)

int iwl_trans_pcie_dyn_txq_alloc(struct iwl_trans *trans,
				 struct iwl_tx_queue_cfg_cmd *cmd,
				 int cmd_id,
				 int cmd_id, int size,
				 unsigned int timeout)
{
	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);