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
This commit is contained in:
759
umac/tdls/dispatcher/inc/wlan_tdls_cfg.h
Normal file
759
umac/tdls/dispatcher/inc/wlan_tdls_cfg.h
Normal file
@@ -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
|
217
umac/tdls/dispatcher/inc/wlan_tdls_cfg_api.h
Normal file
217
umac/tdls/dispatcher/inc/wlan_tdls_cfg_api.h
Normal file
@@ -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_ */
|
@@ -427,6 +427,14 @@ enum tdls_feature_bit {
|
||||
* @delayed_trig_framint: delayed trigger frame interval
|
||||
* @tdls_vdev_nss_2g: tdls NSS setting for 2G 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 {
|
||||
uint32_t tdls_tx_states_period;
|
||||
@@ -435,8 +443,8 @@ struct tdls_user_config {
|
||||
uint32_t tdls_max_discovery_attempt;
|
||||
uint32_t tdls_idle_timeout;
|
||||
uint32_t tdls_idle_pkt_threshold;
|
||||
uint32_t tdls_rssi_trigger_threshold;
|
||||
uint32_t tdls_rssi_teardown_threshold;
|
||||
int32_t tdls_rssi_trigger_threshold;
|
||||
int32_t tdls_rssi_teardown_threshold;
|
||||
uint32_t tdls_rssi_delta;
|
||||
uint32_t tdls_uapsd_mask;
|
||||
uint32_t tdls_uapsd_inactivity_time;
|
||||
@@ -449,6 +457,14 @@ struct tdls_user_config {
|
||||
uint32_t delayed_trig_framint;
|
||||
uint8_t tdls_vdev_nss_2g;
|
||||
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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
324
umac/tdls/dispatcher/src/wlan_tdls_cfg.c
Normal file
324
umac/tdls/dispatcher/src/wlan_tdls_cfg.c
Normal file
@@ -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;
|
||||
}
|
@@ -32,6 +32,8 @@
|
||||
#include <wlan_objmgr_cmn.h>
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_scan_ucfg_api.h"
|
||||
#include "wlan_tdls_cfg.h"
|
||||
#include "cfg_ucfg_api.h"
|
||||
|
||||
QDF_STATUS ucfg_tdls_init(void)
|
||||
{
|
||||
@@ -116,11 +118,104 @@ QDF_STATUS ucfg_tdls_deinit(void)
|
||||
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)
|
||||
{
|
||||
uint8_t sta_idx;
|
||||
uint32_t feature;
|
||||
|
||||
tdls_object_init_params(soc_obj);
|
||||
soc_obj->connected_peer_count = 0;
|
||||
soc_obj->tdls_nss_switch_in_progress = false;
|
||||
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;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
|
||||
if (!TDLS_IS_IMPLICIT_TRIG_ENABLED(tdls_feature_flags))
|
||||
|
Reference in New Issue
Block a user