Files
android_kernel_samsung_sm86…/components/nan/dispatcher/inc/cfg_nan.h
Bapiraju Alla 6058846058 qcacld-3.0: Fix mem leak with NDP peer multicast address list
Currently, NDP peer multicast address is derived from peer MAC address
and cached in the host. While removing the NDP peer, peer MAC address
is used to search the cached multicast address list. Because of this,
peer multicast address list is not getting freed.

To resolve this, derive peer multicast address from the peer MAC address
while clearing the cached multicast address list.

Since MAX NDP sessions are 8, allocate memory for peer multicast address
list during the NAN vdev private object allocation. This avoids the
special handling for peer multicast list in multiple error scenarios.

Change-Id: Ifbf890a4b9c8be54d84a5b57ed8f6c237ecd51ca
CRs-Fixed: 3085069
2021-12-01 04:22:56 -08:00

320 lines
6.5 KiB
C

/*
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. 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(__NAN_CFG_H__)
#define __NAN_CFG_H__
/**
*
* DOC: nan_cfg.h
*
* NAN feature INI configuration parameter definitions
*/
#include "cfg_define.h"
#include "cfg_converged.h"
#include "qdf_types.h"
/*
* <ini>
* gEnableNanSupport - NAN feature support configuration
* @Min: 0
* @Max: 1
* @Default: 1
*
* When set to 1 NAN feature will be enabled.
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: External
*
* </ini>
*/
#define CFG_NAN_ENABLE CFG_INI_BOOL("gEnableNanSupport", \
1, \
"Enable NAN Support")
/*
* <ini>
* nan_separate_iface_support: Separate iface creation for NAN
* @Min: 0
* @Max: 1
* @Default: 1
*
* Value is 1 when Host HDD supports separate iface creation
* for NAN.
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: External
*
* </ini>
*/
#define CFG_NAN_SEPARATE_IFACE_SUPP CFG_INI_BOOL("nan_separate_iface_support", \
1, \
"Seperate iface for NAN")
/*
* <ini>
* genable_nan_datapath - Enable NaN data path feature. NaN data path
* enables NAN supported devices to exchange
* data over TCP/UDP network stack.
* @Min: 0
* @Max: 1
* @Default: 1
*
* When set to 1 NAN Datapath feature will be enabled.
*
* Related: gEnableNanSupport
*
* Supported Feature: NAN
*
* Usage: External
*
* </ini>
*/
#define CFG_NAN_DATAPATH_ENABLE CFG_INI_BOOL("genable_nan_datapath", \
1, \
"Enable NAN Datapath support")
/*
* <ini>
* gEnableNDIMacRandomization - When enabled this will randomize NDI Mac
* @Min: 0
* @Max: 1
* @Default: 1
*
* When enabled this will randomize NDI Mac
*
* Related: gEnableNanSupport
*
* Supported Feature: NAN
*
* Usage: External
*
* </ini>
*/
#define CFG_NAN_RANDOMIZE_NDI_MAC CFG_INI_BOOL("gEnableNDIMacRandomization", \
1, \
"Enable NAN MAC Randomization")
/*
* <ini>
* ndp_inactivity_timeout - To configure duration of how many seconds
* without TX/RX data traffic, NDI vdev can kickout the connected
* peer(i.e. NDP Termination).
*
* @Min: 0
* @Max: 1800
* @Default: 60
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: External
*
* </ini>
*/
#define CFG_NAN_NDP_INACTIVITY_TIMEOUT CFG_INI_UINT("ndp_inactivity_timeout", \
0, \
1800, \
60, \
CFG_VALUE_OR_DEFAULT, \
"NDP Auto Terminate time")
/*
* <ini>
* gNdpKeepAlivePeriod - To configure duration of how many seconds
* to wait to kickout peer if peer is not reachable.
*
* @Min: 10
* @Max: 30
* @Default: 14
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: External
*
* </ini>
*/
#define CFG_NDP_KEEP_ALIVE_PERIOD CFG_INI_UINT( \
"gNdpKeepAlivePeriod", \
10, \
30, \
14, \
CFG_VALUE_OR_DEFAULT, \
"Keep alive timeout of a peer")
/* MAX NDP sessions supported */
#define MAX_NDP_SESSIONS 8
/*
* <ini>
* ndp_max_sessions - To configure max ndp sessions
* supported by host.
*
* @Min: 1
* @Max: 8
* @Default: 8
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: Internal
*
* </ini>
*/
#define CFG_NDP_MAX_SESSIONS CFG_INI_UINT( \
"ndp_max_sessions", \
1, \
MAX_NDP_SESSIONS, \
8, \
CFG_VALUE_OR_DEFAULT, \
"max ndp sessions host supports")
/*
* <ini>
* gSupportMp0Discovery - To support discovery of NAN cluster with
* Master Preference (MP) as 0 when a new device is enabling NAN.
*
* @Min: 0
* @Max: 1
* @Default: 0
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: External
*
* </ini>
*/
#define CFG_SUPPORT_MP0_DISCOVERY CFG_INI_BOOL( \
"gSupportMp0Discovery", \
1, \
"Enable/Disable discovery of NAN cluster with Master Preference (MP) as 0")
/*
* <ini>
* ndi_max_support - To configure max number of ndi host supports
*
* @Min: 1
* @Max: 2
* @Default: 1
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: Internal
*
* </ini>
*/
#define CFG_NDI_MAX_SUPPORT CFG_INI_UINT( \
"ndi_max_support", \
1, \
2, \
1, \
CFG_VALUE_OR_DEFAULT, \
"Max number of NDI host supports")
/*
* <ini>
* nan_feature_config - Bitmap to enable/disable a particular NAN/NDP feature
*
* @Min: 0
* @Max: 0xFFFF
* @Default: 0
*
* This parameter helps to enable/disable a particular feature config by setting
* corresponding bit and send to firmware through the VDEV param
* WMI_VDEV_PARAM_ENABLE_DISABLE_NAN_CONFIG_FEATURES
* Acceptable values for this:
* BIT(0): Allow DW configuration from framework in sync role.
* If this is not set, firmware shall follow the spec/default behavior.
* BIT(1) to BIT(31): Reserved
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: External
*
* </ini>
*/
#define CFG_NAN_FEATURE_CONFIG CFG_INI_UINT( \
"nan_feature_config", \
0, \
0xFFFF, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Enable the specified NAN features in firmware")
/*
* <ini>
* disable_6g_nan - Disable NAN feature support in 6GHz
* @Min: 0
* @Max: 1
* @Default: 0
*
* When set to 1 NAN feature will be disabled in 6GHz.
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: External
*
* </ini>
*/
#define CFG_DISABLE_6G_NAN CFG_INI_BOOL("disable_6g_nan", \
0, \
"Disable NAN Support in 6GHz")
#ifdef WLAN_FEATURE_NAN
#define CFG_NAN_DISC CFG(CFG_NAN_ENABLE) \
CFG(CFG_DISABLE_6G_NAN) \
CFG(CFG_NDP_KEEP_ALIVE_PERIOD) \
CFG(CFG_SUPPORT_MP0_DISCOVERY)
#define CFG_NAN_DP CFG(CFG_NAN_DATAPATH_ENABLE) \
CFG(CFG_NAN_RANDOMIZE_NDI_MAC) \
CFG(CFG_NAN_NDP_INACTIVITY_TIMEOUT) \
CFG(CFG_NAN_SEPARATE_IFACE_SUPP)
#else
#define CFG_NAN_DISC
#define CFG_NAN_DP
#endif
#define CFG_NAN_ALL CFG_NAN_DISC \
CFG_NAN_DP \
CFG(CFG_NDP_MAX_SESSIONS) \
CFG(CFG_NDI_MAX_SUPPORT) \
CFG(CFG_NAN_FEATURE_CONFIG)
#endif