【sdx62】WCN6855 WCN6856 WiFi 增加强制40MHz频宽的功能实现

问题描述

        高通默认hostapd不支持强制40MHz频宽功能,设置之后总会自动协商到20MHz

解决方案

        修改hostapd代码,增加ht2040_coex_disable字段

代码修改

修改apps_proc/src/external/wpa_supplicant_8/hostapd/config_file.c

在hostapd_config_fill函数添加配置选项参数的传递

		bss->wds_sta = atoi(pos);
 	} else if (os_strcmp(buf, "start_disabled") == 0) {
 		bss->start_disabled = atoi(pos);
+	} else if (os_strcmp(buf, "ht2040_coex_disable") == 0) { //add force 40MHz bandwidth
+		conf->ht2040_coex_disable = atoi(pos);
+
 	} else if (os_strcmp(buf, "ap_isolate") == 0) {
 		bss->isolate = atoi(pos);
 	} else if (os_strcmp(buf, "ap_max_inactivity") == 0) {

修改apps_proc/src/external/wpa_supplicant_8/src/ap/ap_config.c

在hostapd_config_defaults函数中增加初始化

 		return NULL;
 	}
 	conf->bss[0] = bss;
-
+	conf->ht2040_coex_disable = 0;  //force 40MHz 
 	bss->radius = os_zalloc(sizeof(*bss->radius));
 	if (bss->radius == NULL) {
 		os_free(conf->bss);

修改apps_proc/src/external/wpa_supplicant_8/src/ap/ap_config.h

hostapd_config结构体增加ht_2040_coex_disable

 	int fragm_threshold;
 	u8 op_class;
 	u8 channel;
+	int ht2040_coex_disable; //force to 40MHz
 	int enable_edmg;
 	u8 edmg_channel;
 	u8 acs;

修改apps_proc/src/external/wpa_supplicant_8/src/ap/hw_features.c

ieee80211n_check_scan函数做判断,当开启ht2040_coex_disable时,不再自动降为20MHz

 	else
 		oper40 = ieee80211n_check_40mhz_2g4(iface, scan_res);
 	wpa_scan_results_free(scan_res);
-
+	// force 40MHz
+	if (!oper40 && iface->conf->ht2040_coex_disable) {
+		wpa_printf(MSG_INFO, "Force to 40MHz due to ht2040_coex_disable is 1.");
+		oper40 = 1;
+	}
 	iface->secondary_ch = iface->conf->secondary_channel;
 	if (!oper40) {
 		wpa_printf(MSG_INFO, "20/40 MHz operation not permitted on "

修改apps_proc/src/external/wpa_supplicant_8/src/ap/ieee802_11_ht.c文件

hostapd_2040_coex_action函数增加判断,开启40MHz强制之后,IE字段不在添加20/40自适应

 			   "Ignore too short 20/40 BSS Coexistence Management frame");
 		return;
 	}
+	if (iface->conf->ht2040_coex_disable) //add force 40MHz
+	{
+		wpa_printf(MSG_DEBUG,
+			   "Force 40MHz");
+		return;
+	}
 
 	/* 20/40 BSS Coexistence element */
 	bc_ie = (struct ieee80211_2040_bss_coex_ie *) data;

参考链接:

linux系统hostapd强制使用40MHz频宽_李迟的博客-CSDN博客https://blog.csdn.net/subfate/article/details/52177035?locationNum=1&fps=1&teamwork_src=1&gcmt=ut_UD7LamwH0C7lFYQnlR9IKecpWb47Kt9XUjB&accessToken=ut_UD7LamwH0C7lFYQnlR9IKecpWb47Kt9XUjB&lang=zh_CN

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wellnw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值