wifi: iwlwifi: queue: move iwl_txq_gen2_set_tb() up
We need this earlier in the file next, move it up to have an easier to read change, since this moves other things in the diff git generates by default. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Link: https://lore.kernel.org/r/20230816104355.c6d798b600bb.I9b891ee3d3dc67822a28e44941409f5b7cb637cf@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
c522948a47
commit
80fa8377f5
|
@ -84,6 +84,41 @@ static u8 iwl_txq_gen2_get_num_tbs(struct iwl_trans *trans,
|
||||||
return le16_to_cpu(tfd->num_tbs) & 0x1f;
|
return le16_to_cpu(tfd->num_tbs) & 0x1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int iwl_txq_gen2_set_tb(struct iwl_trans *trans, struct iwl_tfh_tfd *tfd,
|
||||||
|
dma_addr_t addr, u16 len)
|
||||||
|
{
|
||||||
|
int idx = iwl_txq_gen2_get_num_tbs(trans, tfd);
|
||||||
|
struct iwl_tfh_tb *tb;
|
||||||
|
|
||||||
|
/* Only WARN here so we know about the issue, but we mess up our
|
||||||
|
* unmap path because not every place currently checks for errors
|
||||||
|
* returned from this function - it can only return an error if
|
||||||
|
* there's no more space, and so when we know there is enough we
|
||||||
|
* don't always check ...
|
||||||
|
*/
|
||||||
|
WARN(iwl_txq_crosses_4g_boundary(addr, len),
|
||||||
|
"possible DMA problem with iova:0x%llx, len:%d\n",
|
||||||
|
(unsigned long long)addr, len);
|
||||||
|
|
||||||
|
if (WARN_ON(idx >= IWL_TFH_NUM_TBS))
|
||||||
|
return -EINVAL;
|
||||||
|
tb = &tfd->tbs[idx];
|
||||||
|
|
||||||
|
/* Each TFD can point to a maximum max_tbs Tx buffers */
|
||||||
|
if (le16_to_cpu(tfd->num_tbs) >= trans->txqs.tfd.max_tbs) {
|
||||||
|
IWL_ERR(trans, "Error can not send more than %d chunks\n",
|
||||||
|
trans->txqs.tfd.max_tbs);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
put_unaligned_le64(addr, &tb->addr);
|
||||||
|
tb->tb_len = cpu_to_le16(len);
|
||||||
|
|
||||||
|
tfd->num_tbs = cpu_to_le16(idx + 1);
|
||||||
|
|
||||||
|
return idx;
|
||||||
|
}
|
||||||
|
|
||||||
void iwl_txq_gen2_tfd_unmap(struct iwl_trans *trans, struct iwl_cmd_meta *meta,
|
void iwl_txq_gen2_tfd_unmap(struct iwl_trans *trans, struct iwl_cmd_meta *meta,
|
||||||
struct iwl_tfh_tfd *tfd)
|
struct iwl_tfh_tfd *tfd)
|
||||||
{
|
{
|
||||||
|
@ -142,42 +177,6 @@ void iwl_txq_gen2_free_tfd(struct iwl_trans *trans, struct iwl_txq *txq)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int iwl_txq_gen2_set_tb(struct iwl_trans *trans, struct iwl_tfh_tfd *tfd,
|
|
||||||
dma_addr_t addr, u16 len)
|
|
||||||
{
|
|
||||||
int idx = iwl_txq_gen2_get_num_tbs(trans, tfd);
|
|
||||||
struct iwl_tfh_tb *tb;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Only WARN here so we know about the issue, but we mess up our
|
|
||||||
* unmap path because not every place currently checks for errors
|
|
||||||
* returned from this function - it can only return an error if
|
|
||||||
* there's no more space, and so when we know there is enough we
|
|
||||||
* don't always check ...
|
|
||||||
*/
|
|
||||||
WARN(iwl_txq_crosses_4g_boundary(addr, len),
|
|
||||||
"possible DMA problem with iova:0x%llx, len:%d\n",
|
|
||||||
(unsigned long long)addr, len);
|
|
||||||
|
|
||||||
if (WARN_ON(idx >= IWL_TFH_NUM_TBS))
|
|
||||||
return -EINVAL;
|
|
||||||
tb = &tfd->tbs[idx];
|
|
||||||
|
|
||||||
/* Each TFD can point to a maximum max_tbs Tx buffers */
|
|
||||||
if (le16_to_cpu(tfd->num_tbs) >= trans->txqs.tfd.max_tbs) {
|
|
||||||
IWL_ERR(trans, "Error can not send more than %d chunks\n",
|
|
||||||
trans->txqs.tfd.max_tbs);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
put_unaligned_le64(addr, &tb->addr);
|
|
||||||
tb->tb_len = cpu_to_le16(len);
|
|
||||||
|
|
||||||
tfd->num_tbs = cpu_to_le16(idx + 1);
|
|
||||||
|
|
||||||
return idx;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct page *get_workaround_page(struct iwl_trans *trans,
|
static struct page *get_workaround_page(struct iwl_trans *trans,
|
||||||
struct sk_buff *skb)
|
struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue