summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornakul kachhwaha <nkachhwa@codeaurora.org>2018-01-22 12:07:42 +0530
committernakul kachhwaha <nkachhwa@codeaurora.org>2018-03-01 14:08:08 +0530
commitb4fd5192a0eff69bd8a92f507cbf499f0170bbf6 (patch)
treefd688c965ea403afdaa2c56ce940c7ba40ed2b1c
parent4b0730dfd26c14affe53eb9217d767d13c39df89 (diff)
qcacld-2.0: Add support for private ioctls for TDLS Offchannel
Add support for private ioctls in the TDLS Offchannel to set channel num and enable disable offchannel as needed by sigma-dut to pass the certification. Change-Id: I94aebedcf6d3f8b4deb9b2e77ff9f5822aab0728 CRs-Fixed: 2175359
-rw-r--r--CORE/HDD/inc/wlan_hdd_tdls.h14
-rw-r--r--CORE/HDD/src/wlan_hdd_wext.c47
2 files changed, 60 insertions, 1 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_tdls.h b/CORE/HDD/inc/wlan_hdd_tdls.h
index 7f094ab2cc95..7a678a22a3a7 100644
--- a/CORE/HDD/inc/wlan_hdd_tdls.h
+++ b/CORE/HDD/inc/wlan_hdd_tdls.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -549,6 +549,18 @@ wlan_hdd_start_stop_tdls_source_timer(hdd_context_t *pHddCtx,
{
}
+static inline int hdd_set_tdls_offchannel(hdd_context_t *pHddCtx, int offchannel)
+{
+ return 0;
+}
+static inline int hdd_set_tdls_offchannelmode(hdd_adapter_t *pAdapter, int offchanmode)
+{
+ return 0;
+}
+static inline int hdd_set_tdls_secoffchanneloffset(hdd_context_t *pHddCtx, int offchanoffset)
+{
+ return 0;
+}
#endif
#endif // __HDD_TDSL_H
diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c
index 420504029711..eeeeab621601 100644
--- a/CORE/HDD/src/wlan_hdd_wext.c
+++ b/CORE/HDD/src/wlan_hdd_wext.c
@@ -253,6 +253,10 @@ typedef enum eMonFilterType{
MON_ALL_PKT,
} tMonFilterType;
+#define WE_SET_TDLS_OFFCHANNEL_MODE 90
+#define WE_SET_TDLS_OFFCHANNEL 91
+#define WE_SET_TDLS_OFFCHANNEL_SEC_OFFSET 92
+
/* Private ioctls and their sub-ioctls */
#define WLAN_PRIV_SET_NONE_GET_INT (SIOCIWFIRSTPRIV + 1)
#define WE_GET_11D_STATE 1
@@ -7403,6 +7407,32 @@ static int __iw_setint_getnone(struct net_device *dev,
wlan_hdd_mnt_filter_type_cmd(pAdapter, &filter_type,sizeof(v_U8_t));
break;
}
+ case WE_SET_TDLS_OFFCHANNEL_MODE:
+ {
+ hddLog(LOG1, "SET tdls_offchannel_mode val %d", set_value);
+ ret = hdd_set_tdls_offchannelmode(pAdapter, set_value);
+ break;
+ }
+ case WE_SET_TDLS_OFFCHANNEL:
+ {
+ hddLog(LOG1, "SET tdls_offchannel val %d", set_value);
+
+ if (VOS_IS_DFS_CH(set_value)) {
+ hddLog(LOGE,
+ FL("DFS channel %d is passed for hdd_set_tdls_offchannel"),
+ set_value);
+ ret = -EINVAL;
+ break;
+ }
+ ret = hdd_set_tdls_offchannel(pHddCtx, set_value);
+ break;
+ }
+ case WE_SET_TDLS_OFFCHANNEL_SEC_OFFSET:
+ {
+ hddLog(LOG1, "SET tdls_offchannel_mode val %d", set_value);
+ ret = hdd_set_tdls_secoffchanneloffset(pHddCtx, set_value);
+ break;
+ }
default:
{
hddLog(LOGE, "%s: Invalid sub command %d", __func__, sub_cmd);
@@ -12112,6 +12142,23 @@ static const struct iw_priv_args we_private_args[] = {
WE_SET_MON_FILTER,
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
0, "setMonFilter" },
+#ifdef FEATURE_WLAN_TDLS
+ {
+ WE_SET_TDLS_OFFCHANNEL_MODE,
+ IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
+ 0,
+ "tdlsoffchnmode" },
+ {
+ WE_SET_TDLS_OFFCHANNEL,
+ IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
+ 0,
+ "tdlsoffchan" },
+ {
+ WE_SET_TDLS_OFFCHANNEL_SEC_OFFSET,
+ IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
+ 0,
+ "tdlsecchnoffst" },
+#endif
/* handlers for sub-ioctl */
{ WE_GET_11D_STATE,