Page fault reproted when all tdls peer list size exceed their max
size. So, add the change to avoid this issue.
Change-Id: I66b5f85c8cdc98491b33b2100a55f424d5531ca0
CRs-Fixed: 3321105
With FEATURE_WLAN_TDLS=n, compiler is throwing implicit
declaration error of function wlan_tdls_get_features_info.
Hence add wlan_tdls_get_features_info stub declaration for
FEATURE_WLAN_TDLS=n.
Change-Id: Ia9820e630b756befbfda98330be193760a331c93
CRs-Fixed: 3309612
Replace all occurrences of
wlan_reg_get_channel_state_for_freq with
wlan_reg_get_channel_state_for_pwrmode and use extra
parameter as REG_CURRENT_PWR_MODE.
Change-Id: I7f7e4e700091918eeebc87ccbbc85ececdd9bf52
CRs-Fixed: 3145011
Populate 6 GHz offchannel params only when VLP power is
supported by APs country.
Change-Id: Ic8d5d3f4b0bc1126d25242633eb0aae98989ddc3
CRs-Fixed: 3288784
Use uint8_t instead of boolean for tdls maxpeercount in
wlan_tdls_features as this will result in restricting max
supported TDLS peer count as one when more than one TDLS
peers are set.
Change-Id: I468f87e80178c0fb2e80b122f59d0dffcfa3928f
CRs-Fixed: 3284105
Disable TDLS offchannel if number of connected peers are more than
one.
Also, re-enable offchannel if all peers are disconnected expect one.
With this change, it is possible to increase the limit of max
connected peers which was previously set as one when TDLS
Offchannel is enabled.
Change-Id: Ic0826aa32c8ef805a2df6da6c7506895cdc08a09
CRs-Fixed: 3265868
Update offchannel frequency based on peer caps such as
1. If 6 GHz is supported then select the ini preferred 6 GHz channel
frequency if peer also supports the same channel.
2. If 6 GHz is supported and peer doesn't support the ini preffered
channel frequency then select the very first 6 GHz channel which
peer supports as preffered offchannel.
3. If peer doesn't support 6 GHz, then select ini preffered 5 GHz
off channel frequency, given that peer should also support it.
4. If peer doesn support 6 GHz and also doesn't support ini preferred
5 GHz offcahnnel, then select the very first 5 GHz channel it
supports.
Update preffered offchannel Bandwidth such as take minimum of peer
supported max bandwith which is extracted from supported opclass and
max Bw device supports.
Change-Id: I93412774f35280105b22d5ec44895572f9d7aeef
CRs-Fixed: 3266066
Since TDLS and STA share a common netdev interface,
when STA connection is made in 11a, 11b, 11g mode,
netdev parameters such as TSO/checksum are disabled.
If TDLS connection is formed over this Station,
TSO remains disabled as STA netdev is used.
This might result in loss of throughput when TDLS
connection is made with 11n, 11ac, 11ax dot11mode and
with wider bandwidth TDLS, this loss is more prominent.
Hence, overwrite the netdev params to enable TSO when
TDLS connection is formed in 11ax, 11ac, 11n mode if
the station is in 11a, 11b, 11g mode.
Also, disable the TSO params when TDLS tearsdown when
STA is in 11a, 11b, 11g mode.
Change-Id: I80deaef40d70030211e75a63e1339b1407627b52
CRs-Fixed: 3245258
Add concurrency conditions to reject TDLS setup if
along with BSS STA, any other iface is in connected state.
In case where supplicant directly sends TDLS setup without
adding peer or Discovery been rejected because of
concurrency, driver adds the peer and update fw with the
same using UPDATE_TDLS_PEER_STATE command. This results
in fw crash as TDLS state is not yet set.
This check is required because setp_peer shouldn't be
processed if any other interface such as SAP, P2P already
have started otherwise it will result in FW crash.
Change-Id: Ia0f1f099a5fb5be0c4875a38842d97070964aaa0
CRs-Fixed: 3263513
Based on the new requirement, add support to get requested
feature set info from different feature components.
Change-Id: I1bfc097c8ae8c4ab678d4dc07b7932cf3272d851
CRs-Fixed: 3262868
Fix stack frame size warnings during compilation for
tdls_get_6g_pwr_for_power_type and
tdls_is_6g_freq_allowed.
Change-Id: Ic9ca3c3db33acd769720bfcb8a754f8d6e6492ab
CRs-Fixed: 3249672
With introduction of TDLS on 6 GHz, some of the channels
that peer can support will be same for 6 GHz band other
bands. So, extract frequency by using peer supported
operating class and supported channel list which can
be used for further processing.
If channel numbers are used then the duplicate channel
numbers are removed which may lead to skipping 6 GHz
supported channels.
Change-Id: Ic6838d05c3dab5a0cc17483890b83805e076684c
CRs-Fixed: 3233999
Use frequency instead of chan num for processing TDLS offchannel
req for preferred offchannel.
Since, after introduction of TDLS on 6 GHz band it is better to
process offchannel in frequency instead of channel numbers as
some of the channel numbers are repeated for 6 GHz.
Change-Id: Icd7084b9f3c407ad0ad104b7f0d2230e31e0b10d
CRs-Fixed: 3234920
Irrespective of 6 GHz, wideband can be supported.
So, Allow TDLS connection in wideband only if FW supports TDLS
on 6Ghz.
If Fw doesn't support wideband then restrict the TDLS connection
BW to APs Bw.
Change-Id: If726233f381921a8eda25ac7a2705942db79d410
CRs-Fixed: 3223760
Add support for TDLS offchannel changes required
for supporting TDLS offchannel on 6 GHz band.
Change-Id: Ie150ff7e5a8237dab445ccb0ab6a4959a7c7fbf0
CRs-Fixed: 3223640
For STA+TDLS on 6 GHz band, set power mode as VLP
if the country supports it. Once there is no
connected peer then restore the mode which
was there before the TDLS connection.
Change-Id: I551ec77545e33cc70d1ce51a0a92cd7d8a56a8db
CRs-Fixed: 3223647
Add check for allowing TDLS 6 GHz such as TDLS
is only allowed for channels which supports
VLP Power level.
Change-Id: I32ea3fb61deed2ff236849ef22894d5cb791dd84
CRs-Fixed: 3223617
-Wimplicit-fallthrough is being enabled by default. Some compilers
such as clang require the attribute instead of just a fallthrough comment.
Change-Id: Ied21e1f913af7a453a523696a779457e092e69bd
CRs-Fixed: 3217413
Add concurrency conditions to reject TDLS connection if
along with BSS STA, any other iface is in connected state.
In case such as where peer directly sends TDLS setup
request and because of this supplicant does ADD peer
which is not rejected in case of concurrency.
This check is required because add_peer shouldn't be
processed if any other interface such as SAP, P2P already
have started otherwise it will result in FW crash.
Change-Id: Ied36228e033730cd337cd64612df6b4c2696ee28
CRs-Fixed: 3169912
Reduce the timeout to wait for TDLS mgmt to
complete from 11 seconds to 3 seconds.
Also, Allow Tx data frame if no ack/nack is
received even after 2 seconds for last data
frame.
If last data frame is sent and no ack/nack
is received within 2 seconds, then drop the
new data frame.
Change-Id: If3294908cb1399c3b4c8931b80663671400bf610
CRs-Fixed: 2966308
Always decrement tdls_soc_obj->set_state_info.set_state_cnt
in case TDLS is disconnected due to STA disconnection
triggered as part of SSR.
If it is not, then for SSR, after the system restarts,
this count is used and can be interpreted as second
tdls connection.
Currently, multiple tdls links are not supported, so
TDLS set state CMD (WMI_TDLS_SET_STATE_CMDID) won't be
sent to fw, although peer create and peer assoc will
go to firmware which results in crash.
Change-Id: Ib764cd04a04fab237840cdffafa9752fbe202418
CRs-Fixed: 2931199
As part of regulatory cleanup, wlan_freq_to_chan() is removed.
Use wlan_reg_freq_to_chan() instead of wlan_freq_to_chan()
Change-Id: I18d7996a0b117de90cd32f2208702d01655ceeb9
CRs-Fixed: 2926114
TDLS teardown happens in high throughput
scenario as rx pkt count increment API
"tdls_update_rx_pkt_cnt" is not called
if hdd_is_current_high_throughput API
returns TRUE. The reason for this is due
to high cpu cycles consumed by
tdls_update_rx_pkt_cnt API.
As part of fix optimize tdls_update_rx_pkt_cnt,
tdls_update_tx_pkt_cnt API's for high
throughput scenario. In high throughput
scenario mostly the use-case is to increment
the pkt counter so move that logic to
the top of the API's.
Change-Id: I4eb0da3571c45b5ee91e051e251158af15f73973
CRs-Fixed: 2888746
When TDLS connection is made in 160 MHZ
for 11ax staions, the MCS rates for the
same aren't updated correctly.
Also, MCS rate can change in case the
connection between both stations is made
with AP operating in NSS 1x1, as there is
a check in lim_populate_he_mcs_set which
will disable MCS rates corresponding to
nss > 1x1.
To fix this, copy 160 MHZ mcs from the
staion parameters which gets updated in
change station. Also, use nss parameter
which is passed by lim_populate_he_mcs_set()
in the check which was used to disable mcs
rates corresponding to nss > 1x1. Thus,
peer station nss will be used to
determine whether to disable or not.
Change-Id: I23079aed3795202e6ae32583a220c1ed3227c1dd
CRs-Fixed: 2904540
Channel number may be same for different bands due to which
non-dsrc channel may be treated as dsrc or vice-versa.
Fix is to find channel is dscrc or non-dsrc based on frequency.
Change-Id: I349172713dda6880771e14231aeb1b4419a86e01
CRs-Fixed: 2902986
Introduce HE cap IEs in addstareq. Also, Add
HE capabilities in frames for TDLS Setup Req,
Setup Rsp, Discovery Rsp. Add He Operations
in TDLS setup Confirm.
Implement APIs under feature WLAN_FEATURE_11AX
which will be used to:
1) Fill HE capabilities in TDLS Discovery Response,
TDLS Setup Request, TDLS Setup Response.
2) Fill HE operations in TDLS Setup Confirm.
3) Convert he_capa capabilities from station
parameters to tdls tDot11fIEhe_cap type.
4) Set Chan width based on session, peer
capabilities.
Change-Id: If36b1a3c3eed0e6026043494a097673f9d74b580
CRs-Fixed: 2883443
Use wlan_reg_get_channel_state_for_freq to get channel state
instead of wlan_reg_get_channel_state.
Change-Id: I0ab0465458801747cc97bf03b3aee4ec255beb57
CRs-Fixed: 2859852
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
It doesn't free resources in failed cases like getting vdev or tdls
vdev object when handling tdls commands. This causes reference
count of psoc leak or memory leak. Following are the functions,
tdls_set_responder
tdls_notify_sta_connect
tdls_notify_sta_disconnect
tdls_set_operation_mode
tdls_reset_all_peers
Change-Id: I8b5d5fa8a137a1b07f0fa6e4667047db95d7b99e
CRs-Fixed: 2839099
It doesn't handle failed case about getting vdev or tdls vdev object
when teardown tdls connection. Which causes reference count of psoc
leak.
Change-Id: Ie4e7966c0a07f378483cd5e6344599645c75ac68
CRs-Fixed: 2836949
Modify connect start code in interface manager by
moving disable roam and tdls link teardown notify
APIs from HDD to if mgr. Alongside, move tdls link
teardown notify API from HDD to if mgr in start bss API.
Also, move the tdls link teardown API to TDLS module from
HDD module as TDLS should manage the wait logic.
Change-Id: I09fa31878563a3daaa7c5fde46327475829317b3
CRs-Fixed: 2811807
Currently, if the TDLS timer expires while the scheduler thread
is processing something(e.g., station vdev destroy), the handler
would be in wait queue and it gets called once the scheduler
thread is done with its current task(i.e., vdev deletion).
TDLS handler tries to use the vdev even it has just got freed,
which leads to use-after-free.
This happens because of the below,
1. vdev destroy notification has no knowledge of the TDLS timer
expiry as timer_stop is used to stop the timer.
2. vdev is passed to TDLS handler as part of registration.
Fix:
1. Use timer_stop_sync in vdev_destroy_notification to make
sure the handler is posted to scheduler thread if the timer
had expired.
2. Get the vdev in handler from psoc instead of passing it to
the timer handler. This can make sure the vdev is referred
only if it exists.
Change-Id: I186fd0d44b2364ebb375a8445dd1239368543e7b
CRs-Fixed: 2792020
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 default value of gEnableTDLSSupport, gEnableTDLSScan
and gEnableTDLSImplicitTrigger 1
Change-Id: Ic6559a5f77b1d46bc48647c283327a12c409d873
CRs-Fixed: 2783560
In case two clients try to establish the TDLS connection simultaneously,
the peer who is able to transmit the setup request first will be
connected and the other request is in driver without notifying the peer.
This causes peer to get stuck waiting for the TDLS setup response. So,
send TDLS setup response with unspecified failure reason code, ift here
is already TDLS setup.
Also, drop the setup response only if status code is zero in case setup
is already in progress. This way if the status code is set which will be
set in tdls_activate_add_peer(), in case of request already in process,
the same error code can be notified to the peer.
Change-Id: I83fea4586d6e344a86a9185b078e4d87ec38c664
CRs-Fixed: 2771973
This change fixes two issues about TDLS:
1. It updates current mode only if tdls vdev object is NULL.
2. Handles pre-scan callback but ignore scan done callback if device
type isn't station or P2P client.
Change-Id: I4badbf3a7c40eca813a6360817d5483be88f2c5d
CRs-Fixed: 2769638
Change ucfg_tdls_notify_connect_failure() API as a
wrapper to a new API wlan_tdls_notify_connect_failure()
which in turn calls the core API.
Change-Id: I998669f9c829cb91e21b359ba794f396214854e2
CRs-Fixed: 2767682
DUT doesn't teardown TDLS link if set gEnableTDLSScan = 0 just as
previous branch. This change will teaddown TDLS link if set
gEnableTDLSScan = 0 and disallow scan.
Change-Id: I287f3ec200c05ed6e7bc1d2887f659ab8ccc90fa
CRs-Fixed: 2749536
Current implementation of external mode requires supplicant to
send tdls peer mac address. On matching of stats tdls implict
link procedure is triggered for configured peer.
Fix, to allow both configured peer and other peer that supports
tdls to establish the tdls link.
Change-Id: If7cb10986126db28979293653b1bc2a92c3f72eb
CRs-Fixed: 2750191