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

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
...@@ -59,6 +59,12 @@ static inline int ath6kl_hif_enable_scatter(struct ath6kl *ar, ...@@ -59,6 +59,12 @@ static inline int ath6kl_hif_enable_scatter(struct ath6kl *ar,
return ar->hif_ops->enable_scatter(ar, info); 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) static inline void ath6kl_hif_cleanup_scatter(struct ath6kl *ar)
{ {
return ar->hif_ops->cleanup_scatter(ar); return ar->hif_ops->cleanup_scatter(ar);
......
...@@ -186,7 +186,6 @@ struct hif_scatter_req { ...@@ -186,7 +186,6 @@ struct hif_scatter_req {
}; };
struct hif_dev_scat_sup_info { struct hif_dev_scat_sup_info {
int (*rw_scat_func) (struct ath6kl *ar, struct hif_scatter_req *);
int max_scat_entries; int max_scat_entries;
int max_xfer_szper_scatreq; int max_xfer_szper_scatreq;
}; };
...@@ -210,6 +209,8 @@ struct ath6kl_hif_ops { ...@@ -210,6 +209,8 @@ struct ath6kl_hif_ops {
struct hif_scatter_req *s_req); struct hif_scatter_req *s_req);
int (*enable_scatter)(struct ath6kl *ar, int (*enable_scatter)(struct ath6kl *ar,
struct hif_dev_scat_sup_info *info); 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); void (*cleanup_scatter)(struct ath6kl *ar);
}; };
......
...@@ -285,7 +285,10 @@ int ath6kldev_submit_scat_req(struct ath6kl_device *dev, ...@@ -285,7 +285,10 @@ int ath6kldev_submit_scat_req(struct ath6kl_device *dev,
return status; 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) { if (read) {
/* in sync mode, we can touch the scatter request */ /* in sync mode, we can touch the scatter request */
...@@ -340,7 +343,6 @@ static int ath6kldev_setup_virt_scat_sup(struct ath6kl_device *dev) ...@@ -340,7 +343,6 @@ static int ath6kldev_setup_virt_scat_sup(struct ath6kl_device *dev)
if (status) if (status)
ath6kl_hif_cleanup_scatter(dev->ar); ath6kl_hif_cleanup_scatter(dev->ar);
else { else {
dev->hif_scat_info.rw_scat_func = ath6kldev_rw_scatter;
dev->hif_scat_info.max_scat_entries = dev->hif_scat_info.max_scat_entries =
ATH6KL_SCATTER_ENTRIES_PER_REQ; ATH6KL_SCATTER_ENTRIES_PER_REQ;
dev->hif_scat_info.max_xfer_szper_scatreq = dev->hif_scat_info.max_xfer_szper_scatreq =
......
...@@ -271,9 +271,9 @@ static int ath6kl_sdio_scat_rw(struct ath6kl_sdio *ar_sdio, ...@@ -271,9 +271,9 @@ 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, static int ath6kl_sdio_async_rw_scatter(struct ath6kl *ar,
struct hif_scatter_req *scat_req) struct hif_scatter_req *scat_req)
{ {
struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
struct hif_scatter_req_priv *req_priv = scat_req->req_priv; struct hif_scatter_req_priv *req_priv = scat_req->req_priv;
...@@ -379,8 +379,6 @@ static int ath6kl_sdio_setup_scat_resource(struct ath6kl_sdio *ar_sdio, ...@@ -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); 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_scat_entries = MAX_SCATTER_ENTRIES_PER_REQ;
pinfo->max_xfer_szper_scatreq = MAX_SCATTER_REQ_TRANSFER_SIZE; pinfo->max_xfer_szper_scatreq = MAX_SCATTER_REQ_TRANSFER_SIZE;
...@@ -671,6 +669,7 @@ static const struct ath6kl_hif_ops ath6kl_sdio_ops = { ...@@ -671,6 +669,7 @@ static const struct ath6kl_hif_ops ath6kl_sdio_ops = {
.scatter_req_get = ath6kl_sdio_scatter_req_get, .scatter_req_get = ath6kl_sdio_scatter_req_get,
.scatter_req_add = ath6kl_sdio_scatter_req_add, .scatter_req_add = ath6kl_sdio_scatter_req_add,
.enable_scatter = ath6kl_sdio_enable_scatter, .enable_scatter = ath6kl_sdio_enable_scatter,
.scat_req_rw = ath6kl_sdio_async_rw_scatter,
.cleanup_scatter = ath6kl_sdio_cleanup_scatter, .cleanup_scatter = ath6kl_sdio_cleanup_scatter,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment