=============================================================================== U S E R M A N U A L Copyright 2008-2020 NXP 1) FOR DRIVER BUILD Goto source code directory wlan_src/. make [clean] build The driver and utility binaries can be found in ../bin_xxxx directory. The driver code supports Linux kernel from 2.6.32 to 5.8.0. 2) FOR DRIVER INSTALL a) Copy firmware image to /lib/firmware/nxp/, copy wifi_mod_para.conf to /lib/firmware/nxp/. b) Install WLAN driver There are drv_mode, max_sta_bss, max_uap_bss etc. module parameters. The bit settings of drv_mode are, Bit 0 : STA Bit 1 : uAP Bit 2 : WIFIDIRECT max_sta_bss: Maximum number of STA BSS (default 1, max 1) sta_name: Name of the STA interface (default: "mlan") max_uap_bss: Maximum number of uAP BSS (default 1, max 1) uap_name: Name of the uAP interface (default: "uap") max_wfd_bss: Maximum number of WIFIDIRECT BSS (default 1, max 1) wfd_name: Name of the WIFIDIRECT interface (default: "wfd") max_vir_bss: Number of Virtual interfaces (default 0) uap_oper_ctrl: uAP operation control when in-STA disconnect with ext-AP 0: default do nothing, 2: uAP stops and restarts automatically For example, to install multi-chip driver, insmod mlan.ko insmod moal.ko mod_para=nxp/wifi_mod_para.conf [drvdbg=0x7] wifi_mod_para.conf is used to support multi-chips which has different load module parameters. It contains the module parameters for different chips. c) Uninstall WLAN driver, ifconfig mlanX down ifconfig uapX down rmmod moal rmmod mlan To load driver with MFG firmware file, use mfg_mode=1 when insmod WLAN driver and specify MFG firmware name if needed. There are some other parameters for debugging purpose etc. Use modinfo to check details. drvdbg= dev_cap_mask= mac_addr=xx:xx:xx:xx:xx:xx auto_ds=0|1|2 ps_mode=0|1|2 max_tx_buf=2048|4096|8192 pm_keep_power=1|0 shutdown_hs=1|0 cfg_11d=0|1|2 dts_enable=0|1 fw_name = e.g. copy pcieuart9098_combo_v1.bin to firmware directory, fw_name=nxp/pcieuart9098_combo_v1.bin hw_test=0|1 fw_serial=0|1 req_fw_nowait=0|1 dfs53cfg=0|1|2 SD8887: antcfg=0|1|2|0xffff SD8897/SD8997: antcfg=0x11|0x13|0x33 slew_rate: Slew Rate Control value = 0|1|2|3 (0 is the slowest slew rate and 03 has the highest slew rate (default)) init_cfg= e.g. copy init_cfg.conf to firmware directory, init_cfg=nxp/init_cfg.conf cal_data_cfg= e.g. copy cal_data.conf to firmware directory, cal_data_cfg=nxp/cal_data.conf Note: Loading driver with 8887 must include correct cal_data_cfg parameter. dpd_data_cfg= e.g. copy dpd_data.conf to firmware directory, dpd_data_cfg=nxp/dpd_data.conf txpwrlimit_cfg= e.g. copy txpwrlimit_cfg_set.conf to firmware directory, txpwrlimit_cfg=nxp/txpwrlimit_cfg_set.conf cntry_txpwr= init_hostcmd_cfg= e.g. copy init_hostcmd_cfg.conf to firmware directory, init_hostcmd_cfg=nxp/init_hostcmd_cfg.conf band_steer_cfg= e.g. generate bscfg.conf by band_steer_cfg.conf, then copy bscfg.conf to firmware directory, band_steer_cfg=nxp/bscfg.conf sdio_rx_aggr=1|0 cfg80211_wext= Bit 0: STA WEXT Bit 1: uAP WEXT Bit 2: STA CFG80211 Bit 3: uAP CFG80211 reg_alpha2= skip_fwdnld=0|1 wq_sched_prio: Priority for work queue wq_sched_policy: Scheduling policy for work queue (0: SCHED_NORMAL, 1: SCHED_FIFO, 2: SCHED_RR, 3: SCHED_BATCH, 5: SCHED_IDLE) Please note that, both wq_sched_prio and wq_sched_policy should be provided as module parameters. If wq_sched_policy is (0, 3 or 5), then wq_sched_prio must be 0. wq_sched_prio should be 1 to 99 otherwise. rx_work=0|1|2 pcie_int_mode=0|1|2 pcie_int_mode=0|1 aggrctrl=1|0 usb_aggr=0|1|2 low_power_mode_enable=0|1 When low power mode is enabled, the output power will be clipped at ~+10dBm and the expected PA current is expected to be in the 80-90 mA range for b/g/n modes wakelock_timeout= defined(SD9098)||defined(USB9098) || defined(PCIE9098) || defined(SD9097) || defined(USB9097)|| defined(PCIE9097)||defined(SD8978) pmic=0|1 indication_gpio=0xXY hs_wake_interval= disconnect_on_suspend=0|1 hs_mimo_switch=0|1 gtk_rekey_offload=0|1|2 napi=0|1 fixed_beacon_buffer=0|1 GoAgeoutTime=0|x multi_dtim=0|x inact_tmo=0|x uap_max_sta: Maximum number of STA for UAP/GO (default 0, max 64) host_mlme=0|1 country_ie_ignore=0|1 beacon_hints=0|1 Note: On some platforms (e.g. PXA910/920) double quotation marks ("") need to used for module parameters. insmod sdxxx.ko " ..." 3) FOR DRIVER PROC & DEBUG The following info are provided in /proc/net/mwlan/adapterX/mlanY|uapY|wfdY/info, on kernel 2.6.24 or later, the entry is /proc/mwlan/adapterX/mlanY|uapY|wfdY/info. driver_name = "wlan" or "uap" driver_version = interface_name = "mlanX", "uapX" or "wfdX" bss_mode = "Ad-hoc" | "Managed" | "Auto" | "Unknown" media_state = "Disconnected" | "Connected" mac_address = <6-byte adapter MAC address> multicase_count = // Only for STA essid = // Only for STA bssid = // Only for STA channel = // Only for STA region_code = // Only for STA multicast_address[n] = // Only for STA num_tx_bytes = num_rx_bytes = num_tx_pkts = num_rx_pkts = num_tx_pkts_dropped = num_rx_pkts_dropped = num_tx_pkts_err = num_rx_pkts_err = carrier "on" | "off" tx queue "stopped" | "started" tkip_mic_failures = 0 // Only for uAP ccmp_decrypt_errors = 0 // Only for uAP wep_undecryptable_count = 0 // Only for uAP wep_icv_error_count = 0 // Only for uAP decrypt_failure_count = 0 // Only for uAP mcast_tx_count = 0 // Only for uAP failed_count = 0 // Only for uAP retry_count = 0 // Only for uAP multiple_retry_count = 0 // Only for uAP frame_duplicate_count = 0 // Only for uAP rts_success_count = 0 // Only for uAP rts_failure_count = 0 // Only for uAP ack_failure_count = 0 // Only for uAP rx_fragment_count = 0 // Only for uAP mcast_rx_frame_count = 0 // Only for uAP fcs_error_count = 0 // Only for uAP tx_frame_count = 0 // Only for uAP rsna_tkip_cm_invoked = 0 // Only for uAP rsna_4way_hshk_failures = 0 // Only for uAP The following debug info are provided in /proc/net/mwlan/adapterX/mlanY|uapY|wfdY/debug, on kernel 2.6.24 or later, the entry is /proc/mwlan/adapterX/mlanY|uapY|wfdY/debug. drvdbg = wmm_ac_vo = wmm_ac_vi = wmm_ac_be = wmm_ac_bk = max_tx_buf_size = tx_buf_size = curr_tx_buf_size = ps_mode = <0/1, CAM mode/PS mode> ps_state = <0/1/2/3, awake state/pre-sleep state/sleep-confirm state/sleep state> is_deep_sleep = <0/1, not deep sleep state/deep sleep state> // Only for STA wakeup_dev_req = <0/1, wakeup device not required/required> wakeup_tries = hs_configured = <0/1, host sleep not configured/configured> hs_activated = <0/1, extended host sleep not activated/activated> tx_pkts_queued = pps_uapsd_mode = <0/1, PPS/UAPSD mode disabled/enabled> // Only for STA sleep_pd = // Only for STA qos_cfg = // Only for STA tx_lock_flag = <0/1, Tx lock flag> // Only for STA port_open = <0/1, port open flag> // Only for STA scan_processing = <0/1, scan processing flag> // Only for STA num_bridge_pkts = // Only for uAP num_drop_pkts = // Only for uAP num_tx_timeout = num_cmd_timeout = timeout_cmd_id = timeout_cmd_act = last_cmd_id = last_cmd_act = last_cmd_index = <0 based last command index> last_cmd_resp_id = last_cmd_resp_index = <0 based last command response index> last_event = last_event_index = <0 based last event index> num_cmd_h2c_fail = num_cmd_sleep_cfm_fail = num_tx_h2c_fail = num_cmdevt_c2h_fail = num_rx_c2h_fail = num_int_read_fail = last_int_status = num_evt_deauth = // Only for STA num_evt_disassoc = // Only for STA num_evt_link_lost = // Only for STA num_cmd_deauth = // Only for STA num_cmd_assoc_ok = // Only for STA num_cmd_assoc_fail = // Only for STA cmd_sent = <0/1, send command resources available/sending command to device> data_sent = <0/1, send data resources available/sending data to device> mp_rd_bitmap = curr_rd_port = mp_wr_bitmap = curr_wr_port = txbd_rdptr = txbd_wrptr = rxbd_rdptr = rxbd_wrptr = eventbd_rdptr = eventbd_wrptr = cmd_resp_received = <0/1, no cmd response to process/response received and yet to process> event_received = <0/1, no event to process/event received and yet to process> tx_cmd_urb_pending = tx_data_urb_pending = rx_cmd_urb_pending = rx_data_urb_pending = ioctl_pending = tx_pending = rx_pending = lock_count = malloc_count = mbufalloc_count = malloc_cons_count = main_state = sdiocmd53w = sdiocmd53r = hs_skip_count = hs_force_count = Issue SDIO cmd52 read/write through proc. Usage: echo "sdcmd52rw= [data]" > /proc/mwlan/adapterX/config where the parameters: func: The function number to use (0-7) reg: The address of the register data: The value to write, read if the value is absent For SDIO MMC driver, only function 0 and WLAN function access is allowed. And there is a limitation for function 0 write, only vendor specific CCCR registers (0xf0 -0xff) are permiited. Examples: echo "sdcmd52rw= 0 4" > /proc/mwlan/adapterX/config # read func 0 address 4 cat /proc/mwlan/adapterX/config # display the register value echo "sdcmd52rw= 1 3 0xf" > /proc/mwlan/adapterX/config # write 0xf to func 1 address 3 Issue debug_dump command through proc. Usage: echo "debug_dump" > /proc/mwlan/adapterX/config Examples: echo "debug_dump" > /proc/mwlan/adapterX/config # dump driver internal debug status. Use dmesg or cat /var/log/debug to check driver debug messages. Update /proc/sys/kernel/printk to change message log levels. For example, echo 6 > /proc/sys/kernel/printk (messages with a higher priority than 6 will be printed to the console) echo 15 > /proc/sys/kernel/printk (all messages will be printed to console) 4) FOR FW RELOAD a) Enable parallel firmware download in driver parameter insmod sdxxx.ko fw_serial=0 b) default fw name for parallel firmware download sd8887_wlan_a2.bin c) Trigger FW reload echo "fw_reload=1" > /proc/mwlan/adapterX/config trigger inband firmware reset and reload firmware echo "fw_reload=2" > /proc/mwlan/adapterX/config trigger firmware reload echo "fw_reload=3" > /proc/mwlan/adapterX/config set firmware reload flag in driver. echo "fw_reload=4" > /proc/mwlan/config trigger pcie FLR and reload firmware. (Note: This feature will be supported on Robin3 and KF2. For CAC-A2, it only work with the board which supports parallel fw download) 5) FOR RF test mode commands: Following commands are used to perform RF testing of the wifi chipset. Please not that these test mode commands can only be issued while the device is in disconnected state and the uAP BSS is inactive. Normal wifi operations cannot be used on entering RF Test Mode. Enter RF Test Mode: echo "rf_test_mode=1" > /proc/mwlan/adapterX/config Exit RF Test Mode: echo "rf_test_mode=0" > /proc/mwlan/adapterX/config Please note that after exiting the RF Test Mode, the FW needs to be reset in order to use normal wifi connectivity. To get the set of available RF Test Mode commands, currently set parameters values for each command and the output, cat /proc/mwlan/adapterX/config Set Tx Antenna For 1x1 chipsets, 1:Main, 2:Aux when antenna diversity is supported For 2x2 chipsets, 1:Path A, 2: Path B, 3: Path A+B Both Tx and Rx must be set to same antenna path echo "tx_antenna=1" > /proc/mwlan/adapterX/config Set Rx Antenna For 1x1 chipsets, 1:Main, 2:Aux when antenna diversity is supported For 2x2 chipsets, 1:Path A, 2:Path B, 3:Path A+B Both Tx and Rx must be set to same antenna path echo "rx_antenna=1" > /proc/mwlan/adapterX/config Set RF band (0:2G, 1:5G) For 2G, channel will be reset to 6, while for 5G, to channel 36 echo "band=0" > /proc/mwlan/adapterX/config Set RF bandwidth (0:20MHz, 1:40MHz, 4:80MHz) echo "bw=0" > /proc/mwlan/adapterX/config Set RF channel echo "channel=6" > /proc/mwlan/adapterX/config Get and reset packet error rate echo "get_and_reset_per" > /proc/mwlan/adapterX/config Set Tx Power This command will set power only if caldata is already loaded in the FW. Power (0 to 24 dBm) Modulation (0: CCK, 1:OFDM, 2:MCS) Path ID (0: PathA, 1:PathB, 2:PathA+B) echo "tx_power=16 2 0" > /proc/mwlan/adapterX/config Set Tx Continuous Mode Start (0:disable, 1:enable) Continuous Wave Mode (0:disable, 1:enable) Payload Pattern (0 to 0xFFFFFFFF) CS Mode (Applicable only when continuous wave is disabled) (0:disable, 1:enable) Active SubChannel (0:low, 1:upper, 3:both) Tx Data Rate (Rate Index corresponding to legacy/HT/VHT rates) Example: To start continuous wave (tone) mode, first stop any ongoing Tx and then start wave mode: step1: echo "tx_continuous=0" > /proc/mwlan/adapterX/config step2: echo "tx_continuous=1 1 0xAAA 0 3 7" > /proc/mwlan/adapterX/config Example: To start continuous packet mode, first stop any ongoing Tx and then start pkt mode: step1: echo "tx_continuous=0" > /proc/mwlan/adapterX/config step2: echo "tx_continuous=1 0 0xAAA 0 3 7" > /proc/mwlan/adapterX/config stop: echo "tx_continuous=0" > /proc/mwlan/adapterX/config Set Tx Frame Start (0:disable, 1:enable) Tx Data Rate (Rate Index corresponding to legacy/HT/VHT rates) Payload Pattern (0 to 0xFFFFFFFF) Payload Length (1 to 0x400) Adjust Burst SIFS Gap (0:disable, 1:enable) Burst SIFS in us (0 to 255us) Short Preamble (0:disable, 1:enable) Active SubChannel (0:low, 1:upper, 3:both) Short GI (0:disable, 1:enable) Adv Coding (0:disable, 1:enable) Beamforming (0:disable, 1:enable) GreenField Mode (0:disable, 1:enable) STBC (0:disable, 1:enable) BSSID (xx:xx:xx:xx:xx:xx) Example: To start Tx frame with duty cycle, first stop any ongoing Tx and then start Tx frame: echo "tx_frame=0" > /proc/mwlan/adapterX/config echo "tx_frame=1 7 0xAAA 0x100 1 20 0 0 0 0 0 0 0 05:43:3f:c4:51" > /proc/mwlan/adapterX/config =============================================================================== U S E R M A N U A L F O R MLANUTL NAME mlanutl - configure the additional parameters available for NXP mdriver. SYNOPSIS mlanutl -v mlanutl [parameters] ... mlanutl mlanX verext mlanutl mlanX version mlanutl mlanX hostcmd generate_raw mlanutl mlanX getdatarate mlanutl uapX getdatarate mlanutl mlanX drvdbg [n] mlanutl mlanX getlog mlanutl mlanX getsignal [m] [n] mlanutl mlanX signalextcfg [m] mlanutl mlanX getsignalextv2 [m] mlanutl mlanX getsignalext [m] mlanutl mlanX get_txpwrlimit [raw_data_file] mlanutl mlanX aggrpriotbl [ ... ] mlanutl uapX aggrpriotbl [ ... ] mlanutl mlanX addbapara [

] mlanutl uapX addbapara [

] mlanutl mlanX addbareject [ ... ] mlanutl uapX addbareject [ ... ] mlanutl mlanX dyn_bw [n] mlanutl mlanX vhtcfg [l] [m] [n] [o] mlanutl uapX vhtcfg [l] [m] [n] [o] mlanutl mlanX httxcfg [] [] mlanutl mlanX htcapinfo [] [] DESCRIPTION Those commands are used to send additional commands to the NXP MLAN card via the Linux device driver. The mlanX parameter specifies the network device that is to be used to perform this command on. It could be mlan0, mlan1 etc. verext Retrieve and display an extended version string from the firmware Usage: mlanutl mlanX verext [#] where [#] is an optional argument to retrieve a specific version string, omission of the argument retrieves the 0 indexed string. version This is used to get the current version of the driver and the firmware. drvdbg This command is used to set/get the bit masks of driver debug message control. Usage: mlanutl mlanX drvdbg [n] Where the parameter is the generic debug message control bit mask. The following types of driver debug messages can be dynamically enabled or disabled by setting or clearing the corresponding bits, bit 0: MMSG PRINTM(MMSG,...) bit 1: MFATAL PRINTM(MFATAL,...) bit 2: MERROR PRINTM(MERROR,...) bit 3: MDATA PRINTM(MDATA,...) bit 4: MCMND PRINTM(MCMND,...) bit 5: MEVENT PRINTM(MEVENT,...) bit 6: MINTR PRINTM(MINTR,...) bit 7: MIOCTL PRINTM(MIOCTL,...) ... bit 16: MDAT_D PRINTM(MDAT_D,...), DBG_HEXDUMP(MDAT_D,...) bit 17: MCMD_D PRINTM(MCMD_D,...), DBG_HEXDUMP(MCMD_D,...) bit 18: MEVT_D PRINTM(MEVT_D,...), DBG_HEXDUMP(MEVT_D,...) bit 19: MFW_D PRINTM(MFW_D,...), DBG_HEXDUMP(MFW_D,...) bit 20: MIF_D PRINTM(MIF_D,...), DBG_HEXDUMP(MIF_D,...) ... bit 28: MENTRY PRINTM(MENTRY,...), ENTER(), LEAVE() bit 29: MWARN PRINTM(MWARN,...) bit 30: MINFO PRINTM(MINFO,...) If CONFIG_DEBUG=2, all kinds of debug messages can be configured. If CONFIG_DEBUG=1, all kinds of debug messages can be configured except for MENTRY, MWARN and MINFO. By default MMSG, MFATAL and MERROR are enabled. Some special debug messages, '*' // MLAN driver ISR is called (bit 6 MINTR enabled) '|' // PS awake event is received (bit 5 MEVENT enabled) '_' // PS sleep event is received (bit 5 MEVENT enabled) '+' // PS sleep confirm is sent (bit 5 MEVENT enabled) Examples: mlanutl mlan0 drvdbg : Get the current driver debug masks mlanutl mlan0 drvdbg 0 : Disable all the debug messages mlanutl mlan0 drvdbg 7 : Enable MMSG, MFATAL and MERROR messages mlanutl mlan0 drvdbg 0x20037 : Enable MMSG, MFATAL, MEEROR, MCMND, MEVENT and MCMD_D messages mlanutl mlan0 drvdbg -1 : Enable all the debug messages hostcmd generate_raw This command is used to generate the raw data(hostcommand block) for hostcommand in and write that to file Usage: mlanutl mlanX hostcmd generate_raw getdatarate This command is used to get the data rate being used in last Tx packet and last Rx packet. getlog This command is used to get the statistics available in the station. Following stats are displayed:- dot11MulticastTransmittedFrameCount Increments when the multicast bit is set in the destination MAC address of a successfully transmitted MSDU dot11FailedCount Increments when an MSDU is not transmitted successfully dot11RetryCount Increments when an MSDU is successfully transmitted after one or more retransmissions dot11MultipleRetryCount Increments when an MSDU is successfully transmitted after more than one retransmission dot11FrameDuplicateCount Increments when a frame is received that the Sequence Control field is indicating a duplicate count dot11RTSSuccessCount Increments when a CTS is received in response to an RTS dot11RTSFailureCount Increments when a CTS is not received in response to an RTS dot11ACKFaliureCount Increments when an ACK is not received when expected dot11ReceivedFragmentCount Increments for each successfully received MPDU of type Data or Management dot11MulticastReceivedFrameCount Increments when a MSDU is received with the multicast bit set in the destination MAC address dot11FCSErrorCount Increments when an FCS error is detected in a received MPDU dot11TransmittedFrameCount Increments for each successfully transmitted MSDU dot11WeplcvErrCnt Increment when WEP decryption error for key index 0.3 beaconReceivedCnt Increments when received beacon beaconMissedCnt Increments when beacon missed dot11TransmittedFrameCount Increments for each successfully transmitted MSDU dot11QosTransmittedFragmentCount Increments when a corresponding UP's MPDU transmitted successfully dot11QosFailedCount Increments when a corresponding UP's MSDU not transmitted successfully dot11QosRetryCount Increment when a corresponding UP's MSDU transmitted successfully after one or more retransmission dot11QosMultipleRetryCount Increments when a corresponding UP's MSDU is successfully transmitted after more than one retransmission dot11QosFrameDuplicateCount Increments when a corresponding UP's frame is received that the Sequence Control field is indicating a duplicate frame dot11QosRTSSuccessCount Increments when a CTS is received in response to an RTS, which is sent for a corresponding UP's Qos frame dot11QosRTSFailureCount Increments when a CTS is not received in response to an RTS, which is sent for a corresponding UP's Qos frame dot11QosACKFailureCount Increments when an ACK is not received when expected for a corresponding UP's Qos frame dot11QosReceivedFragmentCount Increments when a corresponding UP's MPDU received dot11QosTransmittedFrameCount Increments when a corresponding UP's MSDU transmitted dot11QosDiscardedFrameCount Increments when a corresponding UP's MSDU not transmitted successfully dot11QosMPDUsReceivedCount Increments when a corresponding UP's MDPU received dot11QosRetriesReceivedCount Increments when a corresponding UP's MDPU received which retry bit is set dot11RSNAStatsCMACICVErrors Increment when a MPDU discard by CMAC integrity check dot11RSNAStatsCMACReplays Increments when a MPDU discarded by the CMAC replay error dot11RSNAStatsRobustMgmtCCMPReplays Increments when a robust management frame discarded by CCMP replay error dot11RSNAStatsTKIPICVErrors Increments when a MPDU discarded by TKIP ICV error dot11RSNAStatsTKIPReplays Increments when a MPDU discarded by TKIP replay error dot11RSNAStatsCCMPDecryptErrors Increments when a MPDU discarded by CCMP decryption error dot11RSNAStatsCCMPReplays Increments when a MPDU discarded by CCMP replay error dot11TransmittedAMSDUCount Increments when a A-MSDU transmitted successfully dot11FailedAMSDUCount Increments when a A-MSDU not transmitted successfully dot11RetryAMSDUCount Increments when a A-MSDU is successfully transmitted after one or more retransmissions dot11MultipleRetryAMSDUCount Increments when a A-MSDU is successfully transmitted after more than one retransmissions dot11TransmittedOctetsInAMSDUCount Increments by the number of octets in the frame body of an A-MSDU frame when an A-MSDU frame is successfully transmitted dot11AMSDUAckFailureCount Increments when an acknowledgment to an A-MSDU is not received when expected. dot11ReceivedAMSDUCount Increments when a A-MSDU frame received dot11ReceivedOctetsInAMSDUCount Increments by the number of octets in the frame body of an A-MSDU frame when an A-MSDU frame is received dot11TransmittedAMPDUCount Increments when an A-MPDU is transmitted dot11TransmittedMPDUsInAMPDUCount Increments by the number of MPDUs in the A-MPDU when an A-MPDU is transmitted dot11TransmittedOctetsInAMPDUCount Increments by the number of octets in the A-MPDU frame when an A-MPDU frame is transmitted dot11AMPDUReceivedCount Increments when the MAC receives an A-MPDU from the PHY dot11MPDUInReceivedAMPDUCount Increments by the number of MPDUs received in the A-MPDU when an A-MPDU is received dot11ReceivedOctetsInAMPDUCount Increments by the number of octets in the A-MPDU frame when an A-MPDU frame is received dot11AMPDUDelimiterCRCErrorCount Increments when an MPDU delimiter has a CRC error when this is the first CRC error in the received A-MPDU or when the previous delimiter has been decoded correctly getsignal This command gets the last and average value of RSSI, SNR and NF of Beacon and Data. Note: This command is available only when STA is connected. where value of m is: 1 -- RSSI (Receive Signal Strength Indication) 2 -- SNR (Signal to Noise Ratio) 3 -- NF (Noise Floor) where value of n is: 1 -- Beacon last 2 -- Beacon average 3 -- Data last 4 -- Data average Examples: mlanutl mlan0 getsignal 1 : Get the RSSI info (beacon last, beacon average, data last and data average) mlanutl mlan0 getsignal 3 4 : Get the NF of data average mlanutl mlan0 getsignal 2 1 : Get the SNR of beacon last mlanutl mlan0 getsignal : Get all of the signal info mlan0 getsignal:-32 -33 -35 -36 67 59 63 56 -99 -92 -98 -92 RSSI info: beacon last -32, beacon average -33, data last -35, data average -36 SNR info: beacon last 67, beacon average 59, data last 63, data average 56 NF info: beacon last -99, beacon average -92, data last -98, data average -92 getsignalext This command gets the last and average value of RSSI, SNR and NF of Beacon and Data of spectific antenna path. Note: This command is available only when STA is connected. Driver will enable signalext and collect signal information for one second where value of m is: 1 -- PATH A 2 -- PATH B 3 -- PATH A+B Examples: mlanutl mlan0 getsignalext :Get All path's signal. mlanutl maln0 getsignalext 3 :Get path A+B signal mlanutl maln0 getsignalext 1 :Get path A signal mlanutl mlan0 getsignalext 2 :Get path B signal PATH A: -46 -46 -49 -49 65 45 39 42 -111 -91 -88 -91 PATH A: RSSI info: beacon last -46, beacon average -46, data last -49, data average -49 SNR info: beacon last 65, beacon average 45, data last 39, data average 42 NF info: beacon last -111, beacon average -91, data last -88, data average -91 signalextcfg This command is used to enable/disable signalext Usage: mlanutl mlanX signalextcfg [m] where the value of [m] is: 1 -- enable signalext in firmware 0 -- disable signalext in firmware Examples: mlanutl mlan0 signalextcfg 1 : Enable signalext in firmware mlanutl mlan0 signalextcfg 0 : Disable signalext in firmware getsignalextv2 This command gets the last and average value of RSSI, SNR and NF of Beacon and Data of spectific antenna path. Note: This command is available only when STA is connected. "mlanutl mlanX signalextcfg 1" command needs to be issued before issuing this command where value of m is: 1 -- PATH A 2 -- PATH B 3 -- PATH A+B Examples: mlanutl mlan0 getsignalextv2 :Get All path's signal. mlanutl maln0 getsignalextv2 3 :Get path A+B signal mlanutl maln0 getsignalextv2 1 :Get path A signal mlanutl mlan0 getsignalextv2 2 :Get path B signal PATH A: -46 -46 -49 -49 65 45 39 42 -111 -91 -88 -91 PATH A: RSSI info: beacon last -46, beacon average -46, data last -49, data average -49 SNR info: beacon last 65, beacon average 45, data last 39, data average 42 NF info: beacon last -111, beacon average -91, data last -88, data average -91 get_txpwrlimit This command is used to get the txpwrlimit table in FW Usage: mlanutl mlanX get_txpwrlimit [raw_data_file] where 0: Get 2.4G txpwrlimit table 0x10: Get 5G sub0 txpwrlimit table 0x11: Get 5G sub1 txpwrlimit table 0x12 Get 5G sub2 txpwrlimit table 0x1f Get all 5G txpwrlimit table 0xff Get both 2G and 5G txpwrlimit table driver will save fw raw data to this file. Examples: mlanutl mlan0 get_txpwrlimit 0 : Get 2G txpwrlimit table. mlanutl mlan0 get_txpwrlimit 0x10 : Get 5G sub band0 txpwrlimit table mlanutl mlan0 get_txpwrlimit 0xff txpwrlimit.bin : Get both 2G/5G txpwrlimit table and save to txpwrlimit.bin aggrpriotbl This command is used set/get the priority table for AMPDU/AMSDU traffic per tid. This command can also be used to disable AMPDU/AMSDU for a given tid. In case of AMPDU this priority table will be used to setup block ack (to make sure the highest priority tid always uses AMPDU as we have limited AMPDU streams) where ... - This is priority for Tid0 for AMPDU packet. A priority could be any values between 0 - 7, 0xff to disable aggregation. - This is priority for Tid0 for AMSDU packet. A priority could be any values between 0 - 7, 0xff to disable aggregation. eg: mlanutl mlanX aggrpriotbl - This command will get the current Priority table for AMPDU and AMSDU. <2 2 0 0 1 1 3 3 4 4 5 5 255 255 255 255>. This is read as <"Prio for AMPDU for Tid0" "Prio for AMSDU for Tid0" "Prio for AMPDU for Tid1" "Prio for AMSDU for Tid1" and so on mlanutl mlanX aggrpriotbl 2 2 0 0 1 1 3 3 4 4 5 5 255 255 255 255 - This will set the priority table for AMPDU and AMSDU Priority for Tid0/AMPDU = 2, Tid0/AMSDU = 2, Tid1/AMPDU = 0, Tid1/AMSDU = 0 and so on. Aggregation for Tid6 and Tid7 are disabled. Here higher the priority number, higher the priority (i.e. 7 has higher priority than 6). Similarly for AMSDU. mlanutl mlanX aggrpriotbl 0xff 2 0xff 0 0xff 1 0xff 3 0xff 4 0xff 5 0xff 0xff 0xff 0xff - This will disable AMPDU for all the TIDs but will still keep AMSDU enabled to Tid0 to Tid5 The default setting is 2 255 0 255 1 255 3 255 4 255 5 255 255 255 255 255. A delBA should be seen in case a disable happens on a TID for which AMPDU stream is currently setup. Note:- This command should only be issue in disconnected state. addbapara This command can be used to update the default ADDBA parameters. where is - This is the block ack timeout for ADDBA request. 0 : Disable (recommended for throughput test) 1 - 65535 : Block Ack Timeout in TU where is - Window size for ADDBA request. (16 is recommended and default value) where is - Window size for ADDBA response. (48 is recommended and 32 is default value) (16 is recommended for IWNCOMM AP in WAPI throughput test) Current window size limit for Tx as well as Rx is 1023. where

is - amsdu support for ADDBA request. (1 is default value) 0: disable amsdu in ADDBA request 1: enable amsdu in ADDBA request where is - amsdu support for ADDBA response. (1 is default value) 0: disable amsdu in ADDBA response 1: enable amsdu in ADDBA response eg: mlanutl mlanX addbapara - This command will get the current addba params mlanutl mlanX addbapara 1000 64 8 0 0 - This will change the ADDBA timeout to (1000 * 1024) us, txwinsize to 64 and rxwinsize to 8 and disable amdsu in ADDBA request/response. The default setting is 65535 16 32 1 1. In case the ADDBA timeout value is updated then a ADDBA is sent for all streams to update the timeout value. In case txwinsize and/or rxwinsize is updated, the effect could only be seen on next ADDBA request/response. The current streams will not be affected with this change. In case of txamsdu/rxamsdu is updated, the effect could only be seen on next ADDBA request/response. The current streams will not be affected with this change. AMSDU in AMPDU stream will be enabled when AP support this feature and AMSDU is enabled in aggrpriotbl. addbareject This command is used set/get the addbareject table for all the TIDs. This command can also be used to enable rejection of ADDBA requests for a given tid. where ... - This can be 0/1 for TidX. 1 enables rejection of ADDBA request for TidX and 0 would accept any ADDBAs for TidX. eg: mlanutl mlanX addbareject - This command will get the current table. [0 0 0 0 0 0 0 0]. ADDBA would be accepted for all TIDs. This is the default state. mlanutl mlanX addbareject 0 0 1 1 0 0 0 0 - This command will accept ADDBA requests for Tid [0,1,4,5,6,7] and reject ADDBA requests for Tid [2,3] mlanutl mlanX addbareject 1 1 1 1 1 1 1 1 - This will enable rejection of ADDBA requests for all Tids. Note:- This command should only be issue in disconnected state. vhtcfg This command is used to set and get various 11ac specific configuration for transmission and reception. For the SET operation, all paramaters may be applied. For the GET operation, only the first two parameters are applied. The 6th argument "rx_mcs_set" can be used to disbale/enable 802.11ac. where is - This is the band setting for the vhtcfg 0: Settings for both 2.4G and 5G bands (for SET operation, 11N BW only) 1: Settings for 2.4G band (for 11N BW only) 2: Settings for 5G band where is - This parameter specifies the configuration of VHT operation for TX or/and VHT capabilities 0: Unspecified 1: configuration of VHT capabilities for Tx operations (STA only) 2: configuration of VHT capabilities for association (STA only) 3: configuration of VHT capabilities (uAP only) Note: For the STA, the VHT capabilities configuration is applied in association, whereas the VHT operations configuration is actually used in Tx. where [l] is - This parameter specifies the bandwidth (BW) configuration applied to the vhtcfg. If is 1/3 (Tx operations), 0: Tx BW follows the BW (20/40 MHz) from 11N CFG 1: Tx BW follows the BW (80/160/80+80 MHz) from VHT Capabilities defined in below for 5G band. If is 2 (association), 0: Rx BW follows the BW (20/40 MHz) from 11N CFG 1: Rx BW follows the BW (80/160/80+80 MHz) from VHT Capabilities defined in below for 5G band. where [m] is - This parameter specifies the VHT capabilities info if is 2 (association) or the VHT Tx operations if is 1 (Tx operations). The VHT Tx operation should be a subset of VHT capabilities for association. It is a bitmap and should be used as follows: Bit 31-30: Reserved and set to 0 Bit 29: TX antenna pattern consistency 1: antenna pattern does not change 0: antenna pattern might change Bit 28: RX antenna pattern consistency 1: antenna pattern does not change 0: antenna pattern might change Bit 27-26: VHT link adaptation capable 0: no feedback of VHT MFB from the STA 1: unsolicted feedback of VHT MFB from the STA 2: both response and unsolicted feedback of VHT MFB from the STA 3: reserved and set to 0 Bit 25-23: Maximum A-MPDU length exponent Bit 22: +HTC-VHT capable (1: enable. 0 disable) Bit 21: VHT TXOP PS Bit 20: MU beamformee capable (1: enable. 0 disable) Bit 19: MU beamformer capable (1: enable. 0 disable) Bit 18-16: Number of sounding dimensions (set to maximum-1 if Bit 11 is 1. Otherwise, reserved and set to 0) Bit 15-13: Compressed steering number of beamformer antennas supported (set to maximum-1 if Bit 12 is 1. Otherwise, reserved and set to 0) Bit 12: SU beamformee capable (1: enable. 0 disable) Bit 11: SU beamformer capable (1: enable. 0 disable) Bit 10-8: Rx STBC 0: no support 1: support of 1 spatial stream 2: support of 1-2 streams 3: support of 1-3 spatial streams 4: support of 1-4 spatial streams 5-7: reserved and set to 0 Bit 7: TX STBC (1: enable. 0 disable) Bit 6: Short GI for 160 and 80+80 MHz (1: enable. 0 disable) Bit 5: Short GI for 80 MHz (1: enable. 0 disable) Bit 4: Rx LDPC (1: enable. 0 disable) Bit 3-2: Supported channel width set. 0: no support of either 160 or 80+80 MHz. 1: support of 160 MHz 2: support of both 160 and 80+80 MHz. 3: reserved and set to 0. Bit 1-0: Maximum MPDU length 0: 3895 octets. 1: 7991 octets. 2: 11454 octets. 3: reserved and set to 0. Note: for the STA, if is 1 (Tx operations), the bitmap for may be simplied as follows: Bit 31-8: Reserved and set to 0 Bit 7: Tx STBC (1: enable. 0 disable) Bit 6: Reserved and set to 0 Bit 5: Short GI for 80 Mhz (1: enable. 0 disable) Bit 4: LDPC (1: enable. 0 disable) Bit 3-0: Reserved and set to 0 where [n] is , - This parameter specifies the TX MCS map. It may not be used for the STA if is 1 (Tx operations). It is a bitmap and should be used as following Bit 15-0: MCS map, which is defined as folows: Bit 15-14: Max MCS for 8 SS Bit 13-12: Max MCS for 7 SS Bit 11-10: Max MCS for 6 SS Bit 9-8: Max MCS for 5 SS Bit 7-6: Max MCS for 4 SS Bit 5-4: Max MCS for 3 SS Bit 3-2: Max MCS for 2 SS Bit 1-0: Max MCS for 1 SS where [o] is . - This parameter specifies the RX MCS map. It may not be used for the STA if is 1 (Tx operations). It is a bitmap with the same sructure as for rx_mcs_map = 0xffff : FW will disable 802.11ac rx_mcs_map = others : FW will enable 802.11ac Note: The user setting of vhtcap may be overwritten by the driver if the setting of those fields is beyond the hardware capabilities. Examples: mlanutl mlan0 vhtcfg 2 1 : Get current VHT configuration in 5GHz for the STA. mlanutl mlan0 vhtcfg 2 2 : Get maximum VHT configuration in 5GHz for the STA. mlanutl mlan0 vhtcfg 2 1 1 0x000001f0 : Set the Tx operations configuration in 5GHz for the STA, Tx BW follows the VHT Capabilities. mlanutl mlan0 vhtcfg 2 2 0 0x000001f0 0xfff5 0xfffa : Set the VHT capabilities configuration in 5GHz for the STA, the Tx supports MCS 0-8 for both 1 and 2 spatial streams, while the Rx supports MCS 0-9 for both 1 and 2 spatial streams. mlanutl uap0 vhtcfg 2 3 0 0x000001f0 0xfffa 0xfffa : Set the current/maximum VHT configuration in 5GHz for the uAP. Both Tx and Rx supports MCS 0-9 for both 1 and 2 spatial streams. mlanutl uap0 vhtcfg 2 3 0 0x000001b0 : Set the VHT capability information in 5GHz for the uAP, and keep the Tx/Rx MCS Map same as before. dyn_bw This command is used to set/get dynamic bandwidth. Usage: mlanutl mlanX dyn_bw [n] where [BIT0] 0 = TxInfo Indicated BW Disable 1 = TxInfo Indicated BW Enable [BIT1] 0 = TxInfo Dynamatic BW Disable 1 = TxInfo Dynamatic BW Enable [BIT2] 0 = TxInfo Force send RTS Disable 1 = TxInfo Force send RTS Enable [BIT3] 0 = Mac Dynamic BW Operation Mode Disable (Static BW Operation Mode) 1 = Mac Dynamic BW Operation Mode Enable other bits reserved. If no parameter provided, get is performed. Examples: mlanutl mlan0 dyn_bw 0x1 : Enable TxInfo Indicated BW mlanutl mlan0 dyn_bw : get current setting httxcfg This command is used to configure various 11n specific configuration for transmit (such as Short GI, Channel BW and Green field support) where is 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. where is - This is the band info for settings. 0: Settings for both 2.4G and 5G bands 1: Settings for 2.4G band 2: Settings for 5G band Example: mlanutl mlanX httxcfg This will display HT Tx configuration for 2.4G and 5G band. mlanutl mlanX httxcfg 0x62 This will enable 20/40 and Short GI but will disable Green field for 2.4G and 5G band. mlanutl mlanX httxcfg 0x30 1 This will enable Short GI 20 Mhz and Green field for 2.4G band. The default value is 0x20 for 2.4G and 0x62 for 5G. Note:- If 20/40 MHz support is disabled in htcapinfo, device will not transmit in 40 MHz even 20/40 MHz is enabled in httxcfg. htcapinfo This command is used to configure some of parameters in HTCapInfo IE (such as Short GI, Channel BW, and Green field support) where is - This is a bitmap and should be used as following Bit 29: Green field enable/disable Bit 26: Rx STBC Support enable/disable. (As we support single spatial stream only 1 bit is used for Rx STBC) Bit 25: Tx STBC support enable/disable. Bit 24: Short GI in 40 Mhz enable/disable Bit 23: Short GI in 20 Mhz enable/disable Bit 22: Rx LDPC enable/disable Bit 17: 20/40 Mhz enable disable. Bit 8: Enable/disable 40Mhz Intolarent bit in ht capinfo. 0 will reset this bit and 1 will set this bit in htcapinfo attached in assoc request. All others are reserved and should be set to 0. Setting of any other bits will return error. where is - This is the band info for settings. 0: Settings for both 2.4G and 5G bands 1: Settings for 2.4G band 2: Settings for 5G band Example: mlanutl mlanX htcapinfo This will display HT capabilties information. If the information for 2.4G and 5G is different, the first value is for 2.4G and the second value is for 5G. Otherwise, it will display a single value for both bands. mlanutl mlanX htcapinfo 0x1820000 This will enable Short GI, Channel BW to 20/40 and disable Green field support for 2.4G and 5G band. mlanutl mlanX htcapinfo 0x800000 2 This will enable Short GI, Channel BW to 20 only, No Rx STBC support and disable Green field support for 5G band. The default value is 0x4800000 for 2.4G and 0x5820000 for 5G. Note:- This command can be issued any time but it will only come to effect from next association. (as HTCapInfo is sent only during Association).