summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRavi Joshi <ravij@qca.qualcomm.com>2015-11-09 18:41:20 -0800
committerSatish Singh <ssing@codeaurora.org>2015-12-28 22:35:54 -0800
commit61c3c7a9273ffc61d4198213bc4d2bba8b29065c (patch)
tree9656879777f9ac7893b42cafa078ea2174320e01
parent4acb24c8ce371f3c3923eccd250757f06dc5f96e (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--Kbuild11
-rw-r--r--Kconfig4
-rw-r--r--core/cdf/inc/cdf_types.h1
-rw-r--r--core/mac/inc/sir_api.h27
-rw-r--r--core/mac/src/include/sir_params.h2
-rw-r--r--core/sme/inc/sme_api.h5
-rw-r--r--core/wma/inc/wma.h11
-rw-r--r--core/wma/inc/wma_types.h1
8 files changed, 61 insertions, 1 deletions
diff --git a/Kbuild b/Kbuild
index 23c60360a9e3..8e0256309419 100644
--- a/Kbuild
+++ b/Kbuild
@@ -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
diff --git a/Kconfig b/Kconfig
index 9cf8e1d9d01e..940ae4dcf1fd 100644
--- a/Kconfig
+++ b/Kconfig
@@ -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