Currently, in case of Tx action frame driver start the ROC req based on
the offchannel is set. Due to this, if the TX action freq is same as
current vdev freq then also driver started the ROC req on the same
channel.
Fix is, even offchannel is set, but current vdev freq is same as
that of the channel for the tx frame. Driver will skip the ROC.
Change-Id: I7ab2ade0f01ad5035f7b156ded7eb7af7c826b9e
CRs-Fixed: 3366671
The kernel-doc script identified a few documentation issues in
components/p2p, so fix them.
Change-Id: I24e612e8976e721281a6ede4afefd20de0622599
CRs-Fixed: 3359593
P2P OTA rx frame indications are logged in info level.
This causes excessive logs to kernel logging when peer
sends multiple frames back to back. Rate limit the logs
to avoid excessive logs to kernel logging.
Change-Id: Ia97aef1490b8dbb759c27ba60c48c93ad7831497
CRs-Fixed: 3352880
In management frame TX path from userspace, the
p2p_set_mac_filter structure is used and is defined under P2P
converged macro.
Converge this p2p_set_mac_filter structure to set_rx_mac_filter
structure in qca-wifi-host-cmn to use this by all components
Change-Id: Iefcf36f8b327458b2418bd364ae84b28ca56e7f9
CRs-Fixed: 3306700
In case if supplicant issues probe request without ROC,
Host should drop it for STA mode.
Change-Id: I290f441f6ddc41dd8d7434ad7d4fd1b4fcc0c22e
CRs-Fixed: 3296264
During ANQP query, supplicant sends the action frames to firmware
and currently, host driver drops tx mgmt frames as peer is not
available. This is because in tx mgmt path, it retrieves the self
peer from non-MLO mac addr but driver creates the peer of type
AP(PEER_AP) with MLD mac addr when MLD mac addr is non-zero and for
non-MLO case, it creates self peer with non-MLD mac addr.
So, to fix this, in case of MLO mac addr, create the self peer while
creating vdev and retrieves that peer with MLD address in tx mgmt path.
Change-Id: Id7ef97668fbd1bf1914d37d09682119eb79be465
CRs-Fixed: 3297288
Support neighbor response and beacon request
transmit from driver and deliver received
neighbor request and beacon report to hostapd.
Change-Id: I6a27d04ab4b558c4af799cc185b92f011194233d
CRs-Fixed: 3279625
When disconnect from wpa_supplicant and cm event from F/W happen at same
time, supplicant holds cm cm_req_lock and wait rsp of p2p cleanup roc from
scheduler thread until 2 sec timeout, sheduler thread is blocked to wait
for cm_req_lock.
When wmi peer delete of vdev0 is not sent within 1.2 sec after host send
wmi peer delete of vdev1, firmware will assert.
To fix it, don't wait rsp of p2p cleanup roc when disconnect by async way.
Change-Id: I877b7a446dfd12f621dad5049a67574359bdd322
CRs-Fixed: 3285115
Currently, host drivers drops NAN tx mgmt frames while transmitting
it to firmware as it is unable to find the peer for NAN and
also, random mac check is false because tx channel is not available
for NAN (kernel sends channel as null).
As peer does not exist for NAN, creates self peer while creating
vdev.
So, to fix this, add check for NAN iface to retrieve peer from vdev
mac address and use this peer in tx mgmt frames.
Change-Id: I8ef9e3502397a667841eb6e852ed5755049af44d
CRs-Fixed: 3275426
Currently, host driver supports random mac for tx mgmt frames
in STA, P2P and P2P CLI opmode only.
Add NAN iface to support for random mac for NAN vdev in NAN
pairing protocol.
This allows to transmit the NAN tx frames to the lower layer.
Change-Id: I06b9340cf9bfd9f6a5e77ff02d19d8a87baea0ff
CRs-Fixed: 3257667
For PASN authentication, the mgmt frame TX happens before
vdev is started. Firmware configures RX filter for the vdev
mac address during vdev start only. So if firmware sends PASN
initiate request with source mac address as vdev mac address,
then the RX filter willnot be configured since vdev mac is same
as source mac, this causes the PASN M2 frame from SAP to be
dropped and No ack is sent.
Configure RX filter for vdev mac address when vdev is not up.
Change-Id: I52c9e50a250be1935d1097d45753fa941ae73bea
CRs-Fixed: 3254628
-Wimplicit-fallthrough is being enabled by default. Some compilers
such as clang require the attribute instead of just a fallthrough comment.
Change-Id: Ie800ea60a4e12deff2ba2b0462de70e2b252082d
CRs-Fixed: 3217411
For every random mac addr set/clear command to firmware,
driver gets reply from firmware whether success or fail.
But sometimes, if the response event is delayed by more
than 100ms by firmware then timeout happens in HDD.
Upon timeout, driver sends clear random mac command which
gets dropped in p2p_process_set_rand_mac API as prev command
status from firmware is pending.
So fix is to increase the timeout value to 1000ms
Change-Id: I6116259b5d34269a8c98712d978957cfd374cdc1
CRs-Fixed: 3199989
Optimize logging by decreasing number of log
lines printed for the Tx frame path.
Change-Id: Iff24346a6b20286b68ee18451155495f624da316
CRs-Fixed: 3168409
Add and Register target if API to process MCC
quota wmi event. Deliver the event to existing
interfaces.
Change-Id: Ib044a336af2f5093dffbb053e65a52a174b85154
CRs-Fixed: 3101870
Filter out the BSS Transition Management Request frame
and allow it to be sent out from driver to firmware.
Change-Id: I6672c55421b0aa5cf186c82bec977848fdaddc2b
CRs-Fixed: 3154042
Update Kbuild with SON binaries based on SON config flag
and GENERIC_DATA policy with proper length
Change-Id: I60d06b3bdcc600095d7e9ad779e9b779f5477e33
CRs-Fixed: 3136142
Currently, for DBS HW fw goes off channel for
400 ms in case of NDP and 450 ms in case of NAN
due to which beacon is not sent in DW window.
Fix is to Limit max ROC duration to 350 ms in case
of NAN and NDI for DBS hardware to improve NDP
setup time.
Change-Id: Iaf5c90a386d2742cdc8f24305756a3691ac70431
CRs-Fixed: 3141393
Add INI - mgmt_frame_hw_tx_retry_count to configure MGMT
frame HW tx retry count for certain frame types.
The INI String format:
frame_hw_tx_retry_count="<frame type>,<retry count>,..."
The supported frame types are defined by enum mlme_cfg_frame_type.
Retry count max value is 127.
For example:
mgmt_frame_hw_tx_retry_count="0,64,2,32"
The above input string means:
For p2p go negotiation request fame, hw retry count 64
For p2p provision discovery request, hw retry count 32
Change-Id: I32f6c7d83ede9b28484c7a0b29824bde32e06422
CRs-Fixed: 3082532
Refine p2p connection status update, use API p2p_status_update
to update p2p connection status.
Change-Id: Ica1b1cfc56c09e10664cd9130d5bfacc83e2763a
CRs-Fixed: 3076205
If p2p go+go concurrency exist and g_enable_go_force_scc ini sets
to 2(liberal mode) then 1st p2p go channel should move to 2nd
p2p go channel after set key. Again, when user initiates CSA to
one p2p go then the force SCC doesn't happen to other p2p go.
But the expectation is all p2p go should move to same channel
which is initiated by user.
As part of fix, move all p2p go to same channel when user
initiates.
Change-Id: I1664e5a7d545d29c32b94e8e4831c71a9cc0ae23
CRs-Fixed: 3064245
There is frequent output when get unexpected vendor specific action
frame. So, add this change and reduce the log level.
Change-Id: I9d832546a4436bdf7dd25cb00a7de5cce1295b31
CRs-Fixed: 3060750
Framework disables p2p before enabling NAN as P2P+NAN concurrency
is not supported. NAN operations happens through wifihal and p2p
operations happen through wpa_supplicant which are two different
userspace components. Wifihal call to enable NAN may come to host
driver before disabling p2p through wpa_supplicant. There are high
chances for p2p scan to be in running state while NAN enable is
received. Firmware NAN state machine goes to inconsistent state
and disables NAN as p2p scan is running in such cases.
So, stop the ongoing p2p scan before enabling NAN as P2P+NAN
concurrency is not supported currently.
Also, forward the pdev to NAN component inorder to iterate through
all P2P vdevs.
Change-Id: Ibe30a5ebe90514aee4f6721cdc5476570524cad8
CRs-Fixed: 3054576
In P2P, if NDP is present, limit max ROC duration to
400ms on DBS and 250ms on non-DBS case.
If NAN is present, limit max ROC duration to 450ms on DBS
and 300ms on non-DBS case.
Change-Id: I2e943d2f55984464812bba16ca78dfab8681cf30
CRs-Fixed: 3046904
We have fixed using channel number as internal parameter instead of
chan frequency with change I60fe37d7d716eeaceaa00f3fb59c77b629ebacac,
but variables name are still chan which might cause confused to reader.
Rename all places where "chan" to "chan_freq", which actually channel
frequency used. And alter miss APIs which still expect channel number.
Change-Id: I948cbad133a17093f49384b563966d2c53b51707
CRs-Fixed: 3033951
Currently wlan_hdd_mgmt_tx path is still using legacy API to convert
channel frequency to number, it is not applicable for 6Ghz channel if
convert it back from number to frequency.
Fix it by replace all places where using legacy API to convert channel
and use channel frequency from supplicant directly. It can fix mgmt tx
from supplicant on 6Ghz channel.
Change-Id: I60fe37d7d716eeaceaa00f3fb59c77b629ebacac
CRs-Fixed: 3024898
Add fixed 300ms extra ROC time instead of multiplying the
ROC duration by 6 as this causes the ROC to be upto 1.5 secs
if GO is present. Firmware will advertize NOA of 1.5 secs
and if supplicant cancels ROC after 200 or 300ms then
firmware cannot cancel NOA. So when supplicant sends next
ROC it will be delayed as firmware already is running previous
NOA which may cause p2p find issues if GO is present.
Fix this by capping the max ROC time to 600ms when GO is present.
Change-Id: I0774b06ff4db1fae7efc387388fdf3059505150e
CRs-Fixed: 3025870
Currently, If supplicant sends tx_mgmt request with random
mac_addr then driver adds the random mac_addr and sets this
random mac_addr to firmware via
WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_CMDID command. Driver waits
for tx_ack or tx cancel wait to complete and then remove the
cookies and start timer to delete the random mac_addr.
In case after receiving tx_ack, driver removes the cookie and
starts timer and before timeout supplicant sends the
tx_cancel_wait request. But driver can't update the timer
duration as the cookie was already deleted as part action frame
tx completion.
Fix is driver will remove the cookie with below condition:
1. If driver receives the tx_ack and the wait duration = 0 then
no need to start the timer, remove the cookie and also remove the
random mac_addr from firmware
2. If driver receives the tx_ack and the wait duration != 0 then
start the timer
3. If driver receives tx_cancel_wait then stop the timer and
remove the randon mac_addr from firmware
4. If timeout happens then remove all the cookies for the random
mac_addr and also remove the random mac_addr from firmware
Change-Id: I3e227213239e865582e5d8674260d049c437aa9b
CRs-Fixed: 3002851
As part of regulatory cleanup, wlan_chan_to_freq() is removed.
Use wlan_reg_legacy_chan_to_freq()/wlan_reg_chan_band_to_freq()
instead of wlan_chan_to_freq().
Change-Id: I9d105863f8d6384c97e8219b89a230c863e29d19
CRs-Fixed: 2933440
Host checks RMF enable and robust action frame category, if both are
true then sets protected bit in mac header of management action frame.
Change-Id: I2d57c52b66ff7abd44dd02b73ad18f13fbdef009
CRs-Fixed: 2917058
In off channel P2P GO neg resp tx frame, supplicant sends
roc duration (suppose 100ms) to sends the frame and as
this is not sufficient to receive the GO confimation frame,
driver internally adds 500ms more duration. So, new roc
duration is 600ms (100+500). But currently, restart
of the roc timer happens with old roc duration instead
of newly calculated roc.
Send the extended roc timer duration in restart roc timer
to fix this.
Change-Id: I1238d69d1d8b03578d74ef6ad0895f11cfac0178
CRs-Fixed: 2890951
As per specification sequence numbers of action frames also needs
to be randomized when the source MAC address is randomized. Currently
this feature is not implemented in the driver as a result corresponding
test case is failing.
To address this, add support to sequence number randomization in the
driver. Also add a INI param to control this feature.
Change-Id: Icd7b6fd55b324a8d6b1226d89f19be0ad9385e0a
CRs-Fixed: 2829032
Add connection manager logic to handle p2p/tdls/policy mgr logics
on connect/disconnect start and complete ext indication. And
add the call to csr to update the legacy structs.
Change-Id: I218a1d193dd62ad041e84078bd2509b82ec11363
CRs-Fixed: 2846663
Compiling with gcc 9.3 will cause many implicit-fallthrough
compile errors.
Fix is to add keyword fallthrough to resolve such compile error.
Change-Id: I3fdc48b1a9ab2345a47ae644e3217b4d29238364
CRs-Fixed: 2785172
qdf_mem_malloc() function already takes care of logging the
caller function name and line number in case of any allocation error.
Hence there is no need to add the error log again.
Getting rid of these unnecessary logs reduces driver memory footprint.
Change-Id: If0b9425f82f9ed793c7639c0ed09eb1f868b6d5c
CRs-Fixed: 2781932
Change the usage of cfg parameters from Internal/External
to External in .h description for mlme, p2p, and
policy manager files.
External means that both internal teams and external
customers can modify the parameters.
Change-Id: Ic1e68d5a90be2c898ce66aa18e8d91f16561b408
CRs-Fixed: 2712773
For SAP mode, FW doesn't support tx action on different band, and
shouldn't send on DFS channel. So drop action frames for SAP mode.
Change-Id: I2015957346824787d0d902b2d21746d10e2cc9c0
CRs-Fixed: 2718417
Use INI "sta_disable_roam" to disable roaming on STA interface if
connection on other interfaces ex. p2p, ndp comes up. Each bit of
the INI "sta_disable_roam" represents an interface.
ex. LFR3_STA_ROAM_DISABLE_BY_P2P BIT(0)
LFR3_STA_ROAM_DISABLE_BY_NAN BIT(1)
As INI "sta_disable_roam" is generic for all the interfaces, cleanup
for INI "p2p_disable_roam" done.
Change-Id: Icd05a97c640ca07978d9960a33de036ed6fe38df
CRs-Fixed: 2637555
Glitches seen after the STA disconnection because of the roam scan
triggered on a heartbeat failure ( beacon miss ).STA does a partial
scan followed by full scan causing the DUT to go off-channel from
the STA and P2P home channel, causing the music BLIP.
Fix is to disable roaming irrespective of data traffic present
or not on P2P interface and enabled again once P2P is disconnected.
Change-Id: I5ddf946adbfbe99d5b20c23c46b2b4ac0bfac47f
CRs-Fixed: 2632939
Currently the driver waits for cancel roc request in the
API p2p_cleanup_param which gets executed in the scheduler context.
Scan cancel requests also executes in the scheduler context, so
the wait would fail as the scheduler thread is waiting for
the message to get processed which it would only process, which
would in turn cause a latency in P2P connection.
Fix is to remove the wait which is mentioned above.
Change-Id: I12a1a7e4896ecf3a9c6e8f138e18637690cbd049
CRs-Fixed: 2622051
Optimize logs while sending assoc req and assoc rsp handling
frame by dumping the assoc req frame and not printing each
params separately. Also avoid multiple dump of same frame.
Change-Id: Ibcf2d9aa8de292b9b9f4b4c6a53a0f694d69475c
CRs-Fixed: 2619553
Currently there are lot of duplicate logging. Identify and
reduce those logs that are not absolutely necessary.
Change-Id: Ia2df5a46610b885be5e27455aef7f7281c7c3c55
CRs-Fixed: 2617719
Currently there are lot of duplicate logging. Identify and
reduce those logs that are not absolutely necessary.
Change-Id: I649ce3bec8c3c8542fe9edd08907da9ab01fa948
CRs-Fixed: 2617504