ath10k: remove num_sends_allowed
The value provided by num_sends_allowed is now derived from CE source ringbuffer state. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
parent
2e761b5a52
commit
3efcb3b40c
|
@ -283,7 +283,7 @@ static int ath10k_ce_send_nolock(struct ath10k_ce_pipe *ce_state,
|
||||||
|
|
||||||
if (unlikely(CE_RING_DELTA(nentries_mask,
|
if (unlikely(CE_RING_DELTA(nentries_mask,
|
||||||
write_index, sw_index - 1) <= 0)) {
|
write_index, sw_index - 1) <= 0)) {
|
||||||
ret = -EIO;
|
ret = -ENOSR;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,6 +338,21 @@ int ath10k_ce_send(struct ath10k_ce_pipe *ce_state,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ath10k_ce_num_free_src_entries(struct ath10k_ce_pipe *pipe)
|
||||||
|
{
|
||||||
|
struct ath10k *ar = pipe->ar;
|
||||||
|
struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
|
||||||
|
int delta;
|
||||||
|
|
||||||
|
spin_lock_bh(&ar_pci->ce_lock);
|
||||||
|
delta = CE_RING_DELTA(pipe->src_ring->nentries_mask,
|
||||||
|
pipe->src_ring->write_index,
|
||||||
|
pipe->src_ring->sw_index - 1);
|
||||||
|
spin_unlock_bh(&ar_pci->ce_lock);
|
||||||
|
|
||||||
|
return delta;
|
||||||
|
}
|
||||||
|
|
||||||
int ath10k_ce_recv_buf_enqueue(struct ath10k_ce_pipe *ce_state,
|
int ath10k_ce_recv_buf_enqueue(struct ath10k_ce_pipe *ce_state,
|
||||||
void *per_recv_context,
|
void *per_recv_context,
|
||||||
u32 buffer)
|
u32 buffer)
|
||||||
|
|
|
@ -156,6 +156,7 @@ void ath10k_ce_send_cb_register(struct ath10k_ce_pipe *ce_state,
|
||||||
void (*send_cb)(struct ath10k_ce_pipe *),
|
void (*send_cb)(struct ath10k_ce_pipe *),
|
||||||
int disable_interrupts);
|
int disable_interrupts);
|
||||||
|
|
||||||
|
int ath10k_ce_num_free_src_entries(struct ath10k_ce_pipe *pipe);
|
||||||
|
|
||||||
/*==================Recv=======================*/
|
/*==================Recv=======================*/
|
||||||
|
|
||||||
|
|
|
@ -720,16 +720,6 @@ static int ath10k_pci_hif_send_head(struct ath10k *ar, u8 pipe_id,
|
||||||
"ath10k tx: data: ",
|
"ath10k tx: data: ",
|
||||||
nbuf->data, nbuf->len);
|
nbuf->data, nbuf->len);
|
||||||
|
|
||||||
/* Make sure we have resources to handle this request */
|
|
||||||
spin_lock_bh(&pipe_info->pipe_lock);
|
|
||||||
if (!pipe_info->num_sends_allowed) {
|
|
||||||
ath10k_warn("Pipe: %d is full\n", pipe_id);
|
|
||||||
spin_unlock_bh(&pipe_info->pipe_lock);
|
|
||||||
return -ENOSR;
|
|
||||||
}
|
|
||||||
pipe_info->num_sends_allowed--;
|
|
||||||
spin_unlock_bh(&pipe_info->pipe_lock);
|
|
||||||
|
|
||||||
ret = ath10k_ce_send(ce_hdl, nbuf, skb_cb->paddr, len, transfer_id,
|
ret = ath10k_ce_send(ce_hdl, nbuf, skb_cb->paddr, len, transfer_id,
|
||||||
flags);
|
flags);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -741,14 +731,7 @@ static int ath10k_pci_hif_send_head(struct ath10k *ar, u8 pipe_id,
|
||||||
static u16 ath10k_pci_hif_get_free_queue_number(struct ath10k *ar, u8 pipe)
|
static u16 ath10k_pci_hif_get_free_queue_number(struct ath10k *ar, u8 pipe)
|
||||||
{
|
{
|
||||||
struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
|
struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
|
||||||
struct ath10k_pci_pipe *pipe_info = &(ar_pci->pipe_info[pipe]);
|
return ath10k_ce_num_free_src_entries(ar_pci->pipe_info[pipe].ce_hdl);
|
||||||
int ret;
|
|
||||||
|
|
||||||
spin_lock_bh(&pipe_info->pipe_lock);
|
|
||||||
ret = pipe_info->num_sends_allowed;
|
|
||||||
spin_unlock_bh(&pipe_info->pipe_lock);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ath10k_pci_hif_dump_area(struct ath10k *ar)
|
static void ath10k_pci_hif_dump_area(struct ath10k *ar)
|
||||||
|
@ -863,7 +846,6 @@ static int ath10k_pci_start_ce(struct ath10k *ar)
|
||||||
ath10k_pci_ce_send_done,
|
ath10k_pci_ce_send_done,
|
||||||
disable_interrupts);
|
disable_interrupts);
|
||||||
completions += attr->src_nentries;
|
completions += attr->src_nentries;
|
||||||
pipe_info->num_sends_allowed = attr->src_nentries - 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attr->dest_nentries) {
|
if (attr->dest_nentries) {
|
||||||
|
@ -1033,7 +1015,6 @@ static void ath10k_pci_process_ce(struct ath10k *ar)
|
||||||
*/
|
*/
|
||||||
spin_lock_bh(&compl->pipe_info->pipe_lock);
|
spin_lock_bh(&compl->pipe_info->pipe_lock);
|
||||||
list_add_tail(&compl->list, &compl->pipe_info->compl_free);
|
list_add_tail(&compl->list, &compl->pipe_info->compl_free);
|
||||||
compl->pipe_info->num_sends_allowed += send_done;
|
|
||||||
spin_unlock_bh(&compl->pipe_info->pipe_lock);
|
spin_unlock_bh(&compl->pipe_info->pipe_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -178,9 +178,6 @@ struct ath10k_pci_pipe {
|
||||||
/* List of free CE completion slots */
|
/* List of free CE completion slots */
|
||||||
struct list_head compl_free;
|
struct list_head compl_free;
|
||||||
|
|
||||||
/* Limit the number of outstanding send requests. */
|
|
||||||
int num_sends_allowed;
|
|
||||||
|
|
||||||
struct ath10k_pci *ar_pci;
|
struct ath10k_pci *ar_pci;
|
||||||
struct tasklet_struct intr;
|
struct tasklet_struct intr;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue