perf: Initial commit
Add the base changes for rmnet_perf. CRs-Fixed: 3012130 Change-Id: Ie4d33ebe9457a06661440ea46bd09694b1c44b4c Signed-off-by: Subash Abhinov Kasiviswanathan <quic_subashab@quicinc.com>
This commit is contained in:
@@ -9,6 +9,7 @@ ifneq ($(TARGET_BOARD_AUTO),true)
|
||||
ifeq ($(call is-board-platform-in-list,$(DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST)),true)
|
||||
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_offload.ko
|
||||
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_perf_tether.ko
|
||||
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_perf.ko
|
||||
endif
|
||||
ifeq ($(call is-board-platform-in-list,$(DATA_SHS_DLKM_BOARD_PLATFORMS_LIST)),true)
|
||||
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_shs.ko
|
||||
|
@@ -2,3 +2,4 @@ PRODUCT_PACKAGES += rmnet_offload.ko
|
||||
PRODUCT_PACKAGES += rmnet_shs.ko
|
||||
PRODUCT_PACKAGES += rmnet_wlan.ko
|
||||
PRODUCT_PACKAGES += rmnet_perf_tether.ko
|
||||
PRODUCT_PACKAGES += rmnet_perf.ko
|
||||
|
52
perf/Android.mk
Normal file
52
perf/Android.mk
Normal file
@@ -0,0 +1,52 @@
|
||||
ifneq ($(TARGET_BOARD_AUTO),true)
|
||||
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
|
||||
|
||||
RMNET_PERF_DLKM_PLATFORMS_LIST := taro
|
||||
RMNET_PERF_DLKM_PLATFORMS_LIST += kalama
|
||||
|
||||
ifeq ($(call is-board-platform-in-list, $(RMNET_PERF_DLKM_PLATFORMS_LIST)),true)
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
|
||||
|
||||
LOCAL_MODULE := rmnet_perf.ko
|
||||
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
|
||||
|
||||
#path from build top to the core directory
|
||||
DATARMNET_CORE_PATH := datarmnet/core
|
||||
RMNET_CORE_PATH := vendor/qcom/opensource/$(DATARMNET_CORE_PATH)
|
||||
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
|
||||
#absolute path to the build directory. Can't use $(TOP) here since
|
||||
#that resolves to ., and we pass this to Kbuild, where . is different
|
||||
RMNET_CORE_INC_DIR := $(abspath $(RMNET_CORE_PATH))
|
||||
|
||||
#pass variables down to Kbuild environment
|
||||
KBUILD_OPTIONS := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
|
||||
KBUILD_OPTIONS += RMNET_CORE_PATH=$(RMNET_CORE_PATH)
|
||||
KBUILD_OPTIONS += DATARMNET_CORE_PATH=$(DATARMNET_CORE_PATH)
|
||||
KBUILD_OPTIONS_GKI := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
|
||||
KBUILD_OPTIONS_GKI += RMNET_CORE_PATH=$(RMNET_CORE_PATH)/gki
|
||||
|
||||
#rmnet shs path
|
||||
DATARMNET_SHS_PATH := datarmnet-ext/shs
|
||||
RMNET_SHS_PATH := vendor/qcom/opensource/$(DATARMNET_SHS_PATH)
|
||||
RMNET_SHS_INC_DIR := $(abspath $(RMNET_SHS_PATH))
|
||||
|
||||
#Must be built after the core rmnet and shs module
|
||||
KBUILD_OPTIONS += RMNET_SHS_INC_DIR=$(RMNET_SHS_INC_DIR)
|
||||
KBUILD_OPTIONS += RMNET_SHS_PATH=$(RMNET_SHS_PATH)
|
||||
KBUILD_OPTIONS += DATARMNET_SHS_PATH=$(DATARMNET_SHS_PATH)
|
||||
KBUILD_OPTIONS_GKI += RMNET_SHS_INC_DIR=$(RMNET_SHS_INC_DIR)
|
||||
KBUILD_OPTIONS_GKI += RMNET_SHS_PATH=$(RMNET_SHS_PATH)/gki
|
||||
|
||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/rmnet_core.ko
|
||||
LOCAL_ADDITIONAL_DEPENDENCIES_GKI := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/gki/rmnet_core.ko
|
||||
LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_SHS_PATH)/rmnet_shs.ko
|
||||
LOCAL_ADDITIONAL_DEPENDENCIES_GKI += $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_SHS_PATH)/gki/rmnet_shs.ko
|
||||
|
||||
include $(DLKM_DIR)/Build_external_kernelmodule.mk
|
||||
|
||||
endif #End of check for target
|
||||
endif #End of Check for qssi target
|
||||
endif #End of check for AUTO Target
|
5
perf/Kbuild
Normal file
5
perf/Kbuild
Normal file
@@ -0,0 +1,5 @@
|
||||
obj-m += rmnet_perf.o
|
||||
#Need core headers
|
||||
ccflags-y := -I$(RMNET_CORE_INC_DIR) \
|
||||
$(call cc-option,-Wno-misleading-indentation)
|
||||
rmnet_perf-y := rmnet_perf_main.o
|
11
perf/Kconfig
Normal file
11
perf/Kconfig
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# RMNET_PERF driver
|
||||
#
|
||||
|
||||
menuconfig RMNET_PERF
|
||||
tristate "Rmnet perf support"
|
||||
default m
|
||||
depends on RMNET_CORE
|
||||
depends on RMNET_SHS
|
||||
---help---
|
||||
Performance support for the RmNet driver
|
17
perf/Makefile
Normal file
17
perf/Makefile
Normal file
@@ -0,0 +1,17 @@
|
||||
#By default build for CLD
|
||||
RMNET_PERF_SELECT := CONFIG_RMNET_PERF=m
|
||||
KBUILD_OPTIONS += $(RMNET_PERF_SELECT)
|
||||
KBUILD_OPTIONS += $(KBUILD_EXTRA) # Extra config if any
|
||||
KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_PATH)/Module.symvers
|
||||
KBUILD_EXTRA_SYMBOLS += $(M)/../../$(DATARMNET_SHS_PATH)/Module.symvers
|
||||
|
||||
M ?= $(shell pwd)
|
||||
|
||||
all:
|
||||
$(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS) $(KBUILD_EXTRA_SYMBOLS)
|
||||
|
||||
modules_install:
|
||||
$(MAKE) INSTALL_MOD_STRIP=1 -C $(KERNEL_SRC) M=$(M) modules_install
|
||||
|
||||
clean:
|
||||
$(MAKE) -C $(KERNEL_SRC) M=$(M) clean
|
51
perf/rmnet_perf_main.c
Normal file
51
perf/rmnet_perf_main.c
Normal file
@@ -0,0 +1,51 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* RMNET PERF framework
|
||||
*
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/udp.h>
|
||||
#include <linux/ip.h>
|
||||
#include <linux/ipv6.h>
|
||||
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");extern int(*rmnet_perf_ingress_hook1)
|
||||
(struct sk_buff*DATARMNET543491eb0f);extern void(*rmnet_perf_egress_hook1)(
|
||||
struct sk_buff*DATARMNET543491eb0f);
|
||||
#define DATARMNETf241a4b20f (0xe07+6616-0x2624)
|
||||
static inline bool DATARMNETe1ef3edea2(struct udphdr*DATARMNETa1abb4897c){return
|
||||
be16_to_cpu(DATARMNETa1abb4897c->source)==DATARMNETf241a4b20f||be16_to_cpu(
|
||||
DATARMNETa1abb4897c->dest)==DATARMNETf241a4b20f;}static bool DATARMNET77ab42949f
|
||||
(struct sk_buff*DATARMNET543491eb0f){u8*DATARMNET352416e828,DATARMNETd9bda61912;
|
||||
struct udphdr*DATARMNETa1abb4897c;DATARMNETa1abb4897c=udp_hdr(
|
||||
DATARMNET543491eb0f);if(!DATARMNETe1ef3edea2(DATARMNETa1abb4897c))return false;
|
||||
if(be16_to_cpu(DATARMNETa1abb4897c->len)<sizeof(struct udphdr)+(0xd26+209-0xdf6)
|
||||
)return false;DATARMNET352416e828=skb_header_pointer(DATARMNET543491eb0f,(int)((
|
||||
unsigned char*)DATARMNETa1abb4897c-DATARMNET543491eb0f->data)+sizeof(struct
|
||||
udphdr),(0xd26+209-0xdf6),&DATARMNETd9bda61912);if(!DATARMNET352416e828)return
|
||||
false;return((*DATARMNET352416e828)&(0xbf7+4869-0x1e3c))==(0xbf7+4869-0x1e3c);}
|
||||
int DATARMNETee9214ce9b(struct sk_buff*DATARMNET543491eb0f){if(
|
||||
DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){if(ip_hdr(DATARMNET543491eb0f)->
|
||||
protocol!=IPPROTO_UDP)return-EINVAL;if(DATARMNET77ab42949f(DATARMNET543491eb0f))
|
||||
goto DATARMNET606558916b;return-EINVAL;}if(DATARMNET543491eb0f->protocol==htons(
|
||||
ETH_P_IPV6)){if(ipv6_hdr(DATARMNET543491eb0f)->nexthdr!=IPPROTO_UDP)return-
|
||||
EINVAL;if(DATARMNET77ab42949f(DATARMNET543491eb0f))goto DATARMNET606558916b;}
|
||||
return-EINVAL;DATARMNET606558916b:DATARMNET543491eb0f->hash=(0xd2d+202-0xdf7);
|
||||
DATARMNET543491eb0f->sw_hash=(0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}void
|
||||
DATARMNET05c4bf8af9(struct sk_buff*DATARMNET543491eb0f){if(DATARMNET543491eb0f->
|
||||
protocol==htons(ETH_P_IP)){if(ip_hdr(DATARMNET543491eb0f)->protocol!=IPPROTO_UDP
|
||||
)return;if(DATARMNET77ab42949f(DATARMNET543491eb0f))goto DATARMNETb261f33b7b;}if
|
||||
(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){if(ipv6_hdr(
|
||||
DATARMNET543491eb0f)->nexthdr!=IPPROTO_UDP)return;if(DATARMNET77ab42949f(
|
||||
DATARMNET543491eb0f))goto DATARMNETb261f33b7b;}return;DATARMNETb261f33b7b:
|
||||
DATARMNET543491eb0f->priority=55834;}void DATARMNET49c17a32bc(void){
|
||||
rcu_assign_pointer(rmnet_perf_ingress_hook1,DATARMNETee9214ce9b);
|
||||
rcu_assign_pointer(rmnet_perf_egress_hook1,DATARMNET05c4bf8af9);}void
|
||||
DATARMNET41e8cc085c(void){rcu_assign_pointer(rmnet_perf_ingress_hook1,NULL);
|
||||
rcu_assign_pointer(rmnet_perf_egress_hook1,NULL);}static int __init
|
||||
DATARMNET63abbdc3d3(void){pr_info("%s(): Loading\n",__func__);
|
||||
DATARMNET49c17a32bc();return(0xd2d+202-0xdf7);}static void __exit
|
||||
DATARMNETa343229e33(void){DATARMNET41e8cc085c();pr_info(
|
||||
"\x25\x73\x28\x29\x3a\x20\x65\x78\x69\x74\x69\x6e\x67" "\n",__func__);}
|
||||
module_init(DATARMNET63abbdc3d3);module_exit(DATARMNETa343229e33);
|
Reference in New Issue
Block a user