linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] ath6kl: Remove unused meta_v2 from ath6kl_data_tx()
@ 2011-08-22 15:10 Vasanthakumar Thiagarajan
  2011-08-22 15:10 ` [PATCH 2/3] ath6kl: Add wmi meta data information only it is available Vasanthakumar Thiagarajan
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Vasanthakumar Thiagarajan @ 2011-08-22 15:10 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, kvalo

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath6kl/txrx.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath6kl/txrx.c b/drivers/net/wireless/ath/ath6kl/txrx.c
index ba33370..fffd929 100644
--- a/drivers/net/wireless/ath/ath6kl/txrx.c
+++ b/drivers/net/wireless/ath/ath6kl/txrx.c
@@ -239,7 +239,6 @@ int ath6kl_data_tx(struct sk_buff *skb, struct net_device *dev)
 	u16 htc_tag = ATH6KL_DATA_PKT_TAG;
 	u8 ac = 99 ; /* initialize to unmapped ac */
 	bool chk_adhoc_ps_mapping = false, more_data = false;
-	struct wmi_tx_meta_v2 meta_v2;
 	int ret;
 
 	ath6kl_dbg(ATH6KL_DBG_WLAN_TX,
@@ -262,8 +261,6 @@ int ath6kl_data_tx(struct sk_buff *skb, struct net_device *dev)
 	}
 
 	if (test_bit(WMI_ENABLED, &ar->flag)) {
-		memset(&meta_v2, 0, sizeof(meta_v2));
-
 		if (skb_headroom(skb) < dev->needed_headroom) {
 			WARN_ON(1);
 			goto fail_tx;
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] ath6kl: Add wmi meta data information only it is available
  2011-08-22 15:10 [PATCH 1/3] ath6kl: Remove unused meta_v2 from ath6kl_data_tx() Vasanthakumar Thiagarajan
@ 2011-08-22 15:10 ` Vasanthakumar Thiagarajan
  2011-08-22 15:10 ` [PATCH 3/3] ath6kl: Avoid rolling back of entire scatter setup in case of failure Vasanthakumar Thiagarajan
  2011-08-25  8:40 ` [PATCH 1/3] ath6kl: Remove unused meta_v2 from ath6kl_data_tx() Kalle Valo
  2 siblings, 0 replies; 4+ messages in thread
From: Vasanthakumar Thiagarajan @ 2011-08-22 15:10 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, kvalo

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath6kl/wmi.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath6kl/wmi.c b/drivers/net/wireless/ath/ath6kl/wmi.c
index 13b1a20..d116d0e 100644
--- a/drivers/net/wireless/ath/ath6kl/wmi.c
+++ b/drivers/net/wireless/ath/ath6kl/wmi.c
@@ -167,9 +167,11 @@ int ath6kl_wmi_data_hdr_add(struct wmi *wmi, struct sk_buff *skb,
 	if (WARN_ON(skb == NULL))
 		return -EINVAL;
 
-	ret = ath6kl_wmi_meta_add(wmi, skb, &meta_ver, tx_meta_info);
-	if (ret)
-		return ret;
+	if (tx_meta_info) {
+		ret = ath6kl_wmi_meta_add(wmi, skb, &meta_ver, tx_meta_info);
+		if (ret)
+			return ret;
+	}
 
 	skb_push(skb, sizeof(struct wmi_data_hdr));
 
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] ath6kl: Avoid rolling back of entire scatter setup in case of failure
  2011-08-22 15:10 [PATCH 1/3] ath6kl: Remove unused meta_v2 from ath6kl_data_tx() Vasanthakumar Thiagarajan
  2011-08-22 15:10 ` [PATCH 2/3] ath6kl: Add wmi meta data information only it is available Vasanthakumar Thiagarajan
@ 2011-08-22 15:10 ` Vasanthakumar Thiagarajan
  2011-08-25  8:40 ` [PATCH 1/3] ath6kl: Remove unused meta_v2 from ath6kl_data_tx() Kalle Valo
  2 siblings, 0 replies; 4+ messages in thread
From: Vasanthakumar Thiagarajan @ 2011-08-22 15:10 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, kvalo

Current tx scatter gather implementation rolls back the entire
scatter setup in case of a failure in setting up just one packet
into the bundle. Instead of dopping the whole scatter setup,
send the packets available just before the failure one using
scatter gather I/O.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath6kl/htc.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/ath/ath6kl/htc.c b/drivers/net/wireless/ath/ath6kl/htc.c
index dc575a8..77e548c 100644
--- a/drivers/net/wireless/ath/ath6kl/htc.c
+++ b/drivers/net/wireless/ath/ath6kl/htc.c
@@ -381,13 +381,7 @@ static int htc_setup_send_scat_list(struct htc_target *target,
 
 		cred_pad = htc_get_credit_padding(target->tgt_cred_sz,
 						  &len, endpoint);
-		if (cred_pad < 0) {
-			status = -EINVAL;
-			break;
-		}
-
-		if (rem_scat < len) {
-			/* exceeds what we can transfer */
+		if (cred_pad < 0 || rem_scat < len) {
 			status = -ENOSPC;
 			break;
 		}
@@ -416,7 +410,7 @@ static int htc_setup_send_scat_list(struct htc_target *target,
 	}
 
 	/* Roll back scatter setup in case of any failure */
-	if (status || (scat_req->scat_entries < HTC_MIN_HTC_MSGS_TO_BUNDLE)) {
+	if (scat_req->scat_entries < HTC_MIN_HTC_MSGS_TO_BUNDLE) {
 		for (i = scat_req->scat_entries - 1; i >= 0; i--) {
 			packet = scat_req->scat_list[i].packet;
 			if (packet) {
@@ -424,10 +418,10 @@ static int htc_setup_send_scat_list(struct htc_target *target,
 				list_add(&packet->list, queue);
 			}
 		}
-		return -EINVAL;
+		return -EAGAIN;
 	}
 
-	return 0;
+	return status;
 }
 
 /*
@@ -447,8 +441,10 @@ static void htc_issue_send_bundle(struct htc_endpoint *endpoint,
 	struct htc_target *target = endpoint->target;
 	struct hif_scatter_req *scat_req = NULL;
 	int n_scat, n_sent_bundle = 0, tot_pkts_bundle = 0;
+	int status;
 
 	while (true) {
+		status = 0;
 		n_scat = get_queue_depth(queue);
 		n_scat = min(n_scat, target->msg_per_bndl_max);
 
@@ -471,8 +467,9 @@ static void htc_issue_send_bundle(struct htc_endpoint *endpoint,
 		scat_req->len = 0;
 		scat_req->scat_entries = 0;
 
-		if (htc_setup_send_scat_list(target, endpoint, scat_req,
-					     n_scat, queue)) {
+		status = htc_setup_send_scat_list(target, endpoint,
+						  scat_req, n_scat, queue);
+		if (status == -EAGAIN) {
 			hif_scatter_req_add(target->dev->ar, scat_req);
 			break;
 		}
@@ -486,6 +483,9 @@ static void htc_issue_send_bundle(struct htc_endpoint *endpoint,
 			   "send scatter total bytes: %d , entries: %d\n",
 			   scat_req->len, scat_req->scat_entries);
 		ath6kldev_submit_scat_req(target->dev, scat_req, false);
+
+		if (status)
+			break;
 	}
 
 	*sent_bundle = n_sent_bundle;
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/3] ath6kl: Remove unused meta_v2 from ath6kl_data_tx()
  2011-08-22 15:10 [PATCH 1/3] ath6kl: Remove unused meta_v2 from ath6kl_data_tx() Vasanthakumar Thiagarajan
  2011-08-22 15:10 ` [PATCH 2/3] ath6kl: Add wmi meta data information only it is available Vasanthakumar Thiagarajan
  2011-08-22 15:10 ` [PATCH 3/3] ath6kl: Avoid rolling back of entire scatter setup in case of failure Vasanthakumar Thiagarajan
@ 2011-08-25  8:40 ` Kalle Valo
  2 siblings, 0 replies; 4+ messages in thread
From: Kalle Valo @ 2011-08-25  8:40 UTC (permalink / raw)
  To: Vasanthakumar Thiagarajan; +Cc: linux-wireless

Thanks, all three applied to ath6kl.git.

Kalle

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-08-25  8:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-22 15:10 [PATCH 1/3] ath6kl: Remove unused meta_v2 from ath6kl_data_tx() Vasanthakumar Thiagarajan
2011-08-22 15:10 ` [PATCH 2/3] ath6kl: Add wmi meta data information only it is available Vasanthakumar Thiagarajan
2011-08-22 15:10 ` [PATCH 3/3] ath6kl: Avoid rolling back of entire scatter setup in case of failure Vasanthakumar Thiagarajan
2011-08-25  8:40 ` [PATCH 1/3] ath6kl: Remove unused meta_v2 from ath6kl_data_tx() Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).