Good day!
This is a continuation of this issue.
I was able to compile mlanutl and used the tool to set httxcfg and htcapinfo.
I found out that the default value of httxcfg and htcapinfo for BG is 0x61 and 0x04c00000 respectively. With the default values, httxcfg=0x61: 20/40MHz SGI and LDPC are enabled. And htcapinfo=0x04c00000: Rx STBC, 20MHz SGI and Rx LDPC are enabled.
In order to disable 40MHz SGI, I tried setting httxcfg to 0x21 by issuing command "mlanutl mlan0 httxcfg 0x21 1", however when I issue "iw list", below snippet of output is shown, showing 40MHz SGI still enabled.
Band 1:
Capabilities: 0x177f
RX LDPC
HT20/HT40
SM Power Save disabled
RX Greenfield
RX HT20 SGI
RX HT40 SGI
RX STBC 3-streams
HT Delayed Block Ack
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
It seems that mlanutl commands are not properly executed. Can you please share correct commands to disable HT using mlanutl?
Does values set via mlanutl tool can be verified via "iw list"?
Can you also please provide instructions on how to compile the driver with 80211n/ac disabled?
Regards,
Elton
Solved! Go to Solution.
Hello @Christine_Li ,
We were able to fix the issue.
We added below flags and recompiled wpa_supplicant、
CONFIG_HT_OVERRIDES=y
CONFIG_VHT_OVERRIDES=y
then added below options on wpa_supplicant.conf.
ht40_intolerant=1
disable_ht40=1
disable_vht=1
Thank you for support.
Regards,
Elton
Hi, @elton
Thanks for creating new case to us, and thanks for you trial for compiling mlanutl.
Please see below for the httxcfg:
httxcfg
This command is used to configure various 11n specific configuration for transmit (such as Short GI, Channel BW and Green field support).
where <m> is <txcfg>
This is a bitmap and should be used as following
Bit 15-8: Reserved set to 0
Bit 7: STBC enable/disable
Bit 6: Short GI in 40 Mhz enable/disable
Bit 5: Short GI in 20 Mhz enable/disable
Bit 4: Green field enable/disable
Bit 3-2: Reserved set to 1
Bit 1: 20/40 Mhz enable disable.
Bit 0: LDPC enable/disable
When Bit 1 is set then firmware could transmit in 20Mhz or 40Mhz based
on rate adaptation. When this bit is reset then firmware will only
transmit in 20Mhz.
Point 1:
Default value:
root@imx8mnevk:~# ./mlanutl mlan0 httxcfg
HT Tx cfg:
BG band: 0x00000061==》0000 0000 0000 0110 0001 ==>It means in default, the Bit 1: 20/40 Mhz is disable, so in default, it will only transmit in 20MHz.
A band: 0x00000063
Point 2:
Please confirm, you want to disable 40MHz or you want to disable 40MHz Short GI.
Point 3:
The mlanutl commands are used only for TX, not for RX.
I see your paste is: RX HT40 SGI
RX is depending on the AP side, could not controlled by our Wi-Fi station side.
Point 4:
To confirm whether set it with mlanutl successfully, you can check it with below 2 methods. And personally I recommend method 1.
1. During connection with AP, capture sniffer logs and check the association request frame, like below, I checked it on my local side:
2. Ping command with long data, then check with: "iw mlan0 station dump"
Point 5:
Can you also please provide instructions on how to compile the driver with 80211n/ac disabled?
==> I know for AP mode, you can configure whether support 11n or 11ac through below parameters in hostapd.conf:
ieee80211n=0/1
ieee80211ac=0/1
But for Station mode, I don't think it is a good idea that disable 11n/11ac because it usually follows up the configurations of AP side. Otherwise, it will always throw out connection errors because of AP is working in 11n or 11ac mode.
Please let me know whether have any other concerns on this case.
Best regards,
Christine.
Hello All,
It is stated on this link that 5GHz modules can be disabled by using dev_cap_mask=0xffffdbff.
Can anyone explain which bit corresponds to which parameter?
Can 80211n be disabled using this driver parameter?
Regards,
Elton
Hi, @elton
dev_cap_mask=<Bit mask of the device capability>
This load parameter is uses to configure device features support.
Usage:
dev_cap_mask=<value to be configured>
<BIT0-BIT15> : Represents features supported
<BIT16>: Indicates support for 11AX
<BIT17>: Indicates support for 6G
Example:
To disable 11AX and 6G support: dev_cap_mask=0xfffcffff
Please let me know whether have any other concerns on this case.
Best regards,
Christine.
Hello @Christine_Li ,
Thanks for your response.
I have analyzed this code and found out below defines.
/** Max AMSDU size support */
#define HWSPEC_MAX_AMSDU_SUPP MBIT(31)
/** Greenfield support */
#define HWSPEC_GREENFIELD_SUPP MBIT(29)
/** HW_SPEC FwCapInfo : If FW support RSN Replay Detection */
#define ISSUPP_RSN_REPLAY_DETECTION(FwCapInfo) (FwCapInfo & MBIT(28))
/** SM Power Save enable */
#define CAPINFO_SMPS_ENABLE MBIT(27)
/** RX STBC support */
#define HWSPEC_RXSTBC_SUPP MBIT(26)
/** ShortGI @ 40Mhz support */
#define HWSPEC_SHORTGI40_SUPP MBIT(24)
/** ShortGI @ 20Mhz support */
#define HWSPEC_SHORTGI20_SUPP MBIT(23)
/** RX LDPC support */
#define HWSPEC_LDPC_SUPP MBIT(22)
/** Channel width 40Mhz support */
#define HWSPEC_CHANBW40_SUPP MBIT(17)
#define ISSUPP_11ACENABLED(FwCapInfo) (FwCapInfo & (MBIT(12) | MBIT(13)))
#define ISSUPP_11AC2GENABLED(FwCapInfo) (FwCapInfo & MBIT(12))
#define ISSUPP_11AC5GENABLED(FwCapInfo) (FwCapInfo & MBIT(13))
#define ISSUPP_11NENABLED(FwCapInfo) (FwCapInfo & MBIT(11))
/** RadioType : Support for Band A */
#define ISSUPP_BANDA(FwCapInfo) (FwCapInfo & MBIT(10))
/** SM Power Save mode */
#define CAPINFO_SMPS_MODE MBIT(9)
/** HW_SPEC FwCapInfo */
#define HWSPEC_11ACSGI80_SUPP MBIT(5)
#define HWSPEC_11ACRXSTBC_SUPP MBIT(8)
I tried masking those bits but it does not resolve the issue.
WiFi scan issue may not be related to IEEE80211N/HT40.
Regards,
Elton
Hi, @elton
Thanks for your reply.
Then, would you prefer to go back to the Wi-Fi scan issue, and not continue to discuss about disable 11n or HT 40MHz issue, Am I right?
If so, can you please let me know whether you are using network manager? or you are using wpa_supplicant to connect to AP?
I tried locally with wpa_supplicant to connect to AP, and there is no endless scan on my side.
===========
root@imx8mnevk:~# wpa_supplicant -d -B -i mlan0 -c /etc/wpa_supplicant.conf -Dnl80211
wpa_supplicant v2.10
random: Trying to read entropy from /dev/random
Successfully initialized wpa_supplicant
Initializing interface 'mlan0' conf '/etc/wpa_supplicant.conf' driver 'nl80211' ctrl_interface 'N/A' bridge 'N/A'
Configuration file '/etc/wpa_supplicant.conf' -> '/etc/wpa_supplicant.conf'
Reading configuration file '/etc/wpa_supplicant.conf'
ctrl_interface='/var/run/wpa_supplicant'
ctrl_interface_group='0'
update_config=1
Priority group 0
id=0 ssid='BES'
.......
root@imx8mnevk:~# [ 135.643858] wlan: SCAN COMPLETED: scanned AP count=7
[ 135.657662] wlan: HostMlme mlan0 send auth to bssid dc:XX:XX:XX:85:9c
[ 135.666184] mlan0:
[ 135.666189] wlan: HostMlme Auth received from dc:XX:XX:XX:85:9c
[ 135.690507] wlan: HostMlme mlan0 Connected to bssid dc:XX:XX:XX:85:9c successfully
[ 135.711612] mlan0:
[ 135.711627] wlan: Send EAPOL pkt to dc:XX:XX:XX:85:9c
[ 135.727907] mlan0:
[ 135.727919] wlan: Send EAPOL pkt to dc:XX:XX:XX:85:9c
[ 135.729002] IPv6: ADDRCONF(NETDEV_CHANGE): mlan0: link becomes ready
[ 135.742076] woal_cfg80211_set_rekey_data return: gtk_rekey_offload is DISABLE
root@imx8mnevk:~#
root@imx8mnevk:~# ifconfig -a
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:04:9f:06:da:96 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 172 bytes 12688 (12.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 172 bytes 12688 (12.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
mlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::224e:f6ff:fe20:98f1 prefixlen 64 scopeid 0x20<link>
inet6 fddc:333d:7d85:9300:224e:f6ff:fe20:98f1 prefixlen 64 scopeid 0x0<global>
ether 20:4e:f6:20:98:f1 txqueuelen 1000 (Ethernet)
RX packets 8 bytes 738 (738.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 23 bytes 3215 (3.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@imx8mnevk:~# udhcpc -i mlan0
udhcpc: started, v1.35.0
udhcpc: broadcasting discover
udhcpc: broadcasting select for 192.168.x.xx, server 192.168.x.1
udhcpc: lease of 192.168.x.xx obtained from 192.168.x.1, lease time 86400
/etc/udhcpc.d/50default: Adding DNS 192.168.x.1
root@imx8mnevk:~#
root@imx8mnevk:~#
================
And is there any influence if there is endless scan after connected to AP?
As I know, the throughput drop is expected behavior when performing scan because during scan operation, RF goes off channel for scan and this results in throughput drop.
To improve throughput results you can try below command:
./mlanutl mlan0 scancfg 0 0 2 20
The above command will reduce scan time on each channel and time gap between two scans.
Below is the details for scancfg:
Please let us know if you have further queries for this issue.
Best regards,
Christine.
Hello @Christine_Li ,
I am using mlanutl version 1.3.02 and there is no "scancfg" option.
root@colibri-imx6ull-15102395:~# mlanutl -v
NXP mlanutl version M1.3.02
root@colibri-imx6ull-15102395:~# mlanutl
Invalid number of parameters!
Usage:
mlanutl -v (version)
mlanutl <ifname> <cmd> [...]
where
ifname : wireless network interface name, such as mlanX or uapX
cmd :
version
verext
hostcmd
getdatarate
getlog
get_txpwrlimit
vhtcfg
dyn_bw
11axcfg
11axcmd
txratecfg
httxcfg
htcapinfo
aggrpriotbl
addbapara
addbareject
hssetpara
mefcfg
cloud_keep_alive
min_ba_threshold
Can you please let me know what version of mlanutl you are using?
Can you also please share the link of the tool's source code so that I can compile?
Regards,
Elton
Hi, @elton
Thanks for your reply.
Please see below for my mlanutl's version:
==========
root@imx8mnevk:~# ./mlanutl -version
Invalid number of parameters!
Usage:
mlanutl -v (version)
mlanutl <ifname> <cmd> [...]
where
ifname : wireless network interface name, such as mlanX or uapX
cmd :
version
verext
hostcmd
drvdbg
getdatarate
getlog
get_txpwrlimit
getsignal
signalextcfg
getsignalext
getsignalextv2
vhtcfg
dyn_bw
11axcfg
11axcmd
txratecfg
httxcfg
htcapinfo
aggrpriotbl
addbapara
addbareject
hssetpara
mefcfg
cloud_keep_alive
min_ba_threshold
11dcfg
11dclrtbl
addbapara
addbareject
addts
amsduaggrctrl
antcfg
arpfilter
assocctrl
assocessid
assocessid_bssid
associate
authtype
autotdls
bandcfg
bcninterval
bssrole
cfgdata
cfpcode
changraph
coex_rx_winsize
countrycode
customie
deauth
deepsleep
delba
delts
dfstesting
clear_nop
nop_list
fake_radar
dfs53cfg
dfs_mode
dfs_cac
autodfs
dfs_repeater
dscpmap
esuppmode
extcapcfg
cancelscan
fwmacaddr
fwwakeupmethod
getkey
getscantable
getstalist
hotspotcfg
hscfg
mgmtfilter
htstreamcfg
mimoswitch
httxbfcap
httxbfcfg
inactivityto
ipaddr
linkstats
listeninterval
macctrl
memrdwr
miracastcfg
mgmtframectrl
mgmtframetx
mpactrl
netmon
cfg_noa
cfg_opp_ps
offchannel
otpuserdata
passphrase
pb_bypass
pmfcfg
port_ctrl
powercons
pscfg
psmode
qconfig
qoscfg
qstatus
rdeeprom
reassoctrl
regioncode
cfpinfo
regrdwr
rejectaddbareq
scancfg
sdcmd52rw
sdcmd53rw
sdioclock
setuserscan
sleepparams
sleeppd
sysclock
clocksync
gettsfinfo
targetschan
backupchan
tcpackenh
tdls_idle_time
tdls_channel_switch
tdls_config
tdls_cs_params
tdls_debug
tdls_disable_cs
tdls_discovery
tdls_link_status
tdls_powermode
tdls_setinfo
tdls_setup
tdls_stop_channel_switch
tdls_teardown
thermal
ts_status
tsf
txaggrctrl
txbufcfg
txcontrol
txpowercfg
txwatchdog
aggrctrl
usbaggrctrl
usbresume
usbsuspend
opermodecfg
wakeupreason
warmreset
wmmcfg
wmmparamcfg
wpssession
wwscfg
mc_cfg
mc_policy
mc_cfg_ext
get_sensor_temp
channel_switch
indrstcfg
dfs_offload
cwmode
txrxhistogram
per_pkt_cfg
dot11_txrx
robustcoex
ctrldeauth
dmcs
range_ext
twt_setup
twt_teardown
rx_abort_cfg
rx_abort_cfg_ext
tx_ampdu_prot_mode
rate_adapt_cfg
cck_desense_cfg
get_chnrgpwr
comparergpwr
comparetrpc
getcfgchanlist
lpm
arb
dot11mc_unassoc_ftm_cfg
tp_state
hal_phy_cfg
ips_cfg
mcast_aggr_group
mc_aggr_cfg
getchload
getuuid
root@imx8mnevk:~# ./mlanutl -v
NXP mlanutl version M1.3
2. Can you also please share the link of the tool's source code so that I can compile?
==>As I mentioned before, the source code could not be shared directly on the public community and also I am not allowed to share source code directly.
There are 2 ways you can get mlanutl's binary:
a. You can ask U-Blox to build/compile for you after they download the release package from our website, then share to you the binary. Will be a quick way for this time.
b. You can directly sign NDA with us(NXP) and then apply for the secure files access of 88W8987. It will take longer time, but will be convenient for you in the future.
Please let me know whether have anything I can do for you on this case.
Best regards,
Christine.
Hello @Christine_Li ,
We were able to fix the issue.
We added below flags and recompiled wpa_supplicant、
CONFIG_HT_OVERRIDES=y
CONFIG_VHT_OVERRIDES=y
then added below options on wpa_supplicant.conf.
ht40_intolerant=1
disable_ht40=1
disable_vht=1
Thank you for support.
Regards,
Elton
Hi, @elton
Thanks for your efforts and your kindness to share us your final solution for this case.
It will be a very good reference for our future support.
Please feel free to create us new cases if you have any other questions or other concerns about our products in the future.
Wish you have a nice rest of your day!
Best regards,
Christine.
Hello @Christine_Li ,
There are 2 ways you can get mlanutl's binary:
a. You can ask U-Blox to build/compile for you after they download the release package from our website, then share to you the binary. Will be a quick way for this time.
b. You can directly sign NDA with us(NXP) and then apply for the secure files access of 88W8987. It will take longer time, but will be convenient for you in the future.
Will ask my superior regarding this.
2. Can you also please share the link of the tool's source code so that I can compile?
I am using this publicly available source code.
Regards,
Elton