diff mbox

wcn36xx: enable the beaconing in mesh mode

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

Commit Message

Chun-Yeow Yeoh Oct. 31, 2013, 6:04 a.m. UTC
Enable the beaconing in wnc36xx by tweaking the tim offset and
force the use of AP-style beaconing. Otherwise, beaconing is not
working. The tim offset is set to 256. Otherwise, this will
overwrite mesh beacon submitted by mac80211.

Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@cozybit.com>
---
 drivers/net/wireless/ath/wcn36xx/smd.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

Comments

Eugene Krasnikov Oct. 31, 2013, 8:30 p.m. UTC | #1
> +               msg_body.tim_ie_offset = 256;

Does not look like correct value. Why 256?
--
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
Thomas Pedersen Nov. 1, 2013, 4:14 a.m. UTC | #2
On Thu, Oct 31, 2013 at 1:30 PM, Eugene Krasnikov <k.eugene.e@gmail.com> wrote:
>> +               msg_body.tim_ie_offset = 256;
>
> Does not look like correct value. Why 256?

Also mesh beacon does need the TIM< only it must be generated by
mac80211. How do you tell the firmware to ignore the beacon TIM?

--
Thomas
--
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
Eugene Krasnikov Nov. 1, 2013, 1:45 p.m. UTC | #3
I do not really remember what was the result of testing when we set
tim_ie_offset to 0. Could you please share what do you observe when
tim_ie_offset? Does FW corrupt beacon?

My concern about 256 is that FW may corrupt some memory. Also assume
the reason why FW sets TIM is because you configure FW as AP instead
of mesh with this line:
    bss->bss_type = WCN36XX_HAL_INFRA_AP_MODE;

On Fri, Nov 1, 2013 at 4:33 AM, Yeoh Chun-Yeow <yeohchunyeow@gmail.com> wrote:
>>
>> Also mesh beacon does need the TIM< only it must be generated by
>> mac80211. How do you tell the firmware to ignore the beacon TIM?
>
>
> Hi, Thomas
>
> The HAL send beacon request message requires the tim_ie_offset to be set.
> There is another p2p_ie_offset in the request message. By setting it to 0,
> it seems that the firmware ignores this IE while building the beacon.
> However, I try to set the tim_ie_offset to 0. But this won't work.
>
> Hi, Eugene
>
> Did you ever test the tim_ie_offset set to 0?
>
> ----
> Chun-Yeow
>
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c
index f8c3a10..19f43de 100644
--- a/drivers/net/wireless/ath/wcn36xx/smd.c
+++ b/drivers/net/wireless/ath/wcn36xx/smd.c
@@ -1134,14 +1134,14 @@  int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 		/* STA */
 		bss->oper_mode = 1;
 		bss->wcn36xx_hal_persona = WCN36XX_HAL_STA_MODE;
-	} else if (vif->type == NL80211_IFTYPE_AP) {
+	} else if (vif->type == NL80211_IFTYPE_AP ||
+		   vif->type == NL80211_IFTYPE_MESH_POINT) {
 		bss->bss_type = WCN36XX_HAL_INFRA_AP_MODE;
 
 		/* AP */
 		bss->oper_mode = 0;
 		bss->wcn36xx_hal_persona = WCN36XX_HAL_STA_SAP_MODE;
-	} else if (vif->type == NL80211_IFTYPE_ADHOC ||
-		   vif->type == NL80211_IFTYPE_MESH_POINT) {
+	} else if (vif->type == NL80211_IFTYPE_ADHOC) {
 		bss->bss_type = WCN36XX_HAL_IBSS_MODE;
 
 		/* STA */
@@ -1291,7 +1291,11 @@  int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 	memcpy(msg_body.bssid, vif->addr, ETH_ALEN);
 
 	/* TODO need to find out why this is needed? */
-	msg_body.tim_ie_offset = tim_off+4;
+	if (vif->type == NL80211_IFTYPE_MESH_POINT)
+		/* mesh beacon don't need this, so push further down */
+		msg_body.tim_ie_offset = 256;
+	else
+		msg_body.tim_ie_offset = tim_off+4;
 	msg_body.p2p_ie_offset = p2p_off;
 	PREPARE_HAL_BUF(wcn->hal_buf, msg_body);