qcacmn: Define configures about TDLS

Based on converged cfg component, define TDLS configures and APIs to
get or set these configures.

Change-Id: I86f61246b810c7f25a74c814df20d0e2c810b292
CRs-Fixed: 2277559
Bu işleme şunda yer alıyor:
Wu Gao
2018-06-19 19:21:06 +08:00
işlemeyi yapan: nshrivas
ebeveyn a551f698df
işleme 3baf003722
5 değiştirilmiş dosya ile 1413 ekleme ve 4 silme

Dosyayı Görüntüle

@@ -0,0 +1,759 @@
/*
* Copyright (c) 2018 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
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#if !defined(CONFIG_TDLS_H__)
#define CONFIG_TDLS_H__
#include "cfg_define.h"
#include "cfg_converged.h"
#include "qdf_types.h"
/*
* <ini>
* gTDLSUapsdMask - ACs to setup U-APSD for TDLS Sta.
* @Min: 0
* @Max: 0x0F
* @Default: 0x0F
*
* This ini is used to configure the ACs for which mask needs to be enabled.
* 0x1: Background 0x2: Best effort
* 0x4: Video 0x8: Voice
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_QOS_WMM_UAPSD_MASK CFG_INI_UINT( \
"gTDLSUapsdMask", \
0, \
0x0F, \
0x0F, \
CFG_VALUE_OR_DEFAULT, \
"ACs to setup U-APSD for TDLS Sta")
/*
* <ini>
* gEnableTDLSBufferSta - Controls the TDLS buffer.
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to control the TDLS buffer.
* Buffer STA is not enabled in CLD 2.0 yet.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_BUF_STA_ENABLED CFG_INI_BOOL( \
"gEnableTDLSBufferSta", \
1, \
"Controls the TDLS buffer")
/*
* <ini>
* gTDLSPuapsdInactivityTime - Peer UAPSD Inactivity time.
* @Min: 0
* @Max: 10
* @Default: 0
*
* This ini is used to configure peer uapsd inactivity time.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_PUAPSD_INACT_TIME CFG_INI_UINT( \
"gTDLSPuapsdInactivityTime", \
0, \
10, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Peer UAPSD Inactivity time")
/*
* <ini>
* gTDLSPuapsdRxFrameThreshold - Peer UAPSD Rx frame threshold.
* @Min: 10
* @Max: 20
* @Default: 10
*
* This ini is used to configure maximum Rx frame during SP.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_RX_FRAME_THRESHOLD CFG_INI_UINT( \
"gTDLSPuapsdRxFrameThreshold", \
10, \
20, \
10, \
CFG_VALUE_OR_DEFAULT, \
"Peer UAPSD Rx frame threshold")
/*
* <ini>
* gEnableTDLSOffChannel - Enables off-channel support for TDLS link.
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to enable/disable off-channel support for TDLS link.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_OFF_CHANNEL_ENABLED CFG_INI_BOOL( \
"gEnableTDLSOffChannel", \
0, \
"Enables off-channel support for TDLS")
/*
* <ini>
* gEnableTDLSSupport - Enable support for TDLS.
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to enable/disable TDLS support.
*
* Related: None.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_SUPPORT_ENABLE CFG_INI_BOOL( \
"gEnableTDLSSupport", \
0, \
"enable/disable TDLS support")
/*
* <ini>
* gEnableTDLSImplicitTrigger - Enable Implicit TDLS.
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to enable/disable implicit TDLS.
* CLD driver initiates TDLS Discovery towards a peer whenever TDLS Setup
* criteria (throughput and RSSI thresholds) is met and then it tears down
* TDLS when teardown criteria (idle packet count and RSSI) is met.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_IMPLICIT_TRIGGER CFG_INI_BOOL( \
"gEnableTDLSImplicitTrigger", \
0, \
"enable/disable implicit TDLS")
/*
* <ini>
* gTDLSTxStatsPeriod - TDLS TX statistics time period.
* @Min: 1000
* @Max: 4294967295
* @Default: 2000
*
* This ini is used to configure the time period (in ms) to evaluate whether
* the number of Tx/Rx packets exceeds TDLSTxPacketThreshold and triggers a
* TDLS Discovery request.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_TX_STATS_PERIOD CFG_INI_UINT( \
"gTDLSTxStatsPeriod", \
1000, \
4294967295UL, \
2000, \
CFG_VALUE_OR_DEFAULT, \
"TDLS TX statistics time period")
/*
* <ini>
* gTDLSTxPacketThreshold - Tx/Rx Packet threshold for initiating TDLS.
* @Min: 0
* @Max: 4294967295
* @Default: 40
*
* This ini is used to configure the number of Tx/Rx packets during the
* period of gTDLSTxStatsPeriod when exceeded, a TDLS Discovery request
* is triggered.
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_TX_PACKET_THRESHOLD CFG_INI_UINT( \
"gTDLSTxPacketThreshold", \
0, \
4294967295UL, \
40, \
CFG_VALUE_OR_DEFAULT, \
"Tx/Rx Packet threshold for initiating TDLS")
/*
* <ini>
* gTDLSMaxDiscoveryAttempt - Attempts for sending TDLS discovery requests.
* @Min: 1
* @Max: 100
* @Default: 5
*
* This ini is used to configure the number of failures of discover request,
* when exceeded, the peer is assumed to be not TDLS capable and no further
* TDLS Discovery request is made.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_MAX_DISCOVERY_ATTEMPT CFG_INI_UINT( \
"gTDLSMaxDiscoveryAttempt", \
1, \
100, \
5, \
CFG_VALUE_OR_DEFAULT, \
"Attempts for sending TDLS discovery requests")
/*
* <ini>
* gTDLSIdleTimeout - Duration within which number of TX / RX frames meet the
* criteria for TDLS teardown.
* @Min: 500
* @Max: 40000
* @Default: 5000
*
* This ini is used to configure the time period (in ms) to evaluate whether
* the number of Tx/Rx packets exceeds gTDLSIdlePacketThreshold and thus meets
* criteria for TDLS teardown.
* Teardown notification interval (gTDLSIdleTimeout) should be multiple of
* setup notification (gTDLSTxStatsPeriod) interval.
* e.g.
* if setup notification (gTDLSTxStatsPeriod) interval = 500, then
* teardown notification (gTDLSIdleTimeout) interval should be 1000,
* 1500, 2000, 2500...
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
*/
#define CFG_TDLS_IDLE_TIMEOUT CFG_INI_UINT( \
"gTDLSIdleTimeout", \
500, \
40000, \
5000, \
CFG_VALUE_OR_DEFAULT, \
"this is idle time period")
/*
* <ini>
* gTDLSIdlePacketThreshold - Number of idle packet.
* @Min: 0
* @Max: 40000
* @Default: 3
*
* This ini is used to configure the number of Tx/Rx packet, below which
* within last gTDLSTxStatsPeriod period is considered as idle condition.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_IDLE_PACKET_THRESHOLD CFG_INI_UINT( \
"gTDLSIdlePacketThreshold", \
0, \
40000, \
3, \
CFG_VALUE_OR_DEFAULT, \
"Number of idle packet")
/*
* <ini>
* gTDLSRSSITriggerThreshold - RSSI threshold for TDLS connection.
* @Min: -120
* @Max: 0
* @Default: -75
*
* This ini is used to configure the absolute value (in dB) of the peer RSSI,
* below which a TDLS setup request is triggered.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_RSSI_TRIGGER_THRESHOLD CFG_INI_INT( \
"gTDLSRSSITriggerThreshold", \
-120, \
0, \
-75, \
CFG_VALUE_OR_DEFAULT, \
"RSSI threshold for TDLS connection")
/*
* <ini>
* gTDLSRSSITeardownThreshold - RSSI threshold for TDLS teardown.
* @Min: -120
* @Max: 0
* @Default: -75
*
* This ini is used to configure the absolute value (in dB) of the peer RSSI,
* when exceed, a TDLS teardown is triggered.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_RSSI_TEARDOWN_THRESHOLD CFG_INI_INT( \
"gTDLSRSSITeardownThreshold", \
-120, \
0, \
-75, \
CFG_VALUE_OR_DEFAULT, \
"RSSI threshold for TDLS teardown")
/*
* <ini>
* gTDLSRSSITeardownThreshold - RSSI threshold for TDLS teardown.
* @Min: -120
* @Max: 0
* @Default: -75
*
* This ini is used to configure the absolute value (in dB) of the peer RSSI,
* when exceed, a TDLS teardown is triggered.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_RSSI_DELTA CFG_INI_INT( \
"gTDLSRSSIDelta", \
-30, \
0, \
-20, \
CFG_VALUE_OR_DEFAULT, \
"Delta value for the peer RSSI that can trigger teardown")
/*
* <ini>
* gTDLSPrefOffChanNum - Preferred TDLS channel number when off-channel support
* is enabled.
* @Min: 1
* @Max: 165
* @Default: 36
*
* This ini is used to configure preferred TDLS channel number when off-channel
* support is enabled.
*
* Related: gEnableTDLSSupport, gEnableTDLSOffChannel.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM CFG_INI_UINT( \
"gTDLSPrefOffChanNum", \
1, \
165, \
36, \
CFG_VALUE_OR_DEFAULT, \
"Preferred TDLS channel number")
/*
* <ini>
* gTDLSPrefOffChanBandwidth - Preferred TDLS channel bandwidth when
* off-channel support is enabled.
* @Min: 0x01
* @Max: 0x0F
* @Default: 0x07
*
* This ini is used to configure preferred TDLS channel bandwidth when
* off-channel support is enabled.
* 0x1: 20 MHz 0x2: 40 MHz 0x4: 80 MHz 0x8: 160 MHz
* When more than one bits are set then firmware starts from the highest and
* selects one based on capability of peer.
*
* Related: gEnableTDLSSupport, gEnableTDLSOffChannel.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_PREFERRED_OFF_CHANNEL_BW CFG_INI_UINT( \
"gTDLSPrefOffChanBandwidth", \
1, \
15, \
7, \
CFG_VALUE_OR_DEFAULT, \
"Preferred TDLS channel bandwidth")
/*
* <ini>
* gTDLSPuapsdInactivityTime - Peer UAPSD Inactivity time.
* @Min: 0
* @Max: 10
* @Default: 0
*
* This ini is used to configure peer uapsd inactivity time.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_PUAPSD_INACTIVITY_TIME CFG_INI_UINT( \
"gTDLSPuapsdInactivityTime", \
0, \
10, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Peer UAPSD Inactivity time")
/*
* <ini>
* gTDLSPuapsdInactivityTime - Peer UAPSD Inactivity time.
* @Min: 0
* @Max: 10
* @Default: 0
*
* This ini is used to configure peer uapsd inactivity time.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD CFG_INI_UINT( \
"gTDLSPuapsdRxFrameThreshold", \
10, \
20, \
10, \
CFG_VALUE_OR_DEFAULT, \
"Peer UAPSD Rx frame threshold")
/*
* <ini>
* gTDLSPuapsdPTIWindow - This ini is used to configure peer traffic indication
* window.
* @Min: 1
* @Max: 5
* @Default: 2
*
* This ini is used to configure buffering time in number of beacon intervals.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW CFG_INI_UINT( \
"gTDLSPuapsdPTIWindow", \
1, \
5, \
2, \
CFG_VALUE_OR_DEFAULT, \
"This ini is used to configure peer traffic indication")
/*
* <ini>
* gTDLSPuapsdPTIWindow - This ini is used to configure peer traffic indication
* window.
* @Min: 1
* @Max: 5
* @Default: 2
*
* This ini is used to configure buffering time in number of beacon intervals.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT CFG_INI_UINT( \
"gTDLSPuapsdPTRTimeout", \
0, \
10000, \
5000, \
CFG_VALUE_OR_DEFAULT, \
"Peer Traffic Response timer duration in ms")
/*
* <ini>
* gTDLSPuapsdPTIWindow - This ini is used to configure peer traffic indication
* window.
* @Min: 1
* @Max: 5
* @Default: 2
*
* This ini is used to configure buffering time in number of beacon intervals.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_EXTERNAL_CONTROL CFG_INI_BOOL( \
"gTDLSExternalControl", \
1, \
"Enable external TDLS control")
/*
* <ini>
* gEnableTDLSWmmMode - Enables WMM support over TDLS link.
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable WMM support over TDLS link.
* This is required to be set to 1 for any TDLS and uAPSD functionality.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_WMM_MODE_ENABLE CFG_INI_BOOL( \
"gEnableTDLSWmmMode", \
1, \
"Enables WMM support over TDLS link")
/*
* <ini>
* gEnableTDLSScan - Allow scan and maintain TDLS link.
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to enable/disable TDLS scan.
* 0: If peer is not buffer STA capable and device is not sleep STA
* capable, then teardown TDLS link when scan is initiated. If peer
* is buffer STA and we can be sleep STA then TDLS link is maintained
* during scan.
* 1: Maintain TDLS link and allow scan even if peer is not buffer STA
* capable and device is not sleep STA capable. There will be loss of
* Rx pkts since peer would not know when device moves away from tdls
* channel. Tx on TDLS link would stop when device moves away from tdls
* channel.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_SCAN_ENABLE CFG_INI_BOOL( \
"gEnableTDLSScan", \
0, \
"Allow scan and maintain TDLS link")
/*
* <ini>
* gTDLSPeerKickoutThreshold - TDLS peer kick out threshold to firmware.
* @Min: 10
* @Max: 5000
* @Default: 96
*
* This ini is used to configure TDLS peer kick out threshold to firmware.
* Firmware will use this value to determine, when to send TDLS
* peer kick out event to host.
* E.g.
* if peer kick out threshold is 10, then firmware will wait for 10
* consecutive packet failures and then send TDLS kick out
* notification to host driver
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_PEER_KICKOUT_THRESHOLD CFG_INI_UINT( \
"gTDLSPeerKickoutThreshold", \
10, \
5000, \
96, \
CFG_VALUE_OR_DEFAULT, \
"TDLS peer kick out threshold to firmware")
/*
* <ini>
* gTDLSEnableDeferTime - Timer to defer for enabling TDLS on P2P listen.
* @Min: 500
* @Max: 6000
* @Default: 2000
*
* This ini is used to set the timer to defer for enabling TDLS on P2P
* listen (value in milliseconds).
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_ENABLE_DEFER_TIMER CFG_INI_UINT( \
"gTDLSEnableDeferTime", \
500, \
6000, \
2000, \
CFG_VALUE_OR_DEFAULT, \
"Timer to defer for enabling TDLS on P2P listen")
/*
* <ini>
* DelayedTriggerFrmInt - delayed trigger frame interval.
* @Min: 500
* @Max: 6000
* @Default: 2000
*
* This ini is used to set the delayed trigger frame interval.
*
* Related: gEnableTDLSSupport.
*
* Supported Feature: TDLS
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_TDLS_DELAYED_TRGR_FRM_INT CFG_INI_UINT( \
"DelayedTriggerFrmInt", \
1, \
4294967295UL, \
3000, \
CFG_VALUE_OR_DEFAULT, \
"delayed trigger frame interval")
#define CFG_TDLS_ALL \
CFG(CFG_TDLS_QOS_WMM_UAPSD_MASK) \
CFG(CFG_TDLS_BUF_STA_ENABLED) \
CFG(CFG_TDLS_PUAPSD_INACT_TIME) \
CFG(CFG_TDLS_RX_FRAME_THRESHOLD) \
CFG(CFG_TDLS_OFF_CHANNEL_ENABLED) \
CFG(CFG_TDLS_SUPPORT_ENABLE) \
CFG(CFG_TDLS_IMPLICIT_TRIGGER) \
CFG(CFG_TDLS_TX_STATS_PERIOD) \
CFG(CFG_TDLS_TX_PACKET_THRESHOLD) \
CFG(CFG_TDLS_MAX_DISCOVERY_ATTEMPT) \
CFG(CFG_TDLS_IDLE_TIMEOUT) \
CFG(CFG_TDLS_IDLE_PACKET_THRESHOLD) \
CFG(CFG_TDLS_RSSI_TRIGGER_THRESHOLD) \
CFG(CFG_TDLS_RSSI_TEARDOWN_THRESHOLD) \
CFG(CFG_TDLS_RSSI_DELTA) \
CFG(CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM) \
CFG(CFG_TDLS_PREFERRED_OFF_CHANNEL_BW) \
CFG(CFG_TDLS_PUAPSD_INACTIVITY_TIME) \
CFG(CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD) \
CFG(CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW) \
CFG(CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT) \
CFG(CFG_TDLS_EXTERNAL_CONTROL) \
CFG(CFG_TDLS_WMM_MODE_ENABLE) \
CFG(CFG_TDLS_SCAN_ENABLE) \
CFG(CFG_TDLS_PEER_KICKOUT_THRESHOLD) \
CFG(CFG_TDLS_ENABLE_DEFER_TIMER) \
CFG(CFG_TDLS_DELAYED_TRGR_FRM_INT)
#endif

Dosyayı Görüntüle

@@ -0,0 +1,217 @@
/*
* Copyright (c) 2018 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
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: Contains p2p configures interface definitions
*/
#ifndef _WLAN_TDLS_CFG_API_H_
#define _WLAN_TDLS_CFG_API_H_
#include <qdf_types.h>
struct wlan_objmgr_psoc;
/**
* cfg_tdls_get_support_enable() - get tdls support enable
* @psoc: pointer to psoc object
* @val: pointer to tdls support enable/disable
*
* This function gets tdls support enable
*/
QDF_STATUS
cfg_tdls_get_support_enable(struct wlan_objmgr_psoc *psoc,
bool *val);
/**
* cfg_tdls_set_support_enable() - set tdls support enable
* @psoc: pointer to psoc object
* @val: set tdls support enable/disable
*
* This function sets tdls support enable
*/
QDF_STATUS
cfg_tdls_set_support_enable(struct wlan_objmgr_psoc *psoc,
bool val);
/**
* cfg_tdls_get_external_control() - get tdls external control
* @psoc: pointer to psoc object
* @val: pointer to tdls external control enable/disable
*
* This function gets tdls external control
*/
QDF_STATUS
cfg_tdls_get_external_control(struct wlan_objmgr_psoc *psoc,
bool *val);
/**
* cfg_tdls_get_uapsd_mask() - get tdls uapsd mask
* @psoc: pointer to psoc object
* @val: pointer to tdls uapsd mask
*
* This function gets tdls uapsd mask
*/
QDF_STATUS
cfg_tdls_get_uapsd_mask(struct wlan_objmgr_psoc *psoc,
uint32_t *val);
/**
* cfg_tdls_get_buffer_sta_enable() - get tdls buffer sta enable
* @psoc: pointer to psoc object
* @val: pointer to tdls buffer sta enable
*
* This function gets tdls buffer sta enable
*/
QDF_STATUS
cfg_tdls_get_buffer_sta_enable(struct wlan_objmgr_psoc *psoc,
bool *val);
/**
* cfg_tdls_set_buffer_sta_enable() - set tdls buffer sta enable
* @psoc: pointer to psoc object
* @val: tdls buffer sta enable
*
* This function sets tdls buffer sta enable
*/
QDF_STATUS
cfg_tdls_set_buffer_sta_enable(struct wlan_objmgr_psoc *psoc,
bool val);
/**
* cfg_tdls_get_uapsd_inactivity_time() - get tdls uapsd inactivity time
* @psoc: pointer to psoc object
* @val: pointer to tdls uapsd inactivity time
*
* This function gets tdls uapsd inactivity time
*/
QDF_STATUS
cfg_tdls_get_uapsd_inactivity_time(struct wlan_objmgr_psoc *psoc,
uint32_t *val);
/**
* cfg_tdls_get_rx_pkt_threshold() - get tdls rx pkt threshold
* @psoc: pointer to psoc object
* @val: pointer to tdls tdls rx pkt threshold
*
* This function gets tdls rx pkt threshold
*/
QDF_STATUS
cfg_tdls_get_rx_pkt_threshold(struct wlan_objmgr_psoc *psoc,
uint32_t *val);
/**
* cfg_tdls_get_off_channel_enable() - get tdls off channel enable
* @psoc: pointer to psoc object
* @val: pointer to tdls off channel enable
*
* This function gets tdls off channel enable
*/
QDF_STATUS
cfg_tdls_get_off_channel_enable(struct wlan_objmgr_psoc *psoc,
bool *val);
/**
* cfg_tdls_set_off_channel_enable() - set tdls off channel enable
* @psoc: pointer to psoc object
* @val: tdls off channel enable
*
* This function sets tdls off channel enable
*/
QDF_STATUS
cfg_tdls_set_off_channel_enable(struct wlan_objmgr_psoc *psoc,
bool val);
/**
* cfg_tdls_get_wmm_mode_enable() - get tdls wmm mode enable
* @psoc: pointer to psoc object
* @val: pointer to tdls wmm mode enable
*
* This function gets tdls wmm mode enable
*/
QDF_STATUS
cfg_tdls_get_wmm_mode_enable(struct wlan_objmgr_psoc *psoc,
bool *val);
/**
* cfg_tdls_set_vdev_nss_2g() - set tdls vdev nss 2g
* @psoc: pointer to psoc object
* @val: tdls vdev nss 2g
*
* This function sets tdls vdev nss 2g
*/
QDF_STATUS
cfg_tdls_set_vdev_nss_2g(struct wlan_objmgr_psoc *psoc,
uint8_t val);
/**
* cfg_tdls_set_vdev_nss_5g() - set tdls vdev nss 5g
* @psoc: pointer to psoc object
* @val: tdls vdev nss 5g
*
* This function sets tdls vdev nss 5g
*/
QDF_STATUS
cfg_tdls_set_vdev_nss_5g(struct wlan_objmgr_psoc *psoc,
uint8_t val);
/**
* cfg_tdls_get_sleep_sta_enable() - get tdls sleep sta enable
* @psoc: pointer to psoc object
* @val: pointer to tdls sleep sta enable
*
* This function gets tdls sleep sta enable
*/
QDF_STATUS
cfg_tdls_get_sleep_sta_enable(struct wlan_objmgr_psoc *psoc,
bool *val);
/**
* cfg_tdls_set_sleep_sta_enable() - set tdls sleep sta enable
* @psoc: pointer to psoc object
* @val: tdls sleep sta enable
*
* This function sets tdls sleep sta enable
*/
QDF_STATUS
cfg_tdls_set_sleep_sta_enable(struct wlan_objmgr_psoc *psoc,
bool val);
/**
* cfg_tdls_get_scan_enable() - get tdls scan enable
* @psoc: pointer to psoc object
* @val: pointer to tdls scan enable
*
* This function gets tdls scan enable
*/
QDF_STATUS
cfg_tdls_get_scan_enable(struct wlan_objmgr_psoc *psoc,
bool *val);
/**
* cfg_tdls_set_scan_enable() - set tdls scan enable
* @psoc: pointer to psoc object
* @val: tdls scan enable
*
* This function sets tdls scan enable
*/
QDF_STATUS
cfg_tdls_set_scan_enable(struct wlan_objmgr_psoc *psoc,
bool val);
#endif /* _WLAN_TDLS_CFG_API_H_ */

Dosyayı Görüntüle

@@ -427,6 +427,14 @@ enum tdls_feature_bit {
* @delayed_trig_framint: delayed trigger frame interval * @delayed_trig_framint: delayed trigger frame interval
* @tdls_vdev_nss_2g: tdls NSS setting for 2G band * @tdls_vdev_nss_2g: tdls NSS setting for 2G band
* @tdls_vdev_nss_5g: tdls NSS setting for 5G band * @tdls_vdev_nss_5g: tdls NSS setting for 5G band
* @tdls_buffer_sta_enable: tdls buffer station enable
* @tdls_off_chan_enable: tdls off channel enable
* @tdls_wmm_mode_enable: tdls wmm mode enable
* @tdls_external_control: tdls external control enable
* @tdls_implicit_trigger_enable: tdls implicit trigger enable
* @tdls_scan_enable: tdls scan enable
* @tdls_sleep_sta_enable: tdls sleep sta enable
* @tdls_support_enable: tdls support enable
*/ */
struct tdls_user_config { struct tdls_user_config {
uint32_t tdls_tx_states_period; uint32_t tdls_tx_states_period;
@@ -435,8 +443,8 @@ struct tdls_user_config {
uint32_t tdls_max_discovery_attempt; uint32_t tdls_max_discovery_attempt;
uint32_t tdls_idle_timeout; uint32_t tdls_idle_timeout;
uint32_t tdls_idle_pkt_threshold; uint32_t tdls_idle_pkt_threshold;
uint32_t tdls_rssi_trigger_threshold; int32_t tdls_rssi_trigger_threshold;
uint32_t tdls_rssi_teardown_threshold; int32_t tdls_rssi_teardown_threshold;
uint32_t tdls_rssi_delta; uint32_t tdls_rssi_delta;
uint32_t tdls_uapsd_mask; uint32_t tdls_uapsd_mask;
uint32_t tdls_uapsd_inactivity_time; uint32_t tdls_uapsd_inactivity_time;
@@ -449,6 +457,14 @@ struct tdls_user_config {
uint32_t delayed_trig_framint; uint32_t delayed_trig_framint;
uint8_t tdls_vdev_nss_2g; uint8_t tdls_vdev_nss_2g;
uint8_t tdls_vdev_nss_5g; uint8_t tdls_vdev_nss_5g;
bool tdls_buffer_sta_enable;
bool tdls_off_chan_enable;
bool tdls_wmm_mode_enable;
bool tdls_external_control;
bool tdls_implicit_trigger_enable;
bool tdls_scan_enable;
bool tdls_sleep_sta_enable;
bool tdls_support_enable;
}; };
/** /**

Dosyayı Görüntüle

@@ -0,0 +1,324 @@
/*
* Copyright (c) 2018 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
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: This file contains TDLS configures interface definitions
*/
#include <wlan_objmgr_psoc_obj.h>
#include "wlan_tdls_cfg_api.h"
#include "../../core/src/wlan_tdls_main.h"
QDF_STATUS
cfg_tdls_get_support_enable(struct wlan_objmgr_psoc *psoc,
bool *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = false;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_support_enable;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_set_support_enable(struct wlan_objmgr_psoc *psoc,
bool val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
soc_obj->tdls_configs.tdls_support_enable = val;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_get_external_control(struct wlan_objmgr_psoc *psoc,
bool *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = false;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_external_control;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_get_uapsd_mask(struct wlan_objmgr_psoc *psoc,
uint32_t *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = 0;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_uapsd_mask;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_get_buffer_sta_enable(struct wlan_objmgr_psoc *psoc,
bool *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = false;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_buffer_sta_enable;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_set_buffer_sta_enable(struct wlan_objmgr_psoc *psoc,
bool val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
soc_obj->tdls_configs.tdls_buffer_sta_enable = val;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_get_uapsd_inactivity_time(struct wlan_objmgr_psoc *psoc,
uint32_t *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = 0;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_uapsd_inactivity_time;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_get_rx_pkt_threshold(struct wlan_objmgr_psoc *psoc,
uint32_t *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = 0;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_rx_pkt_threshold;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_get_off_channel_enable(struct wlan_objmgr_psoc *psoc,
bool *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = false;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_off_chan_enable;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_set_off_channel_enable(struct wlan_objmgr_psoc *psoc,
bool val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
soc_obj->tdls_configs.tdls_off_chan_enable = val;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_get_wmm_mode_enable(struct wlan_objmgr_psoc *psoc,
bool *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = false;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_wmm_mode_enable;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_set_vdev_nss_2g(struct wlan_objmgr_psoc *psoc,
uint8_t val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
soc_obj->tdls_configs.tdls_vdev_nss_2g = val;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_set_vdev_nss_5g(struct wlan_objmgr_psoc *psoc,
uint8_t val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
soc_obj->tdls_configs.tdls_vdev_nss_5g = val;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_get_sleep_sta_enable(struct wlan_objmgr_psoc *psoc,
bool *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = false;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_sleep_sta_enable;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_set_sleep_sta_enable(struct wlan_objmgr_psoc *psoc,
bool val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
soc_obj->tdls_configs.tdls_sleep_sta_enable = val;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_get_scan_enable(struct wlan_objmgr_psoc *psoc,
bool *val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
*val = false;
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
*val = soc_obj->tdls_configs.tdls_scan_enable;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
cfg_tdls_set_scan_enable(struct wlan_objmgr_psoc *psoc,
bool val)
{
struct tdls_soc_priv_obj *soc_obj;
soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
if (!soc_obj) {
tdls_err("tdls soc null");
return QDF_STATUS_E_INVAL;
}
soc_obj->tdls_configs.tdls_scan_enable = val;
return QDF_STATUS_SUCCESS;
}

Dosyayı Görüntüle

@@ -32,6 +32,8 @@
#include <wlan_objmgr_cmn.h> #include <wlan_objmgr_cmn.h>
#include "wlan_policy_mgr_api.h" #include "wlan_policy_mgr_api.h"
#include "wlan_scan_ucfg_api.h" #include "wlan_scan_ucfg_api.h"
#include "wlan_tdls_cfg.h"
#include "cfg_ucfg_api.h"
QDF_STATUS ucfg_tdls_init(void) QDF_STATUS ucfg_tdls_init(void)
{ {
@@ -116,11 +118,104 @@ QDF_STATUS ucfg_tdls_deinit(void)
return ret; return ret;
} }
/**
* tdls_object_init_params() - init parameters for tdls object
* @tdls_soc_obj: pointer to tdls psoc object
*
* This function init parameters for tdls object
*/
static QDF_STATUS tdls_object_init_params(
struct tdls_soc_priv_obj *tdls_soc_obj)
{
struct wlan_objmgr_psoc *psoc;
if (!tdls_soc_obj) {
tdls_err("invalid param");
return QDF_STATUS_E_INVAL;
}
psoc = tdls_soc_obj->soc;
if (!psoc) {
tdls_err("invalid psoc object");
return QDF_STATUS_E_INVAL;
}
tdls_soc_obj->tdls_configs.tdls_tx_states_period =
cfg_get(psoc, CFG_TDLS_TX_STATS_PERIOD);
tdls_soc_obj->tdls_configs.tdls_tx_pkt_threshold =
cfg_get(psoc, CFG_TDLS_TX_PACKET_THRESHOLD);
tdls_soc_obj->tdls_configs.tdls_rx_pkt_threshold =
cfg_get(psoc, CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD);
tdls_soc_obj->tdls_configs.tdls_max_discovery_attempt =
cfg_get(psoc, CFG_TDLS_MAX_DISCOVERY_ATTEMPT);
tdls_soc_obj->tdls_configs.tdls_idle_timeout =
cfg_get(psoc, CFG_TDLS_IDLE_TIMEOUT);
tdls_soc_obj->tdls_configs.tdls_idle_pkt_threshold =
cfg_get(psoc, CFG_TDLS_IDLE_PACKET_THRESHOLD);
tdls_soc_obj->tdls_configs.tdls_rssi_trigger_threshold =
cfg_get(psoc, CFG_TDLS_RSSI_TRIGGER_THRESHOLD);
tdls_soc_obj->tdls_configs.tdls_rssi_teardown_threshold =
cfg_get(psoc, CFG_TDLS_RSSI_TEARDOWN_THRESHOLD);
tdls_soc_obj->tdls_configs.tdls_rssi_delta =
cfg_get(psoc, CFG_TDLS_RSSI_DELTA);
tdls_soc_obj->tdls_configs.tdls_uapsd_mask =
cfg_get(psoc, CFG_TDLS_QOS_WMM_UAPSD_MASK);
tdls_soc_obj->tdls_configs.tdls_uapsd_inactivity_time =
cfg_get(psoc, CFG_TDLS_PUAPSD_INACT_TIME);
tdls_soc_obj->tdls_configs.tdls_uapsd_pti_window =
cfg_get(psoc, CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW);
tdls_soc_obj->tdls_configs.tdls_uapsd_ptr_timeout =
cfg_get(psoc, CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT);
tdls_soc_obj->tdls_configs.tdls_pre_off_chan_num =
cfg_get(psoc, CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM);
tdls_soc_obj->tdls_configs.tdls_pre_off_chan_bw =
cfg_get(psoc, CFG_TDLS_PREFERRED_OFF_CHANNEL_BW);
tdls_soc_obj->tdls_configs.tdls_peer_kickout_threshold =
cfg_get(psoc, CFG_TDLS_PEER_KICKOUT_THRESHOLD);
tdls_soc_obj->tdls_configs.delayed_trig_framint =
cfg_get(psoc, CFG_TDLS_DELAYED_TRGR_FRM_INT);
tdls_soc_obj->tdls_configs.tdls_wmm_mode_enable =
cfg_get(psoc, CFG_TDLS_WMM_MODE_ENABLE);
tdls_soc_obj->tdls_configs.tdls_off_chan_enable =
cfg_get(psoc, CFG_TDLS_OFF_CHANNEL_ENABLED);
tdls_soc_obj->tdls_configs.tdls_buffer_sta_enable =
cfg_get(psoc, CFG_TDLS_BUF_STA_ENABLED);
tdls_soc_obj->tdls_configs.tdls_scan_enable =
cfg_get(psoc, CFG_TDLS_SCAN_ENABLE);
tdls_soc_obj->tdls_configs.tdls_support_enable =
cfg_get(psoc, CFG_TDLS_SUPPORT_ENABLE);
tdls_soc_obj->tdls_configs.tdls_implicit_trigger_enable =
cfg_get(psoc, CFG_TDLS_IMPLICIT_TRIGGER);
tdls_soc_obj->tdls_configs.tdls_external_control =
cfg_get(psoc, CFG_TDLS_EXTERNAL_CONTROL);
tdls_soc_obj->tdls_configs.tdls_feature_flags =
((tdls_soc_obj->tdls_configs.tdls_off_chan_enable ?
1 << TDLS_FEATURE_OFF_CHANNEL : 0) |
(tdls_soc_obj->tdls_configs.tdls_wmm_mode_enable ?
1 << TDLS_FEATURE_WMM : 0) |
(tdls_soc_obj->tdls_configs.tdls_buffer_sta_enable ?
1 << TDLS_FEATURE_BUFFER_STA : 0) |
(tdls_soc_obj->tdls_configs.tdls_sleep_sta_enable ?
1 << TDLS_FEATURE_SLEEP_STA : 0) |
(tdls_soc_obj->tdls_configs.tdls_scan_enable ?
1 << TDLS_FEATURE_SCAN : 0) |
(tdls_soc_obj->tdls_configs.tdls_support_enable ?
1 << TDLS_FEATURE_ENABLE : 0) |
(tdls_soc_obj->tdls_configs.tdls_implicit_trigger_enable ?
1 << TDLS_FEAUTRE_IMPLICIT_TRIGGER : 0) |
(tdls_soc_obj->tdls_configs.tdls_external_control ?
1 << TDLS_FEATURE_EXTERNAL_CONTROL : 0));
return QDF_STATUS_SUCCESS;
}
static QDF_STATUS tdls_global_init(struct tdls_soc_priv_obj *soc_obj) static QDF_STATUS tdls_global_init(struct tdls_soc_priv_obj *soc_obj)
{ {
uint8_t sta_idx; uint8_t sta_idx;
uint32_t feature; uint32_t feature;
tdls_object_init_params(soc_obj);
soc_obj->connected_peer_count = 0; soc_obj->connected_peer_count = 0;
soc_obj->tdls_nss_switch_in_progress = false; soc_obj->tdls_nss_switch_in_progress = false;
soc_obj->tdls_teardown_peers_cnt = 0; soc_obj->tdls_teardown_peers_cnt = 0;
@@ -228,8 +323,6 @@ QDF_STATUS ucfg_tdls_update_config(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
} }
/* Update TDLS user config */
qdf_mem_copy(&soc_obj->tdls_configs, &req->config, sizeof(req->config));
tdls_feature_flags = soc_obj->tdls_configs.tdls_feature_flags; tdls_feature_flags = soc_obj->tdls_configs.tdls_feature_flags;
if (!TDLS_IS_IMPLICIT_TRIG_ENABLED(tdls_feature_flags)) if (!TDLS_IS_IMPLICIT_TRIG_ENABLED(tdls_feature_flags))