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

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

ath6kl: Move scatter information from ath6kl_device to htc_target

parent 5be8824f
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -53,10 +53,9 @@ static inline void hif_scatter_req_add(struct ath6kl *ar,
	return ar->hif_ops->scatter_req_add(ar, s_req);
}

static inline int ath6kl_hif_enable_scatter(struct ath6kl *ar,
					    struct hif_dev_scat_sup_info *info)
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);
}

static inline int ath6kl_hif_scat_req_rw(struct ath6kl *ar,
+1 −7
Original line number Diff line number Diff line
@@ -186,11 +186,6 @@ struct hif_scatter_req {
	struct hif_scatter_item scat_list[1];
};

struct hif_dev_scat_sup_info {
	int max_scat_entries;
	int max_xfer_szper_scatreq;
};

struct ath6kl_hif_ops {
	int (*read_write_sync)(struct ath6kl *ar, u32 addr, u8 *buf,
			       u32 len, u32 request);
@@ -203,8 +198,7 @@ struct ath6kl_hif_ops {
	struct hif_scatter_req *(*scatter_req_get)(struct ath6kl *ar);
	void (*scatter_req_add)(struct ath6kl *ar,
				struct hif_scatter_req *s_req);
	int (*enable_scatter)(struct ath6kl *ar,
			      struct hif_dev_scat_sup_info *info);
	int (*enable_scatter)(struct ath6kl *ar);
	int (*scat_req_rw) (struct ath6kl *ar,
			    struct hif_scatter_req *scat_req);
	void (*cleanup_scatter)(struct ath6kl *ar);
+4 −9
Original line number Diff line number Diff line
@@ -432,11 +432,8 @@ static void htc_issue_send_bundle(struct htc_endpoint *endpoint,
{
	struct htc_target *target = endpoint->target;
	struct hif_scatter_req *scat_req = NULL;
	struct hif_dev_scat_sup_info hif_info;
	int n_scat, n_sent_bundle = 0, tot_pkts_bundle = 0;

	hif_info = target->dev->hif_scat_info;

	while (true) {
		n_scat = get_queue_depth(queue);
		n_scat = min(n_scat, target->msg_per_bndl_max);
@@ -2168,19 +2165,17 @@ int htc_get_rxbuf_num(struct htc_target *target, enum htc_endpoint_id endpoint)

static void htc_setup_msg_bndl(struct htc_target *target)
{
	struct hif_dev_scat_sup_info *scat_info = &target->dev->hif_scat_info;

	/* limit what HTC can handle */
	target->msg_per_bndl_max = min(HTC_HOST_MAX_MSG_PER_BUNDLE,
				       target->msg_per_bndl_max);

	if (ath6kl_hif_enable_scatter(target->dev->ar, scat_info)) {
	if (ath6kl_hif_enable_scatter(target->dev->ar)) {
		target->msg_per_bndl_max = 0;
		return;
	}

	/* limit bundle what the device layer can handle */
	target->msg_per_bndl_max = min(scat_info->max_scat_entries,
	target->msg_per_bndl_max = min(target->max_scat_entries,
				       target->msg_per_bndl_max);

	ath6kl_dbg(ATH6KL_DBG_TRC,
@@ -2188,10 +2183,10 @@ static void htc_setup_msg_bndl(struct htc_target *target)
		   target->msg_per_bndl_max);

	/* Max rx bundle size is limited by the max tx bundle size */
	target->max_rx_bndl_sz = scat_info->max_xfer_szper_scatreq;
	target->max_rx_bndl_sz = target->max_xfer_szper_scatreq;
	/* Max tx bundle size if limited by the extended mbox address range */
	target->max_tx_bndl_sz = min(HIF_MBOX0_EXT_WIDTH,
				     scat_info->max_xfer_szper_scatreq);
				     target->max_xfer_szper_scatreq);

	ath6kl_dbg(ATH6KL_DBG_ANY, "max recv: %d max send: %d\n",
		   target->max_rx_bndl_sz, target->max_tx_bndl_sz);
+3 −0
Original line number Diff line number Diff line
@@ -533,6 +533,9 @@ struct htc_target {

	u32 block_sz;
	u32 block_mask;

	int max_scat_entries;
	int max_xfer_szper_scatreq;
};

void *htc_create(struct ath6kl *ar);
+0 −1
Original line number Diff line number Diff line
@@ -80,7 +80,6 @@ struct ath6kl_device {
	struct ath6kl_irq_enable_reg irq_en_reg;
	u8 pad3[A_CACHE_LINE_PAD];
	struct htc_target *htc_cnxt;
	struct hif_dev_scat_sup_info hif_scat_info;
	int chk_irq_status_cnt;
	struct ath6kl *ar;
};
Loading