瀏覽代碼

perf: Initial commit

Add the base changes for rmnet_perf.

CRs-Fixed: 3012130
Change-Id: Ie4d33ebe9457a06661440ea46bd09694b1c44b4c
Signed-off-by: Subash Abhinov Kasiviswanathan <[email protected]>
Subash Abhinov Kasiviswanathan 3 年之前
父節點
當前提交
064186dd0f
共有 7 個文件被更改,包括 138 次插入0 次删除
  1. 1 0
      datarmnet_ext_dlkm_vendor_board.mk
  2. 1 0
      datarmnet_ext_dlkm_vendor_product.mk
  3. 52 0
      perf/Android.mk
  4. 5 0
      perf/Kbuild
  5. 11 0
      perf/Kconfig
  6. 17 0
      perf/Makefile
  7. 51 0
      perf/rmnet_perf_main.c

+ 1 - 0
datarmnet_ext_dlkm_vendor_board.mk

@@ -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

+ 1 - 0
datarmnet_ext_dlkm_vendor_product.mk

@@ -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 - 0
perf/Android.mk

@@ -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 - 0
perf/Kbuild

@@ -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 - 0
perf/Kconfig

@@ -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 - 0
perf/Makefile

@@ -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 - 0
perf/rmnet_perf_main.c

@@ -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);