diff mbox

ath10k: implement drv_get_tsf for ibss merging

Message ID 1392197844-1223-1-git-send-email-yeohchunyeow@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Chun-Yeow Yeoh Feb. 12, 2014, 9:37 a.m. UTC
Implement the get TSF by simply returning 0 so that IBSS
merging is happening. Otherwise, IBSS nodes that have similar
SSID naming won't merge. This is simply fooling the mac80211
that the TSF in the received beacon is higher than the local TSF.

Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@gmail.com>
---
 drivers/net/wireless/ath/ath10k/mac.c |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Kalle Valo Feb. 13, 2014, 7:13 p.m. UTC | #1
Chun-Yeow Yeoh <yeohchunyeow@gmail.com> writes:

> Implement the get TSF by simply returning 0 so that IBSS
> merging is happening. Otherwise, IBSS nodes that have similar
> SSID naming won't merge. This is simply fooling the mac80211
> that the TSF in the received beacon is higher than the local TSF.
>
> Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@gmail.com>

Yeah, this extremely ugly but don't really know any better way to handle
this now.

> +static u64 ath10k_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
> +{
> +	struct ath10k *ar = hw->priv;
> +	u64 tsf;
> +
> +	mutex_lock(&ar->conf_mutex);
> +	/* FIXME: Return 0 for time being. Need to figure out whether FW has
> +	 * the API to fetch 64-bit TSF
> +	 */
> +	tsf = 0;
> +	mutex_unlock(&ar->conf_mutex);
> +
> +	return tsf;
> +}

But why do you need to take conf_mutex? Isn't this enough:

+static u64 ath10k_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
+{
+       /*
+        * FIXME: Return 0 for time being. Need to figure out whether FW
+        * has the API to fetch 64-bit TSF
+        */
+
+       return 0;
+}
Chun-Yeow Yeoh Feb. 14, 2014, 1:55 a.m. UTC | #2
> Yeah, this extremely ugly but don't really know any better way to handle
> this now.

I have observed that we have ath10k_wmi_event_tsf_measurement_report,
but no so sure how to trigger this event.

> But why do you need to take conf_mutex? Isn't this enough:
>
> +static u64 ath10k_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
> +{
> +       /*
> +        * FIXME: Return 0 for time being. Need to figure out whether FW
> +        * has the API to fetch 64-bit TSF
> +        */
> +
> +       return 0;
> +}

Ya, I think this is enough for time being. I will submit v2 on this.

-----
Chun-Yeow
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index afa1226..d62d39e 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -4049,6 +4049,21 @@  static void ath10k_sta_rc_update(struct ieee80211_hw *hw,
 	ieee80211_queue_work(hw, &arsta->update_wk);
 }
 
+static u64 ath10k_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
+{
+	struct ath10k *ar = hw->priv;
+	u64 tsf;
+
+	mutex_lock(&ar->conf_mutex);
+	/* FIXME: Return 0 for time being. Need to figure out whether FW has
+	 * the API to fetch 64-bit TSF
+	 */
+	tsf = 0;
+	mutex_unlock(&ar->conf_mutex);
+
+	return tsf;
+}
+
 static const struct ieee80211_ops ath10k_ops = {
 	.tx				= ath10k_tx,
 	.start				= ath10k_start,
@@ -4074,6 +4089,7 @@  static const struct ieee80211_ops ath10k_ops = {
 	.set_bitrate_mask		= ath10k_set_bitrate_mask,
 	.channel_switch_beacon		= ath10k_channel_switch_beacon,
 	.sta_rc_update			= ath10k_sta_rc_update,
+	.get_tsf			= ath10k_get_tsf,
 #ifdef CONFIG_PM
 	.suspend			= ath10k_suspend,
 	.resume				= ath10k_resume,