From c7642605cca7759f571adce34392f7109471349f Mon Sep 17 00:00:00 2001 From: Hangtian Zhu Date: Wed, 11 Sep 2019 17:47:43 +0800 Subject: [PATCH] qcacld-3.0: Add CONFIG_MULTI_IF_LOG to support multi if log This is a propagation of qcacld-2.0 commit 98821c7dcf49d ("qcacld-2.0: Add CONFIG_MULTI_IF_LOG to support multi if log"). Add CONFIG_MULTI_IF_LOG to support multi if log by assigning the specific netlink protocol when dual wlan cards are loaded. Change-Id: I3ea9574899c23a8d2ebbdea5b958cc3ad7947fe5 CRs-Fixed: 2525483 --- Kbuild | 3 ++ configs/default_defconfig | 1 + core/hdd/inc/hdd_config.h | 63 +++++++++++++++++++++++++++++++++++- core/hdd/inc/wlan_hdd_cfg.h | 1 + core/hdd/inc/wlan_hdd_main.h | 10 ++++-- core/hdd/src/wlan_hdd_main.c | 2 ++ 6 files changed, 77 insertions(+), 3 deletions(-) diff --git a/Kbuild b/Kbuild index bf4bd920a146..87559801e0c4 100644 --- a/Kbuild +++ b/Kbuild @@ -2257,6 +2257,9 @@ cppflags-$(CONFIG_FEATURE_BECN_STATS) += -DWLAN_FEATURE_BEACON_RECEPTION_STATS #Set RX_PERFORMANCE cppflags-$(CONFIG_RX_PERFORMANCE) += -DRX_PERFORMANCE +#Set MULTI_IF_LOG +cppflags-$(CONFIG_MULTI_IF_LOG) += -DMULTI_IF_LOG + #Set SLUB_MEM_OPTIMIZE cppflags-$(CONFIG_SLUB_MEM_OPTIMIZE) += -DSLUB_MEM_OPTIMIZE diff --git a/configs/default_defconfig b/configs/default_defconfig index 316e3625f7af..3bd13e7de923 100644 --- a/configs/default_defconfig +++ b/configs/default_defconfig @@ -105,6 +105,7 @@ ifeq ($(CONFIG_ARCH_QCS40X), y) CONFIG_WLAN_SYNC_TSF_PLUS_NOIRQ := y CONFIG_RX_PERFORMANCE := y CONFIG_TGT_NUM_MSDU_DESC := 900 + CONFIG_MULTI_IF_LOG := y endif CONFIG_WLAN_FEATURE_MBSSID := y diff --git a/core/hdd/inc/hdd_config.h b/core/hdd/inc/hdd_config.h index 2c48472363cb..fa9ac326c3ac 100644 --- a/core/hdd/inc/hdd_config.h +++ b/core/hdd/inc/hdd_config.h @@ -275,6 +275,66 @@ enum hdd_dot11_mode { 1, \ "Wlan logging enable") +/* + * + * host_log_custom_nl_proto - Host log netlink protocol + * @Min: 0 + * @Max: 32 + * @Default: 2 + * + * This ini is used to set host log netlink protocol. The default + * value is 2 (NETLINK_USERSOCK), customer should avoid selecting the + * netlink protocol that already used on their platform by other + * applications or services. By choosing the non-default value(2), + * Customer need to change the netlink protocol of application receive + * tool(cnss_diag) accordingly. Available values could be: + * + * host_log_custom_nl_proto = 0 - NETLINK_ROUTE, Routing/device hook + * host_log_custom_nl_proto = 1 - NETLINK_UNUSED, Unused number + * host_log_custom_nl_proto = 2 - NETLINK_USERSOCK, Reserved for user + * mode socket protocols + * host_log_custom_nl_proto = 3 - NETLINK_FIREWALL, Unused number, + * formerly ip_queue + * host_log_custom_nl_proto = 4 - NETLINK_SOCK_DIAG, socket monitoring + * host_log_custom_nl_proto = 5 - NETLINK_NFLOG, netfilter/iptables ULOG + * host_log_custom_nl_proto = 6 - NETLINK_XFRM, ipsec + * host_log_custom_nl_proto = 7 - NETLINK_SELINUX, SELinux event + * notifications + * host_log_custom_nl_proto = 8 - NETLINK_ISCSI, Open-iSCSI + * host_log_custom_nl_proto = 9 - NETLINK_AUDIT, auditing + * host_log_custom_nl_proto = 10 - NETLINK_FIB_LOOKUP + * host_log_custom_nl_proto = 11 - NETLINK_CONNECTOR + * host_log_custom_nl_proto = 12 - NETLINK_NETFILTER, netfilter subsystem + * host_log_custom_nl_proto = 13 - NETLINK_IP6_FW + * host_log_custom_nl_proto = 14 - NETLINK_DNRTMSG, DECnet routing messages + * host_log_custom_nl_proto = 15 - NETLINK_KOBJECT_UEVENT, Kernel + * messages to userspace + * host_log_custom_nl_proto = 16 - NETLINK_GENERIC, leave room for + * NETLINK_DM (DM Events) + * host_log_custom_nl_proto = 18 - NETLINK_SCSITRANSPORT, SCSI Transports + * host_log_custom_nl_proto = 19 - NETLINK_ECRYPTFS + * host_log_custom_nl_proto = 20 - NETLINK_RDMA + * host_log_custom_nl_proto = 21 - NETLINK_CRYPTO, Crypto layer + * host_log_custom_nl_proto = 22 - NETLINK_SMC, SMC monitoring + * + * The max value is: MAX_LINKS which is 32 + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ +#define CFG_HOST_LOG_CUSTOM_NETLINK_PROTO CFG_INI_UINT( \ + "host_log_custom_nl_proto", \ + 0, \ + 32, \ + 2, \ + CFG_VALUE_OR_DEFAULT, \ + "host log custom netlink protocol") + /* * * wlanLoggingToConsole - Wlan logging to console @@ -291,7 +351,8 @@ enum hdd_dot11_mode { #define CFG_WLAN_LOGGING_SUPPORT_ALL \ CFG(CFG_WLAN_LOGGING_SUPPORT) \ - CFG(CFG_WLAN_LOGGING_CONSOLE_SUPPORT) + CFG(CFG_WLAN_LOGGING_CONSOLE_SUPPORT) \ + CFG(CFG_HOST_LOG_CUSTOM_NETLINK_PROTO) #else #define CFG_WLAN_LOGGING_SUPPORT_ALL #endif diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index fed372bc86f0..e87413dc9ba1 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -138,6 +138,7 @@ struct hdd_config { /* WLAN Logging */ bool wlan_logging_enable; bool wlan_logging_to_console; + uint8_t host_log_custom_nl_proto; #endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */ #ifdef FEATURE_WLAN_AUTO_SHUTDOWN diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index fcdcdfb22973..0d179ce60fa0 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -2943,7 +2943,10 @@ static inline void hdd_set_tso_flags(struct hdd_context *hdd_ctx, */ static inline int wlan_hdd_nl_init(struct hdd_context *hdd_ctx) { - hdd_ctx->radio_index = nl_srv_init(hdd_ctx->wiphy); + int proto; + + proto = hdd_ctx->config->host_log_custom_nl_proto; + hdd_ctx->radio_index = nl_srv_init(hdd_ctx->wiphy, proto); /* radio_index is assigned from 0, so only >=0 will be valid index */ if (hdd_ctx->radio_index >= 0) @@ -2963,7 +2966,10 @@ static inline int wlan_hdd_nl_init(struct hdd_context *hdd_ctx) */ static inline int wlan_hdd_nl_init(struct hdd_context *hdd_ctx) { - return nl_srv_init(hdd_ctx->wiphy); + int proto; + + proto = hdd_ctx->config->host_log_custom_nl_proto; + return nl_srv_init(hdd_ctx->wiphy, proto); } #endif QDF_STATUS hdd_sme_open_session_callback(uint8_t vdev_id, diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index f4b5e98dc980..fe262773dfb4 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -9862,6 +9862,8 @@ static void hdd_init_wlan_logging_params(struct hdd_config *config, config->wlan_logging_to_console = cfg_get(psoc, CFG_WLAN_LOGGING_CONSOLE_SUPPORT); + config->host_log_custom_nl_proto = + cfg_get(psoc, CFG_HOST_LOG_CUSTOM_NETLINK_PROTO); } #else static void hdd_init_wlan_logging_params(struct hdd_config *config,