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

Commit d84a512d authored by Michal Kazior's avatar Michal Kazior Committed by Kalle Valo
Browse files

ath10k: remove transfer_id from ath10k_hif_cb::tx_completion



Pass the eid argument via skbuff control buffer.
This will make it possible to work with queues of
HTC event buffers.

Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 5f07ea4c
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -79,6 +79,7 @@ static inline const char *ath10k_bus_str(enum ath10k_bus bus)


struct ath10k_skb_cb {
struct ath10k_skb_cb {
	dma_addr_t paddr;
	dma_addr_t paddr;
	u8 eid;
	u8 vdev_id;
	u8 vdev_id;


	struct {
	struct {
+1 −2
Original line number Original line Diff line number Diff line
@@ -32,8 +32,7 @@ struct ath10k_hif_sg_item {


struct ath10k_hif_cb {
struct ath10k_hif_cb {
	int (*tx_completion)(struct ath10k *ar,
	int (*tx_completion)(struct ath10k *ar,
			     struct sk_buff *wbuf,
			     struct sk_buff *wbuf);
			     unsigned transfer_id);
	int (*rx_completion)(struct ath10k *ar,
	int (*rx_completion)(struct ath10k *ar,
			     struct sk_buff *wbuf);
			     struct sk_buff *wbuf);
};
};
+7 −3
Original line number Original line Diff line number Diff line
@@ -160,6 +160,7 @@ int ath10k_htc_send(struct ath10k_htc *htc,


	ath10k_htc_prepare_tx_skb(ep, skb);
	ath10k_htc_prepare_tx_skb(ep, skb);


	skb_cb->eid = eid;
	skb_cb->paddr = dma_map_single(dev, skb->data, skb->len, DMA_TO_DEVICE);
	skb_cb->paddr = dma_map_single(dev, skb->data, skb->len, DMA_TO_DEVICE);
	ret = dma_mapping_error(dev, skb_cb->paddr);
	ret = dma_mapping_error(dev, skb_cb->paddr);
	if (ret)
	if (ret)
@@ -197,15 +198,18 @@ int ath10k_htc_send(struct ath10k_htc *htc,
}
}


static int ath10k_htc_tx_completion_handler(struct ath10k *ar,
static int ath10k_htc_tx_completion_handler(struct ath10k *ar,
					    struct sk_buff *skb,
					    struct sk_buff *skb)
					    unsigned int eid)
{
{
	struct ath10k_htc *htc = &ar->htc;
	struct ath10k_htc *htc = &ar->htc;
	struct ath10k_htc_ep *ep = &htc->endpoint[eid];
	struct ath10k_skb_cb *skb_cb;
	struct ath10k_htc_ep *ep;


	if (WARN_ON_ONCE(!skb))
	if (WARN_ON_ONCE(!skb))
		return 0;
		return 0;


	skb_cb = ATH10K_SKB_CB(skb);
	ep = &htc->endpoint[skb_cb->eid];

	ath10k_htc_notify_tx_completion(ep, skb);
	ath10k_htc_notify_tx_completion(ep, skb);
	/* the skb now belongs to the completion handler */
	/* the skb now belongs to the completion handler */


+2 −2
Original line number Original line Diff line number Diff line
@@ -835,7 +835,7 @@ static void ath10k_pci_ce_send_done(struct ath10k_ce_pipe *ce_state)
		if (transfer_context == NULL)
		if (transfer_context == NULL)
			continue;
			continue;


		cb->tx_completion(ar, transfer_context, transfer_id);
		cb->tx_completion(ar, transfer_context);
	}
	}
}
}


@@ -1263,7 +1263,7 @@ static void ath10k_pci_tx_pipe_cleanup(struct ath10k_pci_pipe *pci_pipe)
		id = MS(__le16_to_cpu(ce_desc[i].flags),
		id = MS(__le16_to_cpu(ce_desc[i].flags),
			CE_DESC_FLAGS_META_DATA);
			CE_DESC_FLAGS_META_DATA);


		ar_pci->msg_callbacks_current.tx_completion(ar, skb, id);
		ar_pci->msg_callbacks_current.tx_completion(ar, skb);
	}
	}
}
}