Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5df6e131 authored by Erik Stromdahl's avatar Erik Stromdahl Committed by Kalle Valo
Browse files

ath10k: add inlined wrappers for htt tx ops



These wrappers makes the HTT ops align better with the HIF ops
(where similar wrappers are used).

It also makes it easier for a target to have unsupported ops
(by letting the corresponding function pointer be NULL).

Signed-off-by: default avatarErik Stromdahl <erik.stromdahl@gmail.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent c8489668
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -257,11 +257,11 @@ int ath10k_htt_setup(struct ath10k_htt *htt)
		return status;
	}

	status = htt->tx_ops->htt_send_frag_desc_bank_cfg(htt);
	status = ath10k_htt_send_frag_desc_bank_cfg(htt);
	if (status)
		return status;

	status = htt->tx_ops->htt_send_rx_ring_cfg(htt);
	status = ath10k_htt_send_rx_ring_cfg(htt);
	if (status) {
		ath10k_warn(ar, "failed to setup rx ring: %d\n",
			    status);
+51 −0
Original line number Diff line number Diff line
@@ -1856,6 +1856,57 @@ struct ath10k_htt_tx_ops {
	void (*htt_free_txbuff)(struct ath10k_htt *htt);
};

static inline int ath10k_htt_send_rx_ring_cfg(struct ath10k_htt *htt)
{
	if (!htt->tx_ops->htt_send_rx_ring_cfg)
		return -EOPNOTSUPP;

	return htt->tx_ops->htt_send_rx_ring_cfg(htt);
}

static inline int ath10k_htt_send_frag_desc_bank_cfg(struct ath10k_htt *htt)
{
	if (!htt->tx_ops->htt_send_frag_desc_bank_cfg)
		return -EOPNOTSUPP;

	return htt->tx_ops->htt_send_frag_desc_bank_cfg(htt);
}

static inline int ath10k_htt_alloc_frag_desc(struct ath10k_htt *htt)
{
	if (!htt->tx_ops->htt_alloc_frag_desc)
		return -EOPNOTSUPP;

	return htt->tx_ops->htt_alloc_frag_desc(htt);
}

static inline void ath10k_htt_free_frag_desc(struct ath10k_htt *htt)
{
	if (htt->tx_ops->htt_free_frag_desc)
		htt->tx_ops->htt_free_frag_desc(htt);
}

static inline int ath10k_htt_tx(struct ath10k_htt *htt,
				enum ath10k_hw_txrx_mode txmode,
				struct sk_buff *msdu)
{
	return htt->tx_ops->htt_tx(htt, txmode, msdu);
}

static inline int ath10k_htt_alloc_txbuff(struct ath10k_htt *htt)
{
	if (!htt->tx_ops->htt_alloc_txbuff)
		return -EOPNOTSUPP;

	return htt->tx_ops->htt_alloc_txbuff(htt);
}

static inline void ath10k_htt_free_txbuff(struct ath10k_htt *htt)
{
	if (htt->tx_ops->htt_free_txbuff)
		htt->tx_ops->htt_free_txbuff(htt);
}

struct ath10k_htt_rx_ops {
	size_t (*htt_get_rx_ring_size)(struct ath10k_htt *htt);
	void (*htt_config_paddrs_ring)(struct ath10k_htt *htt, void *vaddr);
+6 −6
Original line number Diff line number Diff line
@@ -443,13 +443,13 @@ static int ath10k_htt_tx_alloc_buf(struct ath10k_htt *htt)
	struct ath10k *ar = htt->ar;
	int ret;

	ret = htt->tx_ops->htt_alloc_txbuff(htt);
	ret = ath10k_htt_alloc_txbuff(htt);
	if (ret) {
		ath10k_err(ar, "failed to alloc cont tx buffer: %d\n", ret);
		return ret;
	}

	ret = htt->tx_ops->htt_alloc_frag_desc(htt);
	ret = ath10k_htt_alloc_frag_desc(htt);
	if (ret) {
		ath10k_err(ar, "failed to alloc cont frag desc: %d\n", ret);
		goto free_txbuf;
@@ -473,10 +473,10 @@ static int ath10k_htt_tx_alloc_buf(struct ath10k_htt *htt)
	ath10k_htt_tx_free_txq(htt);

free_frag_desc:
	htt->tx_ops->htt_free_frag_desc(htt);
	ath10k_htt_free_frag_desc(htt);

free_txbuf:
	htt->tx_ops->htt_free_txbuff(htt);
	ath10k_htt_free_txbuff(htt);

	return ret;
}
@@ -530,9 +530,9 @@ void ath10k_htt_tx_destroy(struct ath10k_htt *htt)
	if (!htt->tx_mem_allocated)
		return;

	htt->tx_ops->htt_free_txbuff(htt);
	ath10k_htt_free_txbuff(htt);
	ath10k_htt_tx_free_txq(htt);
	htt->tx_ops->htt_free_frag_desc(htt);
	ath10k_htt_free_frag_desc(htt);
	ath10k_htt_tx_free_txdone_fifo(htt);
	htt->tx_mem_allocated = false;
}
+1 −1
Original line number Diff line number Diff line
@@ -3598,7 +3598,7 @@ static int ath10k_mac_tx_submit(struct ath10k *ar,

	switch (txpath) {
	case ATH10K_MAC_TX_HTT:
		ret = htt->tx_ops->htt_tx(htt, txmode, skb);
		ret = ath10k_htt_tx(htt, txmode, skb);
		break;
	case ATH10K_MAC_TX_HTT_MGMT:
		ret = ath10k_htt_mgmt_tx(htt, skb);