Thread (10 messages) 10 messages, 3 authors, 2011-10-06

Re: [PATCH] wl12xx: Add support for HW channel switch

From: Luciano Coelho <hidden>
Date: 2011-09-23 10:59:51

On Thu, 2011-09-22 at 16:36 +0300, Luciano Coelho wrote: 
On Thu, 2011-09-08 at 13:01 +0300, Shahar Levi wrote: 
quoted
WL12xx FW supports HW channel switch mechanism.
Add HW channel switch support via channel_switch ops.

Signed-off-by: Shahar Levi <redacted>
---
[...]
quoted
+static void wl12xx_op_channel_switch(struct ieee80211_hw *hw,
+				     struct ieee80211_channel_switch *ch_switch)
+{
+	struct wl1271 *wl = hw->priv;
+	int ret;
+
+	wl1271_debug(DEBUG_MAC80211, "mac80211 channel switch");
+
+	mutex_lock(&wl->mutex);
+
+	if (unlikely(wl->state == WL1271_STATE_OFF)) {
+		mutex_unlock(&wl->mutex);
+		ieee80211_chswitch_done(wl->vif, false);
+		return;
+	}
+
+	ret = wl1271_ps_elp_wakeup(wl);
+	if (ret < 0)
+		goto out;
+
+	/* send all pending packets */
+	wl1271_tx_work_locked(wl);
Is this really needed? Can anyone tell why?
I checked this a bit further and I don't see the point in sending all
packets here.  In fact, if block_tx is set, we can't even send any more
frames until the switch happens (or fails).  So we should at least check
this here.

I'm leaving this patch out for now until I understand this better.

-- 
Cheers,
Luca.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help