Commit Graph
100 Commits
Author SHA1 Message Date
Arun Kumar Khandavalli 39b9bf654d qcacld-3.0: Reset the wiphy suspended flag at the end of SSR
During the wakeup sequence if there is any firmware recovery
the resume would be rejected and the flag "is_wiphy_suspended"
would not be reset in the system resume.

So, at the end of the SSR reset the flag since the system has
already resumed completely.

Change-Id: I9f8d9fcc27d0909af2c8cd0486ce7b8c8b661287
CRs-Fixed: 3005606
Mot-CRs-fixed: (CR)

Signed-off-by: zhaoqh3 <zhaoqh3@mt.com>
Change-Id: I9f8d9fcc27d0909af2c8cd0486ce7b8c8b661287
Reviewed-on: https://gerrit.mot.com/2032304
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Rui Hu <hurui1@motorola.com>
Reviewed-by: Ming Xiang <xiangmin@motorola.com>
Reviewed-by: Tao Sun <suntao2@motorola.com>
Submit-Approved: Jira Key
(cherry picked from commit 306e6895b502be64778921ceb613b17655a3404d)
Reviewed-on: https://gerrit.mot.com/2033628
Reviewed-by: Zhilu Yin <yinzl1@motorola.com>
2022-09-12 16:56:01 -03:00
Arun Kumar Khandavalli 341d0a724f qcacld-3.0: Add a check for WLM latency manager support
Currently there is no check for WLM latency manager support,
while setting the latency level which may lead to undefined behavior.
To address the above issue add a check for WLM latency manager support
and return not supported to userspace.

Change-Id: Id095f162c1202c0a0926f4f73e553f46d4980543
CRs-Fixed: 2762357
2021-11-22 16:46:38 -08:00
Arun Kumar Khandavalli fe2171fadf qcacld-3.0: Release sme global lock in the error condition
with recent commit 203218df88e7 
("qcacld-3.0: Set sme power stats response cb and context to NULL")  
fix in the error condition the sme global lock is not getting released 
resulting in the mc thread being struck.

Release the sme global lock in the error condition.

Change-Id: I6235a632c6b74c48374d4584eb727bf9ffe296a8
CRs-Fixed: 2867358
2021-08-27 00:41:16 -07:00
Arun Kumar Khandavalli 9d3c695209 qcacld-3.0: Stop dsc transaction in case of reinit failure
Incase of any error in the driver reinit the dsc transaction is
not stopped resulting in the timeout and system instability.

To mitigate the above issue, stop the dsc timeout incase of
reinit failure.

Change-Id: I59b37581a2e6909b61a32344ae9c4af2118558eb
CRs-Fixed: 2780376
2021-08-19 08:31:57 -07:00
Arun Kumar Khandavalli 5ad799e4d8 qcacld-3.0: register callbacks for bus failure register dump
Whenever there is a recovery triggered, if there is a
failure in reading the bus id collect the bus specific
registers to understand the reason for the failures.
Register the callbacks for updating the reason code and register
dump.

Change-Id: I4eb5327a806691737f605d3d3c83d2c28d1fe935
CRs-Fixed: 2835341
2020-12-11 03:11:19 -08:00
Arun Kumar Khandavalli 0aad826cfe qcacld-3.0: Serialize psoc idle shutdown and restart via PLD
Serialize psoc interface inactivity idle shutdown and restart via PLD
such that platform driver can serialize psoc idle shutdown and restart
to driver unload and SSR events to avoid any race conditions

Change-Id: I177a60eaf83b1c81f08cab2dc8a6bc1497484809
CRs-Fixed: 2776866
2020-11-25 10:25:27 -08:00
Arun Kumar Khandavalli c53eb57b0c qcacld-3.0: Add the new hang reasons
Add additional hang reason codes to convert in hdd_convert_hang_reason

Change-Id: Ibab7110b64ad9096da48aab9ae31906278120d60
CRS-Fixed: 2803846
2020-10-31 14:27:05 -07:00
Arun Kumar Khandavalli 17d6d8fe90 qcacld-3.0: Correct the tlv length of the hangdata
The Tlv of the hang data is reduced to 2bytes from the 4bytes
change the structure defnitions accordingly.

Change-Id: Ic535a7b985d028076d14afebe603dfa3fd8e94d3
CRs-Fixed: 2753804
2020-08-13 15:32:58 -07:00
Arun Kumar Khandavalli 3d56510cd9 qcacld-3.0: Trim the hang data size as per requirement
Trim the hang data as per the customer data size requirement.

Change-Id: I5a5d848f820ddeaa721dba176e67dba97fed7a71
CRs-Fixed: 2751261
2020-08-12 23:07:21 -07:00
Arun Kumar Khandavalli b2d87b2e4c qcacld-3.0: Enable VDEV response wakelock
Enable VDEV response wakelock functionality

Change-Id: I16db54405912ff275d7b552c4d9b2faf5d011f4c
CRs-Fixed: 2743631
2020-08-01 15:52:48 -07:00
Arun Kumar Khandavalli ae5d4735aa qcacld-3.0: Disable the panic on the self-recovery ini disable
Currently once the gEnableSelfRecovery is disabled it is decided to panic
once the firmware complete firmware dump is collected, this has a side-effect
when the normal SSR is triggered for testing purposes.
This reverts commit Ia184a265d0f76e43d1d5edc4bcc0849a05726dac.

Change-Id: Icec14a2afb902a275ffe0bf202ec75d8e58d9f58
CRs-Fixed: 2725430
2020-07-05 08:43:27 -07:00
Arun Kumar Khandavalli 07d792be0c qcacld-3-0: Have bus specific recovery ini checks to get imp info
Presently, in the host initiated recovery the handler checks whether
the support for recovery is enabled via the ini or triggers the panic.
Whenever the panic is triggered the irq's will be disabled,
this results in some targets not able to collect the important
MHI, PCI information on what caused the issue to root cause the issue.

So, for different targets check the ini at different places.

Change-Id: I0d0e322610abd9f8ceaba4fe9688cdd099c381e5
CRs-Fixed: 2715603
2020-07-04 21:22:55 -07:00
Arun Kumar Khandavalli 47925ee5c1 qcacld-3.0: Defer recovery cleanup to shutdown
As part of the firmware down notification if the indication comes
in the non-interrupt context the driver flushes the idle timeout
work and purges the shutdown down notifier.

If the the idletimeout is already running, as part of the idletimeout
work the platform,mhi irq's will also be freed, if the firmware crashes
and enters the RDDM mode during this time, platform driver will notify
the host through the uevent. Since free_irq waits for all the pending
interrupts to be serviced resulting in the deadlock.

Dont flush the work for the pci bus so the interrupt could
be completed and free irq could also be unblocked.

Change-Id: I4e106ff774fa90544ba97737a87682f42f9288df
CRs-Fixed: 2720348
2020-06-30 19:07:13 -07:00
Arun Kumar Khandavalli bfd2d2108c qcacld-3.0: Reject interface up when the recovery is inprogress
During the interface UP the driver will take rtnl lock and if the
recovery is going on at the same time it will wait for the recovery
to complete.

If its a modem ssr, the IPA related module would register all the
netdevices which need the rtnl_lock held by the driver.

Reject the interface up when the SSR is inprogress.

Change-Id: I7b2451f16c86cbe86a7c377d112bec12f7eb0252
CRs-Fixed: 2693540
2020-06-09 12:18:54 -07:00
Arun Kumar Khandavalli 6d6616e980 qcacld-3.0: Reject interface up when the recovery is inprogress
During the interface UP the driver will take rtnl lock and if the
recovery is going on at the same time it will wait for the recovery
to complete.

If its a modem ssr, the IPA related module would register all the
netdevices which need the rtnl_lock held by the driver.

Reject the interface up when the SSR is inprogress.

Change-Id: I7b2451f16c86cbe86a7c377d112bec12f7eb0252
CRs-Fixed: 2693540
2020-06-04 00:18:17 -07:00
Arun Kumar Khandavalli fe3313963a qcacld-3.0: Free the beacon memory when sap restart fails
Whenever there is a subsystem restart the sap is internally restarted
in the driver, whenever there is a failure during this sap restart
there could be a memory leak.

Fix is to free the beacon memory whenever the sap restart fails.

Change-Id: If329aacceef50124956bddc049ee8e55e880177d
CRs-Fixed: 2671251
2020-05-06 22:10:03 -07:00
Arun Kumar Khandavalli d6a3ee9444 qcacld-3.0: stop the bus bw timer during the driver unload
When the driver unload is triggered, the device could be in the
runtime suspend state, so the 1st thing driver does to do runtime
resume, During this runtime resume the bus bw timer could be started
which in some race conditions is not getting stopped.

Stop the bus bandwidth timer after the wlan chip is runtime resume.

Change-Id: Ie29f9b4d44cea5c5624020aa3b6b3f08489860d3
CRs-Fixed: 2672120
2020-04-30 15:10:41 -07:00
Arun Kumar Khandavalli 5c2aafe4f6 qcacld-3.0: move to the new pld uevent for the hang data
New pld uevent is added for the hang data. Move to the new uevent
and send the data to userspace upon the reception.

Change-Id: I24360c4171f4b26dc2bce719f06317ecc0316738
CRs-Fixed: 2665593
2020-04-23 11:50:16 -07:00
Arun Kumar Khandavalli edaeb66a70 qcacld-3.0: Send hang data to userspace
With the new feature when the recovery is triggered informatation is
collected from the various modules and send the data to user space.

Change-Id: I8d7bb5be46df6150d0efa1cdb8db74a135ba89d7
CRs-Fixed: 2651903
2020-04-23 11:49:58 -07:00
Arun Kumar Khandavalli 055ab70ecc qcacld-3.0: Update hdd hang data
Whenever a recovery is triggered in the hdd layer update the
various vdev data for hang event:
	1) Vdev id
	2) vdev opmode
	3) vdev state and substate

if the reason for recovery is max scan failures update the last
scan reject, reason and the vdev id on which scan is rejected.

Change-Id: I84928e56bac1fe58e7eada0a0574b2f23124ae65
CRs-Fixed: 2651694
2020-04-15 01:12:06 -07:00
Arun Kumar Khandavalli 43a7534d90 qcacld-3.0: update hang data for pe session
Update the hang data for the pessssion. For the pe module
update the various states which will give insight into the reason
for recovery.

Change-Id: I7e3f18bd8b18dd0d56c09d4a4ce38ce7c3677ecc
CRs-Fixed: 2651762
2020-04-15 01:11:46 -07:00
Arun Kumar Khandavalli 8895352b35 qcacld-3.0: update the hang data for the cds module
Update the hang data for the cds module, as part of the hang
data following information is filled:
	1) Hang Event version
	2) Wlan Driver version
	3) Reason for recovery

Change-Id: Ie5a008d1f9512f8e83a1d099fe333b0d2ce90abb
CRs-Fixed: 2650848
2020-04-15 01:11:38 -07:00
Arun Kumar Khandavalli 069b9d44e0 qcacld-3.0: Add build configuration for the htc hang event
htc hang event configuration has been added, enable
the build configration for the feature.

Change-Id: I5441f95288db46ca58ef44f4c825b9f4f7cf59ac
CRs-Fixed: 2651750
2020-04-15 01:10:42 -07:00
Arun Kumar Khandavalli d1130efb09 qcacld-3.0: Add build configuration for the wmi hang event
wmi hang event configuration has been added, enable
the build configration for the feature.

Change-Id: I8c7034d07f369f79191a2496e9000f83eecdba6e
CRs-Fixed: 2651741
2020-04-15 01:10:27 -07:00
Arun Kumar Khandavalli 5a8ad561e3 qcacld-3.0: Add build configuration for the qdf hang event
In qdf new hang event notifier chain has been added, enable
the build configration for the feature.

Change-Id: I98e2701499133d208af863b401fc47fafec35226
CRs-Fixed: 2648449
2020-04-15 01:10:12 -07:00
Arun Kumar Khandavalli 4a61c146f8 qcacld-3.0: Add build configuration for the qdf notifier chain
In qdf new os specicfic notifier chain has been added, enable
the build configration for the feature.

Change-Id: Ic08b3ebc3b173839496428a27d0eb4d7a1633cb6
CRs-Fixed: 2648245
2020-04-15 01:10:06 -07:00
Arun Kumar Khandavalli f36f826fd6 qcacld-3.0: stop the idle restart timer before reading the driver status
If the idle restart is not stopped before reading the driver status
the driver status could be changed in the other thread leading to
different issues.

Stop the idle restart timer before reading the driver status, so
the next action depending on the driver status can be taken correctly.

Change-Id: Ida7fe3fe8144e300344d29cae8188b64f074b3bb
CRs-Fixed: 2626500
2020-03-04 13:53:55 -08:00
Arun Kumar Khandavalli 57cb15b903 qcacld-3.0: Selectively reduce the ipa logs
Reduce loglevel of some logs from info to debug.

Change-Id: Ib881af4411da6a25f48a81adf1428b37df43b560
CRs-Fixed: 2607949
2020-01-28 05:30:42 -08:00
Arun Kumar Khandavalli afcb0553ff qcacld-3.0: Selectively reduce the hdd/osif logs
Reduce loglevel of some logs from info to debug.

Change-Id: Ie90515989a45bc41274bd79afe4c5e407561256b
CRs-Fixed: 2608793
2020-01-27 17:36:34 -08:00
Arun Kumar Khandavalli 1ac5aaddb8 qcacld-3.0: Selectively reduce the sap logs
Selectively reduce the sap logs from info/err to debug.

Change-Id: Ie3bb8f63a62d93f239d8b27cd930af2755ccdbf5
CRs-Fixed: 2607161
2020-01-27 14:19:51 -08:00
Arun Kumar Khandavalli da60bb1412 qcacld-3.0: Selectively reduce the SME logs
Selectively reduce the sme logs loglevel from info to debug.

Change-Id: Ie571aa0438e673d34d045869473935816d4289e9
CRs-Fixed: 2607108
2020-01-27 12:44:09 -08:00
Arun Kumar Khandavalli bc7ae34aa6 qcacld-3.0: Selectively reduce dp logs
Reduce the datapath logs from info to debug.

Change-Id: I89c6be34535ef75c0d5bf9b11d7f742f02322097
CRs-Fixed: 2607002
2020-01-27 05:17:00 -08:00
Arun Kumar Khandavalli 83d42e241d qcacld-3.0: Selectively reduce the p2p logs
Reduce p2p component logs loglevel form info to debug.

Change-Id: I56e3710a33de280d7c62e88de53f11d61a6515da
CRs-Fixed: 2607028
2020-01-27 05:16:46 -08:00
Arun Kumar Khandavalli a0bb689000 qcacld-3.0: selectively reduce the offload logs
Reduce loglevel of some logs from info to debug.

Change-Id: I7026cd376015de62d71ffd0b4eb2e79e13e2e4f0
CRs-Fixed:  2607973
2020-01-24 05:09:18 -08:00
Arun Kumar Khandavalli 32a9096941 qcacld-3.0: selectively reduce the mlme logs
Seletively reduce the mlme component logs from info to debug.

Change-Id: If31157aef1eba8fcd8bee5c654a9e87f4437cc95
CRs-Fixed: 2607165
2020-01-24 03:50:13 -08:00
Arun Kumar Khandavalli bdba410daa qcacld-3.0: Selectively reduce cds logs
Reduce the cds logs from info to debug.

Change-Id: I2b69dd1c03f6823254098b2ab22532b956001e1e
CRs-Fixed: 2607010
2020-01-23 10:57:03 -08:00
Arun Kumar Khandavalli 8b61ce1e4c qcacld-3.0: Selectively reduce tdls logs
Reduce tdls logs from info to debug.

Change-Id: I2de71c4aa5d9915afb68bc192dcd6a749f6b3b4e
CRs-Fixed: 2607020
2020-01-23 03:41:19 -08:00
Arun Kumar Khandavalli 5ba2743676 qcacld-3.0: Selectively reduce the pe layer logs
Selectively reduce pe layer logs loglevel from info to debug.

Change-Id: I187040fe2862253b2c93b32ef3c6cd247a4f0b04
CRS-Fixed: 2607090
2020-01-22 23:02:41 -08:00
Arun Kumar Khandavalli f4ed406089 qcacld-3.0: Selectively reduce the policymgr logs
Reduce certain logs of policymgr from info to debug.

Change-Id: Idb2817c20f97d5a8888cbe685bdc3b1eaf77662e
CRs-Fixed: 2607035
2020-01-22 23:02:18 -08:00
Arun Kumar Khandavalli 5aff060d8d qcacld-3.0: selectively reduce the nan logs
Selectively reduce the nan logs loglevel form info to debug.

Change-Id: Ie71e34582d22de14a49b3d07fc286d4c4caccdbd
CRs-Fixed: 2607290
2020-01-22 19:22:30 -08:00
Arun Kumar Khandavalli 9bf53ab36f qcacld-3.0: Use new api to check for leaks wlan_objmgr_psoc_check_for_leaks
The current implementaion check for peer, vdev and pdev leaks on
psoc in order and if any leak is found for peer then QDF_DEBUG_PANIC
is called and vdev and pdev leaks are not checked. Similar is the case
if vdev leak is found, pdev leaks are not checked.

Invoke new API to check for all the object leaks and then result in panic.

Change-Id: Icf6622760f3646b82f893beb7415b95307e2ccd7
CRs-Fixed: 2604594
2020-01-22 04:47:15 -08:00
Arun Kumar Khandavalli 5fdbbe2c4a Revert "qcacld-3.0: Remove NaN offloading option"
This reverts commit I1adb8ead32a0d45a34f72590c33309b17d6c80c0.
Nan offload supported is now supported.

Change-Id: Ic99aa886c82dcf4d9c68f658080bd800117cce87
CRs-Fixed: 2600602
2020-01-16 23:46:34 -08:00
Arun Kumar Khandavalli 0cc6233157 qcacld-3.0: Add flush callback for umac stop
During the scheduler_stop it tries to flush all the pending messages
in the queue, during the same the flush callbacks of all the pending
messages are invoked. If there is no flush callback for
SYS_MSG_ID_UMAC_STOP, it will free the bodyptr of the message which
contains the global variable g_stop_evt, which can result in invalid
access in the other thread.

Add a dummy flush callback message for the sys_stop message to
avoid the invalid access.

Change-Id: I46ca4240d787dce5b21cc2f99ced66a4c01b737c
CRs-Fixed: 2537773
2020-01-10 21:33:05 -08:00
Arun Kumar Khandavalli 3801c4f263 qcacld-3.0: Use stop adapter during SSR
Presently, during Subsystem Restart(SSR) the object references
are not released cleanly, invoke stop adapter during the SSR
to have common functionality between the netdevice going down
and SSR.

Change-Id: I2980379022f62ef27dea92868c8033c087544d50
CRs-Fixed: 2587443
2019-12-23 11:42:51 -08:00
Arun Kumar Khandavalli 6538f769c0 qcacld-3.0: Add a check for driver status in wlansap_set_band_csa
with a new change I9b2b1ead3b4502022aeefc08359037457bb051f9 added for
to switch from 2.4g from 5g when an indication is received, During the
driver re-initliazation also this function is getting invoked and trying
access freed memory resulting in null pointer deference.

Donot process the function wlansap_set_band_csa when the driver is
recovering.

Change-Id: Iab67d5b77ffc98166bf421ff30bcf641e37fef6a
CRs-Fixed: 2587706
2019-12-17 03:45:12 -08:00
Arun Kumar Khandavalli c988c53ea7 qcacld-3.0: Move from qdf event to linux completion for vdev destroy
Whenever there is a process waiting on a response from firmware it has the
option of using either a qdf_event or a linux completion event.
The primary difference between these is that if there is an SSR all
qdf_events are immediately completed whereas Linux completion events are
only completed by the normal flow of code.

With new upcoming changes SSR processing will take the normal path for
releasing all of its resources, and the qdf_session_close_event is used for
synchronization.
If we define this as a qdf_event, it will be completed when the SSR begins,
defeating its purpose.

Therefore change this to be a Linux completion event.

Change-Id: Ia6fe504e2a2d01f12c3d3446fffc2fc397566966
CRs-Fixed: 2586190
2019-12-17 03:45:01 -08:00
Arun Kumar Khandavalli a4cedce6e0 qcacld-3.0: Flush the bandwidth work properly in shutdown
In case interface timer has expired and modules have been stopped
and there is an SSR the bus bandwidth work is not properly destroyed.

Destroy the work before checking for status of modules state since
the work will be re-initialized.

Change-Id: Ie3b8f7d6d0fe1261f9f3c412e933748fb7637ca7
CRs-Fixed: 2573341
2019-12-05 23:53:53 -08:00
Arun Kumar Khandavalli efe77ff948 qcacld-3.0: Don't use vdev_mlme object in the vdev delete response
As part of the new changes, vdev mlme object will be freed before
the vdev delete response is received from the firmware. Hence do
not use the vdev_mlme object in the vdev delete response handler.

Change-Id: Idec5775f6c7ac767baedd173a7bde0d3a358d0fe
CRs-Fixed: 2563381
2019-12-05 23:53:40 -08:00
Arun Kumar Khandavalli 2f865fdceb qcacld-3.0: Move to the psoc wakelock from vdev wakelock
Wakelock is system level lock not required to be taken
for every vdev, Hence move the wakelock to the psoc hirerachy.

Change-Id: I7b3145a1349c0028db2888c2816948d1d48714d1
CRs-Fixed: 2574498
2019-12-05 23:53:26 -08:00
Arun Kumar Khandavalli 7b6bee792a qcacld-3.0: move to the psoc mlme timers
Move the vdev response timer from the vdev object structure
to the psoc mlme structure.

Change-Id: I1df253331ddbd5538066ee93bc3e45b703057818
CRs-Fixed: 2563383
2019-12-05 23:53:10 -08:00
Arun Kumar Khandavalli 0c9d5017c3 qcacld-3.0: Initialize the stop bss work in the adapter
In the latest kernels asserts if there is any unitialized work
gets flushed, stop_bss work is presently getting flushed from
multiple places and it is initialized only when there is no
channel to start the sap.

Fix it by intializing the work when the adapter is created.

Change-Id: I232247c2389f865471c7c2175bb93e254b29fc29
CRs-Fixed: 2565974
2019-12-01 17:40:28 -08:00
Arun Kumar Khandavalli c1d2b4f520 qcacld-3.0: Detach peer deletion from vdev deletion
Self-peer holds a reference to the vdev object. As part
of new changes to send vdev delete to firmware as part
of vdev delete notification, the self peer reference needs
to be released 1st before sending the vdev delete to firmware.

Hence detach the peer deletion from the vdev deletion.

Change-Id: I8169fdd6cc6acadea9a89baf38bd273797e8bc9b
CRs-Fixed: 2565315
2019-11-22 07:12:11 -08:00
Arun Kumar Khandavalli 4f6a5bd519 qcacld-3.0: Send vdev create to fw from object create notification
Send vdev create to firmware when the mlme vdev create handler
is invoked as part of the vdev object create.

Change-Id: Ibba02f6b5885d7b3a62529ef51768f520395513e
CRs-Fixed: 2555943
2019-11-21 09:13:20 -08:00
Arun Kumar Khandavalli bdc713cfde qcacld-3.0: Deregister the sta if stop bss fails
De-register the broadcast/connected sta if the stop_bss fails, so that
all the resources for the sta is properly freed.

Change-Id: Ib2462a98ca1ad561e39c3f69fa3f982b68d0fe63
CRs-Fixed: 2568668
2019-11-21 09:13:12 -08:00
Arun Kumar Khandavalli add284b880 qcacld-3.0: check for duplicate session before vdev create
Check for any duplicate peer with the same mac address before
the vdev is created.

Change-Id: Ie6d71b7b2892ab2ac6e8bfb37c99f20f0854c2f2
CRs-Fixed: 2555932
2019-11-21 00:44:54 -08:00
Arun Kumar Khandavalli dac7a45e2d qcacld-3.0: Donnot send vdev delete via serialization
Presently vdev delete is sent via serialization, which
needs a vdev reference. With the new FR to send the
vdev delete on the physical destroy in object manager
vdev delete cannot be sent via serialization.

Hence, disable the serialization for the vdev and
donot send the vdev delete via serialization.

Change-Id: I3afa34880ddaab68850ed235ec1451370d82e7dd
CRs-Fixed: 2566120
2019-11-15 16:00:57 -08:00
Arun Kumar Khandavalli 42b4487910 qcacld-3.0: Register Open/close session callbacks once
Open/close session callbacks are common for all the device modes
supported, so register once during the start_modules.

Change-Id: Ia94857ce4cc608be30e9974ddde8a6261d45f6e3
CRs-Fixed: 2555919
2019-11-14 19:25:21 -08:00
Arun Kumar Khandavalli c13afcd9da qcacld-3.0: Retrieve information from the object manager vdev
sme_session_params has duplicate information which can be retrived
from the vdev object directly, hence remove the duplicate values
and get information directly from the vdev.

Change-Id: I151dbefcfedc20673fbf072b9c308dc9a6243bb1
CRs-Fixed: 2555909
2019-11-09 02:26:27 -08:00
Arun Kumar Khandavalli 27f443e880 qcacld-3.0: Drive the self peer creation from the sme layer
Presently as part of the vdev creation the self peer for the vdev
is created in the object manager and in the firmware. The self
peer creation in the object manager needs the vdev to be in the
created state. As part of new changes to send the vdev create to
firmware as part of the vdev creation notification there will be
failure in creating in the self peer.

Hence, drive the self peer creation from the SME layer which will
create the vdev.

Change-Id: I0875f4ec5bd96438c0f21056e1d6920d3be2a177
CRs-Fixed: 2555868
2019-11-08 06:54:39 -08:00
Arun Kumar Khandavalli a43590e897 qcacld-3.0: Move psoc object to common component
Move to the common psoc object and retrieve the cfg ini
information from the legacy implementation.

Change-Id: I38147c748796550f2adede44b681559a4f329fbf
CRs-Fixed: 2547536
2019-10-26 11:55:08 -07:00
Arun Kumar Khandavalli bcd5634dae qcacld-3.0: Send the vdev create to firmware in the caller thread
Presently upon interface up a message is posted to the scheduler
to create the vdev, which sends the vdev create to the firmware,
for the vdev create there is no response from the firmware host
internally posts a fake message internally for the vdev create
response.

Dont post the vdev create to the scheduler thread but directly
send the vdev create to the firmware in the caller context.

Change-Id: Iafb186b13d948e421d152c3142cb8614fdbbffa6
CRs-Fixed: 2549530
2019-10-23 03:46:29 -07:00
Arun Kumar Khandavalli 378b7ee6a4 qcacld-3.0: Remove block/unblock shutdown cb
Modem block/unblock shutdown callbacks are added to synchronize
modem shutdown when the driver is in deinit sequence.

With new changes everything is synchronized via the platform driver,
So remove the the block/unblock shutdown callback's.

Change-Id: If66eed5b51bbce64f024edf49e37a21b222a6a4c
CRs-Fixed: 2489733
2019-10-15 02:30:04 -07:00
Arun Kumar Khandavalli 52cca56368 qcacld-3.0: Flush the wmi_rx_work_queue when the ready event fails
If the ready event times out the waiting thread in the error condition
starts closing the modules but in the other
thread the wmi_rx_work_queue could be executing trying to access the
data which being freed in the other thread.

Flush the wmi_rx_work_queue when the ready event times out.

Change-Id: I7d91b3fa5f3468c607ce3669eabf7d2e3789774d
CRs-Fixed: 2524305
2019-09-23 12:45:47 -07:00
Arun Kumar Khandavalli e8a01b80db qcacld-3.0: Free the tdls memory in the error conditions
As part of the tdls vdev creation, tdls osif memory is allocated
and not freed in the error condition, which can result in the
memory leak.

Free the tdls osif memory in the error condition

Change-Id: I084b14c4277be3e88142e3eaaabcf3293a15f220
CRs-Fixed: 2507609
2019-08-20 02:39:26 -07:00
Arun Kumar Khandavalli 6ba1569220 Revert "qcacld-3.0: Create lim session for monitor mode for legacy targets"
The change 2812433 needs revert it got merged with still some
pending comments.

Change-Id: I4555d60bf0c8cea1b3a812063ee24956b07c0d8b
CRs-Fixed: 2499426
2019-07-30 10:55:40 -07:00
Arun Kumar Khandavalli 88709de4cb qcacld-3.0: Create lim session for monitor mode for legacy targets
For the latest chipsets because of architecture change the
lim session for monitor mode is not required but for the
older chipsets using the mainline the lim session has to be created.
If the session is not created the channel setting to capture
the packets on the monitor interface fails.

Create the monitor session in lim for older targets.

Change-Id: Ide44201e91c2d92cddff66f563898015f9e28ca7
CRs-Fixed: 2498775
2019-07-29 11:23:06 -07:00
Arun Kumar Khandavalli 32b2af4365 qcacld-3.0: Sanitize the mc address list count
In the target_if layer  based on the mc address list count the
filter params are filled and sent to the firmware. If the mc address
list passed is more than the maximum supported address list there
can be possible buffer overflow.

Sanitize the mc address list count to avoid any overflow.

CRs-Fixed: 2452131
Change-Id: I03208a5487cfd730e933666c47accb2e46fbbc72
2019-05-31 14:50:35 -07:00
Arun Kumar Khandavalli 43fdd25d72 qcacld-3.0: Move allocation of tdls private to tdls component
Presently osif tdls memory is freed as part of the osif_priv
when the vdev is logically destroyed. There is case seen
wherein the  tdls is holding vdev reference and in the other
thread the  interface down is received and the osif_priv is
freed resulting in the tdls osif priv also, if the other thread
tries to dereference the tdls os priv it will result
null pointer exception.

Move the tdls osif priv memory creation/deletion to the tdls component.

Change-Id: I3782f6304bee5a6eaab4d9122a569ba56fd29947
CRs-Fixed: 2436379
2019-05-14 13:03:08 -07:00
Arun Kumar Khandavalli 4b6e218e4a qcacld-3.0: Remove the reboot notification to notification
This commit reverts 830c969fc9.
The changes are taken care at the upper layer to not invoke
the driver unload during the system reboot.

Hence reverting the change which added the reboot notification
to driver

Change-Id: I9582fd4b7db158756a2f558a65a79c3f733e97a0
CRs-Fixed: 2443790
2019-04-29 15:27:07 -07:00
Arun Kumar Khandavalli a423458219 qcacld-3.0: Propagate error from the hdd to wma in case of failure
When the ready event is received from the firmware, hdd callback
is called to create the pdev and update the capabilties. If
there is any error the error is not propogated back to hdd
which can result in the accessing the invalid memory.

Propagate the status correctly from hdd to wma to resolve this issue.
This will result in the probe failure until the resources are available
or reference leaks are fixed.

Change-Id: I97ec062893216e25e285d95d6bfb5cf3e91a4005
CRs-Fixed: 2426612
2019-04-25 00:51:26 -07:00
Arun Kumar Khandavalli f573e06d0e qcacld-3.0: Register the wext handlers for ftm mode
Presently the wext handlers are not getting registered for the
ftm mode resulting in the error when the ftm specific commands
are issued.

Register the wext ioctls when the interface up is received on the
ftm mode.

Change-Id: I50ae011012cd1d667e69d1d84f62c14fa253111a
CRs-Fixed: 2436937
2019-04-18 13:26:03 -07:00
Arun Kumar Khandavalli 2d83ba1300 qcacld-3.0: Dont create the session from add virt interface
Presently for SAP and p2p go a session is created in the firmware
and umac once the add virtual interface is received. It was
added previously when the session is not supported from the interface
up.

Now driver supports creation of the session from the interface up
for the beaconing entities the legacy code is removed.

Change-Id: Icf6aaac3722cf9292fb1519ba5e0aed74834895f
CRs-Fixed: 2368329
2019-04-09 04:00:07 -07:00
Arun Kumar Khandavalli deda5a812c qcacld-3.0: Add support to improve coex logging
Add support to get the various Coex data from the debugfs.
This commit adds the support to get the various coex data:
            * COEX STATE
            * COEX DPWB STATE
            * COEX TDM STATE
            * COEX IDRX STATE
            * COEX ANTENNA SHARING STATE
The specific state information can be read via the debugfs.
Example to read the COEX STATE logging:
            sm6150:/ # cat /sys/kernel/debug/wlan/mws_coex_state
                    vdev_id = 0
                    coex_scheme_bitmap =  0
                    active_conflict_count = 0
                    potential_conflict_count = 0
                    chavd_group0_bitmap = 0
                    chavd_group1_bitmap = 0
                    chavd_group2_bitmap = 0
                    chavd_group3_bitmap = 0

Change-Id: I92272ad7edf44df22730ac0fa992d876840ba632
CRs-Fixed: 2413943
2019-03-29 00:47:53 -07:00
Arun Kumar Khandavalli f1f6592094 qcacld-3.0: Add support for specifying ethernet protocol type
Add support for vendor attribute which givies provision to
specify the ethernet protocol id from userspace to the packets
which are offloaded to the driver/firmware (e.g., IPv4, IPv6).

Change-Id: I543cbe63c6daa43427c7f207c42c667525dc6dcd
CRs-Fixed: 2398207
2019-03-06 06:50:59 -08:00
Arun Kumar Khandavalli 34f69cfa51 qcacld-3.0: Update connect_timeout correctly in case of scan for ssid
Incase there is a scan for ssid failure connect_timeout is set to
true even when there is no BSSID has been found in the scan result.

Set the connect_timeout to false for the cases wherein there is a
scan for ssid failure.

Change-Id: I822371bbbe2a034b673798b28c993ba53468aa49
CRs-Fixed: 2404646
2019-02-27 06:42:51 -08:00
Arunk Khandavalli 5ff0375477 qcacld-3.0: Enable beacon reception stats only if sys is enabled
In some platforms sysfs entry is not enabled, beacon reception stats
which is dependent on sysfs is not correctly protected under sysfs
definition this can lead to symbol missing error in these platforms.

WARNING: "hdd_sysfs_destroy_adapter_root_obj"
WARNING: "hdd_sysfs_create_adapter_root_obj"

Also when the CONFIG_MOBILE_ROUTER is disabled there is an
skip_acs_scan_timer leak. skip_acs_scan_timer is initialized in the
ACTIVE_DOMAIN, move it to the INIT_DOMAIN to resolve the timer leak.

Change-Id: I75fb97aa69d7f84ead4a8b693123162d9940d78c
CRs-Fixed: 2379766
2019-01-20 05:52:40 -08:00
Arunk Khandavalli 13015f1059 qcacld-3.0: Initial dsc psoc deployement for syfs entries
Integrate the sysfs entries  to the new dsc psoc infrastructure.

Change-Id: I4ccb012125fed7ff41ce9a4d887e0df6091aec23
CRs-Fixed: 2362343
2018-12-14 11:05:32 -08:00
Arunk Khandavalli 447837f9d2 qcacld-3.0: Initial dsc psoc deployement for cfg80211 ops
Integrate the psoc cfg80211 operations to new dsc
infrastructure.

Change-Id: I66120229752b77286ec3ba24710be1bd4eca24e5
CRs-Fixed: 2362336
2018-12-14 11:05:27 -08:00
Arunk Khandavalli 99716d177a qcacld-3.0: Initial dsc psoc deployement for vendor command
Integrate dsc psoc infrastructure to the vendor commands.

Change-Id: Ic50d7ec0bd32c835e3125a9c895b74cae4d15f09
CRs-Fixed: 2362332
2018-12-14 11:05:23 -08:00
Arunk Khandavalli 521c005600 qcacld-3.0: Initial place holder for dsc stub functions
Initial change to hold the dsc stub functions

Change-Id: Id150755e7685c1a06a509b1cf2b10480c35a8bf4
CRs-Fixed: 2362316
2018-12-12 01:45:35 -08:00
Arunk Khandavalli ca56d4b488 qcacld-3.0: Add Host Driver support for Beacon reception stats
Implementation of Host driver support to collect per Vdev Beacon
reception  Stats from firmware and display the stats in sysfs.

	"adb shell cat /sys/class/net/wlan0/beacon_stats"
vdev id: 0
Total Beacon Count: 255
Total Beacon Miss Count: 21
Beacon Miss Bit map [0x800] [0x10000000] [0x22000400] [0x100]
[0x84000000] [0x4030002] [0x5034000] [0x28084]

Change-Id: Iadd31042320f7815a6a6f4733f5393dba93b5b3e
CRs-Fixed: 2360913
2018-12-11 12:27:05 -08:00
Arunk Khandavalli 890f6d9c7e qcacld-3.0: Move power stats from debugfs to sysfs
Move power stats from the debugs to sysfs. Also previously
power stats was maintained per vdev but the data received
from the firmware is per pdev. Hence move the power stats
implementation from vdev to pdev.

Change-Id: I10df003fe8f79d35d0758b56d971f4973d27750b
CRs-Fixed: 2345097
2018-11-07 01:35:44 -08:00
Arunk Khandavalli f9957c0fcf qcacld-3.0: Add fiwmare down case in the pld pcie uevent
When the firmware crashes platform driver notifies the driver
through CNSS_FW_DOWN. Since firmware down support is not
present for the PCI bus, The driver flags for target ready
and recovery flags are not getting set resulting in the commands
sent to firmware.

Add the firmware down support for the pci bus.

Change-Id: I20db3698602ea273038a3f024b4e5f61639f6d74
CRs-Fixed: 2338570
2018-10-29 13:49:33 -07:00
Arunk Khandavalli 987c8d514a qcacld-3.0: cleanup the interface if it went down during SSR
If the interface down is issued during the SSR the driver simply
rejects the interface down and silently initializes during the
reinitialization. This can result in resource leakages and also
results in upper layer and driver out-of-sync.

Hence mark the adapter that interface went down during ssr and
cleanup the same during the end of reinitialization so we can
cleanup all the resources.

Change-Id: I426eff3be09abdbafeaf7501df551ea7c49a0f47
CRs-Fixed: 2256433
2018-09-27 16:36:41 -07:00
Arunk Khandavalli 40943af150 qcacld-3.0: Send the lpass scan interface for station interface
Presently the lpass information is sent during the wlan startup
at that point session for the station interface is not created.

Send the lpass scan interface notifcation for station when the
interface up/down is received.

Change-Id: I50a68acc62a76f9e65e1758cd3b21688c0dd3500
CRs-Fixed: 2048439
2018-09-03 03:29:35 -07:00
Arunk Khandavalli 1574505022 qcacld-3.0: Send the correct error to HDD if self peer creation fails
During the vdev attach if the self peer creation fails from the protocol
stack the correct vdev delete is sent to the firmware but the success error
is propogated back to the HDD and the wmi vdev set commands are sent
to the firmware with invalid vdev id.

Change-Id: Ida3964e5a629f53e41ffc50b53216762727fd33d
CRs-Fixed: 2299941
2018-08-23 15:25:34 -07:00
Arunk Khandavalli a592bb6164 qcacld-3.0: Dont start the adapter from the change interface
With the latest android upgrade after the sap is turned off
change interface will switch netdev back to original mode and
starting the adapter in this state will create resources even
when the upper layer is not using the netdev.
Do not start the adapter from the change interface.

Change-Id: I763879ecc84dca4115bca0e4e805b8b4b6108bb8
CRs-Fixed: 2270730
2018-08-03 18:43:38 -07:00
Arunk Khandavalli 354b702aa7 qcacld-3.0: Avoid possible overflow while parsing scan ie
while parsing the QCA_WLAN_VENDOR_ATTR_SCAN_IE there can be possible
overflow overwriting the next ie pointers.

Hence validate the ie length received before memcpy.

Change-Id: Ic503331e6ee35bad5b3b6518cb140914cda2a447
CRs-Fixed: 2231992
2018-05-22 04:56:54 -07:00
Arunk Khandavalli 5923cc98c8 qcacld-3.0: Dont process uevent request when the modules are closed
When the SSR is triggered after the modules are closed, uevent
notifier is trying to get the pdev which is alredy destroyed.

Reject the uevent notification if the modules are already closed.

Change-Id: I8074838b18b1e36dd67afa90125f9fbe06d32c34
CRs-Fixed: 2219843
2018-05-01 06:20:21 -07:00
Arunk Khandavalli 830c969fc9 qcacld-3.0: Dont process driver unload during system reboot
During the system reboot when the firmware goes offline before the
driver unload there is no way to detect whether the it is because
of the reboot or a assert in the firmware. So, the driver waits
for the firmware to recover before continuing with unloading
the device.

Since this is a reboot case the firmware will not respawn the
execution and host driver is struck.

To mitigate the issue register a reboot notifier with the kernel
and if reboot is triggered proceed with a fake unload.

Change-Id: I33d14c393930e9ee737d38ffdb26e921fb057f29
CRs-Fixed: 2211776
2018-04-19 14:15:08 -07:00
Arunk Khandavalli 2859fa1f8b qcacld-3.0: Add fw down check to validate context
Is firmware down check is added explicity in some api's and insome
northbound interfaces it is not added resulting in waiting for
firmware response even when the firmware is down.

Move firmware down check to validate context umbrella where
other driver states are validated.

Change-Id: I42a520f8a573825fde55a40dd03bb942f8a34b9c
CRs-Fixed: 2188938
2018-02-20 21:47:55 -08:00
Arunk Khandavalli 4b44ef4e00 qcacld-3.0: update tgt services from converged structures
Update the services information from the target psoc info structure.

CRs-Fixed: 2178933
Change-Id: I7137ff604d680fe6eb5ff6486b59879bf52ebc91
2018-02-09 06:24:23 -08:00
Arunk Khandavalli 24167fc8f3 qcacmn: update the pcl info from the converged structures
Update the pcl information from the converged strutures.

CRs-Fixed: 2179012
Change-Id: Id9269e85728409645266e1edc17d03237144a9cc
2018-02-08 07:55:50 -08:00
Arunk Khandavalli 10af728966 qcacld-3.0: use common specific mode caps
As part of convergence the mode capabilities
are extracted and saved in the target info structure.
Update the hardware mode list and pcl from the converged
structures.

CRs-Fixed: 2179003
Change-Id: I3cfc28533448c312913db3bead5d5322386f3f74
2018-02-08 07:55:38 -08:00
Arunk Khandavalli 2462f461ab qcacld-3.0: Remove redundant wma_handle values
update the max frag entry,ht,vht, rf chains from from the converged
target psoc capabilities information and remove redundant wma_handle.

CRs-Fixed: 2178922
Change-Id: I6bfe734bac85905b0d6837bffb37d286cff2a4ff
2018-02-07 03:07:37 -08:00
Arunk Khandavalli aaf6b14da0 qcacld-3.0: Use converged wmi service bit map
Use the converged wmi service bitmap from the
target psoc info instead extracting the same from
the ready event.

CRs-Fixed: 2178812
Change-Id: I00d61aa3cbb2a90459d4363e2ca04e297cc74187
2018-02-07 03:07:32 -08:00
Arunk Khandavalli 80a61351fb qcacld-3.0: Extract phy_capability from target psoc
As part of converged init deinit architecuture, all the target
capabilities are saved as part of target_psoc_info, use the same
to update.

CRs-Fixed: 2178726
Change-Id: Iad1d0224e0fdfe1140d1600e17f3e585142eaf63
2018-02-07 02:15:12 -08:00
Arunk Khandavalli cfde2719f5 qcacld-3.0: use converged target resource config
As part of converged architecture use the converged
target resource configuration.

CRs-Fixed: 2178610
Change-Id: Ic0e3cbddea3c216688eb16c4e9a8045c7a0a1e9e
2018-02-03 15:10:42 -08:00
Arunk Khandavalli a6305a33b6 qcacld-3.0: Converge on Initial Host-FW handshake
Initial changes for the init deinit convergence wherein
service ready, extended service ready and init cmd are
converged.

Change-Id: I1c1fd50f51362f4f09561c259961e6761429fcd0
CRs-Fixed: 2178590
2018-02-03 15:10:39 -08:00
Arunk Khandavalli 6a22788176 qcacld-3.0: Dont set mc addr list if the modules are closed
MC addr list is a ndo operation can be invoked by the kernel even
if the driver modules are closed which can result in accessing from
freed variables.
Reject the set/reset mc addr list when the modules are closed.

Change-Id: Ief83e18e6f8e431c7d68377f803ac602178f8913
CRs-Fixed: 2153099
2017-12-13 19:18:01 -08:00