forked from Minki/linux
iwlwifi: introduce trans API to get byte count table
In future HW the byte count table address will be configured by ucode per queue. Add API to expose the byte count table to the opmode Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
db06f04daf
commit
8aacf4b73f
@ -645,6 +645,8 @@ struct iwl_trans_ops {
|
|||||||
void (*txq_set_shared_mode)(struct iwl_trans *trans, u32 txq_id,
|
void (*txq_set_shared_mode)(struct iwl_trans *trans, u32 txq_id,
|
||||||
bool shared);
|
bool shared);
|
||||||
|
|
||||||
|
dma_addr_t (*get_txq_byte_table)(struct iwl_trans *trans, int txq_id);
|
||||||
|
|
||||||
int (*wait_tx_queue_empty)(struct iwl_trans *trans, u32 txq_bm);
|
int (*wait_tx_queue_empty)(struct iwl_trans *trans, u32 txq_bm);
|
||||||
void (*freeze_txq_timer)(struct iwl_trans *trans, unsigned long txqs,
|
void (*freeze_txq_timer)(struct iwl_trans *trans, unsigned long txqs,
|
||||||
bool freeze);
|
bool freeze);
|
||||||
@ -1069,6 +1071,15 @@ static inline void iwl_trans_txq_set_shared_mode(struct iwl_trans *trans,
|
|||||||
trans->ops->txq_set_shared_mode(trans, queue, shared_mode);
|
trans->ops->txq_set_shared_mode(trans, queue, shared_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline dma_addr_t iwl_trans_get_txq_byte_table(struct iwl_trans *trans,
|
||||||
|
int queue)
|
||||||
|
{
|
||||||
|
/* we should never be called if the trans doesn't support it */
|
||||||
|
BUG_ON(!trans->ops->get_txq_byte_table);
|
||||||
|
|
||||||
|
return trans->ops->get_txq_byte_table(trans, queue);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void iwl_trans_txq_enable(struct iwl_trans *trans, int queue,
|
static inline void iwl_trans_txq_enable(struct iwl_trans *trans, int queue,
|
||||||
int fifo, int sta_id, int tid,
|
int fifo, int sta_id, int tid,
|
||||||
int frame_limit, u16 ssn,
|
int frame_limit, u16 ssn,
|
||||||
|
@ -476,6 +476,7 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int queue,
|
|||||||
bool configure_scd);
|
bool configure_scd);
|
||||||
void iwl_trans_pcie_txq_set_shared_mode(struct iwl_trans *trans, u32 txq_id,
|
void iwl_trans_pcie_txq_set_shared_mode(struct iwl_trans *trans, u32 txq_id,
|
||||||
bool shared_mode);
|
bool shared_mode);
|
||||||
|
dma_addr_t iwl_trans_pcie_get_txq_byte_table(struct iwl_trans *trans, int txq);
|
||||||
void iwl_trans_pcie_log_scd_error(struct iwl_trans *trans,
|
void iwl_trans_pcie_log_scd_error(struct iwl_trans *trans,
|
||||||
struct iwl_txq *txq);
|
struct iwl_txq *txq);
|
||||||
int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
|
int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
|
||||||
|
@ -2803,6 +2803,8 @@ static const struct iwl_trans_ops trans_ops_pcie = {
|
|||||||
.txq_disable = iwl_trans_pcie_txq_disable,
|
.txq_disable = iwl_trans_pcie_txq_disable,
|
||||||
.txq_enable = iwl_trans_pcie_txq_enable,
|
.txq_enable = iwl_trans_pcie_txq_enable,
|
||||||
|
|
||||||
|
.get_txq_byte_table = iwl_trans_pcie_get_txq_byte_table,
|
||||||
|
|
||||||
.txq_set_shared_mode = iwl_trans_pcie_txq_set_shared_mode,
|
.txq_set_shared_mode = iwl_trans_pcie_txq_set_shared_mode,
|
||||||
|
|
||||||
.wait_tx_queue_empty = iwl_trans_pcie_wait_txq_empty,
|
.wait_tx_queue_empty = iwl_trans_pcie_wait_txq_empty,
|
||||||
|
@ -1352,6 +1352,14 @@ void iwl_trans_pcie_txq_set_shared_mode(struct iwl_trans *trans, u32 txq_id,
|
|||||||
txq->ampdu = !shared_mode;
|
txq->ampdu = !shared_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dma_addr_t iwl_trans_pcie_get_txq_byte_table(struct iwl_trans *trans, int txq)
|
||||||
|
{
|
||||||
|
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
|
||||||
|
|
||||||
|
return trans_pcie->scd_bc_tbls.dma +
|
||||||
|
txq * sizeof(struct iwlagn_scd_bc_tbl);
|
||||||
|
}
|
||||||
|
|
||||||
void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id,
|
void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id,
|
||||||
bool configure_scd)
|
bool configure_scd)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user