qcacld-3.0: Add support to cache north bound commands during SSR
Driver receives interface down/del virtual interface commands from kernel with rtnl lock held. In driver, these commands will wait for SSR to be completed. So in this case rtnl lock will be held for long time. To avoid this, cache the north bound command received during SSR and execute them in re-initialization sequence. Change-Id: I5b4ca8e04c80e1cef49d137532198283aa35165f CRs-Fixed: 2740368
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2018-2019, 2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -172,12 +172,14 @@ struct dsc_psoc {
|
||||
* @psoc: parent psoc context
|
||||
* @trans: transition tracking container for this node
|
||||
* @ops: operations in flight tracking container for this node
|
||||
* @nb_cmd_during_ssr: north bound command id
|
||||
*/
|
||||
struct dsc_vdev {
|
||||
qdf_list_node_t node;
|
||||
struct dsc_psoc *psoc;
|
||||
struct dsc_trans trans;
|
||||
struct dsc_ops ops;
|
||||
uint8_t nb_cmd_during_ssr;
|
||||
};
|
||||
|
||||
#define dsc_for_each_driver_psoc(driver_ptr, psoc_cursor) \
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -376,3 +376,13 @@ void dsc_vdev_wait_for_ops(struct dsc_vdev *vdev)
|
||||
__dsc_vdev_wait_for_ops(vdev);
|
||||
}
|
||||
|
||||
uint8_t dsc_vdev_get_cached_cmd(struct dsc_vdev *vdev)
|
||||
{
|
||||
return vdev->nb_cmd_during_ssr;
|
||||
}
|
||||
|
||||
void dsc_vdev_cache_command(struct dsc_vdev *vdev, uint8_t cmd_id)
|
||||
{
|
||||
vdev->nb_cmd_during_ssr = cmd_id;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user