Jelajahi Sumber

qcacld-3.0: Integrate DSC (vdev ioctls)

As part of DSC integration, use vdev op start/stop for appropriate
IOCTL handlers.

Change-Id: Ic2c96d9447f1a74733c3ad1dcc773f733fac10e6
CRs-Fixed: 2402144
Dustin Brown 6 tahun lalu
induk
melakukan
389e5078b2

+ 12 - 4
core/hdd/src/wlan_hdd_fips.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2019 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
@@ -22,6 +22,7 @@
  * WLAN Host Device Driver FIPS Certification Feature
  */
 
+#include "osif_sync.h"
 #include "wlan_hdd_main.h"
 #include "wlan_hdd_fips.h"
 #include "wlan_osif_request_manager.h"
@@ -279,11 +280,18 @@ int hdd_fips_test(struct net_device *dev,
 		  struct iw_request_info *info,
 		  union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __hdd_fips_test(dev, info, wrqu, extra);
+	errno = __hdd_fips_test(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }

+ 221 - 66
core/hdd/src/wlan_hdd_hostapd_wext.c

@@ -22,6 +22,7 @@
  * Linux Wireless Extensions Implementation
  */
 
+#include "osif_sync.h"
 #include <wlan_hdd_hostapd_wext.h>
 #include <wlan_hdd_includes.h>
 #include <qc_sap_ioctl.h>
@@ -105,13 +106,20 @@ static iw_softap_set_ini_cfg(struct net_device *dev,
 			     struct iw_request_info *info,
 			     union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_set_ini_cfg(dev, info, wrqu, extra);
+	errno = __iw_softap_set_ini_cfg(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static int hdd_sap_get_chan_width(struct hdd_adapter *adapter, int *value)
@@ -167,13 +175,20 @@ static iw_softap_get_ini_cfg(struct net_device *dev,
 			     struct iw_request_info *info,
 			     union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_get_ini_cfg(dev, info, wrqu, extra);
+	errno = __iw_softap_get_ini_cfg(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -304,13 +319,20 @@ static int iw_softap_set_two_ints_getnone(struct net_device *dev,
 					  struct iw_request_info *info,
 					  union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_set_two_ints_getnone(dev, info, wrqu, extra);
+	errno = __iw_softap_set_two_ints_getnone(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static void print_mac_list(struct qdf_mac_addr *macList, uint8_t size)
@@ -1197,13 +1219,20 @@ static int iw_softap_get_three(struct net_device *dev,
 					struct iw_request_info *info,
 					union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_get_three(dev, info, wrqu, extra);
+	errno = __iw_softap_get_three(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 int
@@ -1211,13 +1240,20 @@ static iw_softap_setparam(struct net_device *dev,
 			  struct iw_request_info *info,
 			  union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_setparam(dev, info, wrqu, extra);
+	errno = __iw_softap_setparam(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 int
@@ -1463,13 +1499,20 @@ static iw_softap_getparam(struct net_device *dev,
 			  struct iw_request_info *info,
 			  union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_getparam(dev, info, wrqu, extra);
+	errno = __iw_softap_getparam(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /* Usage:
@@ -1542,13 +1585,20 @@ int iw_softap_modify_acl(struct net_device *dev,
 			 struct iw_request_info *info,
 			 union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_modify_acl(dev, info, wrqu, extra);
+	errno = __iw_softap_modify_acl(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 int
@@ -1585,13 +1635,20 @@ static iw_softap_getchannel(struct net_device *dev,
 			    struct iw_request_info *info,
 			    union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_getchannel(dev, info, wrqu, extra);
+	errno = __iw_softap_getchannel(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 int
@@ -1641,13 +1698,20 @@ static iw_softap_set_max_tx_power(struct net_device *dev,
 				  struct iw_request_info *info,
 				  union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_set_max_tx_power(dev, info, wrqu, extra);
+	errno = __iw_softap_set_max_tx_power(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 #ifndef REMOVE_PKT_LOG
@@ -1681,13 +1745,20 @@ static iw_softap_set_pktlog(struct net_device *dev,
 				  struct iw_request_info *info,
 				  union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_set_pktlog(dev, info, wrqu, extra);
+	errno = __iw_softap_set_pktlog(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 #else
 int
@@ -1740,13 +1811,20 @@ static iw_softap_set_tx_power(struct net_device *dev,
 			      struct iw_request_info *info,
 			      union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_set_tx_power(dev, info, wrqu, extra);
+	errno = __iw_softap_set_tx_power(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 #define IS_BROADCAST_MAC(x) (((x[0] & x[1] & x[2] & x[3] & x[4] & x[5]) == 0xff) ? 1 : 0)
@@ -1836,13 +1914,20 @@ static iw_softap_getassoc_stamacaddr(struct net_device *dev,
 				     struct iw_request_info *info,
 				     union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_getassoc_stamacaddr(dev, info, wrqu, extra);
+	errno = __iw_softap_getassoc_stamacaddr(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /* Usage:
@@ -1907,13 +1992,20 @@ static iw_softap_disassoc_sta(struct net_device *dev,
 			      struct iw_request_info *info,
 			      union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_disassoc_sta(dev, info, wrqu, extra);
+	errno = __iw_softap_disassoc_sta(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -1964,13 +2056,20 @@ static int iw_get_char_setnone(struct net_device *dev,
 				struct iw_request_info *info,
 				union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_get_char_setnone(dev, info, wrqu, extra);
+	errno = __iw_get_char_setnone(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static int __iw_get_channel_list(struct net_device *dev,
@@ -2060,13 +2159,20 @@ int iw_get_channel_list(struct net_device *dev,
 		struct iw_request_info *info,
 		union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_get_channel_list(dev, info, wrqu, extra);
+	errno = __iw_get_channel_list(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static
@@ -2122,13 +2228,20 @@ int iw_get_genie(struct net_device *dev,
 		 struct iw_request_info *info,
 		 union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_get_genie(dev, info, wrqu, extra);
+	errno = __iw_get_genie(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static int
@@ -2187,13 +2300,20 @@ static int iw_softap_stopbss(struct net_device *dev,
 			     union iwreq_data *wrqu,
 			     char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_stopbss(dev, info, wrqu, extra);
+	errno = __iw_softap_stopbss(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static int
@@ -2227,13 +2347,20 @@ static int iw_softap_version(struct net_device *dev,
 			     union iwreq_data *wrqu,
 			     char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_version(dev, info, wrqu, extra);
+	errno = __iw_softap_version(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static int hdd_softap_get_sta_info(struct hdd_adapter *adapter,
@@ -2320,13 +2447,20 @@ static int iw_softap_get_sta_info(struct net_device *dev,
 				  union iwreq_data *wrqu,
 				  char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_get_sta_info(dev, info, wrqu, extra);
+	errno = __iw_softap_get_sta_info(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static int __iw_softap_get_ba_timeout(struct net_device *dev,
@@ -2382,13 +2516,20 @@ static int iw_softap_get_ba_timeout(struct net_device *dev,
 				    union iwreq_data *wrqu,
 				    char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_softap_get_ba_timeout(dev, info, wrqu, extra);
+	errno = __iw_softap_get_ba_timeout(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static
@@ -2487,13 +2628,20 @@ iw_get_softap_linkspeed(struct net_device *dev,
 			union iwreq_data *wrqu,
 			char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_get_softap_linkspeed(dev, info, wrqu, extra);
+	errno = __iw_get_softap_linkspeed(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -2665,13 +2813,20 @@ static int
 iw_get_peer_rssi(struct net_device *dev, struct iw_request_info *info,
 		 union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_get_peer_rssi(dev, info, wrqu, extra);
+	errno = __iw_get_peer_rssi(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /*

+ 10 - 3
core/hdd/src/wlan_hdd_ocb.c

@@ -592,13 +592,20 @@ int iw_set_dot11p_channel_sched(struct net_device *dev,
 				struct iw_request_info *info,
 				union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_dot11p_channel_sched(dev, info, wrqu, extra);
+	errno = __iw_set_dot11p_channel_sched(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 #endif /* WLAN_WEXT_SUPPORT_ENABLE */
 

+ 215 - 65
core/hdd/src/wlan_hdd_wext.c

@@ -28,6 +28,7 @@
 #include <linux/init.h>
 #include <linux/wireless.h>
 #include <mac_trace.h>
+#include "osif_sync.h"
 #include <wlan_hdd_includes.h>
 #include <cds_api.h>
 #include "scheduler_api.h"
@@ -3743,13 +3744,20 @@ static int iw_get_linkspeed(struct net_device *dev,
 			    struct iw_request_info *info,
 			    union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_get_linkspeed(dev, info, wrqu, extra);
+	errno = __iw_get_linkspeed(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 #ifdef FEATURE_WLM_STATS
@@ -5764,13 +5772,20 @@ static int iw_setint_getnone(struct net_device *dev,
 			     union iwreq_data *wrqu,
 			     char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_setint_getnone(dev, info, wrqu, extra);
+	errno = __iw_setint_getnone(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -5827,13 +5842,20 @@ static int iw_setnone_get_threeint(struct net_device *dev,
 					struct iw_request_info *info,
 					union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_setnone_get_threeint(dev, info, wrqu, extra);
+	errno = __iw_setnone_get_threeint(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 #ifdef WLAN_UNIT_TEST
@@ -6064,13 +6086,20 @@ static int iw_setchar_getnone(struct net_device *dev,
 			      struct iw_request_info *info,
 			      union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_setchar_getnone(dev, info, wrqu, extra);
+	errno = __iw_setchar_getnone(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -6568,13 +6597,20 @@ static int iw_setnone_getint(struct net_device *dev,
 			     struct iw_request_info *info,
 			     union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_setnone_getint(dev, info, wrqu, extra);
+	errno = __iw_setnone_getint(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static int hdd_set_fwtest(int argc, int cmd, int value)
@@ -6701,13 +6737,20 @@ int iw_set_three_ints_getnone(struct net_device *dev,
 			      struct iw_request_info *info,
 			      union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_three_ints_getnone(dev, info, wrqu, extra);
+	errno = __iw_set_three_ints_getnone(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -7381,13 +7424,20 @@ static int iw_get_char_setnone(struct net_device *dev,
 			       struct iw_request_info *info,
 			       union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_get_char_setnone(dev, info, wrqu, extra);
+	errno = __iw_get_char_setnone(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -7501,13 +7551,20 @@ static int iw_setnone_getnone(struct net_device *dev,
 			      struct iw_request_info *info,
 			      union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_setnone_getnone(dev, info, wrqu, extra);
+	errno = __iw_setnone_getnone(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 #ifdef MPC_UT_FRAMEWORK
@@ -8177,7 +8234,8 @@ static int iw_hdd_set_var_ints_getnone(struct net_device *dev,
 {
 	union iwreq_data u_priv_wrqu;
 	int apps_args[MAX_VAR_ARGS] = {0};
-	int ret, num_args;
+	int errno, num_args;
+	struct osif_vdev_sync *vdev_sync;
 
 	if (!capable(CAP_NET_ADMIN)) {
 		hdd_err("permission check failed");
@@ -8198,16 +8256,23 @@ static int iw_hdd_set_var_ints_getnone(struct net_device *dev,
 		num_args = MAX_VAR_ARGS;
 
 	if (copy_from_user(apps_args, u_priv_wrqu.data.pointer,
-			  (sizeof(int)) * num_args)) {
+			   sizeof(int) * num_args)) {
 		hdd_err("failed to copy data from user buffer");
 		return -EFAULT;
 	}
 
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
+
 	cds_ssr_protect(__func__);
-	ret = __iw_set_var_ints_getnone(dev, info, &u_priv_wrqu,
-					(char *)&apps_args);
+	errno = __iw_set_var_ints_getnone(dev, info, &u_priv_wrqu,
+					  (char *)&apps_args);
 	cds_ssr_unprotect(__func__);
-	return ret;
+
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -8227,12 +8292,20 @@ int iw_set_var_ints_getnone(struct net_device *dev,
 			    struct iw_request_info *info,
 			    union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_var_ints_getnone(dev, info, wrqu, extra);
+	errno = __iw_set_var_ints_getnone(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
-	return ret;
+
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -8403,13 +8476,20 @@ static int iw_add_tspec(struct net_device *dev,
 			struct iw_request_info *info,
 			union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_add_tspec(dev, info, wrqu, extra);
+	errno = __iw_add_tspec(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -8470,13 +8550,20 @@ static int iw_del_tspec(struct net_device *dev,
 			struct iw_request_info *info,
 			union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_del_tspec(dev, info, wrqu, extra);
+	errno = __iw_del_tspec(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -8530,13 +8617,20 @@ static int iw_get_tspec(struct net_device *dev,
 			struct iw_request_info *info,
 			union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_get_tspec(dev, info, wrqu, extra);
+	errno = __iw_get_tspec(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -8598,13 +8692,20 @@ static int iw_set_fties(struct net_device *dev,
 			struct iw_request_info *info,
 			union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_fties(dev, info, wrqu, extra);
+	errno = __iw_set_fties(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -8740,13 +8841,20 @@ static int iw_set_host_offload(struct net_device *dev,
 			       struct iw_request_info *info,
 			       union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_host_offload(dev, info, wrqu, extra);
+	errno = __iw_set_host_offload(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /**
@@ -8832,13 +8940,20 @@ static int iw_set_keepalive_params(struct net_device *dev,
 				   union iwreq_data *wrqu,
 				   char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_keepalive_params(dev, info, wrqu, extra);
+	errno = __iw_set_keepalive_params(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 #ifdef WLAN_FEATURE_PACKET_FILTERING
@@ -8973,13 +9088,20 @@ static int iw_set_packet_filter_params(struct net_device *dev,
 				       struct iw_request_info *info,
 				       union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_packet_filter_params(dev, info, wrqu, extra);
+	errno = __iw_set_packet_filter_params(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 #endif
 
@@ -9221,13 +9343,20 @@ static int iw_get_statistics(struct net_device *dev,
 			     struct iw_request_info *info,
 			     union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_get_statistics(dev, info, wrqu, extra);
+	errno = __iw_get_statistics(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 #ifdef FEATURE_WLAN_SCAN_PNO
@@ -9568,13 +9697,20 @@ static int iw_set_pno(struct net_device *dev,
 		      struct iw_request_info *info,
 		      union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_pno(dev, info, wrqu, extra);
+	errno = __iw_set_pno(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 #endif /* FEATURE_WLAN_SCAN_PNO */
 
@@ -9606,13 +9742,20 @@ static int iw_set_band_config(struct net_device *dev,
 			      struct iw_request_info *info,
 			      union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_band_config(dev, info, wrqu, extra);
+	errno = __iw_set_band_config(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 static int printk_adapter(void *priv, const char *fmt, ...)
@@ -9822,13 +9965,20 @@ static int iw_set_two_ints_getnone(struct net_device *dev,
 				   struct iw_request_info *info,
 				   union iwreq_data *wrqu, char *extra)
 {
-	int ret;
+	int errno;
+	struct osif_vdev_sync *vdev_sync;
+
+	errno = osif_vdev_sync_op_start(dev, &vdev_sync);
+	if (errno)
+		return errno;
 
 	cds_ssr_protect(__func__);
-	ret = __iw_set_two_ints_getnone(dev, info, wrqu, extra);
+	errno = __iw_set_two_ints_getnone(dev, info, wrqu, extra);
 	cds_ssr_unprotect(__func__);
 
-	return ret;
+	osif_vdev_sync_op_stop(vdev_sync);
+
+	return errno;
 }
 
 /* Define the Wireless Extensions to the Linux Network Device structure */