diff --git a/qcom/opensource/datarmnet-ext/aps/Android.mk b/qcom/opensource/datarmnet-ext/aps/Android.mk new file mode 100644 index 0000000000..06610df3a2 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/aps/Android.mk @@ -0,0 +1,34 @@ +ifneq ($(TARGET_BOARD_AUTO),true) +ifneq ($(TARGET_BOARD_PLATFORM),qssi) + +RMNET_APS_DLKM_PLATFORMS_LIST := taro +RMNET_APS_DLKM_PLATFORMS_LIST += parrot + +ifeq ($(call is-board-platform-in-list, $(RMNET_APS_DLKM_PLATFORMS_LIST)),true) +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) +LOCAL_MODULE := rmnet_aps.ko +LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) +LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*) + +DATARMNET_CORE_PATH := datarmnet/core +RMNET_CORE_PATH := vendor/qcom/opensource/$(DATARMNET_CORE_PATH) +DLKM_DIR := $(TOP)/device/qcom/common/dlkm +RMNET_CORE_INC_DIR := $(abspath $(RMNET_CORE_PATH)) + +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 + +#Must be built after the core rmnet module +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 + +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 diff --git a/qcom/opensource/datarmnet-ext/aps/Kbuild b/qcom/opensource/datarmnet-ext/aps/Kbuild new file mode 100644 index 0000000000..0209715abe --- /dev/null +++ b/qcom/opensource/datarmnet-ext/aps/Kbuild @@ -0,0 +1,6 @@ +obj-m += rmnet_aps.o +ccflags-y := -I$(RMNET_CORE_INC_DIR) \ + $(call cc-option,-Wno-misleading-indentation) +rmnet_aps-y := \ + rmnet_aps_main.o \ + rmnet_aps_genl.o diff --git a/qcom/opensource/datarmnet-ext/aps/Kconfig b/qcom/opensource/datarmnet-ext/aps/Kconfig new file mode 100644 index 0000000000..01263767f8 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/aps/Kconfig @@ -0,0 +1,9 @@ +# +# RMNET_APS drivers +# + +menuconfig RMNET_APS + tristate "Rmnet APS support" + default m + ---help--- + Apps prioritization module for RmNet driver diff --git a/qcom/opensource/datarmnet-ext/aps/Makefile b/qcom/opensource/datarmnet-ext/aps/Makefile new file mode 100644 index 0000000000..3b150c8cd1 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/aps/Makefile @@ -0,0 +1,16 @@ +#By default build for CLD +RMNET_APS_SELECT := CONFIG_RMNET_APS=m +KBUILD_OPTIONS += $(RMNET_APS_SELECT) +KBUILD_OPTIONS += $(KBUILD_EXTRA) # Extra config if any +KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_PATH)/Module.symvers + +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 diff --git a/qcom/opensource/datarmnet-ext/aps/rmnet_aps.h b/qcom/opensource/datarmnet-ext/aps/rmnet_aps.h new file mode 100644 index 0000000000..cd1b96d914 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/aps/rmnet_aps.h @@ -0,0 +1,28 @@ +/* Copyright (c) 2021. 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. + */ + +#ifndef DATARMNETa70542332d +#define DATARMNETa70542332d +#include +#include +#ifdef DATARMNETd7ef88d6df +#define DATARMNET112d724eff(...) pr_err(__VA_ARGS__) +#else +#define DATARMNET112d724eff(...) +#endif +struct DATARMNET5d4139d9d7{u32 cmd;u32 DATARMNETbb588401ec;u32 +DATARMNET655f822a62;u32 ifindex;u8 DATARMNET6c2cba039d;u8 DATARMNET626c626b74;u8 + DATARMNET40bb1d945b;u8 DATARMNETecca9147fd;};struct DATARMNETca79857d4a{u32 cmd +;u32 DATARMNETe65883bfce;u32 DATARMNETbb588401ec;};int DATARMNET37a9efbbcb( +struct sk_buff*DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff); +#endif + diff --git a/qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.c b/qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.c new file mode 100644 index 0000000000..0122705d60 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.c @@ -0,0 +1,32 @@ +/* Copyright (c) 2021. 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 "rmnet_aps_genl.h" +#include "rmnet_aps.h" +static struct nla_policy DATARMNET157d4c7a8a[DATARMNET3b044438b9+ +(0xd26+209-0xdf6)]={[DATARMNET98b93f2e86]=NLA_POLICY_EXACT_LEN(sizeof(struct +DATARMNET5d4139d9d7)),[DATARMNET818a0b6438]=NLA_POLICY_EXACT_LEN(sizeof(struct +DATARMNETca79857d4a)),}; +#define DATARMNET7dc6237681(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e)\ + \ + { \ + .cmd = DATARMNET5aeb0ef9bc, .doit = DATARMNETbd9859b58e, .dumpit = NULL, .\ +flags = (0xd2d+202-0xdf7), \ + } +static const struct genl_ops DATARMNET27a52625e4[]={DATARMNET7dc6237681( +DATARMNET15437be67e,DATARMNET37a9efbbcb),};struct genl_family +DATARMNETcdba30eca9={.hdrsize=(0xd2d+202-0xdf7),.name=DATARMNETa4a6e34e45,. +version=DATARMNET33d1a3e23a,.maxattr=DATARMNET3b044438b9,.policy= +DATARMNET157d4c7a8a,.ops=DATARMNET27a52625e4,.n_ops=ARRAY_SIZE( +DATARMNET27a52625e4),};int DATARMNETcfa8d492f8(void){return genl_register_family +(&DATARMNETcdba30eca9);}void DATARMNETca7606cfd1(void){genl_unregister_family(& +DATARMNETcdba30eca9);} diff --git a/qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.h b/qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.h new file mode 100644 index 0000000000..1a5e2ff89d --- /dev/null +++ b/qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.h @@ -0,0 +1,24 @@ +/* Copyright (c) 2021. 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. + */ + +#ifndef DATARMNET975050c527 +#define DATARMNET975050c527 +#include +#define DATARMNET33d1a3e23a (0xd26+209-0xdf6) +#define DATARMNETa4a6e34e45 "\x52\x4d\x4e\x45\x54\x5f\x41\x50\x53" +enum{DATARMNETeafde44f15,DATARMNET15437be67e,DATARMNET4ac82df478,};enum{ +DATARMNET900754429d,DATARMNET98b93f2e86,DATARMNET818a0b6438,DATARMNET074e71007e, +}; +#define DATARMNET3b044438b9 (DATARMNET074e71007e - (0xd26+209-0xdf6)) +int DATARMNETcfa8d492f8(void);void DATARMNETca7606cfd1(void); +#endif + diff --git a/qcom/opensource/datarmnet-ext/aps/rmnet_aps_main.c b/qcom/opensource/datarmnet-ext/aps/rmnet_aps_main.c new file mode 100644 index 0000000000..91293b52b0 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/aps/rmnet_aps_main.c @@ -0,0 +1,294 @@ +/* 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 +#include +#include +#include +#include +#include "rmnet_config.h" +#include "rmnet_aps.h" +#include "rmnet_aps_genl.h" +static char*verinfo[]={"\x37\x34\x31\x35\x39\x32\x31\x63", +"\x39\x66\x36\x36\x38\x31\x62\x34"};module_param_array(verinfo,charp,NULL, +(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo, +"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72" +); +#define DATARMNET63ff5c35c2 (0xd26+209-0xdf6) +#define DATARMNETceae994093 (0xd1f+216-0xdf5) +#define DATARMNET3412b803e1 (0xd18+223-0xdf4) +#define DATARMNET1efd633004 (0xd11+230-0xdf3) +#define DATARMNETdc217f1b29 (0xd0a+237-0xdf2) +#define DATARMNETee209ff1f9 (0xd26+209-0xdf6) +#define DATARMNET24e4186a83 (0xd1f+216-0xdf5) +#define DATARMNET94016043b8 (0xd18+223-0xdf4) +#define DATARMNET50dac65bef (0xd2d+202-0xdf7) +#define DATARMNETe1763a8705 (0xbf7+4364-0x1c04) +#define DATARMNET3bc5e7094a (0xd0a+237-0xdf2) +#define DATARMNET810b8d04cd 55932 +#define DATARMNET7b5bbaa047 ((0xd18+223-0xdf4)) +#define DATARMNETfd026b105a (DATARMNET7b5bbaa047 * HZ) +#define DATARMNET65d0d735fa ((0xdf7+6169-0x241c) * (0xdf7+2629-0x143c) * \ +(0xdf7+2629-0x143c) / (0xd35+210-0xdff) * DATARMNET7b5bbaa047) +#define DATARMNETb8ab933cae ((0xc07+4861-0x1e3c) * (0xdf7+2629-0x143c) * \ +(0xdf7+2629-0x143c) / (0xd35+210-0xdff) * DATARMNET7b5bbaa047) +static const char*DATARMNETe5ef0e617c="\x31\x2e\x30";static u16 +DATARMNET2fe4661b82=DATARMNET810b8d04cd;static struct genl_info +DATARMNET7d98961cbe;static u32 DATARMNETfef55eaf9a;static u8 DATARMNET9628311a6b +[DATARMNET3bc5e7094a]={(0xd2d+202-0xdf7),(0xd03+244-0xdf1),(0xcfc+267-0xe00), +(0xd35+210-0xdff),9};static DEFINE_SPINLOCK(DATARMNET33bd4139f4);static +DEFINE_HASHTABLE(DATARMNET2ee773c365,(0xd0a+237-0xdf2));static LIST_HEAD( +DATARMNET7520901fb5);struct DATARMNET6fd48c33f6{struct hlist_node hash_list; +struct list_head DATARMNETed4d7b4a3c;struct DATARMNET5d4139d9d7 +DATARMNET54338da2ff;u32 DATARMNET556cdfb5eb;u32 DATARMNETee01ad514b;unsigned +long expires;u64 DATARMNETa27e524d8a;bool DATARMNET626c626b74;bool +DATARMNET40bb1d945b;};extern void(*rmnet_aps_set_prio)(struct net_device* +DATARMNET413e8dcf7b,struct sk_buff*DATARMNET543491eb0f);extern struct +genl_family DATARMNETcdba30eca9;static void DATARMNET30dd480cad(struct +net_device*DATARMNET413e8dcf7b,struct sk_buff*DATARMNET543491eb0f);static void +DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 DATARMNETf8bbe3b0fb);static void +DATARMNETf844db79d9(struct timer_list*DATARMNET6e4292679f);static DEFINE_TIMER( +DATARMNETd21629e047,DATARMNETf844db79d9);static void DATARMNET5979020f87(struct +work_struct*DATARMNET33110a3ff5);static DECLARE_DELAYED_WORK(DATARMNET3481998252 +,DATARMNET5979020f87);static int DATARMNET998f6cbce7(struct notifier_block* +DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*DATARMNETaef95eabe8); +static struct notifier_block DATARMNETc580548769 __read_mostly={.notifier_call= +DATARMNET998f6cbce7,.priority=(0xd1f+216-0xdf5),};static struct +DATARMNET6fd48c33f6*DATARMNET3ed11fdc8d(u32 DATARMNETbb588401ec){struct +DATARMNET6fd48c33f6*DATARMNETaa568481cf;hash_for_each_possible( +DATARMNET2ee773c365,DATARMNETaa568481cf,hash_list,DATARMNETbb588401ec){if( +DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec== +DATARMNETbb588401ec)return DATARMNETaa568481cf;}return NULL;}static void +DATARMNET1e616c2160(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){hash_add( +DATARMNET2ee773c365,&DATARMNETaa568481cf->hash_list,DATARMNETaa568481cf-> +DATARMNET54338da2ff.DATARMNETbb588401ec);list_add(&DATARMNETaa568481cf-> +DATARMNETed4d7b4a3c,&DATARMNET7520901fb5);DATARMNETfef55eaf9a++;if( +DATARMNETaa568481cf->expires){if(!timer_pending(&DATARMNETd21629e047)|| +time_before(DATARMNETaa568481cf->expires,DATARMNETd21629e047.expires))mod_timer( +&DATARMNETd21629e047,DATARMNETaa568481cf->expires);}if(DATARMNETfef55eaf9a== +(0xd26+209-0xdf6))WRITE_ONCE(rmnet_aps_set_prio,DATARMNET30dd480cad);}static +void DATARMNET7fa3dd63cb(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){ +hash_del(&DATARMNETaa568481cf->hash_list);list_del(&DATARMNETaa568481cf-> +DATARMNETed4d7b4a3c);if(likely(DATARMNETfef55eaf9a))DATARMNETfef55eaf9a--;else +DATARMNET112d724eff("aps: flow count is aleady 0\n");if(!DATARMNETfef55eaf9a){ +WRITE_ONCE(rmnet_aps_set_prio,NULL);del_timer(&DATARMNETd21629e047);}kfree( +DATARMNETaa568481cf);}static void DATARMNET9ac8a34003(void){struct +DATARMNET6fd48c33f6*DATARMNETaa568481cf,*DATARMNETaf503e06a5;struct hlist_node* +DATARMNET0386f6f82a;int DATARMNET5c2fd31d7b;del_timer(&DATARMNETd21629e047); +list_for_each_entry_safe(DATARMNETaa568481cf,DATARMNETaf503e06a5,& +DATARMNET7520901fb5,DATARMNETed4d7b4a3c){list_del(&DATARMNETaa568481cf-> +DATARMNETed4d7b4a3c);}hash_for_each_safe(DATARMNET2ee773c365,DATARMNET5c2fd31d7b +,DATARMNET0386f6f82a,DATARMNETaa568481cf,hash_list){hash_del(& +DATARMNETaa568481cf->hash_list);kfree(DATARMNETaa568481cf);}DATARMNETfef55eaf9a= +(0xd2d+202-0xdf7);WRITE_ONCE(rmnet_aps_set_prio,NULL);DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x61\x6c\x6c\x20\x66\x6c\x6f\x77\x73\x20\x72\x65\x6d\x6f\x76\x65\x64" "\n" +);}static void DATARMNET250448eb06(int ifindex){struct DATARMNET6fd48c33f6* +DATARMNETaa568481cf;struct hlist_node*DATARMNET0386f6f82a;int +DATARMNET5c2fd31d7b;hash_for_each_safe(DATARMNET2ee773c365,DATARMNET5c2fd31d7b, +DATARMNET0386f6f82a,DATARMNETaa568481cf,hash_list){if(DATARMNETaa568481cf-> +DATARMNET54338da2ff.ifindex==ifindex){DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x64\x6f\x77\x6e" "\n" +,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec); +DATARMNET446f780f19(DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec +,DATARMNET24e4186a83);DATARMNET7fa3dd63cb(DATARMNETaa568481cf);}}}static void +DATARMNETf844db79d9(struct timer_list*DATARMNET6e4292679f){struct +DATARMNET6fd48c33f6*DATARMNETaa568481cf;struct hlist_node*DATARMNET0386f6f82a; +unsigned long DATARMNET02dfdbc38d=jiffies;unsigned long DATARMNET2cf3deab22;int +DATARMNET5c2fd31d7b;u32 DATARMNETbb588401ec;DATARMNET2cf3deab22= +DATARMNET02dfdbc38d;spin_lock_bh(&DATARMNET33bd4139f4);hash_for_each_safe( +DATARMNET2ee773c365,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,DATARMNETaa568481cf, +hash_list){if(!DATARMNETaa568481cf->expires)continue;if(time_before_eq( +DATARMNETaa568481cf->expires,DATARMNET02dfdbc38d)){DATARMNETbb588401ec= +DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec;DATARMNET112d724eff +( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x65\x78\x70\x69\x72\x65\x64" "\n" +,DATARMNETbb588401ec);DATARMNET7fa3dd63cb(DATARMNETaa568481cf); +DATARMNET446f780f19(DATARMNETbb588401ec,DATARMNETee209ff1f9);}else if( +DATARMNET2cf3deab22==DATARMNET02dfdbc38d||time_before(DATARMNETaa568481cf-> +expires,DATARMNET2cf3deab22)){DATARMNET2cf3deab22=DATARMNETaa568481cf->expires;} +}if(DATARMNET2cf3deab22!=DATARMNET02dfdbc38d)mod_timer(&DATARMNETd21629e047, +DATARMNET2cf3deab22);spin_unlock_bh(&DATARMNET33bd4139f4);}static void +DATARMNET3281082da4(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){ +DATARMNETaa568481cf->DATARMNET556cdfb5eb=RMNET_APS_MAJOR<<(0xeb7+1158-0x132d);if +(DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNET6c2cba039d>= +DATARMNET3bc5e7094a)DATARMNETaa568481cf->DATARMNET556cdfb5eb|= +DATARMNET9628311a6b[(0xd2d+202-0xdf7)];else DATARMNETaa568481cf-> +DATARMNET556cdfb5eb|=DATARMNET9628311a6b[DATARMNETaa568481cf-> +DATARMNET54338da2ff.DATARMNET6c2cba039d];if(DATARMNETaa568481cf-> +DATARMNET626c626b74)DATARMNETaa568481cf->DATARMNET556cdfb5eb|=RMNET_APS_LLC_MASK +;if(DATARMNETaa568481cf->DATARMNET40bb1d945b)DATARMNETaa568481cf-> +DATARMNET556cdfb5eb|=RMNET_APS_LLB_MASK;}static int DATARMNET772c0b87c5(void* +DATARMNETe823dcf978,struct list_head*DATARMNET9cf7d31274,struct list_head* +DATARMNET5444bd3b6f){struct DATARMNET6fd48c33f6*DATARMNET40e125212a;struct +DATARMNET6fd48c33f6*DATARMNETdcaff77beb;DATARMNET40e125212a=list_entry( +DATARMNET9cf7d31274,struct DATARMNET6fd48c33f6,DATARMNETed4d7b4a3c); +DATARMNETdcaff77beb=list_entry(DATARMNET5444bd3b6f,struct DATARMNET6fd48c33f6, +DATARMNETed4d7b4a3c);return DATARMNET40e125212a->DATARMNETa27e524d8a> +DATARMNETdcaff77beb->DATARMNETa27e524d8a;}static void DATARMNET5979020f87(struct + work_struct*DATARMNET33110a3ff5){struct DATARMNET6fd48c33f6*DATARMNETaa568481cf +;u64 DATARMNETf78537d374=(0xd2d+202-0xdf7);u64 DATARMNETd39b09fa66= +(0xd2d+202-0xdf7);u64 DATARMNETedd419d6e2;bool DATARMNETd3eb49eab3=false; +spin_lock_bh(&DATARMNET33bd4139f4);list_sort(NULL,&DATARMNET7520901fb5, +DATARMNET772c0b87c5);list_for_each_entry(DATARMNETaa568481cf,& +DATARMNET7520901fb5,DATARMNETed4d7b4a3c){if(DATARMNETaa568481cf-> +DATARMNET54338da2ff.DATARMNET626c626b74){DATARMNETedd419d6e2=DATARMNETf78537d374 ++DATARMNETaa568481cf->DATARMNETa27e524d8a;if(DATARMNETedd419d6e2< +DATARMNET65d0d735fa){DATARMNETaa568481cf->DATARMNET626c626b74=true; +DATARMNETaa568481cf->DATARMNET556cdfb5eb|=RMNET_APS_LLC_MASK;DATARMNETf78537d374 +=DATARMNETedd419d6e2;}else{DATARMNETaa568481cf->DATARMNET626c626b74=false; +DATARMNETaa568481cf->DATARMNET556cdfb5eb&=~RMNET_APS_LLC_MASK;} +DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x74\x78\x5f\x62\x79\x74\x65\x73\x20\x25\x6c\x6c\x75\x20\x6c\x6c\x63\x20\x25\x64\x20\x6c\x6c\x63\x5f\x62\x79\x74\x65\x73\x20" +"\x25\x6c\x6c\x75" "\n",DATARMNETaa568481cf->DATARMNET54338da2ff. +DATARMNETbb588401ec,DATARMNETaa568481cf->DATARMNETa27e524d8a,DATARMNETaa568481cf +->DATARMNET626c626b74,DATARMNETf78537d374);}if(DATARMNETaa568481cf-> +DATARMNET54338da2ff.DATARMNET40bb1d945b){DATARMNETedd419d6e2=DATARMNETd39b09fa66 ++DATARMNETaa568481cf->DATARMNETa27e524d8a;if(DATARMNETedd419d6e2< +DATARMNETb8ab933cae){DATARMNETaa568481cf->DATARMNET40bb1d945b=true; +DATARMNETaa568481cf->DATARMNET556cdfb5eb|=RMNET_APS_LLB_MASK;DATARMNETd39b09fa66 +=DATARMNETedd419d6e2;}else{DATARMNETaa568481cf->DATARMNET40bb1d945b=false; +DATARMNETaa568481cf->DATARMNET556cdfb5eb&=~RMNET_APS_LLB_MASK;} +DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x74\x78\x5f\x62\x79\x74\x65\x73\x20\x25\x6c\x6c\x75\x20\x6c\x6c\x62\x20\x25\x64\x20\x6c\x6c\x62\x5f\x62\x79\x74\x65\x73\x20" +"\x25\x6c\x6c\x75" "\n",DATARMNETaa568481cf->DATARMNET54338da2ff. +DATARMNETbb588401ec,DATARMNETaa568481cf->DATARMNETa27e524d8a,DATARMNETaa568481cf +->DATARMNET40bb1d945b,DATARMNETd39b09fa66);}if(DATARMNETaa568481cf-> +DATARMNETa27e524d8a){DATARMNETd3eb49eab3=true;DATARMNETaa568481cf-> +DATARMNETa27e524d8a=(0xd2d+202-0xdf7);}}spin_unlock_bh(&DATARMNET33bd4139f4);if( +DATARMNETd3eb49eab3)schedule_delayed_work(&DATARMNET3481998252, +DATARMNETfd026b105a);}static int DATARMNET82d65f9ca6(struct DATARMNET5d4139d9d7* +DATARMNETddcafd8b91){struct DATARMNET6fd48c33f6*DATARMNETaa568481cf; +DATARMNETaa568481cf=DATARMNET3ed11fdc8d(DATARMNETddcafd8b91->DATARMNETbb588401ec +);if(DATARMNETddcafd8b91->cmd==DATARMNET3412b803e1){if(DATARMNETaa568481cf){ +DATARMNET7fa3dd63cb(DATARMNETaa568481cf);DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x72\x65\x6d\x6f\x76\x65\x64\x2c\x20\x63\x6e\x74\x20\x25\x75" "\n" +,DATARMNETddcafd8b91->DATARMNETbb588401ec,DATARMNETfef55eaf9a);}else{ +DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x72\x65\x6d\x6f\x76\x65\x64" "\n" +,DATARMNETddcafd8b91->DATARMNETbb588401ec);}return(0xd2d+202-0xdf7);}if( +DATARMNETddcafd8b91->cmd==DATARMNETceae994093&&DATARMNETaa568481cf){ +DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x72\x65\x6d\x6f\x76\x65\x20\x62\x65\x66\x6f\x72\x65\x20\x61\x64\x64" "\n" +,DATARMNETddcafd8b91->DATARMNETbb588401ec);DATARMNET7fa3dd63cb( +DATARMNETaa568481cf);DATARMNETaa568481cf=NULL;}if(!DATARMNETaa568481cf){if( +DATARMNETfef55eaf9a>=DATARMNETe1763a8705){DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x63\x6f\x75\x6e\x74\x20\x25\x75\x20\x65\x78\x63\x65\x65\x64\x73\x20\x6d\x61\x78" "\n" +,DATARMNETfef55eaf9a);return-EINVAL;}DATARMNETaa568481cf=kzalloc(sizeof(* +DATARMNETaa568481cf),GFP_ATOMIC);if(!DATARMNETaa568481cf){DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x6d\x65\x6d\x6f\x72\x79" "\n");return-ENOMEM;} +memcpy(&DATARMNETaa568481cf->DATARMNET54338da2ff,DATARMNETddcafd8b91,sizeof( +DATARMNETaa568481cf->DATARMNET54338da2ff));DATARMNETaa568481cf-> +DATARMNET626c626b74=DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNET626c626b74 +;DATARMNETaa568481cf->DATARMNET40bb1d945b=DATARMNETaa568481cf-> +DATARMNET54338da2ff.DATARMNET40bb1d945b;DATARMNET3281082da4(DATARMNETaa568481cf) +;if(DATARMNETddcafd8b91->DATARMNET655f822a62){DATARMNETaa568481cf-> +DATARMNETee01ad514b=DATARMNETddcafd8b91->DATARMNET655f822a62*HZ; +DATARMNETaa568481cf->expires=jiffies+DATARMNETaa568481cf->DATARMNETee01ad514b;} +DATARMNET1e616c2160(DATARMNETaa568481cf);DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x61\x64\x64\x65\x64\x2c\x20\x63\x6e\x74\x20\x25\x75" "\n" +,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec, +DATARMNETfef55eaf9a);}else{memcpy(&DATARMNETaa568481cf->DATARMNET54338da2ff, +DATARMNETddcafd8b91,sizeof(DATARMNETaa568481cf->DATARMNET54338da2ff)); +DATARMNETaa568481cf->DATARMNET626c626b74=DATARMNETaa568481cf-> +DATARMNET54338da2ff.DATARMNET626c626b74;DATARMNETaa568481cf->DATARMNET40bb1d945b +=DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNET40bb1d945b; +DATARMNET3281082da4(DATARMNETaa568481cf);DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x75\x70\x64\x61\x74\x65\x64\x2c\x20\x63\x6e\x74\x20\x25\x75" "\n" +,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec, +DATARMNETfef55eaf9a);}return(0xd2d+202-0xdf7);}static int DATARMNET1d51fe00f2( +struct genl_info*DATARMNET54338da2ff,struct DATARMNETca79857d4a* +DATARMNETa13fcf9070,gfp_t flags){struct sk_buff*DATARMNET543491eb0f;void* +DATARMNETd7f97e2e5a;int DATARMNETb14e52a504;if(!DATARMNET54338da2ff||! +DATARMNETa13fcf9070)return-EINVAL;DATARMNET543491eb0f=genlmsg_new(sizeof(* +DATARMNETa13fcf9070),flags);if(!DATARMNET543491eb0f)goto DATARMNETbf4095f79e; +DATARMNETd7f97e2e5a=genlmsg_put(DATARMNET543491eb0f,(0xd2d+202-0xdf7), +DATARMNET54338da2ff->snd_seq+(0xd26+209-0xdf6),&DATARMNETcdba30eca9, +(0xd2d+202-0xdf7),DATARMNET15437be67e);if(!DATARMNETd7f97e2e5a)goto +DATARMNETbf4095f79e;DATARMNETb14e52a504=nla_put(DATARMNET543491eb0f, +DATARMNET818a0b6438,sizeof(*DATARMNETa13fcf9070),DATARMNETa13fcf9070);if( +DATARMNETb14e52a504!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;genlmsg_end( +DATARMNET543491eb0f,DATARMNETd7f97e2e5a);DATARMNETb14e52a504=genlmsg_unicast( +genl_info_net(DATARMNET54338da2ff),DATARMNET543491eb0f,DATARMNET54338da2ff-> +snd_portid);if(DATARMNETb14e52a504!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e; +return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:DATARMNET112d724eff("\x25\x73", +"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x61\x70\x73\x20\x61\x64\x64\x20\x66\x6c\x6f\x77\x20\x72\x65\x73\x70" "\n" +);return-EFAULT;}static void DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 +DATARMNETf8bbe3b0fb){struct DATARMNETca79857d4a DATARMNETa13fcf9070;if(! +DATARMNET7d98961cbe.snd_portid){DATARMNET112d724eff( +"\x61\x70\x73\x20\x63\x6c\x69\x65\x6e\x74\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64" "\n" +);return;}DATARMNETa13fcf9070.cmd=DATARMNETdc217f1b29;DATARMNETa13fcf9070. +DATARMNETe65883bfce=DATARMNETf8bbe3b0fb;DATARMNETa13fcf9070.DATARMNETbb588401ec= +DATARMNETbb588401ec;if(DATARMNET1d51fe00f2(&DATARMNET7d98961cbe,& +DATARMNETa13fcf9070,GFP_ATOMIC)){DATARMNET112d724eff( +"\x61\x70\x73\x20\x63\x6c\x69\x65\x6e\x74\x20\x73\x65\x6e\x64\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x64\x69\x73\x61\x62\x6c\x65\x20\x63\x6c\x69\x65\x6e\x74" "\n" +);DATARMNET7d98961cbe.snd_portid=(0xd2d+202-0xdf7);}}static void +DATARMNET30dd480cad(struct net_device*DATARMNET413e8dcf7b,struct sk_buff* +DATARMNET543491eb0f){struct DATARMNET6fd48c33f6*DATARMNETaa568481cf;if( +DATARMNET543491eb0f->priority>>(0xeb7+1158-0x132d)!=DATARMNET2fe4661b82)return; +if(!READ_ONCE(DATARMNETfef55eaf9a))return;spin_lock_bh(&DATARMNET33bd4139f4); +DATARMNETaa568481cf=DATARMNET3ed11fdc8d(DATARMNET543491eb0f->priority);if( +DATARMNETaa568481cf){DATARMNET543491eb0f->priority=DATARMNETaa568481cf-> +DATARMNET556cdfb5eb;DATARMNETaa568481cf->expires=jiffies+DATARMNETaa568481cf-> +DATARMNETee01ad514b;DATARMNETaa568481cf->DATARMNETa27e524d8a+= +DATARMNET543491eb0f->len;}spin_unlock_bh(&DATARMNET33bd4139f4);if( +DATARMNETaa568481cf)schedule_delayed_work(&DATARMNET3481998252, +DATARMNETfd026b105a);}static int DATARMNET998f6cbce7(struct notifier_block* +DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*DATARMNETaef95eabe8){ +struct net_device*DATARMNET413e8dcf7b;DATARMNET413e8dcf7b= +netdev_notifier_info_to_dev(DATARMNETaef95eabe8);if(unlikely(! +DATARMNET413e8dcf7b))return NOTIFY_DONE;if(strncmp(DATARMNET413e8dcf7b->name, +"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd27+224-0xdfd)))return NOTIFY_DONE +;switch(DATARMNET9a4761f31c){case NETDEV_DOWN:spin_lock_bh(&DATARMNET33bd4139f4) +;DATARMNET250448eb06(DATARMNET413e8dcf7b->ifindex);spin_unlock_bh(& +DATARMNET33bd4139f4);break;default:break;}return NOTIFY_DONE;}int +DATARMNET37a9efbbcb(struct sk_buff*DATARMNETaafc1d9519,struct genl_info* +DATARMNET54338da2ff){struct nlattr*DATARMNET9c5e00ef03;struct +DATARMNET5d4139d9d7 DATARMNETddcafd8b91;struct DATARMNETca79857d4a +DATARMNETa13fcf9070;int DATARMNETb14e52a504;DATARMNET112d724eff( +"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x25\x73" "\n",__func__);if(! +DATARMNET54338da2ff){DATARMNET112d724eff( +"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x65\x72\x72\x6f\x72\x20\x2d\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c" "\n" +);return-EINVAL;}DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[ +DATARMNET98b93f2e86];if(DATARMNET9c5e00ef03){if(nla_memcpy(&DATARMNETddcafd8b91, +DATARMNET9c5e00ef03,sizeof(DATARMNETddcafd8b91))<=(0xd2d+202-0xdf7)){ +DATARMNET112d724eff( +"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6c\x61\x5f\x6d\x65\x6d\x63\x70\x79\x20\x66\x61\x69\x6c\x65\x64\x20\x25\x64" "\n" +,DATARMNET98b93f2e86);return-EINVAL;}}else{DATARMNET112d724eff( +"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6f\x20\x69\x6e\x66\x6f\x2d\x3e\x61\x74\x74\x72\x73\x20\x25\x64" "\n" +,DATARMNET98b93f2e86);return-EINVAL;}spin_lock_bh(&DATARMNET33bd4139f4);switch( +DATARMNETddcafd8b91.cmd){case DATARMNET63ff5c35c2:DATARMNET7d98961cbe=* +DATARMNET54338da2ff;DATARMNET9ac8a34003();DATARMNET2fe4661b82=(u16) +DATARMNETddcafd8b91.DATARMNETbb588401ec;DATARMNET112d724eff( +"\x61\x70\x73\x20\x63\x6c\x69\x65\x6e\x74\x20\x69\x6e\x69\x74\x20\x63\x6f\x6f\x6b\x69\x65\x20\x30\x78\x25\x78" "\n" +,DATARMNET2fe4661b82);DATARMNETb14e52a504=(0xd2d+202-0xdf7);break;case +DATARMNETceae994093:case DATARMNET3412b803e1:case DATARMNET1efd633004: +DATARMNETb14e52a504=DATARMNET82d65f9ca6(&DATARMNETddcafd8b91);break;default: +DATARMNETb14e52a504=-EINVAL;break;}spin_unlock_bh(&DATARMNET33bd4139f4); +DATARMNETa13fcf9070.cmd=DATARMNETddcafd8b91.cmd;DATARMNETa13fcf9070. +DATARMNETe65883bfce=DATARMNETb14e52a504;DATARMNETa13fcf9070.DATARMNETbb588401ec= +DATARMNETddcafd8b91.DATARMNETbb588401ec;DATARMNETb14e52a504=DATARMNET1d51fe00f2( +DATARMNET54338da2ff,&DATARMNETa13fcf9070,GFP_KERNEL);return DATARMNETb14e52a504; +}static int __init DATARMNET0718a3fa4c(void){int DATARMNETb14e52a504;pr_info( +"\x61\x70\x73\x3a\x20\x69\x6e\x69\x74\x20\x28\x25\x73\x29" "\n", +DATARMNETe5ef0e617c);DATARMNETb14e52a504=DATARMNETcfa8d492f8();if( +DATARMNETb14e52a504){pr_err( +"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x67\x65\x6e\x6c\x20\x66\x61\x6d\x69\x6c\x79" "\n" +);return DATARMNETb14e52a504;}register_netdevice_notifier(&DATARMNETc580548769); +return(0xd2d+202-0xdf7);}static void __exit DATARMNETff67054ba9(void){ +DATARMNET446f780f19((0xd2d+202-0xdf7),DATARMNET94016043b8);spin_lock_bh(& +DATARMNET33bd4139f4);DATARMNET9ac8a34003();spin_unlock_bh(&DATARMNET33bd4139f4); +cancel_delayed_work_sync(&DATARMNET3481998252);del_timer_sync(& +DATARMNETd21629e047);unregister_netdevice_notifier(&DATARMNETc580548769); +DATARMNETca7606cfd1();DATARMNET112d724eff( +"\x61\x70\x73\x3a\x20\x65\x78\x69\x74" "\n");}MODULE_LICENSE( +"\x47\x50\x4c\x20\x76\x32");module_init(DATARMNET0718a3fa4c);module_exit( +DATARMNETff67054ba9); diff --git a/qcom/opensource/datarmnet-ext/datarmnet_ext_dlkm_vendor_board.mk b/qcom/opensource/datarmnet-ext/datarmnet_ext_dlkm_vendor_board.mk new file mode 100644 index 0000000000..41bba025c6 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/datarmnet_ext_dlkm_vendor_board.mk @@ -0,0 +1,25 @@ +#Build rmnet modules +DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST := lahaina +DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += taro +DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += parrot +DATA_SHS_DLKM_BOARD_PLATFORMS_LIST := lahaina +DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += taro +DATA_APS_DLKM_BOARD_PLATFORMS_LIST += taro +DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += parrot +DATA_APS_DLKM_BOARD_PLATFORMS_LIST += parrot + +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 +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 diff --git a/qcom/opensource/datarmnet-ext/datarmnet_ext_dlkm_vendor_product.mk b/qcom/opensource/datarmnet-ext/datarmnet_ext_dlkm_vendor_product.mk new file mode 100644 index 0000000000..081308b68a --- /dev/null +++ b/qcom/opensource/datarmnet-ext/datarmnet_ext_dlkm_vendor_product.mk @@ -0,0 +1,7 @@ +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 +PRODUCT_PACKAGES += rmnet_aps.ko +PRODUCT_PACKAGES += rmnet_sch.ko diff --git a/qcom/opensource/datarmnet-ext/offload/Android.mk b/qcom/opensource/datarmnet-ext/offload/Android.mk new file mode 100644 index 0000000000..a5305d5b2a --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/Android.mk @@ -0,0 +1,39 @@ +ifneq ($(TARGET_BOARD_AUTO),true) +ifneq ($(TARGET_BOARD_PLATFORM),qssi) + +RMNET_OFFLOAD_DLKM_PLATFORMS_LIST := lahaina +RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += taro +RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += parrot + +ifeq ($(call is-board-platform-in-list, $(RMNET_OFFLOAD_DLKM_PLATFORMS_LIST)),true) +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) +LOCAL_MODULE := rmnet_offload.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 + +#Must be built after the core rmnet module +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 + +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 diff --git a/qcom/opensource/datarmnet-ext/offload/Kbuild b/qcom/opensource/datarmnet-ext/offload/Kbuild new file mode 100644 index 0000000000..ec29d8ab4b --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/Kbuild @@ -0,0 +1,8 @@ +obj-m += rmnet_offload.o +#Need core headers +ccflags-y := -I$(RMNET_CORE_INC_DIR) \ + $(call cc-option,-Wno-misleading-indentation) +rmnet_offload-y := rmnet_offload_state.o rmnet_offload_main.o \ + rmnet_offload_engine.o rmnet_offload_tcp.o \ + rmnet_offload_udp.o rmnet_offload_stats.o \ + rmnet_offload_knob.o diff --git a/qcom/opensource/datarmnet-ext/offload/Kconfig b/qcom/opensource/datarmnet-ext/offload/Kconfig new file mode 100644 index 0000000000..13799e3143 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/Kconfig @@ -0,0 +1,10 @@ +# +# RMNET_OFFLOAD driver +# + +menuconfig RMNET_OFFLOAD + tristate "Rmnet offload support" + default m + depends on RMNET_CORE + ---help--- + Offload support for the RmNet driver diff --git a/qcom/opensource/datarmnet-ext/offload/Makefile b/qcom/opensource/datarmnet-ext/offload/Makefile new file mode 100644 index 0000000000..d9e9d42559 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/Makefile @@ -0,0 +1,16 @@ +#By default build for CLD +RMNET_OFFLOAD_SELECT := CONFIG_RMNET_OFFLOAD=m +KBUILD_OPTIONS += $(RMNET_OFFLOAD_SELECT) +KBUILD_OPTIONS += $(KBUILD_EXTRA) # Extra config if any +KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_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 diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.c b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.c new file mode 100644 index 0000000000..1d1f6c5f2b --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.c @@ -0,0 +1,189 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. 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 +#include +#include +#include "rmnet_descriptor.h" +#include "rmnet_offload_state.h" +#include "rmnet_offload_engine.h" +#include "rmnet_offload_main.h" +#include "rmnet_offload_tcp.h" +#include "rmnet_offload_udp.h" +#include "rmnet_offload_stats.h" +#include "rmnet_offload_knob.h" +#define DATARMNET644a5e11da \ + (const_ilog2(DATARMNET78d9393ac8)) +static DEFINE_HASHTABLE(DATARMNET4791268d67,DATARMNET644a5e11da);static u32 +DATARMNET1993bae165(u8 DATARMNET06d2413ad2,struct list_head*DATARMNET6f9bfa17e6) +{struct DATARMNETd7c9631acd*DATARMNET7c382e536d;int DATARMNETae0201901a;u32 +DATARMNET737bbd41c3=(0xd2d+202-0xdf7);hash_for_each(DATARMNET4791268d67, +DATARMNETae0201901a,DATARMNET7c382e536d,DATARMNETbd5d7d96d8){if( +DATARMNET7c382e536d->DATARMNET1db11fa85e&&DATARMNET7c382e536d-> +DATARMNET78fd20ce0e.DATARMNET7fa8b2acbf==DATARMNET06d2413ad2){ +DATARMNET737bbd41c3++;DATARMNETa3055c21f2(DATARMNET7c382e536d, +DATARMNET6f9bfa17e6);}}return DATARMNET737bbd41c3;}static bool +DATARMNET2013036d80(u8 DATARMNET06d2413ad2){u64 DATARMNET3924f3f9e3; +DATARMNET3924f3f9e3=DATARMNETf1d1b8287f(DATARMNET6d2ed4b822);if( +DATARMNET3924f3f9e3==DATARMNET2d89680280)return true;if(DATARMNET3924f3f9e3== +DATARMNET03daf91a60&&DATARMNET06d2413ad2==DATARMNETfd5c3d30e5)return true;if( +DATARMNET3924f3f9e3==DATARMNET88a9920663&&DATARMNET06d2413ad2== +DATARMNETa656f324b2)return true;return false;}static bool DATARMNET5a0f9fc3a2( +struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct DATARMNETd812bcdbb5* +DATARMNET5fe4c722a8){if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return false; +if(DATARMNET5fe4c722a8->DATARMNET144d119066.DATARMNET388842c721== +(0xd11+230-0xdf3)){struct DATARMNET4287f07234*DATARMNET699c2c62cd,* +DATARMNET8814564ab9;DATARMNET699c2c62cd=&DATARMNETaa568481cf-> +DATARMNET78fd20ce0e;DATARMNET8814564ab9=&DATARMNET5fe4c722a8-> +DATARMNET144d119066;if(DATARMNET699c2c62cd->DATARMNET19b03754c4^ +DATARMNET8814564ab9->DATARMNET19b03754c4||DATARMNET699c2c62cd-> +DATARMNET57bf608183^DATARMNET8814564ab9->DATARMNET57bf608183|| +DATARMNET699c2c62cd->DATARMNETcf915688f5^DATARMNET8814564ab9-> +DATARMNETcf915688f5||DATARMNET699c2c62cd->DATARMNET4ca5ac9de1^ +DATARMNET8814564ab9->DATARMNET4ca5ac9de1)return true;}else if( +DATARMNET5fe4c722a8->DATARMNET144d119066.DATARMNET388842c721==(0xd03+244-0xdf1)) +{__be32 DATARMNET25ffacbec5,DATARMNETb351dd927f;__be32 DATARMNET9422f16113; +DATARMNET25ffacbec5=DATARMNETaa568481cf->DATARMNET78fd20ce0e.DATARMNETabd58f7f89 +;DATARMNETb351dd927f=DATARMNET5fe4c722a8->DATARMNET144d119066. +DATARMNETabd58f7f89;;DATARMNET9422f16113=DATARMNET25ffacbec5^DATARMNETb351dd927f +;if(DATARMNET9422f16113&htonl(267386880))return true;}return false;}static bool +DATARMNET6895620058(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct +DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){struct DATARMNET4287f07234* +DATARMNET699c2c62cd,*DATARMNET8814564ab9;DATARMNET699c2c62cd=& +DATARMNETaa568481cf->DATARMNET78fd20ce0e;DATARMNET8814564ab9=& +DATARMNET5fe4c722a8->DATARMNET144d119066;if(!DATARMNETaa568481cf-> +DATARMNET1db11fa85e)return DATARMNETaa568481cf->DATARMNET381f1cadc4== +DATARMNET5fe4c722a8->DATARMNET645e8912b8;if(DATARMNET699c2c62cd-> +DATARMNET7fa8b2acbf!=DATARMNET8814564ab9->DATARMNET7fa8b2acbf)return false;if( +DATARMNET699c2c62cd->DATARMNETa60d2ae3f6^DATARMNET8814564ab9-> +DATARMNETa60d2ae3f6||DATARMNET699c2c62cd->DATARMNET5e7452ec23^ +DATARMNET8814564ab9->DATARMNET5e7452ec23)return false;if(DATARMNET8814564ab9-> +DATARMNET388842c721==(0xd11+230-0xdf3)){if(DATARMNET699c2c62cd-> +DATARMNET1a2be7b6c2^DATARMNET8814564ab9->DATARMNET1a2be7b6c2|| +DATARMNET699c2c62cd->DATARMNET0a28fa80f4^DATARMNET8814564ab9-> +DATARMNET0a28fa80f4)return false;}else if(DATARMNET8814564ab9-> +DATARMNET388842c721==(0xd03+244-0xdf1)){if(memcmp(DATARMNET699c2c62cd-> +DATARMNET949c2754de,DATARMNET8814564ab9->DATARMNET949c2754de,sizeof( +DATARMNET8814564ab9->DATARMNET949c2754de))||memcmp(DATARMNET699c2c62cd-> +DATARMNET45ec858bc5,DATARMNET8814564ab9->DATARMNET45ec858bc5,sizeof( +DATARMNET8814564ab9->DATARMNET45ec858bc5)))return false;}else{return false;} +return true;}static struct DATARMNETd7c9631acd*DATARMNETd41def0046(void){struct +DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();struct +DATARMNET907d58c807*DATARMNETa6f73cbe10;struct DATARMNETd7c9631acd* +DATARMNET6745427f98;LIST_HEAD(DATARMNET6f9bfa17e6);DATARMNETa6f73cbe10=& +DATARMNETe05748b000->DATARMNETebb45c8d86;if(DATARMNETa6f73cbe10-> +DATARMNET8dfc11cccdDATARMNET2846a01cce[DATARMNETa6f73cbe10-> +DATARMNET8dfc11cccd];DATARMNETa6f73cbe10->DATARMNET8dfc11cccd++;return +DATARMNET6745427f98;}DATARMNET6745427f98=&DATARMNETa6f73cbe10-> +DATARMNET2846a01cce[DATARMNETa6f73cbe10->DATARMNET57d435b225]; +DATARMNETa6f73cbe10->DATARMNET57d435b225++;DATARMNETa6f73cbe10-> +DATARMNET57d435b225%=DATARMNET78d9393ac8;hash_del(&DATARMNET6745427f98-> +DATARMNETbd5d7d96d8);if(DATARMNET6745427f98->DATARMNET1db11fa85e){ +DATARMNETa00cda79d0(DATARMNETf3f92fc0b9);DATARMNETa3055c21f2(DATARMNET6745427f98 +,&DATARMNET6f9bfa17e6);}DATARMNETc70e73c8d4(&DATARMNET6f9bfa17e6);return +DATARMNET6745427f98;}static void DATARMNETbe30d096c6(void){LIST_HEAD( +DATARMNET6f9bfa17e6);DATARMNET664568fcd0();if(DATARMNETae70636c90(& +DATARMNET6f9bfa17e6))DATARMNETa00cda79d0(DATARMNET5727f095ec); +DATARMNET6a76048590();DATARMNETc70e73c8d4(&DATARMNET6f9bfa17e6);}void +DATARMNETd4230b6bfe(void){rcu_assign_pointer(rmnet_perf_chain_end, +DATARMNETbe30d096c6);}void DATARMNET560e127137(void){rcu_assign_pointer( +rmnet_perf_chain_end,NULL);}int DATARMNET241493ab9a(u64 DATARMNET0470698d6c,u64 +DATARMNETfeff65e096){LIST_HEAD(DATARMNET6f9bfa17e6);u32 DATARMNET737bbd41c3= +(0xd2d+202-0xdf7);if(DATARMNET0470698d6c==DATARMNET5fe3af8828|| +DATARMNETfeff65e096==DATARMNET2d89680280)return(0xd2d+202-0xdf7);switch( +DATARMNETfeff65e096){case DATARMNET03daf91a60:DATARMNET737bbd41c3= +DATARMNET1993bae165(DATARMNETa656f324b2,&DATARMNET6f9bfa17e6);break;case +DATARMNET88a9920663:DATARMNET737bbd41c3=DATARMNET1993bae165(DATARMNETfd5c3d30e5, +&DATARMNET6f9bfa17e6);break;case DATARMNET5fe3af8828:DATARMNET737bbd41c3= +DATARMNETae70636c90(&DATARMNET6f9bfa17e6);break;}DATARMNETbad3b5165e( +DATARMNETddf572458d,DATARMNET737bbd41c3);DATARMNETc70e73c8d4(& +DATARMNET6f9bfa17e6);return(0xd2d+202-0xdf7);}void DATARMNETa3055c21f2(struct +DATARMNETd7c9631acd*DATARMNETaa568481cf,struct list_head*DATARMNET6f9bfa17e6){ +struct DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();struct +rmnet_frag_descriptor*DATARMNETd74aeaa49a,*DATARMNETa1625e27e2,* +DATARMNET0386f6f82a;struct DATARMNET4287f07234*DATARMNET699c2c62cd=& +DATARMNETaa568481cf->DATARMNET78fd20ce0e;u32 DATARMNET567bdc7221= +DATARMNET699c2c62cd->DATARMNET4ca5ac9de1+DATARMNET699c2c62cd-> +DATARMNET0aeee57ceb;if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return; +DATARMNETd74aeaa49a=list_first_entry(&DATARMNETaa568481cf->DATARMNETb76b79d0d5, +struct rmnet_frag_descriptor,list);if(!DATARMNETd74aeaa49a->gso_segs) +DATARMNETd74aeaa49a->gso_segs=(0xd26+209-0xdf6);DATARMNETd74aeaa49a->gso_size= +DATARMNETaa568481cf->DATARMNET1978d5d8de;DATARMNETa1625e27e2=DATARMNETd74aeaa49a +;list_for_each_entry_safe_continue(DATARMNETa1625e27e2,DATARMNET0386f6f82a,& +DATARMNETaa568481cf->DATARMNETb76b79d0d5,list){u32 DATARMNET904423d5e4= +DATARMNETa1625e27e2->len-DATARMNET567bdc7221;if(! +rmnet_frag_descriptor_add_frags_from(DATARMNETd74aeaa49a,DATARMNETa1625e27e2, +DATARMNET567bdc7221,DATARMNET904423d5e4)){DATARMNETd74aeaa49a->gso_segs+=( +DATARMNETa1625e27e2->gso_segs)?:(0xd26+209-0xdf6);DATARMNETd74aeaa49a-> +coal_bytes+=DATARMNETa1625e27e2->coal_bytes;DATARMNETd74aeaa49a->coal_bufsize+= +DATARMNETa1625e27e2->coal_bufsize;}rmnet_recycle_frag_descriptor( +DATARMNETa1625e27e2,DATARMNETe05748b000->DATARMNET403589239f);} +DATARMNETd74aeaa49a->hash=DATARMNETaa568481cf->DATARMNET381f1cadc4;list_del_init +(&DATARMNETd74aeaa49a->list);list_add_tail(&DATARMNETd74aeaa49a->list, +DATARMNET6f9bfa17e6);DATARMNETaa568481cf->DATARMNET1db11fa85e=(0xd2d+202-0xdf7); +DATARMNETaa568481cf->DATARMNETcf28ae376b=(0xd2d+202-0xdf7);}void +DATARMNETc38c135c9f(u32 DATARMNET3f8cc6fc24,struct list_head*DATARMNET6f9bfa17e6 +){struct DATARMNETd7c9631acd*DATARMNETaa568481cf;hash_for_each_possible( +DATARMNET4791268d67,DATARMNETaa568481cf,DATARMNETbd5d7d96d8,DATARMNET3f8cc6fc24) +{if(DATARMNETaa568481cf->DATARMNET381f1cadc4==DATARMNET3f8cc6fc24&& +DATARMNETaa568481cf->DATARMNET1db11fa85e)DATARMNETa3055c21f2(DATARMNETaa568481cf +,DATARMNET6f9bfa17e6);}}u32 DATARMNETae70636c90(struct list_head* +DATARMNET6f9bfa17e6){struct DATARMNETd7c9631acd*DATARMNETaa568481cf;int +DATARMNETae0201901a;u32 DATARMNET737bbd41c3=(0xd2d+202-0xdf7);hash_for_each( +DATARMNET4791268d67,DATARMNETae0201901a,DATARMNETaa568481cf,DATARMNETbd5d7d96d8) +{if(DATARMNETaa568481cf->DATARMNET1db11fa85e){DATARMNET737bbd41c3++; +DATARMNETa3055c21f2(DATARMNETaa568481cf,DATARMNET6f9bfa17e6);}}return +DATARMNET737bbd41c3;}void DATARMNET33aa5df9ef(struct DATARMNETd7c9631acd* +DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){if( +DATARMNET5fe4c722a8->DATARMNETf1b6b0a6cc){memcpy(&DATARMNETaa568481cf-> +DATARMNET78fd20ce0e,&DATARMNET5fe4c722a8->DATARMNET144d119066,sizeof( +DATARMNETaa568481cf->DATARMNET78fd20ce0e));DATARMNETaa568481cf-> +DATARMNET381f1cadc4=DATARMNET5fe4c722a8->DATARMNET645e8912b8;DATARMNETaa568481cf +->DATARMNET1978d5d8de=(DATARMNET5fe4c722a8->DATARMNET719f68fb88->gso_size)?: +DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;}if(DATARMNET5fe4c722a8-> +DATARMNET144d119066.DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5)DATARMNETaa568481cf +->DATARMNET78fd20ce0e.DATARMNETbc28a5970f+=DATARMNET5fe4c722a8-> +DATARMNET1ef22e4c76;list_add_tail(&DATARMNET5fe4c722a8->DATARMNET719f68fb88-> +list,&DATARMNETaa568481cf->DATARMNETb76b79d0d5);DATARMNETaa568481cf-> +DATARMNET1db11fa85e++;DATARMNETaa568481cf->DATARMNETcf28ae376b+= +DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;}bool DATARMNETfbf5798e15(struct +DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,struct list_head*DATARMNET6f9bfa17e6){ +struct DATARMNETd7c9631acd*DATARMNETaa568481cf;bool DATARMNET885970f252=false;u8 + DATARMNET9695aa5b1d=DATARMNET5fe4c722a8->DATARMNET144d119066. +DATARMNET7fa8b2acbf;if(!DATARMNET2013036d80(DATARMNET9695aa5b1d)){ +DATARMNETa00cda79d0(DATARMNET6a894ab63d);return false;}hash_for_each_possible( +DATARMNET4791268d67,DATARMNETaa568481cf,DATARMNETbd5d7d96d8,DATARMNET5fe4c722a8 +->DATARMNET645e8912b8){bool DATARMNET2dd83daa1c;if(!DATARMNET6895620058( +DATARMNETaa568481cf,DATARMNET5fe4c722a8))continue;DATARMNETc6f994577c: +DATARMNET2dd83daa1c=DATARMNET5a0f9fc3a2(DATARMNETaa568481cf,DATARMNET5fe4c722a8) +;DATARMNET5fe4c722a8->DATARMNETf1b6b0a6cc=true;DATARMNET885970f252=true;switch( +DATARMNET9695aa5b1d){case DATARMNETfd5c3d30e5:return DATARMNET4c7cdc25b7( +DATARMNETaa568481cf,DATARMNET5fe4c722a8,DATARMNET2dd83daa1c,DATARMNET6f9bfa17e6) +;case DATARMNETa656f324b2:return DATARMNET8dc47eb7af(DATARMNETaa568481cf, +DATARMNET5fe4c722a8,DATARMNET2dd83daa1c,DATARMNET6f9bfa17e6);default:return +false;}}if(!DATARMNET885970f252){DATARMNETaa568481cf=DATARMNETd41def0046(); +DATARMNETaa568481cf->DATARMNET381f1cadc4=DATARMNET5fe4c722a8-> +DATARMNET645e8912b8;hash_add(DATARMNET4791268d67,&DATARMNETaa568481cf-> +DATARMNETbd5d7d96d8,DATARMNETaa568481cf->DATARMNET381f1cadc4);goto +DATARMNETc6f994577c;}return false;}void DATARMNETb98b78b8e3(void){struct +DATARMNETd7c9631acd*DATARMNETaa568481cf;struct hlist_node*DATARMNET0386f6f82a; +int DATARMNETae0201901a;hash_for_each_safe(DATARMNET4791268d67, +DATARMNETae0201901a,DATARMNET0386f6f82a,DATARMNETaa568481cf,DATARMNETbd5d7d96d8) +hash_del(&DATARMNETaa568481cf->DATARMNETbd5d7d96d8);}int DATARMNETdbcaf01255( +void){struct DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();u8 +DATARMNETefc9df3df2;for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7); +DATARMNETefc9df3df2DATARMNETebb45c8d86.DATARMNET2846a01cce[DATARMNETefc9df3df2];INIT_LIST_HEAD(& +DATARMNETaa568481cf->DATARMNETb76b79d0d5);INIT_HLIST_NODE(&DATARMNETaa568481cf-> +DATARMNETbd5d7d96d8);}return DATARMNET0529bb9c4e;} diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.h b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.h new file mode 100644 index 0000000000..46e1800785 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.h @@ -0,0 +1,37 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. 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. + */ + +#ifndef DATARMNETbf894466c7 +#define DATARMNETbf894466c7 +#include +#include "rmnet_offload_main.h" +#define DATARMNET78d9393ac8 (0xef7+1112-0x131d) +enum{DATARMNET7af645849a,DATARMNETb0bd5db24d,DATARMNET0413b43080,};enum{ +DATARMNETa2ddeec85f,DATARMNET2d89680280=DATARMNETa2ddeec85f,DATARMNET03daf91a60, +DATARMNET88a9920663,DATARMNET5fe3af8828,DATARMNETaccb69cf16=DATARMNET5fe3af8828, +};struct DATARMNETd7c9631acd{struct hlist_node DATARMNETbd5d7d96d8;struct +list_head DATARMNETb76b79d0d5;struct DATARMNET4287f07234 DATARMNET78fd20ce0e;u32 + DATARMNET381f1cadc4;u16 DATARMNETcf28ae376b;u32 DATARMNETd3a1a2b9b5;u16 +DATARMNET1978d5d8de;u8 DATARMNET1db11fa85e;};struct DATARMNET907d58c807{struct +DATARMNETd7c9631acd DATARMNET2846a01cce[DATARMNET78d9393ac8];u8 +DATARMNET8dfc11cccd;u8 DATARMNET57d435b225;};void DATARMNETd4230b6bfe(void);void + DATARMNET560e127137(void);int DATARMNET241493ab9a(u64 DATARMNET0470698d6c,u64 +DATARMNETfeff65e096);void DATARMNETa3055c21f2(struct DATARMNETd7c9631acd* +DATARMNETaa568481cf,struct list_head*DATARMNET6f9bfa17e6);void +DATARMNETc38c135c9f(u32 DATARMNET3f8cc6fc24,struct list_head*DATARMNET6f9bfa17e6 +);u32 DATARMNETae70636c90(struct list_head*DATARMNET6f9bfa17e6);void +DATARMNET33aa5df9ef(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct +DATARMNETd812bcdbb5*DATARMNET5fe4c722a8);bool DATARMNETfbf5798e15(struct +DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,struct list_head*DATARMNET6f9bfa17e6); +void DATARMNETb98b78b8e3(void);int DATARMNETdbcaf01255(void); +#endif + diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.c b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.c new file mode 100644 index 0000000000..a804397e88 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.c @@ -0,0 +1,75 @@ +/* Copyright (c) 2018-2020, The Linux Foundation. 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 +#include "rmnet_offload_knob.h" +#include "rmnet_offload_main.h" +#include "rmnet_offload_engine.h" +#define DATARMNET7996ea045b(DATARMNET4c4a5ce272) \ + static int __ ## DATARMNET4c4a5ce272(const char *DATARMNETcc6099cb14, const \ +struct kernel_param *DATARMNETb3ce0fdc63) \ + { \ + return DATARMNETf467eaf6fc(DATARMNETcc6099cb14, DATARMNETb3ce0fdc63, \ +DATARMNET4c4a5ce272); \ + } +#define DATARMNETce9a74c748(DATARMNET4c4a5ce272, DATARMNET91574ba67a, \ +DATARMNET8f535916a4, DATARMNETae9bf9b111, DATARMNETbdf6f9d425) \ + (struct DATARMNET5374f6eafa) { \ + .DATARMNETd67569df12 = DATARMNET91574ba67a, \ + .DATARMNET949fb858da = DATARMNET8f535916a4, \ + .DATARMNET6c81c0097b = DATARMNETae9bf9b111, \ + .DATARMNET8a7dce7d36 = DATARMNETbdf6f9d425, \ + .DATARMNET9cee06cbe4 = { \ + .set = __ ## DATARMNET4c4a5ce272, \ + .get = param_get_ullong, \ + }, \ + } +#define DATARMNET584f34118e(DATARMNETe1196c6554, DATARMNET4c4a5ce272) \ + module_param_cb(DATARMNETe1196c6554, &DATARMNET07ae1e39fb[DATARMNET4c4a5ce272].\ +DATARMNET9cee06cbe4, \ + &DATARMNET07ae1e39fb[DATARMNET4c4a5ce272].DATARMNETd67569df12, \ +(0xdb7+6665-0x261c)) +struct DATARMNET5374f6eafa{u64 DATARMNETd67569df12;u64 DATARMNET949fb858da;u64 +DATARMNET6c81c0097b;int(*DATARMNET8a7dce7d36)(u64 DATARMNET7e07157b72,u64 +DATARMNETcd597b0a1b);struct kernel_param_ops DATARMNET9cee06cbe4;};static int +DATARMNETf467eaf6fc(const char*DATARMNETcc6099cb14,const struct kernel_param* +DATARMNETb3ce0fdc63,u32 DATARMNET4c4a5ce272);DATARMNET7996ea045b( +DATARMNETdf66588a73);DATARMNET7996ea045b(DATARMNET9c85bb95a3); +DATARMNET7996ea045b(DATARMNET6d2ed4b822);static struct DATARMNET5374f6eafa +DATARMNET07ae1e39fb[DATARMNET94aa767bca]={DATARMNETce9a74c748( +DATARMNETdf66588a73,65000,(0xd2d+202-0xdf7),65000,NULL),DATARMNETce9a74c748( +DATARMNET9c85bb95a3,65000,(0xd2d+202-0xdf7),65000,NULL),DATARMNETce9a74c748( +DATARMNET6d2ed4b822,DATARMNET2d89680280,DATARMNETa2ddeec85f,DATARMNETaccb69cf16, +DATARMNET241493ab9a),};static int DATARMNETf467eaf6fc(const char* +DATARMNETcc6099cb14,const struct kernel_param*DATARMNETb3ce0fdc63,u32 +DATARMNET4c4a5ce272){struct DATARMNET5374f6eafa*DATARMNET0751f2024d;unsigned +long long DATARMNETcd597b0a1b;u64 DATARMNET7e07157b72;int DATARMNETb14e52a504;if +(DATARMNET4c4a5ce272>=DATARMNET94aa767bca)return-EINVAL;DATARMNETb14e52a504= +kstrtoull(DATARMNETcc6099cb14,(0xd2d+202-0xdf7),&DATARMNETcd597b0a1b);if( +DATARMNETb14e52a504<(0xd2d+202-0xdf7))return DATARMNETb14e52a504; +DATARMNET0751f2024d=&DATARMNET07ae1e39fb[DATARMNET4c4a5ce272];if((u64) +DATARMNETcd597b0a1bDATARMNET949fb858da||(u64) +DATARMNETcd597b0a1b>DATARMNET0751f2024d->DATARMNET6c81c0097b)return-ERANGE; +DATARMNET664568fcd0();DATARMNET7e07157b72=*(u64*)DATARMNETb3ce0fdc63->arg;if(( +u64)DATARMNETcd597b0a1b==DATARMNET7e07157b72){DATARMNET6a76048590();return +(0xd2d+202-0xdf7);}if(DATARMNET0751f2024d->DATARMNET8a7dce7d36){ +DATARMNETb14e52a504=DATARMNET0751f2024d->DATARMNET8a7dce7d36(DATARMNET7e07157b72 +,(u64)DATARMNETcd597b0a1b);if(DATARMNETb14e52a504<(0xd2d+202-0xdf7)){ +DATARMNET6a76048590();return DATARMNETb14e52a504;}}*(u64*)DATARMNETb3ce0fdc63-> +arg=(u64)DATARMNETcd597b0a1b;DATARMNET6a76048590();return(0xd2d+202-0xdf7);} +DATARMNET584f34118e(rmnet_offload_knob0,DATARMNETdf66588a73);DATARMNET584f34118e +(rmnet_offload_knob1,DATARMNET9c85bb95a3);DATARMNET584f34118e( +rmnet_offload_knob2,DATARMNET6d2ed4b822);u64 DATARMNETf1d1b8287f(u32 +DATARMNET4c4a5ce272){struct DATARMNET5374f6eafa*DATARMNET0751f2024d;if( +DATARMNET4c4a5ce272>=DATARMNET94aa767bca)return(u64)~(0xd2d+202-0xdf7); +DATARMNET0751f2024d=&DATARMNET07ae1e39fb[DATARMNET4c4a5ce272];return +DATARMNET0751f2024d->DATARMNETd67569df12;} diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.h b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.h new file mode 100644 index 0000000000..9d82c35d18 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2018-2020, The Linux Foundation. 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. + */ + +#ifndef DATARMNET5833be0738 +#define DATARMNET5833be0738 +#include +enum{DATARMNETdf66588a73,DATARMNET9c85bb95a3,DATARMNET6d2ed4b822, +DATARMNET94aa767bca,};u64 DATARMNETf1d1b8287f(u32 DATARMNET4c4a5ce272); +#endif diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.c b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.c new file mode 100644 index 0000000000..40ace316b3 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.c @@ -0,0 +1,260 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022-2023 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 +#include +#include +#include +#include "rmnet_descriptor.h" +#include "rmnet_handlers.h" +#include "rmnet_map.h" +#include "rmnet_offload_main.h" +#include "rmnet_offload_state.h" +#include "rmnet_offload_engine.h" +#include "rmnet_offload_stats.h" +static char*verinfo[]={"\x63\x38\x61\x63\x61\x66\x38\x35", +"\x32\x61\x34\x34\x66\x36\x62\x65","\x37\x34\x31\x35\x39\x32\x31\x63", +"\x34\x31\x32\x39\x36\x62\x30\x39"};module_param_array(verinfo,charp,NULL, +(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo, +"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72" +);static DEFINE_SPINLOCK(DATARMNET0b5e447f18);static u32 DATARMNETcb7325e02d( +struct DATARMNETd812bcdbb5*DATARMNET458b70e7e5){struct DATARMNET4287f07234* +DATARMNET8814564ab9=&DATARMNET458b70e7e5->DATARMNET144d119066;__be32 +DATARMNETdfd47b00ff[(0xd20+231-0xdfc)];u32 DATARMNET5ebf661879;__be16 +DATARMNET08e913477e=(0xd2d+202-0xdf7),DATARMNETda7f7fa492=(0xd2d+202-0xdf7);if( +DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNETa656f324b2|| +DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){ +DATARMNET08e913477e=DATARMNET8814564ab9->DATARMNETa60d2ae3f6;DATARMNETda7f7fa492 +=DATARMNET8814564ab9->DATARMNET5e7452ec23;}if(DATARMNET8814564ab9-> +DATARMNET388842c721==(0xd11+230-0xdf3)){DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)]= +DATARMNET8814564ab9->DATARMNET0a28fa80f4;DATARMNETdfd47b00ff[(0xd26+209-0xdf6)]= +DATARMNET8814564ab9->DATARMNET1a2be7b6c2;DATARMNETdfd47b00ff[(0xd1f+216-0xdf5)]= +DATARMNET8814564ab9->DATARMNET7fa8b2acbf;DATARMNETdfd47b00ff[(0xd18+223-0xdf4)]= +DATARMNETda7f7fa492;DATARMNETdfd47b00ff[(0xd11+230-0xdf3)]=DATARMNET08e913477e; +DATARMNET5ebf661879=(0xd0a+237-0xdf2);}else{memcpy(&DATARMNETdfd47b00ff[ +(0xd2d+202-0xdf7)],&DATARMNET8814564ab9->DATARMNET45ec858bc5[(0xd2d+202-0xdf7)], +sizeof(DATARMNET8814564ab9->DATARMNET45ec858bc5));memcpy(&DATARMNETdfd47b00ff[ +(0xd0a+237-0xdf2)],&DATARMNET8814564ab9->DATARMNET949c2754de[(0xd2d+202-0xdf7)], +sizeof(DATARMNET8814564ab9->DATARMNET45ec858bc5));DATARMNETdfd47b00ff[ +(0xd35+210-0xdff)]=DATARMNET8814564ab9->DATARMNET7fa8b2acbf;DATARMNETdfd47b00ff[ +9]=DATARMNETda7f7fa492;DATARMNETdfd47b00ff[(0xd27+224-0xdfd)]= +DATARMNET08e913477e;DATARMNET5ebf661879=(0xd20+231-0xdfc);}return jhash2( +DATARMNETdfd47b00ff,DATARMNET5ebf661879,(0xd2d+202-0xdf7));}static void +DATARMNETe26a68d20e(u32 DATARMNET5affe290b8){u32 DATARMNET2991ac9aa9;if( +DATARMNET5affe290b8>50000)DATARMNET2991ac9aa9=DATARMNETa121404606;else if( +DATARMNET5affe290b8>30000)DATARMNET2991ac9aa9=DATARMNET787b04223a;else if( +DATARMNET5affe290b8>23000)DATARMNET2991ac9aa9=DATARMNET8e1480cff2;else if( +DATARMNET5affe290b8>14500)DATARMNET2991ac9aa9=DATARMNETf335e26298;else if( +DATARMNET5affe290b8>7000)DATARMNET2991ac9aa9=DATARMNET3067ea3199;else if( +DATARMNET5affe290b8>(0x5b4+1875-0x78f))DATARMNET2991ac9aa9=DATARMNETa76d93355c; +else DATARMNET2991ac9aa9=DATARMNET92f3434694;DATARMNETa00cda79d0( +DATARMNET2991ac9aa9);}static bool DATARMNET1a7ed9a6a2(struct +rmnet_frag_descriptor*DATARMNET9d1b321642,struct DATARMNETd812bcdbb5* +DATARMNET458b70e7e5){struct DATARMNET4287f07234*DATARMNET8814564ab9=& +DATARMNET458b70e7e5->DATARMNET144d119066;u8*DATARMNETdf2dbc641f;u16 +DATARMNET5affe290b8;u16 DATARMNETdaa9248df1;DATARMNET5affe290b8= +DATARMNET9d1b321642->len;DATARMNET458b70e7e5->DATARMNET3eb91ee54d=true;if( +unlikely(!(DATARMNET9d1b321642->dev->features&NETIF_F_RXCSUM))){goto +DATARMNETaabe3a05f8;}if(DATARMNET9d1b321642->hdrs_valid){struct +DATARMNET0b82084e89*DATARMNET75be5f3406,DATARMNETc82d2f4e16;struct +DATARMNETd2991e8952*DATARMNET2e7cc88971,DATARMNETd1ff6cd568;DATARMNET8814564ab9 +->DATARMNET388842c721=DATARMNET9d1b321642->ip_proto;DATARMNET8814564ab9-> +DATARMNET4ca5ac9de1=DATARMNET9d1b321642->ip_len;DATARMNET8814564ab9-> +DATARMNET7fa8b2acbf=DATARMNET9d1b321642->trans_proto;DATARMNET8814564ab9-> +DATARMNET0aeee57ceb=DATARMNET9d1b321642->trans_len;DATARMNET5affe290b8= +DATARMNET9d1b321642->len;if(DATARMNET8814564ab9->DATARMNET388842c721== +(0xd11+230-0xdf3)){struct DATARMNET308c06fca6*DATARMNET86f1f2cdc9, +DATARMNETbf6548198e;DATARMNET86f1f2cdc9=rmnet_frag_header_ptr( +DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),& +DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto DATARMNETaabe3a05f8; +DATARMNET8814564ab9->DATARMNET1a2be7b6c2=DATARMNET86f1f2cdc9-> +DATARMNET9bbd2ca483;DATARMNET8814564ab9->DATARMNET0a28fa80f4=DATARMNET86f1f2cdc9 +->DATARMNET11ef55b2bb;DATARMNET8814564ab9->DATARMNET19b03754c4= +DATARMNET86f1f2cdc9->DATARMNET1eb6c27583;DATARMNET8814564ab9-> +DATARMNET57bf608183=DATARMNET86f1f2cdc9->DATARMNET03e081f69f;DATARMNET8814564ab9 +->DATARMNETcf915688f5=DATARMNET86f1f2cdc9->DATARMNET2c091223da;}else{struct +DATARMNET64bb8f616e*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;DATARMNETbf55123e5b= +rmnet_frag_header_ptr(DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(* +DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto +DATARMNETaabe3a05f8;memcpy(&DATARMNET8814564ab9->DATARMNET949c2754de[ +(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNET31202449fc[(0xd2d+202-0xdf7)], +sizeof(DATARMNETbf55123e5b->DATARMNET31202449fc));memcpy(&DATARMNET8814564ab9-> +DATARMNET45ec858bc5[(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNETc657c0a139 +[(0xd2d+202-0xdf7)],sizeof(DATARMNETbf55123e5b->DATARMNETc657c0a139)); +DATARMNET8814564ab9->DATARMNETabd58f7f89=DATARMNETbf55123e5b-> +DATARMNET0687f7ecdc;if(DATARMNET8814564ab9->DATARMNET4ca5ac9de1>sizeof(* +DATARMNETbf55123e5b)){int DATARMNET0afb05821a;__be16 DATARMNET833503918f;bool +DATARMNETcd214ed34c;u8 DATARMNET615595a09c=DATARMNETbf55123e5b-> +DATARMNET7244bfdc4f;DATARMNET0afb05821a=rmnet_frag_ipv6_skip_exthdr( +DATARMNET9d1b321642,sizeof(*DATARMNETbf55123e5b),&DATARMNET615595a09c,& +DATARMNET833503918f,&DATARMNETcd214ed34c);if(DATARMNET0afb05821a< +(0xd2d+202-0xdf7)||DATARMNET833503918f||DATARMNETcd214ed34c){if( +DATARMNET615595a09c==DATARMNET5b166167a8)DATARMNET8814564ab9-> +DATARMNET4ca5ac9de1+=(0xd35+210-0xdff);DATARMNETa00cda79d0(DATARMNET807e4dad18); +goto DATARMNETaabe3a05f8;}}}DATARMNET75be5f3406=rmnet_frag_header_ptr( +DATARMNET9d1b321642,DATARMNET8814564ab9->DATARMNET4ca5ac9de1,sizeof(* +DATARMNET75be5f3406),&DATARMNETc82d2f4e16);if(!DATARMNET75be5f3406)goto +DATARMNETaabe3a05f8;DATARMNET8814564ab9->DATARMNETa60d2ae3f6=DATARMNET75be5f3406 +->DATARMNET1b1c406ae9;DATARMNET8814564ab9->DATARMNET5e7452ec23= +DATARMNET75be5f3406->DATARMNETdf0e8545ee;if(DATARMNET8814564ab9-> +DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){__be32 DATARMNET0849981c7c; +DATARMNET2e7cc88971=rmnet_frag_header_ptr(DATARMNET9d1b321642, +DATARMNET8814564ab9->DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),& +DATARMNETd1ff6cd568);if(!DATARMNET2e7cc88971)goto DATARMNETaabe3a05f8;if( +DATARMNET9d1b321642->tcp_seq_set)DATARMNET0849981c7c=DATARMNET9d1b321642-> +tcp_seq;else DATARMNET0849981c7c=DATARMNET2e7cc88971->DATARMNETb3e70104e0; +DATARMNET8814564ab9->DATARMNETbc28a5970f=ntohl(DATARMNET0849981c7c);} +DATARMNET458b70e7e5->DATARMNET645e8912b8=DATARMNETcb7325e02d(DATARMNET458b70e7e5 +);DATARMNET458b70e7e5->DATARMNET1ef22e4c76=DATARMNET9d1b321642->len- +DATARMNET9d1b321642->ip_len-DATARMNET9d1b321642->trans_len;DATARMNET458b70e7e5-> +DATARMNET719f68fb88=DATARMNET9d1b321642;DATARMNET458b70e7e5->DATARMNET3eb91ee54d +=false;return false;}DATARMNETdf2dbc641f=rmnet_frag_data_ptr(DATARMNET9d1b321642 +);if(unlikely(!DATARMNETdf2dbc641f))return true;DATARMNET8814564ab9-> +DATARMNET388842c721=(DATARMNETdf2dbc641f[(0xd2d+202-0xdf7)]&(0xbf7+4405-0x1c3c)) +>>(0xd11+230-0xdf3);if(DATARMNET8814564ab9->DATARMNET388842c721== +(0xd11+230-0xdf3)){struct DATARMNET308c06fca6*DATARMNET86f1f2cdc9, +DATARMNETbf6548198e;DATARMNET86f1f2cdc9=rmnet_frag_header_ptr( +DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),& +DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto DATARMNETaabe3a05f8; +DATARMNET8814564ab9->DATARMNET4ca5ac9de1=DATARMNET86f1f2cdc9-> +DATARMNET610d06a887*(0xd11+230-0xdf3);DATARMNET8814564ab9->DATARMNET7fa8b2acbf= +DATARMNET86f1f2cdc9->DATARMNET953d32410f;DATARMNET8814564ab9-> +DATARMNET1a2be7b6c2=DATARMNET86f1f2cdc9->DATARMNET9bbd2ca483;DATARMNET8814564ab9 +->DATARMNET0a28fa80f4=DATARMNET86f1f2cdc9->DATARMNET11ef55b2bb; +DATARMNET8814564ab9->DATARMNET19b03754c4=DATARMNET86f1f2cdc9-> +DATARMNET1eb6c27583;DATARMNET8814564ab9->DATARMNET57bf608183=DATARMNET86f1f2cdc9 +->DATARMNET03e081f69f;DATARMNET8814564ab9->DATARMNETcf915688f5= +DATARMNET86f1f2cdc9->DATARMNET2c091223da;if(DATARMNET86f1f2cdc9-> +DATARMNET2c091223da&htons(16383)){DATARMNETa00cda79d0(DATARMNET807e4dad18);goto +DATARMNETaabe3a05f8;}DATARMNETdaa9248df1=ntohs(DATARMNET86f1f2cdc9-> +DATARMNET8e175ac02d);DATARMNET458b70e7e5->DATARMNET8f59f5a745= +DATARMNETdaa9248df1!=DATARMNET5affe290b8;}else if(DATARMNET8814564ab9-> +DATARMNET388842c721==(0xd03+244-0xdf1)){struct DATARMNET64bb8f616e* +DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;int DATARMNET0549c61885;__be16 +DATARMNET833503918f;bool DATARMNETcd214ed34c;u8 DATARMNET3f56a2bcf4; +DATARMNETbf55123e5b=rmnet_frag_header_ptr(DATARMNET9d1b321642,(0xd2d+202-0xdf7), +sizeof(*DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto +DATARMNETaabe3a05f8;DATARMNET3f56a2bcf4=DATARMNETbf55123e5b->DATARMNET7244bfdc4f +;DATARMNET0549c61885=rmnet_frag_ipv6_skip_exthdr(DATARMNET9d1b321642,sizeof(* +DATARMNETbf55123e5b),&DATARMNET3f56a2bcf4,&DATARMNET833503918f,& +DATARMNETcd214ed34c);if(DATARMNET0549c61885<(0xd2d+202-0xdf7)){goto +DATARMNETaabe3a05f8;}DATARMNET8814564ab9->DATARMNET4ca5ac9de1=(u16) +DATARMNET0549c61885;DATARMNET8814564ab9->DATARMNET7fa8b2acbf=DATARMNET3f56a2bcf4 +;memcpy(&DATARMNET8814564ab9->DATARMNET949c2754de[(0xd2d+202-0xdf7)],& +DATARMNETbf55123e5b->DATARMNET31202449fc[(0xd2d+202-0xdf7)],sizeof( +DATARMNETbf55123e5b->DATARMNET31202449fc));memcpy(&DATARMNET8814564ab9-> +DATARMNET45ec858bc5[(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNETc657c0a139 +[(0xd2d+202-0xdf7)],sizeof(DATARMNETbf55123e5b->DATARMNETc657c0a139)); +DATARMNET8814564ab9->DATARMNETabd58f7f89=DATARMNETbf55123e5b-> +DATARMNET0687f7ecdc;if(DATARMNET833503918f||DATARMNETcd214ed34c){if( +DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNET5b166167a8) +DATARMNET8814564ab9->DATARMNET4ca5ac9de1+=(0xd35+210-0xdff);DATARMNETa00cda79d0( +DATARMNET807e4dad18);goto DATARMNETaabe3a05f8;}DATARMNETdaa9248df1=ntohs( +DATARMNETbf55123e5b->DATARMNETaa340485c5)+sizeof(*DATARMNETbf55123e5b); +DATARMNET458b70e7e5->DATARMNET8f59f5a745=DATARMNETdaa9248df1!= +DATARMNET5affe290b8;}else{return true;}if(DATARMNET8814564ab9-> +DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){struct DATARMNETd2991e8952* +DATARMNET2e7cc88971,DATARMNETd1ff6cd568;DATARMNET2e7cc88971= +rmnet_frag_header_ptr(DATARMNET9d1b321642,DATARMNET8814564ab9-> +DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),&DATARMNETd1ff6cd568);if(! +DATARMNET2e7cc88971)goto DATARMNETaabe3a05f8;DATARMNET8814564ab9-> +DATARMNET0aeee57ceb=DATARMNET2e7cc88971->DATARMNETcf2e43ad69*(0xd11+230-0xdf3); +DATARMNET8814564ab9->DATARMNETa60d2ae3f6=DATARMNET2e7cc88971-> +DATARMNET6acbeeebb1;DATARMNET8814564ab9->DATARMNET5e7452ec23=DATARMNET2e7cc88971 +->DATARMNET29b8c05d14;DATARMNET8814564ab9->DATARMNETbc28a5970f=ntohl( +DATARMNET2e7cc88971->DATARMNETb3e70104e0);}else if(DATARMNET8814564ab9-> +DATARMNET7fa8b2acbf==DATARMNETa656f324b2){struct DATARMNET0b82084e89* +DATARMNET75be5f3406,DATARMNETc82d2f4e16;DATARMNET75be5f3406= +rmnet_frag_header_ptr(DATARMNET9d1b321642,DATARMNET8814564ab9-> +DATARMNET4ca5ac9de1,sizeof(*DATARMNET75be5f3406),&DATARMNETc82d2f4e16);if(! +DATARMNET75be5f3406)goto DATARMNETaabe3a05f8;DATARMNET8814564ab9-> +DATARMNET0aeee57ceb=sizeof(*DATARMNET75be5f3406);DATARMNET8814564ab9-> +DATARMNETa60d2ae3f6=DATARMNET75be5f3406->DATARMNET1b1c406ae9;DATARMNET8814564ab9 +->DATARMNET5e7452ec23=DATARMNET75be5f3406->DATARMNETdf0e8545ee;}else{goto +DATARMNETaabe3a05f8;}DATARMNET458b70e7e5->DATARMNET3eb91ee54d=false; +DATARMNET458b70e7e5->DATARMNET645e8912b8=DATARMNETcb7325e02d(DATARMNET458b70e7e5 +);if(!DATARMNET458b70e7e5->DATARMNET8f59f5a745){DATARMNET9d1b321642->ip_proto= +DATARMNET8814564ab9->DATARMNET388842c721;DATARMNET9d1b321642->ip_len= +DATARMNET8814564ab9->DATARMNET4ca5ac9de1;DATARMNET9d1b321642->trans_proto= +DATARMNET8814564ab9->DATARMNET7fa8b2acbf;DATARMNET9d1b321642->trans_len= +DATARMNET8814564ab9->DATARMNET0aeee57ceb;DATARMNET9d1b321642->hdrs_valid= +(0xd26+209-0xdf6);}DATARMNETaabe3a05f8:DATARMNET458b70e7e5->DATARMNET1ef22e4c76= +DATARMNET5affe290b8-DATARMNET8814564ab9->DATARMNET4ca5ac9de1-DATARMNET8814564ab9 +->DATARMNET0aeee57ceb;if(DATARMNET458b70e7e5->DATARMNET8f59f5a745) +DATARMNETa00cda79d0(DATARMNET52b7da9033);DATARMNET458b70e7e5-> +DATARMNET719f68fb88=DATARMNET9d1b321642;return false;}static void +DATARMNET29e8d137c4(struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct +rmnet_port*DATARMNETf0d9de7e2f){struct DATARMNET70f3b87b5d*DATARMNETe05748b000= +DATARMNETc2a630b113();struct DATARMNETd812bcdbb5 DATARMNET458b70e7e5;LIST_HEAD( +DATARMNET6f9bfa17e6);memset(&DATARMNET458b70e7e5,(0xd2d+202-0xdf7),sizeof( +DATARMNET458b70e7e5));DATARMNET664568fcd0();DATARMNETe05748b000-> +DATARMNET403589239f=DATARMNETf0d9de7e2f;if(DATARMNET1a7ed9a6a2( +DATARMNET9d1b321642,&DATARMNET458b70e7e5)){DATARMNETa00cda79d0( +DATARMNET1cddffce49);rmnet_recycle_frag_descriptor(DATARMNET9d1b321642, +DATARMNETf0d9de7e2f);goto DATARMNETbf4095f79e;}DATARMNETa00cda79d0( +DATARMNET9b3fdb0e16);if(DATARMNET458b70e7e5.DATARMNET3eb91ee54d){goto +DATARMNET806c6f8e60;}else if(DATARMNET458b70e7e5.DATARMNET8f59f5a745){ +DATARMNETc38c135c9f(DATARMNET458b70e7e5.DATARMNET645e8912b8,&DATARMNET6f9bfa17e6 +);goto DATARMNET806c6f8e60;}if(!DATARMNET9d1b321642->csum_valid){goto +DATARMNET806c6f8e60;}if(!DATARMNETfbf5798e15(&DATARMNET458b70e7e5,& +DATARMNET6f9bfa17e6))goto DATARMNET806c6f8e60;goto DATARMNETbf4095f79e; +DATARMNET806c6f8e60:DATARMNET19d190f2bd(&DATARMNET458b70e7e5,& +DATARMNET6f9bfa17e6);DATARMNETbf4095f79e:DATARMNET6a76048590(); +DATARMNETc70e73c8d4(&DATARMNET6f9bfa17e6);}void DATARMNET664568fcd0(void){ +spin_lock_bh(&DATARMNET0b5e447f18);}void DATARMNET6a76048590(void){ +spin_unlock_bh(&DATARMNET0b5e447f18);}void DATARMNET818b960147(void){ +rcu_assign_pointer(rmnet_perf_desc_entry,DATARMNET29e8d137c4);}void +DATARMNETba38823a2f(void){rcu_assign_pointer(rmnet_perf_desc_entry,NULL);}bool +DATARMNET19eb0de3b2(void){void(*DATARMNET27ebcde4bf)(struct +rmnet_frag_descriptor*DATARMNET9d1b321642,struct rmnet_port*DATARMNETf0d9de7e2f) +;rcu_read_lock();DATARMNET27ebcde4bf=rcu_dereference(rmnet_perf_desc_entry); +rcu_read_unlock();return DATARMNET27ebcde4bf!=NULL;}void DATARMNETc70e73c8d4( +struct list_head*DATARMNETb5730f5283){struct DATARMNET70f3b87b5d* +DATARMNETe05748b000=DATARMNETc2a630b113();struct rmnet_frag_descriptor* +DATARMNET9d1b321642,*DATARMNET0386f6f82a;list_for_each_entry_safe( +DATARMNET9d1b321642,DATARMNET0386f6f82a,DATARMNETb5730f5283,list){ +DATARMNETe26a68d20e(DATARMNET9d1b321642->len);DATARMNETa00cda79d0( +DATARMNET65843ad009);list_del_init(&DATARMNET9d1b321642->list); +rmnet_frag_deliver(DATARMNET9d1b321642,DATARMNETe05748b000->DATARMNET403589239f) +;}}void DATARMNET19d190f2bd(struct DATARMNETd812bcdbb5*DATARMNET458b70e7e5, +struct list_head*DATARMNET6f9bfa17e6){struct rmnet_frag_descriptor* +DATARMNET9d1b321642=DATARMNET458b70e7e5->DATARMNET719f68fb88;u32 +DATARMNET5affe290b8=DATARMNET458b70e7e5->DATARMNET1ef22e4c76+DATARMNET458b70e7e5 +->DATARMNET144d119066.DATARMNET4ca5ac9de1+DATARMNET458b70e7e5-> +DATARMNET144d119066.DATARMNET0aeee57ceb;if(DATARMNET5affe290b8>65536)return;if(! +DATARMNET458b70e7e5->DATARMNET3eb91ee54d)DATARMNET9d1b321642->hash= +DATARMNET458b70e7e5->DATARMNET645e8912b8;list_add_tail(&DATARMNET9d1b321642-> +list,DATARMNET6f9bfa17e6);}void DATARMNET9292bebdd3(void*DATARMNETf0d9de7e2f){} +void DATARMNETb7e47d7254(void*DATARMNETf0d9de7e2f){}void DATARMNET95e1703026( +struct rmnet_map_dl_ind_hdr*DATARMNET7c7748ef7a,struct +rmnet_map_control_command_header*DATARMNET8b07ee3e82){struct DATARMNET70f3b87b5d +*DATARMNETe05748b000=DATARMNETc2a630b113();LIST_HEAD(DATARMNET6f9bfa17e6);(void) +DATARMNET8b07ee3e82;DATARMNET664568fcd0();if(DATARMNETe05748b000-> +DATARMNETa9f2b2f677.DATARMNETb165d2c5c4&&DATARMNETae70636c90(& +DATARMNET6f9bfa17e6))DATARMNETa00cda79d0(DATARMNET372ef39ae4); +DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNETb165d2c5c4=true; +DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNETe2251ce433=DATARMNET7c7748ef7a +->le.seq;DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNET7f59b108db= +DATARMNET7c7748ef7a->le.pkts;DATARMNET6a76048590();DATARMNETc70e73c8d4(& +DATARMNET6f9bfa17e6);}void DATARMNETc9dd320f49(struct rmnet_map_dl_ind_trl* +DATARMNET2541770fea,struct rmnet_map_control_command_header*DATARMNET8b07ee3e82) +{struct DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();LIST_HEAD( +DATARMNET6f9bfa17e6);(void)DATARMNET8b07ee3e82;DATARMNET664568fcd0();if( +DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNETe2251ce433!= +DATARMNET2541770fea->seq_le)DATARMNETa00cda79d0(DATARMNET30a4d88ea6);if( +DATARMNETae70636c90(&DATARMNET6f9bfa17e6))DATARMNETa00cda79d0( +DATARMNETa03ed3629e);DATARMNETe05748b000->DATARMNETa9f2b2f677. +DATARMNETb165d2c5c4=false;DATARMNETe05748b000->DATARMNETa9f2b2f677. +DATARMNETe2251ce433=(0xd2d+202-0xdf7);DATARMNETe05748b000->DATARMNETa9f2b2f677. +DATARMNET7f59b108db=(0xd2d+202-0xdf7);DATARMNET6a76048590();DATARMNETc70e73c8d4( +&DATARMNET6f9bfa17e6);} diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.h b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.h new file mode 100644 index 0000000000..ccb37120ba --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.h @@ -0,0 +1,73 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. 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. + */ + +#ifndef DATARMNET3f65517842 +#define DATARMNET3f65517842 +#include +#include +#include "rmnet_descriptor.h" +#include "rmnet_map.h" +#define DATARMNETfd5c3d30e5 (0xd03+244-0xdf1) +#define DATARMNETa656f324b2 (0xeb7+1151-0x1325) +#define DATARMNET5b166167a8 (0xec7+1138-0x130d) +struct DATARMNET308c06fca6{ +#if defined(__LITTLE_ENDIAN_BITFIELD) +u8 DATARMNET610d06a887:(0xd11+230-0xdf3);u8 DATARMNET7af6b06548: +(0xd11+230-0xdf3); +#elif defined (__BIG_ENDIAN_BITFIELD) +u8 DATARMNET7af6b06548:(0xd11+230-0xdf3);u8 DATARMNET610d06a887: +(0xd11+230-0xdf3); +#else +#error " error" +#endif +u8 DATARMNET03e081f69f;__be16 DATARMNET8e175ac02d;__be16 DATARMNET4acf94d119; +__be16 DATARMNET2c091223da;u8 DATARMNET1eb6c27583;u8 DATARMNET953d32410f;__be16 +DATARMNET9e4950461a;__be32 DATARMNET9bbd2ca483;__be32 DATARMNET11ef55b2bb;}; +struct DATARMNET64bb8f616e{__be32 DATARMNET0687f7ecdc;__be16 DATARMNETaa340485c5 +;u8 DATARMNET7244bfdc4f;u8 DATARMNET00f98dd445;__be32 DATARMNET31202449fc[ +(0xd11+230-0xdf3)];__be32 DATARMNETc657c0a139[(0xd11+230-0xdf3)];};struct +DATARMNETd2991e8952{__be16 DATARMNET6acbeeebb1;__be16 DATARMNET29b8c05d14;__be32 + DATARMNETb3e70104e0;__be32 DATARMNET9a9c9d060a; +#if defined(__LITTLE_ENDIAN_BITFIELD) +u8 DATARMNET655b34c160:(0xd11+230-0xdf3);u8 DATARMNETcf2e43ad69: +(0xd11+230-0xdf3); +#elif defined (__BIG_ENDIAN_BITFIELD) +u8 DATARMNETcf2e43ad69:(0xd11+230-0xdf3);u8 DATARMNET655b34c160: +(0xd11+230-0xdf3); +#else +#error " error" +#endif +u8 DATARMNETd570802f3d;__be16 DATARMNET807cd6af6c;__be16 DATARMNET8891a7f7ce; +__be16 DATARMNET9921296467;};struct DATARMNET0b82084e89{__be16 +DATARMNET1b1c406ae9;__be16 DATARMNETdf0e8545ee;__be16 DATARMNET39a05c5524;__be16 + DATARMNET45a3ebe8e3;};struct DATARMNET4287f07234{__be16 DATARMNETa60d2ae3f6; +__be16 DATARMNET5e7452ec23;union{__be32 DATARMNET1a2be7b6c2;__be32 +DATARMNET949c2754de[(0xd11+230-0xdf3)];};union{__be32 DATARMNET0a28fa80f4;__be32 + DATARMNET45ec858bc5[(0xd11+230-0xdf3)];};union{struct{u8 DATARMNET19b03754c4;u8 + DATARMNET57bf608183;__be16 DATARMNETcf915688f5;};__be32 DATARMNETabd58f7f89;}; +u32 DATARMNETbc28a5970f;u16 DATARMNET4ca5ac9de1;u16 DATARMNET0aeee57ceb;u8 +DATARMNET388842c721;u8 DATARMNET7fa8b2acbf;};struct DATARMNETd812bcdbb5{struct +rmnet_frag_descriptor*DATARMNET719f68fb88;struct DATARMNET4287f07234 +DATARMNET144d119066;u32 DATARMNET645e8912b8;u16 DATARMNET1ef22e4c76;bool +DATARMNETf1b6b0a6cc;bool DATARMNET3eb91ee54d;bool DATARMNET8f59f5a745;};void +DATARMNET664568fcd0(void);void DATARMNET6a76048590(void);void +DATARMNET818b960147(void);void DATARMNETba38823a2f(void);bool +DATARMNET19eb0de3b2(void);void DATARMNETc70e73c8d4(struct list_head* +DATARMNETb5730f5283);void DATARMNET19d190f2bd(struct DATARMNETd812bcdbb5* +DATARMNET458b70e7e5,struct list_head*DATARMNET6f9bfa17e6);void +DATARMNET9292bebdd3(void*DATARMNETf0d9de7e2f);void DATARMNETb7e47d7254(void* +DATARMNETf0d9de7e2f);void DATARMNET95e1703026(struct rmnet_map_dl_ind_hdr* +DATARMNET7c7748ef7a,struct rmnet_map_control_command_header*DATARMNET8b07ee3e82) +;void DATARMNETc9dd320f49(struct rmnet_map_dl_ind_trl*DATARMNET2541770fea,struct + rmnet_map_control_command_header*DATARMNET8b07ee3e82); +#endif + diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.c b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.c new file mode 100644 index 0000000000..f1e0c46770 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.c @@ -0,0 +1,101 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 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 +#include +#include +#include "rmnet_map.h" +#include "rmnet_private.h" +#include "qmi_rmnet.h" +#include "rmnet_offload_state.h" +#include "rmnet_offload_engine.h" +MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32"); +#define DATARMNET1f03ff7987 (0xd2d+202-0xdf7) +static struct DATARMNET70f3b87b5d*DATARMNETe05748b000;static void +DATARMNETac9c8c14b1(void){struct rmnet_port*DATARMNETf0d9de7e2f= +DATARMNETe05748b000->DATARMNET403589239f;struct DATARMNET74bb35b8f2* +DATARMNET87b015f76f;qmi_rmnet_ps_ind_deregister(DATARMNETf0d9de7e2f,& +DATARMNETe05748b000->DATARMNET341393eda2);DATARMNET87b015f76f=& +DATARMNETe05748b000->DATARMNETa9f2b2f677;if(DATARMNET87b015f76f-> +DATARMNETc2832b8f85)rmnet_map_dl_ind_deregister(DATARMNETf0d9de7e2f,& +DATARMNET87b015f76f->DATARMNET8633ae8f1e);}static void DATARMNET345f805b34(void) +{LIST_HEAD(DATARMNET6f9bfa17e6);if(!DATARMNETe05748b000)return; +DATARMNETac9c8c14b1();DATARMNETba38823a2f();DATARMNET560e127137(); +synchronize_rcu();DATARMNETae70636c90(&DATARMNET6f9bfa17e6);DATARMNETb98b78b8e3( +);kfree(DATARMNETe05748b000);DATARMNETe05748b000=NULL;}static int +DATARMNETd68e3594a7(void){struct rmnet_port*DATARMNETf0d9de7e2f= +DATARMNETe05748b000->DATARMNET403589239f;struct qmi_rmnet_ps_ind* +DATARMNETbc78d7fd3c;struct DATARMNET74bb35b8f2*DATARMNET87b015f76f;struct +rmnet_map_dl_ind*DATARMNET8633ae8f1e;int DATARMNETb14e52a504=DATARMNET0529bb9c4e +;DATARMNETbc78d7fd3c=&DATARMNETe05748b000->DATARMNET341393eda2; +DATARMNETbc78d7fd3c->ps_on_handler=DATARMNET9292bebdd3;DATARMNETbc78d7fd3c-> +ps_off_handler=DATARMNETb7e47d7254;if(qmi_rmnet_ps_ind_register( +DATARMNETf0d9de7e2f,DATARMNETbc78d7fd3c)){DATARMNETb14e52a504= +DATARMNET8e1c5c09f8;pr_warn( +"\x25\x73\x28\x29\x3a\x20\x50\x53\x20\x43\x42\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);}if(DATARMNETf0d9de7e2f->data_format& +RMNET_INGRESS_FORMAT_DL_MARKER_V2){DATARMNET87b015f76f=&DATARMNETe05748b000-> +DATARMNETa9f2b2f677;DATARMNET8633ae8f1e=&DATARMNET87b015f76f-> +DATARMNET8633ae8f1e;DATARMNET8633ae8f1e->priority=DATARMNET1f03ff7987; +DATARMNET8633ae8f1e->dl_hdr_handler_v2=DATARMNET95e1703026;DATARMNET8633ae8f1e-> +dl_trl_handler_v2=DATARMNETc9dd320f49;if(rmnet_map_dl_ind_register( +DATARMNETf0d9de7e2f,DATARMNET8633ae8f1e)){DATARMNETb14e52a504= +DATARMNET8e1c5c09f8;pr_warn( +"\x25\x73\x28\x29\x3a\x20\x44\x4c\x20\x43\x42\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);}else{DATARMNET87b015f76f->DATARMNETc2832b8f85=true;}} +DATARMNETd4230b6bfe();return DATARMNETb14e52a504;}static int DATARMNET9f53d54812 +(struct rmnet_port*DATARMNETf0d9de7e2f){int DATARMNETb14e52a504; +DATARMNETe05748b000=kzalloc(sizeof(*DATARMNETe05748b000),GFP_KERNEL);if(! +DATARMNETe05748b000){pr_err( +"\x25\x73\x28\x29\x3a\x20\x52\x65\x73\x6f\x75\x72\x63\x65\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);return DATARMNETb881657565;}DATARMNETe05748b000->DATARMNET403589239f= +DATARMNETf0d9de7e2f;DATARMNETb14e52a504=DATARMNETdbcaf01255();if( +DATARMNETb14e52a504<(0xd2d+202-0xdf7))goto DATARMNET1d7e728ddf; +DATARMNETb14e52a504=DATARMNETd68e3594a7();if(DATARMNETb14e52a504!= +DATARMNET0529bb9c4e){pr_warn( +"\x25\x73\x28\x29\x3a\x20\x43\x61\x6c\x6c\x62\x61\x63\x6b\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);}DATARMNETe05748b000->DATARMNETcb2b3ae8e4=(0xd26+209-0xdf6); +DATARMNET818b960147();return DATARMNETb14e52a504;DATARMNET1d7e728ddf:kfree( +DATARMNETe05748b000);DATARMNETe05748b000=NULL;return DATARMNETb14e52a504;}static + int DATARMNET7dec24813e(struct notifier_block*DATARMNET272c159b3c,unsigned long + DATARMNET4abd997295,void*DATARMNET3f254bae11){struct net_device* +DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(DATARMNET3f254bae11);struct +rmnet_port*DATARMNETf0d9de7e2f;struct rmnet_priv*DATARMNETe823dcf978;int +DATARMNETb14e52a504;(void)DATARMNET272c159b3c;if(!DATARMNET00dcb79bc4||strncmp( +DATARMNET00dcb79bc4->name,"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61", +(0xd27+224-0xdfd)))goto DATARMNETaabe3a05f8;switch(DATARMNET4abd997295){case +NETDEV_REGISTER:if(DATARMNETe05748b000){DATARMNETe05748b000->DATARMNETcb2b3ae8e4 +++;goto DATARMNETaabe3a05f8;}DATARMNETe823dcf978=netdev_priv(DATARMNET00dcb79bc4 +);DATARMNETf0d9de7e2f=rmnet_get_port(DATARMNETe823dcf978->real_dev);if(! +DATARMNETf0d9de7e2f){pr_err( +"\x25\x73\x28\x29\x3a\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x72\x6d\x6e\x65\x74\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x25\x73" "\n" +,__func__,DATARMNET00dcb79bc4->name);goto DATARMNETaabe3a05f8;}pr_info( +"\x25\x73\x28\x29\x3a\x20\x49\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x6f\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x25\x73" "\n" +,__func__,DATARMNET00dcb79bc4->name);DATARMNETb14e52a504=DATARMNET9f53d54812( +DATARMNETf0d9de7e2f);if(DATARMNETb14e52a504==DATARMNETb881657565){pr_err( +"\x25\x73\x28\x29\x3a\x20\x49\x6e\x69\x74\x69\x61\x6c\x69\x7a\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);goto DATARMNETaabe3a05f8;}break;case NETDEV_UNREGISTER:if(! +DATARMNETe05748b000)goto DATARMNETaabe3a05f8;if(--DATARMNETe05748b000-> +DATARMNETcb2b3ae8e4)goto DATARMNETaabe3a05f8;pr_info( +"\x25\x73\x28\x29\x3a\x20\x55\x6e\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x6f\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x25\x73" "\n" +,__func__,DATARMNET00dcb79bc4->name);DATARMNET345f805b34();break;} +DATARMNETaabe3a05f8:return NOTIFY_DONE;}static struct notifier_block +DATARMNETcae9c64c41={.notifier_call=DATARMNET7dec24813e,.priority= +(0xd26+209-0xdf6),};static int __init DATARMNETb1c42acd9c(void){pr_info( +"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x6f\x66\x66\x6c\x6f\x61\x64\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67" "\n" +,__func__);return register_netdevice_notifier(&DATARMNETcae9c64c41);}static void + __exit DATARMNET0f6d85e415(void){pr_info( +"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x6f\x66\x66\x6c\x6f\x61\x64\x20\x65\x78\x69\x74\x69\x6e\x67" "\n" +,__func__);unregister_netdevice_notifier(&DATARMNETcae9c64c41);}struct +DATARMNET70f3b87b5d*DATARMNETc2a630b113(void){return DATARMNETe05748b000;} +module_init(DATARMNETb1c42acd9c);module_exit(DATARMNET0f6d85e415); diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.h b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.h new file mode 100644 index 0000000000..d722b5f214 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.h @@ -0,0 +1,30 @@ +/* Copyright (c) 2013-2014, 2016-2017, 2019-2020 The Linux Foundation. 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. + */ + +#ifndef DATARMNETc03e325706 +#define DATARMNETc03e325706 +#include "rmnet_offload_engine.h" +#include "rmnet_map.h" +#include "rmnet_descriptor.h" +#include "qmi_rmnet.h" +enum{DATARMNET0529bb9c4e,DATARMNET8e1c5c09f8,DATARMNETb881657565,};extern void(* +rmnet_perf_desc_entry)(struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct +rmnet_port*DATARMNETf0d9de7e2f);extern void(*rmnet_perf_chain_end)(void);struct +DATARMNET74bb35b8f2{struct rmnet_map_dl_ind DATARMNET8633ae8f1e;u32 +DATARMNETe2251ce433;u32 DATARMNET7f59b108db;bool DATARMNETc2832b8f85;bool +DATARMNETb165d2c5c4;};struct DATARMNET70f3b87b5d{struct rmnet_port* +DATARMNET403589239f;struct DATARMNET74bb35b8f2 DATARMNETa9f2b2f677;struct +qmi_rmnet_ps_ind DATARMNET341393eda2;struct DATARMNET907d58c807 +DATARMNETebb45c8d86;u8 DATARMNETcb2b3ae8e4;};struct DATARMNET70f3b87b5d* +DATARMNETc2a630b113(void); +#endif + diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_stats.c b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_stats.c new file mode 100644 index 0000000000..2b41398425 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_stats.c @@ -0,0 +1,20 @@ +/* Copyright (c) 2018-2020, The Linux Foundation. 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 +#include "rmnet_offload_stats.h" +static u64 DATARMNET6c78aba0c8[DATARMNETd04f96aa13];module_param_array_named( +rmnet_offload_stat,DATARMNET6c78aba0c8,ullong,NULL,(0xcb7+5769-0x221c));void +DATARMNETbad3b5165e(u32 DATARMNET248f120dd5,u64 DATARMNETb639f6e1b1){if( +DATARMNET248f120dd5 +enum{DATARMNET9b3fdb0e16,DATARMNET65843ad009,DATARMNET1cddffce49, +DATARMNET372ef39ae4,DATARMNET30a4d88ea6,DATARMNETa03ed3629e,DATARMNET807e4dad18, +DATARMNET52b7da9033,DATARMNETf3f92fc0b9,DATARMNET5727f095ec,DATARMNET6a894ab63d, +DATARMNETddf572458d,DATARMNET47a963957c,DATARMNETb322de38be,DATARMNET38317c7efd, +DATARMNET31c0e41f5a,DATARMNET0cd1fa0d98,DATARMNET1c0d243816,DATARMNETc34a778ea2, +DATARMNETbc56977b7e,DATARMNETc9b8ef90d1,DATARMNET92f3434694,DATARMNETa76d93355c, +DATARMNET3067ea3199,DATARMNETf335e26298,DATARMNET8e1480cff2,DATARMNET787b04223a, +DATARMNETa121404606,DATARMNETd04f96aa13,};void DATARMNETbad3b5165e(u32 +DATARMNET248f120dd5,u64 DATARMNETb639f6e1b1);void DATARMNETa00cda79d0(u32 +DATARMNET248f120dd5); +#endif + diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.c b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.c new file mode 100644 index 0000000000..ae78cfe950 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.c @@ -0,0 +1,83 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. 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 +#include "rmnet_descriptor.h" +#include "rmnet_offload_main.h" +#include "rmnet_offload_engine.h" +#include "rmnet_offload_stats.h" +#include "rmnet_offload_knob.h" +union DATARMNETe0a7777e12{struct DATARMNETd2991e8952 DATARMNETe31a04a369;u8 +DATARMNET021aa8e68d[(0xf07+1090-0x130d)];};static bool DATARMNET2818ea93ec( +struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){struct DATARMNETd2991e8952* +DATARMNET2e7cc88971,DATARMNETd1ff6cd568;__be32 DATARMNETa8eeab014d;u8 +DATARMNETfb0677cc3c;DATARMNET2e7cc88971=rmnet_frag_header_ptr( +DATARMNET5fe4c722a8->DATARMNET719f68fb88,DATARMNET5fe4c722a8-> +DATARMNET144d119066.DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),& +DATARMNETd1ff6cd568);if(!DATARMNET2e7cc88971)return true;DATARMNETa8eeab014d= +(0xbf7+4796-0x1e04);DATARMNETfb0677cc3c=DATARMNET2e7cc88971->DATARMNETd570802f3d +;if(DATARMNET5fe4c722a8->DATARMNET719f68fb88->tcp_flags_set)DATARMNETfb0677cc3c= +(u8)ntohs(DATARMNET5fe4c722a8->DATARMNET719f68fb88->tcp_flags);if((! +DATARMNET5fe4c722a8->DATARMNET1ef22e4c76&&(DATARMNETfb0677cc3c& +(0xeb7+1158-0x132d)))||(DATARMNETfb0677cc3c&DATARMNETa8eeab014d))return true; +return false;}static bool DATARMNET829fcf5939(struct DATARMNETd7c9631acd* +DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){union +DATARMNETe0a7777e12*DATARMNET699c2c62cd,DATARMNETee66845de4;union +DATARMNETe0a7777e12*DATARMNET8814564ab9,DATARMNETa27d4d22be;struct +rmnet_frag_descriptor*DATARMNET48cfce4de4;u32 DATARMNET3c3abe9e2c, +DATARMNETefc9df3df2;DATARMNET48cfce4de4=list_first_entry(&DATARMNETaa568481cf-> +DATARMNETb76b79d0d5,struct rmnet_frag_descriptor,list);DATARMNET699c2c62cd= +rmnet_frag_header_ptr(DATARMNET48cfce4de4,DATARMNETaa568481cf-> +DATARMNET78fd20ce0e.DATARMNET4ca5ac9de1,DATARMNETaa568481cf->DATARMNET78fd20ce0e +.DATARMNET0aeee57ceb,&DATARMNETee66845de4);if(!DATARMNET699c2c62cd)return true; +DATARMNET8814564ab9=rmnet_frag_header_ptr(DATARMNET5fe4c722a8-> +DATARMNET719f68fb88,DATARMNET5fe4c722a8->DATARMNET144d119066.DATARMNET4ca5ac9de1 +,DATARMNET5fe4c722a8->DATARMNET144d119066.DATARMNET0aeee57ceb,& +DATARMNETa27d4d22be);if(!DATARMNET8814564ab9)return true;DATARMNET3c3abe9e2c= +DATARMNET699c2c62cd->DATARMNETe31a04a369.DATARMNETcf2e43ad69*(0xd11+230-0xdf3); +if(DATARMNET8814564ab9->DATARMNETe31a04a369.DATARMNETcf2e43ad69* +(0xd11+230-0xdf3)!=DATARMNET3c3abe9e2c)return true;for(DATARMNETefc9df3df2= +sizeof(DATARMNET699c2c62cd->DATARMNETe31a04a369);DATARMNETefc9df3df2< +DATARMNET3c3abe9e2c;DATARMNETefc9df3df2+=(0xd11+230-0xdf3)){if(*(u32*)( +DATARMNET699c2c62cd->DATARMNET021aa8e68d+DATARMNETefc9df3df2)^*(u32*)( +DATARMNET8814564ab9->DATARMNET021aa8e68d+DATARMNETefc9df3df2))return true;} +return false;}static int DATARMNET9a13d70865(struct DATARMNETd7c9631acd* +DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){u64 +DATARMNET7457d496cb;u32 DATARMNET95acece3fc;if(DATARMNET2818ea93ec( +DATARMNET5fe4c722a8)){DATARMNETa00cda79d0(DATARMNETb322de38be);return +DATARMNET7af645849a;}if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return +DATARMNET0413b43080;if(DATARMNET829fcf5939(DATARMNETaa568481cf, +DATARMNET5fe4c722a8)){DATARMNETa00cda79d0(DATARMNET38317c7efd);return +DATARMNETb0bd5db24d;}if(DATARMNET5fe4c722a8->DATARMNET144d119066. +DATARMNETbc28a5970f^DATARMNETaa568481cf->DATARMNET78fd20ce0e.DATARMNETbc28a5970f +){DATARMNETa00cda79d0(DATARMNET31c0e41f5a);return DATARMNET7af645849a;} +DATARMNET95acece3fc=(DATARMNET5fe4c722a8->DATARMNET719f68fb88->gso_size)?: +DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;if(DATARMNET95acece3fc!= +DATARMNETaa568481cf->DATARMNET1978d5d8de){DATARMNETa00cda79d0( +DATARMNET0cd1fa0d98);return DATARMNETb0bd5db24d;}DATARMNET7457d496cb= +DATARMNETf1d1b8287f(DATARMNETdf66588a73);if(DATARMNET5fe4c722a8-> +DATARMNET1ef22e4c76+DATARMNETaa568481cf->DATARMNETcf28ae376b>= +DATARMNET7457d496cb){DATARMNETa00cda79d0(DATARMNET1c0d243816);return +DATARMNETb0bd5db24d;}DATARMNET5fe4c722a8->DATARMNETf1b6b0a6cc=false;return +DATARMNET0413b43080;}bool DATARMNET4c7cdc25b7(struct DATARMNETd7c9631acd* +DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,bool +DATARMNETd87669e323,struct list_head*DATARMNET6f9bfa17e6){int +DATARMNETb14e52a504;if(DATARMNETd87669e323){DATARMNETa00cda79d0( +DATARMNET47a963957c);DATARMNETa3055c21f2(DATARMNETaa568481cf,DATARMNET6f9bfa17e6 +);DATARMNET19d190f2bd(DATARMNET5fe4c722a8,DATARMNET6f9bfa17e6);return true;} +DATARMNETb14e52a504=DATARMNET9a13d70865(DATARMNETaa568481cf,DATARMNET5fe4c722a8) +;if(DATARMNETb14e52a504==DATARMNET0413b43080){DATARMNET33aa5df9ef( +DATARMNETaa568481cf,DATARMNET5fe4c722a8);}else if(DATARMNETb14e52a504== +DATARMNETb0bd5db24d){DATARMNETa3055c21f2(DATARMNETaa568481cf,DATARMNET6f9bfa17e6 +);DATARMNET33aa5df9ef(DATARMNETaa568481cf,DATARMNET5fe4c722a8);}else{ +DATARMNETa3055c21f2(DATARMNETaa568481cf,DATARMNET6f9bfa17e6);DATARMNET19d190f2bd +(DATARMNET5fe4c722a8,DATARMNET6f9bfa17e6);}return true;} diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.h b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.h new file mode 100644 index 0000000000..863c53c19b --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.h @@ -0,0 +1,21 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. 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. + */ + +#ifndef DATARMNET1f0bf20b47 +#define DATARMNET1f0bf20b47 +#include "rmnet_offload_main.h" +#include "rmnet_offload_engine.h" +bool DATARMNET4c7cdc25b7(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct +DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,bool DATARMNETd87669e323,struct +list_head*DATARMNET6f9bfa17e6); +#endif + diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.c b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.c new file mode 100644 index 0000000000..33d97f3314 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.c @@ -0,0 +1,40 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. 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 "rmnet_descriptor.h" +#include "rmnet_offload_main.h" +#include "rmnet_offload_engine.h" +#include "rmnet_offload_stats.h" +#include "rmnet_offload_knob.h" +static int DATARMNETdf8e0dc3a0(struct DATARMNETd7c9631acd*DATARMNETaa568481cf, +struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){u64 DATARMNET71c7d18d88;u16 +DATARMNET95acece3fc;if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return +DATARMNET0413b43080;DATARMNET95acece3fc=(DATARMNET5fe4c722a8-> +DATARMNET719f68fb88->gso_size)?:DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;if( +DATARMNET95acece3fc!=DATARMNETaa568481cf->DATARMNET1978d5d8de){ +DATARMNETa00cda79d0(DATARMNETbc56977b7e);return DATARMNETb0bd5db24d;} +DATARMNET71c7d18d88=DATARMNETf1d1b8287f(DATARMNET9c85bb95a3);if( +DATARMNET5fe4c722a8->DATARMNET1ef22e4c76+DATARMNETaa568481cf-> +DATARMNETcf28ae376b>=DATARMNET71c7d18d88){DATARMNETa00cda79d0( +DATARMNETc9b8ef90d1);return DATARMNETb0bd5db24d;}DATARMNET5fe4c722a8-> +DATARMNETf1b6b0a6cc=false;return DATARMNET0413b43080;}bool DATARMNET8dc47eb7af( +struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct DATARMNETd812bcdbb5* +DATARMNET5fe4c722a8,bool DATARMNETd87669e323,struct list_head* +DATARMNET6f9bfa17e6){int DATARMNETb14e52a504;if(DATARMNETd87669e323){ +DATARMNETa00cda79d0(DATARMNETc34a778ea2);DATARMNETa3055c21f2(DATARMNETaa568481cf +,DATARMNET6f9bfa17e6);DATARMNET19d190f2bd(DATARMNET5fe4c722a8, +DATARMNET6f9bfa17e6);return true;}DATARMNETb14e52a504=DATARMNETdf8e0dc3a0( +DATARMNETaa568481cf,DATARMNET5fe4c722a8);if(DATARMNETb14e52a504== +DATARMNET0413b43080){DATARMNET33aa5df9ef(DATARMNETaa568481cf,DATARMNET5fe4c722a8 +);}else if(DATARMNETb14e52a504==DATARMNETb0bd5db24d){DATARMNETa3055c21f2( +DATARMNETaa568481cf,DATARMNET6f9bfa17e6);DATARMNET33aa5df9ef(DATARMNETaa568481cf +,DATARMNET5fe4c722a8);}return true;} diff --git a/qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.h b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.h new file mode 100644 index 0000000000..de6a778721 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.h @@ -0,0 +1,21 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. 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. + */ + +#ifndef DATARMNETd4ae2cf0b5 +#define DATARMNETd4ae2cf0b5 +#include "rmnet_offload_main.h" +#include "rmnet_offload_engine.h" +bool DATARMNET8dc47eb7af(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct +DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,bool DATARMNETd87669e323,struct +list_head*DATARMNET6f9bfa17e6); +#endif + diff --git a/qcom/opensource/datarmnet-ext/perf/Android.mk b/qcom/opensource/datarmnet-ext/perf/Android.mk new file mode 100644 index 0000000000..fc0764ac47 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/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 += parrot + +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 diff --git a/qcom/opensource/datarmnet-ext/perf/Kbuild b/qcom/opensource/datarmnet-ext/perf/Kbuild new file mode 100644 index 0000000000..096f66f286 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/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 diff --git a/qcom/opensource/datarmnet-ext/perf/Kconfig b/qcom/opensource/datarmnet-ext/perf/Kconfig new file mode 100644 index 0000000000..c25d92c70d --- /dev/null +++ b/qcom/opensource/datarmnet-ext/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 diff --git a/qcom/opensource/datarmnet-ext/perf/Makefile b/qcom/opensource/datarmnet-ext/perf/Makefile new file mode 100644 index 0000000000..33b7f2caa5 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/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 diff --git a/qcom/opensource/datarmnet-ext/perf/rmnet_perf_main.c b/qcom/opensource/datarmnet-ext/perf/rmnet_perf_main.c new file mode 100644 index 0000000000..70b6fdb254 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/perf/rmnet_perf_main.c @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * RMNET PERF framework + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={ +"\x65\x35\x36\x63\x62\x35\x35\x64","\x33\x39\x63\x62\x64\x37\x64\x35", +"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x64\x65\x34\x39\x64\x62\x35", +"\x62\x31\x63\x34\x34\x62\x34\x63"};module_param_array(verinfo,charp,NULL, +(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo, +"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72" +);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,int DATARMNET611d08d671){u8* +DATARMNET352416e828,DATARMNETd9bda61912;struct udphdr*DATARMNETa1abb4897c, +DATARMNET7b1af10647;DATARMNETa1abb4897c=skb_header_pointer(DATARMNET543491eb0f, +DATARMNET611d08d671,sizeof(*DATARMNETa1abb4897c),&DATARMNET7b1af10647);if(! +DATARMNETa1abb4897c||!DATARMNETe1ef3edea2(DATARMNETa1abb4897c))return false;if( +be16_to_cpu(DATARMNETa1abb4897c->len)protocol==htons(ETH_P_IP)){ +struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;DATARMNET86f1f2cdc9= +skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(* +DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9|| +ip_is_fragment(DATARMNET86f1f2cdc9)||DATARMNET86f1f2cdc9->protocol!=IPPROTO_UDP) +return-EINVAL;if(DATARMNET77ab42949f(DATARMNET543491eb0f,(DATARMNET86f1f2cdc9-> +ihl)*(0xd11+230-0xdf3)))goto DATARMNET606558916b;return-EINVAL;}if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr* +DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;u8 protocol;int DATARMNET611d08d671= +(0xd2d+202-0xdf7);__be16 DATARMNET98fed39916=(0xd2d+202-0xdf7); +DATARMNETbf55123e5b=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7), +sizeof(*DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b) +return-EINVAL;protocol=DATARMNETbf55123e5b->nexthdr;DATARMNET611d08d671= +ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(struct ipv6hdr),&protocol,& +DATARMNET98fed39916);if(DATARMNET98fed39916||protocol!=IPPROTO_UDP|| +DATARMNET611d08d671==-(0xd26+209-0xdf6))return-EINVAL;if(DATARMNET77ab42949f( +DATARMNET543491eb0f,DATARMNET611d08d671))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)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e; +DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7), +sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9|| +ip_is_fragment(DATARMNET86f1f2cdc9)||DATARMNET86f1f2cdc9->protocol!=IPPROTO_UDP) +return;if(DATARMNET77ab42949f(DATARMNET543491eb0f,(DATARMNET86f1f2cdc9->ihl)* +(0xd11+230-0xdf3)))goto DATARMNETb261f33b7b;return;}if(DATARMNET543491eb0f-> +protocol==htons(ETH_P_IPV6)){struct ipv6hdr*DATARMNETbf55123e5b, +DATARMNETcf1d9e2c1e;u8 protocol;int DATARMNET611d08d671=(0xd2d+202-0xdf7);__be16 + DATARMNET98fed39916=(0xd2d+202-0xdf7);DATARMNETbf55123e5b=skb_header_pointer( +DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),& +DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)return;protocol=DATARMNETbf55123e5b +->nexthdr;DATARMNET611d08d671=ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(struct + ipv6hdr),&protocol,&DATARMNET98fed39916);if(DATARMNET98fed39916||protocol!= +IPPROTO_UDP||DATARMNET611d08d671==-(0xd26+209-0xdf6))return;if( +DATARMNET77ab42949f(DATARMNET543491eb0f,DATARMNET611d08d671))goto +DATARMNETb261f33b7b;}return;DATARMNETb261f33b7b:DATARMNET543491eb0f->priority= +14286874;}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);synchronize_rcu();}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); diff --git a/qcom/opensource/datarmnet-ext/perf_tether/Android.mk b/qcom/opensource/datarmnet-ext/perf_tether/Android.mk new file mode 100644 index 0000000000..e21bf42f12 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/perf_tether/Android.mk @@ -0,0 +1,40 @@ +ifneq ($(TARGET_BOARD_AUTO),true) +ifneq ($(TARGET_BOARD_PLATFORM),qssi) + +RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST := lahaina +RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += taro +RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += parrot + +ifeq ($(call is-board-platform-in-list, $(RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST)),true) +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) + +LOCAL_MODULE := rmnet_perf_tether.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 + +#Must be built after the core rmnet module +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 + +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 diff --git a/qcom/opensource/datarmnet-ext/perf_tether/Kbuild b/qcom/opensource/datarmnet-ext/perf_tether/Kbuild new file mode 100644 index 0000000000..19eb2717b6 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/perf_tether/Kbuild @@ -0,0 +1,5 @@ +obj-m += rmnet_perf_tether.o +#Need core headers +ccflags-y := -I$(RMNET_CORE_INC_DIR) \ + $(call cc-option,-Wno-misleading-indentation) +rmnet_perf_tether-y := rmnet_perf_tether_main.o diff --git a/qcom/opensource/datarmnet-ext/perf_tether/Kconfig b/qcom/opensource/datarmnet-ext/perf_tether/Kconfig new file mode 100644 index 0000000000..e57deaa965 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/perf_tether/Kconfig @@ -0,0 +1,10 @@ +# +# RMNET_PERF_TETHER driver +# + +menuconfig RMNET_PERF_TETHER + tristate "Rmnet perf tethering support" + default m + depends on RMNET_CORE + ---help--- + Offload support for the RmNet driver diff --git a/qcom/opensource/datarmnet-ext/perf_tether/Makefile b/qcom/opensource/datarmnet-ext/perf_tether/Makefile new file mode 100644 index 0000000000..4a9ebcd981 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/perf_tether/Makefile @@ -0,0 +1,16 @@ +#By default build for CLD +RMNET_PERF_TETHER_SELECT := CONFIG_RMNET_PERF_TETHER=m +KBUILD_OPTIONS += $(RMNET_PERF_TETHER_SELECT) +KBUILD_OPTIONS += $(KBUILD_EXTRA) # Extra config if any +KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_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 diff --git a/qcom/opensource/datarmnet-ext/perf_tether/rmnet_perf_tether_main.c b/qcom/opensource/datarmnet-ext/perf_tether/rmnet_perf_tether_main.c new file mode 100644 index 0000000000..5428ea05da --- /dev/null +++ b/qcom/opensource/datarmnet-ext/perf_tether/rmnet_perf_tether_main.c @@ -0,0 +1,233 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * RMNET PERF TETHER framework + * + */ + +#include +#include +#include "rmnet_descriptor.h" +#include "rmnet_map.h" +MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={ +"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x39\x61\x66\x39\x62\x64\x34"}; +module_param_array(verinfo,charp,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +verinfo, +"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72" +);extern void(*rmnet_perf_tether_ingress_hook)(struct tcphdr*DATARMNET2e7cc88971 +,struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct iphdr* +DATARMNET86f1f2cdc9);extern void(*rmnet_perf_tether_egress_hook)(struct sk_buff* +DATARMNET543491eb0f);extern void(*rmnet_perf_tether_cmd_hook)(u8 +DATARMNET07b1a05079,u64 DATARMNETcc6099cb14);struct DATARMNETf9eee4068d{u8 +DATARMNETd0ef85194f;};static struct DATARMNETf9eee4068d*DATARMNET8a1e9920bf; +unsigned int configure_knob1 __read_mostly=(0xd2d+202-0xdf7);module_param( +configure_knob1,uint,(0xdb7+6665-0x261c));unsigned int knob1 __read_mostly= +(0xd2d+202-0xdf7);module_param(knob1,uint,(0xdb7+6665-0x261c));unsigned int +configure_knob2 __read_mostly=(0xd2d+202-0xdf7);module_param(configure_knob2, +uint,(0xdb7+6665-0x261c));unsigned int knob2 __read_mostly=(0xd2d+202-0xdf7); +module_param(knob2,uint,(0xdb7+6665-0x261c));static DEFINE_SPINLOCK( +DATARMNETcf56327171); +#define DATARMNETd063f2edce ((0xef7+1112-0x131d)) +#define DATARMNET4c845df513 \ + (const_ilog2(DATARMNETd063f2edce)) +static DEFINE_HASHTABLE(DATARMNET031f18e039,DATARMNET4c845df513);struct +DATARMNETb477d446e7{struct list_head list;struct hlist_node hlist;u32 hash; +__be32 DATARMNETdfd47b00ff[(0xd20+231-0xdfc)];u32 DATARMNET4b119c4ff3;};struct +list_head DATARMNETc588a190d4=LIST_HEAD_INIT(DATARMNETc588a190d4); +#define DATARMNETc99cb98651 ((0xd26+209-0xdf6)) +#define DATARMNETfc6d4bac8a ((0xd19+238-0xdfb)) +#define DATARMNETc152fdcc34 ((0xec7+1129-0x1315)) +#define DATARMNET7bd625a8c0 ((0xd26+209-0xdf6)) +struct DATARMNETb0eda9d28e{u8 DATARMNETba8c503d04;u8 DATARMNET4f46aa107b;u8 +DATARMNETc59f891d69;u8 DATARMNETecca9147fd;};static u32 DATARMNET233bccd449( +struct sk_buff*DATARMNET543491eb0f,int*DATARMNET76bafbc6ce,int +DATARMNET32b08042b9,int DATARMNET3a925295d9){__be32 DATARMNETdfd47b00ff[ +(0xd20+231-0xdfc)];u32 DATARMNET5ebf661879;if(DATARMNET543491eb0f->protocol== +htons(ETH_P_IP)){if(!tcp_hdr(DATARMNET543491eb0f)->syn)goto DATARMNET1d7e728ddf; +if(DATARMNET32b08042b9){if(!tcp_hdr(DATARMNET543491eb0f)->ack)goto +DATARMNET1d7e728ddf;}else{if(tcp_hdr(DATARMNET543491eb0f)->ack)goto +DATARMNET1d7e728ddf;}DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)]=DATARMNET3a925295d9? +ip_hdr(DATARMNET543491eb0f)->daddr:ip_hdr(DATARMNET543491eb0f)->saddr; +DATARMNETdfd47b00ff[(0xd26+209-0xdf6)]=DATARMNET3a925295d9?ip_hdr( +DATARMNET543491eb0f)->saddr:ip_hdr(DATARMNET543491eb0f)->daddr; +DATARMNETdfd47b00ff[(0xd1f+216-0xdf5)]=ip_hdr(DATARMNET543491eb0f)->protocol; +DATARMNETdfd47b00ff[(0xd18+223-0xdf4)]=DATARMNET3a925295d9?tcp_hdr( +DATARMNET543491eb0f)->dest:tcp_hdr(DATARMNET543491eb0f)->source; +DATARMNETdfd47b00ff[(0xd11+230-0xdf3)]=DATARMNET3a925295d9?tcp_hdr( +DATARMNET543491eb0f)->source:tcp_hdr(DATARMNET543491eb0f)->dest; +DATARMNET5ebf661879=(0xd0a+237-0xdf2);}else if(DATARMNET543491eb0f->protocol== +htons(ETH_P_IPV6)){if(!tcp_hdr(DATARMNET543491eb0f)->syn)goto +DATARMNET1d7e728ddf;if(DATARMNET32b08042b9){if(!tcp_hdr(DATARMNET543491eb0f)-> +ack)goto DATARMNET1d7e728ddf;}else{if(tcp_hdr(DATARMNET543491eb0f)->ack)goto +DATARMNET1d7e728ddf;}memcpy(&DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)], +DATARMNET3a925295d9?ipv6_hdr(DATARMNET543491eb0f)->daddr.s6_addr:ipv6_hdr( +DATARMNET543491eb0f)->saddr.s6_addr,sizeof(struct in6_addr));memcpy(& +DATARMNETdfd47b00ff[(0xd0a+237-0xdf2)],DATARMNET3a925295d9?ipv6_hdr( +DATARMNET543491eb0f)->saddr.s6_addr:ipv6_hdr(DATARMNET543491eb0f)->daddr.s6_addr +,sizeof(struct in6_addr));DATARMNETdfd47b00ff[(0xd35+210-0xdff)]=ipv6_hdr( +DATARMNET543491eb0f)->nexthdr;DATARMNETdfd47b00ff[9]=tcp_hdr(DATARMNET543491eb0f +)->dest;DATARMNETdfd47b00ff[(0xd27+224-0xdfd)]=tcp_hdr(DATARMNET543491eb0f)-> +source;DATARMNET5ebf661879=(0xd20+231-0xdfc);}else{goto DATARMNET1d7e728ddf;}* +DATARMNET76bafbc6ce=(0xd26+209-0xdf6);return jhash2(DATARMNETdfd47b00ff, +DATARMNET5ebf661879,(0xd2d+202-0xdf7));DATARMNET1d7e728ddf:*DATARMNET76bafbc6ce= +(0xd2d+202-0xdf7);return(0xd2d+202-0xdf7);}static void DATARMNET9d42c8a184( +struct tcphdr*DATARMNET2e7cc88971){if(DATARMNET2e7cc88971->syn&& +DATARMNET2e7cc88971->ack){if(configure_knob1){if(knob1>65535)knob1=65535; +DATARMNET2e7cc88971->window=cpu_to_be16(knob1);}if(configure_knob2){unsigned +char*DATARMNET7b34b7b5be;u32 DATARMNET539d2ad3f2;if(knob2>TCP_MAX_WSCALE)knob2= +TCP_MAX_WSCALE;DATARMNET539d2ad3f2=DATARMNET2e7cc88971->doff*(0xd11+230-0xdf3)- +sizeof(struct tcphdr);DATARMNET7b34b7b5be=(unsigned char*)(DATARMNET2e7cc88971+ +(0xd26+209-0xdf6));while(DATARMNET539d2ad3f2>(0xd2d+202-0xdf7)){int +DATARMNET969cfb9094=*DATARMNET7b34b7b5be++;int DATARMNET68a21637e9;switch( +DATARMNET969cfb9094){case TCPOPT_EOL:return;case TCPOPT_NOP:DATARMNET539d2ad3f2 +--;continue;default:if(DATARMNET539d2ad3f2<(0xd1f+216-0xdf5))return; +DATARMNET68a21637e9=*DATARMNET7b34b7b5be++;if(DATARMNET68a21637e9< +(0xd1f+216-0xdf5))return;if(DATARMNET68a21637e9>DATARMNET539d2ad3f2)return;if( +DATARMNET969cfb9094==TCPOPT_WINDOW)*DATARMNET7b34b7b5be=knob2; +DATARMNET7b34b7b5be+=DATARMNET68a21637e9-(0xd1f+216-0xdf5);DATARMNET539d2ad3f2-= +DATARMNET68a21637e9;}}}}}static int DATARMNET94d0b7e790(struct +DATARMNETb477d446e7*DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f){if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){if((DATARMNET63b1a086d5-> +DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)]==ip_hdr(DATARMNET543491eb0f)->saddr)&&( +DATARMNET63b1a086d5->DATARMNETdfd47b00ff[(0xd26+209-0xdf6)]==ip_hdr( +DATARMNET543491eb0f)->daddr)&&(DATARMNET63b1a086d5->DATARMNETdfd47b00ff[ +(0xd1f+216-0xdf5)]==ip_hdr(DATARMNET543491eb0f)->protocol)&&(DATARMNET63b1a086d5 +->DATARMNETdfd47b00ff[(0xd18+223-0xdf4)]==tcp_hdr(DATARMNET543491eb0f)->source) +&&(DATARMNET63b1a086d5->DATARMNETdfd47b00ff[(0xd11+230-0xdf3)]==tcp_hdr( +DATARMNET543491eb0f)->dest)&&(DATARMNET63b1a086d5->DATARMNET4b119c4ff3== +(0xd0a+237-0xdf2)))return(0xd2d+202-0xdf7);}else if(DATARMNET543491eb0f-> +protocol==htons(ETH_P_IPV6)){if((!memcmp(&DATARMNET63b1a086d5-> +DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)],ipv6_hdr(DATARMNET543491eb0f)->saddr. +s6_addr,sizeof(struct in6_addr)))&&(!memcmp(&DATARMNET63b1a086d5-> +DATARMNETdfd47b00ff[(0xd0a+237-0xdf2)],ipv6_hdr(DATARMNET543491eb0f)->daddr. +s6_addr,sizeof(struct in6_addr)))&&(DATARMNET63b1a086d5->DATARMNETdfd47b00ff[ +(0xd35+210-0xdff)]==ipv6_hdr(DATARMNET543491eb0f)->nexthdr)&&( +DATARMNET63b1a086d5->DATARMNETdfd47b00ff[9]==tcp_hdr(DATARMNET543491eb0f)-> +source)&&(DATARMNET63b1a086d5->DATARMNETdfd47b00ff[(0xd27+224-0xdfd)]==tcp_hdr( +DATARMNET543491eb0f)->dest)&&(DATARMNET63b1a086d5->DATARMNET4b119c4ff3== +(0xd20+231-0xdfc)))return(0xd2d+202-0xdf7);}return(0xd26+209-0xdf6);}void +DATARMNETe70d5ec61a(struct tcphdr*DATARMNET2e7cc88971,struct sk_buff* +DATARMNET543491eb0f){int DATARMNET76bafbc6ce=(0xd2d+202-0xdf7);u32 hash;unsigned + long DATARMNETfb0677cc3c;struct DATARMNETb477d446e7*DATARMNET63b1a086d5,* +DATARMNET0386f6f82a=NULL;if(!configure_knob1&&!configure_knob2)return;hash= +DATARMNET233bccd449(DATARMNET543491eb0f,&DATARMNET76bafbc6ce,(0xd26+209-0xdf6), +(0xd2d+202-0xdf7));if(!DATARMNET76bafbc6ce)return;spin_lock_irqsave(& +DATARMNETcf56327171,DATARMNETfb0677cc3c);hash_for_each_possible( +DATARMNET031f18e039,DATARMNET63b1a086d5,hlist,hash){if(!DATARMNET94d0b7e790( +DATARMNET63b1a086d5,DATARMNET543491eb0f)){DATARMNET0386f6f82a= +DATARMNET63b1a086d5;break;}DATARMNET0386f6f82a=NULL;}if(!DATARMNET0386f6f82a){ +spin_unlock_irqrestore(&DATARMNETcf56327171,DATARMNETfb0677cc3c);return;}if( +DATARMNET63b1a086d5){hash_del(&DATARMNET63b1a086d5->hlist);list_add_tail(& +DATARMNET63b1a086d5->list,&DATARMNETc588a190d4);}spin_unlock_irqrestore(& +DATARMNETcf56327171,DATARMNETfb0677cc3c);DATARMNET9d42c8a184(DATARMNET2e7cc88971 +);}static void DATARMNET9eb31df630(struct DATARMNETb477d446e7* +DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f){if(DATARMNET543491eb0f-> +protocol==htons(ETH_P_IP)){DATARMNET63b1a086d5->DATARMNETdfd47b00ff[ +(0xd2d+202-0xdf7)]=ip_hdr(DATARMNET543491eb0f)->daddr;DATARMNET63b1a086d5-> +DATARMNETdfd47b00ff[(0xd26+209-0xdf6)]=ip_hdr(DATARMNET543491eb0f)->saddr; +DATARMNET63b1a086d5->DATARMNETdfd47b00ff[(0xd1f+216-0xdf5)]=ip_hdr( +DATARMNET543491eb0f)->protocol;DATARMNET63b1a086d5->DATARMNETdfd47b00ff[ +(0xd18+223-0xdf4)]=tcp_hdr(DATARMNET543491eb0f)->dest;DATARMNET63b1a086d5-> +DATARMNETdfd47b00ff[(0xd11+230-0xdf3)]=tcp_hdr(DATARMNET543491eb0f)->source; +DATARMNET63b1a086d5->DATARMNET4b119c4ff3=(0xd0a+237-0xdf2);}else if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){memcpy(&DATARMNET63b1a086d5-> +DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)],ipv6_hdr(DATARMNET543491eb0f)->daddr. +s6_addr,sizeof(struct in6_addr));memcpy(&DATARMNET63b1a086d5-> +DATARMNETdfd47b00ff[(0xd0a+237-0xdf2)],ipv6_hdr(DATARMNET543491eb0f)->saddr. +s6_addr,sizeof(struct in6_addr));DATARMNET63b1a086d5->DATARMNETdfd47b00ff[ +(0xd35+210-0xdff)]=ipv6_hdr(DATARMNET543491eb0f)->nexthdr;DATARMNET63b1a086d5-> +DATARMNETdfd47b00ff[9]=tcp_hdr(DATARMNET543491eb0f)->dest;DATARMNET63b1a086d5-> +DATARMNETdfd47b00ff[(0xd27+224-0xdfd)]=tcp_hdr(DATARMNET543491eb0f)->source; +DATARMNET63b1a086d5->DATARMNET4b119c4ff3=(0xd20+231-0xdfc);}}void +DATARMNET6ab362e985(struct sk_buff*DATARMNET543491eb0f){int DATARMNET76bafbc6ce= +(0xd2d+202-0xdf7);u32 hash;unsigned long DATARMNETfb0677cc3c;struct +DATARMNETb477d446e7*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a; +int DATARMNETae0201901a;struct net_device*dev;if(!configure_knob1&&! +configure_knob2)return;if(!DATARMNET543491eb0f->skb_iif)return;dev= +__dev_get_by_index(&init_net,DATARMNET543491eb0f->skb_iif);if(!dev)return;hash= +DATARMNET233bccd449(DATARMNET543491eb0f,&DATARMNET76bafbc6ce,(0xd2d+202-0xdf7), +(0xd26+209-0xdf6));if(!DATARMNET76bafbc6ce)return;spin_lock_irqsave(& +DATARMNETcf56327171,DATARMNETfb0677cc3c);DATARMNET63b1a086d5= +list_first_entry_or_null(&DATARMNETc588a190d4,struct DATARMNETb477d446e7,list); +if(DATARMNET63b1a086d5){list_del(&DATARMNET63b1a086d5->list);DATARMNET63b1a086d5 +->hash=hash;DATARMNET9eb31df630(DATARMNET63b1a086d5,DATARMNET543491eb0f); +hash_add(DATARMNET031f18e039,&DATARMNET63b1a086d5->hlist,DATARMNET63b1a086d5-> +hash);}else{hash_for_each_safe(DATARMNET031f18e039,DATARMNETae0201901a, +DATARMNET0386f6f82a,DATARMNET63b1a086d5,hlist){hash_del(&DATARMNET63b1a086d5-> +hlist);DATARMNET63b1a086d5->hash=hash;DATARMNET9eb31df630(DATARMNET63b1a086d5, +DATARMNET543491eb0f);hash_add(DATARMNET031f18e039,&DATARMNET63b1a086d5->hlist, +DATARMNET63b1a086d5->hash);break;}}spin_unlock_irqrestore(&DATARMNETcf56327171, +DATARMNETfb0677cc3c);}void DATARMNET136e008d70(u8 DATARMNET07b1a05079,u64 +DATARMNETcc6099cb14){struct net_device*dev=dev_get_by_name(&init_net, +"rmnet_ipa0");struct sk_buff*DATARMNET543491eb0f;if(!dev)return;if( +DATARMNET07b1a05079==DATARMNETc99cb98651){struct +rmnet_map_control_command_header*DATARMNETb87c07b92a;struct DATARMNETb0eda9d28e* +DATARMNETcd32395e82;struct rmnet_map_header*DATARMNETf937c77d8f; +DATARMNET543491eb0f=alloc_skb((0xeb7+1158-0x132d),GFP_ATOMIC);if(! +DATARMNET543491eb0f)goto DATARMNETaabe3a05f8;skb_put(DATARMNET543491eb0f, +(0xeb7+1158-0x132d));memset(DATARMNET543491eb0f->data,(0xd2d+202-0xdf7), +(0xeb7+1158-0x132d));DATARMNETf937c77d8f=(struct rmnet_map_header*) +DATARMNET543491eb0f->data;DATARMNETf937c77d8f->cd_bit=(0xd26+209-0xdf6); +DATARMNETf937c77d8f->pkt_len=htons(DATARMNETfc6d4bac8a);DATARMNETb87c07b92a=( +struct rmnet_map_control_command_header*)(DATARMNET543491eb0f->data+sizeof(* +DATARMNETf937c77d8f));DATARMNETb87c07b92a->command_name=DATARMNETc152fdcc34; +DATARMNETcd32395e82=(struct DATARMNETb0eda9d28e*)(DATARMNET543491eb0f->data+ +sizeof(*DATARMNETf937c77d8f)+sizeof(*DATARMNETb87c07b92a));DATARMNETcd32395e82-> +DATARMNETba8c503d04=DATARMNET7bd625a8c0;DATARMNETcd32395e82->DATARMNETc59f891d69 +=!DATARMNETcc6099cb14;DATARMNET543491eb0f->dev=dev;DATARMNET543491eb0f->protocol +=htons(ETH_P_MAP);dev_queue_xmit(DATARMNET543491eb0f);}DATARMNETaabe3a05f8: +dev_put(dev);}void DATARMNET5fe3ffe2ab(void){rcu_assign_pointer( +rmnet_perf_tether_ingress_hook,DATARMNETe70d5ec61a);rcu_assign_pointer( +rmnet_perf_tether_egress_hook,DATARMNET6ab362e985);rcu_assign_pointer( +rmnet_perf_tether_cmd_hook,DATARMNET136e008d70);}void DATARMNET229327cbd2(void){ +rcu_assign_pointer(rmnet_perf_tether_ingress_hook,NULL);rcu_assign_pointer( +rmnet_perf_tether_egress_hook,NULL);rcu_assign_pointer( +rmnet_perf_tether_cmd_hook,NULL);}static int DATARMNETaa549ce89a(void){int +DATARMNETefc9df3df2;DATARMNET8a1e9920bf=kzalloc(sizeof(*DATARMNET8a1e9920bf), +GFP_KERNEL);if(!DATARMNET8a1e9920bf){pr_err( +"\x25\x73\x28\x29\x3a\x20\x52\x65\x73\x6f\x75\x72\x63\x65\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);return-(0xd26+209-0xdf6);}DATARMNET8a1e9920bf->DATARMNETd0ef85194f++; +for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);DATARMNETefc9df3df2< +DATARMNETd063f2edce;DATARMNETefc9df3df2++){struct DATARMNETb477d446e7* +DATARMNET63b1a086d5;DATARMNET63b1a086d5=kzalloc(sizeof(*DATARMNET63b1a086d5), +GFP_ATOMIC);if(!DATARMNET63b1a086d5)continue;INIT_LIST_HEAD(&DATARMNET63b1a086d5 +->list);INIT_HLIST_NODE(&DATARMNET63b1a086d5->hlist);list_add_tail(& +DATARMNET63b1a086d5->list,&DATARMNETc588a190d4);}DATARMNET5fe3ffe2ab();return +(0xd2d+202-0xdf7);}static void DATARMNET2b8220b2f3(void){struct +DATARMNETb477d446e7*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a; +int DATARMNETae0201901a;hash_for_each_safe(DATARMNET031f18e039, +DATARMNETae0201901a,DATARMNET0386f6f82a,DATARMNET63b1a086d5,hlist){hash_del(& +DATARMNET63b1a086d5->hlist);kfree(DATARMNET63b1a086d5);}}static void +DATARMNET66219231cc(void){struct DATARMNETb477d446e7*DATARMNET63b1a086d5,* +DATARMNET2133db01db;list_for_each_entry_safe(DATARMNET63b1a086d5, +DATARMNET2133db01db,&DATARMNETc588a190d4,list){list_del(&DATARMNET63b1a086d5-> +list);kfree(DATARMNET63b1a086d5);}}static void DATARMNET3ece352201(void){ +DATARMNET229327cbd2();DATARMNET66219231cc();DATARMNET2b8220b2f3();kfree( +DATARMNET8a1e9920bf);DATARMNET8a1e9920bf=NULL;}static int DATARMNET6e31e62d2e( +struct notifier_block*DATARMNET272c159b3c,unsigned long DATARMNET4abd997295,void +*DATARMNET3f254bae11){struct net_device*DATARMNET00dcb79bc4= +netdev_notifier_info_to_dev(DATARMNET3f254bae11);int DATARMNETb14e52a504;(void) +DATARMNET272c159b3c;if(!DATARMNET00dcb79bc4||strncmp(DATARMNET00dcb79bc4->name, +"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd27+224-0xdfd)))goto +DATARMNETaabe3a05f8;switch(DATARMNET4abd997295){case NETDEV_REGISTER:if( +DATARMNET8a1e9920bf){DATARMNET8a1e9920bf->DATARMNETd0ef85194f++;goto +DATARMNETaabe3a05f8;}pr_info( +"\x25\x73\x28\x29\x3a\x20\x49\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x6f\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x25\x73" "\n" +,__func__,DATARMNET00dcb79bc4->name);DATARMNETb14e52a504=DATARMNETaa549ce89a(); +if(DATARMNETb14e52a504){pr_err( +"\x25\x73\x28\x29\x3a\x20\x49\x6e\x69\x74\x69\x61\x6c\x69\x7a\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);goto DATARMNETaabe3a05f8;}break;case NETDEV_UNREGISTER:if(! +DATARMNET8a1e9920bf)goto DATARMNETaabe3a05f8;if(--DATARMNET8a1e9920bf-> +DATARMNETd0ef85194f)goto DATARMNETaabe3a05f8;pr_info( +"\x25\x73\x28\x29\x3a\x20\x55\x6e\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x6f\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x25\x73" "\n" +,__func__,DATARMNET00dcb79bc4->name);DATARMNET3ece352201();break;} +DATARMNETaabe3a05f8:return NOTIFY_DONE;}static struct notifier_block +DATARMNETd9d8382fca={.notifier_call=DATARMNET6e31e62d2e,.priority= +(0xd18+223-0xdf4),};static int __init DATARMNET5e4be08a32(void){pr_info( +"\x25\x73\x28\x29\x3a\x20\x4c\x6f\x61\x64\x69\x6e\x67" "\n",__func__);return +register_netdevice_notifier(&DATARMNETd9d8382fca);}static void __exit +DATARMNET50e3d76d94(void){pr_info( +"\x25\x73\x28\x29\x3a\x20\x65\x78\x69\x74\x69\x6e\x67" "\n",__func__); +unregister_netdevice_notifier(&DATARMNETd9d8382fca);}module_init( +DATARMNET5e4be08a32);module_exit(DATARMNET50e3d76d94); diff --git a/qcom/opensource/datarmnet-ext/sch/Android.mk b/qcom/opensource/datarmnet-ext/sch/Android.mk new file mode 100644 index 0000000000..368e9842c4 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/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 += parrot + +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 diff --git a/qcom/opensource/datarmnet-ext/sch/Kbuild b/qcom/opensource/datarmnet-ext/sch/Kbuild new file mode 100644 index 0000000000..a1fe7c7922 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/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 \ diff --git a/qcom/opensource/datarmnet-ext/sch/Kconfig b/qcom/opensource/datarmnet-ext/sch/Kconfig new file mode 100644 index 0000000000..8de4c0baf6 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/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 diff --git a/qcom/opensource/datarmnet-ext/sch/Makefile b/qcom/opensource/datarmnet-ext/sch/Makefile new file mode 100644 index 0000000000..b8749ce735 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/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 diff --git a/qcom/opensource/datarmnet-ext/sch/rmnet_sch_main.c b/qcom/opensource/datarmnet-ext/sch/rmnet_sch_main.c new file mode 100644 index 0000000000..c3d7d4c0b9 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/sch/rmnet_sch_main.c @@ -0,0 +1,107 @@ +/* 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 +#include +#include +#include +#include +#include +#include +#include +static char*verinfo[]={"\x37\x34\x31\x35\x39\x32\x31\x63", +"\x61\x65\x32\x34\x34\x61\x39\x64"};module_param_array(verinfo,charp,NULL, +(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo, +"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72" +);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.qlentx_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);DATARMNET2372d14a3dDATARMNETb4180393e4[ +DATARMNET2372d14a3d].qlen)continue;if(DATARMNETe823dcf978->DATARMNET1de7b3d891[ +DATARMNET2372d14a3d]<=(0xd2d+202-0xdf7)||DATARMNETe823dcf978-> +DATARMNETf9afebb887[DATARMNET2372d14a3d]<=(0xd2d+202-0xdf7)){if( +DATARMNET2372d14a3dDATARMNET1de7b3d891[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(DATARMNET2372d14a3dDATARMNETb4180393e4[ +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(DATARMNET2372d14a3dDATARMNETb4180393e4[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);DATARMNET2372d14a3dDATARMNETb4180393e4[ +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);DATARMNET2372d14a3dDATARMNETb4180393e4[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); diff --git a/qcom/opensource/datarmnet-ext/shs/Android.mk b/qcom/opensource/datarmnet-ext/shs/Android.mk new file mode 100644 index 0000000000..4783a25438 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/Android.mk @@ -0,0 +1,40 @@ +ifneq ($(TARGET_BOARD_PLATFORM),qssi) +RMNET_SHS_DLKM_PLATFORMS_LIST := lahaina +RMNET_SHS_DLKM_PLATFORMS_LIST += taro +RMNET_SHS_DLKM_PLATFORMS_LIST += parrot + +ifeq ($(call is-board-platform-in-list, $(RMNET_SHS_DLKM_PLATFORMS_LIST)),true) +#Make file to create RMNET_SHS DLKM +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_CFLAGS := -Wno-macro-redefined -Wno-unused-function -Wall -Werror +LOCAL_CLANG :=true + +LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) +LOCAL_MODULE := rmnet_shs.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 + +#Must be built after the core rmnet module +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 + +include $(DLKM_DIR)/Build_external_kernelmodule.mk + +endif #End of Check for target +endif #End of Check for qssi target diff --git a/qcom/opensource/datarmnet-ext/shs/Kbuild b/qcom/opensource/datarmnet-ext/shs/Kbuild new file mode 100644 index 0000000000..fc420cb476 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/Kbuild @@ -0,0 +1,12 @@ +obj-m += rmnet_shs.o +#Need core headers +ccflags-y := -I$(RMNET_CORE_INC_DIR) \ + $(call cc-option,-Wno-misleading-indentation) +rmnet_shs-y := rmnet_shs_config.o \ + rmnet_shs_main.o \ + rmnet_shs_common.o \ + rmnet_shs_wq.o \ + rmnet_shs_freq.o \ + rmnet_shs_wq_mem.o \ + rmnet_shs_wq_genl.o \ + rmnet_shs_modules.o diff --git a/qcom/opensource/datarmnet-ext/shs/Kconfig b/qcom/opensource/datarmnet-ext/shs/Kconfig new file mode 100644 index 0000000000..41b0e08e81 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/Kconfig @@ -0,0 +1,10 @@ +# +# RMNET_SHS driver +# + +menuconfig RMNET_SHS + tristate "Rmnet SHS driver" + default m + depends on RMNET_CORE + ---help--- + performance mode of rmnet driver diff --git a/qcom/opensource/datarmnet-ext/shs/Makefile b/qcom/opensource/datarmnet-ext/shs/Makefile new file mode 100644 index 0000000000..37be585163 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/Makefile @@ -0,0 +1,15 @@ +KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build + +KBUILD_OPTIONS := RMNET_SHS_ROOT=$(PWD) +KBUILD_OPTIONS += MODNAME?=rmnet_shs +KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_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 diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs.h b/qcom/opensource/datarmnet-ext/shs/rmnet_shs.h new file mode 100644 index 0000000000..89ec36ca06 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs.h @@ -0,0 +1,165 @@ +/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 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 +#include +#include +#include +#include +#include +#include "rmnet_shs_wq.h" +#ifndef DATARMNETbd5709177a +#define DATARMNETbd5709177a +#include "rmnet_shs_freq.h" +#include "rmnet_config.h" +#include "rmnet_map.h" +#include "rmnet_private.h" +#include "rmnet_handlers.h" +#include "rmnet_trace.h" +#include "qmi_rmnet.h" +#define DATARMNETe603c3a4b3 DATARMNETbfe1afe595 +#define DATARMNET25437d35fd 9 +#define DATARMNET4899358462 (0xeb7+1101-0x12f5) +#define DATARMNET401583e606 (0xd11+230-0xdf3) +#define DATARMNETc6782fed88 (0xd35+210-0xdff) +#define DATARMNETbc3c416b77 (0xbf7+4405-0x1c3c) +#define DATARMNET9273f84bf1 (0xeb7+1101-0x12f5) +#define DATARMNET12f3a261a0 ((0xc07+4861-0x1e3c)) +#define DATARMNET2edff26954 (0xd2d+202-0xdf7) +#define DATARMNET752465942a (0xbf7+4364-0x1c04) +#define DATARMNETbfe31ef643 (0xc07+1233-0xe1c) +#define DATARMNET7a815512d3 (0xef7+1100-0x12fd) +#define DATARMNET270b564b55 (0xd35+210-0xdff) +#define DATARMNET1c2d76f636 (0xf07+658-0x110d) +#define DATARMNET2922c89d50 (0xd1f+216-0xdf5) +#define DATARMNET015fb2ba0e(...) \ + do { if (DATARMNET756bdd424a) trace_rmnet_shs_err(__VA_ARGS__); } while (\ +(0xd2d+202-0xdf7)) +#define DATARMNET52de1f3dc0(...) \ + do { if (DATARMNET756bdd424a) trace_rmnet_shs_high(__VA_ARGS__); } while (\ +(0xd2d+202-0xdf7)) +#define DATARMNETda96251102(...) \ + do { if (DATARMNET756bdd424a) trace_rmnet_shs_low(__VA_ARGS__); } while (\ +(0xd2d+202-0xdf7)) +#define DATARMNETd82a2ed45e 204800 +#define DATARMNETc668d192f2 (0xec7+1093-0x12f5) +#define DATARMNETb38cb72105 100000 +#define DATARMNETfbee9e182e 100000 +#define DATARMNETac6d632788 (80000*DATARMNETc668d192f2) +#define DATARMNET243c638e7d 210000 +#define DATARMNET03fd42433e (210000*DATARMNETc668d192f2) +#define DATARMNET9bc9e0cac3 (0xd2d+202-0xdf7) +#define DATARMNET22feab5726 40000 +#define DATARMNET4298ee0d38 (40000*DATARMNETc668d192f2) +#define DATARMNET3a9bca9cba 20000 +#define DATARMNETcdee526004 (DATARMNET243c638e7d / (0xd1f+216-0xdf5)) +struct DATARMNETa6f2d499b2{struct hrtimer DATARMNET758a55f103;struct work_struct + DATARMNET33110a3ff5;struct timespec64 DATARMNET251b97a380;int +DATARMNETe61d62310f;u8 DATARMNET42c3ecbd5e;};struct DATARMNETa6b20d7e8b{struct +hrtimer DATARMNET6fd692fc7a;struct hrtimer DATARMNET645fb3b468;struct hrtimer +hrtimer_wake;struct rmnet_map_dl_ind DATARMNET08dbb5ab35;struct qmi_rmnet_ps_ind + rmnet_idl_ind_cb;struct rmnet_port*port;struct DATARMNETa6f2d499b2 +DATARMNET132b9c7dc4[DATARMNETc6782fed88];u64 DATARMNETbd3a0ee74e[ +DATARMNETc6782fed88];long DATARMNETc252a1f55d;long DATARMNETa2e32cdd3a;u16 +DATARMNET64bb8a8f57;u8 DATARMNET9c869c1ec2;u8 DATARMNETd9cfd2812b;u8 +DATARMNETf5ab31b9b0;u8 DATARMNET34097703c8;u8 DATARMNETfc89d842ae;u8 +DATARMNET6fe0db3a49;u8 DATARMNETba3f7a11ef;u8 map_mask;u8 map_len;u8 +DATARMNET5c24e1df05;u8 DATARMNET6625085b71;u16 DATARMNETfeee6933fc;u8 +DATARMNET7d667e828e;u8 DATARMNETe250463eef;ktime_t DATARMNETdd3caf9200;struct +wakeup_source*ws;};struct DATARMNETa034b2e60c{struct sk_buff*head;struct sk_buff +*tail;u64 DATARMNETbaa5765693;u32 DATARMNET6215127f48;u32 DATARMNET35234676d4;}; +struct DATARMNET63d7680df2{union{struct iphdr DATARMNETac9bbaad7c;struct ipv6hdr + DATARMNET1688a97aa4;}ip_hdr;union{struct tcphdr tp;struct udphdr up;} +DATARMNETe33b41dad9;struct list_head DATARMNET04c88b8191;struct net_device*dev; +struct DATARMNET6c78e47d24*DATARMNET341ea38662;struct DATARMNETa034b2e60c +DATARMNETae4b27456e;struct hlist_node list;u64 DATARMNET11930c5df8;u64 +DATARMNETa8940e4a7b;u64 DATARMNET2594c418db;u64 DATARMNET3ecedac168;u64 +DATARMNETce5f56eab9;u32 queue_head;u32 hash;u16 map_index;u16 map_cpu;u16 +DATARMNETfbbec4c537;u16 DATARMNETa59ce1fd2d;u8 DATARMNET85c698ec34;u16 +DATARMNET0371465875;u16 DATARMNET1e9d25d9ff;u8 DATARMNETa1099c74fe;u8 +DATARMNET6250e93187;u8 mux_id;};enum DATARMNET156842d55e{DATARMNET7bc926fdbe, +DATARMNETb3e3b2a799,DATARMNET8dcf06727b};enum DATARMNET8463cba7c7{ +DATARMNETc3bce05be2,DATARMNET14067f0be4,DATARMNET28bb261646,DATARMNET67b67dc88f, +DATARMNET0efbbe2821,DATARMNETa4267dfd8a,DATARMNETf13db5ace8,DATARMNETb6eae1e097, +DATARMNET0e398136dc,DATARMNET975060d6b5,DATARMNET7f401828b3,DATARMNET6ea8a58f4e, +DATARMNETcf84373518,DATARMNETeccb61ebc3};enum DATARMNETf355367410{ +DATARMNET557ff68d74,DATARMNET1c55e5fdb1,DATARMNET4ab5a31d0c,DATARMNETde2dd86539} +;enum DATARMNET6c7f7f22c7{DATARMNETe35e238437,DATARMNET0d61981934};enum +DATARMNET3f3bc61c03{DATARMNETf5157a9b85,DATARMNET709b59b0e6,DATARMNET99db6e7d86, +DATARMNETe3c02ddaeb,DATARMNET394acaf558,DATARMNETef8cbfa62f,DATARMNETe6e77f9f03, +DATARMNETecdf13872c,DATARMNETd1687e0776,DATARMNET1828d69e96,DATARMNET40ceff078e, +DATARMNET42b73d0f3f,DATARMNETb8fe2c0e64,DATARMNET72db8b9bac,DATARMNET33a9d4759f, +DATARMNET46966e7828,DATARMNETa1f9420686,DATARMNET54b67b8a75,DATARMNETac729c3d29, +DATARMNET6533f70c87,DATARMNET6f6efeaf61,DATARMNETcc0ef52ccb,DATARMNETf8de7cb644, +DATARMNETdd6bf3de6b,DATARMNETfeaf903a28,DATARMNET767c76ca08,DATARMNET048727d1d9, +DATARMNET43405942ed,DATARMNET2e68f4bd9f,DATARMNET0fa3506473,DATARMNETbb641cd339, +DATARMNETf352684b06,DATARMNETf3110711cb};enum DATARMNET269385986c{ +DATARMNET5c4c7e20f2,DATARMNET95c85e6fe1,DATARMNET27fb9a225d,DATARMNETbbf8fe40aa, +DATARMNETa7d45fb6d4,DATARMNET0acd775aa8,DATARMNET2217440c2e,DATARMNET6aecae7be2, +DATARMNETf3dfa53867,DATARMNET0492ddb5d5};enum DATARMNETd751e3ec84{ +DATARMNETcc3c294f38,DATARMNET802083239a,DATARMNETed69052342,DATARMNETcfb1764a91, +DATARMNET84a9e136b8,DATARMNET01bf75e27c,DATARMNETd45c383019,DATARMNETbb5757569c, +DATARMNETc8058e2cff,DATARMNET04dac3a62b,DATARMNETdf6ecde77a,DATARMNET94658618fc, +DATARMNET0d07041c32,DATARMNET3cef75f6cd};struct DATARMNETfd554c7eac{struct +sk_buff*skb;struct DATARMNETfd554c7eac*next;};struct DATARMNET37ef896af8{struct +work_struct DATARMNET33110a3ff5;struct rmnet_port*port;};struct +DATARMNETe600c5b727{struct list_head DATARMNET3dc4262f53;u32 DATARMNETae196235f2 +;u32 qtail;u32 DATARMNET96571b28de;u32 DATARMNET4133fc9428;u32 seg;u8 +DATARMNETef866573e0;u8 DATARMNET1e1f197118;};enum DATARMNETf0a06dc55a{ +DATARMNET1790979ccf,DATARMNETd5eb6398da,DATARMNETcd24fca747,DATARMNETe50d824af7, +DATARMNET6b317c4c73,DATARMNET75d955c408,DATARMNETf3aaad06eb,DATARMNET720469c0a9, +DATARMNET4510abc30d,DATARMNET23f8730007,};enum DATARMNETc1d9e38720{ +DATARMNET0b15fd8b54,DATARMNET5b5927fd7e,DATARMNETba3049005f};enum +DATARMNET4f392b0182{DATARMNET72cb00fdc0,DATARMNET443dab7031,DATARMNET96db46917c, +DATARMNET89958f9b63,DATARMNET6d7a3a033a,DATARMNET16a68afc17,DATARMNET916f444e0a, +DATARMNETe9a79499ac,DATARMNET89f4779456,DATARMNETa94c7e31a0,DATARMNET116c96c236, +DATARMNET9da2ea4f74,DATARMNETe55953a107,DATARMNET43225b7a7c,DATARMNET4dbb6812b5, +DATARMNETbf80eada88,DATARMNET26438cb654,DATARMNETa6d85c8497,DATARMNET650a0ef6e1, +DATARMNET3e031f1532,DATARMNET9f467b9ce4,DATARMNETc154fd2d48,DATARMNET5874e1ecd7, +DATARMNET4f09dc5794,DATARMNET11a1fd3964,DATARMNETf2fc7954d4,DATARMNET4e91ddb48a, +DATARMNET16befe9635,DATARMNET856c53293b,DATARMNET7e63a08ad4,DATARMNETf7c8c7aa3f, +DATARMNET08b6defcff,DATARMNETf5c836f9ae,DATARMNETdd870ee64c,DATARMNETf730f80f06, +DATARMNET998c6de143,DATARMNETe7afce2292,DATARMNETe0fee0991a,DATARMNETbc2a6aea12, +DATARMNETde91850c28,DATARMNET237e7bd5f6,DATARMNETf16e78412b,DATARMNET83147a2e7d, +DATARMNET816bb1e327,DATARMNETf311f20c00,DATARMNETa2bd301af7,DATARMNET99640d60f7, +DATARMNET562b7d32a8,DATARMNET0808844559,DATARMNET5410705c1c,DATARMNET022082b219, +DATARMNETe4ee0d2636,DATARMNET23b8465daf,DATARMNET052f49b190,DATARMNETfb753e521e, +DATARMNET64b02f64c6,DATARMNET576793621a,DATARMNETc262b24b02,DATARMNET4ebbc01257, +DATARMNET595eed6ea2,DATARMNETde090e8314,DATARMNETa593d87b38,DATARMNET8a2898988b, +DATARMNET0709c9f764,};extern struct DATARMNET37ef896af8 DATARMNET1731db288b; +extern spinlock_t DATARMNET3764d083f0;extern spinlock_t DATARMNETec2a4f5211; +extern spinlock_t DATARMNETfbdbab2ef6;extern struct hlist_head +DATARMNETe603c3a4b3[(0xd26+209-0xdf6)<<(DATARMNET25437d35fd)];extern int(* +rmnet_shs_skb_entry)(struct sk_buff*skb,struct rmnet_shs_clnt_s* +DATARMNET9e820fbfe3);extern int(*rmnet_shs_switch)(struct sk_buff*skb,struct +rmnet_shs_clnt_s*DATARMNET9e820fbfe3);int DATARMNET362b15f941(u16 cpu);void +DATARMNETeacad8334e(void);void DATARMNETe1f95274f1(void);unsigned int +DATARMNET02cdd9b125(void);int DATARMNET310c3eb16e(u8 mask);int +DATARMNETe02152c351(struct DATARMNET63d7680df2*DATARMNET63b1a086d5,u8 +DATARMNETd87669e323,u8 DATARMNET5447204733);void DATARMNET78bb6be330(struct +rmnet_map_dl_ind_hdr*dlhdr,struct rmnet_map_control_command_header*qcmd);void +DATARMNETf61cd23b90(struct rmnet_map_dl_ind_trl*dltrl,struct +rmnet_map_control_command_header*qcmd);void DATARMNET7ed4cef8a3(struct +rmnet_map_dl_ind_hdr*dlhdr);void DATARMNET613a81eca8(struct rmnet_map_dl_ind_trl +*dltrl);int DATARMNET756778f14f(struct sk_buff*skb,struct rmnet_shs_clnt_s* +DATARMNET9e820fbfe3);void DATARMNETa4bf9fbf64(u8 DATARMNET665469cfb6,u8 +DATARMNET5447204733);void DATARMNETde8ee16f92(struct DATARMNET63d7680df2* +DATARMNET63b1a086d5);void DATARMNET45d8cdb224(struct net_device*dev,struct +net_device*vnd);void DATARMNET9297340f58(unsigned int DATARMNET9f4bc49c6f);void +DATARMNET7f1d9480cb(void*port);void DATARMNETa4bd2ef52c(void*port);void +DATARMNETe074a09496(void);void DATARMNET23c7ddd780(struct DATARMNET63d7680df2* +DATARMNET63b1a086d5,u8 DATARMNET5447204733);void DATARMNET349c3a0cab(u16 map_cpu +,bool DATARMNETb639f6e1b1);u32 DATARMNETadb0248bd4(u8 DATARMNET42a992465f); +#endif + diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_common.c b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_common.c new file mode 100644 index 0000000000..dc78c11eaa --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_common.c @@ -0,0 +1,173 @@ +/* Copyright (c) 2020-2021 The Linux Foundation. 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 "rmnet_shs.h" +#include "rmnet_shs_wq.h" +#include "rmnet_shs_modules.h" +#define DATARMNET48a89fcc16 (0xd26+209-0xdf6) +#define DATARMNETbfe901fc62 (0xd2d+202-0xdf7) +void DATARMNET4095253347(struct DATARMNET9b44b71ee9*ep){trace_rmnet_shs_wq_low( +DATARMNET5e796836fb,DATARMNET7fc202c4c1,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),ep,NULL);list_add(&ep->DATARMNET0763436b8d +,&DATARMNET30a3e83974);}void DATARMNETf7d317ed55(struct DATARMNET9b44b71ee9*ep){ +trace_rmnet_shs_wq_low(DATARMNET5e796836fb,DATARMNET7643ab0f49, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),ep, +NULL);list_del_init(&ep->DATARMNET0763436b8d);}void DATARMNET36e5e526fa(struct +DATARMNET6c78e47d24*DATARMNETd2a694d52a){unsigned long flags; +trace_rmnet_shs_wq_low(DATARMNET238d08f0df,DATARMNET3f2d29c867, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +DATARMNETd2a694d52a,NULL);spin_lock_irqsave(&DATARMNETfbdbab2ef6,flags);list_add +(&DATARMNETd2a694d52a->DATARMNET6de26f0feb,&DATARMNET9825511866); +spin_unlock_irqrestore(&DATARMNETfbdbab2ef6,flags);}void DATARMNET2fe780019f( +struct DATARMNET6c78e47d24*DATARMNETd2a694d52a){unsigned long flags; +trace_rmnet_shs_wq_low(DATARMNET238d08f0df,DATARMNET5a3ea29c57, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +DATARMNETd2a694d52a,NULL);spin_lock_irqsave(&DATARMNETfbdbab2ef6,flags); +list_del_init(&DATARMNETd2a694d52a->DATARMNET6de26f0feb);spin_unlock_irqrestore( +&DATARMNETfbdbab2ef6,flags);}void DATARMNETb4a6870b3b(struct DATARMNET6c78e47d24 +*DATARMNETd2a694d52a){unsigned long flags;trace_rmnet_shs_wq_low( +DATARMNET92b282b12c,DATARMNETdb9197631d,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL); +spin_lock_irqsave(&DATARMNETfbdbab2ef6,flags);list_del_init(&DATARMNETd2a694d52a +->DATARMNET742867e97a);spin_unlock_irqrestore(&DATARMNETfbdbab2ef6,flags);}void +DATARMNETd8a6375e9c(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct +list_head*head){unsigned long flags;trace_rmnet_shs_wq_low(DATARMNET92b282b12c, +DATARMNET4b58d51c6a,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL);spin_lock_irqsave(& +DATARMNETfbdbab2ef6,flags);list_add(&DATARMNETd2a694d52a->DATARMNET742867e97a, +head);spin_unlock_irqrestore(&DATARMNETfbdbab2ef6,flags);}void +DATARMNET9914e9761e(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct +list_head*head){unsigned long flags;trace_rmnet_shs_wq_low(DATARMNET92b282b12c, +DATARMNETfd4d416388,DATARMNETd2a694d52a->DATARMNET7c894c2f8f,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL); +spin_lock_irqsave(&DATARMNETfbdbab2ef6,flags);list_move(&DATARMNETd2a694d52a-> +DATARMNET742867e97a,head);spin_unlock_irqrestore(&DATARMNETfbdbab2ef6,flags);} +void DATARMNET6bf538fa23(void){spin_lock_bh(&DATARMNETec2a4f5211);}void +DATARMNETaea4c85748(void){spin_unlock_bh(&DATARMNETec2a4f5211);}void +DATARMNETe46c480d71(void){u8 mask=DATARMNET752465942a;u8 DATARMNET998de79791= +(0xd2d+202-0xdf7);struct DATARMNET9b44b71ee9*ep;list_for_each_entry(ep,& +DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;if +(ep->DATARMNET9fb369ce5f){mask&=ep->DATARMNET9fb369ce5f;DATARMNET998de79791= +(0xd26+209-0xdf6);}}if(!DATARMNET998de79791){DATARMNETecc0627c70.map_mask= +(0xd2d+202-0xdf7);DATARMNETecc0627c70.map_len=(0xd2d+202-0xdf7);return;}else if( +DATARMNETecc0627c70.map_mask!=mask){DATARMNETecc0627c70.map_mask=mask; +DATARMNETecc0627c70.map_len=DATARMNET310c3eb16e(mask);pr_info( +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x3a\x20\x20\x6d\x61\x73\x6b\x3a\x20\x30\x78\x25\x78\x20\x6d\x61\x70\x6c\x65\x6e\x3a\x20\x25\x64" +,DATARMNETecc0627c70.map_mask,DATARMNETecc0627c70.map_len);}}void +DATARMNETde8ee16f92(struct DATARMNET63d7680df2*DATARMNET63b1a086d5){ +DATARMNETda96251102(DATARMNETd5eb6398da,DATARMNETe9a79499ac,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL); +list_del_init(&DATARMNET63b1a086d5->DATARMNET04c88b8191);DATARMNET349c3a0cab( +DATARMNET63b1a086d5->map_cpu,DATARMNETbfe901fc62);}void DATARMNET3e37ad2816( +struct DATARMNET63d7680df2*DATARMNET63b1a086d5,struct list_head* +DATARMNET4d030eb9b5){DATARMNETda96251102(DATARMNETd5eb6398da,DATARMNET16a68afc17 +,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +NULL,NULL);list_add(&DATARMNET63b1a086d5->DATARMNET04c88b8191, +DATARMNET4d030eb9b5);DATARMNET349c3a0cab(DATARMNET63b1a086d5->map_cpu, +DATARMNET48a89fcc16);}void DATARMNETe102b3a798(struct DATARMNET63d7680df2* +DATARMNET63b1a086d5,struct list_head*DATARMNET4d030eb9b5,int DATARMNETa7a5705ab0 +){DATARMNETda96251102(DATARMNETd5eb6398da,DATARMNET916f444e0a,(0x16e8+787-0xc0c) +,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);list_move(& +DATARMNET63b1a086d5->DATARMNET04c88b8191,DATARMNET4d030eb9b5); +DATARMNET349c3a0cab(DATARMNET63b1a086d5->map_cpu,DATARMNET48a89fcc16); +DATARMNET349c3a0cab((u16)DATARMNETa7a5705ab0,DATARMNETbfe901fc62);}void +DATARMNET4bde88919f(u8 cpu,int count){if(cpu= +DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return +(0xd2d+202-0xdf7);}return DATARMNET713717107f[cpu];}inline int +DATARMNET362b15f941(u16 cpu){return!(((0xd26+209-0xdf6)< +DATARMNET253a9fc708>DATARMNETdcaff77beb->DATARMNET253a9fc708)return- +(0xd26+209-0xdf6);else if(DATARMNET40e125212a->DATARMNET253a9fc708< +DATARMNETdcaff77beb->DATARMNET253a9fc708)return(0xd26+209-0xdf6);return +(0xd2d+202-0xdf7);}int DATARMNETd5c15f1ff3(void*priv,struct list_head* +DATARMNET9cf7d31274,struct list_head*DATARMNET5444bd3b6f){struct +DATARMNET09a412b1c6*DATARMNET40e125212a;struct DATARMNET09a412b1c6* +DATARMNETdcaff77beb;if(!DATARMNET9cf7d31274||!DATARMNET5444bd3b6f)return +(0xd2d+202-0xdf7);DATARMNET40e125212a=list_entry(DATARMNET9cf7d31274,struct +DATARMNET09a412b1c6,DATARMNETd502c0412a);DATARMNETdcaff77beb=list_entry( +DATARMNET5444bd3b6f,struct DATARMNET09a412b1c6,DATARMNETd502c0412a);if( +DATARMNET40e125212a->DATARMNET253a9fc708>DATARMNETdcaff77beb-> +DATARMNET253a9fc708)return-(0xd26+209-0xdf6);else if(DATARMNET40e125212a-> +DATARMNET253a9fc708DATARMNET253a9fc708)return +(0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}int DATARMNET85af86a36d(void*priv, +struct list_head*DATARMNET9cf7d31274,struct list_head*DATARMNET5444bd3b6f){ +struct DATARMNET47a6995138*DATARMNETdad817a72a;struct DATARMNET47a6995138* +DATARMNET11d167e92b;if(!DATARMNET9cf7d31274||!DATARMNET5444bd3b6f)return +(0xd2d+202-0xdf7);DATARMNETdad817a72a=list_entry(DATARMNET9cf7d31274,struct +DATARMNET47a6995138,DATARMNET02523bfb57);DATARMNET11d167e92b=list_entry( +DATARMNET5444bd3b6f,struct DATARMNET47a6995138,DATARMNET02523bfb57);if( +DATARMNETdad817a72a->DATARMNET4da6031170>DATARMNET11d167e92b-> +DATARMNET4da6031170)return-(0xd26+209-0xdf6);else if(DATARMNETdad817a72a-> +DATARMNET4da6031170DATARMNET4da6031170)return +(0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}int DATARMNETf181a18009(struct +net_device*dev){u8 DATARMNETde5894dad9;u8 DATARMNETd9e9d4ff7e;int +DATARMNET895df156d7=-(0xd26+209-0xdf6);u8 is_match_found=(0xd2d+202-0xdf7); +struct DATARMNET9b44b71ee9*ep=NULL;unsigned long flags;if(!dev){ +DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;return DATARMNET895df156d7;} +spin_lock_irqsave(&DATARMNETec2a4f5211,flags);list_for_each_entry(ep,& +DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;if +(ep->ep==dev){is_match_found=(0xd26+209-0xdf6);break;}}if(!is_match_found){ +DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;spin_unlock_irqrestore(& +DATARMNETec2a4f5211,flags);return DATARMNET895df156d7;}DATARMNETde5894dad9=ep-> +DATARMNET6bda8fe27e;DATARMNETd9e9d4ff7e=ep->DATARMNETd7a83774f8;while( +DATARMNETde5894dad9DATARMNET5af04d0405[ +DATARMNETde5894dad9]>=(0xd2d+202-0xdf7)){DATARMNET895df156d7=ep-> +DATARMNET5af04d0405[DATARMNETde5894dad9];break;}DATARMNETde5894dad9++;}if(( +DATARMNET895df156d7>=(0xd2d+202-0xdf7))||((ep->DATARMNET6bda8fe27e+ +(0xd26+209-0xdf6))>=ep->DATARMNETd7a83774f8))ep->DATARMNET6bda8fe27e=((ep-> +DATARMNET6bda8fe27e+(0xd26+209-0xdf6))%ep->DATARMNETd7a83774f8); +spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);return DATARMNET895df156d7;} +int DATARMNET98b2a0ce62(struct net_device*dev){struct DATARMNET9b44b71ee9*ep= +NULL;int DATARMNET895df156d7=-(0xd26+209-0xdf6);u8 DATARMNETcc5b7cd962;u8 +DATARMNET15bde5cb53;u8 is_match_found=(0xd2d+202-0xdf7);unsigned long flags;if(! +dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;return DATARMNET895df156d7;} +spin_lock_irqsave(&DATARMNETec2a4f5211,flags);list_for_each_entry(ep,& +DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;if +(ep->ep==dev){is_match_found=(0xd26+209-0xdf6);break;}}if(!is_match_found){ +DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;spin_unlock_irqrestore(& +DATARMNETec2a4f5211,flags);return DATARMNET895df156d7;}DATARMNETcc5b7cd962=ep-> +DATARMNET121a654efd;DATARMNET15bde5cb53=ep->DATARMNET847276e5af;while( +DATARMNETcc5b7cd962DATARMNET7167e10d99[ +DATARMNETcc5b7cd962]>=(0xd2d+202-0xdf7)){DATARMNET895df156d7=ep-> +DATARMNET7167e10d99[DATARMNETcc5b7cd962];break;}DATARMNETcc5b7cd962++;}if( +DATARMNET895df156d7>=(0xd2d+202-0xdf7))ep->DATARMNET121a654efd=(( +DATARMNETcc5b7cd962+(0xd26+209-0xdf6))%DATARMNET15bde5cb53); +spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);return DATARMNET895df156d7;} +void DATARMNET7f1d9480cb(void*port){DATARMNET4063c95208();}void +DATARMNETa4bd2ef52c(void*port){DATARMNET7b6c061b06();}u8 DATARMNET928c931df9( +struct rps_map*map){u8 mask=(0xd2d+202-0xdf7);u8 i;for(i=(0xd2d+202-0xdf7);ilen;i++)mask|=(0xd26+209-0xdf6)<cpus[i];return mask;}int +DATARMNET310c3eb16e(u8 mask){u8 i;u8 DATARMNETc2284e5688=(0xd2d+202-0xdf7);for(i +=(0xd2d+202-0xdf7);i +#include +#include +#include "rmnet_map.h" +#include "rmnet_private.h" +#include "rmnet_shs_config.h" +#include "rmnet_shs.h" +#include "rmnet_shs_wq.h" +#include "rmnet_shs_wq_genl.h" +#include "rmnet_shs_common.h" +#include "rmnet_shs_modules.h" +static int DATARMNETe9173bbe0e(struct notifier_block*DATARMNET272c159b3c, +unsigned long DATARMNET7f045a1e6e,void*data);static struct notifier_block +DATARMNET5fc54f7a13 __read_mostly={.notifier_call=DATARMNETe9173bbe0e,.priority= +(0xd1f+216-0xdf5),};static char*DATARMNETbc8418e817[]={"\x34\x33\x61\x36\x62", +"\x61\x32\x63\x65\x36","\x64\x31\x61\x62\x31","\x64\x38\x37\x39\x62"}; +module_param_array(DATARMNETbc8418e817,charp,NULL,(0xcb7+5769-0x221c)); +MODULE_PARM_DESC(DATARMNETbc8418e817, +"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x73\x68\x73\x20\x64\x72\x69\x76\x65\x72" +);static int DATARMNET2cb9ae589c;int __init DATARMNET163e93649e(void){pr_info( +"\x25\x73\x28\x29\x3a\x20\x53\x74\x61\x72\x74\x69\x6e\x67\x20\x72\x6d\x6e\x65\x74\x20\x53\x48\x53\x20\x6d\x6f\x64\x75\x6c\x65\x20\x25\x73\x20" "\n" +,__func__,DATARMNETbc8418e817[(0xd2d+202-0xdf7)]);trace_rmnet_shs_high( +DATARMNET1790979ccf,DATARMNET72cb00fdc0,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);if(DATARMNET0dbc627e8f()){ +rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x69\x6e\x69\x74\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x6e\x65\x74\x6c\x69\x6e\x6b" +);}return register_netdevice_notifier(&DATARMNET5fc54f7a13);}void __exit +DATARMNETf3298dab6f(void){trace_rmnet_shs_high(DATARMNET1790979ccf, +DATARMNET89958f9b63,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),NULL,NULL);unregister_netdevice_notifier(&DATARMNET5fc54f7a13 +);DATARMNETeabd69d1ab();pr_info( +"\x25\x73\x28\x29\x3a\x20\x45\x78\x69\x74\x69\x6e\x67\x20\x72\x6d\x6e\x65\x74\x20\x53\x48\x53\x20\x6d\x6f\x64\x75\x6c\x65" "\n" +,__func__);}static int DATARMNETe9173bbe0e(struct notifier_block* +DATARMNET272c159b3c,unsigned long DATARMNET7f045a1e6e,void*data){struct +net_device*dev=netdev_notifier_info_to_dev(data);struct rmnet_priv*priv;struct +rmnet_port*port;int ret=(0xd2d+202-0xdf7);if(!dev){DATARMNET68d84e7b98[ +DATARMNETf5157a9b85]++;return NOTIFY_DONE;}if(!(strncmp(dev->name, +"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd27+224-0xdfd))==(0xd2d+202-0xdf7) +))return NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_DOWN: +DATARMNETd6ee05f1b4(dev);break;case NETDEV_UNREGISTER:DATARMNET2cb9ae589c--;if(! +DATARMNET2cb9ae589c&&DATARMNETecc0627c70.DATARMNETfc89d842ae){unsigned int +DATARMNET9f4bc49c6f;pr_info( +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x20\x64\x65\x69\x6e\x69\x74\x20\x25\x73\x20\x67\x6f\x69\x6e\x67\x20\x64\x6f\x77\x6e\x20" +,dev->name);RCU_INIT_POINTER(rmnet_shs_skb_entry,NULL);RCU_INIT_POINTER( +rmnet_shs_switch,NULL);qmi_rmnet_ps_ind_deregister(DATARMNETecc0627c70.port,& +DATARMNETecc0627c70.rmnet_idl_ind_cb);rmnet_map_dl_ind_deregister( +DATARMNETecc0627c70.port,&DATARMNETecc0627c70.DATARMNET08dbb5ab35); +DATARMNETeacad8334e();DATARMNET9f4bc49c6f=DATARMNET02cdd9b125(); +DATARMNETf7dcab9a9e();DATARMNET9297340f58(DATARMNET9f4bc49c6f); +trace_rmnet_shs_high(DATARMNET1790979ccf,DATARMNET443dab7031,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}break;case +NETDEV_REGISTER:DATARMNET2cb9ae589c++;if(DATARMNET2cb9ae589c&&! +DATARMNETecc0627c70.DATARMNETfc89d842ae){pr_info( +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x25\x73" +,dev->name);priv=netdev_priv(dev);port=rmnet_get_port(priv->real_dev);if(!port){ +pr_err( +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x3a\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x72\x6d\x6e\x65\x74\x5f\x70\x6f\x72\x74" +);break;}DATARMNET45d8cdb224(priv->real_dev,dev);DATARMNET3ae0d614d6(); +DATARMNETe1f95274f1();DATARMNETecc0627c70.DATARMNETf5ab31b9b0=(0xd26+209-0xdf6); +}break;case NETDEV_UP:if(!DATARMNETecc0627c70.DATARMNET9c869c1ec2&& +DATARMNETecc0627c70.DATARMNETfc89d842ae){port=DATARMNETecc0627c70.port;if(!port) +{pr_err( +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x3a\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x72\x6d\x6e\x65\x74\x5f\x63\x66\x67\x5f\x70\x6f\x72\x74" +);break;}DATARMNETecc0627c70.DATARMNET08dbb5ab35.priority=RMNET_SHS;if(port-> +data_format&RMNET_INGRESS_FORMAT_DL_MARKER_V2){DATARMNETecc0627c70. +DATARMNET08dbb5ab35.dl_hdr_handler_v2=&DATARMNET78bb6be330;DATARMNETecc0627c70. +DATARMNET08dbb5ab35.dl_trl_handler_v2=&DATARMNETf61cd23b90;}DATARMNETecc0627c70. +rmnet_idl_ind_cb.ps_on_handler=&DATARMNET7f1d9480cb;DATARMNETecc0627c70. +rmnet_idl_ind_cb.ps_off_handler=&DATARMNETa4bd2ef52c;ret= +rmnet_map_dl_ind_register(port,&DATARMNETecc0627c70.DATARMNET08dbb5ab35);if(ret) +pr_err( +"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x20\x64\x6c\x5f\x69\x6e\x64\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c" "\n" +,__func__);ret=qmi_rmnet_ps_ind_register(port,&DATARMNETecc0627c70. +rmnet_idl_ind_cb);if(ret)pr_err( +"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x20\x70\x73\x5f\x69\x6e\x64\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c" "\n" +,__func__);DATARMNET7492293980(dev);DATARMNET039ac6d55d();DATARMNET0a6fb12cb2(); +DATARMNETe46c480d71();DATARMNETecc0627c70.DATARMNET9c869c1ec2=(0xd26+209-0xdf6); +trace_rmnet_shs_high(DATARMNET1790979ccf,DATARMNET443dab7031,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL); +DATARMNETcd6e26f0ad();RCU_INIT_POINTER(rmnet_shs_switch,NULL);RCU_INIT_POINTER( +rmnet_shs_skb_entry,DATARMNET756778f14f);break;}DATARMNET7492293980(dev);break; +default:break;}return NOTIFY_DONE;}module_init(DATARMNET163e93649e);module_exit( +DATARMNETf3298dab6f); diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_config.h b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_config.h new file mode 100644 index 0000000000..6a99966482 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_config.h @@ -0,0 +1,27 @@ +/* Copyright (c) 2018-2021 The Linux Foundation. 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 +#include +#include +#ifndef DATARMNET104309e08f +#define DATARMNET104309e08f +#define DATARMNETadb2d068fe (0xd26+209-0xdf6) +#define DATARMNET8120d41372 (0xd1f+216-0xdf5) +#define DATARMNET47c2367f93 (0xd18+223-0xdf4) +extern struct DATARMNETa6b20d7e8b DATARMNETecc0627c70;extern int +rmnet_is_real_dev_registered(const struct net_device*real_dev);extern +rx_handler_result_t rmnet_rx_handler(struct sk_buff**DATARMNET89946cec52);int +__init DATARMNET163e93649e(void);void __exit DATARMNETf3298dab6f(void); +#endif + diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.c b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.c new file mode 100644 index 0000000000..a26fe06eb3 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.c @@ -0,0 +1,86 @@ +/* Copyright (c) 2020-2021 The Linux Foundation. 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 +#include "rmnet_shs.h" +#include "rmnet_shs_freq.h" +#include +#include +#include +#define DATARMNET81fe789d21 INT_MAX +#define MIN_FREQ (0xd2d+202-0xdf7) +#define DATARMNET59b491fbc9 DATARMNET81fe789d21 +#define DATARMNET03d51cb126 (0xd1f+216-0xdf5) +struct cpu_freq{unsigned int DATARMNET103c8d34fe;unsigned int +DATARMNET1159aa2cb6;};unsigned int DATARMNET666c9ff35e __read_mostly= +(0xd26+209-0xdf6);module_param(DATARMNET666c9ff35e,uint,(0xdb7+6665-0x261c)); +MODULE_PARM_DESC(DATARMNET666c9ff35e, +"\x45\x6e\x61\x62\x6c\x65\x2f\x64\x69\x73\x61\x62\x6c\x65\x20\x66\x72\x65\x71\x20\x62\x6f\x6f\x73\x74\x20\x66\x65\x61\x74\x75\x72\x65" +);struct workqueue_struct*DATARMNETde8f350999;struct DATARMNET4e6b0cd2b8{struct +cpu_freq __percpu*DATARMNET9dd9bc4abb;};static struct DATARMNET4e6b0cd2b8 +DATARMNETc4b1be7898;static struct work_struct DATARMNETbfcbb4b8ac;static +DEFINE_PER_CPU(struct freq_qos_request,DATARMNET17d6a9530a);static void +DATARMNETb90d2272b4(struct work_struct*DATARMNET33110a3ff5){struct cpu_freq* +DATARMNETe24d518157;unsigned int i;int ret;struct freq_qos_request* +DATARMNETddcafd8b91;get_online_cpus();for_each_online_cpu(i){DATARMNETe24d518157 +=per_cpu_ptr(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb,i);DATARMNETddcafd8b91=& +per_cpu(DATARMNET17d6a9530a,i);ret=freq_qos_update_request(DATARMNETddcafd8b91, +DATARMNETe24d518157->DATARMNET103c8d34fe);}put_online_cpus();}void +DATARMNET82d7f4ffa2(void){struct cpu_freq*DATARMNETe24d518157;int i; +for_each_possible_cpu(i){DATARMNETe24d518157=per_cpu_ptr(DATARMNETc4b1be7898. +DATARMNET9dd9bc4abb,i);DATARMNETe24d518157->DATARMNET103c8d34fe=MIN_FREQ; +DATARMNETe24d518157->DATARMNET1159aa2cb6=DATARMNET81fe789d21;}}void +DATARMNET5e4aeef593(int cpu){struct cpu_freq*DATARMNETe24d518157;int i=cpu;if(( +(0xd26+209-0xdf6)< +DATARMNET103c8d34fe=DATARMNET59b491fbc9;DATARMNETe24d518157->DATARMNET1159aa2cb6 +=DATARMNET81fe789d21;trace_rmnet_freq_boost(i,DATARMNET59b491fbc9);}void +DATARMNETfb7007f025(void){struct cpu_freq*DATARMNETe24d518157;int i; +for_each_possible_cpu(i){if(((0xd26+209-0xdf6)<DATARMNET103c8d34fe=DATARMNET59b491fbc9;DATARMNETe24d518157 +->DATARMNET1159aa2cb6=DATARMNET81fe789d21;trace_rmnet_freq_boost(i, +DATARMNET59b491fbc9);}if(work_pending(&DATARMNETbfcbb4b8ac))return;if( +DATARMNETde8f350999){queue_work_on(DATARMNET03d51cb126,DATARMNETde8f350999,& +DATARMNETbfcbb4b8ac);}}void DATARMNET371703c28d(void){struct cpu_freq* +DATARMNETe24d518157;int i;for_each_possible_cpu(i){DATARMNETe24d518157= +per_cpu_ptr(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb,i);DATARMNETe24d518157-> +DATARMNET103c8d34fe=MIN_FREQ;DATARMNETe24d518157->DATARMNET1159aa2cb6= +DATARMNET81fe789d21;trace_rmnet_freq_reset(i,MIN_FREQ);}if(work_pending(& +DATARMNETbfcbb4b8ac))return;if(DATARMNETde8f350999)queue_work_on( +DATARMNET03d51cb126,DATARMNETde8f350999,&DATARMNETbfcbb4b8ac);}static void +DATARMNET009d37d173(void){struct freq_qos_request*DATARMNETddcafd8b91;int i; +for_each_possible_cpu(i){DATARMNETddcafd8b91=&per_cpu(DATARMNET17d6a9530a,i);if( +DATARMNETddcafd8b91&&freq_qos_request_active(DATARMNETddcafd8b91)){ +freq_qos_remove_request(DATARMNETddcafd8b91);}}}int DATARMNETe6e8431304(void){ +struct cpu_freq*DATARMNETe24d518157;int i;int ret=(0xd2d+202-0xdf7);struct +freq_qos_request*DATARMNETddcafd8b91;struct cpufreq_policy*policy; +DATARMNETc4b1be7898.DATARMNET9dd9bc4abb=alloc_percpu(struct cpu_freq);if(! +DATARMNETc4b1be7898.DATARMNET9dd9bc4abb)return-ENOMEM;if(!DATARMNETde8f350999) +DATARMNETde8f350999=alloc_workqueue( +"\x73\x68\x73\x5f\x62\x6f\x6f\x73\x74\x5f\x77\x71",WQ_HIGHPRI,(0xd2d+202-0xdf7)) +;if(!DATARMNETde8f350999){ret=-ENOMEM;goto err;}for_each_possible_cpu(i){ +DATARMNETe24d518157=per_cpu_ptr(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb,i); +DATARMNETddcafd8b91=&per_cpu(DATARMNET17d6a9530a,i);policy=cpufreq_cpu_get(i);if +(!policy){pr_err( +"\x25\x73\x3a\x20\x63\x70\x75\x66\x72\x65\x71\x20\x70\x6f\x6c\x69\x63\x79\x20\x6e\x6f\x74\x20\x66\x6f\x75\x6e\x64\x20\x66\x6f\x72\x20\x63\x70\x75\x25\x64" "\n" +,__func__,i);return-ESRCH;}ret=freq_qos_add_request(&policy->constraints, +DATARMNETddcafd8b91,FREQ_QOS_MIN,MIN_FREQ);if(ret<(0xd2d+202-0xdf7)){pr_err( +"\x25\x73\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x61\x64\x64\x20\x66\x72\x65\x71\x20\x63\x6f\x6e\x73\x74\x72\x61\x69\x6e\x74\x20\x28\x25\x64\x29" "\n" +,__func__,ret);return ret;}}INIT_WORK(&DATARMNETbfcbb4b8ac,DATARMNETb90d2272b4); +DATARMNET82d7f4ffa2();return(0xd2d+202-0xdf7);err:DATARMNET82d7f4ffa2(); +free_percpu(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb);if(DATARMNETde8f350999){ +destroy_workqueue(DATARMNETde8f350999);DATARMNETde8f350999=NULL;}return ret;}int + DATARMNETdf74db7e38(void){DATARMNET009d37d173();if(DATARMNETde8f350999){ +destroy_workqueue(DATARMNETde8f350999);DATARMNETde8f350999=NULL;}free_percpu( +DATARMNETc4b1be7898.DATARMNET9dd9bc4abb);return(0xd2d+202-0xdf7);} diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.h b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.h new file mode 100644 index 0000000000..694c43d413 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.h @@ -0,0 +1,20 @@ +/* Copyright (c) 2020-2021 The Linux Foundation. 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. + * + */ + +#ifndef DATARMNETef19703014 +#define DATARMNETef19703014 +int DATARMNETe6e8431304(void);int DATARMNETdf74db7e38(void);void +DATARMNETfb7007f025(void);void DATARMNET371703c28d(void);void +DATARMNET5e4aeef593(int cpu); +#endif + diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_main.c b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_main.c new file mode 100644 index 0000000000..7428d95b22 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_main.c @@ -0,0 +1,941 @@ +/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "rmnet_shs.h" +#include "rmnet_shs_config.h" +#include "rmnet_shs_wq.h" +#include "rmnet_shs_modules.h" +#include "rmnet_shs_common.h" +#include "rmnet_trace.h" +#include "rmnet_shs_wq_genl.h" +#include +#include +#include +#include +static char*verinfo[]={"\x36\x38\x36\x36\x36\x32\x33\x32", +"\x30\x36\x61\x33\x66\x33\x34\x62","\x35\x65\x31\x64\x38\x37\x39\x62", +"\x37\x34\x31\x35\x39\x32\x31\x63","\x31\x35\x33\x64\x31\x61\x62\x31", +"\x34\x66\x64\x35\x39\x63\x66\x35","\x38\x61\x64\x37\x64\x32\x62\x65", +"\x63\x30\x32\x62\x61\x39\x30\x65"};module_param_array(verinfo,charp,NULL, +(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo, +"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72" +); +#define DATARMNET2f67183a86 2000000 +#define DATARMNET68fc0be252 1000000 +#define DATARMNETd391fbd694 (0xd2d+202-0xdf7) +#define DATARMNETae2e980d66 (0xd11+230-0xdf3) +#define DATARMNET249a927510 (0xd27+224-0xdfd) +#define DATARMNET904145ccb9 (0xd11+230-0xdf3) +#define DATARMNETb91aee91fd -(0xd26+209-0xdf6) +#define DATARMNET00d5787aad 2000000 +#define DATARMNET8948dc953d (0xd0a+237-0xdf2) +#define DATARMNET20dc6bb36b (0xd26+209-0xdf6) +#define DATARMNET832731a933(CPU) (per_cpu(softnet_data, CPU).input_pkt_queue) +#define DATARMNET3de2536baf(CPU) (per_cpu(softnet_data, CPU).process_queue) +#define DATARMNETd2d15e7f67(CPU) (DATARMNET832731a933(CPU).qlen + \ +DATARMNET3de2536baf(CPU).qlen) +#define DATARMNET78ec5e8746(DATARMNETfbfdc7f27e, CPU) (per_cpu(\ +DATARMNETfbfdc7f27e, CPU).input_queue_tail) +#define DATARMNET9c1c20df35(DATARMNETfbfdc7f27e, CPU) (per_cpu(\ +DATARMNETfbfdc7f27e, CPU).input_queue_head) +#define DATARMNET66ead9195a(CPU) (per_cpu(softnet_data, CPU).input_queue_head) +#define DATARMNETbb1541e65b(CPU) (per_cpu(softnet_data, CPU).input_queue_tail) +#define DATARMNETba5ea4329f(CPU) DATARMNETecc0627c70.DATARMNET132b9c7dc4[CPU].\ +DATARMNET758a55f103 +#define DATARMNETe84c5b47ba (0xd2d+202-0xdf7) +#define DATARMNET313d662f61 (0xd26+209-0xdf6) +#define DATARMNET0085702236 (0xd0a+237-0xdf2) +#define DATARMNETec970d7090 (0xd26+209-0xdf6) +#define DATARMNET8fadb49f38 (0xd2d+202-0xdf7) +#define DATARMNET48a89fcc16 (0xd26+209-0xdf6) +#define DATARMNETbfe901fc62 (0xd2d+202-0xdf7) +DEFINE_SPINLOCK(DATARMNET3764d083f0);DEFINE_HASHTABLE(DATARMNETe603c3a4b3, +DATARMNET25437d35fd);struct DATARMNETe600c5b727 DATARMNET0997c5650d[ +DATARMNETc6782fed88];int DATARMNETcff375d916[DATARMNETc6782fed88];unsigned int +DATARMNET064fbe9e3a __read_mostly=(0xd2d+202-0xdf7);module_param( +DATARMNET064fbe9e3a,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET064fbe9e3a,"\x77\x61\x6b\x65\x20\x73\x74\x61\x74\x75\x73");unsigned int + DATARMNETe4a6d22824 __read_mostly=(0xc07+4861-0x1e3c);module_param( +DATARMNETe4a6d22824,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET94b2cc2f14, +"\x75\x70\x20\x64\x75\x74\x79\x20\x63\x79\x63\x6c\x65\x20\x69\x6e\x20\x6d\x73"); +unsigned int DATARMNETaf998640fd __read_mostly=(0xcb7+1735-0x102c);module_param( +DATARMNETaf998640fd,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETaf998640fd, +"\x4d\x61\x78\x20\x69\x6e\x74\x65\x72\x6c\x65\x61\x76\x65\x64\x20\x69\x70\x61\x20\x70\x6b\x74\x73\x20\x73\x68\x73\x20\x77\x69\x6c\x6c\x20\x70\x61\x72\x6b" +);unsigned int DATARMNET566e381630 __read_mostly=(0xf07+658-0x110d);module_param +(DATARMNET566e381630,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETaf998640fd, +"\x4d\x61\x78\x20\x69\x6e\x74\x65\x72\x6c\x65\x61\x76\x65\x64\x20\x69\x70\x61\x20\x70\x6b\x74\x73\x20\x73\x68\x73\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x70\x61\x72\x6b\x20\x66\x6f\x72\x20\x28\x6d\x73\x29" +);unsigned int DATARMNETf4cacbb5dc __read_mostly=7000;module_param( +DATARMNETf4cacbb5dc,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETf4cacbb5dc, +"\x4d\x61\x78\x20\x70\x61\x63\x6b\x65\x74\x73\x20\x73\x68\x73\x20\x77\x69\x6c\x6c\x20\x73\x74\x65\x65\x72" +);unsigned int DATARMNET673cf85e28 __read_mostly=(0xd2d+202-0xdf7);module_param( +DATARMNET673cf85e28,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET673cf85e28, +"\x4d\x61\x78\x20\x70\x68\x79\x20\x62\x61\x63\x6b\x6c\x6f\x67\x20\x73\x65\x65\x6e" +);struct DATARMNETa6b20d7e8b DATARMNETecc0627c70;struct DATARMNET37ef896af8 +shs_rx_work;int DATARMNET762cfa52fe(u8 mask);unsigned DATARMNET016351c9e4= +(0xd2d+202-0xdf7);typedef int(*DATARMNET318cb01989)(struct sk_buff*skb); +DATARMNET318cb01989 rmnet_perf_ingress_hook1 __rcu __read_mostly;EXPORT_SYMBOL( +rmnet_perf_ingress_hook1);ssize_t DATARMNET713da9913c(struct netdev_rx_queue* +DATARMNETb4180393e4,u8 cpu,u8 DATARMNET5780499e9c){struct rps_map* +DATARMNETaeb4918e65,*map;cpumask_var_t mask;map=rcu_dereference( +DATARMNETb4180393e4->rps_map);if(map){map->cpus[(0xd2d+202-0xdf7)]=cpu;map->len= +(0xd26+209-0xdf6);if(((0xd26+209-0xdf6)<cpus[ +(0xd2d+202-0xdf7)]=cpu;map->len=(0xd26+209-0xdf6);if(((0xd26+209-0xdf6)<rps_map);rcu_assign_pointer( +DATARMNETb4180393e4->rps_map,map);if(DATARMNETaeb4918e65)kfree( +DATARMNETaeb4918e65);free_cpumask_var(mask);rcu_read_unlock();return +(0xd2d+202-0xdf7);}static void*DATARMNETefcaf5fbe9(struct sk_buff*skb,u32 offset +,u32 DATARMNET567bdc7221,void*buf){struct skb_shared_info*shinfo=skb_shinfo(skb) +;skb_frag_t*frag;u32 DATARMNETedc267a909=offset;int i;if(offset>skb->len|| +DATARMNET567bdc7221>skb->len||offset+DATARMNET567bdc7221>skb->len)return NULL;if +(skb_headlen(skb)>=offset+DATARMNET567bdc7221)return skb->data+offset;offset-= +skb_headlen(skb);for(i=(0xd2d+202-0xdf7);inr_frags;i++){u32 frag_size; +frag=&shinfo->frags[i];frag_size=skb_frag_size(frag);if(offset>=frag_size){ +offset-=frag_size;continue;}if(frag_size>=offset+DATARMNET567bdc7221)return +skb_frag_address(frag)+offset;}if(skb_copy_bits(skb,(int)DATARMNETedc267a909,buf +,(int)DATARMNET567bdc7221))return NULL;return buf;}int DATARMNET9303cec796( +struct sk_buff*skb){int DATARMNETbd864aa442=(0xd2d+202-0xdf7);struct iphdr*ip4h, +DATARMNETc00baf31c3;struct ipv6hdr*ip6h,DATARMNETcf1d9e2c1e;DATARMNET318cb01989 +DATARMNET9a0f3e1b3a;s64 DATARMNETe30c7cdaf5;struct timespec64 time; +DATARMNET9a0f3e1b3a=rcu_dereference(rmnet_perf_ingress_hook1);if( +DATARMNET9a0f3e1b3a){if(!DATARMNET9a0f3e1b3a(skb)){goto done;}}switch(skb-> +protocol){case htons(ETH_P_IP):ip4h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7), +sizeof(*ip4h),&DATARMNETc00baf31c3);if(!ip4h)break;if(!ip_is_fragment(ip4h)&&( +ip4h->protocol==IPPROTO_TCP||ip4h->protocol==IPPROTO_UDP)){DATARMNETbd864aa442= +(0xd26+209-0xdf6);break;}if(ip4h->protocol==IPPROTO_ICMP){skb->hash= +(0xd2d+202-0xdf7);skb->sw_hash=(0xd26+209-0xdf6);(void)ktime_get_boottime_ts64(& +time);DATARMNETe30c7cdaf5=ktime_ms_delta(ktime_set(time.tv_sec,time.tv_nsec), +DATARMNETecc0627c70.DATARMNETdd3caf9200);if(hrtimer_active(&DATARMNETecc0627c70. +hrtimer_wake)){hrtimer_cancel(&DATARMNETecc0627c70.hrtimer_wake);hrtimer_start(& +DATARMNETecc0627c70.hrtimer_wake,ns_to_ktime((0xbf7+4070-0x172d)* +DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);DATARMNET064fbe9e3a= +(0xd1f+216-0xdf5);}else{hrtimer_start(&DATARMNETecc0627c70.hrtimer_wake, +ns_to_ktime((0xbf7+4070-0x172d)*DATARMNET68fc0be252),HRTIMER_MODE_REL| +HRTIMER_MODE_PINNED);__pm_stay_awake(DATARMNETecc0627c70.ws);DATARMNET064fbe9e3a +=(0xd1f+216-0xdf5);}if(!hrtimer_active(&DATARMNETecc0627c70.DATARMNET645fb3b468) +){hrtimer_start(&DATARMNETecc0627c70.DATARMNET645fb3b468,ns_to_ktime( +(0xdf7+3019-0x160c)*DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED); +if(DATARMNETe30c7cdaf5>DATARMNET12f3a261a0&&DATARMNETecc0627c70. +DATARMNETdd3caf9200){DATARMNET930a441406[DATARMNETe35e238437]++;}}else{ +DATARMNET930a441406[DATARMNETe35e238437]++;}if(trace_print_icmp_rx_enabled()){ +char saddr[INET6_ADDRSTRLEN],daddr[INET6_ADDRSTRLEN];u16 ip_proto= +(0xd2d+202-0xdf7);__be16 sequence=(0xd2d+202-0xdf7);u8 type=(0xd2d+202-0xdf7); +struct icmphdr*icmphdr,DATARMNET5aa29a2264;memset(saddr,(0xd2d+202-0xdf7), +INET6_ADDRSTRLEN);memset(daddr,(0xd2d+202-0xdf7),INET6_ADDRSTRLEN);icmphdr= +DATARMNETefcaf5fbe9(skb,ip4h->ihl*(0xd11+230-0xdf3),sizeof(*icmphdr),& +DATARMNET5aa29a2264);if(!icmphdr)goto DATARMNET03fd0cd6e6;if(icmphdr->type!= +ICMP_ECHOREPLY&&icmphdr->type!=ICMP_ECHO)goto DATARMNET03fd0cd6e6;ip_proto=htons +(ETH_P_IP);type=icmphdr->type;sequence=icmphdr->un.echo.sequence;snprintf(saddr, +INET6_ADDRSTRLEN,"\x25\x70\x49\x34",&ip4h->saddr);snprintf(daddr, +INET6_ADDRSTRLEN,"\x25\x70\x49\x34",&ip4h->daddr);trace_print_icmp_rx(skb, +ip_proto,type,sequence,saddr,daddr);}}DATARMNET03fd0cd6e6:break;case htons( +ETH_P_IPV6):ip6h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),sizeof(*ip6h),& +DATARMNETcf1d9e2c1e);if(!ip6h)break;if(!(ip6h->nexthdr==NEXTHDR_FRAGMENT)&&(ip6h +->nexthdr==IPPROTO_TCP||ip6h->nexthdr==IPPROTO_UDP)){DATARMNETbd864aa442= +(0xd26+209-0xdf6);break;}if(ip6h->nexthdr==NEXTHDR_ICMP){skb->hash= +(0xd2d+202-0xdf7);skb->sw_hash=(0xd26+209-0xdf6);(void)ktime_get_boottime_ts64(& +time);DATARMNETe30c7cdaf5=ktime_ms_delta(ktime_set(time.tv_sec,time.tv_nsec), +DATARMNETecc0627c70.DATARMNETdd3caf9200);if(hrtimer_active(&DATARMNETecc0627c70. +hrtimer_wake)){hrtimer_cancel(&DATARMNETecc0627c70.hrtimer_wake);hrtimer_start(& +DATARMNETecc0627c70.hrtimer_wake,ns_to_ktime((0xbf7+4070-0x172d)* +DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);DATARMNET064fbe9e3a= +(0xd1f+216-0xdf5);}else{hrtimer_start(&DATARMNETecc0627c70.hrtimer_wake, +ns_to_ktime((0xbf7+4070-0x172d)*DATARMNET68fc0be252),HRTIMER_MODE_REL| +HRTIMER_MODE_PINNED);__pm_stay_awake(DATARMNETecc0627c70.ws);DATARMNET064fbe9e3a +=(0xd1f+216-0xdf5);}if(!hrtimer_active(&DATARMNETecc0627c70.DATARMNET645fb3b468) +){hrtimer_start(&DATARMNETecc0627c70.DATARMNET645fb3b468,ns_to_ktime( +(0xdf7+3019-0x160c)*DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED); +if(DATARMNETe30c7cdaf5>DATARMNET12f3a261a0&&DATARMNETecc0627c70. +DATARMNETdd3caf9200){DATARMNET930a441406[DATARMNETe35e238437]++;}}else{ +DATARMNET930a441406[DATARMNETe35e238437]++;}if(trace_print_icmp_rx_enabled()){ +char saddr[INET6_ADDRSTRLEN],daddr[INET6_ADDRSTRLEN];u16 ip_proto= +(0xd2d+202-0xdf7);__be16 sequence=(0xd2d+202-0xdf7);u8 type=(0xd2d+202-0xdf7); +struct icmp6hdr*icmp6hdr,DATARMNETaa41336581;memset(saddr,(0xd2d+202-0xdf7), +INET6_ADDRSTRLEN);memset(daddr,(0xd2d+202-0xdf7),INET6_ADDRSTRLEN);icmp6hdr= +DATARMNETefcaf5fbe9(skb,sizeof(*ip6h),sizeof(*icmp6hdr),&DATARMNETaa41336581);if +(!icmp6hdr)goto DATARMNETf623862dd4;if(icmp6hdr->icmp6_type!=ICMPV6_ECHO_REQUEST +&&icmp6hdr->icmp6_type!=ICMPV6_ECHO_REPLY)goto DATARMNETf623862dd4;ip_proto= +htons(ETH_P_IPV6);type=icmp6hdr->icmp6_type;sequence=icmp6hdr->icmp6_sequence; +snprintf(saddr,INET6_ADDRSTRLEN,"\x25\x70\x49\x36",&ip6h->saddr);snprintf(daddr, +INET6_ADDRSTRLEN,"\x25\x70\x49\x36",&ip6h->daddr);trace_print_icmp_rx(skb, +ip_proto,type,sequence,saddr,daddr);}}DATARMNETf623862dd4:break;default:break;} +done:DATARMNETda96251102(DATARMNETcd24fca747,DATARMNET116c96c236, +DATARMNETbd864aa442,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb +,NULL);return DATARMNETbd864aa442;}static void DATARMNETfa919d00dc(int cpu,int +DATARMNET8a461bad56){struct timespec64 DATARMNET2e47295bf1;struct timespec64* +DATARMNET736ac5582e;long DATARMNETb64270afc1;int DATARMNETa67155ba38=( +DATARMNETa1ac2608b5tv_sec)+DATARMNET2e47295bf1.tv_nsec-DATARMNET736ac5582e-> +tv_nsec;if(DATARMNETb64270afc1>=DATARMNETa67155ba38*DATARMNET68fc0be252){if( +DATARMNETecc0627c70.DATARMNET132b9c7dc4[cpu].DATARMNETe61d62310f> +DATARMNETd75e474598[cpu])DATARMNETd75e474598[cpu]=DATARMNETecc0627c70. +DATARMNET132b9c7dc4[cpu].DATARMNETe61d62310f;DATARMNETecc0627c70. +DATARMNET132b9c7dc4[cpu].DATARMNET251b97a380.tv_sec=DATARMNET2e47295bf1.tv_sec; +DATARMNETecc0627c70.DATARMNET132b9c7dc4[cpu].DATARMNET251b97a380.tv_nsec= +DATARMNET2e47295bf1.tv_nsec;DATARMNETecc0627c70.DATARMNET132b9c7dc4[cpu]. +DATARMNETe61d62310f=DATARMNET8a461bad56;}else{DATARMNETecc0627c70. +DATARMNET132b9c7dc4[cpu].DATARMNETe61d62310f+=DATARMNET8a461bad56;}}void +DATARMNETe767554e6e(struct sk_buff*skb){DATARMNETda96251102(DATARMNET6b317c4c73, +DATARMNET43225b7a7c,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),skb,NULL);netif_receive_skb(skb);}void DATARMNET514ce0bf59( +struct sk_buff*skb){DATARMNETda96251102(DATARMNET6b317c4c73,DATARMNET43225b7a7c, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb, +NULL);netif_rx_ni(skb);}static struct sk_buff*DATARMNET0e315f0262(struct sk_buff +*skb,u16 DATARMNETf8272cfb41){struct skb_shared_info*shinfo=skb_shinfo(skb); +struct sk_buff*DATARMNET6643e66666,*tmp;u16 gso_size=shinfo->gso_size;u16 +gso_segs=shinfo->gso_segs;unsigned int gso_type=shinfo->gso_type;if( +DATARMNETf8272cfb41>=gso_segs){return NULL;}shinfo->gso_segs=DIV_ROUND_UP( +gso_segs,DATARMNETf8272cfb41);shinfo->gso_size=gso_size*DATARMNETf8272cfb41; +DATARMNET6643e66666=__skb_gso_segment(skb,NETIF_F_SG,false);if(unlikely( +IS_ERR_OR_NULL(DATARMNET6643e66666))){shinfo->gso_size=gso_size;shinfo->gso_segs +=gso_segs;return NULL;}if(DATARMNETf8272cfb41<=(0xd26+209-0xdf6))return +DATARMNET6643e66666;for(tmp=DATARMNET6643e66666;tmp;tmp=tmp->next){struct +skb_shared_info*DATARMNETa7dac37e66=skb_shinfo(tmp);DATARMNETa7dac37e66-> +gso_type=gso_type;DATARMNETa7dac37e66->gso_size=gso_size;if(gso_segs>= +DATARMNETf8272cfb41)DATARMNETa7dac37e66->gso_segs=DATARMNETf8272cfb41;else +DATARMNETa7dac37e66->gso_segs=gso_segs;gso_segs-=DATARMNETf8272cfb41;if(gso_segs +<=(0xd26+209-0xdf6)){break;}}return DATARMNET6643e66666;}static void +DATARMNET21243b86ae(struct sk_buff*DATARMNETe08e18123e,u8 DATARMNETf345c1d909, +u16 DATARMNET87636d0152){struct sk_buff*skb=NULL;struct sk_buff* +DATARMNETcebafc57a4=NULL;struct sk_buff*DATARMNET39bcb0d197=NULL;int count= +(0xd2d+202-0xdf7);DATARMNETda96251102(DATARMNET6b317c4c73,DATARMNET43225b7a7c, +(0xd26+209-0xdf6),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +DATARMNETe08e18123e,NULL);DATARMNET39bcb0d197=DATARMNET0e315f0262( +DATARMNETe08e18123e,DATARMNET87636d0152);if(DATARMNET39bcb0d197==NULL){if( +DATARMNETf345c1d909==DATARMNET0b15fd8b54)netif_receive_skb(DATARMNETe08e18123e); +else netif_rx(DATARMNETe08e18123e);return;}for((skb=DATARMNET39bcb0d197);skb!= +NULL;skb=DATARMNETcebafc57a4){DATARMNETcebafc57a4=skb->next;skb->hash= +DATARMNETe08e18123e->hash;skb->dev=DATARMNETe08e18123e->dev;skb->next=NULL;if( +DATARMNETf345c1d909==DATARMNET0b15fd8b54)netif_receive_skb(skb);else netif_rx( +skb);count+=(0xd26+209-0xdf6);}consume_skb(DATARMNETe08e18123e);return;}int +DATARMNET2efb1a51c7(struct DATARMNET63d7680df2*node_p){int ret=(0xd2d+202-0xdf7) +;int DATARMNET42c3ecbd5e=(0xd26+209-0xdf6);u16 idx=(0xd2d+202-0xdf7);for(idx= +(0xd2d+202-0xdf7);idxDATARMNET341ea38662 +->DATARMNET1a1d89d417&DATARMNET42c3ecbd5e)ret++;DATARMNET42c3ecbd5e= +DATARMNET42c3ecbd5e<<(0xd26+209-0xdf6);}return ret;}u32 DATARMNET8532ab3089(u32 +index,u32 DATARMNET0258668025,u32 hash){int DATARMNETebbd4cd1d9[ +DATARMNETc6782fed88/(0xd1f+216-0xdf5)]={(0xd35+210-0xdff),(0xd11+230-0xdf3), +(0xd18+223-0xdf4),(0xd1f+216-0xdf5)};u32 ret=(0xd2d+202-0xdf7);if(! +DATARMNET0258668025){DATARMNET68d84e7b98[DATARMNETef8cbfa62f]++;return ret;}if( +DATARMNET0258668025>(0xd26+209-0xdf6)]) +|(hash&1048575);DATARMNETda96251102(DATARMNETf3aaad06eb,DATARMNET4e91ddb48a,ret, +hash,index,DATARMNET0258668025,NULL,NULL);return ret;}int DATARMNET762cfa52fe(u8 + mask){int ret=DATARMNETb91aee91fd;int DATARMNETd416f5b047=DATARMNETb91aee91fd; +u8 DATARMNET05e5e122cd=(0xd2d+202-0xdf7);u8 i;for(i=(0xd2d+202-0xdf7);i< +DATARMNETc6782fed88;i++){if(!(mask&((0xd26+209-0xdf6)<=DATARMNETd82a2ed45e) +DATARMNETf54fdb137b=DATARMNET98b2a0ce62(dev);DATARMNET52de1f3dc0( +DATARMNET720469c0a9,DATARMNET7e63a08ad4,DATARMNETf54fdb137b,DATARMNETab155dfd5d, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);return DATARMNETf54fdb137b;}int + DATARMNET6af33ebb5b(struct DATARMNET63d7680df2*DATARMNET63b1a086d5){int cpu= +DATARMNETb91aee91fd;u8 DATARMNETd4a0b11b47;u8 DATARMNET7dc3d97229;if( +DATARMNET63b1a086d5->DATARMNET85c698ec34)return DATARMNETecc0627c70. +DATARMNET5c24e1df05;else if(DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu]. +DATARMNETef866573e0&&DATARMNET362b15f941(DATARMNET63b1a086d5->map_cpu)){cpu= +DATARMNET762cfa52fe(DATARMNETbc3c416b77&~DATARMNETecc0627c70.DATARMNETba3f7a11ef +&DATARMNET63b1a086d5->DATARMNETfbbec4c537);if(cpu<(0xd2d+202-0xdf7)&& +DATARMNET63b1a086d5->DATARMNET341ea38662!=NULL)cpu=DATARMNET63b1a086d5-> +DATARMNET341ea38662->DATARMNET6e1a4eaf09;}else if(DATARMNET63b1a086d5-> +DATARMNET341ea38662!=NULL){cpu=DATARMNET63b1a086d5->DATARMNET341ea38662-> +DATARMNET6e1a4eaf09;if(((0xd26+209-0xdf6)<map_cpu)& +DATARMNETecc0627c70.DATARMNETba3f7a11ef){DATARMNETd4a0b11b47=( +DATARMNETbc3c416b77&((0xd26+209-0xdf6)<DATARMNETfbbec4c537 +);DATARMNETb7ddf3c5dd[DATARMNET7f401828b3]++;}else if(((0xd26+209-0xdf6)<map_cpu))?DATARMNETbc3c416b77:DATARMNET9273f84bf1;if( +DATARMNETd4a0b11b47!=DATARMNET7dc3d97229)cpu=DATARMNET762cfa52fe( +DATARMNETd4a0b11b47&~DATARMNETecc0627c70.DATARMNETba3f7a11ef&DATARMNET63b1a086d5 +->DATARMNETfbbec4c537);else cpu=DATARMNET63b1a086d5->map_cpu;}else if( +DATARMNET0997c5650d[cpu].DATARMNETef866573e0){cpu=DATARMNET63b1a086d5->map_cpu;} +}return cpu;}int DATARMNETb6bff4a724(struct DATARMNET63d7680df2* +DATARMNET63b1a086d5){int cpu,idx=DATARMNETb91aee91fd;cpu=DATARMNET6af33ebb5b( +DATARMNET63b1a086d5);idx=DATARMNET04e8d1b862(cpu,DATARMNET63b1a086d5-> +DATARMNETfbbec4c537);if(unlikely(idx<(0xd2d+202-0xdf7)))idx=DATARMNET04e8d1b862( +DATARMNET63b1a086d5->map_cpu,DATARMNET63b1a086d5->DATARMNETfbbec4c537); +DATARMNETda96251102(DATARMNETf3aaad06eb,DATARMNETf2fc7954d4,DATARMNET63b1a086d5 +->hash,cpu,idx,(0x16e8+787-0xc0c),DATARMNET63b1a086d5,NULL);return idx;}static +int DATARMNET2af09ccd0b(int cpu,int DATARMNET63a222ae1f,int DATARMNETea08087fc0) +{int ret=(0xd2d+202-0xdf7);if(DATARMNETecc0627c70.DATARMNET132b9c7dc4[cpu]. +DATARMNETe61d62310f>=DATARMNET65393dea13[cpu]){ret=DATARMNET0efbbe2821;}if( +DATARMNET63a222ae1f&&((DATARMNETeea3cef5b6(cpu)+DATARMNETea08087fc0)>= +DATARMNETbc049ffc4c[cpu]))ret=DATARMNETa4267dfd8a;return ret;}void +DATARMNET349c3a0cab(u16 map_cpu,bool DATARMNETb639f6e1b1){if(map_cpu< +DATARMNETc6782fed88)(DATARMNETb639f6e1b1)?DATARMNETcff375d916[map_cpu]++: +DATARMNETcff375d916[map_cpu]--;else DATARMNET68d84e7b98[DATARMNETcc0ef52ccb]++;} +void DATARMNETb1157fd5c4(u8 DATARMNET42a992465f){if(DATARMNET42a992465f>= +DATARMNETc6782fed88)return;rcu_read_lock();DATARMNET0997c5650d[ +DATARMNET42a992465f].DATARMNETae196235f2=DATARMNET9c1c20df35(softnet_data, +DATARMNET42a992465f);DATARMNET0997c5650d[DATARMNET42a992465f].qtail= +DATARMNET78ec5e8746(softnet_data,DATARMNET42a992465f);rcu_read_unlock(); +DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET96571b28de=DATARMNET0997c5650d +[DATARMNET42a992465f].qtail-DATARMNET0997c5650d[DATARMNET42a992465f]. +DATARMNETae196235f2;DATARMNETda96251102(DATARMNET75d955c408,DATARMNET5874e1ecd7, +DATARMNET42a992465f,DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNETae196235f2 +,DATARMNET0997c5650d[DATARMNET42a992465f].qtail,(0x16e8+787-0xc0c),NULL,NULL);} +void DATARMNETe074a09496(void){u8 DATARMNET42a992465f;rcu_read_lock();for( +DATARMNET42a992465f=(0xd2d+202-0xdf7);DATARMNET42a992465f_rx,cpu,DATARMNET5780499e9c)== +(0xd2d+202-0xdf7)){DATARMNETecc0627c70.DATARMNETba3f7a11ef=(0xd26+209-0xdf6)<< +cpu;DATARMNETecc0627c70.DATARMNET6625085b71=DATARMNETecc0627c70. +DATARMNET7d667e828e;DATARMNETecc0627c70.DATARMNET7d667e828e=cpu;}else{return- +(0xd26+209-0xdf6);}}else{DATARMNET68d84e7b98[DATARMNET767c76ca08]++;}return +(0xd2d+202-0xdf7);}int DATARMNETe488c1c396(struct DATARMNET63d7680df2* +DATARMNET63b1a086d5,u8 DATARMNETd87669e323,u8 DATARMNET5447204733){int +DATARMNET5c4a331b9c;u32 DATARMNETd3673fd5f0;u32 DATARMNET9bbfe49633;int ret= +(0xd2d+202-0xdf7);int DATARMNET5a2e9192f9=-(0xd26+209-0xdf6);int +DATARMNET8ceb7a8cc9;int DATARMNET42a992465f;int DATARMNETcfb5dc7296;struct +DATARMNETe600c5b727*DATARMNET373e474754;u8 map=DATARMNET63b1a086d5-> +DATARMNETfbbec4c537;DATARMNET5c4a331b9c=DATARMNETb6bff4a724(DATARMNET63b1a086d5) +;do{DATARMNET5a2e9192f9=DATARMNET63b1a086d5->map_cpu;if(DATARMNET5c4a331b9c< +(0xd2d+202-0xdf7)){DATARMNET63b1a086d5->DATARMNET6250e93187=(0xd2d+202-0xdf7); +ret=(0xd26+209-0xdf6);break;}DATARMNET63b1a086d5->DATARMNET6250e93187= +(0xd26+209-0xdf6);if(!map){DATARMNET63b1a086d5->DATARMNET6250e93187= +(0xd2d+202-0xdf7);ret=(0xd26+209-0xdf6);break;}if(DATARMNET5c4a331b9c== +DATARMNET63b1a086d5->map_index){ret=(0xd26+209-0xdf6);break;}if(! +DATARMNET63b1a086d5->DATARMNET85c698ec34)DATARMNETd3673fd5f0=DATARMNETadb0248bd4 +(DATARMNET63b1a086d5->map_cpu);else DATARMNETd3673fd5f0=DATARMNETadb0248bd4( +DATARMNETecc0627c70.DATARMNET7d667e828e);DATARMNET9bbfe49633=DATARMNET63b1a086d5 +->queue_head;DATARMNET42a992465f=DATARMNET63b1a086d5->map_cpu;if((! +DATARMNET63b1a086d5->DATARMNET85c698ec34&&DATARMNETd3673fd5f0>=( +DATARMNET9bbfe49633+DATARMNET63b1a086d5->DATARMNET0371465875))||( +DATARMNETd87669e323>=DATARMNETa7d45fb6d4||(DATARMNETd87669e323&& +DATARMNET63b1a086d5->DATARMNET85c698ec34))||(!DATARMNET63b1a086d5-> +DATARMNET85c698ec34&&!DATARMNETeea3cef5b6(DATARMNET42a992465f)&&++ +DATARMNET14ed771dfb[DATARMNET0d07041c32])){if(likely(DATARMNETa7909611da)){ +DATARMNETcfb5dc7296=DATARMNETaef946bb68(DATARMNET5c4a331b9c,DATARMNET63b1a086d5 +->DATARMNETfbbec4c537);if(DATARMNETcfb5dc7296<(0xd2d+202-0xdf7)){ret= +(0xd26+209-0xdf6);break;}DATARMNET0997c5650d[DATARMNETcfb5dc7296]. +DATARMNET4133fc9428+=DATARMNET63b1a086d5->DATARMNETae4b27456e. +DATARMNET6215127f48;DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu]. +DATARMNET4133fc9428-=DATARMNET63b1a086d5->DATARMNETae4b27456e. +DATARMNET6215127f48;DATARMNET63b1a086d5->map_index=DATARMNET5c4a331b9c; +DATARMNET63b1a086d5->map_cpu=DATARMNETcfb5dc7296;DATARMNET8ceb7a8cc9= +DATARMNET63b1a086d5->map_cpu;if(DATARMNETd3673fd5f0<(DATARMNET9bbfe49633+ +DATARMNET63b1a086d5->DATARMNET0371465875)){DATARMNETb7ddf3c5dd[ +DATARMNET28bb261646]++;DATARMNETb7ddf3c5dd[DATARMNET67b67dc88f]+=( +DATARMNET9bbfe49633-DATARMNETd3673fd5f0)+DATARMNET63b1a086d5-> +DATARMNET0371465875;DATARMNET4bde88919f(DATARMNET42a992465f,(DATARMNET9bbfe49633 +-DATARMNETd3673fd5f0)+DATARMNET63b1a086d5->DATARMNET0371465875);pr_info( +"\x73\x68\x73\x20\x6f\x6f\x6f\x3a\x20\x70\x68\x79\x20\x25\x64\x20\x6e\x65\x77\x5f\x63\x70\x75\x20\x25\x64\x20\x6f\x6c\x64\x5f\x63\x70\x75\x20\x25\x64\x2c\x20\x6f\x66\x66\x73\x65\x74\x20\x25\x64\x20\x6e\x6f\x64\x65\x5f\x71\x68\x65\x61\x64\x20\x25\x64\x2c\x20\x63\x75\x72\x5f\x71\x68\x65\x61\x64\x20\x25\x64\x2c\x20\x66\x66\x20\x25\x64\x20\x6f\x6c\x64\x20\x63\x70\x75\x20\x71\x64\x69\x66\x66\x20\x25\x64\x20\x6e\x65\x77\x20\x71\x64\x69\x66\x66\x20\x25\x64\x20" "\n" +,DATARMNET63b1a086d5->DATARMNET85c698ec34,DATARMNETcfb5dc7296, +DATARMNET42a992465f,DATARMNET63b1a086d5->DATARMNET0371465875,DATARMNET9bbfe49633 +,DATARMNETd3673fd5f0,DATARMNETd87669e323,DATARMNETeea3cef5b6(DATARMNET42a992465f +),DATARMNETeea3cef5b6(DATARMNETcfb5dc7296));}if(DATARMNET0997c5650d[ +DATARMNET42a992465f].DATARMNETef866573e0){DATARMNET0997c5650d[ +DATARMNET8ceb7a8cc9].DATARMNET1e1f197118=(0xd26+209-0xdf6);DATARMNETb7ddf3c5dd[ +DATARMNETc3bce05be2]++;}else{DATARMNETb7ddf3c5dd[DATARMNET14067f0be4]++;} +DATARMNET373e474754=&DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu]; +DATARMNETe074a09496();DATARMNET63b1a086d5->queue_head=DATARMNET373e474754-> +DATARMNETae196235f2;DATARMNET63b1a086d5->queue_head+=DATARMNET63b1a086d5-> +DATARMNETae4b27456e.DATARMNET6215127f48;if(DATARMNET63b1a086d5-> +DATARMNET341ea38662)DATARMNET63b1a086d5->DATARMNET341ea38662-> +DATARMNET6e1a4eaf09=DATARMNET8ceb7a8cc9;DATARMNETe102b3a798(DATARMNET63b1a086d5, +&DATARMNET373e474754->DATARMNET3dc4262f53,DATARMNET42a992465f); +DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET052f49b190,DATARMNET63b1a086d5 +->map_cpu,DATARMNET5a2e9192f9,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +DATARMNET63b1a086d5,NULL);}ret=(0xd26+209-0xdf6);}}while((0xd2d+202-0xdf7)); +DATARMNETda96251102(DATARMNET4510abc30d,DATARMNET23b8465daf,ret, +DATARMNET63b1a086d5->map_cpu,DATARMNET5a2e9192f9,(0x16e8+787-0xc0c), +DATARMNET63b1a086d5,NULL);return ret;}void DATARMNETfbc06e60f1(u8 +DATARMNET42a992465f){struct DATARMNET63d7680df2*DATARMNET3f85732c70;struct +list_head*DATARMNET7b34b7b5be,*next;unsigned long ht_flags;u32 +DATARMNET61ab18a4bd;u32 DATARMNETed7800fc72=(0xd2d+202-0xdf7);u32 +DATARMNETa0df5de99d=(0xd2d+202-0xdf7);u32 DATARMNET8bf94cc2f7=(0xd2d+202-0xdf7); +u32 DATARMNET76192fa639=(0xd2d+202-0xdf7);DATARMNETe074a09496(); +DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNETde91850c28,DATARMNETecc0627c70. +DATARMNETa2e32cdd3a,DATARMNETecc0627c70.DATARMNETc252a1f55d,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),NULL,NULL);local_bh_disable();spin_lock_irqsave(& +DATARMNET3764d083f0,ht_flags);DATARMNET61ab18a4bd=DATARMNETeb3978575d( +DATARMNET42a992465f);list_for_each_safe(DATARMNET7b34b7b5be,next,& +DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET3dc4262f53){ +DATARMNET3f85732c70=list_entry(DATARMNET7b34b7b5be,struct DATARMNET63d7680df2, +DATARMNET04c88b8191);if(DATARMNET3f85732c70->DATARMNETae4b27456e. +DATARMNET6215127f48){DATARMNETed7800fc72=DATARMNET3f85732c70-> +DATARMNETae4b27456e.DATARMNET6215127f48;DATARMNETa0df5de99d=DATARMNET3f85732c70 +->DATARMNETae4b27456e.DATARMNETbaa5765693;DATARMNETe02152c351( +DATARMNET3f85732c70,DATARMNET6aecae7be2,DATARMNET5b5927fd7e);DATARMNET8bf94cc2f7 ++=DATARMNETed7800fc72;DATARMNET76192fa639+=DATARMNETa0df5de99d;if( +DATARMNET3f85732c70->map_cpu==DATARMNET42a992465f){DATARMNET61ab18a4bd+= +DATARMNETed7800fc72;DATARMNET3f85732c70->queue_head=DATARMNET61ab18a4bd;}}} +DATARMNETecc0627c70.DATARMNETc252a1f55d-=DATARMNET76192fa639;DATARMNETecc0627c70 +.DATARMNETa2e32cdd3a-=DATARMNET8bf94cc2f7;DATARMNET0997c5650d[ +DATARMNET42a992465f].DATARMNETef866573e0=(0xd2d+202-0xdf7);DATARMNETecc0627c70. +DATARMNET132b9c7dc4[DATARMNET42a992465f].DATARMNETe61d62310f=(0xd2d+202-0xdf7); +DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET4133fc9428=(0xd2d+202-0xdf7); +spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);local_bh_enable();if( +DATARMNET42a992465f==DATARMNETecc0627c70.DATARMNET6625085b71&&rcu_dereference( +rmnet_shs_switch)){RCU_INIT_POINTER(rmnet_shs_switch,NULL);DATARMNETecc0627c70. +DATARMNETfeee6933fc=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNET6625085b71= +DATARMNETecc0627c70.DATARMNET7d667e828e;}DATARMNET52de1f3dc0(DATARMNET4510abc30d +,DATARMNET576793621a,DATARMNETecc0627c70.DATARMNETa2e32cdd3a,DATARMNETecc0627c70 +.DATARMNETc252a1f55d,DATARMNET8bf94cc2f7,DATARMNET76192fa639,NULL,NULL);}void +DATARMNET056c939591(struct work_struct*DATARMNET33110a3ff5){struct +DATARMNETa6f2d499b2*DATARMNET4b39dc1574=container_of(DATARMNET33110a3ff5,struct +DATARMNETa6f2d499b2,DATARMNET33110a3ff5);DATARMNETfbc06e60f1(DATARMNET4b39dc1574 +->DATARMNET42c3ecbd5e);DATARMNET14ed771dfb[DATARMNETbb5757569c]++;}void +DATARMNETcba2f7f7b6(struct DATARMNET63d7680df2*DATARMNET63b1a086d5,u8 +DATARMNETf345c1d909){struct sk_buff*skb=NULL;struct sk_buff*DATARMNETcebafc57a4= +NULL;struct DATARMNETe600c5b727*DATARMNETa4055affd5;u32 DATARMNETe20a9cab2b= +(0xd2d+202-0xdf7);u32 DATARMNETb481d13a78=(0xd2d+202-0xdf7);u32 +DATARMNET1fcbf046ec=(0xd2d+202-0xdf7);u8 map=(0xd2d+202-0xdf7), +DATARMNET0258668025=(0xd2d+202-0xdf7);u16 DATARMNET87636d0152=(0xd2d+202-0xdf7); +u16 index;if(!DATARMNET63b1a086d5->DATARMNETae4b27456e.head)return;if(! +DATARMNET63b1a086d5->DATARMNETfbbec4c537){map=DATARMNETecc0627c70.map_mask; +DATARMNET0258668025=DATARMNETecc0627c70.map_len;index=DATARMNET63b1a086d5-> +map_index;}else{map=DATARMNET63b1a086d5->DATARMNETfbbec4c537;DATARMNET0258668025 +=DATARMNET63b1a086d5->DATARMNETa59ce1fd2d;index=DATARMNET63b1a086d5->map_index;} +if(map){DATARMNET1fcbf046ec=DATARMNET8532ab3089(index,DATARMNET0258668025, +DATARMNET63b1a086d5->DATARMNETae4b27456e.head->hash);}else{DATARMNET63b1a086d5-> +DATARMNET6250e93187=(0xd2d+202-0xdf7);}DATARMNET52de1f3dc0(DATARMNET4510abc30d, +DATARMNETe4ee0d2636,DATARMNET63b1a086d5->hash,DATARMNET1fcbf046ec, +DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNET6215127f48,DATARMNET63b1a086d5 +->DATARMNETae4b27456e.DATARMNETbaa5765693,DATARMNET63b1a086d5, +DATARMNET63b1a086d5->DATARMNETae4b27456e.head);DATARMNET87636d0152=(u16) +DATARMNET63b1a086d5->DATARMNET341ea38662->DATARMNET87636d0152;for((skb= +DATARMNET63b1a086d5->DATARMNETae4b27456e.head);skb!=NULL;skb=DATARMNETcebafc57a4 +){DATARMNETcebafc57a4=skb->next;if(DATARMNET63b1a086d5->DATARMNET6250e93187)skb +->hash=DATARMNET1fcbf046ec;skb->next=NULL;DATARMNETe20a9cab2b+=(0xd26+209-0xdf6) +;DATARMNETb481d13a78+=skb->len;if(DATARMNET87636d0152>(0xd2d+202-0xdf7)){if( +DATARMNET63b1a086d5->DATARMNET1e9d25d9ff==IPPROTO_UDP)DATARMNET68d84e7b98[ +DATARMNETdd6bf3de6b]++;DATARMNET21243b86ae(skb,DATARMNETf345c1d909, +DATARMNET87636d0152);}else{if(DATARMNETf345c1d909==DATARMNET0b15fd8b54&&(! +DATARMNET63b1a086d5->DATARMNET85c698ec34))DATARMNETe767554e6e(skb);else if( +DATARMNETf345c1d909==DATARMNET5b5927fd7e&&(!DATARMNET63b1a086d5-> +DATARMNET85c698ec34))DATARMNET514ce0bf59(skb);else if(DATARMNET63b1a086d5-> +DATARMNET85c698ec34&&DATARMNETf345c1d909==DATARMNET0b15fd8b54){ +DATARMNETa4055affd5=&DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu]; +DATARMNETde8ee16f92(DATARMNET63b1a086d5);spin_unlock_bh(&DATARMNET3764d083f0); +rmnet_rx_handler(&skb);spin_lock_bh(&DATARMNET3764d083f0);DATARMNET3e37ad2816( +DATARMNET63b1a086d5,&DATARMNETa4055affd5->DATARMNET3dc4262f53);}else{ +DATARMNET14ed771dfb[DATARMNET94658618fc]++;netif_rx_ni(skb);}}} +DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNET6215127f48=(0xd2d+202-0xdf7); +DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNETbaa5765693=(0xd2d+202-0xdf7); +DATARMNET63b1a086d5->DATARMNETae4b27456e.head=NULL;DATARMNET63b1a086d5-> +DATARMNETae4b27456e.tail=NULL;if(DATARMNET63b1a086d5->DATARMNET85c698ec34){ +RCU_INIT_POINTER(rmnet_shs_switch,NULL);DATARMNET63b1a086d5->DATARMNET0371465875 +=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETfeee6933fc=(0xd2d+202-0xdf7); +DATARMNETecc0627c70.DATARMNET6625085b71=DATARMNETecc0627c70.DATARMNET7d667e828e; +}DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNETfb753e521e,DATARMNET63b1a086d5 +->hash,DATARMNET1fcbf046ec,DATARMNETe20a9cab2b,DATARMNETb481d13a78, +DATARMNET63b1a086d5,NULL);}void DATARMNET23c7ddd780(struct DATARMNET63d7680df2* +DATARMNET63b1a086d5,u8 DATARMNET5447204733){struct sk_buff*skb;struct sk_buff* +DATARMNETcebafc57a4=NULL;u32 DATARMNETe20a9cab2b=(0xd2d+202-0xdf7);u32 +DATARMNETb481d13a78=(0xd2d+202-0xdf7);u32 DATARMNET1fcbf046ec;u8 map, +DATARMNET0258668025;if(!DATARMNET63b1a086d5->DATARMNETae4b27456e.head)return;map +=DATARMNET63b1a086d5->DATARMNETfbbec4c537;DATARMNET0258668025= +DATARMNET63b1a086d5->DATARMNETa59ce1fd2d;if(map){DATARMNET1fcbf046ec= +DATARMNET8532ab3089(DATARMNET63b1a086d5->map_index,DATARMNET0258668025, +DATARMNET63b1a086d5->DATARMNETae4b27456e.head->hash);}else{DATARMNET63b1a086d5-> +DATARMNET6250e93187=(0xd2d+202-0xdf7);}for((skb=DATARMNET63b1a086d5-> +DATARMNETae4b27456e.head);skb!=NULL;skb=DATARMNETcebafc57a4){DATARMNETcebafc57a4 +=skb->next;if(DATARMNET63b1a086d5->DATARMNET6250e93187)skb->hash= +DATARMNET1fcbf046ec;skb->next=NULL;DATARMNETe20a9cab2b+=(0xd26+209-0xdf6); +DATARMNETb481d13a78+=skb->len;if(DATARMNET5447204733==DATARMNET0b15fd8b54&&(! +DATARMNET63b1a086d5->DATARMNET85c698ec34))DATARMNETe767554e6e(skb);else if( +DATARMNET5447204733==DATARMNET5b5927fd7e&&(!DATARMNET63b1a086d5-> +DATARMNET85c698ec34))DATARMNET514ce0bf59(skb);else{netif_rx_ni(skb);}} +DATARMNET68d84e7b98[DATARMNET72db8b9bac]++;DATARMNETecc0627c70. +DATARMNETc252a1f55d-=DATARMNETb481d13a78;DATARMNETecc0627c70.DATARMNETa2e32cdd3a +-=DATARMNETe20a9cab2b;DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu]. +DATARMNET4133fc9428-=DATARMNETe20a9cab2b;}int DATARMNETe02152c351(struct +DATARMNET63d7680df2*DATARMNET63b1a086d5,u8 DATARMNETd87669e323,u8 +DATARMNET5447204733){int DATARMNETbd864aa442=(0xd2d+202-0xdf7);int map= +DATARMNET63b1a086d5->DATARMNETfbbec4c537;int DATARMNET5643f7b5e9; +DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET022082b219,DATARMNETd87669e323, +DATARMNET5447204733,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNET63b1a086d5, +NULL);if(DATARMNETaef946bb68(DATARMNET63b1a086d5->map_index,map)!= +DATARMNET63b1a086d5->map_cpu){DATARMNET5643f7b5e9=DATARMNET04e8d1b862( +DATARMNET63b1a086d5->map_cpu,map);if(DATARMNET5643f7b5e9>=(0xd2d+202-0xdf7)){ +DATARMNET63b1a086d5->map_index=DATARMNET5643f7b5e9;DATARMNET63b1a086d5->map_cpu= +DATARMNETaef946bb68(DATARMNET5643f7b5e9,map);}else{DATARMNET63b1a086d5-> +map_index=DATARMNET2edff26954;DATARMNET63b1a086d5->map_cpu=DATARMNETaef946bb68( +DATARMNET2edff26954,map);if(DATARMNET63b1a086d5->map_cpu<(0xd2d+202-0xdf7)) +DATARMNET63b1a086d5->map_cpu=DATARMNET2edff26954;}DATARMNETd87669e323= +(0xd26+209-0xdf6);DATARMNET68d84e7b98[DATARMNETa1f9420686]++;DATARMNET015fb2ba0e +(DATARMNET720469c0a9,DATARMNET998c6de143,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}if(DATARMNETe488c1c396( +DATARMNET63b1a086d5,DATARMNETd87669e323,DATARMNET5447204733)){ +DATARMNETcba2f7f7b6(DATARMNET63b1a086d5,DATARMNET5447204733);DATARMNETbd864aa442 +=(0xd26+209-0xdf6);}DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET64b02f64c6, +DATARMNETbd864aa442,DATARMNETd87669e323,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +DATARMNET63b1a086d5,NULL);return DATARMNETbd864aa442;}static void +DATARMNETc54e431bbc(u8 DATARMNET42a992465f,u8 DATARMNET7845d39672,u32 +DATARMNETea08087fc0){u32 DATARMNETba6017a3a9=(!DATARMNET227d2ff866)? +(0xd26+209-0xdf6):DATARMNET227d2ff866;int DATARMNETd9d8392917;if(( +DATARMNETd9d8392917=DATARMNET2af09ccd0b(DATARMNET42a992465f,DATARMNET7845d39672, +DATARMNETea08087fc0))&&DATARMNET362b15f941(DATARMNET42a992465f)&&! +DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNETef866573e0&& +DATARMNETecc0627c70.DATARMNET6625085b71!=DATARMNET42a992465f&& +DATARMNET42a992465f!=(0xd26+209-0xdf6)){DATARMNETba6017a3a9=(! +DATARMNET7845d39672)?DATARMNET249a927510:DATARMNETba6017a3a9;DATARMNET0997c5650d +[DATARMNET42a992465f].DATARMNETef866573e0=(0xd26+209-0xdf6);DATARMNETfb7007f025( +);if(hrtimer_active(&DATARMNETba5ea4329f(DATARMNET42a992465f)))hrtimer_cancel(& +DATARMNETba5ea4329f(DATARMNET42a992465f));hrtimer_start(&DATARMNETba5ea4329f( +DATARMNET42a992465f),ns_to_ktime(DATARMNETba6017a3a9*DATARMNET68fc0be252), +HRTIMER_MODE_REL);DATARMNETb7ddf3c5dd[DATARMNETd9d8392917]++;}}void +DATARMNETe377e0368d(u8 DATARMNETded3da1a77,u8 DATARMNET5447204733){struct +DATARMNET63d7680df2*DATARMNET3f85732c70=NULL;struct list_head* +DATARMNET7b34b7b5be=NULL,*next=NULL;int DATARMNET42a992465f;u32 +DATARMNET61ab18a4bd;u32 DATARMNETed7800fc72=(0xd2d+202-0xdf7);u32 +DATARMNETa0df5de99d=(0xd2d+202-0xdf7);u32 DATARMNETe56f4fbbe6=(0xd2d+202-0xdf7); +u32 DATARMNET8bf94cc2f7=(0xd2d+202-0xdf7);u32 DATARMNET76192fa639= +(0xd2d+202-0xdf7);u32 DATARMNET870611bedd=(0xd2d+202-0xdf7);u32 +DATARMNETa6424e3c4e=(0xd2d+202-0xdf7);u8 DATARMNET77e7f4db43=(0xd2d+202-0xdf7); +DATARMNETe074a09496();DATARMNET52de1f3dc0(DATARMNET4510abc30d, +DATARMNETde91850c28,DATARMNETecc0627c70.DATARMNETa2e32cdd3a,DATARMNETecc0627c70. +DATARMNETc252a1f55d,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);for( +DATARMNET42a992465f=(0xd2d+202-0xdf7);DATARMNET42a992465f +DATARMNETae4b27456e.DATARMNET35234676d4;}if(DATARMNET12565c8f98){ +DATARMNETc54e431bbc(DATARMNET42a992465f,DATARMNET20dc6bb36b,DATARMNETe56f4fbbe6) +;}list_for_each_safe(DATARMNET7b34b7b5be,next,&DATARMNET0997c5650d[ +DATARMNET42a992465f].DATARMNET3dc4262f53){DATARMNET3f85732c70=list_entry( +DATARMNET7b34b7b5be,struct DATARMNET63d7680df2,DATARMNET04c88b8191);if( +DATARMNET3f85732c70->DATARMNETae4b27456e.DATARMNET6215127f48){ +DATARMNETed7800fc72=DATARMNET3f85732c70->DATARMNETae4b27456e.DATARMNET6215127f48 +;DATARMNETa0df5de99d=DATARMNET3f85732c70->DATARMNETae4b27456e. +DATARMNETbaa5765693;DATARMNETa6424e3c4e=DATARMNET3f85732c70->DATARMNETae4b27456e +.DATARMNET35234676d4;DATARMNET77e7f4db43=DATARMNETe02152c351(DATARMNET3f85732c70 +,DATARMNETded3da1a77,DATARMNET5447204733);if(DATARMNET77e7f4db43){ +DATARMNET870611bedd+=DATARMNETa6424e3c4e;DATARMNET8bf94cc2f7+= +DATARMNETed7800fc72;DATARMNET76192fa639+=DATARMNETa0df5de99d;DATARMNET0997c5650d +[DATARMNET3f85732c70->map_cpu].DATARMNET4133fc9428-=DATARMNETed7800fc72; +DATARMNET3f85732c70->DATARMNETae4b27456e.DATARMNET35234676d4=(0xd2d+202-0xdf7); +if(DATARMNET3f85732c70->map_cpu==DATARMNET42a992465f){DATARMNET61ab18a4bd+= +DATARMNETed7800fc72;DATARMNET3f85732c70->queue_head=DATARMNET61ab18a4bd;}}}}if( +DATARMNET12565c8f98){if(DATARMNET362b15f941(DATARMNET42a992465f)&&! +DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNETef866573e0)DATARMNETfa919d00dc +(DATARMNET42a992465f,DATARMNET870611bedd);DATARMNETc54e431bbc( +DATARMNET42a992465f,DATARMNET20dc6bb36b,(0xd2d+202-0xdf7));}if( +DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET4133fc9428<(0xd2d+202-0xdf7)) +DATARMNET68d84e7b98[DATARMNET33a9d4759f]++;if(DATARMNETeea3cef5b6( +DATARMNET42a992465f)>=DATARMNET84413d1257[DATARMNET42a992465f]) +DATARMNET84413d1257[DATARMNET42a992465f]=DATARMNETeea3cef5b6(DATARMNET42a992465f +);}DATARMNETecc0627c70.DATARMNETc252a1f55d-=DATARMNET76192fa639; +DATARMNETecc0627c70.DATARMNETa2e32cdd3a-=DATARMNET8bf94cc2f7;DATARMNET52de1f3dc0 +(DATARMNET4510abc30d,DATARMNET576793621a,DATARMNETecc0627c70.DATARMNETa2e32cdd3a +,DATARMNETecc0627c70.DATARMNETc252a1f55d,DATARMNET8bf94cc2f7,DATARMNET76192fa639 +,NULL,NULL);if((DATARMNETecc0627c70.DATARMNETc252a1f55d<=(0xd2d+202-0xdf7))||( +DATARMNETecc0627c70.DATARMNETa2e32cdd3a<=(0xd2d+202-0xdf7))){DATARMNETecc0627c70 +.DATARMNETc252a1f55d=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETa2e32cdd3a= +(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETd9cfd2812b=(0xd2d+202-0xdf7); +DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNET8dcf06727b;if( +DATARMNET365ddeca1c){if(hrtimer_active(&DATARMNETecc0627c70.DATARMNET6fd692fc7a) +)hrtimer_cancel(&DATARMNETecc0627c70.DATARMNET6fd692fc7a);}}}void +DATARMNETa4bf9fbf64(u8 DATARMNETded3da1a77,u8 DATARMNET5447204733){spin_lock_bh( +&DATARMNET3764d083f0);DATARMNETe377e0368d(DATARMNETded3da1a77, +DATARMNET5447204733);if(DATARMNET5447204733==DATARMNET5b5927fd7e){if( +DATARMNET365ddeca1c&&DATARMNETecc0627c70.DATARMNETc252a1f55d&& +DATARMNETecc0627c70.DATARMNETa2e32cdd3a){if(hrtimer_active(&DATARMNETecc0627c70. +DATARMNET6fd692fc7a))hrtimer_cancel(&DATARMNETecc0627c70.DATARMNET6fd692fc7a); +hrtimer_start(&DATARMNETecc0627c70.DATARMNET6fd692fc7a,ns_to_ktime( +DATARMNET4ac8af832c*DATARMNET68fc0be252),HRTIMER_MODE_REL);}DATARMNET14ed771dfb[ +DATARMNETd45c383019]++;}spin_unlock_bh(&DATARMNET3764d083f0);}void +DATARMNET495dab3d72(struct sk_buff*skb,struct DATARMNET63d7680df2* +DATARMNET63b1a086d5,struct rmnet_shs_clnt_s*DATARMNET0bf01e7c6f){u8 +DATARMNET7d63e92341=(0xd2d+202-0xdf7); +#ifdef DATARMNETdddae6afa8 +if(!(DATARMNET0bf01e7c6f->config&DATARMNET2a76d433b3)&&skb->cb[ +DATARMNET8fadb49f38]){DATARMNETe377e0368d((0xd2d+202-0xdf7),DATARMNET0b15fd8b54) +;DATARMNET14ed771dfb[DATARMNETc8058e2cff]++;DATARMNET7d63e92341= +(0xd26+209-0xdf6);} +#endif +if(skb_shinfo(skb)->gso_segs){DATARMNET63b1a086d5->DATARMNET11930c5df8+= +skb_shinfo(skb)->gso_segs;DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu]. +DATARMNET4133fc9428++;DATARMNET63b1a086d5->DATARMNETae4b27456e. +DATARMNET35234676d4+=skb_shinfo(skb)->gso_segs;}else{DATARMNET63b1a086d5-> +DATARMNET11930c5df8+=(0xd26+209-0xdf6);DATARMNET0997c5650d[DATARMNET63b1a086d5-> +map_cpu].DATARMNET4133fc9428++;DATARMNET63b1a086d5->DATARMNETae4b27456e. +DATARMNET35234676d4++;}DATARMNET63b1a086d5->DATARMNETa8940e4a7b+= +(0xd26+209-0xdf6);DATARMNET63b1a086d5->DATARMNET3ecedac168+=RMNET_SKB_CB(skb)-> +coal_bytes;DATARMNET63b1a086d5->DATARMNETce5f56eab9+=RMNET_SKB_CB(skb)-> +coal_bufsize;DATARMNET63b1a086d5->DATARMNET2594c418db+=skb->len; +DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNETbaa5765693+=skb->len; +DATARMNETecc0627c70.DATARMNETc252a1f55d+=skb->len;if(DATARMNET63b1a086d5-> +DATARMNETae4b27456e.DATARMNET6215127f48>(0xd2d+202-0xdf7)){DATARMNET63b1a086d5-> +DATARMNETae4b27456e.tail->next=skb;DATARMNET63b1a086d5->DATARMNETae4b27456e.tail +=DATARMNET63b1a086d5->DATARMNETae4b27456e.tail->next;}else{DATARMNET63b1a086d5-> +DATARMNETae4b27456e.head=skb;DATARMNET63b1a086d5->DATARMNETae4b27456e.tail=skb;} +DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNET6215127f48+=(0xd26+209-0xdf6); +DATARMNETecc0627c70.DATARMNETa2e32cdd3a+=(0xd26+209-0xdf6);if(unlikely( +DATARMNET7d63e92341))DATARMNETe377e0368d((0xd2d+202-0xdf7),DATARMNET0b15fd8b54); +DATARMNET52de1f3dc0(DATARMNET720469c0a9,DATARMNETf5c836f9ae,DATARMNET63b1a086d5 +->DATARMNETae4b27456e.DATARMNET6215127f48,DATARMNET63b1a086d5-> +DATARMNETae4b27456e.DATARMNETbaa5765693,DATARMNETecc0627c70.DATARMNETa2e32cdd3a, +DATARMNETecc0627c70.DATARMNETc252a1f55d,skb,DATARMNET63b1a086d5);}static void +DATARMNETa7afc8cdaa(struct work_struct*DATARMNET33110a3ff5){DATARMNET52de1f3dc0( +DATARMNET4510abc30d,DATARMNET816bb1e327,(0xd2d+202-0xdf7),DATARMNETecc0627c70. +DATARMNET34097703c8,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);if( +DATARMNETecc0627c70.DATARMNETa2e32cdd3a&&DATARMNETecc0627c70.DATARMNET34097703c8 +==DATARMNETb3e3b2a799){local_bh_disable();DATARMNETa4bf9fbf64((0xd2d+202-0xdf7), +DATARMNET5b5927fd7e);local_bh_enable();}DATARMNET52de1f3dc0(DATARMNET4510abc30d, +DATARMNETf311f20c00,(0xd2d+202-0xdf7),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),NULL,NULL);}enum hrtimer_restart DATARMNET0a73c53ae6(struct +hrtimer*DATARMNET6e4292679f){enum hrtimer_restart ret=HRTIMER_NORESTART; +DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET237e7bd5f6,DATARMNETecc0627c70. +DATARMNET34097703c8,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +NULL,NULL);if(DATARMNETecc0627c70.DATARMNETa2e32cdd3a>(0xd2d+202-0xdf7)){if( +DATARMNETecc0627c70.DATARMNET34097703c8==DATARMNET7bc926fdbe){ +DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNETb3e3b2a799;hrtimer_forward( +DATARMNET6e4292679f,hrtimer_cb_get_time(DATARMNET6e4292679f),ns_to_ktime( +DATARMNET00d5787aad));ret=HRTIMER_RESTART;DATARMNET52de1f3dc0( +DATARMNET4510abc30d,DATARMNETf16e78412b,DATARMNETecc0627c70.DATARMNETa2e32cdd3a, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}else if( +DATARMNETecc0627c70.DATARMNET34097703c8==DATARMNET8dcf06727b){ +DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNET7bc926fdbe;}else if( +DATARMNETecc0627c70.DATARMNET34097703c8==DATARMNETb3e3b2a799){ +DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET83147a2e7d,DATARMNETecc0627c70. +DATARMNET34097703c8,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +NULL,NULL);schedule_work((struct work_struct*)&shs_rx_work);}}return ret;}enum +hrtimer_restart DATARMNET2ba63fbd90(struct hrtimer*DATARMNET6e4292679f){const +enum hrtimer_restart ret=HRTIMER_NORESTART;__pm_relax(DATARMNETecc0627c70.ws); +DATARMNET064fbe9e3a=(0xd26+209-0xdf6);return ret;}enum hrtimer_restart +DATARMNETc2b0dbbb32(struct hrtimer*DATARMNET6e4292679f){const enum +hrtimer_restart ret=HRTIMER_NORESTART;struct DATARMNET177911299b +DATARMNET9f249e95ee;struct timespec64 time;DATARMNET8d0d510d45( +DATARMNETe4a6d22824,&DATARMNET9f249e95ee);DATARMNETb5d58adbe7(& +DATARMNET9f249e95ee);ktime_get_boottime_ts64(&time);DATARMNETecc0627c70. +DATARMNETdd3caf9200=ktime_set(time.tv_sec,time.tv_nsec);return ret;}enum +hrtimer_restart DATARMNET4ce9744605(struct hrtimer*DATARMNET6e4292679f){const +enum hrtimer_restart ret=HRTIMER_NORESTART;struct DATARMNETa6f2d499b2* +DATARMNET4b39dc1574=container_of(DATARMNET6e4292679f,struct DATARMNETa6f2d499b2, +DATARMNET758a55f103);DATARMNET371703c28d();schedule_work(&DATARMNET4b39dc1574-> +DATARMNET33110a3ff5);return ret;}void DATARMNETe1f95274f1(void){int i;for(i= +(0xd2d+202-0xdf7);i +dev)){DATARMNET68d84e7b98[DATARMNETf8de7cb644]++;atomic_long_inc(&skb->dev-> +rx_dropped);input_queue_head_incr(DATARMNETe95ad852b4);DATARMNETe95ad852b4-> +dropped++;kfree_skb(skb);}}rtnl_unlock();return(0xd2d+202-0xdf7);}static int +DATARMNET2aa4ef6ff9(struct notifier_block*DATARMNETea991f24f2,unsigned long +DATARMNET7ee7b05b93,void*DATARMNETe53e117dd2){int DATARMNETc3193054f2, +DATARMNET25fc1e341e,cpu;int*DATARMNETc628e18b55=(int*)DATARMNETe53e117dd2;struct + sk_buff_head*DATARMNET49115bea94;struct sk_buff_head*DATARMNETaf21dd6000; +for_each_possible_cpu(cpu){DATARMNET49115bea94=&DATARMNET3de2536baf(cpu); +DATARMNETaf21dd6000=&DATARMNET832731a933(cpu);DATARMNETc3193054f2=skb_queue_len( +DATARMNET49115bea94);DATARMNET25fc1e341e=skb_queue_len(DATARMNETaf21dd6000);if( +DATARMNET1ad396a890&&(DATARMNETc3193054f2+DATARMNET25fc1e341e)>= +DATARMNET1ad396a890){DATARMNET82e88dbb56(&per_cpu(softnet_data,cpu). +input_pkt_queue,cpu);DATARMNETc3193054f2=skb_queue_len(DATARMNET49115bea94); +DATARMNET25fc1e341e=skb_queue_len(DATARMNETaf21dd6000);if(DATARMNET25fc1e341e>= +DATARMNET1ad396a890){DATARMNET82e88dbb56(DATARMNET49115bea94,cpu);}(* +DATARMNETc628e18b55)++;}}return(0xd2d+202-0xdf7);}static struct notifier_block +DATARMNET105c85d84c={.notifier_call=DATARMNET2aa4ef6ff9,};void +DATARMNET78bb6be330(struct rmnet_map_dl_ind_hdr*dlhdr,struct +rmnet_map_control_command_header*qcmd){DATARMNET7ed4cef8a3(dlhdr);}void +DATARMNET7ed4cef8a3(struct rmnet_map_dl_ind_hdr*dlhdr){DATARMNETda96251102( +DATARMNET23f8730007,DATARMNET4ebbc01257,dlhdr->le.seq,dlhdr->le.pkts, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);if(!DATARMNET016351c9e4|| +DATARMNET016351c9e4le.seq)DATARMNET016351c9e4=dlhdr->le.seq;else{if( +DATARMNET756bdd424a)pr_info( +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x3a\x20\x4f\x46\x4f\x20\x64\x6c\x20\x73\x65\x71\x20\x25\x75\x20\x62\x65\x66\x6f\x72\x65\x20\x25\x75" +,DATARMNET016351c9e4,dlhdr->le.seq);DATARMNET016351c9e4=dlhdr->le.seq; +DATARMNET68d84e7b98[DATARMNETf352684b06]++;}if(!spin_is_locked(& +DATARMNET3764d083f0)){if(DATARMNETecc0627c70.DATARMNETa2e32cdd3a> +(0xd2d+202-0xdf7)&&DATARMNETecc0627c70.DATARMNET6fe0db3a49!=DATARMNET4ab5a31d0c) +{DATARMNET14ed771dfb[DATARMNET01bf75e27c]++;DATARMNETa4bf9fbf64( +(0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}DATARMNETecc0627c70.DATARMNET6fe0db3a49= +DATARMNET1c55e5fdb1;}}void DATARMNETf61cd23b90(struct rmnet_map_dl_ind_trl*dltrl +,struct rmnet_map_control_command_header*qcmd){DATARMNET613a81eca8(dltrl);}void +DATARMNET613a81eca8(struct rmnet_map_dl_ind_trl*dltrl){DATARMNET52de1f3dc0( +DATARMNET23f8730007,DATARMNET0808844559,DATARMNETecc0627c70.DATARMNETa2e32cdd3a, +(0xd2d+202-0xdf7),dltrl->seq_le,(0x16e8+787-0xc0c),NULL,NULL); +DATARMNETecc0627c70.DATARMNET6fe0db3a49=DATARMNET4ab5a31d0c;if( +DATARMNETecc0627c70.DATARMNETa2e32cdd3a>(0xd2d+202-0xdf7)&&!spin_is_locked(& +DATARMNET3764d083f0)){DATARMNET14ed771dfb[DATARMNET84a9e136b8]++; +DATARMNETa4bf9fbf64((0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}}void +DATARMNET45d8cdb224(struct net_device*dev,struct net_device*vnd){struct rps_map* +map;int rc;u8 DATARMNET0e4304d903;u8 map_mask;u8 map_len;if(DATARMNETecc0627c70. +DATARMNETfc89d842ae)return;map=rcu_dereference(vnd->_rx->rps_map);if(!map){ +map_mask=(0xd2d+202-0xdf7);map_len=(0xd2d+202-0xdf7);}else{map_mask= +DATARMNET928c931df9(map);map_len=DATARMNET310c3eb16e(map_mask);} +DATARMNETecc0627c70.port=rmnet_get_port(dev);DATARMNETecc0627c70.map_mask= +map_mask;DATARMNETecc0627c70.map_len=map_len;DATARMNETecc0627c70. +DATARMNETba3f7a11ef=(0xd1f+216-0xdf5);DATARMNETecc0627c70.DATARMNET5c24e1df05= +(0xd26+209-0xdf6);DATARMNETecc0627c70.DATARMNET6625085b71=(0xd26+209-0xdf6); +DATARMNETecc0627c70.DATARMNET7d667e828e=(0xd26+209-0xdf6);for( +DATARMNET0e4304d903=(0xd2d+202-0xdf7);DATARMNET0e4304d903DATARMNETae4b27456e.head +);buf!=NULL;buf=DATARMNET9a788b5480){DATARMNET9a788b5480=buf->next;if(buf) +consume_skb(buf);}DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNET6215127f48= +(0xd2d+202-0xdf7);DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNETbaa5765693= +(0xd2d+202-0xdf7);DATARMNET63b1a086d5->DATARMNETae4b27456e.head=NULL; +DATARMNET63b1a086d5->DATARMNETae4b27456e.tail=NULL;}DATARMNETecc0627c70. +DATARMNETc252a1f55d=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETa2e32cdd3a= +(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETd9cfd2812b=(0xd2d+202-0xdf7); +DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNET8dcf06727b; +spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);}void DATARMNET44459105b4( +struct sk_buff*skb,struct DATARMNET63d7680df2*node_p){struct iphdr*ip4h, +DATARMNETc00baf31c3;struct ipv6hdr*ip6h,DATARMNETcf1d9e2c1e;struct tcphdr*tp, +DATARMNETd1ff6cd568;struct udphdr*up,DATARMNETc82d2f4e16;int len= +(0xd2d+202-0xdf7);u16 ip_len=(0xd2d+202-0xdf7);__be16 frag_off;u8 protocol; +node_p->DATARMNETa1099c74fe=(0xd2d+202-0xdf7);switch(skb->protocol){case htons( +ETH_P_IP):ip4h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),sizeof(*ip4h),& +DATARMNETc00baf31c3);if(!ip4h)return;node_p->DATARMNET1e9d25d9ff=ip4h->protocol; +memcpy(&(node_p->ip_hdr.DATARMNETac9bbaad7c),ip4h,sizeof(*ip4h));ip_len=ip4h-> +ihl*(0xd11+230-0xdf3);node_p->DATARMNETa1099c74fe=!(ip4h->frag_off&htons(IP_DF)) +;break;case htons(ETH_P_IPV6):ip6h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7), +sizeof(*ip6h),&DATARMNETcf1d9e2c1e);if(!ip6h)return;node_p->DATARMNET1e9d25d9ff= +ip6h->nexthdr;memcpy(&(node_p->ip_hdr.DATARMNET1688a97aa4),ip6h,sizeof(*ip6h)); +protocol=ip6h->nexthdr;len=ipv6_skip_exthdr(skb,sizeof(*ip6h),&protocol,& +frag_off);if(len<(0xd2d+202-0xdf7)){return;}ip_len=(u16)len;break;default:break; +}if(node_p->DATARMNET1e9d25d9ff==IPPROTO_TCP){tp=DATARMNETefcaf5fbe9(skb,ip_len, +sizeof(*tp),&DATARMNETd1ff6cd568);if(!tp)return;memcpy(&(node_p-> +DATARMNETe33b41dad9.tp),tp,sizeof(struct tcphdr));}else if(node_p-> +DATARMNET1e9d25d9ff==IPPROTO_UDP){up=DATARMNETefcaf5fbe9(skb,ip_len,sizeof(*up), +&DATARMNETc82d2f4e16);if(!up)return;memcpy(&(node_p->DATARMNETe33b41dad9.up),up, +sizeof(struct udphdr));}else{}}void DATARMNET02fc8b29a0(struct +DATARMNET63d7680df2*node_p,struct rmnet_shs_clnt_s*DATARMNET0bf01e7c6f,struct +net_device*dev){u32 DATARMNET421230d879;u32 DATARMNET5eee131e74;node_p-> +DATARMNET85c698ec34=(0xd26+209-0xdf6);node_p->DATARMNETfbbec4c537= +DATARMNET0bf01e7c6f->map_mask;node_p->DATARMNETa59ce1fd2d=DATARMNET310c3eb16e( +node_p->DATARMNETfbbec4c537);node_p->map_cpu=DATARMNETecc0627c70. +DATARMNET7d667e828e;node_p->map_index=node_p->map_cpu;node_p-> +DATARMNET0371465875=(0xd2d+202-0xdf7);if(DATARMNET362b15f941(node_p->map_cpu)){ +DATARMNET5e4aeef593(DATARMNETecc0627c70.DATARMNET5c24e1df05);DATARMNETfb7007f025 +();}DATARMNET765b8ecfba(dev,DATARMNETecc0627c70.DATARMNET5c24e1df05, +(0xd26+209-0xdf6));DATARMNET421230d879=(DATARMNET3de2536baf(node_p->map_cpu). +qlen+DATARMNET832731a933(node_p->map_cpu).qlen);if(DATARMNET421230d879> +DATARMNET673cf85e28)DATARMNET673cf85e28=DATARMNET421230d879;node_p->queue_head= +DATARMNETeb3978575d(DATARMNETecc0627c70.DATARMNET5c24e1df05)+DATARMNET421230d879 +;DATARMNET5eee131e74=(DATARMNET3de2536baf(DATARMNETecc0627c70. +DATARMNET5c24e1df05).qlen+DATARMNET832731a933(DATARMNETecc0627c70. +DATARMNET5c24e1df05).qlen);if(DATARMNET362b15f941(node_p->map_cpu)){if(! +hrtimer_active(&DATARMNETba5ea4329f(node_p->map_cpu))){hrtimer_start(& +DATARMNETba5ea4329f(node_p->map_cpu),ns_to_ktime((DATARMNET566e381630)* +DATARMNET68fc0be252),HRTIMER_MODE_REL);}}else if((DATARMNET421230d879+ +DATARMNET5eee131e74)map_cpu))){hrtimer_start(&DATARMNETba5ea4329f(node_p +->map_cpu),ns_to_ktime((DATARMNET566e381630/(0xeb7+1130-0x130d))* +DATARMNET68fc0be252),HRTIMER_MODE_REL);}}else{if(!hrtimer_active(& +DATARMNETba5ea4329f(node_p->map_cpu))){hrtimer_start(&DATARMNETba5ea4329f(node_p +->map_cpu),ns_to_ktime((DATARMNET566e381630/(0xd1f+216-0xdf5))* +DATARMNET68fc0be252),HRTIMER_MODE_REL);}}}int DATARMNET756778f14f(struct sk_buff +*skb,struct rmnet_shs_clnt_s*DATARMNET0bf01e7c6f){struct DATARMNET63d7680df2* +node_p;struct hlist_node*tmp;int map=DATARMNETecc0627c70.map_mask;unsigned long +ht_flags;int DATARMNETcfb5dc7296;int map_cpu;u32 DATARMNET5c4a331b9c,hash;u8 +is_match_found=(0xd2d+202-0xdf7);u8 DATARMNET935af10724=(0xd2d+202-0xdf7);u8 +DATARMNET7c5ef97eab=(0xd2d+202-0xdf7);struct DATARMNETe600c5b727* +DATARMNETa4055affd5;struct rmnet_priv*priv;if(!(DATARMNET0bf01e7c6f->config& +RMNET_SHS_STMP_ALL)&&!DATARMNET9303cec796(skb)){DATARMNETe767554e6e(skb);return +(0xd2d+202-0xdf7);}if((unlikely(!map))||!DATARMNETecc0627c70.DATARMNETfc89d842ae +){DATARMNETe767554e6e(skb);DATARMNET015fb2ba0e(DATARMNET720469c0a9, +DATARMNETe0fee0991a,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),NULL,NULL);DATARMNET68d84e7b98[DATARMNETe3c02ddaeb]++;return +(0xd2d+202-0xdf7);}DATARMNET52de1f3dc0(DATARMNET720469c0a9,DATARMNET856c53293b, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb, +NULL);hash=skb_get_hash(skb);if(DATARMNET0bf01e7c6f->map_mask){skb->hash=57005; +hash=57005;if(raw_smp_processor_id()==DATARMNETecc0627c70.DATARMNET6625085b71&& +DATARMNETecc0627c70.DATARMNET6625085b71!=DATARMNETecc0627c70.DATARMNET7d667e828e +){netif_rx(skb);DATARMNETecc0627c70.DATARMNETfeee6933fc++;if(DATARMNETecc0627c70 +.DATARMNETfeee6933fc>DATARMNETf4cacbb5dc){DATARMNETa4bf9fbf64( +DATARMNETf3dfa53867,DATARMNET0b15fd8b54);RCU_INIT_POINTER(rmnet_shs_switch,NULL) +;DATARMNET68d84e7b98[DATARMNET43405942ed]++;DATARMNETecc0627c70. +DATARMNETfeee6933fc=(0xd2d+202-0xdf7);}return(0xd2d+202-0xdf7);}} +spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);do{hash_for_each_possible_safe( +DATARMNETe603c3a4b3,node_p,tmp,list,hash){if(hash!=node_p->hash)continue; +DATARMNETda96251102(DATARMNET720469c0a9,DATARMNET08b6defcff,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb,NULL); +DATARMNET5c4a331b9c=node_p->map_index;is_match_found=(0xd26+209-0xdf6); +DATARMNET935af10724=(0xd26+209-0xdf6);if(node_p->DATARMNET85c698ec34){ +DATARMNETe074a09496();if(raw_smp_processor_id()!=DATARMNETecc0627c70. +DATARMNET7d667e828e){DATARMNET68d84e7b98[DATARMNETbb641cd339]++;}if( +DATARMNETecc0627c70.DATARMNET5c24e1df05!=DATARMNETecc0627c70.DATARMNET7d667e828e +){if(node_p->map_cpu!=DATARMNETecc0627c70.DATARMNET7d667e828e){ +DATARMNETa4055affd5=&DATARMNET0997c5650d[DATARMNETecc0627c70.DATARMNET7d667e828e +];DATARMNETe102b3a798(node_p,&DATARMNETa4055affd5->DATARMNET3dc4262f53,node_p-> +map_cpu);DATARMNETb7ddf3c5dd[DATARMNETcf84373518]++;}DATARMNET02fc8b29a0(node_p, +DATARMNET0bf01e7c6f,skb->dev);netif_rx(skb);break;}node_p->DATARMNET0371465875++ +;DATARMNET495dab3d72(skb,node_p,DATARMNET0bf01e7c6f);if(!rcu_dereference( +rmnet_shs_switch)){DATARMNET68d84e7b98[DATARMNET2e68f4bd9f]++; +DATARMNET7c5ef97eab=DATARMNET27fb9a225d;break;}if(DATARMNETadb0248bd4( +DATARMNETecc0627c70.DATARMNET7d667e828e)>=(node_p->queue_head+node_p-> +DATARMNET0371465875)){DATARMNET7c5ef97eab=DATARMNETbbf8fe40aa;break;}if( +DATARMNETaf998640fd&&node_p->DATARMNETae4b27456e.DATARMNET6215127f48> +DATARMNETaf998640fd){DATARMNET14ed771dfb[DATARMNETcc3c294f38]++; +DATARMNET7c5ef97eab=DATARMNET95c85e6fe1;break;}spin_unlock_irqrestore(& +DATARMNET3764d083f0,ht_flags);return(0xd2d+202-0xdf7);}else DATARMNET495dab3d72( +skb,node_p,DATARMNET0bf01e7c6f);break;}if(is_match_found)break;if( +DATARMNET0bf01e7c6f->map_mask){DATARMNETcfb5dc7296=DATARMNET362c14e98b( +DATARMNETecc0627c70.map_mask&DATARMNET9273f84bf1&~DATARMNETecc0627c70. +DATARMNETba3f7a11ef);}else{DATARMNETcfb5dc7296=DATARMNET762cfa52fe( +DATARMNETecc0627c70.map_mask&DATARMNET9273f84bf1&~DATARMNETecc0627c70. +DATARMNETba3f7a11ef);}if(DATARMNETcfb5dc7296<(0xd2d+202-0xdf7)){ +DATARMNET68d84e7b98[DATARMNETa1f9420686]++;break;}if(DATARMNETecc0627c70. +DATARMNET64bb8a8f57>DATARMNETbfe31ef643){DATARMNET68d84e7b98[DATARMNETe6e77f9f03 +]++;break;}node_p=kzalloc(sizeof(*node_p),GFP_ATOMIC);if(!node_p){ +DATARMNET68d84e7b98[DATARMNET394acaf558]++;break;}DATARMNETecc0627c70. +DATARMNET64bb8a8f57++;node_p->dev=skb->dev;node_p->hash=skb->hash;node_p-> +map_cpu=DATARMNETcfb5dc7296;node_p->map_index=DATARMNET04e8d1b862(node_p-> +map_cpu,map);INIT_LIST_HEAD(&node_p->DATARMNET04c88b8191);DATARMNET44459105b4( +skb,node_p);DATARMNET350f55bfca(node_p);if(!node_p->DATARMNET341ea38662){ +DATARMNETecc0627c70.DATARMNET64bb8a8f57--;kfree(node_p);break;}if( +DATARMNET0bf01e7c6f->map_mask){DATARMNETe074a09496();DATARMNET02fc8b29a0(node_p, +DATARMNET0bf01e7c6f,skb->dev);}else{node_p->DATARMNETfbbec4c537= +DATARMNETecc0627c70.map_mask;node_p->DATARMNETa59ce1fd2d=DATARMNETecc0627c70. +map_len;}DATARMNET0349051465(node_p->map_cpu);map_cpu=node_p->map_cpu; +DATARMNETa4055affd5=&DATARMNET0997c5650d[map_cpu];priv=netdev_priv(node_p->dev); +if(!priv){rm_err( +"\x70\x72\x69\x76\x20\x66\x6f\x72\x20\x6e\x65\x74\x64\x65\x76\x20\x69\x73\x20\x6e\x75\x6c\x6c\x20\x66\x6f\x72\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78" +,node_p->hash);DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;}else{node_p-> +DATARMNET341ea38662->mux_id=priv->mux_id;rm_err( +"\x53\x48\x53\x5f\x4d\x55\x58\x3a\x20\x6d\x75\x78\x20\x69\x64\x20\x66\x6f\x72\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x69\x73\x20\x25\x64" +,node_p->hash,node_p->DATARMNET341ea38662->mux_id);}DATARMNET3e37ad2816(node_p,& +DATARMNETa4055affd5->DATARMNET3dc4262f53);hash_add_rcu(DATARMNETe603c3a4b3,& +node_p->list,skb->hash);if(!node_p->DATARMNET85c698ec34)DATARMNET495dab3d72(skb, +node_p,DATARMNET0bf01e7c6f);else{netif_rx(skb);spin_unlock_irqrestore(& +DATARMNET3764d083f0,ht_flags);return(0xd2d+202-0xdf7);}DATARMNET935af10724= +(0xd26+209-0xdf6);break;}while((0xd2d+202-0xdf7));if(!DATARMNET935af10724){ +spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);DATARMNET68d84e7b98[ +DATARMNET99db6e7d86]++;DATARMNETe767554e6e(skb);DATARMNET015fb2ba0e( +DATARMNET720469c0a9,DATARMNETe0fee0991a,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);return(0xd2d+202-0xdf7);}if(! +DATARMNETecc0627c70.DATARMNETd9cfd2812b&&DATARMNETecc0627c70.DATARMNETa2e32cdd3a +&&DATARMNET365ddeca1c){DATARMNETecc0627c70.DATARMNETd9cfd2812b=(0xd26+209-0xdf6) +;DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNET7bc926fdbe;if(hrtimer_active(& +DATARMNETecc0627c70.DATARMNET6fd692fc7a)){DATARMNETda96251102( +DATARMNET720469c0a9,DATARMNETf730f80f06,DATARMNET2f67183a86,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb,NULL);hrtimer_cancel(& +DATARMNETecc0627c70.DATARMNET6fd692fc7a);}hrtimer_start(&DATARMNETecc0627c70. +DATARMNET6fd692fc7a,ns_to_ktime(DATARMNET4ac8af832c*DATARMNET68fc0be252), +HRTIMER_MODE_REL);DATARMNETda96251102(DATARMNET720469c0a9,DATARMNETdd870ee64c, +DATARMNET2f67183a86,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb +,NULL);}spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);if( +DATARMNETecc0627c70.DATARMNETa2e32cdd3a>DATARMNET7d18c0bcf8){if( +DATARMNET58b009b16b)DATARMNET14ed771dfb[DATARMNET802083239a]++; +DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET562b7d32a8,(0xd2d+202-0xdf7), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL); +DATARMNETa4bf9fbf64(DATARMNET0acd775aa8,DATARMNET0b15fd8b54);}else if( +DATARMNETecc0627c70.DATARMNETc252a1f55d>DATARMNETea75c7b6f6){if( +DATARMNET58b009b16b)DATARMNET14ed771dfb[DATARMNETed69052342]++; +DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET99640d60f7,(0xd2d+202-0xdf7), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL); +DATARMNETa4bf9fbf64(DATARMNET2217440c2e,DATARMNET0b15fd8b54);}else if( +DATARMNET7c5ef97eab){DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET562b7d32a8 +,(0xd26+209-0xdf6),DATARMNETecc0627c70.DATARMNETa2e32cdd3a,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),NULL,NULL);if(DATARMNET58b009b16b)DATARMNET14ed771dfb[ +DATARMNETdf6ecde77a]++;DATARMNETa4bf9fbf64(DATARMNET7c5ef97eab, +DATARMNET0b15fd8b54);}else if((DATARMNET0bf01e7c6f->config&RMNET_SHS_NO_DLMKR)&& +DATARMNETecc0627c70.DATARMNETa2e32cdd3a){if(DATARMNET58b009b16b) +DATARMNET14ed771dfb[DATARMNET04dac3a62b]++;DATARMNETa4bf9fbf64((0xd2d+202-0xdf7) +,DATARMNET0b15fd8b54);}else if(DATARMNETecc0627c70.DATARMNET34097703c8== +DATARMNETb3e3b2a799){DATARMNET14ed771dfb[DATARMNETcfb1764a91]++; +DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNETa2bd301af7,(0xd26+209-0xdf6), +DATARMNETecc0627c70.DATARMNETa2e32cdd3a,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +NULL,NULL);DATARMNETa4bf9fbf64((0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}else if(! +(DATARMNET0bf01e7c6f->config&RMNET_SHS_NO_DLMKR)&&DATARMNETecc0627c70. +DATARMNETa2e32cdd3a&&DATARMNETecc0627c70.DATARMNET6fe0db3a49!= +DATARMNET1c55e5fdb1){DATARMNET14ed771dfb[DATARMNET01bf75e27c]++; +DATARMNETa4bf9fbf64((0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}return +(0xd2d+202-0xdf7);}void DATARMNET9297340f58(unsigned int DATARMNET9f4bc49c6f){ +DATARMNETdf74db7e38();DATARMNETecc0627c70.DATARMNET9c869c1ec2=(0xd2d+202-0xdf7); +unregister_oom_notifier(&DATARMNET105c85d84c);wakeup_source_unregister( +DATARMNETecc0627c70.ws);if(DATARMNETecc0627c70.DATARMNETf5ab31b9b0) +hrtimer_cancel(&DATARMNETecc0627c70.DATARMNET6fd692fc7a);hrtimer_cancel(& +DATARMNETecc0627c70.DATARMNET645fb3b468);hrtimer_cancel(&DATARMNETecc0627c70. +hrtimer_wake);memset(&DATARMNETecc0627c70,(0xd2d+202-0xdf7),sizeof( +DATARMNETecc0627c70));DATARMNETecc0627c70.port=NULL;DATARMNETecc0627c70. +DATARMNETfc89d842ae=(0xd2d+202-0xdf7);DATARMNET12565c8f98=DATARMNET9f4bc49c6f;} diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.c b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.c new file mode 100644 index 0000000000..54b81854ed --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.c @@ -0,0 +1,216 @@ +/* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 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 "rmnet_shs.h" +unsigned int DATARMNET1fc3ad67fd __read_mostly=DATARMNETe4c625a3a3;module_param( +DATARMNET1fc3ad67fd,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET1fc3ad67fd, +"\x49\x6e\x74\x65\x72\x76\x61\x6c\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x77\x71\x20\x72\x75\x6e\x73\x20\x28\x6d\x73\x29" +);unsigned long DATARMNETa804c0b904 __read_mostly=DATARMNET4899358462; +module_param(DATARMNETa804c0b904,ulong,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETa804c0b904, +"\x4d\x61\x78\x20\x66\x6c\x6f\x77\x20\x69\x6e\x61\x63\x74\x69\x76\x65\x20\x74\x69\x6d\x65\x20\x62\x65\x66\x6f\x72\x65\x20\x63\x6c\x65\x61\x6e\x20\x75\x70" +);unsigned int DATARMNETcab56af6d5 __read_mostly=(0xeb7+710-0x112d);module_param +(DATARMNETcab56af6d5,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETcab56af6d5, +"\x6d\x6f\x76\x69\x6e\x67\x20\x61\x76\x65\x72\x61\x67\x65\x20\x77\x65\x69\x67\x68\x74\x61\x67\x65" +);unsigned long long DATARMNET713717107f[DATARMNETc6782fed88]__read_mostly={ +DATARMNETfbee9e182e,DATARMNETb38cb72105,DATARMNETb38cb72105,DATARMNETb38cb72105, +DATARMNET243c638e7d,DATARMNET243c638e7d,DATARMNET243c638e7d,DATARMNET243c638e7d} +;module_param_array(DATARMNET713717107f,ullong,NULL,(0xdb7+6665-0x261c)); +MODULE_PARM_DESC(DATARMNET713717107f, +"\x4d\x61\x78\x20\x70\x6b\x74\x73\x20\x63\x6f\x72\x65\x20\x63\x61\x6e\x20\x68\x61\x6e\x64\x6c\x65" +);unsigned long long DATARMNET4793ed48af[DATARMNETc6782fed88]__read_mostly={ +DATARMNET9bc9e0cac3,DATARMNET9bc9e0cac3,DATARMNET9bc9e0cac3,DATARMNET9bc9e0cac3, +DATARMNET22feab5726,DATARMNET22feab5726,DATARMNET22feab5726,DATARMNET22feab5726} +;module_param_array(DATARMNET4793ed48af,ullong,NULL,(0xdb7+6665-0x261c)); +MODULE_PARM_DESC(DATARMNET4793ed48af, +"\x4d\x69\x6e\x20\x70\x6b\x74\x73\x20\x63\x6f\x72\x65\x20\x63\x61\x6e\x20\x68\x61\x6e\x64\x6c\x65" +);unsigned int DATARMNET18f2ba4444[DATARMNETc6782fed88];module_param_array( +DATARMNET18f2ba4444,uint,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET18f2ba4444, +"\x4e\x75\x6d\x20\x66\x6c\x6f\x77\x73\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x64\x20\x70\x65\x72\x20\x63\x6f\x72\x65" +);unsigned int DATARMNET2d482e7d9f[DATARMNETc6782fed88];module_param_array( +DATARMNET2d482e7d9f,uint,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET2d482e7d9f, +"\x4e\x75\x6d\x20\x66\x69\x6c\x74\x65\x72\x65\x64\x20\x66\x6c\x6f\x77\x73\x20\x70\x65\x72\x20\x63\x6f\x72\x65" +);unsigned long long DATARMNET77240d48ee[DATARMNETc6782fed88];module_param_array +(DATARMNET77240d48ee,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET77240d48ee, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x62\x79\x74\x65\x73\x20\x70\x65\x72\x20\x43\x50\x55" +);unsigned long long DATARMNET77189ab85c[DATARMNETc6782fed88];module_param_array +(DATARMNET77189ab85c,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET77189ab85c, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x74\x6f\x74\x61\x6c\x20\x70\x6b\x74\x73\x20\x70\x65\x72\x20\x43\x50\x55" +);unsigned long long DATARMNET79263b1183[DATARMNETc6782fed88];module_param_array +(DATARMNET79263b1183,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET79263b1183, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x65\x6e\x71\x20\x72\x61\x74\x65\x20\x70\x65\x72\x20\x43\x50\x55" +);unsigned long long DATARMNET229d52b629[DATARMNETc6782fed88];module_param_array +(DATARMNET229d52b629,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET229d52b629, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x70\x6b\x74\x20\x65\x6e\x71\x20\x72\x61\x74\x65\x20\x70\x65\x72\x20\x43\x50\x55" +);unsigned long long DATARMNETd27ed7efea[DATARMNETc6782fed88];module_param_array +(DATARMNETd27ed7efea,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNETd27ed7efea, +"\x53\x48\x53\x20\x6e\x77\x20\x73\x74\x61\x63\x6b\x20\x71\x75\x65\x75\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x64\x20\x64\x69\x66\x66" +);unsigned long long DATARMNET377ecf13ca[DATARMNETc6782fed88];module_param_array +(DATARMNET377ecf13ca,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET377ecf13ca, +"\x53\x48\x53\x20\x6e\x77\x20\x71\x75\x65\x75\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x64\x20\x74\x6f\x74\x61\x6c" +);unsigned long DATARMNETbf3b6fdfc8[DATARMNET2f9ea73326];module_param_array( +DATARMNETbf3b6fdfc8,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNETbf3b6fdfc8, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x68\x61\x73\x68\x20\x66\x6c\x6f\x77"); +unsigned long DATARMNET0fec241216[DATARMNET2f9ea73326];module_param_array( +DATARMNET0fec241216,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET0fec241216, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x68\x61\x73\x68\x20\x74\x72\x61\x6e\x73\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c" +);unsigned long long DATARMNET9e5e8e4048[DATARMNET2f9ea73326];module_param_array +(DATARMNET9e5e8e4048,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET9e5e8e4048, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x69\x6e\x61\x63\x74\x69\x76\x65\x20\x66\x6c\x6f\x77\x20\x74\x69\x6d\x65" +);int DATARMNETdba344c809[DATARMNET2f9ea73326]={-(0xd26+209-0xdf6),- +(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),- +(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),- +(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),- +(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6)};module_param_array( +DATARMNETdba344c809,int,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNETdba344c809, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x66\x6c\x6f\x77\x20\x70\x72\x6f\x63\x65\x73\x73\x69\x6e\x67\x20\x43\x50\x55" +);int DATARMNET99a934c43a[DATARMNET2f9ea73326]={-(0xd26+209-0xdf6),- +(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),- +(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),- +(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),- +(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6)};module_param_array( +DATARMNET99a934c43a,int,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET99a934c43a, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x66\x6c\x6f\x77\x20\x70\x72\x6f\x63\x20\x43\x50\x55" +);unsigned long long DATARMNET47956cbb0f[DATARMNET2f9ea73326];module_param_array +(DATARMNET47956cbb0f,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET47956cbb0f, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x62\x79\x74\x65\x73\x20\x70\x65\x72\x20\x66\x6c\x6f\x77" +);unsigned long long DATARMNET338c8e7a2b[DATARMNET2f9ea73326];module_param_array +(DATARMNET338c8e7a2b,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET338c8e7a2b, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x74\x6f\x74\x61\x6c\x20\x70\x6b\x74\x73\x20\x70\x65\x72\x20\x66\x6c\x6f\x77" +);unsigned long long DATARMNET4b1ae621cd[DATARMNET2f9ea73326];module_param_array +(DATARMNET4b1ae621cd,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET4b1ae621cd, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x65\x6e\x71\x20\x72\x61\x74\x65\x20\x70\x65\x72\x20\x66\x6c\x6f\x77" +);unsigned long long DATARMNETf5133a99c6[DATARMNET2f9ea73326];module_param_array +(DATARMNETf5133a99c6,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNETf5133a99c6, +"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x70\x6b\x74\x20\x65\x6e\x71\x20\x72\x61\x74\x65\x20\x70\x65\x72\x20\x66\x6c\x6f\x77" +);unsigned long long DATARMNETc5d73c43e6[DATARMNET2f9ea73326];module_param_array +(DATARMNETc5d73c43e6,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNETc5d73c43e6, +"\x53\x48\x53\x20\x53\x75\x67\x67\x65\x73\x74\x20\x53\x69\x6c\x76\x65\x72\x20\x74\x6f\x20\x47\x6f\x6c\x64" +);unsigned long long DATARMNETf4aa8ec23f[DATARMNET2f9ea73326];module_param_array +(DATARMNETf4aa8ec23f,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNETf4aa8ec23f, +"\x53\x48\x53\x20\x53\x75\x67\x67\x65\x73\x74\x20\x47\x6f\x6c\x64\x20\x74\x6f\x20\x53\x69\x6c\x76\x65\x72" +);unsigned long long DATARMNET6d75219ffb[DATARMNET2f9ea73326];module_param_array +(DATARMNET6d75219ffb,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET6d75219ffb, +"\x53\x48\x53\x20\x53\x75\x67\x67\x65\x73\x74\x20\x47\x6f\x6c\x64\x20\x42\x61\x6c\x61\x6e\x63\x65" +);unsigned long DATARMNETb7ddf3c5dd[DATARMNETeccb61ebc3];module_param_array( +DATARMNETb7ddf3c5dd,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNETb7ddf3c5dd, +"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x73\x6b\x62\x20\x63\x6f\x72\x65\x20\x73\x77\x74\x69\x63\x68\x20\x74\x79\x70\x65" +);unsigned long DATARMNET14ed771dfb[DATARMNET3cef75f6cd];module_param_array( +DATARMNET14ed771dfb,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET14ed771dfb, +"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x73\x6b\x62\x20\x66\x6c\x75\x73\x68\x20\x74\x72\x69\x67\x67\x65\x72\x20\x74\x79\x70\x65" +);unsigned int DATARMNETea75c7b6f6 __read_mostly=30144000;module_param( +DATARMNETea75c7b6f6,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETea75c7b6f6, +"\x4d\x61\x78\x69\x6d\x75\x6d\x20\x62\x79\x74\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x77\x69\x6c\x6c\x20\x70\x61\x72\x6b" +);unsigned int DATARMNET7d18c0bcf8 __read_mostly=24000;module_param( +DATARMNET7d18c0bcf8,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET7d18c0bcf8, +"\x4d\x61\x78\x69\x6d\x75\x6d\x20\x70\x6b\x74\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x77\x69\x6c\x6c\x20\x70\x61\x72\x6b" +);unsigned int DATARMNET227d2ff866 __read_mostly=(0xf07+1573-0x14f5); +module_param(DATARMNET227d2ff866,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET227d2ff866, +"\x4d\x61\x78\x20\x77\x61\x69\x74\x20\x6d\x6f\x64\x75\x6c\x65\x20\x77\x69\x6c\x6c\x20\x77\x61\x69\x74\x20\x64\x75\x72\x69\x6e\x67\x20\x6d\x6f\x76\x65\x20\x74\x6f\x20\x70\x65\x72\x66\x20\x63\x6f\x72\x65\x20\x69\x6e\x20\x6d\x73" +);unsigned int DATARMNETa1ac2608b5 __read_mostly=(0xeb7+1130-0x130d); +module_param(DATARMNETa1ac2608b5,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETa1ac2608b5, +"\x4d\x61\x78\x20\x69\x6e\x74\x65\x72\x76\x61\x6c\x20\x77\x65\x20\x73\x61\x6d\x70\x6c\x65\x20\x66\x6f\x72\x20\x69\x6e\x73\x74\x61\x6e\x74\x20\x62\x75\x72\x73\x74\x20\x70\x72\x69\x6f\x72\x69\x74\x69\x7a\x69\x6e\x67" +);unsigned int DATARMNET12565c8f98 __read_mostly=(0xd26+209-0xdf6);module_param( +DATARMNET12565c8f98,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET12565c8f98, +"\x43\x6f\x6e\x66\x69\x67\x75\x72\x61\x62\x6c\x65\x20\x6f\x70\x74\x69\x6f\x6e\x20\x74\x6f\x20\x65\x6e\x61\x62\x6c\x65\x20\x72\x78\x20\x72\x61\x74\x65\x20\x63\x70\x75\x20\x73\x77\x69\x74\x63\x68\x69\x6e\x67" +);unsigned int DATARMNET365ddeca1c __read_mostly=(0xd26+209-0xdf6);module_param( +DATARMNET365ddeca1c,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET365ddeca1c, +"\x4f\x70\x74\x69\x6f\x6e\x20\x74\x6f\x20\x65\x6e\x61\x62\x6c\x65\x20\x66\x61\x6c\x6c\x20\x62\x61\x63\x6b\x20\x6c\x69\x6d\x69\x74\x20\x66\x6f\x72\x20\x70\x61\x72\x6b\x69\x6e\x67" +);unsigned int DATARMNETbc049ffc4c[DATARMNETc6782fed88]={(0xcf7+1705-0x101c), +(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c), +(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c)};module_param_array( +DATARMNETbc049ffc4c,uint,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETbc049ffc4c, +"\x4d\x61\x78\x20\x70\x6b\x74\x73\x20\x69\x6e\x20\x62\x61\x63\x6b\x6c\x6f\x67\x20\x70\x72\x69\x6f\x72\x69\x74\x69\x7a\x69\x6e\x67" +);unsigned int DATARMNET65393dea13[DATARMNETc6782fed88]={(0x17b8+5768-0x2224), +(0x17b8+5768-0x2224),(0x17b8+5768-0x2224),(0x17b8+5768-0x2224), +(0x17b8+5768-0x2224),(0x17b8+5768-0x2224),(0x17b8+5768-0x2224), +(0x17b8+5768-0x2224)};module_param_array(DATARMNET65393dea13,uint,NULL, +(0xdb7+6665-0x261c));MODULE_PARM_DESC(DATARMNET65393dea13, +"\x4d\x61\x78\x20\x70\x6b\x74\x73\x20\x69\x6e\x20\x61\x20\x62\x75\x72\x73\x74\x20\x62\x65\x66\x6f\x72\x65\x20\x70\x72\x69\x6f\x72\x69\x74\x69\x7a\x69\x6e\x67" +);unsigned int DATARMNET4ac8af832c __read_mostly=(0xd03+244-0xdf1);module_param( +DATARMNET4ac8af832c,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET4ac8af832c, +"\x4f\x70\x74\x69\x6f\x6e\x20\x74\x6f\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x65\x20\x66\x61\x6c\x6c\x20\x62\x61\x63\x6b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e" +);unsigned int DATARMNETa7909611da __read_mostly=(0xd26+209-0xdf6);module_param( +DATARMNETa7909611da,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETa7909611da, +"\x53\x77\x69\x74\x63\x68\x20\x63\x6f\x72\x65\x20\x75\x70\x6f\x6e\x20\x68\x69\x74\x74\x69\x6e\x67\x20\x74\x68\x72\x65\x73\x68\x6f\x6c\x64" +);unsigned int DATARMNET84413d1257[DATARMNETc6782fed88];module_param_array( +DATARMNET84413d1257,uint,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET84413d1257, +"\x4d\x61\x78\x20\x71\x75\x65\x75\x65\x20\x6c\x65\x6e\x67\x74\x68\x20\x73\x65\x65\x6e\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x63\x6f\x72\x65" +);unsigned int DATARMNET443cf5aaaf[DATARMNETc6782fed88];module_param_array( +DATARMNET443cf5aaaf,uint,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET443cf5aaaf, +"\x4f\x4f\x4f\x20\x63\x6f\x75\x6e\x74\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x63\x70\x75" +);unsigned int DATARMNETd75e474598[DATARMNETc6782fed88];module_param_array( +DATARMNETd75e474598,uint,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNETd75e474598, +"\x4d\x61\x78\x20\x63\x6f\x72\x65\x73\x75\x6d\x20\x73\x65\x65\x6e\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x63\x6f\x72\x65" +);unsigned int DATARMNET25c61a512c __read_mostly=(0xd18+223-0xdf4);module_param( +DATARMNET25c61a512c,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET25c61a512c, +"\x53\x74\x61\x79\x69\x6e\x67\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x20\x66\x6f\x72\x20\x6e\x65\x74\x72\x78\x20\x73\x77\x69\x74\x63\x68" +);unsigned int DATARMNET1ad396a890 __read_mostly=(0x25f8+1428-0x1804); +module_param(DATARMNET1ad396a890,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET1ad396a890, +"\x4d\x61\x78\x20\x72\x6d\x6e\x65\x74\x20\x70\x72\x65\x2d\x62\x61\x63\x6b\x6c\x6f\x67" +);unsigned int DATARMNET756bdd424a __read_mostly;module_param( +DATARMNET756bdd424a,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET756bdd424a, +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x64\x65\x62\x75\x67");unsigned int +DATARMNET58b009b16b __read_mostly=(0xd26+209-0xdf6);module_param( +DATARMNET58b009b16b,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC( +DATARMNET58b009b16b, +"\x45\x6e\x61\x62\x6c\x65\x20\x44\x69\x73\x61\x62\x6c\x65\x20\x73\x74\x61\x74\x73\x20\x63\x6f\x6c\x6c\x65\x63\x74\x69\x6f\x6e" +);unsigned long DATARMNET930a441406[DATARMNET0d61981934];module_param_array( +DATARMNET930a441406,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET930a441406, +"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x6d\x69\x64\x20\x65\x72\x72\x6f\x72\x20\x74\x79\x70\x65" +);unsigned long DATARMNET68d84e7b98[DATARMNETf3110711cb];module_param_array( +DATARMNET68d84e7b98,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC( +DATARMNET68d84e7b98, +"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x63\x72\x74\x69\x63\x61\x6c\x20\x65\x72\x72\x6f\x72\x20\x74\x79\x70\x65" +); diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.h b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.h new file mode 100644 index 0000000000..b9af5d9af8 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.h @@ -0,0 +1,58 @@ +/* Copyright (c) 2020 The Linux Foundation. All rights reserved. + * Copyright (c) 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 "rmnet_shs_wq.h" +#include "rmnet_shs_common.h" +#include "rmnet_shs.h" +#ifndef DATARMNET2883628e72 +#define DATARMNET2883628e72 +extern unsigned int DATARMNET1fc3ad67fd;extern unsigned long DATARMNETa804c0b904 +;extern unsigned int DATARMNETcab56af6d5 __read_mostly;extern unsigned long long + DATARMNET713717107f[DATARMNETc6782fed88];extern unsigned long long +DATARMNET4793ed48af[DATARMNETc6782fed88];extern unsigned int DATARMNET18f2ba4444 +[DATARMNETc6782fed88];extern unsigned int DATARMNET2d482e7d9f[ +DATARMNETc6782fed88];extern unsigned long long DATARMNET77240d48ee[ +DATARMNETc6782fed88];extern unsigned long long DATARMNET77189ab85c[ +DATARMNETc6782fed88];extern unsigned long long DATARMNET79263b1183[ +DATARMNETc6782fed88];extern unsigned long long DATARMNET229d52b629[ +DATARMNETc6782fed88];extern unsigned long long DATARMNETd27ed7efea[ +DATARMNETc6782fed88];extern unsigned long long DATARMNET377ecf13ca[ +DATARMNETc6782fed88];extern unsigned long DATARMNETbf3b6fdfc8[ +DATARMNET2f9ea73326];extern unsigned long DATARMNET0fec241216[ +DATARMNET2f9ea73326];extern unsigned long long DATARMNET9e5e8e4048[ +DATARMNET2f9ea73326];extern int DATARMNETdba344c809[DATARMNET2f9ea73326];extern +int DATARMNET99a934c43a[DATARMNET2f9ea73326];extern unsigned long long +DATARMNET47956cbb0f[DATARMNET2f9ea73326];extern unsigned long long +DATARMNET338c8e7a2b[DATARMNET2f9ea73326];extern unsigned long long +DATARMNET4b1ae621cd[DATARMNET2f9ea73326];extern unsigned long long +DATARMNETf5133a99c6[DATARMNET2f9ea73326];extern unsigned long long +DATARMNETc5d73c43e6[DATARMNET2f9ea73326];extern unsigned long long +DATARMNETf4aa8ec23f[DATARMNET2f9ea73326];extern unsigned long long +DATARMNET6d75219ffb[DATARMNET2f9ea73326];extern unsigned long +DATARMNETb7ddf3c5dd[DATARMNETeccb61ebc3];extern unsigned long +DATARMNET14ed771dfb[DATARMNET3cef75f6cd];extern unsigned int DATARMNETea75c7b6f6 +;extern unsigned int DATARMNET7d18c0bcf8;extern unsigned int DATARMNET227d2ff866 +;extern unsigned int DATARMNETa1ac2608b5;extern unsigned int DATARMNET12565c8f98 +;extern unsigned int DATARMNET365ddeca1c;extern unsigned int DATARMNETbc049ffc4c +[DATARMNETc6782fed88];extern unsigned int DATARMNET65393dea13[ +DATARMNETc6782fed88];extern unsigned int DATARMNET4ac8af832c;extern unsigned int + DATARMNETa7909611da;extern unsigned int DATARMNET84413d1257[DATARMNETc6782fed88 +];extern unsigned int DATARMNET443cf5aaaf[DATARMNETc6782fed88];extern unsigned +int DATARMNETd75e474598[DATARMNETc6782fed88];extern unsigned int +DATARMNET25c61a512c;extern unsigned int DATARMNET1ad396a890;extern unsigned int +DATARMNET756bdd424a;extern unsigned int DATARMNET58b009b16b __read_mostly;extern + unsigned long DATARMNET68d84e7b98[DATARMNETf3110711cb];extern unsigned long +DATARMNET930a441406[DATARMNET0d61981934]; +#endif + diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.c b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.c new file mode 100644 index 0000000000..9b94051e74 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.c @@ -0,0 +1,871 @@ +/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 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 "rmnet_shs.h" +#include "rmnet_shs_wq_genl.h" +#include "rmnet_shs_wq_mem.h" +#include +#include +#include +#include +#include "rmnet_shs_modules.h" +#include "rmnet_shs_common.h" +#include +MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32"); +#define DATARMNET59f7cb903f (0xc07+4861-0x1e3c) +#define DATARMNET832dcfb5f8 (0xeb7+698-0x110d) +#define DATARMNET53bef3c026 (0xd2d+202-0xdf7) +#define DATARMNETc5db038c35 (0xd26+209-0xdf6) +#define DATARMNETbe271c415b ((!DATARMNET25c61a512c) ? (0xd1f+216-0xdf5) : \ +DATARMNET25c61a512c) +#define DATARMNET2f8c32c8eb ((0xd1f+216-0xdf5)) +DEFINE_SPINLOCK(DATARMNETfbdbab2ef6);DEFINE_SPINLOCK(DATARMNETec2a4f5211);static + ktime_t DATARMNETb3a4036d6d;struct workqueue_struct*DATARMNETf141197982;static +struct DATARMNETa144e2bd00*DATARMNET9dc7755be5;static struct DATARMNETc8fdbf9c85 + DATARMNET6cdd58e74c;struct list_head DATARMNET9825511866=LIST_HEAD_INIT( +DATARMNET9825511866);static int DATARMNETe038d33545;struct list_head +DATARMNET30a3e83974=LIST_HEAD_INIT(DATARMNET30a3e83974);void DATARMNETa6e92c3315 +(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a){DATARMNETd2a694d52a-> +DATARMNETadd51beef4=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET68714ac92c= +(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET63b1a086d5=NULL; +DATARMNETd2a694d52a->DATARMNET42ceaf5cc2=(0xd2d+202-0xdf7);DATARMNETd2a694d52a-> +DATARMNET4b4a76b094=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNETa7352711af= +(0xd2d+202-0xdf7);DATARMNETd2a694d52a->rx_bytes=(0xd2d+202-0xdf7); +DATARMNETd2a694d52a->DATARMNET324c1a8f98=(0xd2d+202-0xdf7);DATARMNETd2a694d52a-> +DATARMNETbb80fccd97=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET0d682bcb29= +(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET20e8fc9db8=(0xd2d+202-0xdf7); +DATARMNETd2a694d52a->DATARMNETd34f4b12cd=(0xd2d+202-0xdf7);DATARMNETd2a694d52a-> +DATARMNET96e0dea53e=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET3ecedac168= +(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNETce5f56eab9=(0xd2d+202-0xdf7); +DATARMNETd2a694d52a->DATARMNET6edbc8b649=(0xd2d+202-0xdf7);DATARMNETd2a694d52a-> +DATARMNETde6a309f37=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET9fb369ce5f= +(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET17f2abdf03=(0xd2d+202-0xdf7); +DATARMNETd2a694d52a->DATARMNET399c840115=(0xd2d+202-0xdf7);DATARMNETd2a694d52a-> +DATARMNET1a1d89d417=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNETb932033f50= +(0xd2d+202-0xdf7);DATARMNETd2a694d52a->hash=(0xd2d+202-0xdf7); +DATARMNETd2a694d52a->DATARMNET6e1a4eaf09=(0xd2d+202-0xdf7);DATARMNETd2a694d52a-> +DATARMNET7c894c2f8f=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET87636d0152= +(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET1e9d25d9ff=(0xd2d+202-0xdf7); +DATARMNETd2a694d52a->DATARMNETb5f5519502=(-(0xd26+209-0xdf6));INIT_LIST_HEAD(& +DATARMNETd2a694d52a->DATARMNET742867e97a);DATARMNETd2a694d52a-> +DATARMNET8a4e1d5aaa=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET0dc393a345= +(0xd2d+202-0xdf7);trace_rmnet_shs_wq_low(DATARMNET238d08f0df,DATARMNETb43d929c3b +,DATARMNETd2a694d52a->DATARMNET0bfc2b2c85,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL);}void DATARMNETf5b8fce55d(u8 +DATARMNETe9030b7691,u8 DATARMNET1f19f4b029){struct DATARMNET6c78e47d24* +DATARMNETd2a694d52a=NULL;while(DATARMNETe9030b7691>(0xd2d+202-0xdf7)){ +DATARMNETd2a694d52a=kzalloc(sizeof(*DATARMNETd2a694d52a),GFP_ATOMIC);if( +DATARMNETd2a694d52a){DATARMNETd2a694d52a->DATARMNET0bfc2b2c85= +DATARMNET1f19f4b029;DATARMNETa6e92c3315(DATARMNETd2a694d52a);INIT_LIST_HEAD(& +DATARMNETd2a694d52a->DATARMNET6de26f0feb);INIT_LIST_HEAD(&DATARMNETd2a694d52a-> +DATARMNET742867e97a);DATARMNET36e5e526fa(DATARMNETd2a694d52a);}else{ +DATARMNET68d84e7b98[DATARMNET1828d69e96]++;}DATARMNETd2a694d52a=NULL; +DATARMNETe9030b7691--;}}struct DATARMNET6c78e47d24*DATARMNETb062995420(void){ +struct DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;struct DATARMNET6c78e47d24* +DATARMNETe70783182f=NULL;unsigned long flags;spin_lock_irqsave(& +DATARMNETfbdbab2ef6,flags);list_for_each_entry(DATARMNETd2a694d52a,& +DATARMNET9825511866,DATARMNET6de26f0feb){if(DATARMNETd2a694d52a-> +DATARMNET0dc393a345==(0xd2d+202-0xdf7)){DATARMNETe70783182f=DATARMNETd2a694d52a; +DATARMNETe70783182f->DATARMNET0dc393a345=(0xd26+209-0xdf6);DATARMNETe70783182f-> +DATARMNET8a4e1d5aaa=(0xd26+209-0xdf6);break;}}spin_unlock_irqrestore(& +DATARMNETfbdbab2ef6,flags);if(DATARMNETe70783182f){trace_rmnet_shs_wq_low( +DATARMNET238d08f0df,DATARMNET8d783e2a07,DATARMNETd2a694d52a->DATARMNET0bfc2b2c85 +,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a, +NULL);return DATARMNETe70783182f;}DATARMNETe70783182f=kzalloc(sizeof(* +DATARMNETd2a694d52a),GFP_ATOMIC);if(!DATARMNETe70783182f){DATARMNET68d84e7b98[ +DATARMNET1828d69e96]++;return NULL;}DATARMNETa6e92c3315(DATARMNETe70783182f); +DATARMNETe70783182f->DATARMNET0bfc2b2c85=(0xd2d+202-0xdf7);DATARMNETe70783182f-> +DATARMNET0dc393a345=(0xd26+209-0xdf6);DATARMNETe70783182f->DATARMNET8a4e1d5aaa= +(0xd26+209-0xdf6);INIT_LIST_HEAD(&DATARMNETe70783182f->DATARMNET6de26f0feb); +INIT_LIST_HEAD(&DATARMNETe70783182f->DATARMNET742867e97a);trace_rmnet_shs_wq_low +(DATARMNET238d08f0df,DATARMNET4b15fcda7c,DATARMNETe70783182f-> +DATARMNET0bfc2b2c85,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +DATARMNETe70783182f,NULL);DATARMNET36e5e526fa(DATARMNETe70783182f);return +DATARMNETe70783182f;}void DATARMNET350f55bfca(struct DATARMNET63d7680df2*node_p) +{struct timespec64 time;if(!node_p){DATARMNET68d84e7b98[DATARMNETac729c3d29]++; +return;}node_p->DATARMNET341ea38662=DATARMNETb062995420();if(node_p-> +DATARMNET341ea38662!=NULL){(void)ktime_get_boottime_ts64(&time);node_p-> +DATARMNET341ea38662->hash=node_p->hash;node_p->DATARMNET341ea38662-> +DATARMNET1e9d25d9ff=node_p->DATARMNET1e9d25d9ff;node_p->DATARMNET341ea38662-> +DATARMNET7c894c2f8f=node_p->map_cpu;node_p->DATARMNET341ea38662-> +DATARMNET6e1a4eaf09=node_p->map_cpu;node_p->DATARMNET341ea38662-> +DATARMNET87636d0152=(0xd2d+202-0xdf7);if(DATARMNETc252c204a8&&node_p-> +DATARMNET341ea38662->DATARMNET1e9d25d9ff==IPPROTO_TCP)node_p-> +DATARMNET341ea38662->DATARMNET87636d0152=DATARMNET2f8c32c8eb;node_p-> +DATARMNET341ea38662->DATARMNET63b1a086d5=node_p;node_p->DATARMNET341ea38662-> +DATARMNETadd51beef4=DATARMNETe6671dbf38(time.tv_sec)+time.tv_nsec;node_p-> +DATARMNET341ea38662->DATARMNET68714ac92c=DATARMNETe6671dbf38(time.tv_sec)+time. +tv_nsec;}trace_rmnet_shs_wq_high(DATARMNET238d08f0df,DATARMNET31d8e00b80, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +node_p,node_p->DATARMNET341ea38662);}static u64 DATARMNETf553c2afd2(struct +DATARMNET6c78e47d24*DATARMNETd2a694d52a){u64 DATARMNET253a9fc708, +DATARMNET950c035603;u16 DATARMNETab4cf0ad84,DATARMNET0c72af011b;if(! +DATARMNETd2a694d52a){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return +(0xd2d+202-0xdf7);}if(DATARMNET362b15f941(DATARMNETd2a694d52a-> +DATARMNET7c894c2f8f)){DATARMNETab4cf0ad84=DATARMNETcab56af6d5; +DATARMNET0c72af011b=(0xeb7+698-0x110d)-DATARMNETcab56af6d5;}else{ +DATARMNET0c72af011b=DATARMNETcab56af6d5;DATARMNETab4cf0ad84=(0xeb7+698-0x110d)- +DATARMNETcab56af6d5;}if(DATARMNETd2a694d52a->DATARMNET6c2816c16a== +(0xd2d+202-0xdf7)){DATARMNET253a9fc708=DATARMNETd2a694d52a->DATARMNET324c1a8f98; +}else{DATARMNET950c035603=(DATARMNETd2a694d52a->DATARMNET6c2816c16a+ +DATARMNETd2a694d52a->DATARMNET253a9fc708)/(0xd1f+216-0xdf5);DATARMNET253a9fc708= +(((DATARMNETab4cf0ad84*DATARMNETd2a694d52a->DATARMNET324c1a8f98)+( +DATARMNET0c72af011b*DATARMNET950c035603))/(DATARMNETab4cf0ad84+ +DATARMNET0c72af011b));}return DATARMNET253a9fc708;}static u64 +DATARMNET183789850d(u16 DATARMNET42a992465f){u64 DATARMNET253a9fc708, +DATARMNET950c035603;u16 DATARMNETab4cf0ad84,DATARMNET0c72af011b;struct +DATARMNET228056d4b7*DATARMNETf632b170b1;struct DATARMNETc8fdbf9c85* +DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;if(DATARMNET42a992465f>= +DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return +(0xd2d+202-0xdf7);}DATARMNETf632b170b1=&DATARMNET7bea4a06a6->DATARMNET73464778dc +[DATARMNET42a992465f];if(DATARMNET362b15f941(DATARMNET42a992465f)){ +DATARMNETab4cf0ad84=DATARMNETcab56af6d5;DATARMNET0c72af011b=(0xeb7+698-0x110d)- +DATARMNETcab56af6d5;}else{DATARMNET0c72af011b=DATARMNETcab56af6d5; +DATARMNETab4cf0ad84=(0xeb7+698-0x110d)-DATARMNETcab56af6d5;}if( +DATARMNETf632b170b1->DATARMNET27c3925eff==(0xd2d+202-0xdf7)){DATARMNET253a9fc708 +=DATARMNETf632b170b1->DATARMNET253a9fc708;}else{DATARMNET950c035603=( +DATARMNETf632b170b1->DATARMNET27c3925eff+DATARMNETf632b170b1-> +DATARMNET253a9fc708)/(0xd1f+216-0xdf5);DATARMNET253a9fc708=((( +DATARMNETab4cf0ad84*DATARMNETf632b170b1->DATARMNET324c1a8f98)+( +DATARMNET0c72af011b*DATARMNET950c035603))/(DATARMNETab4cf0ad84+ +DATARMNET0c72af011b));}trace_rmnet_shs_wq_high(DATARMNET39a68a0eba, +DATARMNETde65aa00a6,DATARMNET42a992465f,DATARMNETf632b170b1->DATARMNET324c1a8f98 +,DATARMNETf632b170b1->DATARMNET27c3925eff,DATARMNET253a9fc708,NULL,NULL);return +DATARMNET253a9fc708;}void DATARMNET0aa47ce397(struct DATARMNET6c78e47d24* +DATARMNET7b2c1bbf38){struct DATARMNET63d7680df2*node_p=NULL;struct +DATARMNET9b44b71ee9*ep=NULL;if(!DATARMNET7b2c1bbf38){DATARMNET68d84e7b98[ +DATARMNETac729c3d29]++;return;}node_p=DATARMNET7b2c1bbf38->DATARMNET63b1a086d5; +list_for_each_entry(ep,&DATARMNET30a3e83974,DATARMNET0763436b8d){if(node_p->dev +==ep->ep){DATARMNET7b2c1bbf38->DATARMNET9fb369ce5f=ep->DATARMNET9fb369ce5f; +DATARMNET7b2c1bbf38->DATARMNET399c840115=ep->DATARMNET24a91635db; +DATARMNET7b2c1bbf38->DATARMNET1a1d89d417=ep->DATARMNET1a1d89d417;if( +DATARMNET7b2c1bbf38->DATARMNET1e9d25d9ff==IPPROTO_TCP){rm_err( +"\x53\x48\x53\x5f\x54\x43\x50\x3a\x20\x61\x64\x64\x69\x6e\x67\x20\x54\x43\x50\x20\x62\x70\x73\x20\x25\x6c\x75\x20\x74\x6f\x20\x65\x70\x5f\x74\x6f\x74\x61\x6c\x20\x25\x6c\x75\x20\x65\x70\x20\x6e\x61\x6d\x65\x20\x25\x73" +,DATARMNET7b2c1bbf38->DATARMNETbb80fccd97,ep->DATARMNET4eb77c78e6,node_p->dev-> +name);ep->DATARMNET4eb77c78e6+=DATARMNET7b2c1bbf38->DATARMNETbb80fccd97;}else if +(DATARMNET7b2c1bbf38->DATARMNET1e9d25d9ff==IPPROTO_UDP){rm_err( +"\x53\x48\x53\x5f\x55\x44\x50\x3a\x20\x61\x64\x64\x69\x6e\x67\x20\x55\x44\x50\x20\x72\x78\x5f\x62\x70\x73\x20\x25\x6c\x75\x20\x74\x6f\x20\x65\x70\x5f\x74\x6f\x74\x61\x6c\x20\x25\x6c\x75\x20\x65\x70\x20\x6e\x61\x6d\x65\x20\x25\x73" +,DATARMNET7b2c1bbf38->DATARMNETbb80fccd97,ep->DATARMNET257fc4b2d4,node_p->dev-> +name);ep->DATARMNET257fc4b2d4+=DATARMNET7b2c1bbf38->DATARMNETbb80fccd97;}break;} +}trace_rmnet_shs_wq_low(DATARMNET394831f22a,DATARMNET35902389b3, +DATARMNET7b2c1bbf38->DATARMNET9fb369ce5f,DATARMNET7b2c1bbf38-> +DATARMNET399c840115,DATARMNET7b2c1bbf38->DATARMNET1a1d89d417,(0x16e8+787-0xc0c), +DATARMNET7b2c1bbf38,node_p);}void DATARMNETc55315279b(struct DATARMNET6c78e47d24 +*DATARMNETdbe9f3dbe3,struct DATARMNET63d7680df2*node_p){int idx= +DATARMNETe038d33545;if(!DATARMNET58b009b16b)return;if(!DATARMNETdbe9f3dbe3||! +node_p){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}if( +DATARMNETdbe9f3dbe3->DATARMNETb5f5519502<(0xd2d+202-0xdf7)){idx=idx% +DATARMNET2f9ea73326;DATARMNETdbe9f3dbe3->DATARMNETb5f5519502=idx; +DATARMNETe038d33545++;}DATARMNETbf3b6fdfc8[DATARMNETdbe9f3dbe3-> +DATARMNETb5f5519502]=DATARMNETdbe9f3dbe3->hash;DATARMNET0fec241216[ +DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]=node_p->DATARMNET1e9d25d9ff; +DATARMNET9e5e8e4048[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]= +DATARMNET36cfa76181(DATARMNETdbe9f3dbe3->DATARMNET42ceaf5cc2); +DATARMNET4b1ae621cd[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]= +DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97;DATARMNETf5133a99c6[DATARMNETdbe9f3dbe3 +->DATARMNETb5f5519502]=DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98; +DATARMNET47956cbb0f[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]= +DATARMNETdbe9f3dbe3->rx_bytes;DATARMNET338c8e7a2b[DATARMNETdbe9f3dbe3-> +DATARMNETb5f5519502]=DATARMNETdbe9f3dbe3->DATARMNET4b4a76b094; +DATARMNETdba344c809[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]= +DATARMNETdbe9f3dbe3->DATARMNET7c894c2f8f;DATARMNET99a934c43a[DATARMNETdbe9f3dbe3 +->DATARMNETb5f5519502]=DATARMNETdbe9f3dbe3->DATARMNET6e1a4eaf09; +DATARMNETc5d73c43e6[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]= +DATARMNETdbe9f3dbe3->DATARMNET61e1ee0e95[DATARMNETed5a873a00]; +DATARMNETf4aa8ec23f[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]= +DATARMNETdbe9f3dbe3->DATARMNET61e1ee0e95[DATARMNETd7a3f55a51]; +DATARMNET6d75219ffb[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]= +DATARMNETdbe9f3dbe3->DATARMNET61e1ee0e95[DATARMNETefe8657028];}u8 +DATARMNETd245b71b63(struct DATARMNET6c78e47d24*DATARMNETdbe9f3dbe3,struct +DATARMNET63d7680df2*node_p){if(!DATARMNETdbe9f3dbe3||!node_p){ +DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return(0xd2d+202-0xdf7);}if(node_p-> +DATARMNET11930c5df8==DATARMNETdbe9f3dbe3->DATARMNET4b4a76b094)return +(0xd2d+202-0xdf7);return(0xd26+209-0xdf6);}void DATARMNETb49b4f6385(struct +DATARMNET6c78e47d24*DATARMNETdbe9f3dbe3,struct DATARMNET63d7680df2*node_p){ +ktime_t DATARMNET96f21fddc1;if(!DATARMNETdbe9f3dbe3||!node_p){ +DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}DATARMNET96f21fddc1= +DATARMNETb3a4036d6d-DATARMNETdbe9f3dbe3->DATARMNETadd51beef4;DATARMNETdbe9f3dbe3 +->DATARMNET42ceaf5cc2=DATARMNET96f21fddc1;trace_rmnet_shs_wq_low( +DATARMNET394831f22a,DATARMNET08cee5b48c,DATARMNETdbe9f3dbe3->hash, +DATARMNET96f21fddc1,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETdbe9f3dbe3, +NULL);}void DATARMNET9a7769cf21(struct DATARMNET6c78e47d24*DATARMNETdbe9f3dbe3){ +ktime_t DATARMNET96f21fddc1;u64 DATARMNETee9f72f13f,DATARMNET539a572f34, +DATARMNET33b006454e;struct DATARMNET63d7680df2*node_p;if(!DATARMNETdbe9f3dbe3){ +DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}node_p=DATARMNETdbe9f3dbe3-> +DATARMNET63b1a086d5;if(!DATARMNETd245b71b63(DATARMNETdbe9f3dbe3,node_p)){ +DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98=(0xd2d+202-0xdf7);DATARMNETdbe9f3dbe3-> +DATARMNET253a9fc708=(0xd2d+202-0xdf7);DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97= +(0xd2d+202-0xdf7);DATARMNETb49b4f6385(DATARMNETdbe9f3dbe3,node_p); +DATARMNETc55315279b(DATARMNETdbe9f3dbe3,node_p);return;}trace_rmnet_shs_wq_low( +DATARMNET394831f22a,DATARMNET91e905574d,DATARMNETdbe9f3dbe3->hash, +(0x16e8+787-0xc0c),DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98,DATARMNETdbe9f3dbe3 +->DATARMNETbb80fccd97,DATARMNETdbe9f3dbe3,NULL);DATARMNET0aa47ce397( +DATARMNETdbe9f3dbe3);DATARMNETdbe9f3dbe3->DATARMNET42ceaf5cc2=(0xd2d+202-0xdf7); +DATARMNETdbe9f3dbe3->DATARMNET68714ac92c=node_p->DATARMNET341ea38662-> +DATARMNETadd51beef4;DATARMNETdbe9f3dbe3->DATARMNET6edbc8b649=node_p-> +DATARMNET341ea38662->DATARMNET4b4a76b094;DATARMNETdbe9f3dbe3-> +DATARMNET4025a4ec90=node_p->DATARMNET341ea38662->DATARMNETa7352711af; +DATARMNETdbe9f3dbe3->DATARMNETd34f4b12cd=node_p->DATARMNET341ea38662-> +DATARMNET3ecedac168;DATARMNETdbe9f3dbe3->DATARMNET96e0dea53e=node_p-> +DATARMNET341ea38662->DATARMNETce5f56eab9;DATARMNETdbe9f3dbe3-> +DATARMNETde6a309f37=node_p->DATARMNET341ea38662->rx_bytes;DATARMNETdbe9f3dbe3-> +DATARMNETadd51beef4=DATARMNETb3a4036d6d;DATARMNETdbe9f3dbe3->DATARMNET4b4a76b094 +=node_p->DATARMNET11930c5df8;DATARMNETdbe9f3dbe3->DATARMNETa7352711af=node_p-> +DATARMNETa8940e4a7b;DATARMNETdbe9f3dbe3->DATARMNET3ecedac168=node_p-> +DATARMNET3ecedac168;DATARMNETdbe9f3dbe3->DATARMNETce5f56eab9=node_p-> +DATARMNETce5f56eab9;DATARMNETdbe9f3dbe3->rx_bytes=node_p->DATARMNET2594c418db; +DATARMNET96f21fddc1=(DATARMNETdbe9f3dbe3->DATARMNETadd51beef4- +DATARMNETdbe9f3dbe3->DATARMNET68714ac92c);DATARMNET96f21fddc1=( +DATARMNET96f21fddc1>DATARMNETac617c8dce(DATARMNET1fc3ad67fd)&& +DATARMNET1fc3ad67fd>(0xd2d+202-0xdf7))?DATARMNET96f21fddc1:DATARMNETac617c8dce( +(0xeb7+698-0x110d));DATARMNETee9f72f13f=DATARMNETdbe9f3dbe3->DATARMNET4b4a76b094 +-DATARMNETdbe9f3dbe3->DATARMNET6edbc8b649;DATARMNET539a572f34= +DATARMNETdbe9f3dbe3->DATARMNETa7352711af-DATARMNETdbe9f3dbe3-> +DATARMNET4025a4ec90;DATARMNET33b006454e=DATARMNETdbe9f3dbe3->rx_bytes- +DATARMNETdbe9f3dbe3->DATARMNETde6a309f37;DATARMNETd2da2e8466( +"\x53\x48\x53\x5f\x53\x45\x47\x53\x3a\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x63\x6f\x61\x6c\x20\x73\x6b\x62\x20\x3d\x20\x25\x6c\x75\x20\x7c\x20\x6c\x61\x73\x74\x20\x63\x6f\x61\x6c\x20\x73\x6b\x62\x20\x3d\x20\x25\x6c\x75\x20\x7c\x20\x72\x78\x20\x73\x6b\x62\x20\x3d\x20\x25\x6c\x75\x20\x7c\x20\x6c\x61\x73\x74\x20\x72\x78\x20\x73\x6b\x62\x20\x25\x6c\x75" +,DATARMNETdbe9f3dbe3->hash,DATARMNETdbe9f3dbe3->DATARMNETa7352711af, +DATARMNETdbe9f3dbe3->DATARMNET4025a4ec90,DATARMNETdbe9f3dbe3-> +DATARMNET4b4a76b094,DATARMNETdbe9f3dbe3->DATARMNET6edbc8b649); +DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98=DATARMNET855e9d7062(DATARMNETee9f72f13f +)/(DATARMNET96f21fddc1);DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97= +DATARMNET855e9d7062(DATARMNET33b006454e)/(DATARMNET96f21fddc1); +DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97=DATARMNET64577537b7(DATARMNETdbe9f3dbe3 +->DATARMNETbb80fccd97);DATARMNETdbe9f3dbe3->DATARMNET253a9fc708= +DATARMNETf553c2afd2(DATARMNETdbe9f3dbe3);if(DATARMNET539a572f34> +(0xd2d+202-0xdf7)){DATARMNETdbe9f3dbe3->DATARMNET95266642d1=DATARMNETee9f72f13f/ +DATARMNET539a572f34;DATARMNETd2da2e8466( +"\x53\x48\x53\x5f\x53\x45\x47\x53\x3a\x20\x61\x76\x67\x20\x73\x65\x67\x73\x20\x3d\x20\x25\x6c\x75\x20\x73\x6b\x62\x5f\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75\x20\x63\x6f\x61\x6c\x5f\x73\x6b\x62\x5f\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75" +,DATARMNETdbe9f3dbe3->DATARMNET95266642d1,DATARMNETee9f72f13f, +DATARMNET539a572f34);}else{DATARMNETdbe9f3dbe3->DATARMNET95266642d1= +(0xd2d+202-0xdf7);}DATARMNETdbe9f3dbe3->DATARMNET0d682bcb29=DATARMNETdbe9f3dbe3 +->DATARMNET3ecedac168-DATARMNETdbe9f3dbe3->DATARMNETd34f4b12cd; +DATARMNETdbe9f3dbe3->DATARMNET20e8fc9db8=DATARMNETdbe9f3dbe3-> +DATARMNETce5f56eab9-DATARMNETdbe9f3dbe3->DATARMNET96e0dea53e;DATARMNETd2da2e8466 +( +"\x53\x48\x53\x5f\x48\x57\x5f\x43\x4f\x41\x4c\x3a\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x79\x74\x65\x73\x20\x3d\x20\x25\x6c\x75\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x75\x66\x73\x69\x7a\x65\x20\x3d\x20\x25\x6c\x75" +,node_p->DATARMNET3ecedac168,node_p->DATARMNETce5f56eab9);DATARMNETd2da2e8466( +"\x53\x48\x53\x5f\x48\x57\x5f\x43\x4f\x41\x4c\x3a\x20\x4c\x41\x53\x54\x3a\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x79\x74\x65\x73\x20\x3d\x20\x25\x6c\x75\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x75\x66\x73\x69\x7a\x65\x20\x3d\x20\x25\x6c\x75" +,DATARMNETdbe9f3dbe3->DATARMNETd34f4b12cd,DATARMNETdbe9f3dbe3-> +DATARMNET96e0dea53e);DATARMNETd2da2e8466( +"\x53\x48\x53\x5f\x48\x57\x5f\x43\x4f\x41\x4c\x3a\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x79\x74\x65\x73\x20\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x75\x66\x73\x69\x7a\x65\x20\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75" +,DATARMNETdbe9f3dbe3->DATARMNET0d682bcb29,DATARMNETdbe9f3dbe3-> +DATARMNET20e8fc9db8);DATARMNETdbe9f3dbe3->DATARMNET6c2816c16a= +DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98;DATARMNETc55315279b(DATARMNETdbe9f3dbe3 +,node_p);trace_rmnet_shs_wq_high(DATARMNET394831f22a,DATARMNETb0ed796e8c, +DATARMNETdbe9f3dbe3->hash,DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98, +DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97,(DATARMNET96f21fddc1/1000000), +DATARMNETdbe9f3dbe3,NULL);}static void DATARMNET33f47350f0(u16 cpu,struct +DATARMNET228056d4b7*DATARMNETcf7ef40ff9){if(!DATARMNET58b009b16b)return;if(cpu>= +DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return;}if(! +DATARMNETcf7ef40ff9){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;} +DATARMNET79263b1183[cpu]=DATARMNETcf7ef40ff9->DATARMNETbb80fccd97; +DATARMNET229d52b629[cpu]=DATARMNETcf7ef40ff9->DATARMNET324c1a8f98; +DATARMNET18f2ba4444[cpu]=DATARMNETcf7ef40ff9->flows;DATARMNET77240d48ee[cpu]= +DATARMNETcf7ef40ff9->rx_bytes;DATARMNET77189ab85c[cpu]=DATARMNETcf7ef40ff9-> +DATARMNET7fc41d655d;DATARMNETd27ed7efea[cpu]=DATARMNETcf7ef40ff9-> +DATARMNET69770f8ef7;DATARMNET377ecf13ca[cpu]=DATARMNETcf7ef40ff9-> +DATARMNET17380ba0f8;}static void DATARMNET8b2fb5dc3c(void){struct +DATARMNETc8fdbf9c85*DATARMNET3c48cbf7e4=&DATARMNET6cdd58e74c;struct rmnet_port* +port;u64 DATARMNETe3ed6089ca,byte_diff;ktime_t DATARMNET96f21fddc1; +DATARMNET3c48cbf7e4->DATARMNET601156672d=DATARMNET3c48cbf7e4-> +DATARMNET4947607c52;DATARMNET3c48cbf7e4->DATARMNETbfe25a2160=DATARMNET3c48cbf7e4 +->DATARMNET903a2cea81;port=DATARMNETecc0627c70.port;if(!port){ +DATARMNET68d84e7b98[DATARMNET42b73d0f3f]++;return;}DATARMNET3c48cbf7e4-> +DATARMNET903a2cea81=port->stats.dl_hdr_total_pkts;DATARMNET3c48cbf7e4-> +DATARMNET4947607c52=port->stats.dl_hdr_total_bytes;DATARMNET96f21fddc1= +DATARMNETb3a4036d6d-DATARMNET3c48cbf7e4->DATARMNET68714ac92c;DATARMNET96f21fddc1 +=(DATARMNET96f21fddc1>DATARMNETac617c8dce(DATARMNET1fc3ad67fd)&& +DATARMNET1fc3ad67fd>(0xd2d+202-0xdf7))?DATARMNET96f21fddc1:DATARMNETac617c8dce( +(0xeb7+698-0x110d));DATARMNETe3ed6089ca=DATARMNET3c48cbf7e4->DATARMNET903a2cea81 +-DATARMNET3c48cbf7e4->DATARMNETbfe25a2160;byte_diff=DATARMNET3c48cbf7e4-> +DATARMNET4947607c52-DATARMNET3c48cbf7e4->DATARMNET601156672d;DATARMNET3c48cbf7e4 +->DATARMNET3067b3dafd=DATARMNET855e9d7062(DATARMNETe3ed6089ca)/ +DATARMNET96f21fddc1;DATARMNET3c48cbf7e4->DATARMNET47334112aa=DATARMNET855e9d7062 +(byte_diff)/DATARMNET96f21fddc1;DATARMNET3c48cbf7e4->DATARMNET47334112aa= +DATARMNET64577537b7(DATARMNET3c48cbf7e4->DATARMNET47334112aa);}static void +DATARMNET0ce3f33785(void){struct DATARMNETc8fdbf9c85*DATARMNET3c48cbf7e4=& +DATARMNET6cdd58e74c;u64 DATARMNETe3ed6089ca,byte_diff,DATARMNETccb5dc8a5c, +DATARMNET4df302dbd6;ktime_t DATARMNET96f21fddc1;DATARMNET96f21fddc1= +DATARMNETb3a4036d6d-DATARMNET3c48cbf7e4->DATARMNET68714ac92c;DATARMNET96f21fddc1 +=(DATARMNET96f21fddc1>DATARMNETac617c8dce(DATARMNET1fc3ad67fd)&& +DATARMNET1fc3ad67fd>(0xd2d+202-0xdf7))?DATARMNET96f21fddc1:DATARMNETac617c8dce( +(0xeb7+698-0x110d));DATARMNETe3ed6089ca=(DATARMNET3c48cbf7e4-> +DATARMNET7fc41d655d-DATARMNET3c48cbf7e4->DATARMNET9853a006ae);byte_diff= +DATARMNET3c48cbf7e4->rx_bytes-DATARMNET3c48cbf7e4->DATARMNETde6a309f37; +DATARMNETccb5dc8a5c=DATARMNET855e9d7062(DATARMNETe3ed6089ca)/DATARMNET96f21fddc1 +;DATARMNET4df302dbd6=DATARMNET855e9d7062(byte_diff)/DATARMNET96f21fddc1; +DATARMNET3c48cbf7e4->DATARMNET8233cb4988=DATARMNET3c48cbf7e4-> +DATARMNETbb80fccd97;DATARMNET3c48cbf7e4->DATARMNET27c3925eff=DATARMNET3c48cbf7e4 +->DATARMNET324c1a8f98;DATARMNET3c48cbf7e4->DATARMNETbb80fccd97= +DATARMNET64577537b7(DATARMNET4df302dbd6);DATARMNET3c48cbf7e4-> +DATARMNET324c1a8f98=DATARMNETccb5dc8a5c;DATARMNET3c48cbf7e4->DATARMNET68714ac92c +=DATARMNETb3a4036d6d;DATARMNET3c48cbf7e4->DATARMNETde6a309f37= +DATARMNET3c48cbf7e4->rx_bytes;DATARMNET3c48cbf7e4->DATARMNET9853a006ae= +DATARMNET3c48cbf7e4->DATARMNET7fc41d655d;trace_rmnet_shs_wq_high( +DATARMNET0dd7951b5e,DATARMNET709474066f,DATARMNET3c48cbf7e4->DATARMNET324c1a8f98 +,DATARMNET3c48cbf7e4->DATARMNET3067b3dafd,DATARMNET3c48cbf7e4-> +DATARMNETbb80fccd97,DATARMNET3c48cbf7e4->DATARMNET47334112aa,NULL,NULL);}static +void DATARMNET73d2153565(u16 cpu){struct DATARMNET228056d4b7*DATARMNETcf7ef40ff9 +;ktime_t DATARMNET96f21fddc1;u64 DATARMNET55fffa9aa9,DATARMNETedf00aed6f;u64 +DATARMNET8233cb4988,DATARMNET27c3925eff;u32 DATARMNET8f1cb43b32;if(cpu>= +DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return;} +DATARMNETcf7ef40ff9=&DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu]; +DATARMNET55fffa9aa9=DATARMNETcf7ef40ff9->DATARMNET7fc41d655d-DATARMNETcf7ef40ff9 +->DATARMNET9853a006ae;DATARMNET8f1cb43b32=DATARMNETadb0248bd4(cpu);if( +DATARMNETcf7ef40ff9->DATARMNET14b0d18481==(0xd2d+202-0xdf7))DATARMNETcf7ef40ff9 +->DATARMNET14b0d18481=DATARMNET8f1cb43b32;DATARMNETcf7ef40ff9-> +DATARMNET8b9956a3f9=DATARMNETcf7ef40ff9->DATARMNETae196235f2;DATARMNETcf7ef40ff9 +->DATARMNETae196235f2=DATARMNET8f1cb43b32;DATARMNETcf7ef40ff9-> +DATARMNET69770f8ef7=DATARMNETcf7ef40ff9->DATARMNETae196235f2-DATARMNETcf7ef40ff9 +->DATARMNET8b9956a3f9;DATARMNETcf7ef40ff9->DATARMNET17380ba0f8= +DATARMNETcf7ef40ff9->DATARMNETae196235f2-DATARMNETcf7ef40ff9-> +DATARMNET14b0d18481;if(DATARMNET0997c5650d[cpu].DATARMNET1e1f197118) +DATARMNET0997c5650d[cpu].DATARMNET1e1f197118=(DATARMNET0997c5650d[cpu]. +DATARMNET1e1f197118+(0xd26+209-0xdf6))%(DATARMNETbe271c415b);if( +DATARMNET55fffa9aa9==(0xd2d+202-0xdf7)){DATARMNETcf7ef40ff9->DATARMNET68714ac92c +=DATARMNETb3a4036d6d;DATARMNETcf7ef40ff9->DATARMNETbb80fccd97=(0xd2d+202-0xdf7); +DATARMNETcf7ef40ff9->DATARMNET324c1a8f98=(0xd2d+202-0xdf7);DATARMNETcf7ef40ff9-> +DATARMNET253a9fc708=(0xd2d+202-0xdf7);if(DATARMNETc252c204a8){ +DATARMNETc6439e3d71(&DATARMNET6cdd58e74c,DATARMNETcf7ef40ff9,& +DATARMNETe46ae760db);}DATARMNET33f47350f0(cpu,DATARMNETcf7ef40ff9);return;} +DATARMNET96f21fddc1=DATARMNETb3a4036d6d-DATARMNETcf7ef40ff9->DATARMNET68714ac92c +;DATARMNETedf00aed6f=DATARMNETcf7ef40ff9->rx_bytes-DATARMNETcf7ef40ff9-> +DATARMNETde6a309f37;DATARMNET96f21fddc1=(DATARMNET96f21fddc1>DATARMNETac617c8dce +(DATARMNET1fc3ad67fd)&&DATARMNET1fc3ad67fd>(0xd2d+202-0xdf7))? +DATARMNET96f21fddc1:DATARMNETac617c8dce((0xeb7+698-0x110d));DATARMNET8233cb4988= +DATARMNETcf7ef40ff9->DATARMNETbb80fccd97;DATARMNET27c3925eff=DATARMNETcf7ef40ff9 +->DATARMNET324c1a8f98;DATARMNETcf7ef40ff9->DATARMNET324c1a8f98= +DATARMNET855e9d7062(DATARMNET55fffa9aa9)/DATARMNET96f21fddc1;DATARMNETcf7ef40ff9 +->DATARMNETbb80fccd97=DATARMNET855e9d7062(DATARMNETedf00aed6f)/ +DATARMNET96f21fddc1;DATARMNETcf7ef40ff9->DATARMNETbb80fccd97=DATARMNET64577537b7 +(DATARMNETcf7ef40ff9->DATARMNETbb80fccd97);DATARMNETcf7ef40ff9-> +DATARMNET253a9fc708=DATARMNET183789850d(cpu);DATARMNETcf7ef40ff9-> +DATARMNET8233cb4988=DATARMNET8233cb4988;DATARMNETcf7ef40ff9->DATARMNET27c3925eff +=DATARMNET27c3925eff;DATARMNETcf7ef40ff9->DATARMNET68714ac92c= +DATARMNETb3a4036d6d;DATARMNETcf7ef40ff9->DATARMNET9853a006ae=DATARMNETcf7ef40ff9 +->DATARMNET7fc41d655d;DATARMNETcf7ef40ff9->DATARMNETde6a309f37= +DATARMNETcf7ef40ff9->rx_bytes;DATARMNETcf7ef40ff9->DATARMNETc0b20e240a= +DATARMNETcf7ef40ff9->DATARMNETbb80fccd97;if(DATARMNETc252c204a8){ +DATARMNETc6439e3d71(&DATARMNET6cdd58e74c,DATARMNETcf7ef40ff9,& +DATARMNETe46ae760db);}trace_rmnet_shs_wq_high(DATARMNET39a68a0eba, +DATARMNET95d1ddcb1a,cpu,DATARMNETcf7ef40ff9->flows,DATARMNETcf7ef40ff9-> +DATARMNET324c1a8f98,DATARMNETcf7ef40ff9->DATARMNETbb80fccd97,NULL,NULL); +DATARMNET33f47350f0(cpu,DATARMNETcf7ef40ff9);}static void DATARMNET617b443145( +void){u16 cpu;trace_rmnet_shs_wq_high(DATARMNET39a68a0eba,DATARMNET6bde6a5171, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL +,NULL);for(cpu=(0xd2d+202-0xdf7);cpu +DATARMNET63b1a086d5;if(DATARMNET7b2c1bbf38->DATARMNET42ceaf5cc2> +(0xd2d+202-0xdf7))return;DATARMNET42a992465f=node_p->map_cpu;if( +DATARMNET42a992465f>=DATARMNETc6782fed88){DATARMNET68d84e7b98[ +DATARMNET709b59b0e6]++;return;}DATARMNETee9f72f13f=DATARMNET7b2c1bbf38-> +DATARMNET4b4a76b094-DATARMNET7b2c1bbf38->DATARMNET6edbc8b649;byte_diff= +DATARMNET7b2c1bbf38->rx_bytes-DATARMNET7b2c1bbf38->DATARMNETde6a309f37;if( +DATARMNET7b2c1bbf38->DATARMNET8a4e1d5aaa){DATARMNETd8a6375e9c( +DATARMNET7b2c1bbf38,&DATARMNET3c48cbf7e4->DATARMNET73464778dc[ +DATARMNET42a992465f].DATARMNETab5c1e9ad5);rm_err( +"\x53\x48\x53\x5f\x46\x4c\x4f\x57\x3a\x20\x61\x64\x64\x69\x6e\x67\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d\x20" +"\x70\x70\x73\x3a\x20\x25\x6c\x6c\x75\x20\x7c\x20\x61\x76\x67\x5f\x70\x70\x73\x20\x25\x6c\x6c\x75" +,DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38->DATARMNET7c894c2f8f, +DATARMNET7b2c1bbf38->DATARMNET324c1a8f98,DATARMNET7b2c1bbf38-> +DATARMNET253a9fc708);DATARMNET7b2c1bbf38->DATARMNET8a4e1d5aaa=(0xd2d+202-0xdf7); +}if(DATARMNET42a992465f!=DATARMNET7b2c1bbf38->DATARMNET7c894c2f8f){rm_err( +"\x53\x48\x53\x5f\x46\x4c\x4f\x57\x3a\x20\x6d\x6f\x76\x69\x6e\x67\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x74\x6f\x20\x63\x70\x75\x5b\x25\x64\x5d\x20" +"\x70\x70\x73\x3a\x20\x25\x6c\x6c\x75\x20\x7c\x20\x61\x76\x67\x5f\x70\x70\x73\x20\x25\x6c\x6c\x75" +,DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38->DATARMNET7c894c2f8f, +DATARMNET42a992465f,DATARMNET7b2c1bbf38->DATARMNET324c1a8f98,DATARMNET7b2c1bbf38 +->DATARMNET253a9fc708);trace_rmnet_shs_wq_high(DATARMNET394831f22a, +DATARMNET29c0bc0151,DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38-> +DATARMNET7c894c2f8f,DATARMNET42a992465f,(0x16e8+787-0xc0c),DATARMNET7b2c1bbf38, +NULL);DATARMNET9914e9761e(DATARMNET7b2c1bbf38,&DATARMNET3c48cbf7e4-> +DATARMNET73464778dc[DATARMNET42a992465f].DATARMNETab5c1e9ad5); +DATARMNET0349051465(DATARMNET42a992465f);DATARMNET3669e7b703(DATARMNET7b2c1bbf38 +->DATARMNET7c894c2f8f);DATARMNET7b2c1bbf38->DATARMNET7c894c2f8f= +DATARMNET42a992465f;}DATARMNET3c48cbf7e4->DATARMNET73464778dc[ +DATARMNET42a992465f].DATARMNET7fc41d655d+=DATARMNETee9f72f13f; +DATARMNET3c48cbf7e4->DATARMNET73464778dc[DATARMNET42a992465f].rx_bytes+= +byte_diff;DATARMNET3c48cbf7e4->DATARMNET7fc41d655d+=DATARMNETee9f72f13f; +DATARMNET3c48cbf7e4->rx_bytes+=byte_diff;}void DATARMNETdfb8ee742f(u16 +DATARMNET035f475d5c,u16 DATARMNETcfb5dc7296,struct DATARMNET9b44b71ee9*ep){ +struct DATARMNET63d7680df2*node_p;struct DATARMNET6c78e47d24*DATARMNET7b2c1bbf38 +;struct hlist_node*tmp;unsigned long ht_flags;u16 bkt;local_bh_disable(); +spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);hash_for_each_safe( +DATARMNETe603c3a4b3,bkt,tmp,node_p,list){if(!node_p)continue;if(!node_p-> +DATARMNET341ea38662)continue;DATARMNET7b2c1bbf38=node_p->DATARMNET341ea38662;if( +(DATARMNET7b2c1bbf38->DATARMNET6e1a4eaf09==DATARMNET035f475d5c)&&(node_p->dev== +ep->ep)){trace_rmnet_shs_wq_high(DATARMNET394831f22a,DATARMNET45edcec1e4, +DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38->DATARMNET6e1a4eaf09, +DATARMNETcfb5dc7296,(0x16e8+787-0xc0c),DATARMNET7b2c1bbf38,NULL);node_p-> +DATARMNET341ea38662->DATARMNET6e1a4eaf09=DATARMNETcfb5dc7296;}} +spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);local_bh_enable();}static +void DATARMNETc2de347e4d(u32 DATARMNETa3f89581b5,struct DATARMNET6c78e47d24* +DATARMNET7b2c1bbf38){if(DATARMNETa3f89581b5>=DATARMNET3563036124|| +DATARMNET7b2c1bbf38==NULL)return;DATARMNET7b2c1bbf38->DATARMNET61e1ee0e95[ +DATARMNETa3f89581b5]+=(0xd26+209-0xdf6);}static int DATARMNET6f56fe7597(u16 +DATARMNET035f475d5c,u16 DATARMNETcfb5dc7296,struct DATARMNET9b44b71ee9*ep,u32 +DATARMNET4da4612f1e,u32 DATARMNETa3f89581b5){struct DATARMNET63d7680df2*node_p; +struct DATARMNET6c78e47d24*DATARMNET7b2c1bbf38;struct hlist_node*tmp;unsigned +long ht_flags;int rc=(0xd2d+202-0xdf7);u16 bkt;if(!ep){DATARMNET68d84e7b98[ +DATARMNETb8fe2c0e64]++;return(0xd2d+202-0xdf7);}if(DATARMNET035f475d5c>= +DATARMNETc6782fed88||DATARMNETcfb5dc7296>=DATARMNETc6782fed88){ +DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return(0xd2d+202-0xdf7);} +local_bh_disable();spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags); +hash_for_each_safe(DATARMNETe603c3a4b3,bkt,tmp,node_p,list){if(!node_p)continue; +if(!node_p->DATARMNET341ea38662)continue;DATARMNET7b2c1bbf38=node_p-> +DATARMNET341ea38662;if(DATARMNET4da4612f1e!=(0xd2d+202-0xdf7)){if( +DATARMNET7b2c1bbf38->hash!=DATARMNET4da4612f1e)continue;}rm_err( +"\x53\x48\x53\x5f\x48\x54\x3a\x20\x3e\x3e\x20\x20\x73\x75\x67\x67\x20\x63\x70\x75\x20\x25\x64\x20\x7c\x20\x6f\x6c\x64\x20\x63\x70\x75\x20\x25\x64\x20\x7c\x20\x6e\x65\x77\x5f\x63\x70\x75\x20\x25\x64\x20\x7c\x20" +"\x6d\x61\x70\x5f\x63\x70\x75\x20\x3d\x20\x25\x64\x20\x7c\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78" +,DATARMNET7b2c1bbf38->DATARMNET6e1a4eaf09,DATARMNET035f475d5c, +DATARMNETcfb5dc7296,node_p->map_cpu,DATARMNET4da4612f1e);if((DATARMNET7b2c1bbf38 +->DATARMNET6e1a4eaf09==DATARMNET035f475d5c)&&(node_p->dev==ep->ep)){ +trace_rmnet_shs_wq_high(DATARMNET394831f22a,DATARMNET45edcec1e4, +DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38->DATARMNET6e1a4eaf09, +DATARMNETcfb5dc7296,(0x16e8+787-0xc0c),DATARMNET7b2c1bbf38,NULL);node_p-> +DATARMNET341ea38662->DATARMNET6e1a4eaf09=DATARMNETcfb5dc7296;DATARMNETc2de347e4d +(DATARMNETa3f89581b5,DATARMNET7b2c1bbf38);if(DATARMNET4da4612f1e){rm_err( +"\x53\x48\x53\x5f\x43\x48\x4e\x47\x3a\x20\x6d\x6f\x76\x69\x6e\x67\x20\x73\x69\x6e\x67\x6c\x65\x20\x66\x6c\x6f\x77\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20" +"\x73\x75\x67\x67\x5f\x63\x70\x75\x20\x63\x68\x61\x6e\x67\x65\x64\x20\x66\x72\x6f\x6d\x20\x25\x64\x20\x74\x6f\x20\x25\x64" +,DATARMNET7b2c1bbf38->hash,DATARMNET035f475d5c,node_p->DATARMNET341ea38662-> +DATARMNET6e1a4eaf09);rc=(0xd26+209-0xdf6);break;}rm_err( +"\x53\x48\x53\x5f\x43\x48\x4e\x47\x3a\x20\x6d\x6f\x76\x69\x6e\x67\x20\x61\x6c\x6c\x20\x66\x6c\x6f\x77\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20" +"\x73\x75\x67\x67\x5f\x63\x70\x75\x20\x63\x68\x61\x6e\x67\x65\x64\x20\x66\x72\x6f\x6d\x20\x25\x64\x20\x74\x6f\x20\x25\x64" +,DATARMNET7b2c1bbf38->hash,DATARMNET035f475d5c,node_p->DATARMNET341ea38662-> +DATARMNET6e1a4eaf09);rc|=(0xd26+209-0xdf6);}}spin_unlock_irqrestore(& +DATARMNET3764d083f0,ht_flags);local_bh_enable();return rc;}u64 +DATARMNETd406e89a85(u32 DATARMNETfaedbb66a9){int DATARMNET42a992465f;u64 +DATARMNET5a8059a7ce=(0xd2d+202-0xdf7);struct DATARMNETc8fdbf9c85* +DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;for(DATARMNET42a992465f= +(0xd2d+202-0xdf7);DATARMNET42a992465fDATARMNET73464778dc[DATARMNET42a992465f]. +DATARMNET324c1a8f98>DATARMNET5a8059a7ce)){DATARMNET5a8059a7ce= +DATARMNET7bea4a06a6->DATARMNET73464778dc[DATARMNET42a992465f]. +DATARMNET324c1a8f98;}}return DATARMNET5a8059a7ce;}int DATARMNET362c14e98b(u16 +DATARMNETfaedbb66a9){struct DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6=& +DATARMNET6cdd58e74c;struct DATARMNET228056d4b7*DATARMNET65385af8a0;u64 +DATARMNET609049f7b7=U64_MAX;u32 DATARMNET84d36cfd28=U32_MAX;int +DATARMNETbd864aa442=-(0xd26+209-0xdf6);int DATARMNETd415a9f9bd=- +(0xd26+209-0xdf6);int DATARMNETb6773d2790=-(0xd26+209-0xdf6);int +DATARMNET42a992465f=(0xd2d+202-0xdf7);u16 DATARMNETdebcca6b26;for( +DATARMNET42a992465f=DATARMNETc6782fed88-(0xd26+209-0xdf6);DATARMNET42a992465f>= +(0xd2d+202-0xdf7);DATARMNET42a992465f--){DATARMNETdebcca6b26=(((0xd26+209-0xdf6) +< +DATARMNET73464778dc[DATARMNET42a992465f];trace_rmnet_shs_wq_low( +DATARMNET39a68a0eba,DATARMNET55cd50e666,DATARMNET42a992465f,DATARMNET65385af8a0 +->DATARMNET324c1a8f98,DATARMNET609049f7b7,(0xd2d+202-0xdf7),NULL,NULL);if( +DATARMNET65385af8a0->flows==(0xd2d+202-0xdf7)){DATARMNETb6773d2790= +DATARMNET42a992465f;break;}if(DATARMNET65385af8a0->DATARMNET324c1a8f98== +(0xd2d+202-0xdf7)&&DATARMNET65385af8a0->flowsflows;DATARMNETd415a9f9bd= +DATARMNET42a992465f;}if(DATARMNET65385af8a0->DATARMNET324c1a8f98<= +DATARMNET609049f7b7){DATARMNET609049f7b7=DATARMNET65385af8a0-> +DATARMNET324c1a8f98;DATARMNETbd864aa442=DATARMNET42a992465f;}}if( +DATARMNETb6773d2790>=(0xd2d+202-0xdf7))DATARMNETbd864aa442=DATARMNETb6773d2790; +else if(DATARMNETd415a9f9bd>=(0xd2d+202-0xdf7))DATARMNETbd864aa442= +DATARMNETd415a9f9bd;return DATARMNETbd864aa442;}u16 DATARMNET3c1fc10379(u16 +DATARMNET7c894c2f8f,struct DATARMNET9b44b71ee9*ep){struct DATARMNETc8fdbf9c85* +DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;struct DATARMNET228056d4b7* +DATARMNET373ff1422a,*DATARMNETd8755a1440;u64 DATARMNETf115ef7639, +DATARMNET64bef917cb,DATARMNET85bfb4b2ca;u64 DATARMNET264b01f4d5, +DATARMNET53ce143c7e=(0xd2d+202-0xdf7);u16 DATARMNETd668725d64= +DATARMNET7c894c2f8f;u16 DATARMNET42a992465f;u8 DATARMNETca535905d7;u32 +DATARMNETa7176e3ad8=(0xd2d+202-0xdf7);if(!ep){DATARMNET68d84e7b98[ +DATARMNETb8fe2c0e64]++;return DATARMNETd668725d64;}DATARMNETd8755a1440=& +DATARMNET7bea4a06a6->DATARMNET73464778dc[DATARMNET7c894c2f8f]; +DATARMNET85bfb4b2ca=DATARMNETd8755a1440->DATARMNET324c1a8f98;DATARMNET264b01f4d5 +=DATARMNET713717107f[DATARMNET7c894c2f8f];DATARMNET53ce143c7e= +DATARMNET4793ed48af[DATARMNET7c894c2f8f];if(!DATARMNET362b15f941( +DATARMNET7c894c2f8f)&&(DATARMNET85bfb4b2ca>DATARMNET53ce143c7e)){return +DATARMNETd668725d64;}if(DATARMNET0997c5650d[DATARMNET7c894c2f8f]. +DATARMNET1e1f197118)return DATARMNET7c894c2f8f;for(DATARMNET42a992465f= +(0xd2d+202-0xdf7);DATARMNET42a992465f +DATARMNET9fb369ce5f&~DATARMNETecc0627c70.DATARMNETba3f7a11ef));if(( +DATARMNET42a992465f==DATARMNET7c894c2f8f)||(!DATARMNETca535905d7)||!cpu_online( +DATARMNET42a992465f))continue;DATARMNET264b01f4d5=DATARMNET713717107f[ +DATARMNET42a992465f];DATARMNET53ce143c7e=DATARMNET4793ed48af[DATARMNET42a992465f +];DATARMNET373ff1422a=&DATARMNET7bea4a06a6->DATARMNET73464778dc[ +DATARMNET42a992465f];DATARMNETf115ef7639=DATARMNET373ff1422a-> +DATARMNET324c1a8f98;DATARMNET64bef917cb=DATARMNETf115ef7639+DATARMNET85bfb4b2ca; +trace_rmnet_shs_wq_low(DATARMNET39a68a0eba,DATARMNETcd209744bd, +DATARMNET7c894c2f8f,DATARMNET42a992465f,DATARMNET64bef917cb,DATARMNETf115ef7639, +NULL,NULL);if((DATARMNET64bef917cb>DATARMNET53ce143c7e)&&(DATARMNET64bef917cb< +DATARMNET264b01f4d5)&&DATARMNETf115ef7639<=DATARMNETa7176e3ad8){ +DATARMNETd668725d64=DATARMNET42a992465f;DATARMNETa7176e3ad8=DATARMNETf115ef7639; +}}trace_rmnet_shs_wq_high(DATARMNET39a68a0eba,DATARMNETcd209744bd, +DATARMNET7c894c2f8f,DATARMNETd668725d64,DATARMNET85bfb4b2ca,DATARMNET7bea4a06a6 +->DATARMNET73464778dc[DATARMNETd668725d64].DATARMNET324c1a8f98,NULL,NULL);return + DATARMNETd668725d64;}void DATARMNET466244e5d6(u16 DATARMNETc790ff30fc){struct +DATARMNET9b44b71ee9*ep=NULL;u16 DATARMNETcfb5dc7296;list_for_each_entry(ep,& +DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue; +DATARMNETcfb5dc7296=DATARMNET3c1fc10379(DATARMNETc790ff30fc,ep);if( +DATARMNETcfb5dc7296!=DATARMNETc790ff30fc)DATARMNETdfb8ee742f(DATARMNETc790ff30fc +,DATARMNETcfb5dc7296,ep);}}int DATARMNET769bbe36c6(u16 DATARMNET7c894c2f8f,u16 +DATARMNET208ea67e1d,struct DATARMNET9b44b71ee9*ep){u16 DATARMNET553df5e12a= +(0xd2d+202-0xdf7);if(!ep){DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;return +(0xd2d+202-0xdf7);}if(DATARMNET7c894c2f8f>=DATARMNETc6782fed88|| +DATARMNET208ea67e1d>=DATARMNETc6782fed88){DATARMNET68d84e7b98[ +DATARMNET54b67b8a75]++;return(0xd2d+202-0xdf7);}DATARMNET553df5e12a=( +(0xd26+209-0xdf6)<DATARMNET9fb369ce5f&~ +DATARMNETecc0627c70.DATARMNETba3f7a11ef;rm_err( +"\x53\x48\x53\x5f\x4d\x41\x53\x4b\x3a\x20\x20\x63\x75\x72\x20\x63\x70\x75\x20\x5b\x25\x64\x5d\x20\x7c\x20\x64\x65\x73\x74\x5f\x63\x70\x75\x20\x5b\x25\x64\x5d\x20\x7c\x20" +"\x65\x70\x5f\x72\x70\x73\x5f\x6d\x61\x73\x6b\x20\x3d\x20\x30\x78\x25\x78\x20\x7c\x20\x63\x70\x75\x5f\x6f\x6e\x6c\x69\x6e\x65\x28\x64\x65\x73\x74\x29\x20\x3d\x20\x25\x64" +"\x63\x70\x75\x5f\x69\x6e\x5f\x72\x70\x73\x5f\x6d\x61\x73\x6b\x20\x3d\x20\x25\x64" +,DATARMNET7c894c2f8f,DATARMNET208ea67e1d,ep->DATARMNET9fb369ce5f,cpu_online( +DATARMNET208ea67e1d),DATARMNET553df5e12a);if(DATARMNET7c894c2f8f== +DATARMNET208ea67e1d||!cpu_online(DATARMNET208ea67e1d)||!DATARMNET553df5e12a){ +return(0xd2d+202-0xdf7);}return(0xd26+209-0xdf6);}int DATARMNET5f72606f6f(u16 +DATARMNETc790ff30fc,u16 DATARMNET208ea67e1d,u32 DATARMNET4da4612f1e,u32 +DATARMNETa3f89581b5){unsigned long flags;struct DATARMNET9b44b71ee9*ep;if( +DATARMNETc790ff30fc>=DATARMNETc6782fed88||DATARMNET208ea67e1d>= +DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return +(0xd2d+202-0xdf7);}local_bh_disable();spin_lock_irqsave(&DATARMNETec2a4f5211, +flags);list_for_each_entry(ep,&DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep-> +DATARMNET4a4e6f66b5)continue;if(!DATARMNET769bbe36c6(DATARMNETc790ff30fc, +DATARMNET208ea67e1d,ep)){rm_err( +"\x53\x48\x53\x5f\x46\x44\x45\x53\x43\x3a\x20\x3e\x3e\x20\x43\x61\x6e\x6e\x6f\x74\x20\x6d\x6f\x76\x65\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x6f\x6e\x20\x65\x70" +"\x20\x66\x72\x6f\x6d\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x74\x6f\x20\x63\x70\x75\x5b\x25\x64\x5d" +,DATARMNET4da4612f1e,DATARMNETc790ff30fc,DATARMNET208ea67e1d);continue;}if( +DATARMNET6f56fe7597(DATARMNETc790ff30fc,DATARMNET208ea67e1d,ep, +DATARMNET4da4612f1e,DATARMNETa3f89581b5)){rm_err( +"\x53\x48\x53\x5f\x46\x44\x45\x53\x43\x3a\x20\x3e\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x61\x73\x20\x73\x75\x67\x67\x65\x73\x74\x65\x64\x20\x74\x6f" +"\x20\x6d\x6f\x76\x65\x20\x66\x72\x6f\x6d\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x74\x6f\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x73\x75\x67\x67\x5f\x74\x79\x70\x65\x20\x5b\x25\x64\x5d" +,DATARMNET4da4612f1e,DATARMNETc790ff30fc,DATARMNET208ea67e1d,DATARMNETa3f89581b5 +);spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);local_bh_enable();return +(0xd26+209-0xdf6);}}spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags); +local_bh_enable();return(0xd2d+202-0xdf7);}int DATARMNETf85599b9d8(u32 +DATARMNET8c11bd9466,u8 DATARMNET87636d0152){struct DATARMNET63d7680df2*node_p; +struct DATARMNET6c78e47d24*DATARMNET7b2c1bbf38;unsigned long ht_flags;u16 bkt; +spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);hash_for_each( +DATARMNETe603c3a4b3,bkt,node_p,list){if(!node_p)continue;if(!node_p-> +DATARMNET341ea38662)continue;DATARMNET7b2c1bbf38=node_p->DATARMNET341ea38662;if( +DATARMNET7b2c1bbf38->hash!=DATARMNET8c11bd9466)continue;rm_err( +"\x53\x48\x53\x5f\x48\x54\x3a\x20\x3e\x3e\x20\x73\x65\x67\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x73\x65\x67\x73\x5f\x70\x65\x72\x5f\x73\x6b\x62\x20\x25\x75" +,DATARMNET8c11bd9466,DATARMNET87636d0152);trace_rmnet_shs_wq_high( +DATARMNET394831f22a,DATARMNET213a62da0d,DATARMNET7b2c1bbf38->hash, +DATARMNET87636d0152,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNET7b2c1bbf38, +NULL);node_p->DATARMNET341ea38662->DATARMNET87636d0152=DATARMNET87636d0152; +spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);return(0xd26+209-0xdf6);} +spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);rm_err( +"\x53\x48\x53\x5f\x48\x54\x3a\x20\x3e\x3e\x20\x73\x65\x67\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x73\x65\x67\x73\x5f\x70\x65\x72\x5f\x73\x6b\x62\x20\x25\x75\x20\x6e\x6f\x74\x20\x73\x65\x74\x20\x2d\x20\x68\x61\x73\x68\x20\x6e\x6f\x74\x20\x66\x6f\x75\x6e\x64" +,DATARMNET8c11bd9466,DATARMNET87636d0152);return(0xd2d+202-0xdf7);}void +DATARMNET5e1aaed12b(void){struct DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6=& +DATARMNET6cdd58e74c;struct DATARMNET228056d4b7*DATARMNETf632b170b1;struct +DATARMNET6c78e47d24*DATARMNETd2a694d52a;int flows,i;u16 DATARMNET42a992465f= +(0xd2d+202-0xdf7);if(!DATARMNETdfb4d931bc)return;for(DATARMNET42a992465f= +(0xd2d+202-0xdf7);DATARMNET42a992465fDATARMNET73464778dc[ +DATARMNET42a992465f];flows=DATARMNET7bea4a06a6->DATARMNET73464778dc[ +DATARMNET42a992465f].flows;rm_err( +"\x53\x48\x53\x5f\x43\x50\x55\x3a\x20\x63\x70\x75\x5b\x25\x64\x5d\x3a\x20\x66\x6c\x6f\x77\x73\x3d\x25\x64\x20\x70\x70\x73\x3d\x25\x6c\x6c\x75\x20\x62\x70\x73\x3d\x25\x6c\x6c\x75\x20" +"\x71\x68\x65\x61\x64\x5f\x64\x69\x66\x66\x20\x25\x75\x20\x71\x68\x65\x61\x64\x5f\x74\x6f\x74\x61\x6c\x20\x3d\x20\x25\x75\x20\x71\x68\x65\x61\x64\x5f\x73\x74\x61\x72\x74\x20\x3d\x20\x25\x75\x20" +"\x71\x68\x65\x61\x64\x20\x3d\x20\x25\x75\x20\x71\x68\x65\x61\x64\x5f\x6c\x61\x73\x74\x20\x3d\x20\x25\x75\x20" +,DATARMNET42a992465f,flows,DATARMNETf632b170b1->DATARMNET324c1a8f98, +DATARMNETf632b170b1->DATARMNETbb80fccd97,DATARMNETf632b170b1-> +DATARMNET69770f8ef7,DATARMNETf632b170b1->DATARMNET17380ba0f8,DATARMNETf632b170b1 +->DATARMNET14b0d18481,DATARMNETf632b170b1->DATARMNETae196235f2, +DATARMNETf632b170b1->DATARMNET8b9956a3f9);list_for_each_entry( +DATARMNETd2a694d52a,&DATARMNET9825511866,DATARMNET6de26f0feb){if( +DATARMNETd2a694d52a->DATARMNET0dc393a345==(0xd2d+202-0xdf7))continue;if( +DATARMNETd2a694d52a->DATARMNET63b1a086d5){if(DATARMNETd2a694d52a-> +DATARMNET7c894c2f8f==DATARMNET42a992465f)rm_err( +"\x53\x48\x53\x5f\x43\x50\x55\x3a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20" +"\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x61\x76\x67\x5f\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x72\x78\x5f\x62\x70\x73\x20\x25\x6c\x6c\x75\x20" +,DATARMNETd2a694d52a->hash,DATARMNETd2a694d52a->DATARMNET324c1a8f98, +DATARMNETd2a694d52a->DATARMNET253a9fc708,DATARMNETd2a694d52a-> +DATARMNETbb80fccd97);}}for(i=(0xd2d+202-0xdf7);i<(0xd18+223-0xdf4)-flows;i++){ +rm_err("\x25\x73", +"\x53\x48\x53\x5f\x43\x50\x55\x3a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3e\x20"); +}}}void DATARMNET468586cca6(struct list_head*DATARMNETb436c3f30b){struct +DATARMNET09a412b1c6*DATARMNET4238158b2a;if(!DATARMNETdfb4d931bc)return;if(! +DATARMNETb436c3f30b){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x44\x4d\x41\x3a\x20\x47\x6f\x6c\x64\x20\x46\x6c\x6f\x77\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x44\x4d\x41\x3a\x20\x4c\x69\x73\x74\x20\x6f\x66\x20\x73\x6f\x72\x74\x65\x64\x20\x67\x6f\x6c\x64\x20\x66\x6c\x6f\x77\x73\x3a" +);list_for_each_entry(DATARMNET4238158b2a,DATARMNETb436c3f30b, +DATARMNETd502c0412a){rm_err( +"\x53\x48\x53\x5f\x47\x44\x4d\x41\x3a\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d" +,DATARMNET4238158b2a->hash,DATARMNET4238158b2a->DATARMNET324c1a8f98, +DATARMNET4238158b2a->DATARMNET42a992465f);}}void DATARMNET7792d4f4ad(struct +list_head*DATARMNETe46ae760db,struct list_head*DATARMNETb436c3f30b,struct +list_head*DATARMNETf0fb155a9c,struct list_head*DATARMNET3208cd0982){if(! +DATARMNETe46ae760db||!DATARMNETb436c3f30b||!DATARMNETf0fb155a9c||! +DATARMNET3208cd0982){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;} +list_sort(NULL,DATARMNETe46ae760db,&DATARMNET85af86a36d);list_sort(NULL, +DATARMNETb436c3f30b,&DATARMNETd5c15f1ff3);list_sort(NULL,DATARMNET3208cd0982,& +DATARMNET3c489db64a);DATARMNET5157210c44(DATARMNETe46ae760db); +DATARMNET0e273eab79(DATARMNETb436c3f30b);DATARMNETe15af8eb6d(DATARMNETf0fb155a9c +);DATARMNET78f3a0ca4f(DATARMNET3208cd0982);DATARMNET78666f33a1(); +DATARMNET5945236cd3(DATARMNET7afb49ee3f);trace_rmnet_shs_wq_high( +DATARMNETa0ecb9daac,DATARMNET1fc50aac59,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNET95736008d9(void) +{struct DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;struct +DATARMNET228056d4b7*DATARMNET373ff1422a;u64 DATARMNETc7c10881f4, +DATARMNET4a7d30059b,DATARMNETed01f76643;u64 DATARMNET629c75e1fa, +DATARMNET253a9fc708;u64 DATARMNET264b01f4d5,DATARMNET53ce143c7e= +(0xd2d+202-0xdf7);u16 DATARMNET42a992465f,DATARMNETab4cf0ad84, +DATARMNET0c72af011b;int flows;for(DATARMNET42a992465f=(0xd2d+202-0xdf7); +DATARMNET42a992465fDATARMNET73464778dc[DATARMNET42a992465f].flows;if(flows<= +(0xd2d+202-0xdf7))continue;DATARMNET373ff1422a=&DATARMNET7bea4a06a6-> +DATARMNET73464778dc[DATARMNET42a992465f];DATARMNETc7c10881f4=DATARMNET373ff1422a +->DATARMNET324c1a8f98;DATARMNET4a7d30059b=DATARMNET373ff1422a-> +DATARMNET27c3925eff;DATARMNETed01f76643=DATARMNET373ff1422a->DATARMNET253a9fc708 +;DATARMNET264b01f4d5=DATARMNET713717107f[DATARMNET42a992465f]; +DATARMNET53ce143c7e=DATARMNET4793ed48af[DATARMNET42a992465f];if( +DATARMNET362b15f941(DATARMNET42a992465f)){DATARMNETab4cf0ad84= +DATARMNETcab56af6d5;DATARMNET0c72af011b=(0xeb7+698-0x110d)-DATARMNETcab56af6d5;} +else{DATARMNET0c72af011b=DATARMNETcab56af6d5;DATARMNETab4cf0ad84= +(0xeb7+698-0x110d)-DATARMNETcab56af6d5;}DATARMNET629c75e1fa=(DATARMNET4a7d30059b ++DATARMNETed01f76643)/(0xd1f+216-0xdf5);DATARMNET253a9fc708=(( +DATARMNETab4cf0ad84*DATARMNETc7c10881f4)+(DATARMNET0c72af011b* +DATARMNET629c75e1fa))/(DATARMNETab4cf0ad84+DATARMNET0c72af011b); +DATARMNET373ff1422a->DATARMNET253a9fc708=DATARMNET253a9fc708; +trace_rmnet_shs_wq_high(DATARMNET39a68a0eba,DATARMNETde65aa00a6, +DATARMNET42a992465f,DATARMNETc7c10881f4,DATARMNET4a7d30059b,DATARMNET253a9fc708, +NULL,NULL);if((DATARMNET253a9fc708>DATARMNET264b01f4d5)||(((0xd26+209-0xdf6)<< +DATARMNET42a992465f)&DATARMNETecc0627c70.DATARMNETba3f7a11ef)||!cpu_online( +DATARMNET42a992465f)||((DATARMNET253a9fc708 +DATARMNET9fb369ce5f;DATARMNETc312f6517d=ep->DATARMNET24a91635db; +DATARMNETc35b40fa7b=ep->DATARMNET1a1d89d417;memset(ep->DATARMNET5af04d0405,- +(0xd26+209-0xdf6),sizeof(*ep->DATARMNET5af04d0405)*DATARMNETc6782fed88);memset( +ep->DATARMNET7167e10d99,-(0xd26+209-0xdf6),sizeof(*ep->DATARMNET7167e10d99)* +DATARMNETc6782fed88);do{DATARMNET9025861a27=DATARMNET362c14e98b( +DATARMNETc312f6517d&~DATARMNETecc0627c70.DATARMNETba3f7a11ef);if( +DATARMNET9025861a27>=(0xd2d+202-0xdf7)){ep->DATARMNET5af04d0405[ +DATARMNETffd83bb362]=DATARMNET9025861a27;DATARMNETc312f6517d=DATARMNETc312f6517d +&~((0xd26+209-0xdf6)<DATARMNET5af04d0405[ +(0xd2d+202-0xdf7)],ep->DATARMNET5af04d0405[(0xd26+209-0xdf6)],ep-> +DATARMNET5af04d0405[(0xd1f+216-0xdf5)],ep->DATARMNETd7a83774f8,ep,NULL);do{ +DATARMNETef87f9e251=DATARMNET362c14e98b(DATARMNETc35b40fa7b&~DATARMNETecc0627c70 +.DATARMNETba3f7a11ef);if(DATARMNETef87f9e251>=(0xd2d+202-0xdf7)){ep-> +DATARMNET7167e10d99[DATARMNET24f6ce5dc0]=DATARMNETef87f9e251;DATARMNETc35b40fa7b +=DATARMNETc35b40fa7b&~((0xd26+209-0xdf6)<DATARMNETd7a83774f8=DATARMNETffd83bb362;ep->DATARMNET847276e5af= +DATARMNET24f6ce5dc0;ep->DATARMNET6bda8fe27e=(0xd2d+202-0xdf7);ep-> +DATARMNET121a654efd=(0xd2d+202-0xdf7);trace_rmnet_shs_wq_low(DATARMNET39a68a0eba +,DATARMNETffec99a10f,ep->DATARMNET7167e10d99[(0xd2d+202-0xdf7)],ep-> +DATARMNET7167e10d99[(0xd26+209-0xdf6)],ep->DATARMNET7167e10d99[(0xd1f+216-0xdf5) +],ep->DATARMNET847276e5af,ep,NULL);return;}void DATARMNET0a6fb12cb2(void){struct + DATARMNET9b44b71ee9*ep=NULL;list_for_each_entry(ep,&DATARMNET30a3e83974, +DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;DATARMNETe00453a3e4(ep +);}}static int DATARMNET1154e4fac6(ktime_t time,int DATARMNET64bb8a8f57){int ret +=false;if(time>DATARMNETa804c0b904)ret=true;else if(DATARMNET64bb8a8f57> +DATARMNET1c2d76f636&&time>DATARMNET2922c89d50)ret=true;else if( +DATARMNET64bb8a8f57>DATARMNET7a815512d3&&time>DATARMNET270b564b55)ret=true; +return ret;}void DATARMNET39391a8bc5(u8 DATARMNETcd94e0d3c7){struct +DATARMNET63d7680df2*node_p=NULL;ktime_t DATARMNETf48008e7b6;unsigned long +ht_flags;struct DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;struct list_head* +DATARMNET7b34b7b5be=NULL,*next=NULL;rcu_read_lock();local_bh_disable(); +spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);list_for_each_safe( +DATARMNET7b34b7b5be,next,&DATARMNET9825511866){DATARMNETd2a694d52a=list_entry( +DATARMNET7b34b7b5be,struct DATARMNET6c78e47d24,DATARMNET6de26f0feb);if( +DATARMNETd2a694d52a->DATARMNET63b1a086d5==NULL)continue;node_p= +DATARMNETd2a694d52a->DATARMNET63b1a086d5;DATARMNETf48008e7b6=DATARMNET36cfa76181 +(DATARMNETd2a694d52a->DATARMNET42ceaf5cc2);if((DATARMNET1154e4fac6( +DATARMNETf48008e7b6,DATARMNETecc0627c70.DATARMNET64bb8a8f57)&&((node_p-> +DATARMNET85c698ec34&&!rcu_dereference(rmnet_shs_switch))||!node_p-> +DATARMNET85c698ec34))||DATARMNETcd94e0d3c7){trace_rmnet_shs_wq_low( +DATARMNET394831f22a,DATARMNET5e2c5adaae,node_p->hash,DATARMNETf48008e7b6, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),node_p,DATARMNETd2a694d52a); +DATARMNET23c7ddd780(node_p,DATARMNET5b5927fd7e);DATARMNET3669e7b703( +DATARMNETd2a694d52a->DATARMNET7c894c2f8f);if(node_p){DATARMNETde8ee16f92(node_p) +;hash_del_rcu(&node_p->list);kfree(node_p);}rm_err( +"\x53\x48\x53\x5f\x46\x4c\x4f\x57\x3a\x20\x72\x65\x6d\x6f\x76\x69\x6e\x67\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d\x20" +"\x70\x70\x73\x3a\x20\x25\x6c\x6c\x75\x20\x61\x76\x67\x5f\x70\x70\x73\x3a\x20\x25\x6c\x6c\x75" +,DATARMNETd2a694d52a->hash,DATARMNETd2a694d52a->DATARMNET7c894c2f8f, +DATARMNETd2a694d52a->DATARMNET324c1a8f98,DATARMNETd2a694d52a-> +DATARMNET253a9fc708);DATARMNETb4a6870b3b(DATARMNETd2a694d52a);if( +DATARMNETd2a694d52a->DATARMNET0bfc2b2c85==(0xd2d+202-0xdf7)||DATARMNETcd94e0d3c7 +){DATARMNET2fe780019f(DATARMNETd2a694d52a);kfree(DATARMNETd2a694d52a);}else{ +DATARMNETa6e92c3315(DATARMNETd2a694d52a);}DATARMNETecc0627c70. +DATARMNET64bb8a8f57--;}}spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags); +local_bh_enable();rcu_read_unlock();}void DATARMNETe69c918dc8(struct +DATARMNET9b44b71ee9*ep){struct rps_map*map;u8 len=(0xd2d+202-0xdf7);if(!ep||!ep +->ep){DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;return;}rcu_read_lock();if(!ep +->ep){pr_info( +"\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x73\x74\x61\x74\x65\x20\x25\x70" +,ep->ep);DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;return;}map=rcu_dereference( +ep->ep->_rx->rps_map);ep->DATARMNET9fb369ce5f=(0xd2d+202-0xdf7);if(map!=NULL){ +for(len=(0xd2d+202-0xdf7);lenlen;len++)ep->DATARMNET9fb369ce5f|=( +(0xd26+209-0xdf6)<cpus[len]);}rcu_read_unlock();ep->DATARMNET24a91635db=ep +->DATARMNET9fb369ce5f&(0xeb7+1101-0x12f5);ep->DATARMNET1a1d89d417=ep-> +DATARMNET9fb369ce5f&(0xbf7+4405-0x1c3c);}void DATARMNETd6ee05f1b4(struct +net_device*dev){struct DATARMNET9b44b71ee9*ep=NULL;struct DATARMNET9b44b71ee9* +tmp=NULL;unsigned long flags;if(!dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++ +;return;}spin_lock_irqsave(&DATARMNETec2a4f5211,flags);list_for_each_entry_safe( +ep,tmp,&DATARMNET30a3e83974,DATARMNET0763436b8d){if(ep->ep==dev){ep-> +DATARMNET4a4e6f66b5=(0xd2d+202-0xdf7);DATARMNETf7d317ed55(ep);kfree(ep);break;}} +spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);}void DATARMNET7492293980( +struct net_device*dev){struct DATARMNET9b44b71ee9*ep=NULL;unsigned long flags;if +(!dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;return;}spin_lock_irqsave(& +DATARMNETec2a4f5211,flags);ep=kzalloc(sizeof(*ep),GFP_ATOMIC);if(!ep){ +DATARMNET68d84e7b98[DATARMNET40ceff078e]++;spin_unlock_irqrestore(& +DATARMNETec2a4f5211,flags);return;}ep->ep=dev;ep->DATARMNET4a4e6f66b5= +(0xd26+209-0xdf6);INIT_LIST_HEAD(&ep->DATARMNET0763436b8d);DATARMNETe69c918dc8( +ep);DATARMNET4095253347(ep);spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);} +void DATARMNET039ac6d55d(void){struct DATARMNET9b44b71ee9*ep=NULL; +list_for_each_entry(ep,&DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep-> +DATARMNET4a4e6f66b5)continue;DATARMNETe69c918dc8(ep);ep->DATARMNET257fc4b2d4= +(0xd2d+202-0xdf7);ep->DATARMNET4eb77c78e6=(0xd2d+202-0xdf7);}}noinline void +DATARMNETedc898218c(void){int cpu,DATARMNETc790ff30fc;int DATARMNET421230d879; +struct DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;for(cpu=(0xd2d+202-0xdf7); +cpuDATARMNET0dc393a345==(0xd2d+202-0xdf7))continue;if( +DATARMNETd2a694d52a->DATARMNET253a9fc708>DATARMNET832dcfb5f8&& +DATARMNETd2a694d52a->DATARMNET4b4a76b094>DATARMNET59f7cb903f)if( +DATARMNETd2a694d52a->DATARMNET7c894c2f8fDATARMNET7c894c2f8f;DATARMNET2d482e7d9f +[DATARMNET421230d879]++;}DATARMNETc790ff30fc=DATARMNETd2a694d52a-> +DATARMNET7c894c2f8f;if(DATARMNETc790ff30fc>=DATARMNETc6782fed88|| +DATARMNETc790ff30fc<(0xd2d+202-0xdf7)){continue;}if(DATARMNETd2a694d52a-> +DATARMNET87636d0152>(0xd2d+202-0xdf7)){DATARMNET0997c5650d[DATARMNETc790ff30fc]. +seg++;}}}void DATARMNETcd6e26f0ad(void){struct timespec64 time;struct +DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;(void)ktime_get_boottime_ts64(&time +);DATARMNETb3a4036d6d=DATARMNETe6671dbf38(time.tv_sec)+time.tv_nsec; +DATARMNET039ac6d55d();DATARMNETe46c480d71();list_for_each_entry( +DATARMNETd2a694d52a,&DATARMNET9825511866,DATARMNET6de26f0feb){if( +DATARMNETd2a694d52a->DATARMNET0dc393a345==(0xd2d+202-0xdf7))continue;if( +DATARMNETd2a694d52a->DATARMNET63b1a086d5){DATARMNET9a7769cf21( +DATARMNETd2a694d52a);DATARMNET5b2ed86112(DATARMNETd2a694d52a);if( +DATARMNETc252c204a8){if(DATARMNETd2a694d52a->DATARMNET63b1a086d5-> +DATARMNETa1099c74fe==(0xd2d+202-0xdf7)){DATARMNET6f4b0915d3(DATARMNETd2a694d52a, +&DATARMNET3208cd0982);}if(!DATARMNET362b15f941(DATARMNETd2a694d52a-> +DATARMNET7c894c2f8f)){DATARMNET24e4475345(DATARMNETd2a694d52a,& +DATARMNET6c23f11e81);}if(DATARMNETd2a694d52a->DATARMNET1e9d25d9ff==IPPROTO_TCP){ +DATARMNET28a80d526e(DATARMNETd2a694d52a,&DATARMNETf91b305f4e);}}else{ +DATARMNETd2a694d52a->DATARMNET63b1a086d5->DATARMNET341ea38662-> +DATARMNET87636d0152=(0xd2d+202-0xdf7);}}}DATARMNET617b443145(); +DATARMNET0ce3f33785();DATARMNET8b2fb5dc3c();if(DATARMNETc252c204a8){rm_err( +"\x25\x73", +"\x53\x48\x53\x5f\x55\x50\x44\x41\x54\x45\x3a\x20\x55\x73\x65\x72\x73\x70\x61\x63\x65\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64\x2c\x20\x72\x65\x6c\x79\x69\x6e\x67\x20\x6f\x6e\x20\x75\x73\x65\x72\x73\x70\x61\x63\x65\x20\x65\x76\x61\x6c\x75\x61\x74\x69\x6f\x6e" +);DATARMNET7792d4f4ad(&DATARMNETe46ae760db,&DATARMNET6c23f11e81,& +DATARMNETf91b305f4e,&DATARMNET3208cd0982);DATARMNETa1b141715b(& +DATARMNET6c23f11e81);DATARMNET3af54cd726(&DATARMNETf91b305f4e); +DATARMNETb177316a15(&DATARMNETe46ae760db);DATARMNETcc489fbbad(& +DATARMNET3208cd0982);}else{rm_err("\x25\x73", +"\x53\x48\x53\x5f\x55\x50\x44\x41\x54\x45\x3a\x20\x73\x68\x73\x20\x75\x73\x65\x72\x73\x70\x61\x63\x65\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64\x2c\x20\x75\x73\x69\x6e\x67\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x6c\x6f\x67\x69\x63" +);DATARMNET95736008d9();}DATARMNET0a6fb12cb2();DATARMNETedc898218c();}void +DATARMNETb4b5fc9686(struct work_struct*DATARMNET33110a3ff5){unsigned long flags; +unsigned long DATARMNET28085cfd14;trace_rmnet_shs_wq_high(DATARMNET4fe8e8c1a9, +DATARMNET5a417740cb,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),NULL,NULL);spin_lock_irqsave(&DATARMNETec2a4f5211,flags); +DATARMNETcd6e26f0ad();spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags); +DATARMNET39391a8bc5(DATARMNET53bef3c026);DATARMNET5e1aaed12b(); +DATARMNET28085cfd14=msecs_to_jiffies(DATARMNET1fc3ad67fd);queue_delayed_work( +DATARMNETf141197982,&DATARMNET9dc7755be5->DATARMNET1150269da2, +DATARMNET28085cfd14);trace_rmnet_shs_wq_high(DATARMNET4fe8e8c1a9, +DATARMNET848d2ddfa7,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNET5fb4151598(void){struct +DATARMNET9b44b71ee9*ep=NULL;struct list_head*DATARMNET7b34b7b5be=NULL,*next=NULL +;list_for_each_safe(DATARMNET7b34b7b5be,next,&DATARMNET30a3e83974){ep=list_entry +(DATARMNET7b34b7b5be,struct DATARMNET9b44b71ee9,DATARMNET0763436b8d); +trace_rmnet_shs_wq_high(DATARMNET5e796836fb,DATARMNET1ee5d0565d, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),ep, +NULL);DATARMNETf7d317ed55(ep);kfree(ep);}}void DATARMNETf7dcab9a9e(void){if(! +DATARMNETf141197982||!DATARMNET9dc7755be5)return;DATARMNET28d33bd09f(); +DATARMNET5945236cd3(DATARMNET19092afcc2);trace_rmnet_shs_wq_high( +DATARMNETc1e19aa345,DATARMNET7cf840e991,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);cancel_delayed_work_sync(& +DATARMNET9dc7755be5->DATARMNET1150269da2);drain_workqueue(DATARMNETf141197982); +destroy_workqueue(DATARMNETf141197982);kfree(DATARMNET9dc7755be5); +DATARMNET9dc7755be5=NULL;DATARMNETf141197982=NULL;DATARMNET39391a8bc5( +DATARMNETc5db038c35);DATARMNET5fb4151598();trace_rmnet_shs_wq_high( +DATARMNETc1e19aa345,DATARMNETa5cdfd53b3,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNETd3d1d13f44(void) +{u8 DATARMNET42a992465f;struct DATARMNET228056d4b7*DATARMNET7bea4a06a6;for( +DATARMNET42a992465f=(0xd2d+202-0xdf7);DATARMNET42a992465f +DATARMNETab5c1e9ad5);DATARMNET7bea4a06a6->DATARMNET42a992465f= +DATARMNET42a992465f;}}void DATARMNET4063c95208(void){int cpu;if( +DATARMNETf141197982&&DATARMNET9dc7755be5)cancel_delayed_work_sync(& +DATARMNET9dc7755be5->DATARMNET1150269da2);for(cpu=(0xd2d+202-0xdf7);cpu< +DATARMNETc6782fed88;cpu++)DATARMNET2d482e7d9f[cpu]=(0xd2d+202-0xdf7); +rcu_read_lock();if(((0xd26+209-0xdf6)<DATARMNET1150269da2,(0xd2d+202-0xdf7));}void +DATARMNET3ae0d614d6(void){if(DATARMNETf141197982)return;DATARMNETf5f83b943f(); +trace_rmnet_shs_wq_high(DATARMNET9104d544fa,DATARMNET1b421b0381, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL +,NULL);DATARMNETf141197982=alloc_workqueue( +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x77\x71",WQ_UNBOUND,(0xd26+209-0xdf6)) +;if(!DATARMNETf141197982){DATARMNET68d84e7b98[DATARMNETecdf13872c]++;return;} +DATARMNET9dc7755be5=kmalloc(sizeof(struct DATARMNETa144e2bd00),GFP_ATOMIC);if(! +DATARMNET9dc7755be5){DATARMNET68d84e7b98[DATARMNETd1687e0776]++; +DATARMNETf7dcab9a9e();return;}DATARMNETf5b8fce55d(DATARMNET138a989ecb, +(0xd26+209-0xdf6));DATARMNETd3d1d13f44();INIT_DELAYED_WORK(&DATARMNET9dc7755be5 +->DATARMNET1150269da2,DATARMNETb4b5fc9686);trace_rmnet_shs_wq_high( +DATARMNET9104d544fa,DATARMNETb196f64ee0,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}int DATARMNETb709a938b5(u16 +cpu){int flows=-(0xd26+209-0xdf6);if(cpu>=DATARMNETc6782fed88){ +DATARMNET68d84e7b98[DATARMNET709b59b0e6]++;return flows;}flows= +DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows;trace_rmnet_shs_wq_low( +DATARMNET39a68a0eba,DATARMNET0e287157de,cpu,flows,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),NULL,NULL);return flows;}int DATARMNET392890a12b(void){u16 +cpu;int DATARMNET59bd820724=-(0xd26+209-0xdf6);int DATARMNET847bd62811;for(cpu= +(0xd2d+202-0xdf7);cpuDATARMNET59bd820724) +DATARMNET59bd820724=DATARMNET847bd62811;trace_rmnet_shs_wq_low( +DATARMNET39a68a0eba,DATARMNETc2a28b3abe,cpu,DATARMNET847bd62811, +DATARMNET59bd820724,(0x16e8+787-0xc0c),NULL,NULL);}return DATARMNET59bd820724;} +int DATARMNETdd3b17f0c3(u16 cpu){u32 DATARMNET1802cc4803=(0xd26+209-0xdf6)<< +(0xd11+230-0xdf3);u32 DATARMNETb998398361=(0xd26+209-0xdf6);u16 +DATARMNETaff7dd6611=(0xd2d+202-0xdf7);u16 DATARMNET2ab4b15bd2=(0xd11+230-0xdf3); +int DATARMNET59bd820724=-(0xd26+209-0xdf6);int DATARMNET847bd62811;if(cpu> +DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET709b59b0e6]++;return +DATARMNET59bd820724;}DATARMNETb998398361<<=cpu;if(DATARMNETb998398361>= +DATARMNET1802cc4803){DATARMNETaff7dd6611=(0xd11+230-0xdf3);DATARMNET2ab4b15bd2= +DATARMNETc6782fed88;}for(;DATARMNETaff7dd6611DATARMNET59bd820724) +DATARMNET59bd820724=DATARMNET847bd62811;}trace_rmnet_shs_wq_low( +DATARMNET39a68a0eba,DATARMNET23906b61e9,DATARMNETaff7dd6611,DATARMNET2ab4b15bd2, +cpu,DATARMNET59bd820724,NULL,NULL);return DATARMNET59bd820724;}void +DATARMNET0349051465(u16 cpu){if(cpu>=DATARMNETc6782fed88){DATARMNET68d84e7b98[ +DATARMNET54b67b8a75]++;return;}DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu]. +flows++;trace_rmnet_shs_wq_low(DATARMNET39a68a0eba,DATARMNET0832f93bf0,cpu, +DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows,(0x16e8+787-0xc0c), +(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNET3669e7b703(u16 cpu){if(cpu>= +DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return;}if( +DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows>(0xd2d+202-0xdf7)) +DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows--;trace_rmnet_shs_wq_low( +DATARMNET39a68a0eba,DATARMNETecb00bceb2,cpu,DATARMNET6cdd58e74c. +DATARMNET73464778dc[cpu].flows,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL); +} diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.h b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.h new file mode 100644 index 0000000000..6623b2d3f5 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.h @@ -0,0 +1,131 @@ +/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 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. + * + */ + +#ifndef DATARMNETa58841a91d +#define DATARMNETa58841a91d +#include "rmnet_shs_config.h" +#include "rmnet_shs.h" +#include +#define DATARMNETdfb4d931bc (0xd2d+202-0xdf7) +#define DATARMNETf0dc5ccb6f (0xd2d+202-0xdf7) +#define rm_err(DATARMNET6c3cf5865b, ...) \ + do { if (DATARMNETdfb4d931bc) pr_err(DATARMNET6c3cf5865b, __VA_ARGS__); } while\ + ((0xd2d+202-0xdf7)) +#define DATARMNETd2da2e8466(DATARMNET6c3cf5865b, ...) \ + do { if (DATARMNETf0dc5ccb6f) pr_err(DATARMNET6c3cf5865b, __VA_ARGS__); } while\ + ((0xd2d+202-0xdf7)) +#define DATARMNET2f9ea73326 (0xeb7+1158-0x132d) +#define DATARMNET855e9d7062(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)*\ +1000000000) +#define DATARMNETe6671dbf38(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)*\ +1000000000) +#define DATARMNET36cfa76181(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)/\ +1000000000) +#define DATARMNET64577537b7(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)*\ +(0xd35+210-0xdff)) +#define DATARMNETac617c8dce(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)*1000000\ + ) +#define DATARMNET138a989ecb (0xeb7+1158-0x132d) +#define DATARMNETe4c625a3a3 (0xeb7+698-0x110d) +extern struct list_head DATARMNET30a3e83974;struct DATARMNET9b44b71ee9{u64 +DATARMNET4eb77c78e6;u64 DATARMNET257fc4b2d4;struct list_head DATARMNET0763436b8d +;struct net_device*ep;int DATARMNET5af04d0405[DATARMNETc6782fed88];int +DATARMNET7167e10d99[DATARMNETc6782fed88];u16 DATARMNET24a91635db;u16 +DATARMNET1a1d89d417;u16 DATARMNET9fb369ce5f;u8 DATARMNET4a4e6f66b5;int +DATARMNET6bda8fe27e;int DATARMNET121a654efd;int DATARMNETd7a83774f8;int +DATARMNET847276e5af;};struct DATARMNET0737a3aa12{struct list_head +DATARMNETd0c222566b;struct DATARMNET9b44b71ee9 ep;};enum DATARMNET0780ebfa33{ +DATARMNET8866cd9e9a,DATARMNETed5a873a00,DATARMNETd7a3f55a51,DATARMNETefe8657028, +DATARMNET37da25c8e8,DATARMNET5dccc475d4,DATARMNET3563036124,};struct +DATARMNET6c78e47d24{unsigned long int DATARMNET61e1ee0e95[DATARMNET3563036124]; +struct list_head DATARMNET742867e97a;struct list_head DATARMNET6de26f0feb;struct + DATARMNET63d7680df2*DATARMNET63b1a086d5;ktime_t DATARMNETadd51beef4;ktime_t +DATARMNET68714ac92c;ktime_t DATARMNET42ceaf5cc2;u64 DATARMNET4b4a76b094;u64 +rx_bytes;u64 DATARMNETa7352711af;u64 DATARMNET324c1a8f98;u64 DATARMNETbb80fccd97 +;u64 DATARMNET6c2816c16a;u64 DATARMNET253a9fc708;u64 DATARMNET95266642d1;u64 +DATARMNET0d682bcb29;u64 DATARMNET20e8fc9db8;u64 DATARMNETd34f4b12cd;u64 +DATARMNET96e0dea53e;u64 DATARMNET3ecedac168;u64 DATARMNETce5f56eab9;u64 +DATARMNET6edbc8b649;u64 DATARMNET4025a4ec90;u64 DATARMNETde6a309f37;u32 +DATARMNET9fb369ce5f;u32 DATARMNET17f2abdf03;u32 DATARMNET399c840115;u32 +DATARMNET1a1d89d417;u32 DATARMNETb932033f50;u32 hash;int DATARMNETb5f5519502;u16 + DATARMNET6e1a4eaf09;u16 DATARMNET7c894c2f8f;u16 DATARMNET1e9d25d9ff;u8 mux_id; +u8 DATARMNET0dc393a345;u8 DATARMNET0bfc2b2c85;u8 DATARMNET8a4e1d5aaa;u8 +DATARMNET87636d0152;};struct DATARMNET228056d4b7{struct list_head +DATARMNETab5c1e9ad5;ktime_t DATARMNET68714ac92c;u64 DATARMNET9853a006ae;u64 +DATARMNETde6a309f37;u64 DATARMNETc589c49a2e;u64 DATARMNET7fc41d655d;u64 rx_bytes +;u64 DATARMNET57f040bb2c;u64 DATARMNET324c1a8f98;u64 DATARMNETbb80fccd97;u64 +DATARMNET27c3925eff;u64 DATARMNET8233cb4988;u64 DATARMNET253a9fc708;u64 +DATARMNETc0b20e240a;u32 DATARMNETae196235f2;u32 DATARMNET8b9956a3f9;u32 +DATARMNET69770f8ef7;u32 DATARMNET14b0d18481;u32 DATARMNET17380ba0f8;int flows; +u16 DATARMNET42a992465f;};struct DATARMNETc8fdbf9c85{struct DATARMNET228056d4b7 +DATARMNET73464778dc[DATARMNETc6782fed88];ktime_t DATARMNET68714ac92c;u64 +DATARMNET601156672d;u64 DATARMNETbfe25a2160;u64 DATARMNET4947607c52;u64 +DATARMNET903a2cea81;u64 DATARMNET3067b3dafd;u64 DATARMNET47334112aa;u64 +DATARMNET9853a006ae;u64 DATARMNETde6a309f37;u64 DATARMNETc589c49a2e;u64 +DATARMNET27c3925eff;u64 DATARMNET8233cb4988;u64 DATARMNET7fc41d655d;u64 rx_bytes +;u64 DATARMNET57f040bb2c;u64 DATARMNET324c1a8f98;u64 DATARMNETbb80fccd97;u64 +DATARMNET0d682bcb29;u64 DATARMNET20e8fc9db8;u32 DATARMNET9fb369ce5f;u32 +DATARMNET399c840115;u32 DATARMNET1a1d89d417;u32 DATARMNETb932033f50;int +DATARMNET5af04d0405[DATARMNETc6782fed88];int DATARMNET7167e10d99[ +DATARMNETc6782fed88];int DATARMNET6bda8fe27e;int DATARMNET121a654efd;int +DATARMNETd7a83774f8;int DATARMNET847276e5af;int flows;u8 cpus;};struct +DATARMNETa144e2bd00{struct delayed_work DATARMNET1150269da2;};struct +DATARMNET47a6995138{struct list_head DATARMNET02523bfb57;u64 DATARMNET18b7a5b761 +;u64 DATARMNET4da6031170;u64 DATARMNET4df302dbd6;u16 DATARMNET42a992465f;}; +struct DATARMNET09a412b1c6{struct list_head DATARMNETd502c0412a;u64 +DATARMNET324c1a8f98;u64 DATARMNET253a9fc708;u32 hash;u16 DATARMNET42a992465f;}; +struct DATARMNET13c47d154e{struct list_head DATARMNETec0e3cb8f0;union{struct +iphdr DATARMNETac9bbaad7c;struct ipv6hdr DATARMNET1688a97aa4;}ip_hdr;union{ +struct tcphdr tp;struct udphdr up;}DATARMNETe33b41dad9;u64 DATARMNET324c1a8f98; +u64 DATARMNET253a9fc708;u64 DATARMNETbb80fccd97;u64 DATARMNET95266642d1;u64 +DATARMNET0d682bcb29;u64 DATARMNET20e8fc9db8;u32 hash;u16 DATARMNET42a992465f;u16 + trans_proto;u8 mux_id;};struct DATARMNETa52c09a590{struct list_head +DATARMNET6f898987df;u64 DATARMNET324c1a8f98;u64 DATARMNET253a9fc708;u64 +DATARMNETbb80fccd97;u32 hash;u16 DATARMNET42a992465f;};enum DATARMNET8487fb1a16{ +DATARMNET9104d544fa,DATARMNET4fe8e8c1a9,DATARMNETc1e19aa345,DATARMNET5e796836fb, +DATARMNET238d08f0df,DATARMNET92b282b12c,DATARMNET394831f22a,DATARMNET39a68a0eba, +DATARMNET0dd7951b5e,DATARMNETa0ecb9daac,};enum DATARMNETb2fa0397cc{ +DATARMNET34ace72e7e,DATARMNET7fc202c4c1,DATARMNET7643ab0f49,DATARMNET1ee5d0565d, +DATARMNETfab7330394,DATARMNET72f22d7cf7,DATARMNETf81dcb955d,DATARMNET3f2d29c867, +DATARMNET5a3ea29c57,DATARMNETb43d929c3b,DATARMNET31d8e00b80,DATARMNET8d783e2a07, +DATARMNET4b15fcda7c,DATARMNET08284be63e,DATARMNET8ce5a018df,DATARMNET57cad43bb7, +DATARMNET4b58d51c6a,DATARMNETfd4d416388,DATARMNETdb9197631d,DATARMNET067f70ac85, +DATARMNET91e905574d,DATARMNET35902389b3,DATARMNET29c0bc0151,DATARMNET45edcec1e4, +DATARMNET5b2500c971,DATARMNET08cee5b48c,DATARMNET5e2c5adaae,DATARMNETb0ed796e8c, +DATARMNET6bde6a5171,DATARMNET55cd50e666,DATARMNET0832f93bf0,DATARMNETecb00bceb2, +DATARMNET0e287157de,DATARMNETc2a28b3abe,DATARMNET23906b61e9,DATARMNET95d1ddcb1a, +DATARMNETbdcc04c8d8,DATARMNETcd209744bd,DATARMNETde65aa00a6,DATARMNETf4dabe20e4, +DATARMNETb9205423e5,DATARMNETffec99a10f,DATARMNET5c7c474d94,DATARMNET4af220a9f9, +DATARMNET709474066f,DATARMNET9a286e7654,DATARMNET5a417740cb,DATARMNET848d2ddfa7, +DATARMNET59a1cb0962,DATARMNET1b421b0381,DATARMNETb196f64ee0,DATARMNET7cf840e991, +DATARMNETa5cdfd53b3,DATARMNETd7f7ade458,DATARMNET53e4a6b394,DATARMNETd1d3902361, +DATARMNET1fc50aac59,DATARMNET213a62da0d,DATARMNETf814701a94,DATARMNET166a43f3aa, +};extern struct DATARMNETe600c5b727 DATARMNET0997c5650d[DATARMNETc6782fed88]; +extern struct list_head DATARMNET9825511866;extern struct workqueue_struct* +DATARMNETf141197982;void DATARMNET3ae0d614d6(void);void DATARMNETf7dcab9a9e(void +);void DATARMNET7b6c061b06(void);void DATARMNET4063c95208(void);void +DATARMNETe46c480d71(void);void DATARMNET039ac6d55d(void);u64 DATARMNETd406e89a85 +(u32 DATARMNETfaedbb66a9);void DATARMNET350f55bfca(struct DATARMNET63d7680df2* +node_p);int DATARMNET362c14e98b(u16 DATARMNETfaedbb66a9);int DATARMNETf181a18009 +(struct net_device*dev);int DATARMNET98b2a0ce62(struct net_device*dev);u64 +DATARMNETfc888b4d3e(u16 cpu);void DATARMNET0349051465(u16 cpu);void +DATARMNET3669e7b703(u16 cpu);void DATARMNET54ebea1d15(void);void +DATARMNET7492293980(struct net_device*dev);void DATARMNETd6ee05f1b4(struct +net_device*dev);void DATARMNET0a6fb12cb2(void);int DATARMNET5f72606f6f(u16 +DATARMNETc790ff30fc,u16 DATARMNET208ea67e1d,u32 DATARMNET4da4612f1e,u32 +DATARMNETa3f89581b5);int DATARMNETf85599b9d8(u32 DATARMNET8c11bd9466,u8 +DATARMNET87636d0152);void DATARMNET6bf538fa23(void);void DATARMNETaea4c85748( +void);void DATARMNETcd6e26f0ad(void); +#endif + diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.c b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.c new file mode 100644 index 0000000000..1f5aa58069 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.c @@ -0,0 +1,261 @@ +/* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 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 "rmnet_shs_modules.h" +#include "rmnet_shs_common.h" +#include "rmnet_shs_wq_genl.h" +#include +#include +MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static struct net*DATARMNETb01cbc5ec9 +;static u32 DATARMNET373156e169;static struct net*DATARMNET77097baa98;static u32 + DATARMNET990a29d492;uint32_t DATARMNET7c4038843f;uint32_t DATARMNETf1e47cb243; +int DATARMNETc252c204a8; +#define DATARMNETe429c5f3dd (0xbf7+4364-0x1c04) +#define DATARMNET6987463c5e(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95) * \ +1000000000) +static struct nla_policy DATARMNET23b45455b1[DATARMNETcecb35ee33+ +(0xd26+209-0xdf6)]={[DATARMNET7d289a7bfa]={.type=NLA_S32},[DATARMNET813a742587]= +NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNET6c41b886b2)),[DATARMNET50e1cd26c7]= +NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNET837c876a22)),[DATARMNETaa0fe5a855]={ +.type=NLA_NUL_STRING,.len=DATARMNETe429c5f3dd},}; +#define DATARMNETcfe22ed4d3(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e) \ + { \ + .cmd = DATARMNET5aeb0ef9bc, \ + .doit = DATARMNETbd9859b58e, \ + .dumpit = NULL, \ + .flags = (0xd2d+202-0xdf7), \ + } +static const struct genl_ops DATARMNETf2d168ff8d[]={DATARMNETcfe22ed4d3( +DATARMNETafd55f4acf,DATARMNET740f3b34b3),DATARMNETcfe22ed4d3(DATARMNET8e3adfc5dd +,DATARMNET29175fb5fc),DATARMNETcfe22ed4d3(DATARMNETffb2945689, +DATARMNETd81d2866ba),DATARMNETcfe22ed4d3(DATARMNET51b1ee5a68,DATARMNETc850634243 +),};static struct nla_policy DATARMNETd7cd67c4a9[DATARMNETcecb35ee33+ +(0xd26+209-0xdf6)]={[DATARMNETc08daf87d4]=NLA_POLICY_EXACT_LEN(sizeof(struct +DATARMNET25187800fe)),[DATARMNET8070cc0bdc]=NLA_POLICY_EXACT_LEN(sizeof(struct +DATARMNET177911299b)),};static const struct genl_ops DATARMNETffa9bcf3ed[]={ +DATARMNETcfe22ed4d3(DATARMNETafee1e9070,DATARMNETd65d1351b9),};struct +genl_family DATARMNETecc643c219={.hdrsize=(0xd2d+202-0xdf7),.name= +DATARMNET0228d9f101,.version=DATARMNET0fa03ac25b,.maxattr=DATARMNETcecb35ee33,. +policy=DATARMNET23b45455b1,.ops=DATARMNETf2d168ff8d,.n_ops=ARRAY_SIZE( +DATARMNETf2d168ff8d),};struct genl_family rmnet_shs_genl_msg_family={.hdrsize= +(0xd2d+202-0xdf7),.name=DATARMNETa35687f809,.version=DATARMNET0fa03ac25b,. +maxattr=DATARMNETcecb35ee33,.policy=DATARMNETd7cd67c4a9,.ops=DATARMNETffa9bcf3ed +,.n_ops=ARRAY_SIZE(DATARMNETffa9bcf3ed),};int DATARMNET5d4ca1da1c(struct +genl_info*DATARMNET54338da2ff,int val){struct sk_buff*skb;void*msg_head;int rc; +skb=genlmsg_new(NLMSG_GOODSIZE,GFP_ATOMIC);if(skb==NULL)goto DATARMNETbf4095f79e +;msg_head=genlmsg_put(skb,(0xd2d+202-0xdf7),DATARMNET54338da2ff->snd_seq+ +(0xd26+209-0xdf6),&DATARMNETecc643c219,(0xd2d+202-0xdf7),DATARMNETafd55f4acf);if +(msg_head==NULL){rc=-ENOMEM;rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x6d\x73\x67\x5f\x68\x65\x61\x64\x20\x25\x64" "\n" +,rc);kfree(skb);goto DATARMNETbf4095f79e;}rc=nla_put_u32(skb,DATARMNET7d289a7bfa +,val);if(rc!=(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x6e\x6c\x61\x5f\x70\x75\x74\x20\x25\x64" "\n" +,rc);kfree(skb);goto DATARMNETbf4095f79e;}genlmsg_end(skb,msg_head);rc= +genlmsg_unicast(genl_info_net(DATARMNET54338da2ff),skb,DATARMNET54338da2ff-> +snd_portid);if(rc!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x73\x65\x6e\x74\x20\x69\x6e\x74\x20\x25\x64" "\n" +,val);return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x69\x6e\x74\x20\x25\x64" "\n" +,val);return-(0xd26+209-0xdf6);}int DATARMNET5945236cd3(int val){struct sk_buff* +skb;void*msg_head;int rc;if(DATARMNETb01cbc5ec9==NULL){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x69\x6e\x74\x20\x25\x64\x20\x2d\x20\x6c\x61\x73\x74\x5f\x6e\x65\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c" "\n" +,val);return-(0xd26+209-0xdf6);}skb=genlmsg_new(NLMSG_GOODSIZE,GFP_ATOMIC);if( +skb==NULL)goto DATARMNETbf4095f79e;msg_head=genlmsg_put(skb,(0xd2d+202-0xdf7), +DATARMNET7c4038843f++,&DATARMNETecc643c219,(0xd2d+202-0xdf7),DATARMNETafd55f4acf +);if(msg_head==NULL){rc=-ENOMEM;rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x6d\x73\x67\x5f\x68\x65\x61\x64\x20\x25\x64" "\n" +,rc);kfree(skb);goto DATARMNETbf4095f79e;}rc=nla_put_u32(skb,DATARMNET7d289a7bfa +,val);if(rc!=(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x6e\x6c\x61\x5f\x70\x75\x74\x20\x25\x64" "\n" +,rc);kfree(skb);goto DATARMNETbf4095f79e;}genlmsg_end(skb,msg_head);rc= +genlmsg_unicast(DATARMNETb01cbc5ec9,skb,DATARMNET373156e169);if(rc!= +(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x73\x65\x6e\x74\x20\x69\x6e\x74\x20\x25\x64" "\n" +,val);return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x69\x6e\x74\x20\x25\x64" "\n" +,val);DATARMNETc252c204a8=(0xd2d+202-0xdf7);return-(0xd26+209-0xdf6);}int +DATARMNETa9a7fa898c(void){struct sk_buff*skb;void*msg_head;int rc;int val= +DATARMNET7c4038843f++;rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x54\x72\x79\x69\x6e\x67\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x6d\x73\x67\x20\x25\x64" "\n" +,val);skb=genlmsg_new(NLMSG_GOODSIZE,GFP_ATOMIC);if(skb==NULL)goto +DATARMNETbf4095f79e;msg_head=genlmsg_put(skb,(0xd2d+202-0xdf7), +DATARMNET7c4038843f++,&DATARMNETecc643c219,(0xd2d+202-0xdf7),DATARMNETafd55f4acf +);if(msg_head==NULL){rc=-ENOMEM;rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x6d\x73\x67\x5f\x68\x65\x61\x64\x20\x25\x64" "\n" +,rc);kfree(skb);goto DATARMNETbf4095f79e;}rc=nla_put_u32(skb,DATARMNET7d289a7bfa +,val);if(rc!=(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x6e\x6c\x61\x5f\x70\x75\x74\x20\x25\x64" "\n" +,rc);kfree(skb);goto DATARMNETbf4095f79e;}genlmsg_end(skb,msg_head); +genlmsg_multicast(&DATARMNETecc643c219,skb,(0xd2d+202-0xdf7),(0xd2d+202-0xdf7), +GFP_ATOMIC);rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x73\x65\x6e\x74\x20\x69\x6e\x74\x20\x25\x64" "\n" +,val);return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x69\x6e\x74\x20\x25\x64" "\n" +,val);DATARMNETc252c204a8=(0xd2d+202-0xdf7);return-(0xd26+209-0xdf6);}int +DATARMNET740f3b34b3(struct sk_buff*DATARMNETaafc1d9519,struct genl_info* +DATARMNET54338da2ff){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x67\x65\x6e\x6c\x5f\x64\x6d\x61\x5f\x69\x6e\x69\x74" +);if(DATARMNET54338da2ff==NULL){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x61\x6e\x20\x65\x72\x72\x6f\x72\x20\x6f\x63\x63\x75\x72\x65\x64\x20\x2d\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c" +);return-(0xd26+209-0xdf6);}return(0xd2d+202-0xdf7);}int DATARMNETd81d2866ba( +struct sk_buff*DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff){struct +nlattr*na;struct DATARMNET837c876a22 DATARMNET1317c6a4a2;int rc= +(0xd2d+202-0xdf7);rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x67\x65\x6e\x6c\x5f\x73\x65\x74\x5f\x66\x6c\x6f\x77\x5f\x73\x65\x67\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e" +);if(DATARMNET54338da2ff==NULL){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x61\x6e\x20\x65\x72\x72\x6f\x72\x20\x6f\x63\x63\x75\x72\x65\x64\x20\x2d\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c" +);return-(0xd26+209-0xdf6);}na=DATARMNET54338da2ff->attrs[DATARMNET50e1cd26c7]; +if(na){if(nla_memcpy(&DATARMNET1317c6a4a2,na,sizeof(DATARMNET1317c6a4a2))> +(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x65\x63\x76\x20\x73\x65\x67\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x72\x65\x71\x20" +"\x68\x61\x73\x68\x5f\x74\x6f\x5f\x73\x65\x74\x20\x3d\x20\x30\x78\x25\x78\x20\x73\x65\x67\x73\x5f\x70\x65\x72\x5f\x73\x6b\x62\x20\x3d\x20\x25\x75" +,DATARMNET1317c6a4a2.DATARMNET8c11bd9466,DATARMNET1317c6a4a2.DATARMNET87636d0152 +);rc=DATARMNETf85599b9d8(DATARMNET1317c6a4a2.DATARMNET8c11bd9466, +DATARMNET1317c6a4a2.DATARMNET87636d0152);if(rc==(0xd26+209-0xdf6)){ +DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET0cb8735618); +trace_rmnet_shs_wq_high(DATARMNETa0ecb9daac,DATARMNETf814701a94, +DATARMNET1317c6a4a2.DATARMNET8c11bd9466,DATARMNET1317c6a4a2.DATARMNET87636d0152, +(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}else{DATARMNET5d4ca1da1c( +DATARMNET54338da2ff,DATARMNET00895c1601);trace_rmnet_shs_wq_high( +DATARMNETa0ecb9daac,DATARMNET166a43f3aa,DATARMNET1317c6a4a2.DATARMNET8c11bd9466, +DATARMNET1317c6a4a2.DATARMNET87636d0152,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c), +NULL,NULL);return(0xd2d+202-0xdf7);}}else{rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6c\x61\x5f\x6d\x65\x6d\x63\x70\x79\x20\x66\x61\x69\x6c\x65\x64\x20\x25\x64" "\n" +,DATARMNET50e1cd26c7);DATARMNET5d4ca1da1c(DATARMNET54338da2ff, +DATARMNET00895c1601);return(0xd2d+202-0xdf7);}}else{rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6f\x20\x69\x6e\x66\x6f\x2d\x3e\x61\x74\x74\x72\x73\x20\x25\x64" "\n" +,DATARMNET50e1cd26c7);DATARMNET5d4ca1da1c(DATARMNET54338da2ff, +DATARMNET00895c1601);return(0xd2d+202-0xdf7);}return(0xd2d+202-0xdf7);}int +DATARMNET29175fb5fc(struct sk_buff*DATARMNETaafc1d9519,struct genl_info* +DATARMNET54338da2ff){struct nlattr*na;struct DATARMNET6c41b886b2 +DATARMNET7f0ce2d6ad;int rc=(0xd2d+202-0xdf7);rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x67\x65\x6e\x6c\x5f\x74\x72\x79\x5f\x74\x6f\x5f\x6d\x6f\x76\x65\x5f\x66\x6c\x6f\x77" +);if(DATARMNET54338da2ff==NULL){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x61\x6e\x20\x65\x72\x72\x6f\x72\x20\x6f\x63\x63\x75\x72\x65\x64\x20\x2d\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c" +);return-(0xd26+209-0xdf6);}na=DATARMNET54338da2ff->attrs[DATARMNET813a742587]; +if(na){if(nla_memcpy(&DATARMNET7f0ce2d6ad,na,sizeof(DATARMNET7f0ce2d6ad))> +(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x63\x75\x72\x5f\x63\x70\x75\x20\x3d\x25\x75\x20\x64\x65\x73\x74\x5f\x63\x70\x75\x20\x3d\x20\x25\x75\x20" +"\x68\x61\x73\x68\x5f\x74\x6f\x5f\x6d\x6f\x76\x65\x20\x3d\x20\x30\x78\x25\x78\x20\x73\x75\x67\x67\x5f\x74\x79\x70\x65\x20\x3d\x20\x25\x75" +,DATARMNET7f0ce2d6ad.DATARMNETc790ff30fc,DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d +,DATARMNET7f0ce2d6ad.DATARMNET4da4612f1e,DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5 +);if(DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5==DATARMNET5dccc475d4){ +DATARMNETb7ddf3c5dd[DATARMNETf13db5ace8]++;if(!(((0xd26+209-0xdf6)<< +DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d)&DATARMNET9273f84bf1)||(( +(0xd26+209-0xdf6)<snd_portid;rm_err( +"\x70\x6f\x72\x74\x5f\x69\x64\x20\x3d\x20\x25\x75",DATARMNET373156e169);return +(0xd2d+202-0xdf7);}void DATARMNET8d0d510d45(uint32_t DATARMNETaf3d356342,struct +DATARMNET177911299b*DATARMNET60b6e12cfd){struct DATARMNETe5f1cf1a69 +DATARMNET7baa284dc5;struct timespec64 time;if(DATARMNET60b6e12cfd==NULL){rm_err( +"\x25\x73", +"\x53\x48\x53\x5f\x4d\x53\x47\x5f\x47\x4e\x4c\x20\x2d\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x70\x75\x74" +);return;}memset(DATARMNET60b6e12cfd,(0xd2d+202-0xdf7),sizeof(struct +DATARMNET177911299b));memset(&DATARMNET7baa284dc5,(0xd2d+202-0xdf7),sizeof( +DATARMNET7baa284dc5));ktime_get_real_ts64(&time);DATARMNET60b6e12cfd->timestamp= +(DATARMNET6987463c5e(time.tv_sec)+time.tv_nsec);DATARMNET7baa284dc5. +DATARMNETaf3d356342=DATARMNETaf3d356342;DATARMNET7baa284dc5.DATARMNET43a8300dfd= +(0xd26+209-0xdf6);memcpy(&(DATARMNET60b6e12cfd->list[(0xd2d+202-0xdf7)]. +DATARMNETdf2dbc641f),&DATARMNET7baa284dc5,sizeof(DATARMNET7baa284dc5)); +DATARMNET60b6e12cfd->list[(0xd2d+202-0xdf7)].msg_type=DATARMNETfce267cbe9; +DATARMNET60b6e12cfd->valid=(0xd26+209-0xdf6);DATARMNET60b6e12cfd->list_len= +(0xd26+209-0xdf6);}int DATARMNETb5d58adbe7(struct DATARMNET177911299b*msg_ptr){ +struct sk_buff*skb;void*msg_head;int rc;if(DATARMNET77097baa98==NULL){rm_err( +"\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x6d\x73\x67\x5f\x6c\x61\x73\x74\x5f\x6e\x65\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c" "\n" +);return-(0xd26+209-0xdf6);}skb=genlmsg_new(NLMSG_GOODSIZE,GFP_ATOMIC);if(skb== +NULL)goto DATARMNETbf4095f79e;msg_head=genlmsg_put(skb,(0xd2d+202-0xdf7), +DATARMNETf1e47cb243++,&rmnet_shs_genl_msg_family,(0xd2d+202-0xdf7), +DATARMNETafee1e9070);if(msg_head==NULL){rc=-ENOMEM;rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x6d\x73\x67\x5f\x68\x65\x61\x64\x20\x25\x64" "\n" +,rc);kfree(skb);goto DATARMNETbf4095f79e;}rc=nla_put(skb,DATARMNET8070cc0bdc, +sizeof(struct DATARMNET177911299b),msg_ptr);if(rc!=(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x6e\x6c\x61\x5f\x70\x75\x74\x20\x25\x64" "\n" +,rc);kfree(skb);goto DATARMNETbf4095f79e;}genlmsg_end(skb,msg_head);rc= +genlmsg_unicast(DATARMNET77097baa98,skb,DATARMNET990a29d492);if(rc!= +(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;rm_err( +"\x53\x48\x53\x5f\x4d\x53\x47\x5f\x47\x4e\x4c\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x73\x65\x6e\x74\x20\x6d\x73\x67\x20\x25\x64" "\n" +,DATARMNETf1e47cb243);return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:rm_err( +"\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x74\x6f\x20\x6d\x73\x67\x20\x63\x68\x61\x6e\x6e\x65\x6c" "\n" +);return-(0xd26+209-0xdf6);}int DATARMNETd65d1351b9(struct sk_buff* +DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x5f\x4d\x53\x47\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x67\x65\x6e\x6c\x5f\x6d\x73\x67\x5f\x72\x65\x71" +);if(!DATARMNETc252c204a8){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x5f\x4d\x53\x47\x3a\x20\x65\x72\x72\x6f\x72\x3a\x20\x75\x73\x65\x72\x73\x70\x61\x63\x65\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64" +);return-(0xd26+209-0xdf6);}if(DATARMNET54338da2ff==NULL){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x47\x4e\x4c\x5f\x4d\x53\x47\x3a\x20\x65\x72\x72\x6f\x72\x3a\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c" +);return-(0xd26+209-0xdf6);}DATARMNET77097baa98=genl_info_net( +DATARMNET54338da2ff);DATARMNET990a29d492=DATARMNET54338da2ff->snd_portid;rm_err( +"\x6d\x73\x67\x5f\x70\x6f\x72\x74\x5f\x69\x64\x20\x3d\x20\x25\x75", +DATARMNET990a29d492);return(0xd2d+202-0xdf7);}int DATARMNET0dbc627e8f(void){int +ret;DATARMNETc252c204a8=(0xd2d+202-0xdf7);ret=genl_register_family(& +DATARMNETecc643c219);if(ret!=(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" +,ret);genl_unregister_family(&DATARMNETecc643c219);return-(0xd26+209-0xdf6);} +rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x72\x65\x67\x69\x73\x74\x65\x72\x65\x64\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x6e\x65\x74\x6c\x69\x6e\x6b\x20\x66\x61\x6d\x69\x6c\x79\x3a\x20\x25\x73" +,DATARMNET0228d9f101);ret=genl_register_family(&rmnet_shs_genl_msg_family);if( +ret!=(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x4d\x53\x47\x5f\x47\x4e\x4c\x3a\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" +,ret);genl_unregister_family(&rmnet_shs_genl_msg_family);}else{rm_err( +"\x53\x48\x53\x5f\x4d\x53\x47\x5f\x47\x4e\x4c\x3a\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x72\x65\x67\x69\x73\x74\x65\x72\x65\x64\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x6e\x65\x74\x6c\x69\x6e\x6b\x20\x66\x61\x6d\x69\x6c\x79\x3a\x20\x25\x73" +,DATARMNETa35687f809);}return(0xd2d+202-0xdf7);}int DATARMNETeabd69d1ab(void){ +int ret;DATARMNET5945236cd3(DATARMNET19092afcc2);ret=genl_unregister_family(& +DATARMNETecc643c219);if(ret!=(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n" +,ret);}DATARMNETc252c204a8=(0xd2d+202-0xdf7);ret=genl_unregister_family(& +rmnet_shs_genl_msg_family);if(ret!=(0xd2d+202-0xdf7)){rm_err( +"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n" +,ret);}return(0xd2d+202-0xdf7);} diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.h b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.h new file mode 100644 index 0000000000..b6975151bf --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.h @@ -0,0 +1,65 @@ +/* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 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. + * + */ + +#ifndef DATARMNETf34a2d1928 +#define DATARMNETf34a2d1928 +#include "rmnet_shs.h" +#include +#define DATARMNET0fa03ac25b (0xd26+209-0xdf6) +#define DATARMNET0228d9f101 "\x52\x4d\x4e\x45\x54\x5f\x53\x48\x53" +#define DATARMNETe64295b6cb (0xbb7+853-0xc3c) +#define DATARMNET598eb03fad (0xbc7+788-0xc04) +#define DATARMNET7afb49ee3f (0xd07+2129-0x121c) +#define DATARMNET3a69f7c4e5 (0xd07+2122-0x1214) +#define DATARMNET2d19c9b1ef (0xcc7+5761-0x221c) +#define DATARMNET96de786762 (0xcc7+5754-0x2214) +#define DATARMNET00895c1601 (0xdc7+3085-0x163c) +#define DATARMNET0cb8735618 (0xdb7+3102-0x1634) +#define DATARMNET19092afcc2 (0xec7+1152-0x131d) +extern int DATARMNETc252c204a8;enum{DATARMNET9491b185b7,DATARMNETafd55f4acf, +DATARMNET8e3adfc5dd,DATARMNETffb2945689,DATARMNET51b1ee5a68,DATARMNET5b3796e25a, +};enum{DATARMNET603b776397,DATARMNETaa0fe5a855,DATARMNET7d289a7bfa, +DATARMNET813a742587,DATARMNET50e1cd26c7,DATARMNET0158bf4d2b,}; +#define DATARMNETcecb35ee33 (DATARMNET0158bf4d2b - (0xd26+209-0xdf6)) +struct DATARMNET6c41b886b2{uint32_t DATARMNET4da4612f1e;uint32_t +DATARMNETa3f89581b5;uint16_t DATARMNETc790ff30fc;uint16_t DATARMNET208ea67e1d;}; +struct DATARMNET837c876a22{uint32_t DATARMNET8c11bd9466;uint32_t +DATARMNET87636d0152;}; +#define DATARMNETa35687f809 "RMNET_SHS_MSG" +enum{DATARMNETeaa13301a0,DATARMNETafee1e9070,DATARMNET943966c53e,};enum{ +DATARMNET5f0371060e,DATARMNETc08daf87d4,DATARMNET8070cc0bdc,DATARMNETc2be398ed4, +}; +#define DATARMNET3b631aeccb ((0xeb7+712-0x111d)) +#define DATARMNET8a917ef593 ((0xd26+209-0xdf6)) +struct DATARMNETe5f1cf1a69{uint32_t DATARMNETaf3d356342;uint8_t +DATARMNET43a8300dfd;};enum{DATARMNET68b3f1699c=(0xd2d+202-0xdf7), +DATARMNETfce267cbe9=(0xd26+209-0xdf6),};struct DATARMNET4a3b3209dd{char +DATARMNETdf2dbc641f[DATARMNET3b631aeccb];uint16_t msg_type;};struct +DATARMNET25187800fe{int valid;};struct DATARMNET177911299b{struct +DATARMNET4a3b3209dd list[DATARMNET8a917ef593];uint64_t timestamp;uint16_t +list_len;uint8_t valid;};int DATARMNET740f3b34b3(struct sk_buff* +DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff);int +DATARMNET29175fb5fc(struct sk_buff*DATARMNETaafc1d9519,struct genl_info* +DATARMNET54338da2ff);int DATARMNETd81d2866ba(struct sk_buff*DATARMNETaafc1d9519, +struct genl_info*DATARMNET54338da2ff);int DATARMNETc850634243(struct sk_buff* +DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff);int +DATARMNET5d4ca1da1c(struct genl_info*DATARMNET54338da2ff,int val);int +DATARMNET5945236cd3(int val);int DATARMNETa9a7fa898c(void);void +DATARMNET8d0d510d45(uint32_t DATARMNETaf3d356342,struct DATARMNET177911299b* +DATARMNET60b6e12cfd);int DATARMNETb5d58adbe7(struct DATARMNET177911299b*msg_ptr) +;int DATARMNETd65d1351b9(struct sk_buff*DATARMNETaafc1d9519,struct genl_info* +DATARMNET54338da2ff);int DATARMNET0dbc627e8f(void);int DATARMNETeabd69d1ab(void) +; +#endif + diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.c b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.c new file mode 100644 index 0000000000..97d859e642 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.c @@ -0,0 +1,530 @@ +/* Copyright (c) 2019-2020 The Linux Foundation. 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 "rmnet_shs_modules.h" +#include "rmnet_shs_common.h" +#include "rmnet_shs_wq_mem.h" +#include +#include +MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");struct proc_dir_entry* +DATARMNETe4c5563cdb;struct DATARMNET33582f7450 DATARMNET63c47f3c37[ +DATARMNETc6782fed88];struct DATARMNETf44cda1bf2 DATARMNET22b4032799[ +DATARMNET75c69edb82];struct DATARMNET3a84fbfeae DATARMNETb0d78d576f[ +DATARMNET75c69edb82];struct DATARMNETc13d990bf1 DATARMNET3d25ff4ef4[ +DATARMNET67578af78f];struct DATARMNET57ccbe14f3 DATARMNETf46265286b[ +DATARMNETe4d15b9332];struct list_head DATARMNET6c23f11e81=LIST_HEAD_INIT( +DATARMNET6c23f11e81);struct list_head DATARMNETf91b305f4e=LIST_HEAD_INIT( +DATARMNETf91b305f4e);struct list_head DATARMNETe46ae760db=LIST_HEAD_INIT( +DATARMNETe46ae760db);struct list_head DATARMNET3208cd0982=LIST_HEAD_INIT( +DATARMNET3208cd0982);struct DATARMNETa41d4c4a12*DATARMNET410036d5ac;struct +DATARMNETa41d4c4a12*DATARMNET19c47a9f3a;struct DATARMNETa41d4c4a12* +DATARMNET22e796eff3;struct DATARMNETa41d4c4a12*DATARMNET9b8000d2a7;struct +DATARMNETa41d4c4a12*DATARMNET67d31dc40a;static void DATARMNET6069bf201a(struct +vm_area_struct*vma){return;}static void DATARMNET0f6b7f3f93(struct +vm_area_struct*vma){return;}static vm_fault_t DATARMNET9efe8a3d18(struct +vm_fault*DATARMNETca901b4e1f){struct page*page=NULL;struct DATARMNETa41d4c4a12* +DATARMNET54338da2ff;DATARMNET6bf538fa23();if(DATARMNET410036d5ac){ +DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*)DATARMNETca901b4e1f->vma-> +vm_private_data;if(DATARMNET54338da2ff->data){page=virt_to_page( +DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page=page;}else{ +DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{DATARMNETaea4c85748(); +return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return(0xd2d+202-0xdf7);}static +vm_fault_t DATARMNETd005aa7157(struct vm_fault*DATARMNETca901b4e1f){struct page* +page=NULL;struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;DATARMNET6bf538fa23(); +if(DATARMNET19c47a9f3a){DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*) +DATARMNETca901b4e1f->vma->vm_private_data;if(DATARMNET54338da2ff->data){page= +virt_to_page(DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page +=page;}else{DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{ +DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return +(0xd2d+202-0xdf7);}static vm_fault_t DATARMNETb3a7180954(struct vm_fault* +DATARMNETca901b4e1f){struct page*page=NULL;struct DATARMNETa41d4c4a12* +DATARMNET54338da2ff;DATARMNET6bf538fa23();if(DATARMNET22e796eff3){ +DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*)DATARMNETca901b4e1f->vma-> +vm_private_data;if(DATARMNET54338da2ff->data){page=virt_to_page( +DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page=page;}else{ +DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{DATARMNETaea4c85748(); +return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return(0xd2d+202-0xdf7);}static +vm_fault_t DATARMNETe35719979c(struct vm_fault*DATARMNETca901b4e1f){struct page* +page=NULL;struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;DATARMNET6bf538fa23(); +if(DATARMNET9b8000d2a7){DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*) +DATARMNETca901b4e1f->vma->vm_private_data;if(DATARMNET54338da2ff->data){page= +virt_to_page(DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page +=page;}else{DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{ +DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return +(0xd2d+202-0xdf7);}static vm_fault_t DATARMNETe421c4e1db(struct vm_fault* +DATARMNETca901b4e1f){struct page*page=NULL;struct DATARMNETa41d4c4a12* +DATARMNET54338da2ff;DATARMNET6bf538fa23();if(DATARMNET67d31dc40a){ +DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*)DATARMNETca901b4e1f->vma-> +vm_private_data;if(DATARMNET54338da2ff->data){page=virt_to_page( +DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page=page;}else{ +DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{DATARMNETaea4c85748(); +return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return(0xd2d+202-0xdf7);}static +const struct vm_operations_struct DATARMNETfa4e968e7d={.close= +DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNET9efe8a3d18,}; +static const struct vm_operations_struct DATARMNETe9c0626068={.close= +DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNETd005aa7157,}; +static const struct vm_operations_struct DATARMNET9a89317a86={.close= +DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNETb3a7180954,}; +static const struct vm_operations_struct DATARMNET5462c2ce60={.close= +DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNETe35719979c,}; +static const struct vm_operations_struct DATARMNET41944cc550={.close= +DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNETe421c4e1db,}; +static int DATARMNET54418f934d(struct file*DATARMNET3cc114dce0,struct +vm_area_struct*vma){vma->vm_ops=&DATARMNETfa4e968e7d;vma->vm_flags|= +VM_DONTEXPAND|VM_DONTDUMP;vma->vm_private_data=DATARMNET3cc114dce0->private_data +;return(0xd2d+202-0xdf7);}static int DATARMNETc55748448d(struct file* +DATARMNET3cc114dce0,struct vm_area_struct*vma){vma->vm_ops=&DATARMNETe9c0626068; +vma->vm_flags|=VM_DONTEXPAND|VM_DONTDUMP;vma->vm_private_data= +DATARMNET3cc114dce0->private_data;return(0xd2d+202-0xdf7);}static int +DATARMNET43c6d751a2(struct file*DATARMNET3cc114dce0,struct vm_area_struct*vma){ +vma->vm_ops=&DATARMNET9a89317a86;vma->vm_flags|=VM_DONTEXPAND|VM_DONTDUMP;vma-> +vm_private_data=DATARMNET3cc114dce0->private_data;return(0xd2d+202-0xdf7);} +static int DATARMNET7cc042bdf3(struct file*DATARMNET3cc114dce0,struct +vm_area_struct*vma){vma->vm_ops=&DATARMNET5462c2ce60;vma->vm_flags|= +VM_DONTEXPAND|VM_DONTDUMP;vma->vm_private_data=DATARMNET3cc114dce0->private_data +;return(0xd2d+202-0xdf7);}static int DATARMNET444e2eb654(struct file* +DATARMNET3cc114dce0,struct vm_area_struct*vma){vma->vm_ops=&DATARMNET41944cc550; +vma->vm_flags|=VM_DONTEXPAND|VM_DONTDUMP;vma->vm_private_data= +DATARMNET3cc114dce0->private_data;return(0xd2d+202-0xdf7);}static int +DATARMNET33a80d3bf7(struct inode*inode,struct file*DATARMNET3cc114dce0){struct +DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(!DATARMNET410036d5ac){DATARMNET54338da2ff=kzalloc( +sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto +DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC) +;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto +DATARMNET1d7e728ddf;}DATARMNET410036d5ac=DATARMNET54338da2ff;refcount_set(& +DATARMNET410036d5ac->refcnt,(0xd26+209-0xdf6));rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x63\x61\x70\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long +long)virt_to_phys((void*)DATARMNET410036d5ac));}else{refcount_inc(& +DATARMNET410036d5ac->refcnt);}DATARMNET3cc114dce0->private_data= +DATARMNET410036d5ac;DATARMNETaea4c85748();rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x4f\x4b" "\n" +);return(0xd2d+202-0xdf7);DATARMNET1d7e728ddf:DATARMNETaea4c85748();rm_err( +"\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x46\x41\x49\x4c\x45\x44" "\n" +);return-ENOMEM;}static int DATARMNET0935e3beb9(struct inode*inode,struct file* +DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err( +"\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x67\x5f\x66\x6c\x6f\x77\x73\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(!DATARMNET19c47a9f3a){DATARMNET54338da2ff=kzalloc( +sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto +DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC) +;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto +DATARMNET1d7e728ddf;}DATARMNET19c47a9f3a=DATARMNET54338da2ff;refcount_set(& +DATARMNET19c47a9f3a->refcnt,(0xd26+209-0xdf6));rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x67\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long +long)virt_to_phys((void*)DATARMNET19c47a9f3a));}else{refcount_inc(& +DATARMNET19c47a9f3a->refcnt);}DATARMNET3cc114dce0->private_data= +DATARMNET19c47a9f3a;DATARMNETaea4c85748();return(0xd2d+202-0xdf7); +DATARMNET1d7e728ddf:DATARMNETaea4c85748();rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x46\x41\x49\x4c\x45\x44" "\n" +);return-ENOMEM;}static int DATARMNETfbd34e70a2(struct inode*inode,struct file* +DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err( +"\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x73\x73\x5f\x66\x6c\x6f\x77\x73\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(!DATARMNET22e796eff3){DATARMNET54338da2ff=kzalloc( +sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto +DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC) +;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto +DATARMNET1d7e728ddf;}DATARMNET22e796eff3=DATARMNET54338da2ff;refcount_set(& +DATARMNET22e796eff3->refcnt,(0xd26+209-0xdf6));rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x73\x73\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long +long)virt_to_phys((void*)DATARMNET22e796eff3));}else{refcount_inc(& +DATARMNET22e796eff3->refcnt);}DATARMNET3cc114dce0->private_data= +DATARMNET22e796eff3;DATARMNETaea4c85748();return(0xd2d+202-0xdf7); +DATARMNET1d7e728ddf:DATARMNETaea4c85748();rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x46\x41\x49\x4c\x45\x44" "\n" +);return-ENOMEM;}static int DATARMNET57bcb932f3(struct inode*inode,struct file* +DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err( +"\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x66\x66\x6c\x6f\x77\x73\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(!DATARMNET9b8000d2a7){DATARMNET54338da2ff=kzalloc( +sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto +DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC) +;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto +DATARMNET1d7e728ddf;}DATARMNET9b8000d2a7=DATARMNET54338da2ff;refcount_set(& +DATARMNET9b8000d2a7->refcnt,(0xd26+209-0xdf6));rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x66\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long +long)virt_to_phys((void*)DATARMNET9b8000d2a7));}else{refcount_inc(& +DATARMNET9b8000d2a7->refcnt);}DATARMNET3cc114dce0->private_data= +DATARMNET9b8000d2a7;DATARMNETaea4c85748();return(0xd2d+202-0xdf7); +DATARMNET1d7e728ddf:DATARMNETaea4c85748();rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x46\x41\x49\x4c\x45\x44" "\n" +);return-ENOMEM;}static int DATARMNETb9d10d8cc0(struct inode*inode,struct file* +DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err( +"\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x6e\x65\x74\x64\x65\x76\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(!DATARMNET67d31dc40a){DATARMNET54338da2ff=kzalloc( +sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto +DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC) +;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto +DATARMNET1d7e728ddf;}DATARMNET67d31dc40a=DATARMNET54338da2ff;refcount_set(& +DATARMNET67d31dc40a->refcnt,(0xd26+209-0xdf6));rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x6e\x65\x74\x64\x65\x76\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long +long)virt_to_phys((void*)DATARMNET67d31dc40a));}else{refcount_inc(& +DATARMNET67d31dc40a->refcnt);}DATARMNET3cc114dce0->private_data= +DATARMNET67d31dc40a;DATARMNETaea4c85748();return(0xd2d+202-0xdf7); +DATARMNET1d7e728ddf:DATARMNETaea4c85748();return-ENOMEM;}static ssize_t +DATARMNETaf2aa1d70f(struct file*DATARMNET3cc114dce0,char __user*buf,size_t len, +loff_t*DATARMNET6396f657b3){return DATARMNET29d29f44cf;}static ssize_t +DATARMNET4761dcd3fd(struct file*DATARMNET3cc114dce0,const char __user*buf,size_t + len,loff_t*DATARMNET6396f657b3){return len;}static int DATARMNETcfbc4f0c39( +struct inode*inode,struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12* +DATARMNET54338da2ff;rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(DATARMNET410036d5ac){DATARMNET54338da2ff= +DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt) +<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree( +DATARMNET54338da2ff);DATARMNET410036d5ac=NULL;DATARMNET3cc114dce0->private_data= +NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748(); +return(0xd2d+202-0xdf7);}static int DATARMNET2a9f67714f(struct inode*inode, +struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff; +rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(DATARMNET19c47a9f3a){DATARMNET54338da2ff= +DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt) +<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree( +DATARMNET54338da2ff);DATARMNET19c47a9f3a=NULL;DATARMNET3cc114dce0->private_data= +NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748(); +return(0xd2d+202-0xdf7);}static int DATARMNET968bc5b80d(struct inode*inode, +struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff; +rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(DATARMNET22e796eff3){DATARMNET54338da2ff= +DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt) +<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree( +DATARMNET54338da2ff);DATARMNET22e796eff3=NULL;DATARMNET3cc114dce0->private_data= +NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748(); +return(0xd2d+202-0xdf7);}static int DATARMNET59b415aded(struct inode*inode, +struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff; +rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(DATARMNET9b8000d2a7){DATARMNET54338da2ff= +DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt) +<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree( +DATARMNET54338da2ff);DATARMNET9b8000d2a7=NULL;DATARMNET3cc114dce0->private_data= +NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748(); +return(0xd2d+202-0xdf7);}static int DATARMNET18464ea5e3(struct inode*inode, +struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff; +rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x6e\x65\x74\x64\x65\x76\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n" +);DATARMNET6bf538fa23();if(DATARMNET67d31dc40a){DATARMNET54338da2ff= +DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt) +<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree( +DATARMNET54338da2ff);DATARMNET67d31dc40a=NULL;DATARMNET3cc114dce0->private_data= +NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748(); +return(0xd2d+202-0xdf7);}static const struct proc_ops DATARMNET668485bd14={. +proc_mmap=DATARMNET54418f934d,.proc_open=DATARMNET33a80d3bf7,.proc_release= +DATARMNETcfbc4f0c39,.proc_read=DATARMNETaf2aa1d70f,.proc_write= +DATARMNET4761dcd3fd,};static const struct proc_ops DATARMNETe84fbaa6af={. +proc_mmap=DATARMNETc55748448d,.proc_open=DATARMNET0935e3beb9,.proc_release= +DATARMNET2a9f67714f,.proc_read=DATARMNETaf2aa1d70f,.proc_write= +DATARMNET4761dcd3fd,};static const struct proc_ops DATARMNET8fe5f892a8={. +proc_mmap=DATARMNET43c6d751a2,.proc_open=DATARMNETfbd34e70a2,.proc_release= +DATARMNET968bc5b80d,.proc_read=DATARMNETaf2aa1d70f,.proc_write= +DATARMNET4761dcd3fd,};static const struct proc_ops DATARMNET0104d40d4b={. +proc_mmap=DATARMNET7cc042bdf3,.proc_open=DATARMNET57bcb932f3,.proc_release= +DATARMNET59b415aded,.proc_read=DATARMNETaf2aa1d70f,.proc_write= +DATARMNET4761dcd3fd,};static const struct proc_ops DATARMNET6eb63d9ad0={. +proc_mmap=DATARMNET444e2eb654,.proc_open=DATARMNETb9d10d8cc0,.proc_release= +DATARMNET18464ea5e3,.proc_read=DATARMNETaf2aa1d70f,.proc_write= +DATARMNET4761dcd3fd,};void DATARMNET28a80d526e(struct DATARMNET6c78e47d24* +DATARMNETd2a694d52a,struct list_head*DATARMNETf0fb155a9c){struct +DATARMNETa52c09a590*DATARMNET0f551e8a47;if(!DATARMNETd2a694d52a||! +DATARMNETf0fb155a9c){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;} +DATARMNET0f551e8a47=kzalloc(sizeof(*DATARMNET0f551e8a47),GFP_ATOMIC);if( +DATARMNET0f551e8a47!=NULL){DATARMNET0f551e8a47->DATARMNET253a9fc708= +DATARMNETd2a694d52a->DATARMNET253a9fc708;DATARMNET0f551e8a47-> +DATARMNET42a992465f=DATARMNETd2a694d52a->DATARMNET7c894c2f8f;DATARMNET0f551e8a47 +->hash=DATARMNETd2a694d52a->hash;DATARMNET0f551e8a47->DATARMNET324c1a8f98= +DATARMNETd2a694d52a->DATARMNET324c1a8f98;DATARMNET0f551e8a47-> +DATARMNETbb80fccd97=DATARMNETd2a694d52a->DATARMNETbb80fccd97;list_add(& +DATARMNET0f551e8a47->DATARMNET6f898987df,DATARMNETf0fb155a9c);}else{ +DATARMNET68d84e7b98[DATARMNET6533f70c87]++;}}void DATARMNET3af54cd726(struct +list_head*DATARMNETf0fb155a9c){struct DATARMNETa52c09a590*DATARMNET0f551e8a47; +struct list_head*DATARMNET7b34b7b5be,*next;if(!DATARMNETf0fb155a9c){ +DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}list_for_each_safe( +DATARMNET7b34b7b5be,next,DATARMNETf0fb155a9c){DATARMNET0f551e8a47=list_entry( +DATARMNET7b34b7b5be,struct DATARMNETa52c09a590,DATARMNET6f898987df); +list_del_init(&DATARMNET0f551e8a47->DATARMNET6f898987df);kfree( +DATARMNET0f551e8a47);}}void DATARMNET24e4475345(struct DATARMNET6c78e47d24* +DATARMNETd2a694d52a,struct list_head*DATARMNETb436c3f30b){struct +DATARMNET09a412b1c6*DATARMNET4238158b2a;if(!DATARMNETd2a694d52a||! +DATARMNETb436c3f30b){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}if(! +DATARMNET362b15f941(DATARMNETd2a694d52a->DATARMNET7c894c2f8f)){ +DATARMNET4238158b2a=kzalloc(sizeof(*DATARMNET4238158b2a),GFP_ATOMIC);if( +DATARMNET4238158b2a!=NULL){DATARMNET4238158b2a->DATARMNET253a9fc708= +DATARMNETd2a694d52a->DATARMNET253a9fc708;DATARMNET4238158b2a-> +DATARMNET42a992465f=DATARMNETd2a694d52a->DATARMNET7c894c2f8f;DATARMNET4238158b2a +->hash=DATARMNETd2a694d52a->hash;DATARMNET4238158b2a->DATARMNET324c1a8f98= +DATARMNETd2a694d52a->DATARMNET324c1a8f98;list_add(&DATARMNET4238158b2a-> +DATARMNETd502c0412a,DATARMNETb436c3f30b);}else{DATARMNET68d84e7b98[ +DATARMNET6533f70c87]++;}}}void DATARMNETa1b141715b(struct list_head* +DATARMNETb436c3f30b){struct DATARMNET09a412b1c6*DATARMNET4238158b2a;struct +list_head*DATARMNET7b34b7b5be,*next;if(!DATARMNETb436c3f30b){DATARMNET68d84e7b98 +[DATARMNETac729c3d29]++;return;}list_for_each_safe(DATARMNET7b34b7b5be,next, +DATARMNETb436c3f30b){DATARMNET4238158b2a=list_entry(DATARMNET7b34b7b5be,struct +DATARMNET09a412b1c6,DATARMNETd502c0412a);list_del_init(&DATARMNET4238158b2a-> +DATARMNETd502c0412a);kfree(DATARMNET4238158b2a);}}void DATARMNETc6439e3d71( +struct DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6,struct DATARMNET228056d4b7* +DATARMNETf632b170b1,struct list_head*DATARMNETe46ae760db){u64 +DATARMNET264b01f4d5,DATARMNET53ce143c7e=(0xd2d+202-0xdf7);struct +DATARMNET47a6995138*DATARMNETace28a2c7f;int flows=(0xd2d+202-0xdf7);if(! +DATARMNETf632b170b1||!DATARMNETe46ae760db){DATARMNET68d84e7b98[ +DATARMNETac729c3d29]++;return;}flows=DATARMNET7bea4a06a6->DATARMNET73464778dc[ +DATARMNETf632b170b1->DATARMNET42a992465f].flows;DATARMNET264b01f4d5= +DATARMNET713717107f[DATARMNETf632b170b1->DATARMNET42a992465f]; +DATARMNET53ce143c7e=DATARMNET4793ed48af[DATARMNETf632b170b1->DATARMNET42a992465f +];DATARMNETace28a2c7f=kzalloc(sizeof(*DATARMNETace28a2c7f),GFP_ATOMIC);if( +DATARMNETace28a2c7f==NULL){DATARMNET68d84e7b98[DATARMNET6533f70c87]++;return;} +DATARMNETace28a2c7f->DATARMNET42a992465f=DATARMNETf632b170b1-> +DATARMNET42a992465f;if(flows<=(0xd2d+202-0xdf7)){DATARMNETace28a2c7f-> +DATARMNET18b7a5b761=DATARMNET264b01f4d5;DATARMNETace28a2c7f->DATARMNET4da6031170 +=DATARMNET264b01f4d5;DATARMNETace28a2c7f->DATARMNET4df302dbd6=(0xd2d+202-0xdf7); +list_add(&DATARMNETace28a2c7f->DATARMNET02523bfb57,DATARMNETe46ae760db);return;} +if(DATARMNETf632b170b1->DATARMNET324c1a8f98DATARMNET18b7a5b761=DATARMNET264b01f4d5-DATARMNETf632b170b1 +->DATARMNET324c1a8f98;}else{DATARMNETace28a2c7f->DATARMNET18b7a5b761= +(0xd2d+202-0xdf7);}if(DATARMNETf632b170b1->DATARMNET253a9fc708< +DATARMNET264b01f4d5){DATARMNETace28a2c7f->DATARMNET4da6031170= +DATARMNET264b01f4d5-DATARMNETf632b170b1->DATARMNET253a9fc708;}else{ +DATARMNETace28a2c7f->DATARMNET4da6031170=(0xd2d+202-0xdf7);}DATARMNETace28a2c7f +->DATARMNET4df302dbd6=DATARMNETf632b170b1->DATARMNETbb80fccd97;list_add(& +DATARMNETace28a2c7f->DATARMNET02523bfb57,DATARMNETe46ae760db);}void +DATARMNETb177316a15(struct list_head*DATARMNETe46ae760db){struct +DATARMNET47a6995138*DATARMNETace28a2c7f;struct list_head*DATARMNET7b34b7b5be,* +next;if(!DATARMNETe46ae760db){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return; +}list_for_each_safe(DATARMNET7b34b7b5be,next,DATARMNETe46ae760db){ +DATARMNETace28a2c7f=list_entry(DATARMNET7b34b7b5be,struct DATARMNET47a6995138, +DATARMNET02523bfb57);list_del_init(&DATARMNETace28a2c7f->DATARMNET02523bfb57); +kfree(DATARMNETace28a2c7f);}}void DATARMNET6f4b0915d3(struct DATARMNET6c78e47d24 +*DATARMNETd2a694d52a,struct list_head*DATARMNET3208cd0982){struct +DATARMNET13c47d154e*DATARMNETf02b2a5be7;if(!DATARMNETd2a694d52a||! +DATARMNET3208cd0982){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;} +DATARMNETf02b2a5be7=kzalloc(sizeof(*DATARMNETf02b2a5be7),GFP_ATOMIC);if( +DATARMNETf02b2a5be7!=NULL&&DATARMNETd2a694d52a->DATARMNET63b1a086d5!=NULL){ +DATARMNETf02b2a5be7->DATARMNET253a9fc708=DATARMNETd2a694d52a-> +DATARMNET253a9fc708;DATARMNETf02b2a5be7->DATARMNET42a992465f=DATARMNETd2a694d52a +->DATARMNET7c894c2f8f;DATARMNETf02b2a5be7->hash=DATARMNETd2a694d52a->hash; +DATARMNETf02b2a5be7->DATARMNET324c1a8f98=DATARMNETd2a694d52a-> +DATARMNET324c1a8f98;DATARMNETf02b2a5be7->DATARMNETbb80fccd97=DATARMNETd2a694d52a +->DATARMNETbb80fccd97;DATARMNETf02b2a5be7->trans_proto=DATARMNETd2a694d52a-> +DATARMNET1e9d25d9ff;DATARMNETf02b2a5be7->mux_id=DATARMNETd2a694d52a->mux_id; +DATARMNETf02b2a5be7->DATARMNET95266642d1=DATARMNETd2a694d52a-> +DATARMNET95266642d1;DATARMNETf02b2a5be7->DATARMNET0d682bcb29=DATARMNETd2a694d52a +->DATARMNET0d682bcb29;DATARMNETf02b2a5be7->DATARMNET20e8fc9db8= +DATARMNETd2a694d52a->DATARMNET20e8fc9db8;DATARMNETd2da2e8466( +"\x53\x48\x53\x5f\x48\x57\x5f\x43\x4f\x41\x4c\x5f\x4d\x45\x4d\x3a\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x79\x74\x65\x73\x20\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x75\x66\x73\x69\x7a\x65\x20\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75" +,DATARMNETf02b2a5be7->DATARMNET0d682bcb29,DATARMNETf02b2a5be7-> +DATARMNET20e8fc9db8);rm_err( +"\x53\x48\x53\x5f\x46\x4d\x55\x58\x3a\x20\x6d\x75\x78\x20\x69\x64\x20\x66\x6f\x72\x20\x66\x66\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x69\x73\x20\x25\x64\x20\x74\x70\x20\x25\x64" +,DATARMNETf02b2a5be7->hash,DATARMNETf02b2a5be7->mux_id,DATARMNETf02b2a5be7-> +trans_proto);memcpy(&DATARMNETf02b2a5be7->ip_hdr,&DATARMNETd2a694d52a-> +DATARMNET63b1a086d5->ip_hdr,sizeof(DATARMNETf02b2a5be7->ip_hdr));memcpy(& +DATARMNETf02b2a5be7->DATARMNETe33b41dad9,&DATARMNETd2a694d52a-> +DATARMNET63b1a086d5->DATARMNETe33b41dad9,sizeof(DATARMNETf02b2a5be7-> +DATARMNETe33b41dad9));list_add(&DATARMNETf02b2a5be7->DATARMNETec0e3cb8f0, +DATARMNET3208cd0982);}else{DATARMNET68d84e7b98[DATARMNET6533f70c87]++;}}void +DATARMNETcc489fbbad(struct list_head*DATARMNET3208cd0982){struct +DATARMNET13c47d154e*DATARMNETf02b2a5be7;struct list_head*DATARMNET7b34b7b5be,* +next;if(!DATARMNET3208cd0982){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return; +}list_for_each_safe(DATARMNET7b34b7b5be,next,DATARMNET3208cd0982){ +DATARMNETf02b2a5be7=list_entry(DATARMNET7b34b7b5be,struct DATARMNET13c47d154e, +DATARMNETec0e3cb8f0);list_del_init(&DATARMNETf02b2a5be7->DATARMNETec0e3cb8f0); +kfree(DATARMNETf02b2a5be7);}}void DATARMNET5157210c44(struct list_head* +DATARMNETe46ae760db){struct DATARMNET47a6995138*DATARMNETace28a2c7f;uint16_t idx +=(0xd2d+202-0xdf7);if(!DATARMNETe46ae760db){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x53\x43\x41\x50\x53\x3a\x20\x43\x50\x55\x20\x43\x61\x70\x61\x63\x69\x74\x69\x65\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}rm_err("\x25\x73", +"\x53\x48\x53\x5f\x53\x43\x41\x50\x53\x3a\x20\x53\x6f\x72\x74\x65\x64\x20\x43\x50\x55\x20\x43\x61\x70\x61\x63\x69\x74\x69\x65\x73\x3a" +);list_for_each_entry(DATARMNETace28a2c7f,DATARMNETe46ae760db, +DATARMNET02523bfb57){if(idx>=DATARMNETc6782fed88)break;rm_err( +"\x53\x48\x53\x5f\x53\x43\x41\x50\x53\x3a\x20\x3e\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x63\x61\x70\x61\x63\x69\x74\x79\x20\x3d\x20\x25\x6c\x6c\x75\x20\x7c\x20" +"\x61\x76\x67\x20\x70\x70\x73\x20\x63\x61\x70\x20\x3d\x20\x25\x6c\x6c\x75\x20\x62\x70\x73\x20\x3d\x20\x25\x6c\x6c\x75" +,DATARMNETace28a2c7f->DATARMNET42a992465f,DATARMNETace28a2c7f-> +DATARMNET18b7a5b761,DATARMNETace28a2c7f->DATARMNET4da6031170,DATARMNETace28a2c7f +->DATARMNET4df302dbd6);DATARMNET63c47f3c37[idx].DATARMNET4da6031170= +DATARMNETace28a2c7f->DATARMNET4da6031170;DATARMNET63c47f3c37[idx]. +DATARMNET18b7a5b761=DATARMNETace28a2c7f->DATARMNET18b7a5b761;DATARMNET63c47f3c37 +[idx].DATARMNET4df302dbd6=DATARMNETace28a2c7f->DATARMNET4df302dbd6; +DATARMNET63c47f3c37[idx].DATARMNET42a992465f=DATARMNETace28a2c7f-> +DATARMNET42a992465f;idx+=(0xd26+209-0xdf6);}rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x63\x61\x70\x5f\x64\x6d\x61\x5f\x70\x74\x72\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET410036d5ac), +DATARMNET410036d5ac);if(!DATARMNET410036d5ac){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x63\x61\x70\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}memcpy((char*)DATARMNET410036d5ac->data,(void*)&DATARMNET63c47f3c37[ +(0xd2d+202-0xdf7)],sizeof(DATARMNET63c47f3c37));}void DATARMNET0e273eab79(struct + list_head*DATARMNETb436c3f30b){struct DATARMNET09a412b1c6*DATARMNET4238158b2a; +uint16_t idx=(0xd2d+202-0xdf7);int DATARMNETcde08f6e7d=(0xd2d+202-0xdf7);if(! +DATARMNETb436c3f30b){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x53\x47\x4f\x4c\x44\x3a\x20\x47\x6f\x6c\x64\x20\x46\x6c\x6f\x77\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}rm_err("\x25\x73", +"\x53\x48\x53\x5f\x53\x47\x4f\x4c\x44\x3a\x20\x4c\x69\x73\x74\x20\x6f\x66\x20\x73\x6f\x72\x74\x65\x64\x20\x67\x6f\x6c\x64\x20\x66\x6c\x6f\x77\x73\x3a" +);list_for_each_entry(DATARMNET4238158b2a,DATARMNETb436c3f30b, +DATARMNETd502c0412a){if(DATARMNET4238158b2a->DATARMNET324c1a8f98== +(0xd2d+202-0xdf7)){continue;}if(idx>=DATARMNET75c69edb82){break;}rm_err( +"\x53\x48\x53\x5f\x53\x47\x4f\x4c\x44\x3a\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d" +,DATARMNET4238158b2a->hash,DATARMNET4238158b2a->DATARMNET324c1a8f98, +DATARMNET4238158b2a->DATARMNET42a992465f);DATARMNETcde08f6e7d+=(0xd26+209-0xdf6) +;DATARMNET22b4032799[idx].DATARMNET42a992465f=DATARMNET4238158b2a-> +DATARMNET42a992465f;DATARMNET22b4032799[idx].hash=DATARMNET4238158b2a->hash; +DATARMNET22b4032799[idx].DATARMNET253a9fc708=DATARMNET4238158b2a-> +DATARMNET253a9fc708;DATARMNET22b4032799[idx].DATARMNET324c1a8f98= +DATARMNET4238158b2a->DATARMNET324c1a8f98;idx+=(0xd26+209-0xdf6);}rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x67\x66\x6c\x6f\x77\x5f\x64\x6d\x61\x5f\x70\x74\x72\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET19c47a9f3a), +DATARMNET19c47a9f3a);if(!DATARMNET19c47a9f3a){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x67\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}rm_err( +"\x53\x48\x53\x5f\x53\x47\x4f\x4c\x44\x3a\x20\x6e\x75\x6d\x20\x67\x6f\x6c\x64\x20\x66\x6c\x6f\x77\x73\x20\x3d\x20\x25\x75" "\n" +,idx);memcpy(((char*)DATARMNET19c47a9f3a->data),&idx,sizeof(idx));memcpy(((char* +)DATARMNET19c47a9f3a->data+sizeof(uint16_t)),(void*)&DATARMNET22b4032799[ +(0xd2d+202-0xdf7)],sizeof(DATARMNET22b4032799));}void DATARMNETe15af8eb6d(struct + list_head*DATARMNETf0fb155a9c){struct DATARMNETa52c09a590*DATARMNET0f551e8a47; +uint16_t idx=(0xd2d+202-0xdf7);int DATARMNET6d96003717=(0xd2d+202-0xdf7);if(! +DATARMNETf0fb155a9c){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x53\x53\x20\x46\x6c\x6f\x77\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}rm_err("\x25\x73", +"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x4c\x69\x73\x74\x20\x6f\x66\x20\x73\x6f\x72\x74\x65\x64\x20\x73\x73\x20\x66\x6c\x6f\x77\x73\x3a" +);list_for_each_entry(DATARMNET0f551e8a47,DATARMNETf0fb155a9c, +DATARMNET6f898987df){if(DATARMNET0f551e8a47->DATARMNET324c1a8f98== +(0xd2d+202-0xdf7)){continue;}if(idx>=DATARMNET75c69edb82){break;}rm_err( +"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d" +,DATARMNET0f551e8a47->hash,DATARMNET0f551e8a47->DATARMNET324c1a8f98, +DATARMNET0f551e8a47->DATARMNET42a992465f);DATARMNET6d96003717+=(0xd26+209-0xdf6) +;DATARMNETb0d78d576f[idx].DATARMNET42a992465f=DATARMNET0f551e8a47-> +DATARMNET42a992465f;DATARMNETb0d78d576f[idx].hash=DATARMNET0f551e8a47->hash; +DATARMNETb0d78d576f[idx].DATARMNET253a9fc708=DATARMNET0f551e8a47-> +DATARMNET253a9fc708;DATARMNETb0d78d576f[idx].DATARMNET324c1a8f98= +DATARMNET0f551e8a47->DATARMNET324c1a8f98;DATARMNETb0d78d576f[idx]. +DATARMNETbb80fccd97=DATARMNET0f551e8a47->DATARMNETbb80fccd97;idx+= +(0xd26+209-0xdf6);}rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x73\x73\x66\x6c\x6f\x77\x5f\x64\x6d\x61\x5f\x70\x74\x72\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET22e796eff3), +DATARMNET22e796eff3);if(!DATARMNET22e796eff3){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x73\x73\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}rm_err( +"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x6e\x75\x6d\x20\x73\x73\x20\x66\x6c\x6f\x77\x73\x20\x3d\x20\x25\x75" "\n" +,idx);memcpy(((char*)DATARMNET22e796eff3->data),&idx,sizeof(idx));memcpy(((char* +)DATARMNET22e796eff3->data+sizeof(uint16_t)),(void*)&DATARMNETb0d78d576f[ +(0xd2d+202-0xdf7)],sizeof(DATARMNETb0d78d576f));}void DATARMNET78f3a0ca4f(struct + list_head*DATARMNET3208cd0982){struct DATARMNET13c47d154e*DATARMNETf02b2a5be7; +uint16_t idx=(0xd2d+202-0xdf7);int DATARMNETd31ee74d2e=(0xd2d+202-0xdf7);if(! +DATARMNET3208cd0982){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x54\x4f\x50\x3a\x20\x46\x69\x6c\x74\x65\x72\x20\x46\x6c\x6f\x77\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}rm_err("\x25\x73", +"\x53\x48\x53\x5f\x54\x4f\x50\x3a\x20\x4c\x69\x73\x74\x20\x6f\x66\x20\x54\x4f\x50\x20\x66\x69\x6c\x74\x65\x72\x20\x66\x6c\x6f\x77\x73\x3a" +);list_for_each_entry(DATARMNETf02b2a5be7,DATARMNET3208cd0982, +DATARMNETec0e3cb8f0){if(DATARMNETf02b2a5be7->DATARMNET324c1a8f98== +(0xd2d+202-0xdf7)){continue;}if(idx>=DATARMNET67578af78f){break;}rm_err( +"\x53\x48\x53\x5f\x54\x4f\x50\x3a\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d" +,DATARMNETf02b2a5be7->hash,DATARMNETf02b2a5be7->DATARMNET324c1a8f98, +DATARMNETf02b2a5be7->DATARMNET42a992465f);DATARMNETd31ee74d2e+=(0xd26+209-0xdf6) +;memcpy(&(DATARMNET3d25ff4ef4[idx].ip_hdr),&(DATARMNETf02b2a5be7->ip_hdr),sizeof +(DATARMNET3d25ff4ef4[idx].ip_hdr));memcpy(&(DATARMNET3d25ff4ef4[idx]. +DATARMNETe33b41dad9),&(DATARMNETf02b2a5be7->DATARMNETe33b41dad9),sizeof( +DATARMNET3d25ff4ef4[idx].DATARMNETe33b41dad9));DATARMNET3d25ff4ef4[idx]. +DATARMNET42a992465f=DATARMNETf02b2a5be7->DATARMNET42a992465f;DATARMNET3d25ff4ef4 +[idx].hash=DATARMNETf02b2a5be7->hash;DATARMNET3d25ff4ef4[idx]. +DATARMNET253a9fc708=DATARMNETf02b2a5be7->DATARMNET253a9fc708;DATARMNET3d25ff4ef4 +[idx].DATARMNET324c1a8f98=DATARMNETf02b2a5be7->DATARMNET324c1a8f98; +DATARMNET3d25ff4ef4[idx].DATARMNETbb80fccd97=DATARMNETf02b2a5be7-> +DATARMNETbb80fccd97;DATARMNET3d25ff4ef4[idx].trans_proto=DATARMNETf02b2a5be7-> +trans_proto;DATARMNET3d25ff4ef4[idx].mux_id=DATARMNETf02b2a5be7->mux_id; +DATARMNET3d25ff4ef4[idx].DATARMNET95266642d1=DATARMNETf02b2a5be7-> +DATARMNET95266642d1;DATARMNET3d25ff4ef4[idx].DATARMNET0d682bcb29= +DATARMNETf02b2a5be7->DATARMNET0d682bcb29;DATARMNET3d25ff4ef4[idx]. +DATARMNET20e8fc9db8=DATARMNETf02b2a5be7->DATARMNET20e8fc9db8;idx+= +(0xd26+209-0xdf6);}rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x66\x66\x6c\x6f\x77\x5f\x64\x6d\x61\x5f\x70\x74\x72\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET9b8000d2a7), +DATARMNET9b8000d2a7);if(!DATARMNET9b8000d2a7){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x66\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}rm_err( +"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x6e\x75\x6d\x20\x66\x66\x6c\x6f\x77\x73\x20\x3d\x20\x25\x75" "\n" +,idx);memcpy(((char*)DATARMNET9b8000d2a7->data),&idx,sizeof(idx));memcpy(((char* +)DATARMNET9b8000d2a7->data+sizeof(uint16_t)),(void*)&DATARMNET3d25ff4ef4[ +(0xd2d+202-0xdf7)],sizeof(DATARMNET3d25ff4ef4));}void DATARMNET78666f33a1(void){ +struct rmnet_priv*priv;struct DATARMNET9b44b71ee9*ep=NULL;u16 idx= +(0xd2d+202-0xdf7);u16 count=(0xd2d+202-0xdf7);rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x65\x6e\x74\x65\x72\x20\x25\x75" "\n" +,idx);list_for_each_entry(ep,&DATARMNET30a3e83974,DATARMNET0763436b8d){count+= +(0xd26+209-0xdf6);rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x65\x6e\x74\x65\x72\x20\x65\x70\x20\x25\x75" "\n" +,count);if(!ep->DATARMNET4a4e6f66b5){rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x69\x73\x20\x4e\x4f\x54\x20\x61\x63\x74\x69\x76\x65" "\n" +,count);continue;}rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x69\x73\x20\x61\x63\x74\x69\x76\x65\x20\x61\x6e\x64\x20\x6e\x6f\x74\x20\x6e\x75\x6c\x6c" "\n" +,count);if(idx>=DATARMNETe4d15b9332){break;}priv=netdev_priv(ep->ep);if(!priv){ +rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x70\x72\x69\x76\x20\x66\x6f\x72\x20\x65\x70\x20\x25\x75\x20\x69\x73\x20\x6e\x75\x6c\x6c" "\n" +,count);continue;}rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x6e\x61\x6d\x65\x20\x3d\x20\x25\x73\x20" "\n" +,count,ep->ep->name);rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x6d\x75\x78\x5f\x69\x64\x20\x3d\x20\x25\x75\x20" "\n" +,count,priv->mux_id);rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x69\x70\x5f\x6d\x69\x73\x73\x20\x3d\x20\x25\x6c\x75\x20" "\n" +,count,priv->stats.coal.close.ip_miss);rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x63\x6f\x61\x6c\x5f\x72\x78\x5f\x70\x6b\x74\x73\x20\x3d\x20\x25\x6c\x75\x20" "\n" +,count,priv->stats.coal.coal_pkts);rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x75\x64\x70\x5f\x72\x78\x5f\x62\x70\x73\x20\x3d\x20\x25\x6c\x75\x20" "\n" +,count,ep->DATARMNET257fc4b2d4);rm_err( +"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x74\x63\x70\x5f\x72\x78\x5f\x62\x70\x73\x20\x3d\x20\x25\x6c\x75\x20" "\n" +,count,ep->DATARMNET4eb77c78e6);DATARMNETf46265286b[idx].DATARMNET77de6e34f2= +priv->stats.coal.close.ip_miss;DATARMNETf46265286b[idx].hw_evict=priv->stats. +coal.close.hw_evict;DATARMNETf46265286b[idx].coal_tcp=priv->stats.coal.coal_tcp; +DATARMNETf46265286b[idx].coal_tcp_bytes=priv->stats.coal.coal_tcp_bytes; +DATARMNETf46265286b[idx].coal_udp=priv->stats.coal.coal_udp;DATARMNETf46265286b[ +idx].coal_udp_bytes=priv->stats.coal.coal_udp_bytes;DATARMNETf46265286b[idx]. +mux_id=priv->mux_id;strlcpy(DATARMNETf46265286b[idx].name,ep->ep->name,sizeof( +DATARMNETf46265286b[idx].name));DATARMNETf46265286b[idx].DATARMNET870c3dafcb= +priv->stats.coal.coal_pkts;DATARMNETf46265286b[idx].DATARMNET4eb77c78e6=ep-> +DATARMNET4eb77c78e6;DATARMNETf46265286b[idx].DATARMNET257fc4b2d4=ep-> +DATARMNET257fc4b2d4;idx+=(0xd26+209-0xdf6);}rm_err( +"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x6e\x65\x74\x64\x65\x76\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n" +,(unsigned long long)virt_to_phys((void*)DATARMNET67d31dc40a), +DATARMNET67d31dc40a);if(!DATARMNET67d31dc40a){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x6e\x65\x74\x64\x65\x76\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c" +);return;}memcpy(((char*)DATARMNET67d31dc40a->data),&idx,sizeof(idx));memcpy((( +char*)DATARMNET67d31dc40a->data+sizeof(uint16_t)),(void*)&DATARMNETf46265286b[ +(0xd2d+202-0xdf7)],sizeof(DATARMNETf46265286b));}void DATARMNETf5f83b943f(void){ +kuid_t DATARMNETdaca088404;kgid_t DATARMNET254aa091f2;DATARMNETe4c5563cdb= +proc_mkdir("\x73\x68\x73",NULL);if(!DATARMNETe4c5563cdb){rm_err("\x25\x73", +"\x53\x48\x53\x5f\x4d\x45\x4d\x5f\x49\x4e\x49\x54\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x72\x65\x61\x74\x65\x20\x70\x72\x6f\x63\x20\x64\x69\x72" +);return;}DATARMNETdaca088404=make_kuid(&init_user_ns,(0xdc7+2646-0x1434)); +DATARMNET254aa091f2=make_kgid(&init_user_ns,(0xdc7+2646-0x1434));if(uid_valid( +DATARMNETdaca088404)&&gid_valid(DATARMNET254aa091f2))proc_set_user( +DATARMNETe4c5563cdb,DATARMNETdaca088404,DATARMNET254aa091f2);proc_create( +DATARMNET41be983a65,(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,&DATARMNET668485bd14 +);proc_create(DATARMNET5ddc91451c,(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,& +DATARMNETe84fbaa6af);proc_create(DATARMNETeb2a21dd7c,(0xdb7+6665-0x261c), +DATARMNETe4c5563cdb,&DATARMNET8fe5f892a8);proc_create(DATARMNET1c4ea23858, +(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,&DATARMNET0104d40d4b);proc_create( +DATARMNETe98d39b779,(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,&DATARMNET6eb63d9ad0 +);DATARMNET6bf538fa23();DATARMNET410036d5ac=NULL;DATARMNET19c47a9f3a=NULL; +DATARMNET22e796eff3=NULL;DATARMNET9b8000d2a7=NULL;DATARMNET67d31dc40a=NULL; +DATARMNETaea4c85748();}void DATARMNET28d33bd09f(void){remove_proc_entry( +DATARMNET41be983a65,DATARMNETe4c5563cdb);remove_proc_entry(DATARMNET5ddc91451c, +DATARMNETe4c5563cdb);remove_proc_entry(DATARMNETeb2a21dd7c,DATARMNETe4c5563cdb); +remove_proc_entry(DATARMNET1c4ea23858,DATARMNETe4c5563cdb);remove_proc_entry( +DATARMNETe98d39b779,DATARMNETe4c5563cdb);remove_proc_entry(DATARMNET6517f07a36, +NULL);DATARMNET6bf538fa23();DATARMNET410036d5ac=NULL;DATARMNET19c47a9f3a=NULL; +DATARMNET22e796eff3=NULL;DATARMNET9b8000d2a7=NULL;DATARMNET67d31dc40a=NULL; +DATARMNETaea4c85748();} diff --git a/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.h b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.h new file mode 100644 index 0000000000..367cd3191b --- /dev/null +++ b/qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.h @@ -0,0 +1,69 @@ +/* Copyright (c) 2019-2020 The Linux Foundation. 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. + * + */ + +#ifndef DATARMNETe10fe0b1e0 +#define DATARMNETe10fe0b1e0 +#include "rmnet_shs.h" +#define DATARMNET6517f07a36 "\x73\x68\x73" +#define DATARMNET41be983a65 \ +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x63\x61\x70\x73" +#define DATARMNET5ddc91451c \ +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x66\x6c\x6f\x77\x73" +#define DATARMNETeb2a21dd7c \ +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x73\x73\x5f\x66\x6c\x6f\x77\x73" +#define DATARMNET1c4ea23858 \ +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x66\x66\x6c\x6f\x77\x73" +#define DATARMNETe98d39b779 \ +"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6e\x65\x74\x64\x65\x76" +#define DATARMNET67578af78f ((0xd11+230-0xdf3)) +#define DATARMNET75c69edb82 ((0xef7+694-0x112d)) +#define DATARMNETe4d15b9332 ((0xec7+1166-0x132d)) +#define DATARMNET9ae5f81f71 ((0xeb7+1158-0x132d)) +#define DATARMNET29d29f44cf ((0xd2d+202-0xdf7)) +struct __attribute__((__packed__))DATARMNET33582f7450{u64 DATARMNET18b7a5b761; +u64 DATARMNET4da6031170;u64 DATARMNET4df302dbd6;u16 DATARMNET42a992465f;};struct + __attribute__((__packed__))DATARMNETf44cda1bf2{u64 DATARMNET324c1a8f98;u64 +DATARMNET253a9fc708;u64 DATARMNETbb80fccd97;u32 hash;u16 DATARMNET42a992465f;}; +struct __attribute__((__packed__))DATARMNET3a84fbfeae{u64 DATARMNET324c1a8f98; +u64 DATARMNET253a9fc708;u64 DATARMNETbb80fccd97;u32 hash;u16 DATARMNET42a992465f +;};struct __attribute__((__packed__))DATARMNETc13d990bf1{union{struct iphdr +DATARMNETac9bbaad7c;struct ipv6hdr DATARMNET1688a97aa4;}ip_hdr;union{struct +tcphdr tp;struct udphdr up;}DATARMNETe33b41dad9;u64 DATARMNET324c1a8f98;u64 +DATARMNET253a9fc708;u64 DATARMNETbb80fccd97;u64 DATARMNET95266642d1;u64 +DATARMNET0d682bcb29;u64 DATARMNET20e8fc9db8;u32 hash;u16 DATARMNET42a992465f;u16 + trans_proto;u8 mux_id;};struct __attribute__((__packed__))DATARMNET57ccbe14f3{ +char name[DATARMNET9ae5f81f71];u64 DATARMNET77de6e34f2;u64 hw_evict;u64 +DATARMNET870c3dafcb;u64 coal_tcp;u64 coal_tcp_bytes;u64 coal_udp;u64 +coal_udp_bytes;u64 DATARMNET257fc4b2d4;u64 DATARMNET4eb77c78e6;u8 mux_id;}; +extern struct list_head DATARMNET6c23f11e81;extern struct list_head +DATARMNETf91b305f4e;extern struct list_head DATARMNET3208cd0982;extern struct +list_head DATARMNETe46ae760db;enum{DATARMNETbd4083a6a4=(0x24f5+499-0x16e8)}; +struct DATARMNETa41d4c4a12{char*data;refcount_t refcnt;};void +DATARMNET28a80d526e(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct +list_head*DATARMNETf0fb155a9c);void DATARMNET24e4475345(struct +DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct list_head*DATARMNETb436c3f30b); +void DATARMNET6f4b0915d3(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct +list_head*DATARMNET3208cd0982);void DATARMNETa1b141715b(struct list_head* +DATARMNETb436c3f30b);void DATARMNET3af54cd726(struct list_head* +DATARMNETf0fb155a9c);void DATARMNETcc489fbbad(struct list_head* +DATARMNET3208cd0982);void DATARMNETc6439e3d71(struct DATARMNETc8fdbf9c85* +DATARMNET7bea4a06a6,struct DATARMNET228056d4b7*DATARMNETf632b170b1,struct +list_head*DATARMNETe46ae760db);void DATARMNETb177316a15(struct list_head* +DATARMNETe46ae760db);void DATARMNET5157210c44(struct list_head* +DATARMNETe46ae760db);void DATARMNET0e273eab79(struct list_head* +DATARMNETb436c3f30b);void DATARMNETe15af8eb6d(struct list_head* +DATARMNETf0fb155a9c);void DATARMNET78f3a0ca4f(struct list_head* +DATARMNET3208cd0982);void DATARMNET78666f33a1(void);void DATARMNETf5f83b943f( +void);void DATARMNET28d33bd09f(void); +#endif + diff --git a/qcom/opensource/datarmnet-ext/wlan/Android.mk b/qcom/opensource/datarmnet-ext/wlan/Android.mk new file mode 100644 index 0000000000..6646a675b7 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/Android.mk @@ -0,0 +1,24 @@ +ifneq ($(TARGET_BOARD_AUTO),true) +ifneq ($(TARGET_BOARD_PLATFORM),qssi) + +RMNET_WLAN_DLKM_PLATFORMS_LIST := lahaina +RMNET_WLAN_DLKM_PLATFORMS_LIST += holi +RMNET_WLAN_DLKM_PLATFORMS_LIST += taro +RMNET_WLAN_DLKM_PLATFORMS_LIST += parrot + +ifeq ($(call is-board-platform-in-list, $(RMNET_WLAN_DLKM_PLATFORMS_LIST)),true) +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) + +LOCAL_MODULE := rmnet_wlan.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 diff --git a/qcom/opensource/datarmnet-ext/wlan/Kbuild b/qcom/opensource/datarmnet-ext/wlan/Kbuild new file mode 100644 index 0000000000..2f105f3814 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/Kbuild @@ -0,0 +1,8 @@ +obj-m += rmnet_wlan.o +ccflags-y := $(call cc-option,-Wno-misleading-indentation) +rmnet_wlan-y := \ + rmnet_wlan_main.o \ + rmnet_wlan_genl.o \ + rmnet_wlan_stats.o \ + rmnet_wlan_fragment.o \ + rmnet_wlan_connection.o diff --git a/qcom/opensource/datarmnet-ext/wlan/Kconfig b/qcom/opensource/datarmnet-ext/wlan/Kconfig new file mode 100644 index 0000000000..34d7ba84ec --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/Kconfig @@ -0,0 +1,9 @@ +# +# RMNET_WLAN driver +# + +menuconfig RMNET_WLAN + tristate "Rmnet WLAN support" + default m + ---help--- + WLAN processing module for RmNet driver diff --git a/qcom/opensource/datarmnet-ext/wlan/Makefile b/qcom/opensource/datarmnet-ext/wlan/Makefile new file mode 100644 index 0000000000..8a32d211f8 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/Makefile @@ -0,0 +1,15 @@ +#By default build for CLD +RMNET_WLAN_SELECT := CONFIG_RMNET_WLAN=m +KBUILD_OPTIONS += $(RMNET_WLAN_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 diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan.h b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan.h new file mode 100644 index 0000000000..88f9b7c321 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan.h @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * RMNET WLAN handler framework + * + */ + +#ifndef DATARMNETc7bc459123 +#define DATARMNETc7bc459123 +#include +#include +#include +#include +struct DATARMNETb89ecedefc{union{__be16 DATARMNETf0d9de7e2f;__be32 +DATARMNET906b2ee561;};u8 DATARMNET0d956cc77a;u8 DATARMNET4924e79411;};struct +DATARMNET8d3c2559ca{struct net_device*DATARMNET57656f6f2f;union{__be32 +DATARMNET0dc14167a1;struct in6_addr DATARMNET5700daac01;};u8 DATARMNET0d956cc77a +;u8 DATARMNET9954a624ac;};struct DATARMNET41b426061d{struct hlist_node +DATARMNETe8608dd267;struct rcu_head DATARMNET28bfe9e6ad;struct notifier_block +DATARMNET272c159b3c;char DATARMNET852d4d00e2[IFNAMSIZ];struct +DATARMNET8d3c2559ca DATARMNET7ed5754a5c;};enum{DATARMNET356f2a237e, +DATARMNET45ee632553,DATARMNET9bfbc31cd6,DATARMNETdcafdec32a,};void +DATARMNET7ca470d54b(struct sk_buff*DATARMNET543491eb0f,u32 DATARMNET1464100e7a); +int DATARMNET4899053671(struct sk_buff*DATARMNET543491eb0f,struct +DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e);bool DATARMNET4eafcdee07(struct +DATARMNETb89ecedefc*DATARMNET3396919a68);int DATARMNET53f12a0f7d(struct +DATARMNETb89ecedefc*DATARMNETcadc2ef9aa,u32 DATARMNETef77661260,struct genl_info +*DATARMNET54338da2ff);int DATARMNET07f6485c9b(struct DATARMNETb89ecedefc* +DATARMNETcadc2ef9aa,u32 DATARMNETef77661260,struct genl_info*DATARMNET54338da2ff +);int DATARMNETe14c875532(struct sk_buff**DATARMNET89946cec52,struct genl_family +*DATARMNET4a4aca7220,struct genl_info*DATARMNET54338da2ff);int +DATARMNET97b2388e63(char*DATARMNET852d4d00e2,struct genl_info* +DATARMNET54338da2ff);int DATARMNETa903cd5994(char*DATARMNET852d4d00e2,struct +genl_info*DATARMNET54338da2ff);int DATARMNET92e5468fc5(char*DATARMNET852d4d00e2, +struct genl_info*DATARMNET54338da2ff);int DATARMNET9d7bb9a63d(char* +DATARMNET852d4d00e2,struct genl_info*DATARMNET54338da2ff);int +DATARMNET947eb110d2(struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e,struct +genl_info*DATARMNET54338da2ff);int DATARMNETb8b35fdc18(struct +DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e,struct genl_info*DATARMNET54338da2ff); +int DATARMNET8d5a5a7047(__be16 DATARMNETf0d9de7e2f,struct genl_info* +DATARMNET54338da2ff);int DATARMNETc97c6a4265(__be16 DATARMNETf0d9de7e2f,struct +genl_info*DATARMNET54338da2ff);bool DATARMNETa8b2566e6a(struct sk_buff* +DATARMNET543491eb0f,struct DATARMNETb89ecedefc*DATARMNET3396919a68,int +DATARMNET611d08d671);int DATARMNET59b8376224(__be16 DATARMNETf0d9de7e2f,struct +genl_info*DATARMNET54338da2ff);int DATARMNET0b12e969c5(__be16 +DATARMNETf0d9de7e2f,struct genl_info*DATARMNET54338da2ff);bool +DATARMNET0a4704e5e0(struct DATARMNETb89ecedefc*DATARMNET3396919a68);int +DATARMNET078f6bd384(void);void DATARMNETfae36afa03(void);char* +DATARMNET934406764d(void);char*DATARMNETe447822105(void);struct +DATARMNET41b426061d*DATARMNETcc0a01df2a(struct DATARMNET8d3c2559ca* +DATARMNET54338da2ff); +#endif + diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_connection.c b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_connection.c new file mode 100644 index 0000000000..f381fcd027 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_connection.c @@ -0,0 +1,317 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * RMNET WLAN connection management framework + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "rmnet_wlan.h" +#include "rmnet_wlan_connection.h" +#include "rmnet_wlan_stats.h" +#define DATARMNET5da8c68c19 (2000000000) +#define DATARMNET8fc07fbb24 ((0xeb7+1158-0x132d)) +#define DATARMNETeaf0945284 \ + (const_ilog2(DATARMNET8fc07fbb24)) +struct DATARMNET4f49486833{struct hlist_node DATARMNETe8608dd267;struct rcu_head + DATARMNET28bfe9e6ad;struct hrtimer DATARMNET9f31ce5d2d;struct +DATARMNET0ca9d8ead7 DATARMNET54338da2ff;struct DATARMNET8d3c2559ca +DATARMNET7ed5754a5c;};static DEFINE_SPINLOCK(DATARMNET820642743b);static +DEFINE_HASHTABLE(DATARMNET5413d6f8ec,DATARMNETeaf0945284);static bool +DATARMNET5f3c9ed4da(struct DATARMNET0ca9d8ead7*DATARMNET75decd6f60,struct +DATARMNET0ca9d8ead7*DATARMNET6745cad668){if(DATARMNET75decd6f60-> +DATARMNET0d956cc77a!=DATARMNET6745cad668->DATARMNET0d956cc77a)return false;if( +DATARMNET75decd6f60->DATARMNET0d956cc77a==(0xd11+230-0xdf3))return +DATARMNET75decd6f60->DATARMNETdfe430c2d6==DATARMNET6745cad668-> +DATARMNETdfe430c2d6&&DATARMNET75decd6f60->DATARMNET2cb607d686== +DATARMNET6745cad668->DATARMNET2cb607d686;return!ipv6_addr_cmp(& +DATARMNET75decd6f60->DATARMNET815cbb4bf5,&DATARMNET6745cad668-> +DATARMNET815cbb4bf5)&&!ipv6_addr_cmp(&DATARMNET75decd6f60->DATARMNETc3f31215b7,& +DATARMNET6745cad668->DATARMNETc3f31215b7);}static enum hrtimer_restart +DATARMNET299a8a08b5(struct hrtimer*DATARMNET6e4292679f){struct +DATARMNET4f49486833*DATARMNET63b1a086d5;unsigned long DATARMNETfb0677cc3c; +spin_lock_irqsave(&DATARMNET820642743b,DATARMNETfb0677cc3c);DATARMNET63b1a086d5= +container_of(DATARMNET6e4292679f,struct DATARMNET4f49486833,DATARMNET9f31ce5d2d) +;hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu( +DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);spin_unlock_irqrestore(& +DATARMNET820642743b,DATARMNETfb0677cc3c);return HRTIMER_NORESTART;}static +rx_handler_result_t DATARMNETc9ed97754a(struct sk_buff*DATARMNET543491eb0f, +uint8_t DATARMNET1a901c3d09){if(DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f-> +protocol==htons(ETH_P_IP))&&DATARMNET1a901c3d09==DATARMNET9bfbc31cd6){struct +iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;struct net_device* +DATARMNET813ca18d06=NULL;struct flowi4 DATARMNET099aa93adc={};struct rtable* +DATARMNET066b8bd537;struct neighbour*DATARMNET3f85732c70;int DATARMNET268a8314cf +=(0xd2d+202-0xdf7);DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f, +(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(! +DATARMNET86f1f2cdc9){DATARMNET17f6bc1be5(DATARMNET15454f969d);goto +DATARMNETc1174a0f45;}DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net, +DATARMNET934406764d());if(!DATARMNET813ca18d06){DATARMNET17f6bc1be5( +DATARMNETfa4b3dd44a);goto DATARMNETc1174a0f45;}DATARMNET543491eb0f->dev= +DATARMNET813ca18d06;memcpy(&DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9-> +saddr,sizeof(__be32));memcpy(&DATARMNET099aa93adc.daddr,&DATARMNET86f1f2cdc9-> +daddr,sizeof(__be32));DATARMNET099aa93adc.flowi4_oif=DATARMNET813ca18d06-> +ifindex;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537 +=ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR( +DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET72ab5e86d8);goto +DATARMNETc1174a0f45;}DATARMNET3f85732c70=dst_neigh_lookup(&DATARMNET066b8bd537-> +dst,&DATARMNET099aa93adc.daddr);ip_rt_put(DATARMNET066b8bd537);if(! +DATARMNET3f85732c70){DATARMNET17f6bc1be5(DATARMNET0e6bd55b8b);goto +DATARMNETc1174a0f45;}if(DATARMNET3f85732c70->dev!=DATARMNET543491eb0f->dev||! +DATARMNET3f85732c70->dev->header_ops){DATARMNET17f6bc1be5(DATARMNET64aecaa865); +neigh_release(DATARMNET3f85732c70);goto DATARMNETc1174a0f45;}DATARMNET268a8314cf +=neigh_resolve_output(DATARMNET3f85732c70,DATARMNET543491eb0f);neigh_release( +DATARMNET3f85732c70);if(likely(DATARMNET268a8314cf==NET_XMIT_SUCCESS|| +DATARMNET268a8314cf==NET_XMIT_CN)){DATARMNET17f6bc1be5(DATARMNETc1b437465b);} +else{DATARMNET17f6bc1be5(DATARMNET43a65c0be7);}return RX_HANDLER_CONSUMED;}else +if(DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)) +&&DATARMNET1a901c3d09==DATARMNET9bfbc31cd6){struct ipv6hdr*DATARMNETbf55123e5b, +DATARMNETcf1d9e2c1e;struct net_device*DATARMNET813ca18d06=NULL;struct flowi6 +DATARMNET8fbe36a2fa={};struct neighbour*DATARMNET3f85732c70;struct dst_entry*dst +;int DATARMNET268a8314cf=(0xd2d+202-0xdf7);DATARMNETbf55123e5b= +skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(* +DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b){ +DATARMNET17f6bc1be5(DATARMNET72f4fdd48a);goto DATARMNETc1174a0f45;} +DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,DATARMNET934406764d());if(! +DATARMNET813ca18d06){DATARMNET17f6bc1be5(DATARMNET9cff15f94d);goto +DATARMNETc1174a0f45;}DATARMNET543491eb0f->dev=DATARMNET813ca18d06;memcpy(& +DATARMNET8fbe36a2fa.saddr,&DATARMNETbf55123e5b->saddr,sizeof(struct in6_addr)); +memcpy(&DATARMNET8fbe36a2fa.daddr,&DATARMNETbf55123e5b->daddr,sizeof(struct +in6_addr));DATARMNET8fbe36a2fa.flowi6_oif=DATARMNET813ca18d06->ifindex; +DATARMNET8fbe36a2fa.flowi6_flags=FLOWI_FLAG_KNOWN_NH;dst=ipv6_stub-> +ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if(IS_ERR(dst)){ +DATARMNET17f6bc1be5(DATARMNETbf6e6853f9);goto DATARMNETc1174a0f45;} +DATARMNET3f85732c70=dst_neigh_lookup(dst,&DATARMNET8fbe36a2fa.daddr);dst_release +(dst);if(!DATARMNET3f85732c70){DATARMNET17f6bc1be5(DATARMNETa0da722329);goto +DATARMNETc1174a0f45;}if(DATARMNET3f85732c70->dev!=DATARMNET543491eb0f->dev||! +DATARMNET3f85732c70->dev->header_ops){DATARMNET17f6bc1be5(DATARMNET729e252fb9); +neigh_release(DATARMNET3f85732c70);goto DATARMNETc1174a0f45;}DATARMNET268a8314cf +=neigh_resolve_output(DATARMNET3f85732c70,DATARMNET543491eb0f);neigh_release( +DATARMNET3f85732c70);if(likely(DATARMNET268a8314cf==NET_XMIT_SUCCESS|| +DATARMNET268a8314cf==NET_XMIT_CN)){DATARMNET17f6bc1be5(DATARMNET04311361a2);} +else{DATARMNET17f6bc1be5(DATARMNET13bbe5f5c5);}return RX_HANDLER_CONSUMED;}else +if(DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IP))&& +DATARMNET1a901c3d09==DATARMNET45ee632553){struct iphdr*DATARMNET86f1f2cdc9, +DATARMNETbf6548198e;struct net_device*DATARMNET813ca18d06=NULL;struct flowi4 +DATARMNET099aa93adc={};struct dst_entry*DATARMNETb5af46179c;struct rtable* +DATARMNET066b8bd537;struct net_device*DATARMNET39542b437e=NULL; +DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7), +sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9){ +DATARMNET17f6bc1be5(DATARMNET7803c877c0);goto DATARMNETc1174a0f45;} +DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,DATARMNETe447822105());if(! +DATARMNET813ca18d06){DATARMNET17f6bc1be5(DATARMNET0978ff973f);goto +DATARMNETc1174a0f45;}memcpy(&DATARMNET099aa93adc.daddr,&DATARMNET86f1f2cdc9-> +daddr,sizeof(__be32));DATARMNET099aa93adc.flowi4_oif=DATARMNET813ca18d06-> +ifindex;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537 +=ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR( +DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET666fc9a664); +DATARMNET39542b437e=dev_get_by_name_rcu(&init_net,"\x64\x75\x6d\x6d\x79\x30");if +(!DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNET521b065310);goto +DATARMNETc1174a0f45;}DATARMNET099aa93adc.flowi4_oif=DATARMNET39542b437e->ifindex +;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537= +ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR( +DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET8a15bcdcc7);goto +DATARMNET74b365f6cc;}}memcpy(&DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9-> +saddr,sizeof(__be32));DATARMNETb5af46179c=xfrm_lookup(&init_net,& +DATARMNET066b8bd537->dst,flowi4_to_flowi(&DATARMNET099aa93adc),NULL, +(0xd2d+202-0xdf7));DATARMNET066b8bd537=(struct rtable*)DATARMNETb5af46179c;if( +IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNETddb1bc27cb);goto +DATARMNETc1174a0f45;}skb_dst_set(DATARMNET543491eb0f,DATARMNETb5af46179c); +dst_output(&init_net,NULL,DATARMNET543491eb0f);DATARMNET17f6bc1be5( +DATARMNETc730640bf7);return RX_HANDLER_CONSUMED;}else if(DATARMNET543491eb0f-> +dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6))&&DATARMNET1a901c3d09== +DATARMNET45ee632553){struct ipv6hdr*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e; +struct flowi6 DATARMNET8fbe36a2fa={};struct dst_entry*dst=NULL,* +DATARMNETb5af46179c;struct rtable*DATARMNET066b8bd537;struct net_device* +DATARMNET39542b437e=NULL;DATARMNETbf55123e5b=skb_header_pointer( +DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),& +DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b){DATARMNET17f6bc1be5( +DATARMNET0b9541c9b3);goto DATARMNETc1174a0f45;}memcpy(&DATARMNET8fbe36a2fa.saddr +,&DATARMNETbf55123e5b->saddr,sizeof(struct in6_addr));memcpy(& +DATARMNET8fbe36a2fa.daddr,&DATARMNETbf55123e5b->daddr,sizeof(struct in6_addr)); +dst=ipv6_stub->ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if +(IS_ERR(dst)){DATARMNET17f6bc1be5(DATARMNET0078f1d36d);DATARMNET39542b437e= +dev_get_by_name_rcu(&init_net,"\x64\x75\x6d\x6d\x79\x30");if(! +DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNET7c6c30b7d2);goto +DATARMNETc1174a0f45;}DATARMNET8fbe36a2fa.flowi6_oif=DATARMNET39542b437e->ifindex +;DATARMNET8fbe36a2fa.flowi6_flags=FLOWI_FLAG_KNOWN_NH;dst=ipv6_stub-> +ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if(IS_ERR(dst)){ +DATARMNET17f6bc1be5(DATARMNET39d80cc483);goto DATARMNET74b365f6cc;}} +DATARMNETb5af46179c=xfrm_lookup(&init_net,dst,flowi6_to_flowi(& +DATARMNET8fbe36a2fa),NULL,(0xd2d+202-0xdf7));DATARMNET066b8bd537=(struct rtable* +)DATARMNETb5af46179c;if(IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5( +DATARMNET661bdeccd4);goto DATARMNETc1174a0f45;}skb_dst_set(DATARMNET543491eb0f, +DATARMNETb5af46179c);dst_output(&init_net,NULL,DATARMNET543491eb0f); +DATARMNET17f6bc1be5(DATARMNET28e7704d13);return RX_HANDLER_CONSUMED;}else if( +DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IP))&& +DATARMNET1a901c3d09==DATARMNET356f2a237e){struct iphdr*DATARMNET86f1f2cdc9, +DATARMNETbf6548198e;struct flowi4 DATARMNET099aa93adc={};struct net_device* +DATARMNET813ca18d06=NULL;struct dst_entry*DATARMNETb5af46179c;struct net_device* +DATARMNET39542b437e=NULL;struct rtable*DATARMNET066b8bd537;DATARMNET86f1f2cdc9= +skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(* +DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9){ +DATARMNET17f6bc1be5(DATARMNET15454f969d);goto DATARMNETc1174a0f45;} +DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,DATARMNET934406764d());if(! +DATARMNET813ca18d06){DATARMNET17f6bc1be5(DATARMNET4c5aeeb476);goto +DATARMNETc1174a0f45;}memcpy(&DATARMNET099aa93adc.daddr,&DATARMNET86f1f2cdc9-> +daddr,sizeof(__be32));DATARMNET099aa93adc.flowi4_oif=DATARMNET813ca18d06-> +ifindex;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537 +=ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR( +DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET9bdb1c4072); +DATARMNET39542b437e=dev_get_by_name_rcu(&init_net,"\x64\x75\x6d\x6d\x79\x30");if +(!DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNET5abdc89190);goto +DATARMNETc1174a0f45;}DATARMNET099aa93adc.flowi4_oif=DATARMNET39542b437e->ifindex +;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537= +ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR( +DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET101af46c1c);goto +DATARMNET74b365f6cc;}}memcpy(&DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9-> +saddr,sizeof(__be32));DATARMNETb5af46179c=xfrm_lookup(&init_net,& +DATARMNET066b8bd537->dst,flowi4_to_flowi(&DATARMNET099aa93adc),NULL, +(0xd2d+202-0xdf7));DATARMNET066b8bd537=(struct rtable*)DATARMNETb5af46179c;if( +IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET9a57ef32d3);goto +DATARMNETc1174a0f45;}skb_dst_set(DATARMNET543491eb0f,DATARMNETb5af46179c); +dst_output(&init_net,NULL,DATARMNET543491eb0f);DATARMNET17f6bc1be5( +DATARMNET9a940d93dc);return RX_HANDLER_CONSUMED;}else if(DATARMNET543491eb0f-> +dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6))&&DATARMNET1a901c3d09== +DATARMNET356f2a237e){struct ipv6hdr*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e; +struct flowi6 DATARMNET8fbe36a2fa={};struct dst_entry*dst=NULL,* +DATARMNETb5af46179c;struct rtable*DATARMNET066b8bd537;struct net_device* +DATARMNET39542b437e=NULL;DATARMNETbf55123e5b=skb_header_pointer( +DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),& +DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b){DATARMNET17f6bc1be5( +DATARMNET6b0ed53aab);goto DATARMNETc1174a0f45;}memcpy(&DATARMNET8fbe36a2fa.saddr +,&DATARMNETbf55123e5b->saddr,sizeof(struct in6_addr));memcpy(& +DATARMNET8fbe36a2fa.daddr,&DATARMNETbf55123e5b->daddr,sizeof(struct in6_addr)); +dst=ipv6_stub->ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if +(IS_ERR(dst)){DATARMNET17f6bc1be5(DATARMNET22ac945cae);DATARMNET39542b437e= +dev_get_by_name_rcu(&init_net,"\x64\x75\x6d\x6d\x79\x30");if(! +DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNETf326b7c906);goto +DATARMNETc1174a0f45;}DATARMNET8fbe36a2fa.flowi6_oif=DATARMNET39542b437e->ifindex +;DATARMNET8fbe36a2fa.flowi6_flags=FLOWI_FLAG_KNOWN_NH;dst=ipv6_stub-> +ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if(IS_ERR(dst)){ +DATARMNET17f6bc1be5(DATARMNET544d78ede7);goto DATARMNET74b365f6cc;}} +DATARMNETb5af46179c=xfrm_lookup(&init_net,dst,flowi6_to_flowi(& +DATARMNET8fbe36a2fa),NULL,(0xd2d+202-0xdf7));DATARMNET066b8bd537=(struct rtable* +)DATARMNETb5af46179c;if(IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5( +DATARMNET97b44d0c09);goto DATARMNETc1174a0f45;}skb_dst_set(DATARMNET543491eb0f, +DATARMNETb5af46179c);dst_output(&init_net,NULL,DATARMNET543491eb0f); +DATARMNET17f6bc1be5(DATARMNETf954265acb);return RX_HANDLER_CONSUMED;} +DATARMNET74b365f6cc:return RX_HANDLER_PASS;DATARMNETc1174a0f45:kfree_skb( +DATARMNET543491eb0f);return RX_HANDLER_CONSUMED;}static rx_handler_result_t +DATARMNET68fe094884(struct sk_buff**DATARMNET89946cec52){struct +DATARMNET0ca9d8ead7 DATARMNETa76763310b={};struct DATARMNET4f49486833* +DATARMNET63b1a086d5;struct sk_buff*DATARMNET543491eb0f=*DATARMNET89946cec52; +unsigned long DATARMNETfb0677cc3c;struct DATARMNET8d3c2559ca DATARMNET2d4b4cfc9e +;struct DATARMNET41b426061d*DATARMNET8184934307;uint8_t DATARMNET1a901c3d09= +DATARMNETdcafdec32a;if(!DATARMNET543491eb0f||DATARMNET543491eb0f->pkt_type== +PACKET_LOOPBACK)return RX_HANDLER_PASS;if(DATARMNET543491eb0f->protocol==htons( +ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e; +DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7), +sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto +DATARMNETbf4095f79e;DATARMNET2d4b4cfc9e.DATARMNET0dc14167a1=DATARMNET86f1f2cdc9 +->saddr;DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr* +DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;DATARMNETbf55123e5b=skb_header_pointer( +DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),& +DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto DATARMNETbf4095f79e;memcpy(& +DATARMNET2d4b4cfc9e.DATARMNET5700daac01,&DATARMNETbf55123e5b->saddr,sizeof( +DATARMNET2d4b4cfc9e.DATARMNET5700daac01));DATARMNET2d4b4cfc9e. +DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else{goto DATARMNETbf4095f79e;} +rcu_read_lock();DATARMNET8184934307=DATARMNETcc0a01df2a(&DATARMNET2d4b4cfc9e); +rcu_read_unlock();if(!DATARMNET8184934307)goto DATARMNETbf4095f79e; +DATARMNET1a901c3d09=DATARMNET8184934307->DATARMNET7ed5754a5c.DATARMNET9954a624ac +;if(DATARMNET1a901c3d09==DATARMNETdcafdec32a)goto DATARMNETbf4095f79e;if( +DATARMNET543491eb0f->dev&&DATARMNET1a901c3d09==DATARMNET9bfbc31cd6)nf_ct_set( +DATARMNET543491eb0f,NULL,IP_CT_UNTRACKED);if(DATARMNET543491eb0f->protocol== +htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e; +DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7), +sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto +DATARMNETbf4095f79e;if(DATARMNET86f1f2cdc9->protocol==IPPROTO_TCP)goto +DATARMNET9b3d23a43b;if(DATARMNET86f1f2cdc9->protocol!=IPPROTO_ICMP)goto +DATARMNETbf4095f79e;DATARMNETa76763310b.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9 +->saddr;DATARMNETa76763310b.DATARMNET2cb607d686=DATARMNET86f1f2cdc9->daddr; +DATARMNETa76763310b.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr* +DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;__be16 frag_off;u8 DATARMNET65293f17c4; +DATARMNETbf55123e5b=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7), +sizeof(*DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto +DATARMNETbf4095f79e;DATARMNET65293f17c4=DATARMNETbf55123e5b->nexthdr;if( +ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*DATARMNETbf55123e5b),& +DATARMNET65293f17c4,&frag_off)<(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;if( +frag_off&&DATARMNET65293f17c4==NEXTHDR_FRAGMENT)goto DATARMNETbf4095f79e;if( +DATARMNET65293f17c4==IPPROTO_TCP)goto DATARMNET9b3d23a43b;if(DATARMNET65293f17c4 +!=IPPROTO_ICMPV6)goto DATARMNETbf4095f79e;memcpy(&DATARMNETa76763310b. +DATARMNET815cbb4bf5,&DATARMNETbf55123e5b->saddr,sizeof(DATARMNETa76763310b. +DATARMNET815cbb4bf5));memcpy(&DATARMNETa76763310b.DATARMNETc3f31215b7,& +DATARMNETbf55123e5b->daddr,sizeof(DATARMNETa76763310b.DATARMNETc3f31215b7)); +DATARMNETa76763310b.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else{goto +DATARMNETbf4095f79e;}rcu_read_lock();hash_for_each_possible_rcu( +DATARMNET5413d6f8ec,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNETa76763310b. +DATARMNET2cb607d686){if(!DATARMNET5f3c9ed4da(&DATARMNET63b1a086d5-> +DATARMNET54338da2ff,&DATARMNETa76763310b))continue;if(likely(hrtimer_is_queued(& +DATARMNET63b1a086d5->DATARMNET9f31ce5d2d)))hrtimer_start(&DATARMNET63b1a086d5-> +DATARMNET9f31ce5d2d,DATARMNET5da8c68c19,HRTIMER_MODE_REL);rcu_read_unlock();goto + DATARMNETbf4095f79e;}rcu_read_unlock();spin_lock_irqsave(&DATARMNET820642743b, +DATARMNETfb0677cc3c);DATARMNET63b1a086d5=kzalloc(sizeof(*DATARMNET63b1a086d5), +GFP_ATOMIC);if(!DATARMNET63b1a086d5){spin_unlock_irqrestore(&DATARMNET820642743b +,DATARMNETfb0677cc3c);goto DATARMNETbf4095f79e;}INIT_HLIST_NODE(& +DATARMNET63b1a086d5->DATARMNETe8608dd267);memcpy(&DATARMNET63b1a086d5-> +DATARMNET54338da2ff,&DATARMNETa76763310b,sizeof(DATARMNETa76763310b)); +DATARMNET63b1a086d5->DATARMNET7ed5754a5c.DATARMNET57656f6f2f=DATARMNET543491eb0f +->dev;hrtimer_init(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,CLOCK_MONOTONIC, +HRTIMER_MODE_REL);DATARMNET63b1a086d5->DATARMNET9f31ce5d2d.function= +DATARMNET299a8a08b5;hrtimer_start(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d, +DATARMNET5da8c68c19,HRTIMER_MODE_REL);hash_add_rcu(DATARMNET5413d6f8ec,& +DATARMNET63b1a086d5->DATARMNETe8608dd267,DATARMNETa76763310b.DATARMNET2cb607d686 +);spin_unlock_irqrestore(&DATARMNET820642743b,DATARMNETfb0677cc3c); +DATARMNETbf4095f79e:return DATARMNETc9ed97754a(DATARMNET543491eb0f, +DATARMNET1a901c3d09);DATARMNET9b3d23a43b:DATARMNET7ca470d54b(DATARMNET543491eb0f +,TCP_FLAG_SYN);return DATARMNETc9ed97754a(DATARMNET543491eb0f, +DATARMNET1a901c3d09);}static void DATARMNETbc6bd11f47(struct net_device* +DATARMNET00dcb79bc4){struct DATARMNET4f49486833*DATARMNET63b1a086d5;int +DATARMNET5c2fd31d7b;rcu_read_lock();hash_for_each_rcu(DATARMNET5413d6f8ec, +DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,DATARMNETe8608dd267){if( +DATARMNET63b1a086d5->DATARMNET7ed5754a5c.DATARMNET57656f6f2f== +DATARMNET00dcb79bc4)hrtimer_cancel(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d);} +rcu_read_unlock();}static int DATARMNET81ab4de243(struct notifier_block* +DATARMNET272c159b3c,unsigned long DATARMNET7f045a1e6e,void*data){struct +net_device*DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(data);if(! +DATARMNET00dcb79bc4||strncmp(DATARMNET00dcb79bc4->name, +"\x72\x5f\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd19+238-0xdfb)))return +NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER: +netdev_rx_handler_unregister(DATARMNET00dcb79bc4);DATARMNETbc6bd11f47( +DATARMNET00dcb79bc4);break;case NETDEV_REGISTER:if(netdev_rx_handler_register( +DATARMNET00dcb79bc4,DATARMNET68fe094884,NULL))pr_err( +"\x25\x73\x28\x29\x3a\x20\x52\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x6f\x6e\x20\x25\x73\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__,DATARMNET00dcb79bc4->name);break;default:break;}return NOTIFY_DONE;} +static struct notifier_block DATARMNET61d0113123={.notifier_call= +DATARMNET81ab4de243,};struct DATARMNET8d3c2559ca*DATARMNET07f0e0f286(struct +DATARMNET0ca9d8ead7*DATARMNET54338da2ff)__must_hold(RCU){struct +DATARMNET4f49486833*DATARMNET63b1a086d5;hash_for_each_possible_rcu( +DATARMNET5413d6f8ec,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET54338da2ff +->DATARMNET2cb607d686){if(!DATARMNET5f3c9ed4da(&DATARMNET63b1a086d5-> +DATARMNET54338da2ff,DATARMNET54338da2ff))continue;return&DATARMNET63b1a086d5-> +DATARMNET7ed5754a5c;}return NULL;}void DATARMNETf4e1a29dbc(void){struct +DATARMNET4f49486833*DATARMNET63b1a086d5;int DATARMNET5c2fd31d7b;rcu_read_lock(); +hash_for_each_rcu(DATARMNET5413d6f8ec,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5, +DATARMNETe8608dd267)hrtimer_cancel(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d); +rcu_read_unlock();}int DATARMNET9f106ed933(void){int DATARMNET268a8314cf; +DATARMNET268a8314cf=register_netdevice_notifier(&DATARMNET61d0113123);if( +DATARMNET268a8314cf)pr_err( +"\x25\x73\x28\x29\x3a\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);return DATARMNET268a8314cf;}int DATARMNETf56cbaa2b1(void){int +DATARMNET268a8314cf;DATARMNET268a8314cf=unregister_netdevice_notifier(& +DATARMNET61d0113123);if(DATARMNET268a8314cf)pr_err( +"\x25\x73\x28\x29\x3a\x20\x6e\x6f\x74\x69\x66\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);return DATARMNET268a8314cf;} diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_connection.h b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_connection.h new file mode 100644 index 0000000000..ef45c1e90d --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_connection.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * + * RMNET WLAN connection management framework + * + */ + +#ifndef DATARMNET8e473f1d7e +#define DATARMNET8e473f1d7e +#include +#include +#include "rmnet_wlan.h" +struct DATARMNET0ca9d8ead7{union{__be32 DATARMNETdfe430c2d6;struct in6_addr +DATARMNET815cbb4bf5;};union{__be32 DATARMNET2cb607d686;struct in6_addr +DATARMNETc3f31215b7;};u8 DATARMNET0d956cc77a;};struct DATARMNET8d3c2559ca* +DATARMNET07f0e0f286(struct DATARMNET0ca9d8ead7*DATARMNET54338da2ff);void +DATARMNETf4e1a29dbc(void);int DATARMNET9f106ed933(void);int DATARMNETf56cbaa2b1( +void); +#endif + diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_fragment.c b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_fragment.c new file mode 100644 index 0000000000..504cc5b278 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_fragment.c @@ -0,0 +1,215 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * RMNET WLAN fragment handler framework + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "rmnet_wlan.h" +#include "rmnet_wlan_stats.h" +#include "rmnet_wlan_fragment.h" +#define DATARMNET598d70a086 ((0xeb7+1158-0x132d)) +#define DATARMNETeaee3af609 (const_ilog2(DATARMNET598d70a086)) +#define DATARMNET63a285d479 (110000000) +#define DATARMNETb7cc384fbe (10000000) +struct DATARMNETdadb4e2c65{union{__be32 DATARMNETdfe430c2d6;struct in6_addr +DATARMNET815cbb4bf5;};union{__be32 DATARMNET2cb607d686;struct in6_addr +DATARMNETc3f31215b7;};__be32 id;u16 DATARMNET611d08d671;u16 DATARMNETb65c469a15; +u8 DATARMNET0d956cc77a;};struct DATARMNET6f3b954709{struct hlist_node +DATARMNETe8608dd267;spinlock_t DATARMNET94b1f9ee09;struct list_head +DATARMNET0f34bf3ea9;struct rcu_head DATARMNET28bfe9e6ad;struct hrtimer +DATARMNET9f31ce5d2d;struct DATARMNETdadb4e2c65 DATARMNET54338da2ff;struct +DATARMNET8d3c2559ca*DATARMNET7ed5754a5c;};static DEFINE_SPINLOCK( +DATARMNET531b038fcd);static DEFINE_HASHTABLE(DATARMNET6e79f38051, +DATARMNETeaee3af609);static int DATARMNET24669a931d(const struct sk_buff* +DATARMNET543491eb0f,unsigned int*DATARMNETb65c469a15,int DATARMNETbfd7eb99fe, +unsigned short*DATARMNET0823b5e89c,int*DATARMNETfb0677cc3c){unsigned int +DATARMNETab6f68a65c=skb_network_offset(DATARMNET543491eb0f)+sizeof(struct +ipv6hdr);u8 nexthdr=ipv6_hdr(DATARMNET543491eb0f)->nexthdr;bool +DATARMNET1034358542;if(DATARMNET0823b5e89c)*DATARMNET0823b5e89c= +(0xd2d+202-0xdf7);if(*DATARMNETb65c469a15){struct ipv6hdr DATARMNET982faca395,* +DATARMNETc46d75f0b8;DATARMNETc46d75f0b8=skb_header_pointer(DATARMNET543491eb0f,* +DATARMNETb65c469a15,sizeof(DATARMNET982faca395),&DATARMNET982faca395);if(! +DATARMNETc46d75f0b8||(DATARMNETc46d75f0b8->version!=(0xd03+244-0xdf1)))return- +EBADMSG;DATARMNETab6f68a65c=*DATARMNETb65c469a15+sizeof(struct ipv6hdr);nexthdr= +DATARMNETc46d75f0b8->nexthdr;}do{struct ipv6_opt_hdr DATARMNETb18a0d17a5,* +DATARMNET7c56b76ea0;unsigned int DATARMNET4593c3f2c2;DATARMNET1034358542=( +nexthdr==DATARMNETbfd7eb99fe);if((!ipv6_ext_hdr(nexthdr))||nexthdr==NEXTHDR_NONE +){if(DATARMNETbfd7eb99fe<(0xd2d+202-0xdf7)||DATARMNET1034358542)break;return- +ENOENT;}DATARMNET7c56b76ea0=skb_header_pointer(DATARMNET543491eb0f, +DATARMNETab6f68a65c,sizeof(DATARMNETb18a0d17a5),&DATARMNETb18a0d17a5);if(! +DATARMNET7c56b76ea0)return-EBADMSG;if(nexthdr==NEXTHDR_ROUTING){struct +ipv6_rt_hdr DATARMNET942c8f7153,*DATARMNETb2650cb3cb;DATARMNETb2650cb3cb= +skb_header_pointer(DATARMNET543491eb0f,DATARMNETab6f68a65c,sizeof( +DATARMNET942c8f7153),&DATARMNET942c8f7153);if(!DATARMNETb2650cb3cb)return- +EBADMSG;if(DATARMNETfb0677cc3c&&(*DATARMNETfb0677cc3c&IP6_FH_F_SKIP_RH)&& +DATARMNETb2650cb3cb->segments_left==(0xd2d+202-0xdf7))DATARMNET1034358542=false; +}if(nexthdr==NEXTHDR_FRAGMENT){unsigned short DATARMNET3ed4d6b164;__be16* +DATARMNET748d4c9015;if(DATARMNETfb0677cc3c)*DATARMNETfb0677cc3c|=IP6_FH_F_FRAG; +DATARMNET748d4c9015=skb_header_pointer(DATARMNET543491eb0f,DATARMNETab6f68a65c+ +offsetof(struct frag_hdr,frag_off),sizeof(DATARMNET3ed4d6b164),& +DATARMNET3ed4d6b164);if(!DATARMNET748d4c9015)return-EBADMSG;DATARMNET3ed4d6b164= +ntohs(*DATARMNET748d4c9015)&~(0xcfc+267-0xe00);if(DATARMNET3ed4d6b164){if( +DATARMNETbfd7eb99fe<(0xd2d+202-0xdf7)&&((!ipv6_ext_hdr(DATARMNET7c56b76ea0-> +nexthdr))||DATARMNET7c56b76ea0->nexthdr==NEXTHDR_NONE)){if(DATARMNET0823b5e89c)* +DATARMNET0823b5e89c=DATARMNET3ed4d6b164;return DATARMNET7c56b76ea0->nexthdr;}if( +!DATARMNET1034358542)return-ENOENT;if(DATARMNET0823b5e89c)*DATARMNET0823b5e89c= +DATARMNET3ed4d6b164;break;}DATARMNET4593c3f2c2=(0xd35+210-0xdff);}else if( +nexthdr==NEXTHDR_AUTH){if(DATARMNETfb0677cc3c&&(*DATARMNETfb0677cc3c& +IP6_FH_F_AUTH)&&(DATARMNETbfd7eb99fe<(0xd2d+202-0xdf7)))break; +DATARMNET4593c3f2c2=ipv6_authlen(DATARMNET7c56b76ea0);}else DATARMNET4593c3f2c2= +ipv6_optlen(DATARMNET7c56b76ea0);if(!DATARMNET1034358542){nexthdr= +DATARMNET7c56b76ea0->nexthdr;DATARMNETab6f68a65c+=DATARMNET4593c3f2c2;}}while(! +DATARMNET1034358542);*DATARMNETb65c469a15=DATARMNETab6f68a65c;return nexthdr;} +static void DATARMNETc7c83f614f(struct DATARMNET6f3b954709*DATARMNET63b1a086d5, +bool DATARMNET7a9bcaf1a3){struct DATARMNET8d3c2559ca*DATARMNET54338da2ff;int(* +DATARMNET456ac0e8eb)(struct sk_buff*DATARMNET543491eb0f);struct sk_buff* +DATARMNET543491eb0f,*DATARMNET0386f6f82a;unsigned long DATARMNETfb0677cc3c; +DATARMNET456ac0e8eb=(DATARMNET7a9bcaf1a3)?netif_receive_skb:netif_rx; +DATARMNET54338da2ff=DATARMNET63b1a086d5->DATARMNET7ed5754a5c;spin_lock_irqsave(& +DATARMNET63b1a086d5->DATARMNET94b1f9ee09,DATARMNETfb0677cc3c); +list_for_each_entry_safe(DATARMNET543491eb0f,DATARMNET0386f6f82a,& +DATARMNET63b1a086d5->DATARMNET0f34bf3ea9,list){u32 DATARMNET248f120dd5;list_del( +&DATARMNET543491eb0f->list);DATARMNET543491eb0f->next=NULL;DATARMNET543491eb0f-> +prev=NULL;if(IS_ERR_OR_NULL(DATARMNET54338da2ff)){DATARMNET456ac0e8eb( +DATARMNET543491eb0f);continue;}if(DATARMNET4899053671(DATARMNET543491eb0f, +DATARMNET54338da2ff)){DATARMNET248f120dd5=DATARMNETba232077da; +DATARMNET456ac0e8eb(DATARMNET543491eb0f);}else{DATARMNET248f120dd5= +DATARMNET7a58a5c1fc;}DATARMNET5ca94dbc3c(DATARMNET248f120dd5);} +spin_unlock_irqrestore(&DATARMNET63b1a086d5->DATARMNET94b1f9ee09, +DATARMNETfb0677cc3c);}static enum hrtimer_restart DATARMNETef43eced5f(struct +hrtimer*DATARMNET6e4292679f){struct DATARMNET6f3b954709*DATARMNET63b1a086d5; +unsigned long DATARMNETfb0677cc3c;spin_lock_irqsave(&DATARMNET531b038fcd, +DATARMNETfb0677cc3c);DATARMNET63b1a086d5=container_of(DATARMNET6e4292679f,struct + DATARMNET6f3b954709,DATARMNET9f31ce5d2d);hash_del_rcu(&DATARMNET63b1a086d5-> +DATARMNETe8608dd267);DATARMNETc7c83f614f(DATARMNET63b1a086d5,false);kfree_rcu( +DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);spin_unlock_irqrestore(& +DATARMNET531b038fcd,DATARMNETfb0677cc3c);DATARMNET5ca94dbc3c(DATARMNETd691057b85 +);return HRTIMER_NORESTART;}static bool DATARMNETc529ac78b2(struct +DATARMNETdadb4e2c65*DATARMNET75decd6f60,struct DATARMNETdadb4e2c65* +DATARMNET6745cad668){if(DATARMNET75decd6f60->DATARMNET0d956cc77a!= +DATARMNET6745cad668->DATARMNET0d956cc77a||DATARMNET75decd6f60->id!= +DATARMNET6745cad668->id)return false;if(DATARMNET75decd6f60->DATARMNET0d956cc77a +==(0xd11+230-0xdf3))return DATARMNET75decd6f60->DATARMNETdfe430c2d6== +DATARMNET6745cad668->DATARMNETdfe430c2d6&&DATARMNET75decd6f60-> +DATARMNET2cb607d686==DATARMNET6745cad668->DATARMNET2cb607d686;return! +ipv6_addr_cmp(&DATARMNET75decd6f60->DATARMNET815cbb4bf5,&DATARMNET6745cad668-> +DATARMNET815cbb4bf5)&&!ipv6_addr_cmp(&DATARMNET75decd6f60->DATARMNETc3f31215b7,& +DATARMNET6745cad668->DATARMNETc3f31215b7);}static struct DATARMNET6f3b954709* +DATARMNET52b387f6cd(struct DATARMNETdadb4e2c65*DATARMNET54338da2ff){struct +DATARMNET6f3b954709*DATARMNET63b1a086d5;unsigned long DATARMNETfb0677cc3c; +spin_lock_irqsave(&DATARMNET531b038fcd,DATARMNETfb0677cc3c); +hash_for_each_possible_rcu(DATARMNET6e79f38051,DATARMNET63b1a086d5, +DATARMNETe8608dd267,DATARMNET54338da2ff->id){if(DATARMNETc529ac78b2( +DATARMNET54338da2ff,&DATARMNET63b1a086d5->DATARMNET54338da2ff))goto +DATARMNETbf4095f79e;}DATARMNET63b1a086d5=kzalloc(sizeof(*DATARMNET63b1a086d5), +GFP_ATOMIC);if(!DATARMNET63b1a086d5)goto DATARMNETbf4095f79e;spin_lock_init(& +DATARMNET63b1a086d5->DATARMNET94b1f9ee09);INIT_LIST_HEAD(&DATARMNET63b1a086d5-> +DATARMNET0f34bf3ea9);memcpy(&DATARMNET63b1a086d5->DATARMNET54338da2ff, +DATARMNET54338da2ff,sizeof(*DATARMNET54338da2ff));hrtimer_init(& +DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,CLOCK_MONOTONIC,HRTIMER_MODE_REL); +DATARMNET63b1a086d5->DATARMNET9f31ce5d2d.function=DATARMNETef43eced5f; +hrtimer_start(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,DATARMNET63a285d479, +HRTIMER_MODE_REL);INIT_HLIST_NODE(&DATARMNET63b1a086d5->DATARMNETe8608dd267); +hash_add_rcu(DATARMNET6e79f38051,&DATARMNET63b1a086d5->DATARMNETe8608dd267, +DATARMNET54338da2ff->id);DATARMNETbf4095f79e:spin_unlock_irqrestore(& +DATARMNET531b038fcd,DATARMNETfb0677cc3c);return DATARMNET63b1a086d5;}static int +DATARMNET9d6ad3b16f(struct sk_buff*DATARMNET543491eb0f,struct +DATARMNETb89ecedefc*DATARMNET3396919a68,struct DATARMNETdadb4e2c65* +DATARMNET54338da2ff,struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e)__must_hold( +RCU){struct DATARMNET6f3b954709*DATARMNET63b1a086d5;int DATARMNET61c2303133= +(0xd26+209-0xdf6);DATARMNET5ca94dbc3c(DATARMNETd8273aa7e1);DATARMNET63b1a086d5= +DATARMNET52b387f6cd(DATARMNET54338da2ff);if(!DATARMNET63b1a086d5){ +DATARMNET61c2303133=(-(0xd26+209-0xdf6));goto DATARMNETbf4095f79e;}if(unlikely(! +hrtimer_is_queued(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d))){goto +DATARMNETbf4095f79e;}else if(hrtimer_get_remaining(&DATARMNET63b1a086d5-> +DATARMNET9f31ce5d2d)<=DATARMNETb7cc384fbe){goto DATARMNETbf4095f79e;} +hrtimer_start(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,DATARMNET63a285d479, +HRTIMER_MODE_REL);if(DATARMNET63b1a086d5->DATARMNET7ed5754a5c){if(IS_ERR( +DATARMNET63b1a086d5->DATARMNET7ed5754a5c))goto DATARMNETbf4095f79e;if(! +DATARMNET4899053671(DATARMNET543491eb0f,DATARMNET63b1a086d5->DATARMNET7ed5754a5c +)){DATARMNET5ca94dbc3c(DATARMNET7a58a5c1fc);DATARMNET61c2303133= +(0xd2d+202-0xdf7);goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c( +DATARMNETba232077da);goto DATARMNETbf4095f79e;}if(DATARMNET54338da2ff-> +DATARMNETb65c469a15){unsigned long DATARMNETfb0677cc3c;spin_lock_irqsave(& +DATARMNET63b1a086d5->DATARMNET94b1f9ee09,DATARMNETfb0677cc3c);list_add_tail(& +DATARMNET543491eb0f->list,&DATARMNET63b1a086d5->DATARMNET0f34bf3ea9); +spin_unlock_irqrestore(&DATARMNET63b1a086d5->DATARMNET94b1f9ee09, +DATARMNETfb0677cc3c);DATARMNET61c2303133=(0xd2d+202-0xdf7);DATARMNET5ca94dbc3c( +DATARMNETe75ad1a949);goto DATARMNETbf4095f79e;}if(DATARMNET3396919a68-> +DATARMNET4924e79411==IPPROTO_TCP||DATARMNET3396919a68->DATARMNET4924e79411== +IPPROTO_UDP){struct udphdr*DATARMNET75be5f3406=(struct udphdr*)( +DATARMNET543491eb0f->data+DATARMNET54338da2ff->DATARMNET611d08d671); +DATARMNET3396919a68->DATARMNETf0d9de7e2f=DATARMNET75be5f3406->dest;if( +DATARMNETa8b2566e6a(DATARMNET543491eb0f,DATARMNET3396919a68,DATARMNET54338da2ff +->DATARMNET611d08d671)){if(DATARMNET0a4704e5e0(DATARMNET3396919a68)){kfree_skb( +DATARMNET543491eb0f);DATARMNET61c2303133=(0xd2d+202-0xdf7);DATARMNET5ca94dbc3c( +DATARMNET0981317411);goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c( +DATARMNETd1ad664d00);goto DATARMNET07fc49caf2;}}else if(DATARMNET3396919a68-> +DATARMNET4924e79411==IPPROTO_ESP){struct ip_esp_hdr*DATARMNET73ee6a7020=(struct +ip_esp_hdr*)(DATARMNET543491eb0f->data+DATARMNET54338da2ff->DATARMNET611d08d671) +;DATARMNET3396919a68->DATARMNET906b2ee561=DATARMNET73ee6a7020->spi;}if( +DATARMNET4eafcdee07(DATARMNET3396919a68)){u32 DATARMNET248f120dd5; +DATARMNET63b1a086d5->DATARMNET7ed5754a5c=DATARMNET2d4b4cfc9e;if(! +DATARMNET4899053671(DATARMNET543491eb0f,DATARMNET2d4b4cfc9e)){ +DATARMNET248f120dd5=DATARMNET7a58a5c1fc;DATARMNET61c2303133=(0xd2d+202-0xdf7);} +else{DATARMNET248f120dd5=DATARMNETba232077da;}DATARMNET5ca94dbc3c( +DATARMNET248f120dd5);DATARMNETc7c83f614f(DATARMNET63b1a086d5,true);goto +DATARMNETbf4095f79e;}DATARMNET07fc49caf2:DATARMNET63b1a086d5-> +DATARMNET7ed5754a5c=ERR_PTR(-EINVAL);DATARMNETc7c83f614f(DATARMNET63b1a086d5, +true);DATARMNETbf4095f79e:return DATARMNET61c2303133;}int DATARMNET579f75aa50( +struct sk_buff*DATARMNET543491eb0f,int DATARMNET611d08d671,struct +DATARMNETb89ecedefc*DATARMNET3396919a68,struct DATARMNET8d3c2559ca* +DATARMNET2d4b4cfc9e)__must_hold(RCU){struct DATARMNETdadb4e2c65 +DATARMNET54338da2ff={};struct iphdr*DATARMNET86f1f2cdc9=ip_hdr( +DATARMNET543491eb0f);if(DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_TCP&& +DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_UDP&&DATARMNET3396919a68-> +DATARMNET4924e79411!=IPPROTO_ESP)return-(0xd26+209-0xdf6);DATARMNET54338da2ff. +DATARMNET0d956cc77a=(0xd11+230-0xdf3);DATARMNET54338da2ff.DATARMNETdfe430c2d6= +DATARMNET86f1f2cdc9->saddr;DATARMNET54338da2ff.DATARMNET2cb607d686= +DATARMNET86f1f2cdc9->daddr;DATARMNET54338da2ff.id=htonl((u32)ntohs( +DATARMNET86f1f2cdc9->id));DATARMNET54338da2ff.DATARMNETb65c469a15=htons( +DATARMNET86f1f2cdc9->frag_off)&IP_OFFSET;DATARMNET54338da2ff.DATARMNET611d08d671 +=(u16)DATARMNET611d08d671;return DATARMNET9d6ad3b16f(DATARMNET543491eb0f, +DATARMNET3396919a68,&DATARMNET54338da2ff,DATARMNET2d4b4cfc9e);}int +DATARMNETaca8ca54ed(struct sk_buff*DATARMNET543491eb0f,int DATARMNET611d08d671, +struct DATARMNETb89ecedefc*DATARMNET3396919a68,struct DATARMNET8d3c2559ca* +DATARMNET2d4b4cfc9e)__must_hold(RCU){struct DATARMNETdadb4e2c65 +DATARMNET54338da2ff={};struct ipv6hdr*DATARMNETbf55123e5b=ipv6_hdr( +DATARMNET543491eb0f);struct frag_hdr*frag_hdr;unsigned int DATARMNET7b34b7b5be; +if(DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_TCP&&DATARMNET3396919a68-> +DATARMNET4924e79411!=IPPROTO_UDP&&DATARMNET3396919a68->DATARMNET4924e79411!= +IPPROTO_ESP&&DATARMNET3396919a68->DATARMNET4924e79411!=NEXTHDR_FRAGMENT)return- +(0xd26+209-0xdf6);if(DATARMNET24669a931d(DATARMNET543491eb0f,& +DATARMNET7b34b7b5be,NEXTHDR_FRAGMENT,NULL,NULL)<(0xd2d+202-0xdf7))return- +(0xd26+209-0xdf6);frag_hdr=(struct frag_hdr*)(DATARMNET543491eb0f->data+ +DATARMNET7b34b7b5be);DATARMNET54338da2ff.DATARMNET0d956cc77a=(0xd03+244-0xdf1); +memcpy(&DATARMNET54338da2ff.DATARMNET815cbb4bf5,&DATARMNETbf55123e5b->saddr, +sizeof(DATARMNETbf55123e5b->saddr));memcpy(&DATARMNET54338da2ff. +DATARMNETc3f31215b7,&DATARMNETbf55123e5b->daddr,sizeof(DATARMNETbf55123e5b-> +daddr));DATARMNET54338da2ff.id=frag_hdr->identification;DATARMNET54338da2ff. +DATARMNETb65c469a15=htons(frag_hdr->frag_off)&IP6_OFFSET;DATARMNET54338da2ff. +DATARMNET611d08d671=(u16)DATARMNET611d08d671;if(DATARMNET3396919a68-> +DATARMNET4924e79411==NEXTHDR_FRAGMENT)DATARMNET54338da2ff.DATARMNET611d08d671+= +sizeof(*frag_hdr);return DATARMNET9d6ad3b16f(DATARMNET543491eb0f, +DATARMNET3396919a68,&DATARMNET54338da2ff,DATARMNET2d4b4cfc9e);}void +DATARMNET8c0e010dfb(void){struct DATARMNET6f3b954709*DATARMNET63b1a086d5;int +DATARMNET5c2fd31d7b;rcu_read_lock();hash_for_each_rcu(DATARMNET6e79f38051, +DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,DATARMNETe8608dd267)hrtimer_cancel(& +DATARMNET63b1a086d5->DATARMNET9f31ce5d2d);rcu_read_unlock();}void +DATARMNETedae8262e1(struct DATARMNET8d3c2559ca*DATARMNET54338da2ff){struct +DATARMNET6f3b954709*DATARMNET63b1a086d5;int DATARMNET5c2fd31d7b;rcu_read_lock(); +hash_for_each_rcu(DATARMNET6e79f38051,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5, +DATARMNETe8608dd267){if(DATARMNET63b1a086d5->DATARMNET7ed5754a5c== +DATARMNET54338da2ff)DATARMNET63b1a086d5->DATARMNET7ed5754a5c=ERR_PTR(-EINVAL);} +rcu_read_unlock();} diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_fragment.h b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_fragment.h new file mode 100644 index 0000000000..c5a1912512 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_fragment.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * + * RMNET WLAN fragment handler framework + * + */ + +#ifndef DATARMNET836e6c471b +#define DATARMNET836e6c471b +#include +#include "rmnet_wlan.h" +int DATARMNET579f75aa50(struct sk_buff*DATARMNET543491eb0f,int +DATARMNET611d08d671,struct DATARMNETb89ecedefc*DATARMNET3396919a68,struct +DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e);int DATARMNETaca8ca54ed(struct sk_buff* +DATARMNET543491eb0f,int DATARMNET611d08d671,struct DATARMNETb89ecedefc* +DATARMNET3396919a68,struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e);void +DATARMNET8c0e010dfb(void);void DATARMNETedae8262e1(struct DATARMNET8d3c2559ca* +DATARMNET54338da2ff); +#endif + diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_genl.c b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_genl.c new file mode 100644 index 0000000000..88dc5b66bf --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_genl.c @@ -0,0 +1,258 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * RMNET WLAN Generic Netlink + * + */ + +#include +#include +#include +#include +#include +#include +#include "rmnet_wlan_genl.h" +#include "rmnet_wlan.h" +#include "rmnet_wlan_connection.h" +#define DATARMNET5fe2c6571f (0xf07+1104-0x131d) +static struct nla_policy DATARMNET19c5fce390[DATARMNETf6bbad94a5+ +(0xd26+209-0xdf6)]={[DATARMNET8c062d7709]=NLA_POLICY_EXACT_LEN(sizeof(struct +DATARMNETb89ecedefc)),};static struct nla_policy DATARMNET0381a65e93[ +DATARMNETebcc30fe04+(0xd26+209-0xdf6)]={[DATARMNET4e9cd7b8bf]= +NLA_POLICY_NESTED_ARRAY(DATARMNET19c5fce390),[DATARMNETb8afde4a5a]={.type= +NLA_NUL_STRING,.len=IFNAMSIZ-(0xd26+209-0xdf6),},[DATARMNETea4b56dc2b]={.type= +NLA_NUL_STRING,.len=INET6_ADDRSTRLEN,},[DATARMNET8bf80e4b66]={.type= +NLA_NUL_STRING,.len=IFNAMSIZ-(0xd26+209-0xdf6),},[DATARMNET44a9a789aa]={.type= +NLA_U16,},[DATARMNET149cafb1b7]={.type=NLA_U8,},}; +#define DATARMNET58eca5265b(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e) \ + { \ + .cmd = DATARMNET5aeb0ef9bc, \ + .doit = DATARMNETbd9859b58e, \ + } +static struct genl_family DATARMNET61e8f41aae;static int DATARMNET72501635c8( +struct sk_buff*DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct +nlattr*DATARMNET759bcdbf61[DATARMNETf6bbad94a5+(0xd26+209-0xdf6)];struct +DATARMNETb89ecedefc*DATARMNETcadc2ef9aa;struct nlattr*DATARMNETef7cdd7b6b;u32 +DATARMNETef77661260=(0xd2d+202-0xdf7);int DATARMNET4b119c4ff3;int +DATARMNETb14e52a504=(0xd2d+202-0xdf7);if(!DATARMNET54338da2ff->attrs[ +DATARMNET4e9cd7b8bf]){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x75\x70\x70\x6c\x79\x20\x74\x75\x70\x6c\x65\x20\x69\x6e\x66\x6f" +);return-EINVAL;}nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff-> +attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3)DATARMNETef77661260++; +DATARMNETcadc2ef9aa=kcalloc(DATARMNETef77661260,sizeof(*DATARMNETcadc2ef9aa), +GFP_KERNEL);if(!DATARMNETcadc2ef9aa){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4b\x65\x72\x6e\x65\x6c\x20\x4f\x4f\x4d");return-ENOMEM;}DATARMNETef77661260= +(0xd2d+202-0xdf7);nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff-> +attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3){struct DATARMNETb89ecedefc* +DATARMNET3396919a68;DATARMNETb14e52a504=nla_parse_nested(DATARMNET759bcdbf61, +DATARMNETf6bbad94a5,DATARMNETef7cdd7b6b,DATARMNET19c5fce390,DATARMNET54338da2ff +->extack);if(DATARMNETb14e52a504)goto DATARMNETbf4095f79e;if(! +DATARMNET759bcdbf61[DATARMNET8c062d7709]){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x74\x75\x70\x6c\x65\x20\x65\x6e\x74\x72\x79" +);goto DATARMNETbf4095f79e;}DATARMNET3396919a68=nla_data(DATARMNET759bcdbf61[ +DATARMNET8c062d7709]);if(DATARMNET3396919a68->DATARMNET0d956cc77a!= +(0xd11+230-0xdf3)&&DATARMNET3396919a68->DATARMNET0d956cc77a!=(0xd03+244-0xdf1)){ +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x49\x6e\x76\x61\x6c\x69\x64\x20\x49\x50\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c"); +goto DATARMNETbf4095f79e;}if(DATARMNET3396919a68->DATARMNET4924e79411!= +IPPROTO_TCP&&DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_UDP&& +DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_ESP){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x49\x6e\x76\x61\x6c\x69\x64\x20\x74\x72\x61\x6e\x73\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c" +);goto DATARMNETbf4095f79e;}memcpy(&DATARMNETcadc2ef9aa[DATARMNETef77661260], +DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));DATARMNETef77661260++;} +DATARMNETb14e52a504=DATARMNET53f12a0f7d(DATARMNETcadc2ef9aa,DATARMNETef77661260, +DATARMNET54338da2ff);DATARMNETbf4095f79e:kfree(DATARMNETcadc2ef9aa);return +DATARMNETb14e52a504;}static int DATARMNET41dd9b14ab(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr* +DATARMNET759bcdbf61[DATARMNETf6bbad94a5+(0xd26+209-0xdf6)];struct +DATARMNETb89ecedefc*DATARMNETcadc2ef9aa;struct nlattr*DATARMNETef7cdd7b6b;u32 +DATARMNETef77661260=(0xd2d+202-0xdf7);int DATARMNET4b119c4ff3;int +DATARMNETb14e52a504;if(!DATARMNET54338da2ff->attrs[DATARMNET4e9cd7b8bf]){ +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x75\x70\x70\x6c\x79\x20\x74\x75\x70\x6c\x65\x20\x69\x6e\x66\x6f" +);return-EINVAL;}nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff-> +attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3)DATARMNETef77661260++; +DATARMNETcadc2ef9aa=kcalloc(DATARMNETef77661260,sizeof(*DATARMNETcadc2ef9aa), +GFP_KERNEL);if(!DATARMNETcadc2ef9aa){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4b\x65\x72\x6e\x65\x6c\x20\x4f\x4f\x4d");return-ENOMEM;}DATARMNETef77661260= +(0xd2d+202-0xdf7);nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff-> +attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3){struct DATARMNETb89ecedefc* +DATARMNET3396919a68;DATARMNETb14e52a504=nla_parse_nested(DATARMNET759bcdbf61, +DATARMNETf6bbad94a5,DATARMNETef7cdd7b6b,DATARMNET19c5fce390,DATARMNET54338da2ff +->extack);if(DATARMNETb14e52a504)goto DATARMNETbf4095f79e;if(! +DATARMNET759bcdbf61[DATARMNET8c062d7709]){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x74\x75\x70\x6c\x65\x20\x65\x6e\x74\x72\x79" +);DATARMNETb14e52a504=-EINVAL;goto DATARMNETbf4095f79e;}DATARMNET3396919a68= +nla_data(DATARMNET759bcdbf61[DATARMNET8c062d7709]);memcpy(&DATARMNETcadc2ef9aa[ +DATARMNETef77661260],DATARMNET3396919a68,sizeof(*DATARMNET3396919a68)); +DATARMNETef77661260++;}DATARMNETb14e52a504=DATARMNET07f6485c9b( +DATARMNETcadc2ef9aa,DATARMNETef77661260,DATARMNET54338da2ff);DATARMNETbf4095f79e +:kfree(DATARMNETcadc2ef9aa);return DATARMNETb14e52a504;}static int +DATARMNETf1fa473089(struct sk_buff*DATARMNET543491eb0f,struct genl_info* +DATARMNET54338da2ff){struct nlattr*DATARMNETef7cdd7b6b;int DATARMNET9954a624ac; +int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[DATARMNETb8afde4a5a]||! +DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x64\x65\x76\x69\x63\x65\x20\x61\x6e\x64\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x69\x6e\x66\x6f" +);return-EINVAL;}DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ +DATARMNETb8afde4a5a];DATARMNET9954a624ac=nla_get_u8(DATARMNET54338da2ff->attrs[ +DATARMNET149cafb1b7]);if(DATARMNET9954a624ac!=DATARMNET356f2a237e&& +DATARMNET9954a624ac!=DATARMNET45ee632553&&DATARMNET9954a624ac!= +DATARMNET9bfbc31cd6){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4e\x65\x74\x77\x6f\x72\x6b\x20\x74\x79\x70\x65\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x21" +);return-EINVAL;}if(DATARMNET9954a624ac==DATARMNET45ee632553){ +DATARMNET268a8314cf=DATARMNET92e5468fc5(nla_data(DATARMNETef7cdd7b6b), +DATARMNET54338da2ff);}else{DATARMNET268a8314cf=DATARMNET97b2388e63(nla_data( +DATARMNETef7cdd7b6b),DATARMNET54338da2ff);}return DATARMNET268a8314cf;}static +int DATARMNETcd9478470c(struct sk_buff*DATARMNET543491eb0f,struct genl_info* +DATARMNET54338da2ff){struct nlattr*DATARMNETef7cdd7b6b;int DATARMNET9954a624ac; +int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[DATARMNETb8afde4a5a]||! +DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64" +);return-EINVAL;}DATARMNET9954a624ac=nla_get_u8(DATARMNET54338da2ff->attrs[ +DATARMNET149cafb1b7]);DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ +DATARMNETb8afde4a5a];if(DATARMNET9954a624ac!=DATARMNET356f2a237e&& +DATARMNET9954a624ac!=DATARMNET45ee632553&&DATARMNET9954a624ac!= +DATARMNET9bfbc31cd6){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4e\x65\x74\x77\x6f\x72\x6b\x20\x74\x79\x70\x65\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x21" +);return-EINVAL;}if(DATARMNET9954a624ac==DATARMNET45ee632553){ +DATARMNET268a8314cf=DATARMNET9d7bb9a63d(nla_data(DATARMNETef7cdd7b6b), +DATARMNET54338da2ff);}else{DATARMNET268a8314cf=DATARMNETa903cd5994(nla_data( +DATARMNETef7cdd7b6b),DATARMNET54338da2ff);}if(DATARMNET268a8314cf) +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64" +);return DATARMNET268a8314cf;}static int DATARMNETb86993aefb(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct +DATARMNET8d3c2559ca DATARMNET2d4b4cfc9e={};struct nlattr*DATARMNETef7cdd7b6b; +char*DATARMNETd7f4d7c495;int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[ +DATARMNETea4b56dc2b]||!DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66]||! +DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x2c\x20\x61\x64\x64\x72\x65\x73\x73\x2c\x20\x61\x6e\x64\x20\x6e\x65\x74\x77\x6f\x72\x6b" +);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET9954a624ac=nla_get_u8( +DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]);DATARMNETef7cdd7b6b= +DATARMNET54338da2ff->attrs[DATARMNETea4b56dc2b];DATARMNETd7f4d7c495=nla_data( +DATARMNETef7cdd7b6b);if(strchr(DATARMNETd7f4d7c495,DATARMNET5fe2c6571f)){if( +in6_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),DATARMNET2d4b4cfc9e. +DATARMNET5700daac01.s6_addr,-(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){ +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x36" +);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else +{if(in4_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),(u8*)& +DATARMNET2d4b4cfc9e.DATARMNET0dc14167a1,-(0xd26+209-0xdf6),NULL)!= +(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x34" +);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd11+230-0xdf3);} +DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66]; +DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f=dev_get_by_name(genl_info_net( +DATARMNET54338da2ff),nla_data(DATARMNETef7cdd7b6b));if(!DATARMNET2d4b4cfc9e. +DATARMNET57656f6f2f){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x49\x6e\x76\x61\x6c\x69\x64\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x61\x6d\x65" +);return-EINVAL;}DATARMNET268a8314cf=DATARMNET947eb110d2(&DATARMNET2d4b4cfc9e, +DATARMNET54338da2ff);dev_put(DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f);return +DATARMNET268a8314cf;}static int DATARMNETc175a08219(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct +DATARMNET8d3c2559ca DATARMNET2d4b4cfc9e={};struct nlattr*DATARMNETef7cdd7b6b; +char*DATARMNETd7f4d7c495;int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[ +DATARMNETea4b56dc2b]||!DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66]||! +DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x61\x6e\x64\x20\x61\x64\x64\x72\x65\x73\x73" +);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET9954a624ac=nla_get_u8( +DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]);DATARMNETef7cdd7b6b= +DATARMNET54338da2ff->attrs[DATARMNETea4b56dc2b];DATARMNETd7f4d7c495=nla_data( +DATARMNETef7cdd7b6b);if(strchr(DATARMNETd7f4d7c495,DATARMNET5fe2c6571f)){if( +in6_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),DATARMNET2d4b4cfc9e. +DATARMNET5700daac01.s6_addr,-(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){ +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x36" +);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else +{if(in4_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),(u8*)& +DATARMNET2d4b4cfc9e.DATARMNET0dc14167a1,-(0xd26+209-0xdf6),NULL)!= +(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x34" +);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd11+230-0xdf3);} +DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66]; +DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f=dev_get_by_name(genl_info_net( +DATARMNET54338da2ff),nla_data(DATARMNETef7cdd7b6b));if(!DATARMNET2d4b4cfc9e. +DATARMNET57656f6f2f){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x49\x6e\x76\x61\x6c\x69\x64\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x61\x6d\x65" +);return-EINVAL;}DATARMNET268a8314cf=DATARMNETb8b35fdc18(&DATARMNET2d4b4cfc9e, +DATARMNET54338da2ff);dev_put(DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f);return +DATARMNET268a8314cf;}static int DATARMNETc5f6c112ec(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr* +DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ +DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74" +);return-EINVAL;}return DATARMNET8d5a5a7047(nla_get_be16(DATARMNETef7cdd7b6b), +DATARMNET54338da2ff);}static int DATARMNETa6aec23397(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr* +DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ +DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74" +);return-EINVAL;}return DATARMNETc97c6a4265(nla_get_be16(DATARMNETef7cdd7b6b), +DATARMNET54338da2ff);}static int DATARMNET16add73734(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr* +DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ +DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74" +);return-EINVAL;}return DATARMNET59b8376224(nla_get_be16(DATARMNETef7cdd7b6b), +DATARMNET54338da2ff);}static int DATARMNETb318ed4796(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr* +DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ +DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74" +);return-EINVAL;}return DATARMNET0b12e969c5(nla_get_be16(DATARMNETef7cdd7b6b), +DATARMNET54338da2ff);}static int DATARMNETa4773cb837(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){(void) +DATARMNET543491eb0f;(void)DATARMNET54338da2ff;DATARMNET078f6bd384();return +(0xd2d+202-0xdf7);}static int DATARMNETc0cc5d08ba(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct sk_buff* +DATARMNET49b2094b56=NULL;int DATARMNET268a8314cf=(0xd2d+202-0xdf7); +DATARMNET268a8314cf=DATARMNETe14c875532(&DATARMNET49b2094b56,& +DATARMNET61e8f41aae,DATARMNET54338da2ff);if(DATARMNET268a8314cf)goto +DATARMNETbf4095f79e;if(!DATARMNET49b2094b56){DATARMNET268a8314cf=-EINVAL;goto +DATARMNETbf4095f79e;}genlmsg_reply(DATARMNET49b2094b56,DATARMNET54338da2ff); +DATARMNETbf4095f79e:return DATARMNET268a8314cf;}static const struct genl_ops +DATARMNETf9df19988d[]={DATARMNET58eca5265b(DATARMNET0604500302, +DATARMNET72501635c8),DATARMNET58eca5265b(DATARMNET91becfb9ac,DATARMNET41dd9b14ab +),DATARMNET58eca5265b(DATARMNET14a3625b43,DATARMNETf1fa473089), +DATARMNET58eca5265b(DATARMNET4478d3511b,DATARMNETcd9478470c),DATARMNET58eca5265b +(DATARMNETc2d5a4e103,DATARMNETb86993aefb),DATARMNET58eca5265b( +DATARMNET18145b00f6,DATARMNETc175a08219),DATARMNET58eca5265b(DATARMNETb8857fe6d9 +,DATARMNETc5f6c112ec),DATARMNET58eca5265b(DATARMNET6d50a30ec2, +DATARMNETa6aec23397),DATARMNET58eca5265b(DATARMNET2e5d7ed755,DATARMNETa4773cb837 +),DATARMNET58eca5265b(DATARMNETd37aaf8b58,DATARMNET16add73734), +DATARMNET58eca5265b(DATARMNET3626d362d4,DATARMNETb318ed4796),DATARMNET58eca5265b +(DATARMNET7c479706fb,DATARMNETc0cc5d08ba),};static struct genl_family +DATARMNET61e8f41aae={.name=DATARMNET040266f460,.version=DATARMNET7c442b83bb,. +maxattr=DATARMNETebcc30fe04,.policy=DATARMNET0381a65e93,.ops=DATARMNETf9df19988d +,.n_ops=ARRAY_SIZE(DATARMNETf9df19988d),};static int __init DATARMNET7eb0fa5c8f( +void){int DATARMNET61c2303133=(0xd2d+202-0xdf7);pr_info( +"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67" "\n" +,__func__);DATARMNET61c2303133=genl_register_family(&DATARMNET61e8f41aae);if( +DATARMNET61c2303133){pr_err( +"\x25\x73\x28\x29\x3a\x20\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n" +,__func__,DATARMNET61c2303133);goto DATARMNET27d4697979;}DATARMNET61c2303133= +DATARMNET9f106ed933();if(DATARMNET61c2303133){pr_err( +"\x25\x73\x28\x29\x3a\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x6d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x20\x69\x6e\x69\x74\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n" +,__func__,DATARMNET61c2303133);goto DATARMNETb042feb7e2;}return(0xd2d+202-0xdf7) +;DATARMNETb042feb7e2:genl_unregister_family(&DATARMNET61e8f41aae); +DATARMNET27d4697979:return DATARMNET61c2303133;}static void __exit +DATARMNET7a381832d5(void){int DATARMNET61c2303133;pr_info( +"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x20\x65\x78\x69\x74\x69\x6e\x67" "\n" +,__func__);DATARMNET61c2303133=DATARMNETf56cbaa2b1();if(DATARMNET61c2303133) +pr_err( +"\x25\x73\x28\x29\x3a\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x6d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x20\x64\x65\x2d\x69\x6e\x69\x74\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n" +,__func__,DATARMNET61c2303133);DATARMNETfae36afa03();DATARMNET61c2303133= +genl_unregister_family(&DATARMNET61e8f41aae);if(DATARMNET61c2303133)pr_err( +"\x25\x73\x28\x29\x3a\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n" +,__func__,DATARMNET61c2303133);}MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32"); +module_init(DATARMNET7eb0fa5c8f);module_exit(DATARMNET7a381832d5); diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_genl.h b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_genl.h new file mode 100644 index 0000000000..343c29ca0d --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_genl.h @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * RMNET WLAN Generic netlink + * + */ + +#ifndef DATARMNET3819523922 +#define DATARMNET3819523922 +#define DATARMNET7c442b83bb (0xd26+209-0xdf6) +#define DATARMNET040266f460 "\x52\x4d\x4e\x45\x54\x5f\x57\x4c\x41\x4e" +enum{DATARMNET6ea2b7cfbe,DATARMNET0604500302,DATARMNET91becfb9ac, +DATARMNET14a3625b43,DATARMNET4478d3511b,DATARMNETc2d5a4e103,DATARMNET18145b00f6, +DATARMNETb8857fe6d9,DATARMNET6d50a30ec2,DATARMNET2e5d7ed755,DATARMNETd37aaf8b58, +DATARMNET3626d362d4,DATARMNET7c479706fb,DATARMNETce1982dccc,};enum{ +DATARMNET09a5930cdf,DATARMNET4e9cd7b8bf,DATARMNETb8afde4a5a,DATARMNETea4b56dc2b, +DATARMNET8bf80e4b66,DATARMNET44a9a789aa,DATARMNET149cafb1b7,DATARMNET0bfbea52c0, +}; +#define DATARMNETebcc30fe04 (DATARMNET0bfbea52c0 - (0xd26+209-0xdf6)) +enum{DATARMNET0dcb7acdac,DATARMNET8c062d7709,DATARMNET93b5e3666d,}; +#define DATARMNETf6bbad94a5 (DATARMNET93b5e3666d - (0xd26+209-0xdf6)) +#define DATARMNET99ac48d88b (DATARMNETdcafdec32a - (0xd26+209-0xdf6)) +#endif + diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_main.c b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_main.c new file mode 100644 index 0000000000..26d4db8a42 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_main.c @@ -0,0 +1,537 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * RMNET WLAN handler framework + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "rmnet_wlan_genl.h" +#include "rmnet_wlan.h" +#include "rmnet_wlan_stats.h" +#include "rmnet_wlan_fragment.h" +#include "rmnet_wlan_connection.h" +static char*verinfo[]={"\x61\x33\x31\x34\x63\x62\x32\x35", +"\x34\x36\x35\x36\x30\x62\x31\x34","\x30\x65\x33\x34\x62\x31\x39\x31", +"\x62\x31\x62\x63\x64\x66\x66\x61","\x61\x33\x33\x33\x36\x37\x61\x31", +"\x64\x35\x39\x30\x61\x33\x33\x63","\x33\x35\x36\x63\x34\x39\x31\x63", +"\x34\x33\x62\x62\x38\x34\x39\x39","\x32\x66\x33\x36\x30\x30\x31\x34", +"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x64\x32\x32\x34\x33\x36\x33", +"\x61\x34\x31\x63\x39\x64\x37\x62","\x38\x66\x32\x66\x65\x64\x32\x66", +"\x63\x30\x32\x62\x61\x39\x30\x65"};module_param_array(verinfo,charp,NULL, +(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo, +"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72" +); +#define DATARMNETaf49b04806 ((0xeb7+1158-0x132d)) +#define DATARMNET6b4ac8224c (const_ilog2(DATARMNETaf49b04806)) +struct DATARMNET745f724205{struct hlist_node DATARMNETe8608dd267;struct rcu_head + DATARMNET28bfe9e6ad;struct DATARMNETb89ecedefc DATARMNET54338da2ff;};struct +DATARMNETda06413d0d{struct hlist_node DATARMNETe8608dd267;struct rcu_head +DATARMNET28bfe9e6ad;__be16 DATARMNETf0d9de7e2f;};static DEFINE_MUTEX( +DATARMNET63a2b7773e);static DEFINE_HASHTABLE(DATARMNET1903907456, +DATARMNET6b4ac8224c);static DEFINE_MUTEX(DATARMNETf46fb02ac6);static +DEFINE_HASHTABLE(DATARMNET78ed39f13b,DATARMNET6b4ac8224c);static DEFINE_MUTEX( +DATARMNET954bef55d0);static DEFINE_HASHTABLE(DATARMNET133502ca0e, +DATARMNET6b4ac8224c);static DEFINE_HASHTABLE(DATARMNET665d2f133f, +DATARMNET6b4ac8224c);static char DATARMNET30500ba48c[IFNAMSIZ];static char +DATARMNET755f0f0df8[IFNAMSIZ];static u32 DATARMNET7c77d83017;static bool +DATARMNET1e31b22eff(struct DATARMNETb89ecedefc*DATARMNETae0905b0b3,struct +DATARMNETb89ecedefc*DATARMNETdb49f21565){if(DATARMNETae0905b0b3-> +DATARMNET0d956cc77a!=DATARMNETdb49f21565->DATARMNET0d956cc77a|| +DATARMNETae0905b0b3->DATARMNET4924e79411!=DATARMNETdb49f21565-> +DATARMNET4924e79411)return false;if(DATARMNETae0905b0b3->DATARMNET0d956cc77a== +IPPROTO_ESP)return DATARMNETae0905b0b3->DATARMNET906b2ee561==DATARMNETdb49f21565 +->DATARMNET906b2ee561;return DATARMNETae0905b0b3->DATARMNETf0d9de7e2f== +DATARMNETdb49f21565->DATARMNETf0d9de7e2f;}static int DATARMNET0b72d312f9(struct +DATARMNETb89ecedefc*DATARMNET3396919a68,struct genl_info*DATARMNET54338da2ff) +__must_hold(&DATARMNET63a2b7773e){struct DATARMNET745f724205*DATARMNET63b1a086d5 +;rcu_read_lock();if(DATARMNET4eafcdee07(DATARMNET3396919a68)){rcu_read_unlock(); +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x54\x75\x70\x6c\x65\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74" +);return-EEXIST;}rcu_read_unlock();DATARMNET63b1a086d5=kzalloc(sizeof(* +DATARMNET63b1a086d5),GFP_KERNEL);if(!DATARMNET63b1a086d5){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x43\x61\x6e\x6e\x6f\x74\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x74\x75\x70\x6c\x65\x20\x6d\x65\x6d\x6f\x72\x79" +);return-ENOMEM;}memcpy(&DATARMNET63b1a086d5->DATARMNET54338da2ff, +DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));INIT_HLIST_NODE(& +DATARMNET63b1a086d5->DATARMNETe8608dd267);hash_add_rcu(DATARMNET1903907456,& +DATARMNET63b1a086d5->DATARMNETe8608dd267,DATARMNET3396919a68-> +DATARMNETf0d9de7e2f);DATARMNET5ca94dbc3c(DATARMNET12d881921a);return +(0xd2d+202-0xdf7);}static int DATARMNET79343e3135(struct DATARMNETb89ecedefc* +DATARMNET3396919a68,struct genl_info*DATARMNET54338da2ff)__must_hold(& +DATARMNET63a2b7773e){struct DATARMNET745f724205*DATARMNET63b1a086d5;struct +hlist_node*DATARMNET0386f6f82a;hash_for_each_possible_safe(DATARMNET1903907456, +DATARMNET63b1a086d5,DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNET3396919a68 +->DATARMNETf0d9de7e2f){if(DATARMNET1e31b22eff(&DATARMNET63b1a086d5-> +DATARMNET54338da2ff,DATARMNET3396919a68)){hash_del_rcu(&DATARMNET63b1a086d5-> +DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,DATARMNET28bfe9e6ad); +DATARMNET5ca94dbc3c(DATARMNET9f24b86462);return(0xd2d+202-0xdf7);}} +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4e\x6f\x20\x73\x75\x63\x68\x20\x74\x75\x70\x6c\x65");return-ESRCH;}static +void DATARMNETad43e44c7e(void){struct DATARMNET745f724205*DATARMNET63b1a086d5; +struct hlist_node*DATARMNET0386f6f82a;int DATARMNET5c2fd31d7b;mutex_lock(& +DATARMNET63a2b7773e);DATARMNET7c77d83017=(0xd2d+202-0xdf7);hash_for_each_safe( +DATARMNET1903907456,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,DATARMNET63b1a086d5, +DATARMNETe8608dd267){hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267); +kfree_rcu(DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);}mutex_unlock(& +DATARMNET63a2b7773e);}static bool DATARMNET55aac1386b(struct DATARMNET8d3c2559ca +*DATARMNET1476c48228,struct DATARMNET8d3c2559ca*DATARMNET57a0f36a25){struct +in6_addr DATARMNET4c8c2ca74e={.s6_addr32={4294967295,4294967295, +(0xd2d+202-0xdf7),(0xd2d+202-0xdf7)},};if(DATARMNET1476c48228-> +DATARMNET0d956cc77a!=DATARMNET57a0f36a25->DATARMNET0d956cc77a)return false;if( +DATARMNET1476c48228->DATARMNET0d956cc77a==(0xd11+230-0xdf3))return +DATARMNET1476c48228->DATARMNET0dc14167a1==DATARMNET57a0f36a25-> +DATARMNET0dc14167a1;return!ipv6_masked_addr_cmp(&DATARMNET1476c48228-> +DATARMNET5700daac01,&DATARMNET4c8c2ca74e,&DATARMNET57a0f36a25-> +DATARMNET5700daac01);}struct DATARMNET41b426061d*DATARMNETcc0a01df2a(struct +DATARMNET8d3c2559ca*DATARMNET54338da2ff)__must_hold(RCU){struct +DATARMNET41b426061d*DATARMNET63b1a086d5;hash_for_each_possible_rcu( +DATARMNET78ed39f13b,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET54338da2ff +->DATARMNET0dc14167a1){if(DATARMNET55aac1386b(&DATARMNET63b1a086d5-> +DATARMNET7ed5754a5c,DATARMNET54338da2ff))return DATARMNET63b1a086d5;}return NULL +;}static int DATARMNETe98553a8fc(struct notifier_block*DATARMNET272c159b3c, +unsigned long DATARMNET7f045a1e6e,void*data){struct net_device* +DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(data);struct DATARMNET41b426061d +*DATARMNET2d4b4cfc9e;DATARMNET2d4b4cfc9e=container_of(DATARMNET272c159b3c,struct + DATARMNET41b426061d,DATARMNET272c159b3c);if(!DATARMNET00dcb79bc4||strncmp( +DATARMNET00dcb79bc4->name,DATARMNET2d4b4cfc9e->DATARMNET852d4d00e2,IFNAMSIZ)) +return NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER:if( +DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f){dev_put( +DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f);WRITE_ONCE( +DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f,NULL);}break;case +NETDEV_REGISTER:if(!DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f +){dev_hold(DATARMNET00dcb79bc4);WRITE_ONCE(DATARMNET2d4b4cfc9e-> +DATARMNET7ed5754a5c.DATARMNET57656f6f2f,DATARMNET00dcb79bc4);}break;default: +break;}return NOTIFY_DONE;}static int DATARMNET1ac13d5a2a(struct +DATARMNET8d3c2559ca*DATARMNET7ed5754a5c,struct genl_info*DATARMNET54338da2ff) +__must_hold(&DATARMNETf46fb02ac6){struct DATARMNET41b426061d*DATARMNET2d4b4cfc9e +;int DATARMNET268a8314cf;rcu_read_lock();DATARMNET2d4b4cfc9e=DATARMNETcc0a01df2a +(DATARMNET7ed5754a5c);if(DATARMNET2d4b4cfc9e){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x46\x57\x44\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74" +);rcu_read_unlock();return-EEXIST;}rcu_read_unlock();DATARMNET2d4b4cfc9e=kzalloc +(sizeof(*DATARMNET2d4b4cfc9e),GFP_KERNEL);if(!DATARMNET2d4b4cfc9e){ +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x43\x61\x6e\x6e\x6f\x74\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x46\x57\x44\x20\x63\x6f\x6e\x74\x65\x78\x74" +);return-ENOMEM;}memcpy(&DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c, +DATARMNET7ed5754a5c,sizeof(*DATARMNET7ed5754a5c));DATARMNET2d4b4cfc9e-> +DATARMNET7ed5754a5c.DATARMNET57656f6f2f=NULL;strlcpy(DATARMNET2d4b4cfc9e-> +DATARMNET852d4d00e2,DATARMNET7ed5754a5c->DATARMNET57656f6f2f->name,IFNAMSIZ); +DATARMNET2d4b4cfc9e->DATARMNET272c159b3c.notifier_call=DATARMNETe98553a8fc; +DATARMNET268a8314cf=register_netdevice_notifier(&DATARMNET2d4b4cfc9e-> +DATARMNET272c159b3c);if(DATARMNET268a8314cf){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x52\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x46\x57\x44\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64" +);kfree(DATARMNET2d4b4cfc9e);return DATARMNET268a8314cf;}INIT_HLIST_NODE(& +DATARMNET2d4b4cfc9e->DATARMNETe8608dd267);hash_add_rcu(DATARMNET78ed39f13b,& +DATARMNET2d4b4cfc9e->DATARMNETe8608dd267,DATARMNET7ed5754a5c-> +DATARMNET0dc14167a1);return(0xd2d+202-0xdf7);}static int DATARMNET6518a28641( +struct DATARMNET41b426061d*DATARMNET2d4b4cfc9e)__must_hold(&DATARMNETf46fb02ac6) +{int DATARMNET268a8314cf;DATARMNET268a8314cf=unregister_netdevice_notifier(& +DATARMNET2d4b4cfc9e->DATARMNET272c159b3c);if(DATARMNET268a8314cf)return +DATARMNET268a8314cf;hash_del_rcu(&DATARMNET2d4b4cfc9e->DATARMNETe8608dd267); +DATARMNETedae8262e1(&DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c);kfree_rcu( +DATARMNET2d4b4cfc9e,DATARMNET28bfe9e6ad);return DATARMNET268a8314cf;}static int +DATARMNET6b6be8e27f(struct DATARMNET8d3c2559ca*DATARMNET7ed5754a5c,struct +genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNETf46fb02ac6){struct +DATARMNET41b426061d*DATARMNET2d4b4cfc9e;int DATARMNET268a8314cf;rcu_read_lock(); +DATARMNET2d4b4cfc9e=DATARMNETcc0a01df2a(DATARMNET7ed5754a5c);rcu_read_unlock(); +if(!DATARMNET2d4b4cfc9e){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4e\x6f\x20\x73\x75\x63\x68\x20\x46\x57\x44\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e" +);return-ESRCH;}if(strncmp(DATARMNET2d4b4cfc9e->DATARMNET852d4d00e2, +DATARMNET7ed5754a5c->DATARMNET57656f6f2f->name,IFNAMSIZ)){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x49\x6e\x63\x6f\x72\x72\x65\x63\x74\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65" +);return-ENODEV;}DATARMNET268a8314cf=DATARMNET6518a28641(DATARMNET2d4b4cfc9e);if +(DATARMNET268a8314cf){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x55\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64" +);return DATARMNET268a8314cf;}return DATARMNET268a8314cf;}static void +DATARMNETe5b03fe375(void){struct DATARMNET41b426061d*DATARMNET54338da2ff;struct +hlist_node*DATARMNET0386f6f82a;int DATARMNET5c2fd31d7b;mutex_lock(& +DATARMNETf46fb02ac6);hash_for_each_safe(DATARMNET78ed39f13b,DATARMNET5c2fd31d7b, +DATARMNET0386f6f82a,DATARMNET54338da2ff,DATARMNETe8608dd267)DATARMNET6518a28641( +DATARMNET54338da2ff);mutex_unlock(&DATARMNETf46fb02ac6);}static bool +DATARMNET7490934ea9(__be16 DATARMNETf0d9de7e2f)__must_hold(RCU){struct +DATARMNETda06413d0d*DATARMNET63b1a086d5;hash_for_each_possible_rcu( +DATARMNET133502ca0e,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNETf0d9de7e2f) +{if(DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f)return true;} +return false;}static int DATARMNET3b10d1c14b(__be16 DATARMNETf0d9de7e2f,struct +genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNET954bef55d0){struct +DATARMNETda06413d0d*DATARMNET63b1a086d5;rcu_read_lock();if(DATARMNET7490934ea9( +DATARMNETf0d9de7e2f)){rcu_read_unlock();GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x45\x6e\x63\x61\x70\x20\x70\x6f\x72\x74\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74" +);return-EEXIST;}rcu_read_unlock();DATARMNET63b1a086d5=kzalloc(sizeof(* +DATARMNET63b1a086d5),GFP_KERNEL);if(!DATARMNET63b1a086d5){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x43\x61\x6e\x6e\x6f\x74\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74\x20\x6d\x65\x6d\x6f\x72\x79" +);return-ENOMEM;}DATARMNET63b1a086d5->DATARMNETf0d9de7e2f=DATARMNETf0d9de7e2f; +INIT_HLIST_NODE(&DATARMNET63b1a086d5->DATARMNETe8608dd267);hash_add_rcu( +DATARMNET133502ca0e,&DATARMNET63b1a086d5->DATARMNETe8608dd267, +DATARMNETf0d9de7e2f);DATARMNET5ca94dbc3c(DATARMNET90782e08cf);return +(0xd2d+202-0xdf7);}static int DATARMNETc023021120(__be16 DATARMNETf0d9de7e2f, +struct genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNET954bef55d0){struct +DATARMNETda06413d0d*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a; +hash_for_each_possible_safe(DATARMNET133502ca0e,DATARMNET63b1a086d5, +DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if( +DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f){hash_del_rcu(& +DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5, +DATARMNET28bfe9e6ad);DATARMNET5ca94dbc3c(DATARMNETb7c9f010b2);return +(0xd2d+202-0xdf7);}}GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x4e\x6f\x20\x73\x75\x63\x68\x20\x70\x6f\x72\x74\x20\x76\x61\x6c\x75\x65"); +return-ESRCH;}static bool DATARMNETa96214b53c(__be16 DATARMNETf0d9de7e2f) +__must_hold(RCU){struct DATARMNETda06413d0d*DATARMNET63b1a086d5; +hash_for_each_possible_rcu(DATARMNET665d2f133f,DATARMNET63b1a086d5, +DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if(DATARMNET63b1a086d5-> +DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f)return true;}return false;}int +DATARMNET59b8376224(__be16 DATARMNETf0d9de7e2f,struct genl_info* +DATARMNET54338da2ff)__must_hold(&DATARMNET954bef55d0){struct DATARMNETda06413d0d +*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a; +hash_for_each_possible_safe(DATARMNET665d2f133f,DATARMNET63b1a086d5, +DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if( +DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f){hash_del_rcu(& +DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5, +DATARMNET28bfe9e6ad);DATARMNET5ca94dbc3c(DATARMNETa726eebea4);return +(0xd2d+202-0xdf7);}}return(0xd2d+202-0xdf7);}int DATARMNET0b12e969c5(__be16 +DATARMNETf0d9de7e2f,struct genl_info*DATARMNET54338da2ff)__must_hold(& +DATARMNET954bef55d0){struct DATARMNETda06413d0d*DATARMNET63b1a086d5; +rcu_read_lock();if(DATARMNETa96214b53c(DATARMNETf0d9de7e2f)){rcu_read_unlock(); +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x45\x6e\x63\x61\x70\x20\x70\x6f\x72\x74\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74" +);return-EEXIST;}rcu_read_unlock();DATARMNET63b1a086d5=kzalloc(sizeof(* +DATARMNET63b1a086d5),GFP_KERNEL);if(!DATARMNET63b1a086d5){GENL_SET_ERR_MSG( +DATARMNET54338da2ff, +"\x43\x61\x6e\x6e\x6f\x74\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74\x20\x6d\x65\x6d\x6f\x72\x79" +);return-ENOMEM;}DATARMNET63b1a086d5->DATARMNETf0d9de7e2f=DATARMNETf0d9de7e2f; +INIT_HLIST_NODE(&DATARMNET63b1a086d5->DATARMNETe8608dd267);hash_add_rcu( +DATARMNET665d2f133f,&DATARMNET63b1a086d5->DATARMNETe8608dd267, +DATARMNETf0d9de7e2f);DATARMNET5ca94dbc3c(DATARMNET990edaea89);return +(0xd2d+202-0xdf7);}static void DATARMNET1f36d4813c(void){struct +DATARMNETda06413d0d*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a; +int DATARMNET5c2fd31d7b;mutex_lock(&DATARMNET954bef55d0);hash_for_each_safe( +DATARMNET133502ca0e,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,DATARMNET63b1a086d5, +DATARMNETe8608dd267){hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267); +kfree_rcu(DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);}mutex_unlock(& +DATARMNET954bef55d0);}static rx_handler_result_t DATARMNET37a92021f9(struct +sk_buff**DATARMNET89946cec52){struct DATARMNET0ca9d8ead7 DATARMNETa76763310b={}; +struct DATARMNETb89ecedefc DATARMNET3396919a68={};struct DATARMNET41b426061d* +DATARMNET72f0eefdce;struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e, +DATARMNET54338da2ff;struct sk_buff*DATARMNET543491eb0f=*DATARMNET89946cec52; +rx_handler_result_t DATARMNET1dec89a127=RX_HANDLER_PASS;int DATARMNET611d08d671; +if(!DATARMNET543491eb0f||DATARMNET543491eb0f->pkt_type==PACKET_LOOPBACK)return +DATARMNET1dec89a127;rcu_read_lock();DATARMNET5ca94dbc3c(DATARMNET735bb8578c);if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9 +=ip_hdr(DATARMNET543491eb0f);if(DATARMNET86f1f2cdc9->protocol==IPPROTO_ICMP){ +DATARMNETa76763310b.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9->daddr; +DATARMNETa76763310b.DATARMNET2cb607d686=DATARMNET86f1f2cdc9->saddr; +DATARMNETa76763310b.DATARMNET0d956cc77a=(0xd11+230-0xdf3);DATARMNET2d4b4cfc9e= +DATARMNET07f0e0f286(&DATARMNETa76763310b);if(DATARMNET2d4b4cfc9e)goto +DATARMNET1e5291b369;}DATARMNET54338da2ff.DATARMNET0dc14167a1=DATARMNET86f1f2cdc9 +->daddr;DATARMNET54338da2ff.DATARMNET0d956cc77a=(0xd11+230-0xdf3); +DATARMNET72f0eefdce=DATARMNETcc0a01df2a(&DATARMNET54338da2ff);if(! +DATARMNET72f0eefdce)goto DATARMNETbf4095f79e;DATARMNET2d4b4cfc9e=& +DATARMNET72f0eefdce->DATARMNET7ed5754a5c;DATARMNET3396919a68.DATARMNET0d956cc77a +=(0xd11+230-0xdf3);DATARMNET3396919a68.DATARMNET4924e79411=DATARMNET86f1f2cdc9-> +protocol;DATARMNET611d08d671=DATARMNET86f1f2cdc9->ihl*(0xd11+230-0xdf3);if( +ip_is_fragment(DATARMNET86f1f2cdc9)){if(!DATARMNET579f75aa50(DATARMNET543491eb0f +,DATARMNET611d08d671,&DATARMNET3396919a68,DATARMNET2d4b4cfc9e)) +DATARMNET1dec89a127=RX_HANDLER_CONSUMED;goto DATARMNETbf4095f79e;}}else if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr* +DATARMNETbf55123e5b=ipv6_hdr(DATARMNET543491eb0f);__be16 frag_off;u8 +DATARMNET65293f17c4;DATARMNET65293f17c4=DATARMNETbf55123e5b->nexthdr; +DATARMNET611d08d671=ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(* +DATARMNETbf55123e5b),&DATARMNET65293f17c4,&frag_off);if(DATARMNET611d08d671< +(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;if(DATARMNET65293f17c4== +IPPROTO_ICMPV6){memcpy(&DATARMNETa76763310b.DATARMNET815cbb4bf5,& +DATARMNETbf55123e5b->daddr,sizeof(DATARMNETa76763310b.DATARMNET815cbb4bf5)); +memcpy(&DATARMNETa76763310b.DATARMNETc3f31215b7,&DATARMNETbf55123e5b->saddr, +sizeof(DATARMNETa76763310b.DATARMNETc3f31215b7));DATARMNETa76763310b. +DATARMNET0d956cc77a=(0xd03+244-0xdf1);DATARMNET2d4b4cfc9e=DATARMNET07f0e0f286(& +DATARMNETa76763310b);if(DATARMNET2d4b4cfc9e)goto DATARMNET1e5291b369;}memcpy(& +DATARMNET54338da2ff.DATARMNET5700daac01,&DATARMNETbf55123e5b->daddr,sizeof( +DATARMNET54338da2ff.DATARMNET5700daac01));DATARMNET54338da2ff. +DATARMNET0d956cc77a=(0xd03+244-0xdf1);DATARMNET72f0eefdce=DATARMNETcc0a01df2a(& +DATARMNET54338da2ff);if(!DATARMNET72f0eefdce)goto DATARMNETbf4095f79e; +DATARMNET2d4b4cfc9e=&DATARMNET72f0eefdce->DATARMNET7ed5754a5c; +DATARMNET3396919a68.DATARMNET0d956cc77a=(0xd03+244-0xdf1);DATARMNET3396919a68. +DATARMNET4924e79411=DATARMNET65293f17c4;if(frag_off){if(!DATARMNETaca8ca54ed( +DATARMNET543491eb0f,DATARMNET611d08d671,&DATARMNET3396919a68,DATARMNET2d4b4cfc9e +))DATARMNET1dec89a127=RX_HANDLER_CONSUMED;goto DATARMNETbf4095f79e;}}else{goto +DATARMNETbf4095f79e;}if(DATARMNET3396919a68.DATARMNET4924e79411==IPPROTO_TCP|| +DATARMNET3396919a68.DATARMNET4924e79411==IPPROTO_UDP){struct udphdr* +DATARMNET75be5f3406=(struct udphdr*)(DATARMNET543491eb0f->data+ +DATARMNET611d08d671);DATARMNET3396919a68.DATARMNETf0d9de7e2f=DATARMNET75be5f3406 +->dest;if(DATARMNETa8b2566e6a(DATARMNET543491eb0f,&DATARMNET3396919a68, +DATARMNET611d08d671)){if(DATARMNET0a4704e5e0(&DATARMNET3396919a68)){kfree_skb( +DATARMNET543491eb0f);DATARMNET1dec89a127=RX_HANDLER_CONSUMED;DATARMNET5ca94dbc3c +(DATARMNET0981317411);goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c( +DATARMNETd1ad664d00);goto DATARMNETbf4095f79e;}}else if(DATARMNET3396919a68. +DATARMNET4924e79411==IPPROTO_ESP){struct ip_esp_hdr*DATARMNET568b3d4b19, +DATARMNET3f4e206745;DATARMNET568b3d4b19=skb_header_pointer(DATARMNET543491eb0f, +DATARMNET611d08d671,sizeof(*DATARMNET568b3d4b19),&DATARMNET3f4e206745);if(! +DATARMNET568b3d4b19){DATARMNET5ca94dbc3c(DATARMNETf1f7e2c408);goto +DATARMNETbf4095f79e;}DATARMNET3396919a68.DATARMNET906b2ee561=DATARMNET568b3d4b19 +->spi;}else{goto DATARMNETbf4095f79e;}if(DATARMNET4eafcdee07(& +DATARMNET3396919a68))goto DATARMNET1e5291b369;if(DATARMNET543491eb0f->mark== +131074){struct net_device*DATARMNET39542b437e=dev_get_by_name_rcu(&init_net, +"\x64\x75\x6d\x6d\x79\x30");if(DATARMNET39542b437e){DATARMNET543491eb0f->dev= +DATARMNET39542b437e;DATARMNET543491eb0f->mark=(0xd2d+202-0xdf7);}else{ +DATARMNET5ca94dbc3c(DATARMNET5c603ca4b0);}}goto DATARMNETbf4095f79e; +DATARMNET1e5291b369:if(!DATARMNET4899053671(DATARMNET543491eb0f, +DATARMNET2d4b4cfc9e))DATARMNET1dec89a127=RX_HANDLER_CONSUMED;DATARMNETbf4095f79e +:rcu_read_unlock();return DATARMNET1dec89a127;}static int DATARMNET0ed065ddb7( +struct notifier_block*DATARMNET272c159b3c,unsigned long DATARMNET7f045a1e6e,void +*data){struct net_device*DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(data); +if(!DATARMNET00dcb79bc4||strncmp(DATARMNET00dcb79bc4->name,DATARMNET30500ba48c, +IFNAMSIZ))return NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER: +netdev_rx_handler_unregister(DATARMNET00dcb79bc4);break;case NETDEV_REGISTER:if( +netdev_rx_handler_register(DATARMNET00dcb79bc4,DATARMNET37a92021f9,NULL))pr_err( +"\x25\x73\x28\x29\x3a\x20\x52\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);break;default:break;}return NOTIFY_DONE;}static int +DATARMNET6512527d9c(struct notifier_block*DATARMNET272c159b3c,unsigned long +DATARMNET7f045a1e6e,void*data){struct net_device*DATARMNET00dcb79bc4= +netdev_notifier_info_to_dev(data);if(!DATARMNET00dcb79bc4||strncmp( +DATARMNET00dcb79bc4->name,DATARMNET755f0f0df8,IFNAMSIZ))return NOTIFY_DONE; +switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER:netdev_rx_handler_unregister( +DATARMNET00dcb79bc4);break;case NETDEV_REGISTER:if(netdev_rx_handler_register( +DATARMNET00dcb79bc4,DATARMNET37a92021f9,NULL))pr_err( +"\x25\x73\x28\x29\x3a\x20\x52\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n" +,__func__);break;default:break;}return NOTIFY_DONE;}static struct notifier_block + DATARMNETa1726000d8={.notifier_call=DATARMNET0ed065ddb7,};static struct +notifier_block DATARMNET2c4484aef5={.notifier_call=DATARMNET6512527d9c,};static +int DATARMNET116f9a46aa(void){int DATARMNET268a8314cf;if(!DATARMNET30500ba48c[ +(0xd2d+202-0xdf7)])return(0xd2d+202-0xdf7);DATARMNET268a8314cf= +unregister_netdevice_notifier(&DATARMNETa1726000d8);if(!DATARMNET268a8314cf) +DATARMNET30500ba48c[(0xd2d+202-0xdf7)]=(0xd2d+202-0xdf7);return +DATARMNET268a8314cf;}static int DATARMNET56777c5470(void){int +DATARMNET268a8314cf;if(!DATARMNET755f0f0df8[(0xd2d+202-0xdf7)])return +(0xd2d+202-0xdf7);DATARMNET268a8314cf=unregister_netdevice_notifier(& +DATARMNET2c4484aef5);if(!DATARMNET268a8314cf)DATARMNET755f0f0df8[ +(0xd2d+202-0xdf7)]=(0xd2d+202-0xdf7);return DATARMNET268a8314cf;}static void +DATARMNETbb4efa5b3d(void){DATARMNET116f9a46aa();DATARMNET1f36d4813c(); +DATARMNET8c0e010dfb();DATARMNETe5b03fe375();DATARMNETad43e44c7e();}static int +DATARMNET38ebe8f319(struct sk_buff*DATARMNET543491eb0f,int DATARMNET1faf88208b){ +if(!pskb_may_pull(DATARMNET543491eb0f,DATARMNET1faf88208b))return-ENOMEM;if(! +skb_cloned(DATARMNET543491eb0f)||skb_clone_writable(DATARMNET543491eb0f, +DATARMNET1faf88208b))return(0xd2d+202-0xdf7);return pskb_expand_head( +DATARMNET543491eb0f,(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),GFP_ATOMIC);}static void + DATARMNET9a8d756527(__sum16*DATARMNETc2284e5688,struct sk_buff* +DATARMNET543491eb0f,__be32 DATARMNET9080427d4e,__be32 DATARMNETc0e620c987,bool +DATARMNETcb0345b337){if(DATARMNET543491eb0f->ip_summed!=CHECKSUM_PARTIAL){ +csum_replace4(DATARMNETc2284e5688,DATARMNET9080427d4e,DATARMNETc0e620c987);if( +DATARMNET543491eb0f->ip_summed==CHECKSUM_COMPLETE&&DATARMNETcb0345b337){ +DATARMNET543491eb0f->csum=csum_sub(~(DATARMNET543491eb0f->csum),(__wsum) +DATARMNET9080427d4e);DATARMNET543491eb0f->csum=~csum_add(DATARMNET543491eb0f-> +csum,(__wsum)DATARMNETc0e620c987);}}else if(DATARMNETcb0345b337){__wsum +DATARMNET0386f6f82a=csum_unfold(*DATARMNETc2284e5688);DATARMNET0386f6f82a= +csum_sub(DATARMNET0386f6f82a,(__wsum)DATARMNET9080427d4e);DATARMNET0386f6f82a= +csum_add(DATARMNET0386f6f82a,(__wsum)DATARMNETc0e620c987);*DATARMNETc2284e5688=~ +csum_fold(DATARMNET0386f6f82a);}}static void DATARMNETc03853e26d(__sum16* +DATARMNETc2284e5688,struct sk_buff*DATARMNET543491eb0f,__be16 +DATARMNET9080427d4e,__be16 DATARMNETc0e620c987,bool DATARMNETcb0345b337){ +DATARMNET9a8d756527(DATARMNETc2284e5688,DATARMNET543491eb0f,(__be32) +DATARMNET9080427d4e,(__be32)DATARMNETc0e620c987,DATARMNETcb0345b337);}static +unsigned int DATARMNET7060ca9a47(u8*DATARMNET54fdee4fda,unsigned int +DATARMNET6396f657b3){if(DATARMNET54fdee4fda[DATARMNET6396f657b3]==TCPOPT_EOL|| +DATARMNET54fdee4fda[DATARMNET6396f657b3]==TCPOPT_NOP||!DATARMNET54fdee4fda[ +DATARMNET6396f657b3+(0xd26+209-0xdf6)])return(0xd26+209-0xdf6);return +DATARMNET54fdee4fda[DATARMNET6396f657b3+(0xd26+209-0xdf6)];}void +DATARMNET7ca470d54b(struct sk_buff*DATARMNET543491eb0f,u32 DATARMNET1464100e7a){ +struct tcphdr*DATARMNET668416551c;u8 DATARMNET630b15102e[(0xf07+1090-0x130d)];u8 +*DATARMNET54fdee4fda;__be16 DATARMNETdda9f3dd51=htons((0xef7+3481-0x181c));u16 +DATARMNET611d08d671;u16 DATARMNET7fa3427233;unsigned int DATARMNETefc9df3df2; +__be32 DATARMNET572f0d1999;u8 DATARMNET0d956cc77a;if(DATARMNET543491eb0f-> +protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e; +DATARMNET0d956cc77a=(0xd11+230-0xdf3);DATARMNET86f1f2cdc9=skb_header_pointer( +DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),& +DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto DATARMNET268a8314cf;if( +DATARMNET86f1f2cdc9->protocol!=IPPROTO_TCP)goto DATARMNETed6aa0a77f; +DATARMNET611d08d671=DATARMNET86f1f2cdc9->ihl*(0xd11+230-0xdf3);}else if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr* +DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;__be16 frag_off;u8 DATARMNETa8d8445982; +DATARMNET0d956cc77a=(0xd03+244-0xdf1);DATARMNETbf55123e5b=skb_header_pointer( +DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),& +DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto DATARMNET268a8314cf; +DATARMNETa8d8445982=DATARMNETbf55123e5b->nexthdr;DATARMNET611d08d671= +ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*DATARMNETbf55123e5b),& +DATARMNETa8d8445982,&frag_off);if(DATARMNET611d08d671<(0xd2d+202-0xdf7))goto +DATARMNET268a8314cf;if(DATARMNETa8d8445982!=IPPROTO_TCP)goto DATARMNETed6aa0a77f +;}else{goto DATARMNET268a8314cf;}DATARMNET668416551c=skb_header_pointer( +DATARMNET543491eb0f,DATARMNET611d08d671,sizeof(*DATARMNET668416551c),& +DATARMNET630b15102e);if(!DATARMNET668416551c)goto DATARMNET268a8314cf;if(!( +tcp_flag_word(DATARMNET668416551c)&DATARMNET1464100e7a))goto DATARMNETed6aa0a77f +;DATARMNET7fa3427233=DATARMNET668416551c->doff*(0xd11+230-0xdf3);if( +DATARMNET38ebe8f319(DATARMNET543491eb0f,DATARMNET611d08d671+DATARMNET7fa3427233) +)goto DATARMNET268a8314cf;DATARMNET668416551c=skb_header_pointer( +DATARMNET543491eb0f,DATARMNET611d08d671,DATARMNET7fa3427233,&DATARMNET630b15102e +);if(!DATARMNET668416551c)goto DATARMNET268a8314cf;DATARMNET54fdee4fda=(u8*) +DATARMNET668416551c;for(DATARMNETefc9df3df2=sizeof(*DATARMNET668416551c); +DATARMNETefc9df3df2check,DATARMNET543491eb0f,* +DATARMNETb3032fac16,DATARMNETdda9f3dd51,false);*DATARMNETb3032fac16= +DATARMNETdda9f3dd51;DATARMNET5ca94dbc3c(DATARMNETef2af4f071);return;}if( +DATARMNET543491eb0f->len>DATARMNET611d08d671+DATARMNET7fa3427233|| +DATARMNET7fa3427233>=(0xf07+1090-0x130d))goto DATARMNETed6aa0a77f;if( +skb_tailroom(DATARMNET543491eb0f)check,DATARMNET543491eb0f,htons( +DATARMNET543491eb0f->len-DATARMNET611d08d671),htons(DATARMNET543491eb0f->len- +DATARMNET611d08d671+TCPOLEN_MSS),true);DATARMNET54fdee4fda=skb_put( +DATARMNET543491eb0f,TCPOLEN_MSS);if(DATARMNET0d956cc77a==(0xd11+230-0xdf3)) +DATARMNETdda9f3dd51=htons(min_t(u16,ntohs(DATARMNETdda9f3dd51), +(0x545+2434-0xcaf)));else DATARMNETdda9f3dd51=htons(min_t(u16,ntohs( +DATARMNETdda9f3dd51),(0xbf7+4058-0x170d)));DATARMNET54fdee4fda[(0xd2d+202-0xdf7) +]=TCPOPT_MSS;DATARMNET54fdee4fda[(0xd26+209-0xdf6)]=TCPOLEN_MSS;*((__be16*)( +DATARMNET54fdee4fda+(0xd1f+216-0xdf5)))=DATARMNETdda9f3dd51;DATARMNET9a8d756527( +&DATARMNET668416551c->check,DATARMNET543491eb0f,(0xd2d+202-0xdf7),*((__be32*) +DATARMNET54fdee4fda),false);DATARMNET572f0d1999=tcp_flag_word( +DATARMNET668416551c);DATARMNET668416551c->doff++;DATARMNET9a8d756527(& +DATARMNET668416551c->check,DATARMNET543491eb0f,DATARMNET572f0d1999,tcp_flag_word +(DATARMNET668416551c),false);if(DATARMNET0d956cc77a==(0xd11+230-0xdf3)){struct +iphdr*DATARMNET86f1f2cdc9=ip_hdr(DATARMNET543491eb0f);csum_replace2(& +DATARMNET86f1f2cdc9->check,DATARMNET86f1f2cdc9->tot_len,htons( +DATARMNET543491eb0f->len));DATARMNET86f1f2cdc9->tot_len=htons( +DATARMNET543491eb0f->len);}else{struct ipv6hdr*DATARMNETbf55123e5b=ipv6_hdr( +DATARMNET543491eb0f);DATARMNETbf55123e5b->payload_len=htons(ntohs( +DATARMNETbf55123e5b->payload_len)+TCPOLEN_MSS);}DATARMNET5ca94dbc3c( +DATARMNETef2af4f071);return;DATARMNETed6aa0a77f:DATARMNET5ca94dbc3c( +DATARMNETebc1b87b7d);return;DATARMNET268a8314cf:DATARMNET5ca94dbc3c( +DATARMNET21bdbe6a27);return;}int DATARMNET4899053671(struct sk_buff* +DATARMNET543491eb0f,struct DATARMNET8d3c2559ca*DATARMNET54338da2ff){struct +net_device*DATARMNET00dcb79bc4;DATARMNET00dcb79bc4=READ_ONCE(DATARMNET54338da2ff +->DATARMNET57656f6f2f);if(!DATARMNET00dcb79bc4){DATARMNET5ca94dbc3c( +DATARMNET591885a019);return-ENODEV;}DATARMNET7ca470d54b(DATARMNET543491eb0f, +TCP_FLAG_SYN|TCP_FLAG_ACK);DATARMNET543491eb0f->dev=DATARMNET00dcb79bc4; +dev_queue_xmit(DATARMNET543491eb0f);DATARMNET5ca94dbc3c(DATARMNETf4c2a83526); +return(0xd2d+202-0xdf7);}bool DATARMNET4eafcdee07(struct DATARMNETb89ecedefc* +DATARMNET3396919a68)__must_hold(RCU){struct DATARMNET745f724205* +DATARMNET63b1a086d5;hash_for_each_possible_rcu(DATARMNET1903907456, +DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET3396919a68->DATARMNETf0d9de7e2f +){if(DATARMNET1e31b22eff(&DATARMNET63b1a086d5->DATARMNET54338da2ff, +DATARMNET3396919a68))return true;}return false;}int DATARMNET53f12a0f7d(struct +DATARMNETb89ecedefc*DATARMNETcadc2ef9aa,u32 DATARMNETef77661260,struct genl_info +*DATARMNET54338da2ff){int DATARMNET268a8314cf=(0xd2d+202-0xdf7);u32 +DATARMNETefc9df3df2;mutex_lock(&DATARMNET63a2b7773e);for(DATARMNETefc9df3df2= +(0xd2d+202-0xdf7);DATARMNETefc9df3df2DATARMNET4924e79411!=IPPROTO_UDP||! +DATARMNET7490934ea9(DATARMNET3396919a68->DATARMNETf0d9de7e2f))return false; +DATARMNET75be5f3406=skb_header_pointer(DATARMNET543491eb0f,DATARMNET611d08d671, +sizeof(*DATARMNET75be5f3406),&DATARMNETc82d2f4e16);if(!DATARMNET75be5f3406) +return false;if(DATARMNET75be5f3406->source==htons((0xdf7+6169-0x241c)))return +false;DATARMNETdf2dbc641f=skb_header_pointer(DATARMNET543491eb0f, +DATARMNET611d08d671+sizeof(*DATARMNET75be5f3406),sizeof(*DATARMNETdf2dbc641f),& +DATARMNET6c56902362);if(!DATARMNETdf2dbc641f)return false;return!!(* +DATARMNETdf2dbc641f);}bool DATARMNET0a4704e5e0(struct DATARMNETb89ecedefc* +DATARMNET3396919a68){return DATARMNETa96214b53c(DATARMNET3396919a68-> +DATARMNETf0d9de7e2f);}static int DATARMNETed41dd2d3f(struct sk_buff* +DATARMNET543491eb0f,struct DATARMNETb89ecedefc*DATARMNET3396919a68){struct +nlattr*DATARMNET4186ba2d8f;DATARMNET4186ba2d8f=nla_nest_start( +DATARMNET543491eb0f,DATARMNET4e9cd7b8bf);if(!DATARMNET4186ba2d8f)return-EINVAL; +if(nla_put(DATARMNET543491eb0f,DATARMNET8c062d7709,sizeof(*DATARMNET3396919a68), +DATARMNET3396919a68)){nla_nest_cancel(DATARMNET543491eb0f,DATARMNET4186ba2d8f); +return-EINVAL;}nla_nest_end(DATARMNET543491eb0f,DATARMNET4186ba2d8f);return +(0xd2d+202-0xdf7);}int DATARMNETe14c875532(struct sk_buff**DATARMNET89946cec52, +struct genl_family*DATARMNET4a4aca7220,struct genl_info*DATARMNET54338da2ff){ +struct DATARMNET745f724205*DATARMNET63b1a086d5;struct sk_buff* +DATARMNET49b2094b56=NULL;struct nlattr*DATARMNETa5d4001a4a;int +DATARMNETd6c25fe6b5;int DATARMNET268a8314cf=(0xd2d+202-0xdf7);void* +DATARMNET9eab1e957c;int DATARMNET5c2fd31d7b;mutex_lock(&DATARMNET63a2b7773e); +DATARMNETd6c25fe6b5=nla_total_size(nla_total_size(sizeof(DATARMNET63b1a086d5-> +DATARMNET54338da2ff))*DATARMNET7c77d83017);DATARMNET49b2094b56=genlmsg_new( +DATARMNETd6c25fe6b5,GFP_KERNEL);if(!DATARMNET49b2094b56)return-ENOMEM; +DATARMNET9eab1e957c=genlmsg_put_reply(DATARMNET49b2094b56,DATARMNET54338da2ff, +DATARMNET4a4aca7220,(0xd2d+202-0xdf7),DATARMNET7c479706fb);if(! +DATARMNET9eab1e957c){kfree(DATARMNET49b2094b56);return-EINVAL;} +DATARMNETa5d4001a4a=nla_nest_start(DATARMNET49b2094b56,DATARMNET4e9cd7b8bf);if(! +DATARMNETa5d4001a4a){kfree(DATARMNET49b2094b56);return-EINVAL;}hash_for_each( +DATARMNET1903907456,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,DATARMNETe8608dd267) +DATARMNETed41dd2d3f(DATARMNET49b2094b56,&DATARMNET63b1a086d5-> +DATARMNET54338da2ff);nla_nest_end(DATARMNET49b2094b56,DATARMNETa5d4001a4a); +genlmsg_end(DATARMNET49b2094b56,DATARMNET9eab1e957c);*DATARMNET89946cec52= +DATARMNET49b2094b56;mutex_unlock(&DATARMNET63a2b7773e);return +DATARMNET268a8314cf;}int DATARMNET078f6bd384(void){DATARMNETbb4efa5b3d();return +(0xd2d+202-0xdf7);}void DATARMNETfae36afa03(void){DATARMNETbb4efa5b3d();}char* +DATARMNET934406764d(void){return DATARMNET30500ba48c;}char*DATARMNETe447822105( +void){return DATARMNET755f0f0df8;} diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_stats.c b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_stats.c new file mode 100644 index 0000000000..db37dcd59a --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_stats.c @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * + * RMNET WLAN stats framework + * + */ + +#include +#include "rmnet_wlan_stats.h" +static u64 DATARMNET24d235c444[DATARMNETc6bf075f65];module_param_array_named( +rmnet_wlan_stat,DATARMNET24d235c444,ullong,NULL,(0xcb7+5769-0x221c));static u64 +DATARMNET9f5801b25f[DATARMNETfe1714cc0e];module_param_array_named( +rmnet_wlan_forward_stat,DATARMNET9f5801b25f,ullong,NULL,(0xcb7+5769-0x221c)); +void DATARMNET5ca94dbc3c(u32 DATARMNET248f120dd5){if(DATARMNET248f120dd5< +DATARMNETc6bf075f65)DATARMNET24d235c444[DATARMNET248f120dd5]+=(0xd26+209-0xdf6); +}void DATARMNET17f6bc1be5(u32 DATARMNET248f120dd5){if(DATARMNET248f120dd5< +DATARMNETfe1714cc0e)DATARMNET9f5801b25f[DATARMNET248f120dd5]+=(0xd26+209-0xdf6); +} diff --git a/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_stats.h b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_stats.h new file mode 100644 index 0000000000..4bc35d5466 --- /dev/null +++ b/qcom/opensource/datarmnet-ext/wlan/rmnet_wlan_stats.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * RMNET WLAN stats framework + * + */ + +#ifndef DATARMNETb0d32a80bc +#define DATARMNETb0d32a80bc +#include +enum{DATARMNET12d881921a,DATARMNET9f24b86462,DATARMNET735bb8578c, +DATARMNETf4c2a83526,DATARMNET591885a019,DATARMNETd8273aa7e1,DATARMNET7a58a5c1fc, +DATARMNETba232077da,DATARMNETe75ad1a949,DATARMNETd691057b85,DATARMNETd1ad664d00, +DATARMNETef2af4f071,DATARMNETebc1b87b7d,DATARMNET21bdbe6a27,DATARMNET90782e08cf, +DATARMNETb7c9f010b2,DATARMNET990edaea89,DATARMNETa726eebea4,DATARMNET0981317411, +DATARMNETb59245fef4,DATARMNETf1f7e2c408,DATARMNET5c603ca4b0,DATARMNETc6bf075f65, +};enum{DATARMNETc1b437465b,DATARMNET04311361a2,DATARMNET43a65c0be7, +DATARMNET13bbe5f5c5,DATARMNETd1c349b9fc,DATARMNETfa4b3dd44a,DATARMNET72ab5e86d8, +DATARMNET0e6bd55b8b,DATARMNET64aecaa865,DATARMNET72f4fdd48a,DATARMNET9cff15f94d, +DATARMNETbf6e6853f9,DATARMNETa0da722329,DATARMNET729e252fb9,DATARMNET6b0ed53aab, +DATARMNET22ac945cae,DATARMNET97b44d0c09,DATARMNETf954265acb,DATARMNET15454f969d, +DATARMNET9bdb1c4072,DATARMNET9a57ef32d3,DATARMNET9a940d93dc,DATARMNETf326b7c906, +DATARMNET544d78ede7,DATARMNET5abdc89190,DATARMNET101af46c1c,DATARMNET0b9541c9b3, +DATARMNET0078f1d36d,DATARMNET661bdeccd4,DATARMNET28e7704d13,DATARMNET7c6c30b7d2, +DATARMNET39d80cc483,DATARMNET1be480319c,DATARMNET15d1a78b15,DATARMNETddb1bc27cb, +DATARMNETc730640bf7,DATARMNET521b065310,DATARMNET8a15bcdcc7,DATARMNET0978ff973f, +DATARMNETc52168a41e,DATARMNET666fc9a664,DATARMNET7803c877c0,DATARMNET4c5aeeb476, +DATARMNETfe1714cc0e,};void DATARMNET5ca94dbc3c(u32 DATARMNET248f120dd5);void +DATARMNET17f6bc1be5(u32 DATARMNET248f120dd5); +#endif +