Преглед изворни кода

rmnet_sch: 1.0

rmnet_sch version 1.0.

Change-Id: Icfe00bf46fcd871c505bf10ec62cad8dae244a9d
Signed-off-by: Weiyi Chen <[email protected]>
Weiyi Chen пре 3 година
родитељ
комит
24af13b650
7 измењених фајлова са 155 додато и 0 уклоњено
  1. 1 0
      datarmnet_ext_dlkm_vendor_board.mk
  2. 1 0
      datarmnet_ext_dlkm_vendor_product.mk
  3. 22 0
      sch/Android.mk
  4. 4 0
      sch/Kbuild
  5. 9 0
      sch/Kconfig
  6. 15 0
      sch/Makefile
  7. 103 0
      sch/rmnet_sch_main.c

+ 1 - 0
datarmnet_ext_dlkm_vendor_board.mk

@@ -19,5 +19,6 @@ BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_wlan.ko
 endif
 ifeq ($(call is-board-platform-in-list,$(DATA_APS_DLKM_BOARD_PLATFORMS_LIST)),true)
 BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_aps.ko
+BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_sch.ko
 endif
 endif

+ 1 - 0
datarmnet_ext_dlkm_vendor_product.mk

@@ -4,3 +4,4 @@ PRODUCT_PACKAGES += rmnet_wlan.ko
 PRODUCT_PACKAGES += rmnet_perf_tether.ko
 PRODUCT_PACKAGES += rmnet_perf.ko
 PRODUCT_PACKAGES += rmnet_aps.ko
+PRODUCT_PACKAGES += rmnet_sch.ko

+ 22 - 0
sch/Android.mk

@@ -0,0 +1,22 @@
+ifneq ($(TARGET_BOARD_AUTO),true)
+ifneq ($(TARGET_BOARD_PLATFORM),qssi)
+
+RMNET_SCH_DLKM_PLATFORMS_LIST := taro
+RMNET_SCH_DLKM_PLATFORMS_LIST += kalama
+
+ifeq ($(call is-board-platform-in-list, $(RMNET_SCH_DLKM_PLATFORMS_LIST)),true)
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
+
+LOCAL_MODULE := rmnet_sch.ko
+LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
+
+DLKM_DIR := $(TOP)/device/qcom/common/dlkm
+
+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

+ 4 - 0
sch/Kbuild

@@ -0,0 +1,4 @@
+obj-m += rmnet_sch.o
+ccflags-y := $(call cc-option,-Wno-misleading-indentation)
+rmnet_sch-y := \
+        rmnet_sch_main.o \

+ 9 - 0
sch/Kconfig

@@ -0,0 +1,9 @@
+#
+# RMNET_SCH driver
+#
+
+menuconfig RMNET_SCH
+    tristate "Rmnet SCH Qdisc support"
+    default m
+    ---help---
+        QDisc module for RmNet driver

+ 15 - 0
sch/Makefile

@@ -0,0 +1,15 @@
+#By default build for CLD
+RMNET_SCH_SELECT := CONFIG_RMNET_SCH=m
+KBUILD_OPTIONS += $(RMNET_SCH_SELECT)
+KBUILD_OPTIONS += $(KBUILD_EXTRA) # Extra config if any
+
+M ?= $(shell pwd)
+
+all:
+	$(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS)
+
+modules_install:
+	$(MAKE) INSTALL_MOD_STRIP=1 -C $(KERNEL_SRC) M=$(M) modules_install
+
+clean:
+	$(MAKE) -C $(KERNEL_SRC) M=$(M) clean

+ 103 - 0
sch/rmnet_sch_main.c

@@ -0,0 +1,103 @@
+/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/kernel.h>
+#include <linux/string.h>
+#include <linux/errno.h>
+#include <linux/skbuff.h>
+#include <linux/rtnetlink.h>
+#include <net/pkt_sched.h>
+static const char*DATARMNETf1bb41174a="\x31\x2e\x30";
+#define DATARMNETe632b2e0b0 (0xd11+230-0xdf3)
+static const u8 DATARMNET93bdeed8cb[TC_PRIO_MAX+(0xd26+209-0xdf6)]={
+(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4),
+(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd2d+202-0xdf7),(0xd26+209-0xdf6),
+(0xd1f+216-0xdf5),(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4),
+(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4)};static 
+const int DATARMNET91bbdde74c[DATARMNETe632b2e0b0]={(0xbf7+4421-0x1c3c)*
+(0xdf7+2629-0x143c),(0xef7+694-0x112d)*(0xdf7+2629-0x143c),(0xef7+1142-0x132d)*
+(0xdf7+2629-0x143c),(0xeb7+1174-0x132d)*(0xdf7+2629-0x143c)};static const int 
+DATARMNET9dd1382d86[DATARMNETe632b2e0b0]={(0xd35+210-0xdff),(0xd03+244-0xdf1),
+(0xd11+230-0xdf3),(0xd1f+216-0xdf5)};struct DATARMNET74e95d25df{struct 
+qdisc_skb_head DATARMNETb4180393e4[DATARMNETe632b2e0b0];int DATARMNET1de7b3d891[
+DATARMNETe632b2e0b0];int DATARMNETf9afebb887[DATARMNETe632b2e0b0];};static int 
+DATARMNET3a797cc4e9(struct sk_buff*DATARMNET543491eb0f,struct Qdisc*
+DATARMNET9b0193c8c4,struct sk_buff**DATARMNET6af05df5b3){struct 
+DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(DATARMNET9b0193c8c4);unsigned
+ int DATARMNET5affe290b8=qdisc_pkt_len(DATARMNET543491eb0f);struct 
+qdisc_skb_head*q;if(likely(DATARMNET9b0193c8c4->q.qlen<qdisc_dev(
+DATARMNET9b0193c8c4)->tx_queue_len)){q=&DATARMNETe823dcf978->DATARMNETb4180393e4
+[DATARMNET93bdeed8cb[DATARMNET543491eb0f->priority&TC_PRIO_MAX]];
+__qdisc_enqueue_tail(DATARMNET543491eb0f,q);qdisc_update_stats_at_enqueue(
+DATARMNET9b0193c8c4,DATARMNET5affe290b8);return NET_XMIT_SUCCESS;}return 
+qdisc_drop(DATARMNET543491eb0f,DATARMNET9b0193c8c4,DATARMNET6af05df5b3);}static 
+u8 DATARMNETf9ac3daa83(struct DATARMNET74e95d25df*DATARMNETe823dcf978){int 
+DATARMNET2372d14a3d,DATARMNET70fa801d65=DATARMNETe632b2e0b0;for(
+DATARMNET2372d14a3d=(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;
+DATARMNET2372d14a3d++){if(!DATARMNETe823dcf978->DATARMNETb4180393e4[
+DATARMNET2372d14a3d].qlen)continue;if(DATARMNETe823dcf978->DATARMNET1de7b3d891[
+DATARMNET2372d14a3d]<=(0xd2d+202-0xdf7)||DATARMNETe823dcf978->
+DATARMNETf9afebb887[DATARMNET2372d14a3d]<=(0xd2d+202-0xdf7)){if(
+DATARMNET2372d14a3d<DATARMNET70fa801d65)DATARMNET70fa801d65=DATARMNET2372d14a3d;
+continue;}return DATARMNET2372d14a3d;}for(DATARMNET2372d14a3d=(0xd2d+202-0xdf7);
+DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++){
+DATARMNETe823dcf978->DATARMNET1de7b3d891[DATARMNET2372d14a3d]=
+DATARMNET9dd1382d86[DATARMNET2372d14a3d];DATARMNETe823dcf978->
+DATARMNETf9afebb887[DATARMNET2372d14a3d]=DATARMNET91bbdde74c[DATARMNET2372d14a3d
+];}return DATARMNET70fa801d65;}static struct sk_buff*DATARMNET11bbc6360d(struct 
+Qdisc*DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=
+qdisc_priv(DATARMNET9b0193c8c4);struct sk_buff*DATARMNET543491eb0f=NULL;u8 
+DATARMNET2372d14a3d;DATARMNET2372d14a3d=DATARMNETf9ac3daa83(DATARMNETe823dcf978)
+;if(DATARMNET2372d14a3d<DATARMNETe632b2e0b0){DATARMNET543491eb0f=
+__qdisc_dequeue_head(&DATARMNETe823dcf978->DATARMNETb4180393e4[
+DATARMNET2372d14a3d]);if(likely(DATARMNET543491eb0f)){DATARMNETe823dcf978->
+DATARMNET1de7b3d891[DATARMNET2372d14a3d]--;DATARMNETe823dcf978->
+DATARMNETf9afebb887[DATARMNET2372d14a3d]-=qdisc_pkt_len(DATARMNET543491eb0f);
+qdisc_update_stats_at_dequeue(DATARMNET9b0193c8c4,DATARMNET543491eb0f);}}return 
+DATARMNET543491eb0f;}static struct sk_buff*DATARMNET5842e6aac7(struct Qdisc*
+DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(
+DATARMNET9b0193c8c4);struct sk_buff*DATARMNET543491eb0f=NULL;u8 
+DATARMNET2372d14a3d;DATARMNET2372d14a3d=DATARMNETf9ac3daa83(DATARMNETe823dcf978)
+;if(DATARMNET2372d14a3d<DATARMNETe632b2e0b0)DATARMNET543491eb0f=
+DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].head;return 
+DATARMNET543491eb0f;}static int DATARMNET757a7de682(struct Qdisc*
+DATARMNET9b0193c8c4,struct nlattr*DATARMNET8bdeb8bf5c,struct netlink_ext_ack*
+DATARMNET79a1f177ed){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(
+DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(DATARMNET2372d14a3d=
+(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
+{qdisc_skb_head_init(&DATARMNETe823dcf978->DATARMNETb4180393e4[
+DATARMNET2372d14a3d]);DATARMNETe823dcf978->DATARMNET1de7b3d891[
+DATARMNET2372d14a3d]=DATARMNET9dd1382d86[DATARMNET2372d14a3d];
+DATARMNETe823dcf978->DATARMNETf9afebb887[DATARMNET2372d14a3d]=
+DATARMNET91bbdde74c[DATARMNET2372d14a3d];}DATARMNET9b0193c8c4->flags|=
+TCQ_F_CAN_BYPASS;return(0xd2d+202-0xdf7);}static void DATARMNET9593ab9587(struct
+ Qdisc*DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=
+qdisc_priv(DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(DATARMNET2372d14a3d=
+(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
+{kfree_skb_list(DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
+head);qdisc_skb_head_init(&DATARMNETe823dcf978->DATARMNETb4180393e4[
+DATARMNET2372d14a3d]);DATARMNETe823dcf978->DATARMNET1de7b3d891[
+DATARMNET2372d14a3d]=DATARMNET9dd1382d86[DATARMNET2372d14a3d];
+DATARMNETe823dcf978->DATARMNETf9afebb887[DATARMNET2372d14a3d]=
+DATARMNET91bbdde74c[DATARMNET2372d14a3d];}}static struct Qdisc_ops 
+DATARMNET9afaec21de __read_mostly={.id="\x72\x6d\x6e\x65\x74\x5f\x73\x63\x68",.
+priv_size=sizeof(struct DATARMNET74e95d25df),.enqueue=DATARMNET3a797cc4e9,.
+dequeue=DATARMNET11bbc6360d,.peek=DATARMNET5842e6aac7,.init=DATARMNET757a7de682,
+.reset=DATARMNET9593ab9587,.owner=THIS_MODULE,};static int __init 
+DATARMNETe97da0a844(void){pr_info(
+"\x73\x63\x68\x3a\x20\x69\x6e\x69\x74\x20\x28\x25\x73\x29" "\n",
+DATARMNETf1bb41174a);return register_qdisc(&DATARMNET9afaec21de);}static void 
+__exit DATARMNET1dc9099e88(void){unregister_qdisc(&DATARMNET9afaec21de);}
+MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");module_init(DATARMNETe97da0a844);
+module_exit(DATARMNET1dc9099e88);