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

Commit f74a7361 authored by Vasanthakumar Thiagarajan's avatar Vasanthakumar Thiagarajan Committed by Kalle Valo
Browse files

ath6kl: cleanup callbacks for different scatter gather method



Define a hook in ath6kl_hif_ops for hif scatter gather mechanism.
When virtual scatter gather is used, call the respective function
directly.

Signed-off-by: default avatarVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent bdcd8170
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -59,6 +59,12 @@ static inline int ath6kl_hif_enable_scatter(struct ath6kl *ar,
	return ar->hif_ops->enable_scatter(ar, info);
}

static inline int ath6kl_hif_scat_req_rw(struct ath6kl *ar,
					 struct hif_scatter_req *scat_req)
{
	return ar->hif_ops->scat_req_rw(ar, scat_req);
}

static inline void ath6kl_hif_cleanup_scatter(struct ath6kl *ar)
{
	return ar->hif_ops->cleanup_scatter(ar);
+2 −1
Original line number Diff line number Diff line
@@ -186,7 +186,6 @@ struct hif_scatter_req {
};

struct hif_dev_scat_sup_info {
	int (*rw_scat_func) (struct ath6kl *ar, struct hif_scatter_req *);
	int max_scat_entries;
	int max_xfer_szper_scatreq;
};
@@ -210,6 +209,8 @@ struct ath6kl_hif_ops {
				struct hif_scatter_req *s_req);
	int (*enable_scatter)(struct ath6kl *ar,
			      struct hif_dev_scat_sup_info *info);
	int (*scat_req_rw) (struct ath6kl *ar,
			    struct hif_scatter_req *scat_req);
	void (*cleanup_scatter)(struct ath6kl *ar);
};

+4 −2
Original line number Diff line number Diff line
@@ -285,7 +285,10 @@ int ath6kldev_submit_scat_req(struct ath6kl_device *dev,
		return status;
	}

	status = dev->hif_scat_info.rw_scat_func(dev->ar, scat_req);
	if (dev->virt_scat)
		status =  ath6kldev_rw_scatter(dev->ar, scat_req);
	else
		status = ath6kl_hif_scat_req_rw(dev->ar, scat_req);

	if (read) {
		/* in sync mode, we can touch the scatter request */
@@ -340,7 +343,6 @@ static int ath6kldev_setup_virt_scat_sup(struct ath6kl_device *dev)
	if (status)
		ath6kl_hif_cleanup_scatter(dev->ar);
	else {
		dev->hif_scat_info.rw_scat_func = ath6kldev_rw_scatter;
		dev->hif_scat_info.max_scat_entries =
			ATH6KL_SCATTER_ENTRIES_PER_REQ;
		dev->hif_scat_info.max_xfer_szper_scatreq =
+3 −4
Original line number Diff line number Diff line
@@ -271,7 +271,7 @@ static int ath6kl_sdio_scat_rw(struct ath6kl_sdio *ar_sdio,
}


/* callback to issue a read-write scatter request */
/* scatter gather read write request */
static int ath6kl_sdio_async_rw_scatter(struct ath6kl *ar,
				 struct hif_scatter_req *scat_req)
{
@@ -379,8 +379,6 @@ static int ath6kl_sdio_setup_scat_resource(struct ath6kl_sdio *ar_sdio,
		hif_scatter_req_add(ar_sdio->ar, s_req);
	}

	/* set scatter function pointers */
	pinfo->rw_scat_func = ath6kl_sdio_async_rw_scatter;
	pinfo->max_scat_entries = MAX_SCATTER_ENTRIES_PER_REQ;
	pinfo->max_xfer_szper_scatreq = MAX_SCATTER_REQ_TRANSFER_SIZE;

@@ -671,6 +669,7 @@ static const struct ath6kl_hif_ops ath6kl_sdio_ops = {
	.scatter_req_get = ath6kl_sdio_scatter_req_get,
	.scatter_req_add = ath6kl_sdio_scatter_req_add,
	.enable_scatter = ath6kl_sdio_enable_scatter,
	.scat_req_rw = ath6kl_sdio_async_rw_scatter,
	.cleanup_scatter = ath6kl_sdio_cleanup_scatter,
};