diff options
| author | Ravi Joshi <ravij@qca.qualcomm.com> | 2015-11-09 18:41:20 -0800 |
|---|---|---|
| committer | Satish Singh <ssing@codeaurora.org> | 2015-12-28 22:35:54 -0800 |
| commit | 61c3c7a9273ffc61d4198213bc4d2bba8b29065c (patch) | |
| tree | 9656879777f9ac7893b42cafa078ea2174320e01 | |
| parent | 4acb24c8ce371f3c3923eccd250757f06dc5f96e (diff) | |
qcacld-3.0: Interfacing files for LFR Subnet Detection support
Add interfacing files and configuration options to enable
LFR subnet detection feature support.
Change-Id: I46756dfb2dd8071fd2bb762038414709e6212c1c
CRs-fixed: 876335
| -rw-r--r-- | Kbuild | 11 | ||||
| -rw-r--r-- | Kconfig | 4 | ||||
| -rw-r--r-- | core/cdf/inc/cdf_types.h | 1 | ||||
| -rw-r--r-- | core/mac/inc/sir_api.h | 27 | ||||
| -rw-r--r-- | core/mac/src/include/sir_params.h | 2 | ||||
| -rw-r--r-- | core/sme/inc/sme_api.h | 5 | ||||
| -rw-r--r-- | core/wma/inc/wma.h | 11 | ||||
| -rw-r--r-- | core/wma/inc/wma_types.h | 1 |
8 files changed, 61 insertions, 1 deletions
@@ -130,6 +130,9 @@ ifeq ($(KERNEL_BUILD), 0) CONFIG_WLAN_LRO := n endif endif + + # Flag to enable LFR Subnet Detection + CONFIG_LFR_SUBNET_DETECTION := y endif ifneq ($(CONFIG_MOBILE_ROUTER), y) @@ -338,6 +341,10 @@ ifeq ($(CONFIG_WLAN_FEATURE_MEMDUMP),y) HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_memdump.o endif +ifeq ($(CONFIG_LFR_SUBNET_DETECTION), y) +HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_subnet_detect.o +endif + ########### HOST DIAG LOG ########### HOST_DIAG_LOG_DIR := core/utils/host_diag_log @@ -1317,6 +1324,10 @@ ifeq ($(CONFIG_STATICALLY_ADD_11P_CHANNELS),y) CDEFINES += -DFEATURE_STATICALLY_ADD_11P_CHANNELS endif +ifeq ($(CONFIG_LFR_SUBNET_DETECTION), y) +CDEFINES += -DFEATURE_LFR_SUBNET_DETECTION +endif + KBUILD_CPPFLAGS += $(CDEFINES) # Currently, for versions of gcc which support it, the kernel Makefile @@ -107,4 +107,8 @@ config WLAN_FEATURE_RX_WAKELOCK bool "Enable RX wake lock feature" default n +config FEATURE_LFR_SUBNET_DETECTION + bool "Enable LFR Subnet Change Detection" + default n + endif # QCA_CLD_WLAN diff --git a/core/cdf/inc/cdf_types.h b/core/cdf/inc/cdf_types.h index 27151417bd03..5c987af344ca 100644 --- a/core/cdf/inc/cdf_types.h +++ b/core/cdf/inc/cdf_types.h @@ -353,6 +353,7 @@ struct cdf_mac_addr { #define CDF_MAC_ADDR_ZERO_INITIALIZER { { 0, 0, 0, 0, 0, 0 } } #define CDF_IPV4_ADDR_SIZE (4) +#define CDF_IPV6_ADDR_SIZE (16) /** * struct cdf_tso_frag_t - fragments of a single TCP segment diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index 3d04d1fc2910..a627a09d4785 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -5395,6 +5395,33 @@ enum powersave_mode { PS_QPOWER_DEEPSLEEP = 4, PS_DUTY_CYCLING_QPOWER = 5 }; +#ifdef FEATURE_LFR_SUBNET_DETECTION +/** + * struct gateway_param_update_req - gateway parameter update request + * @request_id: request id + * @session_id: session id + * @max_retries: Max ARP/NS retry attempts + * @timeout: Retry interval + * @ipv4_addr_type: on ipv4 network + * @ipv6_addr_type: on ipv6 network + * @gw_mac_addr: gateway mac addr + * @ipv4_addr: ipv4 addr + * @ipv6_addr: ipv6 addr + */ +struct gateway_param_update_req { + uint32_t request_id; + uint32_t session_id; + uint32_t max_retries; + uint32_t timeout; + uint32_t ipv4_addr_type; + uint32_t ipv6_addr_type; + struct cdf_mac_addr gw_mac_addr; + uint8_t ipv4_addr[CDF_IPV4_ADDR_SIZE]; + uint8_t ipv6_addr[CDF_IPV6_ADDR_SIZE]; +}; +#else +struct gateway_param_update_req; +#endif /* FEATURE_LFR_SUBNET_DETECTION */ /** * struct sir_sme_ext_change_chan_req - channel change request diff --git a/core/mac/src/include/sir_params.h b/core/mac/src/include/sir_params.h index c5b6d7c56ed7..22aabae93a5b 100644 --- a/core/mac/src/include/sir_params.h +++ b/core/mac/src/include/sir_params.h @@ -579,7 +579,7 @@ typedef struct sSirMbMsgP2p { #define SIR_HAL_EXIT_PS_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 236) #define SIR_HAL_ENABLE_UAPSD_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 237) #define SIR_HAL_DISABLE_UAPSD_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 238) - +#define SIR_HAL_GATEWAY_PARAM_UPDATE_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 239) #define SIR_HAL_SET_EPNO_LIST_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 313) #define SIR_HAL_SET_PASSPOINT_LIST_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 316) #define SIR_HAL_RESET_PASSPOINT_LIST_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 317) diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h index 91f6526aedf0..93e307fbcaa5 100644 --- a/core/sme/inc/sme_api.h +++ b/core/sme/inc/sme_api.h @@ -1075,4 +1075,9 @@ sme_get_opclass(tHalHandle hal, uint8_t channel, uint8_t bw_offset, } #endif +#ifdef FEATURE_LFR_SUBNET_DETECTION +CDF_STATUS sme_gateway_param_update(tHalHandle hHal, + struct gateway_param_update_req *request); +#endif + #endif /* #if !defined( __SME_API_H ) */ diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h index 9a3cea4b1908..95a1ad5b40e6 100644 --- a/core/wma/inc/wma.h +++ b/core/wma/inc/wma.h @@ -2008,6 +2008,17 @@ int wma_mgmt_tx_completion_handler(void *handle, uint8_t *cmpl_event_params, void wma_set_dfs_region(tp_wma_handle wma, uint8_t dfs_region); uint32_t wma_get_vht_ch_width(void); +#ifdef FEATURE_LFR_SUBNET_DETECTION +CDF_STATUS wma_set_gateway_params(tp_wma_handle wma, + struct gateway_param_update_req *req); +#else +static inline CDF_STATUS wma_set_gateway_params(tp_wma_handle wma, + struct gateway_param_update_req *req) +{ + return CDF_STATUS_SUCCESS; +} +#endif /* FEATURE_LFR_SUBNET_DETECTION */ + #if defined(FEATURE_LRO) CDF_STATUS wma_lro_config_cmd(tp_wma_handle wma_handle, struct wma_lro_config_cmd_t *wma_lro_cmd); diff --git a/core/wma/inc/wma_types.h b/core/wma/inc/wma_types.h index 5c5c9747ff70..6676a08a1aef 100644 --- a/core/wma/inc/wma_types.h +++ b/core/wma/inc/wma_types.h @@ -447,6 +447,7 @@ #define WMA_SET_IE_INFO SIR_HAL_SET_IE_INFO #define WMA_LRO_CONFIG_CMD SIR_HAL_LRO_CONFIG_CMD +#define WMA_GW_PARAM_UPDATE_REQ SIR_HAL_GATEWAY_PARAM_UPDATE_REQ /* Bit 6 will be used to control BD rate for Management frames */ #define HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME 0x40 |
