summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Dasari <dasaris@codeaurora.org>2021-02-08 12:54:48 +0530
committerHsiu Chang Chen <hsiuchangchen@google.com>2021-03-18 05:05:25 +0000
commit73e5d836ffcd707615d724c8be080c11922bc073 (patch)
tree86614fe109514fece39d0c246ada9e49f0565cbe
parentd372be62bbf1e34f5c2f59f34f66ace5262cbac6 (diff)
downloadqcacld-73e5d836ffcd707615d724c8be080c11922bc073.tar.gz
qcacld-3.0: Restart NDI adapter as part of SSR
Currently, NDI adapter is not restarted when SSR happens. Start the adapter as part of recovery so that it creates NDI vdev. Bug: 175731501 Change-Id: Ifa159b53e7e9571404f1d9cecd62755fe5e8c600 CRs-Fixed: 2707460 Signed-off-by: Hsiu-Chang Chen <hsiuchangchen@google.com>
-rw-r--r--core/hdd/src/wlan_hdd_main.c5
-rw-r--r--core/hdd/src/wlan_hdd_nan_datapath.h19
2 files changed, 22 insertions, 2 deletions
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index c235e06da7..5b0edcfcba 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -7486,7 +7486,8 @@ QDF_STATUS hdd_start_all_adapters(struct hdd_context *hdd_ctx)
hdd_enter();
hdd_for_each_adapter(hdd_ctx, adapter) {
- if (!hdd_is_interface_up(adapter))
+ if (!hdd_is_interface_up(adapter) &&
+ adapter->device_mode != QDF_NDI_MODE)
continue;
hdd_debug("[SSR] start adapter with device mode %s(%d)",
@@ -7588,6 +7589,8 @@ QDF_STATUS hdd_start_all_adapters(struct hdd_context *hdd_ctx)
wlan_hdd_set_mon_chan(adapter, adapter->mon_chan,
adapter->mon_bandwidth);
break;
+ case QDF_NDI_MODE:
+ hdd_ndi_start(adapter->dev->name, 0);
default:
break;
}
diff --git a/core/hdd/src/wlan_hdd_nan_datapath.h b/core/hdd/src/wlan_hdd_nan_datapath.h
index b9c78ee832..0d0c1b7326 100644
--- a/core/hdd/src/wlan_hdd_nan_datapath.h
+++ b/core/hdd/src/wlan_hdd_nan_datapath.h
@@ -69,6 +69,19 @@ void hdd_ndp_session_end_handler(struct hdd_adapter *adapter);
void hdd_cleanup_ndi(struct hdd_context *hdd_ctx,
struct hdd_adapter *adapter);
+
+/**
+ * hdd_ndi_start(): Start NDI adapter and create NDI vdev
+ * @iface_name: NDI interface name
+ * @transaction_id: Transaction id given by framework to start the NDI.
+ * Framework expects this in the immediate response when
+ * the NDI is created by it.
+ *
+ * Create NDI move interface and vdev.
+ *
+ * Return: 0 upon success
+ */
+int hdd_ndi_start(char *iface_name, uint16_t transaction_id);
#else
#define WLAN_HDD_IS_NDI(adapter) (false)
#define WLAN_HDD_IS_NDI_CONNECTED(adapter) (false)
@@ -101,13 +114,17 @@ static inline void hdd_cleanup_ndi(struct hdd_context *hdd_ctx,
struct hdd_adapter *adapter)
{
}
+
+static inline int hdd_ndi_start(char *iface_name, uint16_t transaction_id)
+{
+ return 0;
+}
#endif /* WLAN_FEATURE_NAN */
enum nan_datapath_state;
struct nan_datapath_inf_create_rsp;
int hdd_ndi_open(char *iface_name);
-int hdd_ndi_start(char *iface_name, uint16_t transaction_id);
int hdd_ndi_delete(uint8_t vdev_id, char *iface_name, uint16_t transaction_id);
void hdd_ndi_close(uint8_t vdev_id);
void hdd_ndi_drv_ndi_create_rsp_handler(uint8_t vdev_id,