Commit Graph

61 次程式碼提交

作者 SHA1 備註 提交日期
Rahul Gusain
1e3c3c688a qcacld-3.0: Pass wdev as arg to vendor_event_alloc
Currently, host driver passes null as argument instead of valid
wdev to "wlan_cfg80211_vendor_event_alloc" function and
WiFi-HAL checks for the valid wdev while receiving NAN responses
and NAN response is dropped due to invalid wdev.

So, to fix this, extract the valid wdev and pass it as argument
to "wlan_cfg80211_vendor_event_alloc" function.

Change-Id: I2c50c1d6d8ebc100b0e7c382420ed031156dcebd
CRs-Fixed: 3642176
2023-10-19 10:14:42 -07:00
Rahul Gusain
fa7ef9dc94 qcacld-3.0: Exchange CSID cap & GTK params
To support group NDP security, WiFi-HAL and firmware introduces
two new parameters (csid_cap and gtk_required) in NDP initiator
request, responder requestor and NDP indication event.

Host driver will retrieve the CSID capabilities and GTK parameter
and parse it to firmware in NDP Initiator and Responder request
TLV. Also, driver extract these parameters from NDP indication TLV
and will passes to Wifi-HAL in vendor event.

Change-Id: I4487559491754edafaccafa466512d6380b826b3
CRs-Fixed: 3583149
2023-08-14 15:21:40 -07:00
Aditya Kodukula
7028b37955 qcacld-3.0: Fix typographical errors
Fix typographical errors spanned over various files in cld.

Change-Id: I82a7eec4335d617a43c89589418a21885074fde0
CRs-Fixed: 3529627
2023-06-15 21:23:48 -07:00
Rahul Gusain
bcb01fb787 qcacld-3.0: release the NDP end all command
Currently, driver post NDP end all command on the scheduler but
never release it. This casues timeout in the scheduler and driver
releases the vdev which is never referenced. This causes crash in
driver.

To resolve this issue, release the NDP end all command when NDP
Host Update event received from the firmware.

Change-Id: Iffe4f79b7c131c48cbf2b085d8bbc6e1fb0b5f0a
CRs-Fixed: 3521989
2023-06-08 20:46:27 -07:00
Rahul Gusain
bb7e163983 Revert "qcacld-3.0: Block NDP_END_ALL req till last NDP_END is received"
This reverts commit 54c2fe240a.

Change-Id: Ic0028674e4728b951215bf7b4d9a7535b8b49efe
CRs-Fixed: 3523826
2023-06-08 20:46:22 -07:00
Rahul Gusain
54c2fe240a qcacld-3.0: Block NDP_END_ALL req till last NDP_END is received
Firmware sends NDP_HOST_UPDATE event as an immediate response to this
request and starts cleaning peers one by one. Once an NDP session is
ended (indicating NDP_END to peer + internal cleanup), firmware sends
NDP_END_IND to host.
Currently, host driver stops the wait timer and change state from NDP
end to disconnected upon receiving the NDP_HOST_UPDATE. But firmware
might still be in the process of NDP cleanup. As the NDP_END_ALL
context is unblocked, driver may send NAN disable request to firmware.
This may cause inconsistency in firmware state machine and firmware may
drop the ongoing NDP_END request. So, peer doesn't get the NDP_END frame
in such cases.

Unblock the NDP_END_ALL-wait call only upon last NDP_END indication to
avoid such issues. This change moves the major functionality of
NDP_HOST_UPDATE processing to last NDP_END indication. Cleanup/remove
the processing of NDP_HOST_UPDATE as it's not needed anymore.

Change-Id: I19d3e40700c1c0501b9c809820262472bf9bdba4
CRs-Fixed: 3512847
2023-06-02 16:47:31 -07:00
Rahul Gusain
583019cf27 qcacld-3.0: Set NDP state to disconnect if no peers exist
Currently, host driver checks if there are peers present on the NDI
and clean them up as part of NDI cleanup. Cleanup is done in below steps,
1. Set the state to NAN_DATA_END_STATE
2. Send NDP_END_ALL to firmware to end all existing NDP sessions on the
NDI and to cleanup corresponding peers
3. Move the state to NAN_DATA_DISCONNECTED_STATE finally if NDP_END_ALL
goes fine.
But if no peers are present on NDP, none of the above happens and NDI
state stays and doesn't move to DELETED. So, set the NDI state to
DISCONNECTED if no peers are present.

Change-Id: I0d22c240b3e3eee5f62ba8b369bab500e27487b7
CRs-Fixed: 3463614
2023-04-13 13:58:44 -07:00
Jyoti Kumari
4ea4347be1 qcacld-3.0: Pass vdev_id as an argument in policy_mgr_get_pcl()
Pass vdev_id as an argument in policy_mgr_get_pcl()

Change-Id: If016b2ad1e47d1d8364037e44bd984e5b95c8d6f
CRs-Fixed: 3412927
2023-03-22 00:40:19 -07:00
Rahul Gusain
b014e14517 qcacld-3.0: Logs optimization in intf del path
Modify the log level from error/info to debug, to reduce logging
time. henceforth, it reduces intf deletion time and enhance the overall
performance of device.

Change-Id: I3498438e07daa97dc5b4805271397205c7aa0cf2
CRs-Fixed: 3389896
2023-01-27 18:06:37 -08:00
Yu Wang
3911372c3b qcacld-3.0: replace raw cfg80211 vendor APIs with wrappers
Replace cfg80211_vendor_cmd_alloc_reply_skb()/
   cfg80211_vendor_cmd_reply()/
   cfg80211_vendor_event_alloc()/
   cfg80211_vendor_event()/
   kfree_skb()
with internal wrappers
   wlan_cfg80211_vendor_cmd_alloc_reply_skb()/
   wlan_cfg80211_vendor_cmd_reply()/
   wlan_cfg80211_vendor_event_alloc()/
   wlan_cfg80211_vendor_event()/
   wlan_cfg80211_vendor_free_skb().

Change-Id: Ic85e58b5add8d92337ae5f3b29b9fdd15419f570
CRs-Fixed: 3360189
2022-12-22 00:44:38 -08:00
Sheenam Monga
ac14a3912b qcacld-3.0: Send async event to userspace for NAN concurrency
As part of Spatial Reuse, host has to send SR Suspend and resume
events based on concurrency which is not sent in case of NAN
concurrency.

Fix is to send SR Suspend in case NAN comes up and any STA that
supports SR is already present because SR is not supported in
case of NAN concurrency. Similarly during NAN disable check
if any other vdev apart from NAN is sharing mac with STA that
supports SR and SR support on same mac is disabled then don't
send SR resume event as there is already a concurrent vdev that
will take care of SR Suspend event otherwise send SR Resume event.

Change-Id: I56a9b455dd0166bc3997f8306992e46da759e992
CRs-Fixed: 3339713
2022-12-13 17:24:16 -08:00
Jeff Johnson
9475bedf61 qcacld-3.0: Fix os_if documentation
The kernel-doc script identified documentation issues in the os_if
layer, so fix them.

Change-Id: I71dd7893776e4b49a80f6be186740967b08d3347
CRs-Fixed: 3341451
2022-11-26 15:51:20 -08:00
Rahul Gusain
38d541df76 qcacld-3.0: Make NAN high priority than TDLS in legacy platforms
Firmware handles all NAN concurrencies in the platforms which
don't advertise the WMI service cabability
WMI_SERVICE_NAN_DISABLE_SUPPORT. Host takes care of the NAN
concurrency if the capability is advertised by firmware.
But there can be some legacy targets where firmware wants to
offload NAN+TDLS concurrency alone to the host and it takes care
of rest of the concurrencies. This is to make NAN of higher
priority and disable TDLS when NAN is active. Currently, TDLS is
of more priority than NAN and it can't change the order as it
can't disable TDLS to change the priority.

Currently, driver doesn't parse the NAN messages(even NAN enable
request) in such platforms. Parse the NAN messages and disable
TDLS upon NAN enable request. Rely on NAN state machine to
allow/disallow new TDLS requests. This needs NAN enable status.

Change-Id: Ie9c7c1cc2f1ed6328a31b93077c2928940fc3450
CRs-Fixed: 3263730
2022-10-26 18:47:42 -07:00
Rahul Gusain
bfc2c02560 qcacld-3.0: Remove the dependency on NDI name
Currently in driver, NAN Data Interface can be created with
only name "aware_data" which creates dependency on interface name.

To remove the dependency, the interface is created now by name
provided by Wifi-HAL.

For this, interface is created in STA mode with name provided by
WiFi-HAl. While processing  vendor cmd QCA_NL80211_VENDOR_SUBCMD_NDP,
given ifname is searched in adapter list and mode is changed to NDI.

CRs-Fixed: 3196179
Change-Id: I62dd512f8a7de4c69a53babf3112942d348bf3b6
2022-06-13 15:06:26 -07:00
Rahul Gusain
8b3684b10a qcacld-3.0: Check for NAN state only if NAN SM is in host
A check is added recently to avoid creating NDI if NAN is not in
enabled state. This is to avoid wastage of resources(vdev, peers,..)
in firmware.But this check is valid only for the platforms where NAN
statemachine is in host driver. This check is not valid for legacy
platforms where NAN state machine is in firmware. Bypass the same
for legacy targets.

CRs-Fixed: 3178939
Change-Id: I1475b4313d1e7ac2c05d5edd215e929f3eb6335e
2022-04-27 10:28:04 -07:00
Ashish
4bc1f3cb67 qcacld-3.0: Update data type of iface name to const for NAN
Currently driver code has data type as char* for NAN related code.
With this change update this data type as const char*.
Also, move NAN related functions under WLAN_FEATURE_NAN feature flag.

Change-ID: I61ad10304be4399a68f32778d01d9a951d7d14bb
CRs-Fixed: 3169168
2022-04-11 19:47:10 -07:00
Ashish
cede71c355 qcacld-3.0: Add/del virtual iface using NL commands for NDP
Currently host driver creates/deletes NDI interfaces using
vendor command. With the kernel 5.12 version onwards,
interface creation/deletion is not allowed using vendor
commands as it leads to deadlock when driver tries to acquire
the RTNL_LOCK at the time of netdev register/unregister.

With this change, add support to Create and delete NDI interface
using NL80211_CMD_NEW_INTERFACE and NL80211_CMD_DEL_INTERFACE
commands respectively if driver advertises
QCA_WLAN_VENDOR_FEATURE_USE_ADD_DEL_VIRTUAL_INTF_FOR_NDI capability.
Since NL80211_CMD_NEW_INTERFACE and NL80211_CMD_DEL_INTERFACE
already comes with the rtnl lock and driver does not need to
take the rtnl lock again which will help to avoid the above issue.

Change-Id: I6d5441a5e883de1222f105f26d73cb0506d16ddf
CRs-Fixed: 3167125
2022-04-11 19:46:27 -07:00
Surya Prakash Sivaraj
7fd14302fe qcacld-3.0: Send service id in NDP indication
Send service from wmi_ndp_indication_event_id to the userspace
via the new vendor attribute QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_ID
as part of ndp indication.

Change-Id: I90b4540d5f3c72bbb7e8b542406561daf2a7a869
CRs-fixed: 3128874
2022-03-01 20:41:22 -08:00
Ashish
1b0ec920c5 qcacld-3.0: Get netdev from wdev instead of iface name
Currently driver uses iface name to get netdev when it processes
ndp responder request. There is a possibility that framework does
not know the iface name when it sends the error response.

if driver does not receive iface name it fails to get the netdev
and fails to perform the dsc operation, because of which driver
drops the ndp responder request command.

To address this issue, use wdev to get netdev instead of iface name.

Change-Id: Ie230f19dbd895f81a4730160cbc9a2de3cc3179d
CRs-Fixed: 3136089
2022-02-23 11:10:07 -08:00
Ashish
b9745bd455 Revert "qcacld-3.0: Get netdev from wdev instead of iface name"
This reverts commit Idf394f4a22ace8757f947b2ef8e4a7d22e66d65e
which is causing termination of NDP session immediately after
formation.

Change-Id: I88a9c4ab80b727e5bda7a9f9c7e8b48399f98a34
CRs-Fixed: 3133498
2022-02-23 07:18:10 -08:00
Ashish
db7441ab3f qcacld-3.0: Get netdev from wdev instead of iface name
Currently driver uses iface name to get netdev when it processes
ndp responder request. There is a possibility that framework does
not know the iface name when it sends the error response.

if driver does not receive iface name it fails to get the netdev
and fails to perform the dsc operation, because of which driver
drops the ndp responder request command.

To address this issue, use wdev to get netdev instead of iface name.

Change-Id: Idf394f4a22ace8757f947b2ef8e4a7d22e66d65e
CRs-Fixed: 3124009
2022-02-09 06:42:05 -08:00
Srinivas Dasari
63b110484e qcacld-3.0: Pick a valid channel for NDI start
Currently, NAN 5GHz social channel 44(5220) is picked to start
the BSS for NDI if 5GHz band is supported. But the channel
might get disabled due to regulatory constraints or
user/applications might also disable based on the usecase.
NDI fails to start in such cases.
Pick a valid channel to start the BSS and give preference to
NAN social channels.
Also, don't allow NDI start when NAN discovery is not enabled
to avoid issues due to DBS incase if NDI to be started in
a 2.4GHz channel.

Change-Id: I562d0f4f6a425ad7fb4cd043e696d3d573854b3b
CRs-Fixed: 3068545
2021-11-04 08:19:36 -07:00
Srinivas Dasari
3d0e41cad1 qcacld-3.0: Abort any ongoing p2p scans while enabling NAN
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
2021-10-19 16:25:15 -07:00
Srinivas Dasari
1663527e35 qcacld-3.0: Send NDI create rsp to userspace after NDI state is set
Currently, driver creates the NDI upon userspace request and sends
NDI-create-response to userspace. But internal NDI state is set
after sending this response. This leads to a race condition when
userspace sends NDI delete while driver is still setting driver
internal state for NDI create.
So, send NDI create response to userspace only after completion
of driver internal processing.

Change-Id: Ic651fd4f6dfab17c48c4f65b6e5d49c4d08cbe16
CRs-Fixed: 2966549
2021-06-18 01:01:35 -07:00
Srinivas Dasari
ed3a67f8a9 qcacld-3.0: Stop opportunistic timer for NAN cmds in HL platforms
Opportunistic timer gets triggered as soon as a DBS use case
is completed and hw_mode would be set to SMM when the
timer(5 seconds) expires.
Below is an example scenario,
1. DBS is enabled to support STA on 5GHz + SAP on 2.4GHz on
   a Helium device.
2. SAP is disabled(to enable NAN as NAN+SAP is not supported on
   HL platforms)
3. Opportunistic timer gets triggered with a timeout of 5 seconds
   as DBS is not needed anymore.
4. Once the timer expires, WMI_PDEV_SET_HW_MODE_CMDID command
   would be sent to firmware to set the hw_mode to SMM.

But if framework enables NAN immediately after disabling SAP,
firmware can't allow it as NAN is not supported in DBS mode in
Helium platforms. Thereby firmware either rejects the NAN enable
or defer it till set_hw_mode command is received(which introduces
a delay of 5 seconds as host sends it after timer expiry).

So, stop the timer and complete corresponding action when a NAN
command is received from framework to avoid this failure/delay.

Change-Id: I50521c0dd5f2314034957a0f65898c737cfe7e2e
CRs-Fixed: 2937407
2021-05-06 10:44:09 -07:00
Alan Chen
f1918032a5 qcacld-3.0: Use a conditional macro for NLA_EXACT_LEN
Since 5.10 kernel has removed NLA_EXACT_LEN, replace NLA_EXACT_LEN
usage with a new conditionally defined macro for it.

Change-Id: I700f40d9ff87331dbb23a44fcbe6e4a586ef286d
CRs-Fixed: 2849795
2021-01-11 10:43:23 -08:00
Bapiraju Alla
20da92c02f qcacld-3.0: Add INI parameter to configure NAN in 6GHz
Currently, there is no INI parameter to control NAN feature in 6GHz
frequency band. Because of this, there is no provision to disable the
NAN in 6GHz when there is no requirement.

To address this, add INI parameter to configure NAN feature in 6GHz.

Change-Id: I6b4faa8e8aa1a3df72539fed1d7ff3cc8287debd
CRs-Fixed: 2817920
2020-11-24 15:03:04 -08:00
Srinivas Girigowda
78824d97ff qcacld-3.0: os_if: Remove logs for qdf_mem_malloc() checks
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: I6a29180db4bd55385da4c79f793b2d9ff3c9cfb8
CRs-Fixed: 2781932
2020-09-25 12:59:46 -07:00
Srinivas Girigowda
40c4c9bff8 qcacld-3.0: os_if: Change %pM/QDF_MAC_ADDR_STR/ARRAY to QDF_MAC_ADDR_FMT/REF
Change %pM/QDF_MAC_ADDR_STR/ARRAY to QDF_MAC_ADDR_FMT/REF.

CRs-Fixed: 2752355
Change-Id: Ib186841ca387ccc84584864286681c23e3b34756
2020-08-22 16:00:12 -07:00
Srinivas Dasari
440a823073 qcacld-3.0: Update policy mgr table if nan_conc control is supported
Currently, policy mgr table entries correspond to NAN/NDI are
updated only if nan_dbs is supported. Update/access the
policy mgr table even when nan_conc_control is supported by host.
This allows the host to take care of NAN cuncurrencies through
policy mgr on the non-DBS platforms.
Process NAN enable request in host if nan_conc_control is
supported, which updates the NAN entry to policy mgr table.

Change-Id: Id6e58a9bfde6ceb66a8a0b33136880f75e36090f
CRs-Fixed: 2729995
2020-07-12 07:31:19 -07:00
Srinivas Dasari
dc72fffd2b qcacld-3.0: Deprecate command support for QCA_NL80211_VENDOR_SUBCMD_NAN
QCA_NL80211_VENDOR_SUBCMD_NAN_EXT is introduced to carry NAN
command data along with channel info. This channel info is needed
to enable DBS on DBS supported platforms. The command data is sent
to firmware as it on non-DBS platforms.
Userspace is expected to send NAN commands through
QCA_NL80211_VENDOR_SUBCMD_NAN_EXT if it's supported. It can send
QCA_NL80211_VENDOR_SUBCMD_NAN if QCA_NL80211_VENDOR_SUBCMD_NAN_EXT
is not supported, which is expected to happen on older
platforms(non-DBS).
So legacy NAN command QCA_NL80211_VENDOR_SUBCMD_NAN is not allowed
on DBS platforms, as the command is sent to firmware without
enabling DBS.
Event part of QCA_NL80211_VENDOR_SUBCMD_NAN is still intact as it
carries NAN events from firmware to userspace.

Change-Id: Ie1aaf9f7ea051009125c972de4f0de13942448fb
CRs-Fixed: 2699605
2020-06-16 01:52:52 -07:00
Srinivas Dasari
6f6a3e666d qcacld-3.0: Use NLA_EXACT_LEN instead of NLA_UNSPEC in new kernels
The change If6d559a3aa7b8719a515e00e271e313c02f8135f has modified
few attribute types from NLA_UNSPEC to NLA_BINARY. But NLA_BINARY
validates only for max length and doesn't validate min length.
This could cause buffer overread if userspace sends less data as
the driver reads fixed length(e.g. 6 bytes for mac_addr) always.
Use VENDOR_NLA_POLICY_MAC_ADDR(NLA_POLICY_ETH_ADDR) or
NLA_EXACT_LEN instead of NLA_UNSPEC which validates for
exact length.

Change-Id: I92cc29716dff29037d14ffd2e269761149c7f74b
CRs-Fixed: 2700695
2020-06-04 23:22:48 -07:00
Srinivas Dasari
698272c0b7 qcacld-3.0: Replace NLA_UNSPEC with NLA_BINARY
NLA_UNSPEC usage is restricted from kernel version 5.4 by adding
a strict check while validating the nla_policy. The advantage
of this is that types not specified in the policy will be
rejected.
Driver can give exception to NLA_UNSPEC by setting
strict_start_type in the policy of a vendor command to NLA_U8
or some greater value. But it's better to set the type to a
valid type so that kernel can validate.
So, use NLA_BINARY with valid length instead of NLA_UNSPEC.

Change-Id: If6d559a3aa7b8719a515e00e271e313c02f8135f
CRs-Fixed: 2692293
2020-06-01 21:47:46 -07:00
Srinivas Dasari
632c058365 qcacld-3.0: Send NDI del rsp in NAN_DATA_DISCONNECTED_STATE state
NDI delete response is sent to userspace only when NDI is in
NAN_DATA_NDI_DELETING_STATE state. But NDI could be in
NAN_DATA_DISCONNECTED_STATE state if cleanup happens through
NDP_END_ALL path. Driver doesn't send response to userspace in
this case.
Send the response to userspace in NAN_DATA_DISCONNECTED_STATE also
as the application might be waiting for NDI delete status.
Also, use set/get APIs and avoid accessing NDI state directly.

Change-Id: I81a6b19a77144c76dde145f126c45b2ca67ff093
CRs-Fixed: 2679581
2020-05-09 00:56:50 -07:00
Srinivas Dasari
5ab63299b9 qcacld-3.0: cleanup NAN/NDP logging
Few NAN/NDP logs are redundant in the current logging infra.
Optimize the same and add few necessary logs.

Change-Id: Ie261db317af48955a16269539948ff1596c4bbcb
CRs-Fixed: 2644418
2020-03-19 20:41:40 -07:00
Sourav Mohapatra
2c0cc5f4bc qcacld-3.0: Add policy attribute to hdd_wiphy_vendor_commands
According to new changes in kernel 5.4 version onwards, driver has to
provide the policy for a NL command to ve verified against while
registering wiphy to the kernel.

To accommodate these changes, add policy for all the following
vendor commands that are being registered in the driver

	QCA_NL80211_VENDOR_SUBCMD_GET_SUPPORTED_FEATURES
	QCA_NL80211_VENDOR_SUBCMD_GET_FEATURES
	QCA_NL80211_VENDOR_SUBCMD_GET_LOGGER_FEATURE_SET
	QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_INFO
	QCA_NL80211_VENDOR_SUBCMD_GET_BUS_SIZE
	QCA_NL80211_VENDOR_SUBCMD_NO_DFS_FLAG
	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET
	QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION
	QCA_NL80211_VENDOR_SUBCMD_NAN_EXT
	QCA_NL80211_VENDOR_SUBCMD_NDP
	QCA_NL80211_VENDOR_SUBCMD_SCANNING_MAC_OUI
	QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_START
	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET
	QCA_NL80211_VENDOR_SUBCMD_ROAM
	QCA_NL80211_VENDOR_SUBCMD_PACKET_FILTER
	QCA_NL80211_VENDOR_SUBCMD_ND_OFFLOAD
	QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG
	QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_SET_KEY
	QCA_NL80211_VENDOR_SUBCMD_GET_RING_DATA
	QCA_NL80211_VENDOR_SUBCMD_TRIGGER_SCAN

Change-Id: I714c8b21a95144f7ed8ff4c6e038782e469edf3d
CRs-Fixed: 2621308
2020-03-13 08:38:24 -07:00
Srinivas Dasari
b020999b07 qcacld-3.0: Remove sta_id check in NDP peer handlers
sta_id is carrying an uninitialized value from the caller
lim_send_sme_ndp_(add/del)_sta_rsp(). So, it's failing the
check for its validity and skipping the first NDP peer creation
/last NDP peer cleanup.
Remove the sta_id check as it's no longer used. So that the NDP
peer creation/cleanup happens properly.

Change-Id: I8daff2bfbc57b7a2fa17a121a5a9dec6975137de
CRs-Fixed: 2594317
2020-01-01 20:04:12 -08:00
Srinivas Dasari
ee454da9db qcacld-3.0: Disable NAN in stop_adapter
Framework might not disable NAN discovery explicitly in some
cases like driver unload. So disable NAN from stop_adapter to
terminate NDPs and NAN discovery properly.
Cleanup the API os_if_process_nan_disable_req() by using the
new API ucfg_disable_nan_discovery().

Change-Id: Ic2c834db44c42a44db902c93f67a887de1b6c2fb
CRs-Fixed: 2594318
2020-01-01 18:24:15 -08:00
Srinivas Dasari
4a32ec5220 qcacld-3.0: Allow/Disallow NDP creation in different concurrencies
Currently in case of STA+NDI+NDI concurrency, the below scenario
can occur,
1) If NDI(NDP) + NDI(NDP) exists and sta tries to connect,
   then all NDPs on 1st NDI is tear down.
2) If STA+NDI(NDPs) exist and then another NDI tries to establish
   the NDP, then it is allowed in the current driver.

Fix is to reject the 2nd NDI(NDP) if STA+NDI(NDPs) concurrency
already exist.

Change-Id: Iadf6c9e10b9cdd59ca7beaace578a52b5e5dbb0f
CRs-Fixed: 2568552
2019-12-11 17:44:33 -08:00
Sourav Mohapatra
fab026a99a qcacld-3.0: Send RTT capability for STA mode
Based on the ini gfine_time_meas_cap, send enable/disable value to the
firmware for STA INITIATOR/RESPONDER mode using VDEV set param.

Change-Id: Idd4142e13061cd1af992bda88d0a0b81edc42fef
CRs-Fixed: 2574050
2019-12-03 13:10:29 -08:00
Srinivas Dasari
0610cc4041 qcacld-3.0: Allow NDI creation in all concurrent cases
Currently, NDI and NDP creation is happening only if the
corresponding concurrency is allowed. But NDI should be allowed
to create/delete in all concurrent scenarios. So, don't validate
the other interfaces present on device for NDI creation/deletion
and validate only for NDP requests.

Change-Id: I8e8817ac63f1f94b48fe71a30ddf1d49183d263a
CRs-Fixed: 2552623
2019-10-31 22:30:25 -07:00
bings
f39897e136 qcacld-3.0: Fix memory leak in os_if_ndp_end_ind_handler
In os_if_ndp_end_ind_handler, when it returns, make sure the
allocated memory ndp_instance_array is freed.

Change-Id: I39725bdeae01e3e3839f9bbac67721d4a1f38670
CRs-Fixed: 2552236
2019-10-29 22:02:04 -07:00
Manikandan Mohan
dbcd073e6d qcacld-3.0: Update NAN component to use frequency values
Due to channel number ambiguity with introduction of 6GHZ support
update NAN component APIs and data structures to use frequency
values instead of channel number.

Change-Id: I982fe8da0320c878f9473a62c86b80b220e2892e
CRs-fixed: 2551927
2019-10-24 21:41:47 -07:00
Rajeev Kumar Sirasanagandla
c64548c8a8 qcacld-3.0: Remove policy mgr entry after NDI delete
In the host driver, after receiving NDP END INDICATIONs for all NDP
connections then policy manager deletes NDI mode from
pm_conc_connection_list.

From user-space application, if NDP END REQUEST and NDI DELETE request
are issued back to back without waiting for NDP END indication, then
firmware could process NDI DELETE command firstly and avoid NDP END
indication due to peer delete as a part of NDI delete.

If vendor command NDI delete request is issued without receiving
NDP_END_INDICATIONs for all active NDP peers then pm_conc_connection_list
contains stale entry of PM_NDI_MODE associated with deleted NDI.

Stale NDI entry in pm_conc_connection_list is the cause for failure of
get_second_connection_pcl_table_index() for PM_NAN_DISC_MODE, therefore
further NAN enable requests are rejected.

To address this issue, cleanup PM_NDI_MODE from pm_conc_connection_list
as a part of NDI delete.

Change-Id: Ic1535420b60224cc426b24e22fe7486781fd2fa6
CRs-Fixed: 2519625
2019-09-13 21:44:07 -07:00
Bala Venkatesh
352834005d Revert "qcacmn: Free NDI peers/vdev at time of ndi_delete/driver unload"
This reverts commit I04631ffd611d6ded318ddfb65b2dfeba479c9bdc.
Currently, for all the peers cleanup is done in lim and wma layers
to remove this peers. The original change is deleting the ndi
peer in HDD, and can lead to memory overwrites.
Hence reverting the change.

Change-Id: Id0083c3d1612f0fdccb6fca2c9cc4c03f607a139
CRs-Fixed: 2507142
2019-08-19 06:19:19 -07:00
Manikandan Mohan
8776db5b50 qcacld-3.0: Fix nan disable issue on NAN+SAP concurrency
Fix the issue of NAN getting disabled in NAN+SAP concurrency
when SAP and NAN operate in different bands and host processes
LTE coex event for unsafe channel update.

Change-Id: I4f2d63a5283bd75712aa3bd9a3b3f278a28b0951
CRs-fixed: 2486595
2019-07-16 17:15:00 -07:00
Jeff Johnson
93cc00cb90 qcacld-3.0: Use renamed OSIF logging macros
Change Id3273498f623d04beec879aa9d77c1d33986357a ("qcacmn: Rename OSIF
logging macros") is renaming the OSIF logging macros, so update the
legacy OSIF to use the new names.

Change-Id: I73d4214c9fecc435f9ac8c9f79560aa36333d311
CRs-Fixed: 2469498
2019-06-17 13:00:42 -07:00
hqu
dd904c8e39 qcacld-3.0: Fix possible NULL pointer dereference in os_if_nan_legacy_req()
In function os_if_nan_legacy_req(), if qdf_mem_malloc() call return NULL,
this will result in nan_req NULL pointer dereference.

Fix is to add NULL pointer check for nan_req before using.

Change-Id: I8ce9e9f9fa556606cf5e8d389905c39ff7198f2c
CRs-Fixed: 2423772
2019-04-04 08:51:13 -07:00
Nachiket Kukade
8de3c7bcb2 qcacld-3.0: Move interface name related modules to NAN OS IF
NAN Datapath vendor commands include a vendor attribute that
contains interface name string. Only NAN Datapath interface
needs the modules that return vdev object from interface name
and vice versa. Presently these modules are part of in cmn
utils under UMAC. They're accessing OS IF private structures
which is a layering violation. So move these modules to the
NAN OS IF files where they're appropriate.

Move interface name related modules to NAN OS IF files.

Change-Id: I643bf597895e172fa501ada18ebc13ffa2e144e3
CRs-Fixed: 2284200
2019-03-24 14:54:43 -07:00
Jeff Johnson
9e5e30d3a6 qcacld-3.0: os_if: Replace explicit comparison to NULL
Per the Linux Kernel coding style, as enforced by the kernel
checkpatch script, pointers should not be explicitly compared to
NULL. Therefore within os_if replace any such comparisons with logical
operations performed on the pointer itself.

Change-Id: Ia316c656c5156960d254383a8de4bfc58522f877
CRs-Fixed: 2418386
2019-03-20 00:57:43 -07:00