Commit Graph

141 Commits

Author SHA1 Message Date
Mohammed Ahmed
c775b5586a qcacmn: Fix incorrect layering in scan component
Replace ucfg api call with wlan api calls for internal components.

Change-Id: I0289bf44753d3692468a12fbe7109e348c8e8957
CRs-Fixed: 3011167
2021-08-19 02:14:11 -07:00
Abhishek Singh
2c0f545cbf qcacmn: Remove unused commands from serialization
Remove unused commands from serialization.

Change-Id: I4692cc66c7288344e7b74644d08224a1e9772541
CRs-Fixed: 2978645
2021-06-28 12:24:45 -07:00
Abhishek Singh
e49edb3186 qcacmn: Avoid ser timeout and actual command removal race
In case the serialization command timeout happens, it queues a msg
with in schedular thread to process timeout and pass the active timer
as its context, but if before the timeout process is executed the
actual command completion can remove the command from serialization
and it will update the timer data to point to the newly activated
command.

Now when the timer msg is executed the timer is pointing to the newly
activated command instead of actual command which was timed out
and thus remove the new command instead of the original command.

This leads to an issue where the new active command removal is a
failure when its process is completed and thus action remains
incomplete. This can also lead to two commands getting processed at
the same time as the new command was forcefully removed.

To fix this instead of passing the timer context pass the copied
command in msg to scheduler thread and do not delete the command
from serialization if the command is not active.

Change-Id: I14b489172d0f22a9ed3b26b9c94226a4095f1dee
CRs-Fixed: 2950525
2021-05-27 13:41:53 -07:00
Abhishek Singh
9b797fd035 qcacmn: Add logic to remove preauth and roam ser command
Add logic to remove preauth or roam command from serialization
depending on the state the roaming was in.

Change-Id: Ia381d040ce7e15a725eb2402896bf476d3236566
CRs-fixed: 2882994
2021-03-05 01:18:30 -08:00
Santosh Anbu
45a300ce7b qcacmn: Support roaming request to connection manager
Add change to support roaming request to connection manager.

Change-Id: I7f580e042522a245fc6a263d0e8f8b32b2f693f7
CRs-Fixed: 2845076
2021-01-11 01:52:47 -08:00
Bapiraju Alla
f36047161f qcacmn: Fix vdev obj manager reference release in serialization
Vdev object manager reference should be taken before enqueuing
serialization command and it should be released after dequeuing the
command from serialization queue. Currently this reference release is
done before moving the command to active queue from pending queue.
This may lead to vdev object deletion before the command is moved to
active queue and result in use after free access for vdev object.

To resolve this, release vdev object reference after moving the
serialization command to active queue.

Change-Id: Ibef0814a245abb36f526997d848cf15ef6a49a44
CRs-Fixed: 2832676
2020-12-08 13:15:51 -08:00
Himanshu Batra
f7d6997020 qcacmn: Update queue size from pending queue after command activation
As part of activaiton of serialization command from pending to
active queue, the lock is released. In the activation API, the
same API to move non scan cmds from pending to active queue can
be called if activation fails. This reentrant API may modify the
pending queue even before the control is given back to the caller
API leading to random behavior when accesing the next cmd from pending
queue via local variables.

Add fix to update queue size from pending queue after command activation

Change-Id: I8082e2a9dd3410369967ab20196853ddfa0639a7
CRs-Fixed: 2801956
2020-11-10 00:58:30 -08:00
Vivek
8ceed6b2bc qcacmn: Check for valid vdev queue for serialization
While removing command from serialization, it is possible
that with the last command removal of a vdev,
the vdev could be deleted and before attempting the
movement of command from pending vdev queue to active queue,
we need check if the serialization vdev object is valid.

Add a check to ensure that serialization vdev object is
valid before trying to move command from pending to active
for a vdev.

CRs-Fixed: 2807736
Change-Id: Iea6df72eeeb62b7868f30337e7da99039df8b23a
2020-11-08 22:53:12 -08:00
Min Liu
d88847938b qcacmn: Code cleanup in wlan_serialization_destroy_cmd_pool
Remove unnecessary assignment in wlan_serialization_destroy_cmd_pool
to avoid false alarm in some static code analysis tool.

Change-Id: I6f53b9c44534dc6297cf872dce0a265e1696d90c
CRs-Fixed: 2751743
2020-08-21 02:28:51 -07:00
Ashish Kumar Dhanotiya
737eb69429 qcacmn: Add new scan type SCAN_FOR_CONNECT for conn_manager infra
Add new scan type SCAN_FOR_CONNECT to support connection manager
infrastructure.

CRs-Fixed: 2713772
Change-Id: I631f3f0324e82ef6cd8b2befbed020649c80bc4c
2020-07-02 08:48:14 -07:00
Abhishek Singh
62fb09b241 qcacmn: Fix race between ser psoc close and vdev destroy handler
In wlan_serialization_psoc_disable the timers are freed without
holding lock and at the same time the
wlan_serialization_cleanup_vdev_timers from vdev destroy handler
is accessing the timers, this result in cleanup_vdev_timers
accessing freed timer memory resulting in assert.

Fix is to free timer memory while holding timer lock. Also as the
lock can be used by vdev delete handler after freeing in
psoc_disable, move the init and deinit of the lock to psoc create
and destroy handlers respectively.

Change-Id: Idf822a91022de6b51c7ee1895f71b6fb94fedd72
CRs-Fixed: 2721064
2020-06-30 02:34:01 -07:00
Lincoln Tran
a86b23ee68 qcacmn: Update scheduler_msg callback type
This fixes a CFI failure in callback assignment.

Currently, the callbacks in scheduler_msg are void function
pointers. Update them to have a defined type as
scheduler_msg_process_fn_t to catch type mismatch during
compilation.

Other changes to conform to this new type include:
	1. Cast callback to qdf_mc_timer_callback_t when
	   referencing, and back when assigning
	2. Cast wlan_serialization_generic_timer_cb to
	   take fit into scheduler_msg
	3. Cast target_if_vdev_mgr_rsp_timer_cb to fit
	   into scheduler_msg

Change-Id: I052bc54826d377ae92f5bcc80ca08afb6f5e01e3
CRs-fixed: 2719975
2020-06-27 06:18:28 -07:00
Santosh Anbu
5b4ee46d8e qcacmn: Check queue size of queue operation
As part of activation of pending cmds after removal of a blocking cmd,
we iterate over the pdev pending list until the queue size and move
non-scan pending cmd to active queue and go to the head of the queue
in the next iteration.

Since we start from head of queue with decreased queue size value, the
last few cmds in the pending is never iterated since queue size has
already reached zero leading to cmds left in pending queue forever.

Add change to restore pending node to previous node of the command that
is moved from pending queue.

Change-Id: If500906c853f21319c04a21c8c68690a71e51ec2
CRs-Fixed: 2713555
2020-06-19 19:45:21 -07:00
Vivek
80a5429aa1 qcacmn: Add vdev id when printing serialization pdev queue
While printing the serialization pdev queue, we are not
printing the VDEV id.

Add VDEV id while printing the serialization pdev queues

Change-Id: Ie6ecbf36da3026550fbe54137c546cf8bd7940e4
CRs-Fixed: 2703604
2020-06-16 01:52:59 -07:00
Lincoln Tran
e37321aa90 qcacmn: Revert wlan_serialization_generic_timer_cb
Revert the change for wlan_serialization_generic_timer_cb
from change I760b41b81c006187efb162d410390e1c11878b82.
The change introduced a CFI error because timer callbacks
do not expect a return status.

Change-Id: Iebb17fb82c5b3d4b1393e2b3417c766d118c0674
CRs-fixed: 2687777
2020-06-09 12:28:18 -07:00
Santosh Anbu
bfaf232db7 qcacmn: Use qdf_bitmap_empty to check bit status
Replace the implementation of checking bitmap status with a
standard API qdf_bitmap_empty

Change-Id: I22ee8c25c1d911f65ba4bfe235557444e6333ca4
CRs-Fixed: 2690914
2020-05-21 12:36:19 -07:00
Wu Gao
355b2b49bd qcacmn: Use %pK uppercase K instead of k in format specifier
Usage of %p instead of %pK can lead to info leak, so use %pK uppercase
K instead of k.

Change-Id: Ie4f51e053ed28045b9920f274baebef0233f070e
CRs-Fixed: 2677374
2020-05-06 10:48:03 -07:00
Pragaspathi Thilagaraj
0150333a89 qcacmn: Abort only host scans on roam start notification
The roam sequence in LFR-3.0 is roam scan start notification
from firmware followed by roam start indication and then
roam synch,roam synch frame events. Roam start is sent
after candidate selection and host driver will disable
queues when roam start is received.
But for emergency roam trigger, firmware sends roam start
indication directly without notifying roam scan start to disable
data path queues immediately after deauth received from the AP.
So roam start is received before roam scan is started at firmware
and before candidate selection is done.

After roam start notification, host sends scan abort for all scan
on vdev by setting scan command request type to
WMI_SCN_STOP_VAP_ALL. This results in roam scan getting aborted at
firmare in emergency deauth roaming case and roaming fails.

Introduce new vdev id value based on which the scan module will
abort only host triggered scans setting the flag
WMI_SCN_STOP_HOST_VAP_ALL in the scan request.

Change-Id: I3a162c55d4a008ff986fd957bed395b39c060bb5
CRs-Fixed: 2636410
2020-04-27 21:32:22 -07:00
Ashish Kumar Dhanotiya
674614ab3c qcacmn: Add serialization command to get disconnect stats
Currently for SAP case on the disconnection with the
client, host driver sends get stats command for the
disconnected peer to the FW and proceeds with the peer
deletion. There is a race condition where if the peer
gets deleted in the object manager before FW sends the
requested stats in that case host driver drops the
response from the FW.

To resolve above issue send the get stats request command
in serialization before peer delete command gets serialized
which will ensure that get stats response is processed
before peer delete in the object manager.

Change-Id: Iaa63e299ddfd3ca46c80bd79c3461c183fc0a62f
CRs-Fixed: 2664328
2020-04-16 16:19:56 -07:00
Abhishek Singh
f50b491842 qcacmn: Add Api to flush all scan and non scan commands for vdev
Add Api to flush all scan and non scan commands for vdev

Change-Id: I17b90b8db782639897d7d32d36f562e25ae459e3
CRs-Fixed: 2664640
2020-04-15 16:18:27 -07:00
Vivek
bb32488efe qcacmn: Define serialization active vdev bitmap using qdf_bitmap
The active vdev bitmap used in serialization is
32bits and it is per pdev.

But in cases, where there can be more than 32 vaps
configured, the bit positions of a 32bit bitmap cannot
be used to indicate the active commands for a vdev whose
id is more than 31.

So, we need to increase active cmd vdev bitmap to support
for max number of vdev ids that is possible for a pdev.

Considering the vdev id is per psoc scope and can spread
across pdevs, increasing the size of the bitmap to max
vdevs supported per psoc.

CRs-Fixed: 2656046
Change-Id: Ic7728145b208492af218320fa84f35bb1f918aab
2020-04-15 12:12:21 -07:00
Vivek
5ebf9cf853 qcacmn: Check if cmd present in serialization queue atomically
The current API to get if a command is present in the active
queue was executed without the lock acquired. Here, at times
we get the queue size as one, and when we actually get the command
from the active queue, we get nothing.

This could be that the command from the active queue was removed
in another context almost at the same time, when we trying to read
the command from the active queue.

To avoid this, we do the operation of reading the queue size and
reading from the active queue with the queue locks held, so no
other context could remove the command from the active queue while
we are reading the command from the active queue.

CRs-Fixed: 2644038
Change-Id: Icca019320b1ba2d7d751432142b9bad50519d701
2020-04-07 03:01:13 -07:00
Bapiraju Alla
acf898a145 qcacmn: Fix return type for scheduler_msg callbacks
This fixes a CFI failure in callback assignment

Change-Id: I760b41b81c006187efb162d410390e1c11878b82
CRs-Fixed: 2643320
2020-04-01 12:40:45 -07:00
Santosh Anbu
b59fbe7504 qcacmn: Reduce log level of serialization deinit
Add change to reduce log level for the serialization deinit
debug string as part of bootlog cleanup.

Change-Id: Ibf1cf8352df053df0dba6239f503b868a870a04d
CRs-Fixed: 2623638
2020-02-18 12:48:45 -08:00
gaurank kathpalia
59b431a029 qcacmn: Optimize logs in serialization
Optimize the logs in serialization.

Change-Id: I0148a4d0799102817167b19e27cca609570e3b02
CRs-Fixed: 2612823
2020-02-04 06:06:50 -08:00
Abhishek Singh
1c46a20660 qcacmn: Optimize logs in serialization
Remove redundant logs and optimize the logs in serialization.

Change-Id: I7eaf252c8266ca1c60d213b0309ef217bc95ff33
CRs-Fixed: 2612823
2020-01-31 05:37:23 -08:00
Arun Kumar Khandavalli
d3ebfc2db6 qcacmn: Selectively reduce the serialization logs
Reduce the serilization logs from info to debug.

Change-Id: If25749086cc05a97eed5b438cf3e14237428acfd
CRs-Fixed: 2606566
2020-01-26 22:16:59 -08:00
Balaganapathy Palanisamy
3020842b6d qcacmn: Serialize PDEV CSA channel switch
CSA channel switch call directly interacts with VDEV
state machine, move CSA restart to go through serialization
service.

CRs-Fixed: 2598123

Change-Id: Ic0bea64b56f54eed354e11d0873ae4423e365cca
2020-01-17 21:29:38 -08:00
Abhinav Kumar
4c3c73a375 qcacmn: Remove unused serialization API
Remove unused serialization API
wlan_serialization_get_active_list_count.

Change-Id: I80c1cd5693fb3dda91ffd7de01c1df244e648135
CRs-Fixed: 2580681
2019-12-10 00:51:51 -08:00
Gururaj Pandurangi
85d32ab984 qcacmn: Rate limit logs in serialization API
Rate limit logs in wlan_serialization_peek_head_active_cmd_using_psoc
to prevent excessive logging

Change-Id: I25bc93754cf4fe5d56fdb67c15b79b72fcda9efd
CRs-Fixed: 2574786
2019-12-03 01:15:38 -08:00
Rachit Kankane
98ec4d132b qcacmn: use spinlock before iterating
Before iterating in pending list, use spinlock to avoid possible
race condition.
Remove function wlan_serialization_get_active_list_next_node_using_psoc
as it not being used and is part of legacy flow which is suppose to be
removed eventually.

Change-Id: I9e7cbd9db8b5a1c45915bf5291cd5011c276d0e2
CRs-Fixed: 2573425
2019-12-02 12:39:42 -08:00
Vivek
f011832a65 qcacmn: Update blocking command flags atomically
When moving a blocking command from pending to active queue,
we release the lock and call the activation cb.
After the activation cb returns, we update the blocking cmd
waiting flag based on the active cmd node's "is_blocking" param.

If the activation cb is also resulting in removing the command,
then after the cb returns, the active cmd node is returned to the
free pool and our check fails, and we miss to update the blocking
cmd waiting flag, resulting in no further commands moving to the
active queue.

The update to the blocking command should be done atomically,
immediately after it moves to active queue and before releasing
the lock for the activation callback.

Change-Id: Idedccb16ce68bb2166fb3970cd231fe738ec6af2
CRs-Fixed: 2554767
2019-11-19 13:05:08 -08:00
Arun Kumar Khandavalli
5377f457a1 qcacmn: Introduce new api to disable the vdev serialization queue
MCL presently sends the vdev delete to firmware via serialization,
with a new requirement vdev delete cannot be sent via serialization.
So, disable the serialization for the vdev before sending the vdev
delete to firmware.

Change-Id: Ieffccaf815eff7627d39b0191a7be121e85965fd
CRs-Fixed: 2566113
2019-11-15 16:01:32 -08:00
Wu Gao
5988e8b7d2 qcacmn: Remove unnecessary logs in loop
There is unnecessary logs in loop which affect useful log capturing.

Change-Id: I37b2c8123a280e4ec080ac1fb75e43135936fd79
CRs-Fixed: 2552104
2019-10-27 19:27:56 -07:00
Abhishek Singh
21116dd976 qcacmn: Fix removal of the serialization command if timer start fail
In case vdev is logically deleted the serialization active timer fails
to start because it fails to get vdev ref count. Now in this case the
cmd is not removed from the active queue and is just marked
CMD_ACTIVE_MARKED_FOR_REMOVAL because CMD_MARKED_FOR_ACTIVATION is set.

Even during pdev stop as CMD_MARKED_FOR_ACTIVATION is set the command is
not removed.

Fix is to reset CMD_MARKED_FOR_ACTIVATION flag and handle it in same way
as the activate failure case.
Also reset the timer cmd after timer start failure to avoid vdev ref count
release by WLAN_SERIALIZATION_ID even when it failed to take the ref count
in first place.

Change-Id: Ic078efa8ce4ad563087381b8c95eba91894d8a48
CRs-Fixed: 2535245
2019-09-27 02:46:53 -07:00
Himanshu Batra
591b333f00 qcacmn: Decrease log level of some expected prints
Log level of some expected prints were set to error level because
of which the prints were coming frequently.
Moving log level of these expected prints from error to debug level.

Change-Id: Ifd2672cd73db02488ce3055ca5e35d423d4f4761
CRs-Fixed: 2522164
2019-09-26 22:05:30 -07:00
Vivek
91dcde9050 qcacmn: Check for pdev/psoc before requesting serialization psoc object
The serialization vdev destroy handlers extracts the psoc
from the vdev, and get its psoc component object.

If the pdev or psoc is NULL for some reason, we get a
crash in object manager while trying to retrieve the serialization
psoc object.

So check for valid pdev/psoc before we get the serialization psoc object.

Change-Id: I9ca45654250403a8b5fe674431251defd1aac6e8
CRs-Fixed: 2524231
2019-09-17 03:56:23 -07:00
Abhishek Ambure
9377b064a6 qcacmn: Rename WLAN_SER_CMD_DEL_STA_SESSION macro
As a part of vdev manager conversion, vdev delete code is
refactored. Legacy code and naming is removed. In vdev manager
operations, STA_SESSION is addressed as VDEV.

Hence WLAN_SER_CMD_DEL_STA_SESSION macro is renamed to
WLAN_SER_CMD_VDEV_DELETE.

Change-Id: I08bf6b2e69f5635d5ebc2548c18991bbb12b3985
CRs-Fixed: 2508147
2019-08-14 15:43:23 -07:00
Pragaspathi Thilagaraj
bdcce7fcb1 qcacmn: Change the maximum serialization pending commands
The host driver serialization module currently supports upto 4
commands in non scan pending queue. This is calculated at the
wlan_serialization_vdev_create_handler() as:
    max_pending_cmds = (WLAN_SER_MAX_PENDING_CMDS /
                        WLAN_SER_MAX_VDEVS)

But in SAP case, if multiple STA sends deauth at the same time,
4 pending commands in non scan pending queue is not sufficient
and will result in only disassoc from the first 4 STA getting
honored.

The current host wlan driver supports 3 SAP mode and
2 STA vdevs amounting to a total of 5 vdevs supported.
So calculate the total non scan pending commands for
serialization based on the total peers supported for each
mode to fix this issue.

In SAP case, maximum 32 peer are supported and for STA case,
maximum 4 pending commands for serialization. So change the
max pending commands calculation as:
 max_pending_cmds = (No. of sap modes supported * 32) +
                    (No .of STA modes supported *4 )

For MCL case the definition of WLAN_SER_MAX_PENDING_CMDS
will be moved to Kbuild.
For WIN case, the existing maximum count will be retained.

Change-Id: Iff1d9430b45e26812b600560b08e85e6040eafef
CRs-Fixed: 2483520
2019-07-17 17:42:33 -07:00
Santosh Anbu
0616b55fed qcacmn: API to support serialization of restart cmds
Add APIs to support serialization of pdev restart and vdev
restart commands.

Change-Id: I367a8f369692e660c37278f7494db7aa0aeb7cd6
CRs-Fixed: 2480314
2019-07-16 15:53:56 -07:00
Santosh Anbu
f8ed4b9824 qcacmn: Add API for cancellation of non-blocking cmd
Add API to support cancellation of a non-scan command to match with the
vdev and is a non-blocking serialization command.

Change-Id: I31556ea8f35b9caf314f10eba0f0f655e3fce806
CRs-Fixed: 2481935
2019-07-16 15:53:52 -07:00
Santosh Anbu
e44904327a qcacmn: Update doc for serialization commands
Add change to update the doc section for the list of commands supported
by the serialization module.

Change-Id: I3534d3798291fa259c8ee4de38df8c0e8649e5ab
CRs-Fixed: 2477833
2019-07-01 02:24:54 -07:00
Vivek
140070028c qcacmn: Avoid adding cmd to serialization queue if disabled
Add API to fetch the vdev queue status and avoid enqueueing command
to serialization queue if the vdev queue is found to be disabled

Change-Id: If615b07dceaeb3113592f24355f254c8e70ca8a2
CRs-Fixed: 2470208
2019-06-14 07:41:05 -07:00
Santosh Anbu
f7b253f5e2 qcacmn: Fix to release vdev reference on cmd dequeue
Add change to release vdev reference only on successful removal
of active cmd from serialization active queue.

Change-Id: I2e14f7f53dc38388cdd05f029edc9329f9dd86a7
CRs-Fixed: 2463724
2019-06-12 20:04:15 -07:00
Abhishek Singh
77f9ba1cc0 qcacmn: Move legacy serialization flush cmds to common api
Move legacy serialization flush cmds to common api

Change-Id: I7a1a46a615c90e112c91efc4aec1461023b6ad5c
CRs-Fixed: 2452518
2019-05-16 14:46:34 -07:00
Jianmin Zhu
787c7cdb43 qcacmn: Free serial cmd before its timer when rmmod
Rmmod process:
wlan_hdd_pld_remove --> hdd_stop_adapter --> hdd_vdev_destroy
--> WLAN_SER_CMD_DEL_STA_SESSION (25) cmd queued --> PLD_FW_DOWN
(will complete wait event as part of qdf_complete_wait_events)
--> hdd_wlan_stop_modules --> cds_disable -->
dispatcher_psoc_disable --> wlan_serialization_psoc_disable -->
wlan_serialization_timer_destroy --> umac_stop --> csr_stop -->
wlan_ser_cancel_non_scan_cmd -> check if timer is present but th
 timer are already destroyed, so assert.

Move wlan_serialization_purge_cmd_list into converged API file to
be shared by MCC and WIN.

Change-Id: Iad557e4a05d682c257be0c39049c52950e5eb530
CRs-Fixed: 2451058
2019-05-16 05:57:33 -07:00
Vivek
ed4f95a545 qcacmn: Avoid vdev destroy until serialization cmd removal
The serialization active command removal can happen in two ways
1. Its through wlan_serialization_remove_cmd API
2. Command times out and command timeout handler is called.

In case, cmd times out and handler is called in scheduler
context and as part of the active cmd removal,
the active cmd is removed, and release cmd cb is called
which could delete the vdev(post last reference release).
Then as part of moving cmd from pending to active,
the vdev queues are null, and we see a panic.

We take a vdev reference, when timer for active cmd is started.

For active cmd removal through wlan_serialization_remove_cmd,
we release the reference when the timer is stopped.

To avoid vdev destroy, in case command times out,
and until the command timeout handling is completed,
we hold vdev reference from when timer is started,
until timer handler completes.

Change-Id: I16b6864f75e8bf354da6f8b16c3aaa6cf39d7ac7
CRs-Fixed: 2422422
2019-04-19 04:09:04 -07:00
Vivek
445a3a5889 qcacmn: Print all elements of serialization history circular buffer
In the current implementation, we print the ser history
from index 0 to the current index of the ciruclar buffer,
so when buffer overflows we print only few recent items.

Instead, we should print all the elements in the circular buffer
starting from current index to entire length of the circular buffer.
This will print all the elements in the circular buffer
when it overflows and also takes care of printing
required items when buffer is not overflown.

Change-Id: I6c54cb34de7a1ba24ee0204004cc9a203173c66b
CRs-Fixed: 2430483
2019-04-12 02:56:42 -07:00
Santosh Anbu
a3d6f77c62 qcacmn: Add API to validate umac_cmd in serialization command
Since umac cmd is specific to the module adding cmd to serialization
queue, an API is needed to validate the umac_cmd associated with that
serialization context holding the serialization queue lock.

Change-Id: Iadb4deb17ffabd780432a29e7cbd37024fd431fe
CRs-Fixed: 2430764
2019-04-11 01:14:10 -07:00
Vivek
740f39f568 qcacmn: Remove assert on serialization timer handler's cmd check
There is an assert inside the serialization timer cb.
This timer cb can also be called in the scheduler context.

So if we get a scan cancel request, it is posted to scheduler
and after that command timesout, the timer  cb is posted
to the scheduler.

So first the cancel is executed and the command is removed.
After that, the timer handler is executed which will find timer->cmd
to NULL.

So, by the time, the timer handler is involved in scheduler context
the command might be cancelled so we return an error when cmd is null
in timer handler cb.

Change-Id: I03651a63de88fe5c6467c5783254ffd006c663d2
CRs-Fixed: 2427323
2019-04-04 10:31:53 -07:00