Add 'qcom/opensource/datarmnet-ext/' from commit 'e7a27480ae7c8dbc5508a8dcfa69c5628d3afe2d'

git-subtree-dir: qcom/opensource/datarmnet-ext
git-subtree-mainline: 16648ad2df
git-subtree-split: e7a27480ae
Change-Id:
repo: https://git.codelinaro.org/clo/la/platform/vendor/qcom/opensource/datarmnet-ext
tag: LA.VENDOR.14.3.0.r1-17300-lanai.QSSI15.0
This commit is contained in:
David Wronek 2024-10-06 16:44:21 +02:00
commit 2d61911ef6
109 changed files with 10860 additions and 0 deletions

View File

@ -0,0 +1,40 @@
ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_APS_DLKM_PLATFORMS_LIST := pineapple
RMNET_APS_DLKM_PLATFORMS_LIST += pitti
RMNET_APS_DLKM_PLATFORMS_LIST += volcano
ifeq ($(call is-board-platform-in-list, $(RMNET_APS_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
#Enabling BAZEL
LOCAL_MODULE_DDK_BUILD := true
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
endif #End of Check for datarmnet

View File

@ -0,0 +1,14 @@
load(":define_aps.bzl", "define_aps")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
define_aps("pineapple", "consolidate")
define_aps("pineapple", "gki")
define_aps("pitti", "consolidate")
define_aps("pitti", "gki")
define_aps("volcano", "consolidate")
define_aps("volcano", "gki")

View File

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

View File

@ -0,0 +1,9 @@
#
# RMNET_APS drivers
#
menuconfig RMNET_APS
tristate "Rmnet APS support"
default m
---help---
Apps prioritization module for RmNet driver

View File

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

View File

@ -0,0 +1,37 @@
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
def define_aps(target, variant):
kernel_build_variant = "{}_{}".format(target, variant)
include_base = "../../../{}".format(native.package_name())
ddk_module(
name = "{}_aps".format(kernel_build_variant),
out = "rmnet_aps.ko",
srcs = [
"rmnet_aps_genl.c",
"rmnet_aps_main.c",
"rmnet_aps.h",
"rmnet_aps_genl.h",
],
kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
deps = [
"//msm-kernel:all_headers",
"//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
"//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
],
copts = ["-Wno-misleading-indentation"],
includes = ["include"],
)
copy_to_dist_dir(
name = "{}_datarment-ext_dist".format(kernel_build_variant),
data = [
":{}_aps".format(kernel_build_variant),
],
dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
flat = True,
wipe_dist_dir = False,
allow_duplicate_filenames = False,
mode_overrides = {"**/*": "644"},
)

View File

@ -0,0 +1,45 @@
/* Copyright (c) 2021-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.
*/
#ifndef DATARMNETa70542332d
#define DATARMNETa70542332d
#include <linux/skbuff.h>
#include <net/genetlink.h>
#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;};
#define DATARMNET53f589a196 (0xd26+209-0xdf6)
#define DATARMNET3cff03c531 (0xd1f+216-0xdf5)
struct DATARMNETd51e57e3f4{u32 cmd;u32 DATARMNETbb588401ec;u32 ifindex;s32
DATARMNET61b4abcc9b;__be32 saddr[(0xd11+230-0xdf3)];__be32 daddr[
(0xd11+230-0xdf3)];u16 sport;u16 dport;u32 DATARMNETe9aad463ce;u8 tos;u8
DATARMNETa400ad4f72;u8 DATARMNET06d2413ad2;u8 DATARMNET0711bbda6c;u8
DATARMNETecca9147fd[(0xef7+1114-0x130d)];};struct DATARMNET15bcb4844b{u32 cmd;
u32 DATARMNETe65883bfce;u32 DATARMNETbb588401ec;};struct DATARMNET797a5b1493{u32
ifindex;u64 DATARMNET9c9a589dce;u32 DATARMNETc277c62678;u32 DATARMNETecca9147fd
[(0xd35+210-0xdff)];};struct DATARMNET9a727f81bc{u32 ifindex;u32
DATARMNETecca9147fd[(0xcfc+267-0xe00)];};struct DATARMNET7fb3ee4333{u8 mux_id;u8
DATARMNET6f031e7934;u8 DATARMNET08e1628d23;u8 len;u32 DATARMNETa960d37cad[
(0xd35+210-0xdff)];};int DATARMNET37a9efbbcb(struct sk_buff*DATARMNETaafc1d9519,
struct genl_info*DATARMNET54338da2ff);int DATARMNET1998d09852(struct sk_buff*
DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff);int
DATARMNETae6b282c61(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
DATARMNET54338da2ff);int DATARMNET568dffe281(struct sk_buff*DATARMNETaafc1d9519,
struct genl_info*DATARMNET54338da2ff);
#endif

View File

@ -0,0 +1,39 @@
/* Copyright (c) 2021-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 "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)),[DATARMNET572e4a28eb]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNET797a5b1493)),[DATARMNETe54d857ffe]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNET9a727f81bc)),[DATARMNET7edfedec7f]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNETd51e57e3f4)),[DATARMNETd2b1517d6b]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNET15bcb4844b)),[DATARMNET24b8b9ef93]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNET7fb3ee4333)),};
#define DATARMNET7dc6237681(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e)\
\
{ \
.cmd = DATARMNET5aeb0ef9bc, .doit = DATARMNETbd9859b58e, .dumpit = NULL, .\
flags = (0xd2d+202-0xdf7), \
}
static const struct genl_ops DATARMNET27a52625e4[]={DATARMNET7dc6237681(
DATARMNET15437be67e,DATARMNET37a9efbbcb),DATARMNET7dc6237681(DATARMNET4f09ad7688
,DATARMNET1998d09852),DATARMNET7dc6237681(DATARMNET97eefd45e3,
DATARMNETae6b282c61),DATARMNET7dc6237681(DATARMNET30180ab70e,DATARMNET568dffe281
),};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);}

View File

@ -0,0 +1,26 @@
/* Copyright (c) 2021-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.
*/
#ifndef DATARMNET975050c527
#define DATARMNET975050c527
#include <net/genetlink.h>
#define DATARMNET33d1a3e23a (0xd26+209-0xdf6)
#define DATARMNETa4a6e34e45 "\x52\x4d\x4e\x45\x54\x5f\x41\x50\x53"
enum{DATARMNETeafde44f15,DATARMNET15437be67e,DATARMNET4f09ad7688,
DATARMNET97eefd45e3,DATARMNET30180ab70e,DATARMNET4ac82df478,};enum{
DATARMNET900754429d,DATARMNET98b93f2e86,DATARMNET818a0b6438,DATARMNET572e4a28eb,
DATARMNETe54d857ffe,DATARMNET7edfedec7f,DATARMNETd2b1517d6b,DATARMNET24b8b9ef93,
DATARMNET074e71007e,};
#define DATARMNET3b044438b9 (DATARMNET074e71007e - (0xd26+209-0xdf6))
int DATARMNETcfa8d492f8(void);void DATARMNETca7606cfd1(void);
#endif

View File

@ -0,0 +1,794 @@
/* Copyright (c) 2021-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 <linux/timer.h>
#include <linux/list_sort.h>
#include <linux/workqueue.h>
#include <linux/netdevice.h>
#include <linux/proc_fs.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include "rmnet_config.h"
#include "rmnet_module.h"
#include "rmnet_descriptor.h"
#include "rmnet_qmap.h"
#include "rmnet_aps.h"
#include "rmnet_aps_genl.h"
static char*verinfo[]={"\x62\x30\x37\x39\x65\x62\x37\x61",
"\x38\x64\x65\x64\x63\x37\x31\x38","\x36\x35\x35\x33\x39\x62\x38\x34",
"\x65\x32\x31\x38\x66\x34\x35\x31","\x33\x32\x61\x36\x65\x62\x61\x39",
"\x36\x39\x30\x35\x35\x36\x38\x65","\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 DATARMNETd0bce1573e (0xd03+244-0xdf1)
#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 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\x34";static u16
DATARMNET2fe4661b82;static struct genl_info DATARMNET7d98961cbe;static bool
DATARMNET54b95e4416;static u32 DATARMNETfef55eaf9a;static u8 DATARMNET9628311a6b
[DATARMNET3bc5e7094a]={(0xd2d+202-0xdf7),(0xd03+244-0xdf1),(0xcfc+267-0xe00),
(0xd35+210-0xdff),9};DEFINE_MUTEX(DATARMNETd7b5a80f84);static DEFINE_SPINLOCK(
DATARMNET33bd4139f4);static LIST_HEAD(DATARMNET7520901fb5);struct
DATARMNETb356c61ad6{struct rcu_head DATARMNET28bfe9e6ad;struct
DATARMNETd51e57e3f4 DATARMNET54338da2ff;};struct DATARMNET6fd48c33f6{struct
rcu_head DATARMNET28bfe9e6ad;struct list_head DATARMNET14c01d3877;struct
list_head DATARMNETed4d7b4a3c;struct DATARMNET5d4139d9d7 DATARMNET54338da2ff;
struct DATARMNETb356c61ad6 __rcu*DATARMNET8f197b20f6;u32 DATARMNET556cdfb5eb;u32
DATARMNETee01ad514b;unsigned long expires;u64 DATARMNETa27e524d8a;bool
DATARMNET626c626b74;bool DATARMNET40bb1d945b;};struct DATARMNETc4743b996e{struct
rcu_head DATARMNET28bfe9e6ad;struct list_head DATARMNET46c1c4375f;};struct
DATARMNET758277d429{char DATARMNET91119c34ed;char DATARMNETecca9147fd[
(0xcfc+267-0xe00)];struct DATARMNETc4743b996e __rcu*DATARMNETac8d594fb6;};
#define DATARMNET4e81d27dfb(DATARMNET413e8dcf7b) (!strncmp(DATARMNET413e8dcf7b->\
name, "\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61", (0xd27+224-0xdfd)))
#define DATARMNETe1c7654a2e(DATARMNET413e8dcf7b)\
\
((struct DATARMNET758277d429 *)(((struct rmnet_priv *)netdev_priv(\
DATARMNET413e8dcf7b)) \
->aps_cb))
extern void(*rmnet_aps_pre_queue)(struct net_device*DATARMNET413e8dcf7b,struct
sk_buff*DATARMNET543491eb0f);extern int(*rmnet_aps_post_queue)(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 DATARMNETd1a02b8188(struct
work_struct*DATARMNET33110a3ff5);static DECLARE_WORK(DATARMNET8e3aef0760,
DATARMNETd1a02b8188);static void DATARMNET5979020f87(struct work_struct*
DATARMNET33110a3ff5);static DECLARE_DELAYED_WORK(DATARMNET3481998252,
DATARMNET5979020f87);static int DATARMNET998f6cbce7(struct notifier_block*
DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*data);static struct
notifier_block DATARMNETc580548769 __read_mostly={.notifier_call=
DATARMNET998f6cbce7,.priority=(0xd1f+216-0xdf5),};struct DATARMNETf21ed5deb4{
__u8 DATARMNET9d758b8e5b;__u8 DATARMNETe419bc836d;__u8 DATARMNETd43be7664c;__u8
DATARMNET06d2413ad2;__be32 saddr[(0xd11+230-0xdf3)];__be32 daddr[
(0xd11+230-0xdf3)];__u16 sport;__u16 dport;__u32 DATARMNETe9aad463ce;__u8 tos;};
static int DATARMNET481989429b(struct sk_buff*DATARMNET543491eb0f,struct
DATARMNETf21ed5deb4*DATARMNET203a7a0136){struct DATARMNET6d4c22c781{__be16 sport
;__be16 dport;};int DATARMNETb65c469a15;if(DATARMNET543491eb0f->protocol==htons(
ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNET8dc568fa4c;
DATARMNET86f1f2cdc9=__skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
sizeof(*DATARMNET86f1f2cdc9),DATARMNET543491eb0f->data,skb_headlen(
DATARMNET543491eb0f),&DATARMNET8dc568fa4c);if(unlikely(!DATARMNET86f1f2cdc9||
DATARMNET86f1f2cdc9->ihl<(0xd0a+237-0xdf2)))return-EINVAL;if(unlikely(
ip_is_fragment(DATARMNET86f1f2cdc9))){DATARMNET203a7a0136->DATARMNETe419bc836d=
(0xd26+209-0xdf6);DATARMNET203a7a0136->DATARMNETd43be7664c=!(DATARMNET86f1f2cdc9
->frag_off&htons(IP_OFFSET));}DATARMNETb65c469a15=DATARMNET86f1f2cdc9->ihl<<
(0xd1f+216-0xdf5);DATARMNET203a7a0136->DATARMNET9d758b8e5b=(0xd11+230-0xdf3);
DATARMNET203a7a0136->DATARMNET06d2413ad2=DATARMNET86f1f2cdc9->protocol;
DATARMNET203a7a0136->saddr[(0xd2d+202-0xdf7)]=DATARMNET86f1f2cdc9->saddr;
DATARMNET203a7a0136->daddr[(0xd2d+202-0xdf7)]=DATARMNET86f1f2cdc9->daddr;
DATARMNET203a7a0136->tos=DATARMNET86f1f2cdc9->tos;}else if(DATARMNET543491eb0f->
protocol==htons(ETH_P_IPV6)){struct ipv6hdr*DATARMNETbf55123e5b,
DATARMNET9df40d3f99;__be16 frag_off=(0xd2d+202-0xdf7);u8 nexthdr;
DATARMNETbf55123e5b=__skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
sizeof(*DATARMNETbf55123e5b),DATARMNET543491eb0f->data,skb_headlen(
DATARMNET543491eb0f),&DATARMNET9df40d3f99);if(unlikely(!DATARMNETbf55123e5b))
return-EINVAL;nexthdr=DATARMNETbf55123e5b->nexthdr;DATARMNETb65c469a15=
ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*DATARMNETbf55123e5b),&nexthdr,&
frag_off);if(unlikely(DATARMNETb65c469a15<(0xd2d+202-0xdf7)))return-EFAULT;if(
unlikely(frag_off)){DATARMNET203a7a0136->DATARMNETe419bc836d=(0xd26+209-0xdf6);
DATARMNET203a7a0136->DATARMNETd43be7664c=!(frag_off&htons(IP6_OFFSET));}
DATARMNET203a7a0136->DATARMNET9d758b8e5b=(0xd03+244-0xdf1);DATARMNET203a7a0136->
DATARMNET06d2413ad2=nexthdr;memcpy(DATARMNET203a7a0136->saddr,
DATARMNETbf55123e5b->saddr.in6_u.u6_addr8,(0xeb7+1158-0x132d));memcpy(
DATARMNET203a7a0136->daddr,DATARMNETbf55123e5b->daddr.in6_u.u6_addr8,
(0xeb7+1158-0x132d));DATARMNET203a7a0136->tos=ip6_tclass(ip6_flowinfo(
DATARMNETbf55123e5b));DATARMNET203a7a0136->DATARMNETe9aad463ce=ntohl(
ip6_flowlabel(DATARMNETbf55123e5b));}else{return-EINVAL;}if(DATARMNET203a7a0136
->DATARMNETe419bc836d&&!DATARMNET203a7a0136->DATARMNETd43be7664c)return
(0xd2d+202-0xdf7);if(DATARMNET203a7a0136->DATARMNET06d2413ad2==IPPROTO_TCP||
DATARMNET203a7a0136->DATARMNET06d2413ad2==IPPROTO_UDP){struct
DATARMNET6d4c22c781*DATARMNET975b252236,DATARMNET7121c974d6;DATARMNET975b252236=
__skb_header_pointer(DATARMNET543491eb0f,DATARMNETb65c469a15,sizeof(*
DATARMNET975b252236),DATARMNET543491eb0f->data,skb_headlen(DATARMNET543491eb0f),
&DATARMNET7121c974d6);if(unlikely(!DATARMNET975b252236))return-EINVAL;
DATARMNET203a7a0136->sport=ntohs(DATARMNET975b252236->sport);DATARMNET203a7a0136
->dport=ntohs(DATARMNET975b252236->dport);}return(0xd2d+202-0xdf7);}static int
DATARMNET9e7ac83deb(struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct
DATARMNETf21ed5deb4*DATARMNET203a7a0136){struct DATARMNET6d4c22c781{__be16 sport
;__be16 dport;};int DATARMNETb65c469a15;u8*data;data=rmnet_frag_data_ptr(
DATARMNET9d1b321642);if(unlikely(!data))return-EINVAL;if((data[(0xd2d+202-0xdf7)
]&(0xbf7+4405-0x1c3c))==(0xef7+1142-0x132d)){struct iphdr*DATARMNET86f1f2cdc9,
DATARMNET8dc568fa4c;DATARMNET86f1f2cdc9=rmnet_frag_header_ptr(
DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&
DATARMNET8dc568fa4c);if(unlikely(!DATARMNET86f1f2cdc9||DATARMNET86f1f2cdc9->ihl<
(0xd0a+237-0xdf2)))return-EINVAL;if(unlikely(ip_is_fragment(DATARMNET86f1f2cdc9)
)){DATARMNET203a7a0136->DATARMNETe419bc836d=(0xd26+209-0xdf6);
DATARMNET203a7a0136->DATARMNETd43be7664c=!(DATARMNET86f1f2cdc9->frag_off&htons(
IP_OFFSET));}DATARMNETb65c469a15=DATARMNET86f1f2cdc9->ihl<<(0xd1f+216-0xdf5);
DATARMNET203a7a0136->DATARMNET9d758b8e5b=(0xd11+230-0xdf3);DATARMNET203a7a0136->
DATARMNET06d2413ad2=DATARMNET86f1f2cdc9->protocol;DATARMNET203a7a0136->saddr[
(0xd2d+202-0xdf7)]=DATARMNET86f1f2cdc9->saddr;DATARMNET203a7a0136->daddr[
(0xd2d+202-0xdf7)]=DATARMNET86f1f2cdc9->daddr;DATARMNET203a7a0136->tos=
DATARMNET86f1f2cdc9->tos;}else if((data[(0xd2d+202-0xdf7)]&(0xbf7+4405-0x1c3c))
==(0xeb7+726-0x112d)){struct ipv6hdr*DATARMNETbf55123e5b,DATARMNET9df40d3f99;
__be16 frag_off;u8 nexthdr;bool DATARMNET4ea088426f;DATARMNETbf55123e5b=
rmnet_frag_header_ptr(DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*
DATARMNETbf55123e5b),&DATARMNET9df40d3f99);if(unlikely(!DATARMNETbf55123e5b))
return-EINVAL;nexthdr=DATARMNETbf55123e5b->nexthdr;DATARMNETb65c469a15=
rmnet_frag_ipv6_skip_exthdr(DATARMNET9d1b321642,sizeof(*DATARMNETbf55123e5b),&
nexthdr,&frag_off,&DATARMNET4ea088426f);if(unlikely(DATARMNETb65c469a15<
(0xd2d+202-0xdf7)))return-EFAULT;if(unlikely(frag_off||DATARMNET4ea088426f)){
DATARMNET203a7a0136->DATARMNETe419bc836d=(0xd26+209-0xdf6);DATARMNET203a7a0136->
DATARMNETd43be7664c=!(frag_off&htons(IP6_OFFSET));}DATARMNET203a7a0136->
DATARMNET9d758b8e5b=(0xd03+244-0xdf1);DATARMNET203a7a0136->DATARMNET06d2413ad2=
nexthdr;memcpy(DATARMNET203a7a0136->saddr,DATARMNETbf55123e5b->saddr.in6_u.
u6_addr8,(0xeb7+1158-0x132d));memcpy(DATARMNET203a7a0136->daddr,
DATARMNETbf55123e5b->daddr.in6_u.u6_addr8,(0xeb7+1158-0x132d));
DATARMNET203a7a0136->tos=ip6_tclass(ip6_flowinfo(DATARMNETbf55123e5b));
DATARMNET203a7a0136->DATARMNETe9aad463ce=ntohl(ip6_flowlabel(DATARMNETbf55123e5b
));}else{return-EINVAL;}if(DATARMNET203a7a0136->DATARMNETe419bc836d&&!
DATARMNET203a7a0136->DATARMNETd43be7664c)return(0xd2d+202-0xdf7);if(
DATARMNET203a7a0136->DATARMNET06d2413ad2==IPPROTO_TCP||DATARMNET203a7a0136->
DATARMNET06d2413ad2==IPPROTO_UDP){struct DATARMNET6d4c22c781*DATARMNET975b252236
,DATARMNET7121c974d6;DATARMNET975b252236=rmnet_frag_header_ptr(
DATARMNET9d1b321642,DATARMNETb65c469a15,sizeof(*DATARMNET975b252236),&
DATARMNET7121c974d6);if(unlikely(!DATARMNET975b252236))return-EINVAL;
DATARMNET203a7a0136->sport=ntohs(DATARMNET975b252236->sport);DATARMNET203a7a0136
->dport=ntohs(DATARMNET975b252236->dport);}return(0xd2d+202-0xdf7);}static bool
DATARMNETdf0ec0363b(struct DATARMNETd51e57e3f4*DATARMNET8f197b20f6,struct
DATARMNETf21ed5deb4*DATARMNET203a7a0136){if(DATARMNET8f197b20f6->
DATARMNET06d2413ad2){if(DATARMNET8f197b20f6->DATARMNET06d2413ad2==
(0xc07+4362-0x1c14)){if(DATARMNET203a7a0136->DATARMNET06d2413ad2!=IPPROTO_TCP&&
DATARMNET203a7a0136->DATARMNET06d2413ad2!=IPPROTO_UDP)return false;}else if(
DATARMNET8f197b20f6->DATARMNET06d2413ad2!=DATARMNET203a7a0136->
DATARMNET06d2413ad2){return false;}}if(DATARMNET203a7a0136->DATARMNET06d2413ad2
==IPPROTO_TCP||DATARMNET203a7a0136->DATARMNET06d2413ad2==IPPROTO_UDP){if((
DATARMNET8f197b20f6->dport&&DATARMNET8f197b20f6->dport!=DATARMNET203a7a0136->
dport)||(DATARMNET8f197b20f6->sport&&DATARMNET8f197b20f6->sport!=
DATARMNET203a7a0136->sport))return false;}if(DATARMNET8f197b20f6->
DATARMNET61b4abcc9b==AF_INET){if(((DATARMNET8f197b20f6->DATARMNET0711bbda6c&
DATARMNET3cff03c531)&&DATARMNET8f197b20f6->daddr[(0xd2d+202-0xdf7)]!=
DATARMNET203a7a0136->daddr[(0xd2d+202-0xdf7)])||((DATARMNET8f197b20f6->
DATARMNET0711bbda6c&DATARMNET53f589a196)&&DATARMNET8f197b20f6->saddr[
(0xd2d+202-0xdf7)]!=DATARMNET203a7a0136->saddr[(0xd2d+202-0xdf7)]))return false;
if(DATARMNET8f197b20f6->tos&&DATARMNET8f197b20f6->tos!=(DATARMNET203a7a0136->tos
&DATARMNET8f197b20f6->DATARMNETa400ad4f72))return false;}else if(
DATARMNET8f197b20f6->DATARMNET61b4abcc9b==AF_INET6){if(((DATARMNET8f197b20f6->
DATARMNET0711bbda6c&DATARMNET3cff03c531)&&memcmp(DATARMNET8f197b20f6->daddr,
DATARMNET203a7a0136->daddr,(0xeb7+1158-0x132d)))||((DATARMNET8f197b20f6->
DATARMNET0711bbda6c&DATARMNET53f589a196)&&memcmp(DATARMNET8f197b20f6->saddr,
DATARMNET203a7a0136->saddr,(0xeb7+1158-0x132d))))return false;if(
DATARMNET8f197b20f6->tos&&DATARMNET8f197b20f6->tos!=(DATARMNET203a7a0136->tos&
DATARMNET8f197b20f6->DATARMNETa400ad4f72))return false;if(DATARMNET8f197b20f6->
DATARMNETe9aad463ce&&DATARMNET8f197b20f6->DATARMNETe9aad463ce!=
DATARMNET203a7a0136->DATARMNETe9aad463ce)return false;}else{return false;}return
true;}static struct DATARMNET6fd48c33f6*DATARMNETfb13c018fc(struct list_head*
DATARMNET817a8d238c,struct sk_buff*DATARMNET543491eb0f){struct
DATARMNETf21ed5deb4 DATARMNET203a7a0136={(0xd2d+202-0xdf7),};struct
DATARMNET6fd48c33f6*DATARMNETaa568481cf;struct DATARMNETb356c61ad6*
DATARMNET8f197b20f6;bool DATARMNETc9657a740d=false;list_for_each_entry_rcu(
DATARMNETaa568481cf,DATARMNET817a8d238c,DATARMNET14c01d3877){DATARMNET8f197b20f6
=rcu_dereference(DATARMNETaa568481cf->DATARMNET8f197b20f6);if(unlikely(!
DATARMNET8f197b20f6))continue;if((DATARMNET8f197b20f6->DATARMNET54338da2ff.
DATARMNET61b4abcc9b==AF_INET&&DATARMNET543491eb0f->protocol!=htons(ETH_P_IP))||(
DATARMNET8f197b20f6->DATARMNET54338da2ff.DATARMNET61b4abcc9b==AF_INET6&&
DATARMNET543491eb0f->protocol!=htons(ETH_P_IPV6)))continue;if(!
DATARMNETc9657a740d){if(DATARMNET481989429b(DATARMNET543491eb0f,&
DATARMNET203a7a0136)||DATARMNET203a7a0136.DATARMNETe419bc836d)break;
DATARMNETc9657a740d=true;}if(DATARMNETdf0ec0363b(&DATARMNET8f197b20f6->
DATARMNET54338da2ff,&DATARMNET203a7a0136))return DATARMNETaa568481cf;}return
NULL;}static struct DATARMNET6fd48c33f6*DATARMNET3ed11fdc8d(struct list_head*
DATARMNET817a8d238c,u32 DATARMNETbb588401ec){struct DATARMNET6fd48c33f6*
DATARMNETaa568481cf;list_for_each_entry_rcu(DATARMNETaa568481cf,
DATARMNET817a8d238c,DATARMNET14c01d3877){if(DATARMNETaa568481cf->
DATARMNET54338da2ff.DATARMNETbb588401ec==DATARMNETbb588401ec)return
DATARMNETaa568481cf;}return NULL;}static void DATARMNET1e616c2160(struct
list_head*DATARMNET817a8d238c,struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){
list_add_rcu(&DATARMNETaa568481cf->DATARMNET14c01d3877,DATARMNET817a8d238c);
list_add(&DATARMNETaa568481cf->DATARMNETed4d7b4a3c,&DATARMNET7520901fb5);
DATARMNETfef55eaf9a++;if(DATARMNETaa568481cf->expires){if(!timer_pending(&
DATARMNETd21629e047)||time_before(DATARMNETaa568481cf->expires,
DATARMNETd21629e047.expires))mod_timer(&DATARMNETd21629e047,DATARMNETaa568481cf
->expires);}DATARMNET112d724eff("aps: flow 0x%x added (%u)\n",
DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec,DATARMNETfef55eaf9a
);}static void DATARMNET7fa3dd63cb(struct DATARMNET6fd48c33f6*
DATARMNETaa568481cf){struct DATARMNETb356c61ad6*DATARMNET8f197b20f6;list_del_rcu
(&DATARMNETaa568481cf->DATARMNET14c01d3877);list_del(&DATARMNETaa568481cf->
DATARMNETed4d7b4a3c);if(likely(DATARMNETfef55eaf9a))DATARMNETfef55eaf9a--;if(!
DATARMNETfef55eaf9a)del_timer(&DATARMNETd21629e047);DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x72\x65\x6d\x6f\x76\x69\x6e\x67\x20\x28\x25\x75\x29" "\n"
,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec,
DATARMNETfef55eaf9a);DATARMNET8f197b20f6=rcu_dereference(DATARMNETaa568481cf->
DATARMNET8f197b20f6);if(DATARMNET8f197b20f6){rcu_assign_pointer(
DATARMNETaa568481cf->DATARMNET8f197b20f6,NULL);kfree_rcu(DATARMNETaa568481cf->
DATARMNET8f197b20f6,DATARMNET28bfe9e6ad);}kfree_rcu(DATARMNETaa568481cf,
DATARMNET28bfe9e6ad);}static void DATARMNET9ac8a34003(void){struct
DATARMNET6fd48c33f6*DATARMNETaa568481cf,*DATARMNET0386f6f82a;
list_for_each_entry_safe(DATARMNETaa568481cf,DATARMNET0386f6f82a,&
DATARMNET7520901fb5,DATARMNETed4d7b4a3c){DATARMNET7fa3dd63cb(DATARMNETaa568481cf
);}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,*DATARMNET0386f6f82a;list_for_each_entry_safe(
DATARMNETaa568481cf,DATARMNET0386f6f82a,&DATARMNET7520901fb5,DATARMNETed4d7b4a3c
){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
DATARMNETd1a02b8188(struct work_struct*DATARMNET33110a3ff5){struct
DATARMNET6fd48c33f6*DATARMNETaa568481cf,*DATARMNET0386f6f82a;unsigned long
DATARMNET02dfdbc38d=jiffies;unsigned long DATARMNET2cf3deab22;u32
DATARMNETbb588401ec;DATARMNET2cf3deab22=DATARMNET02dfdbc38d;mutex_lock(&
DATARMNETd7b5a80f84);if(!DATARMNET54b95e4416)goto DATARMNETbf4095f79e;
spin_lock_bh(&DATARMNET33bd4139f4);list_for_each_entry_safe(DATARMNETaa568481cf,
DATARMNET0386f6f82a,&DATARMNET7520901fb5,DATARMNETed4d7b4a3c){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);DATARMNETbf4095f79e:
mutex_unlock(&DATARMNETd7b5a80f84);}static void DATARMNETf844db79d9(struct
timer_list*DATARMNET6e4292679f){schedule_work(&DATARMNET8e3aef0760);}static void
DATARMNET3281082da4(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){u32
DATARMNET556cdfb5eb;DATARMNET556cdfb5eb=RMNET_APS_MAJOR<<(0xeb7+1158-0x132d);if(
DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNET6c2cba039d>=
DATARMNET3bc5e7094a)DATARMNET556cdfb5eb|=DATARMNET9628311a6b[(0xd2d+202-0xdf7)];
else DATARMNET556cdfb5eb|=DATARMNET9628311a6b[DATARMNETaa568481cf->
DATARMNET54338da2ff.DATARMNET6c2cba039d];if(DATARMNETaa568481cf->
DATARMNET626c626b74)DATARMNET556cdfb5eb|=RMNET_APS_LLC_MASK;if(
DATARMNETaa568481cf->DATARMNET40bb1d945b)DATARMNET556cdfb5eb|=RMNET_APS_LLB_MASK
;DATARMNETaa568481cf->DATARMNET556cdfb5eb=DATARMNET556cdfb5eb;}static int
DATARMNET772c0b87c5(void*DATARMNETe823dcf978,const struct list_head*
DATARMNET9cf7d31274,const 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;mutex_lock(&
DATARMNETd7b5a80f84);if(!DATARMNET54b95e4416)goto DATARMNETbf4095f79e;
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);
DATARMNETbf4095f79e:mutex_unlock(&DATARMNETd7b5a80f84);if(DATARMNETd3eb49eab3)
schedule_delayed_work(&DATARMNET3481998252,DATARMNETfd026b105a);}static int
DATARMNET82d65f9ca6(struct list_head*DATARMNET817a8d238c,struct
DATARMNET5d4139d9d7*DATARMNETddcafd8b91){struct DATARMNET6fd48c33f6*
DATARMNETaa568481cf;DATARMNETaa568481cf=DATARMNET3ed11fdc8d(DATARMNET817a8d238c,
DATARMNETddcafd8b91->DATARMNETbb588401ec);if(DATARMNETddcafd8b91->cmd==
DATARMNET3412b803e1){if(DATARMNETaa568481cf)DATARMNET7fa3dd63cb(
DATARMNETaa568481cf);return(0xd2d+202-0xdf7);}if(DATARMNETddcafd8b91->cmd==
DATARMNETceae994093&&DATARMNETaa568481cf){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_KERNEL);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(DATARMNET817a8d238c,DATARMNETaa568481cf);}else{spin_lock_bh(
&DATARMNET33bd4139f4);memcpy(&DATARMNETaa568481cf->DATARMNET54338da2ff,
DATARMNETddcafd8b91,sizeof(DATARMNETaa568481cf->DATARMNET54338da2ff));
DATARMNETaa568481cf->DATARMNET626c626b74=DATARMNETaa568481cf->
DATARMNET54338da2ff.DATARMNET626c626b74;DATARMNETaa568481cf->DATARMNET40bb1d945b
=DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNET40bb1d945b;
DATARMNET3281082da4(DATARMNETaa568481cf);spin_unlock_bh(&DATARMNET33bd4139f4);
DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x75\x70\x64\x61\x74\x65\x64" "\n"
,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec);}return
(0xd2d+202-0xdf7);}static int DATARMNETbd1d5c8f28(struct genl_info*
DATARMNET54338da2ff,u8 cmd,int DATARMNETbc8c3c13e8,int DATARMNET5d9df1c423,void*
DATARMNET8dad72c67a,gfp_t flags){struct sk_buff*DATARMNET543491eb0f=NULL;void*
DATARMNETd7f97e2e5a;int DATARMNETb14e52a504;if(unlikely(!DATARMNET54338da2ff))
return-EINVAL;DATARMNET543491eb0f=genlmsg_new(nla_total_size(DATARMNET5d9df1c423
),flags);if(!DATARMNET543491eb0f)goto DATARMNETbf4095f79e;DATARMNETd7f97e2e5a=
genlmsg_put(DATARMNET543491eb0f,(0xd2d+202-0xdf7),DATARMNET54338da2ff->snd_seq+
(0xd26+209-0xdf6),&DATARMNETcdba30eca9,(0xd2d+202-0xdf7),cmd);if(!
DATARMNETd7f97e2e5a)goto DATARMNETbf4095f79e;DATARMNETb14e52a504=nla_put(
DATARMNET543491eb0f,DATARMNETbc8c3c13e8,DATARMNET5d9df1c423,DATARMNET8dad72c67a)
;if(DATARMNETb14e52a504)goto DATARMNETbf4095f79e;genlmsg_end(DATARMNET543491eb0f
,DATARMNETd7f97e2e5a);DATARMNETb14e52a504=genlmsg_unicast(genl_info_net(
DATARMNET54338da2ff),DATARMNET543491eb0f,DATARMNET54338da2ff->snd_portid);if(
DATARMNETb14e52a504){DATARMNET543491eb0f=NULL;goto DATARMNETbf4095f79e;}return
(0xd2d+202-0xdf7);DATARMNETbf4095f79e:DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x6d\x73\x67\x20\x25\x64" "\n"
,cmd);if(DATARMNET543491eb0f)kfree_skb(DATARMNET543491eb0f);return-EFAULT;}
static void DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 DATARMNETf8bbe3b0fb){
struct DATARMNETca79857d4a DATARMNETa13fcf9070;if(!DATARMNET7d98961cbe.
snd_portid){DATARMNET112d724eff(
"\x61\x70\x73\x3a\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(DATARMNETbd1d5c8f28(&DATARMNET7d98961cbe,
DATARMNET15437be67e,DATARMNET818a0b6438,sizeof(DATARMNETa13fcf9070),&
DATARMNETa13fcf9070,GFP_ATOMIC)){DATARMNET112d724eff(
"\x61\x70\x73\x3a\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;struct
DATARMNET758277d429*aps_cb;struct DATARMNETc4743b996e*DATARMNET81b03d6be4;if(
DATARMNET2fe4661b82&&(DATARMNET543491eb0f->priority>>(0xeb7+1158-0x132d)!=
DATARMNET2fe4661b82))return;aps_cb=DATARMNETe1c7654a2e(DATARMNET413e8dcf7b);
DATARMNET81b03d6be4=rcu_dereference(aps_cb->DATARMNETac8d594fb6);if(!
DATARMNET81b03d6be4)return;if(DATARMNET2fe4661b82)DATARMNETaa568481cf=
DATARMNET3ed11fdc8d(&DATARMNET81b03d6be4->DATARMNET46c1c4375f,
DATARMNET543491eb0f->priority);else DATARMNETaa568481cf=DATARMNETfb13c018fc(&
DATARMNET81b03d6be4->DATARMNET46c1c4375f,DATARMNET543491eb0f);if(
DATARMNETaa568481cf){spin_lock_bh(&DATARMNET33bd4139f4);DATARMNET543491eb0f->
priority=DATARMNETaa568481cf->DATARMNET556cdfb5eb;DATARMNETaa568481cf->expires=
jiffies+DATARMNETaa568481cf->DATARMNETee01ad514b;DATARMNETaa568481cf->
DATARMNETa27e524d8a+=DATARMNET543491eb0f->len;spin_unlock_bh(&
DATARMNET33bd4139f4);schedule_delayed_work(&DATARMNET3481998252,
DATARMNETfd026b105a);}}static int DATARMNET998f6cbce7(struct notifier_block*
DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*data){struct
net_device*DATARMNET413e8dcf7b;struct DATARMNET758277d429*aps_cb;struct
DATARMNETc4743b996e*DATARMNET81b03d6be4;DATARMNET413e8dcf7b=
netdev_notifier_info_to_dev(data);if(unlikely(!DATARMNET413e8dcf7b))return
NOTIFY_DONE;if(!DATARMNET4e81d27dfb(DATARMNET413e8dcf7b))return NOTIFY_DONE;
aps_cb=DATARMNETe1c7654a2e(DATARMNET413e8dcf7b);BUILD_BUG_ON(sizeof(*aps_cb)>
sizeof(((struct rmnet_priv*)(0xd2d+202-0xdf7))->aps_cb));switch(
DATARMNET9a4761f31c){case NETDEV_DOWN:aps_cb->DATARMNET91119c34ed=
(0xd2d+202-0xdf7);mutex_lock(&DATARMNETd7b5a80f84);DATARMNET250448eb06(
DATARMNET413e8dcf7b->ifindex);mutex_unlock(&DATARMNETd7b5a80f84);break;case
NETDEV_UNREGISTER:mutex_lock(&DATARMNETd7b5a80f84);DATARMNET250448eb06(
DATARMNET413e8dcf7b->ifindex);DATARMNET81b03d6be4=rcu_dereference(aps_cb->
DATARMNETac8d594fb6);if(DATARMNET81b03d6be4){WARN_ON(!list_empty(&
DATARMNET81b03d6be4->DATARMNET46c1c4375f));rcu_assign_pointer(aps_cb->
DATARMNETac8d594fb6,NULL);kfree_rcu(DATARMNET81b03d6be4,DATARMNET28bfe9e6ad);}
mutex_unlock(&DATARMNETd7b5a80f84);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;struct net_device*DATARMNET413e8dcf7b=NULL;struct
DATARMNET758277d429*aps_cb;struct DATARMNETc4743b996e*DATARMNET81b03d6be4;int
DATARMNETb14e52a504=-EINVAL;DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x25\x73" "\n",__func__);if(!DATARMNET54338da2ff)return-
EINVAL;DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[DATARMNET98b93f2e86];if(!
DATARMNET9c5e00ef03){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x61\x74\x74\x72\x73" "\n");return-EINVAL;}if(
nla_memcpy(&DATARMNETddcafd8b91,DATARMNET9c5e00ef03,sizeof(DATARMNETddcafd8b91))
<=(0xd2d+202-0xdf7)){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6c\x61\x5f\x6d\x65\x6d\x63\x70\x79\x20\x66\x61\x69\x6c\x65\x64" "\n"
);return-EINVAL;}mutex_lock(&DATARMNETd7b5a80f84);if(!DATARMNET54b95e4416)goto
DATARMNETbf4095f79e;switch(DATARMNETddcafd8b91.cmd){case DATARMNET63ff5c35c2:
DATARMNET7d98961cbe=*DATARMNET54338da2ff;DATARMNET9ac8a34003();
DATARMNET2fe4661b82=(u16)DATARMNETddcafd8b91.DATARMNETbb588401ec;
DATARMNET112d724eff(
"\x61\x70\x73\x3a\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:if(
DATARMNETddcafd8b91.ifindex)DATARMNET413e8dcf7b=dev_get_by_index(&init_net,
DATARMNETddcafd8b91.ifindex);if(!DATARMNET413e8dcf7b){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x64\x65\x76\x20\x66\x6f\x72\x20\x69\x66\x69\x6e\x64\x65\x78\x20\x25\x75" "\n"
,DATARMNETddcafd8b91.ifindex);break;}if(DATARMNET4e81d27dfb(DATARMNET413e8dcf7b)
){aps_cb=DATARMNETe1c7654a2e(DATARMNET413e8dcf7b);DATARMNET81b03d6be4=
rcu_dereference(aps_cb->DATARMNETac8d594fb6);if(!DATARMNET81b03d6be4&&
DATARMNETddcafd8b91.cmd==DATARMNETceae994093){DATARMNET81b03d6be4=kzalloc(sizeof
(*DATARMNET81b03d6be4),GFP_KERNEL);if(DATARMNET81b03d6be4){INIT_LIST_HEAD(&
DATARMNET81b03d6be4->DATARMNET46c1c4375f);rcu_assign_pointer(aps_cb->
DATARMNETac8d594fb6,DATARMNET81b03d6be4);}else{DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x6d\x65\x6d\x6f\x72\x79" "\n");}}if(
DATARMNET81b03d6be4)DATARMNETb14e52a504=DATARMNET82d65f9ca6(&DATARMNET81b03d6be4
->DATARMNET46c1c4375f,&DATARMNETddcafd8b91);else DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x66\x6c\x6f\x77\x20\x6c\x69\x73\x74\x20\x66\x6f\x72\x20\x66\x6c\x6f\x77\x20\x72\x65\x71" "\n"
);}dev_put(DATARMNET413e8dcf7b);break;default:break;}DATARMNETbf4095f79e:
mutex_unlock(&DATARMNETd7b5a80f84);DATARMNETa13fcf9070.cmd=DATARMNETddcafd8b91.
cmd;DATARMNETa13fcf9070.DATARMNETe65883bfce=DATARMNETb14e52a504;
DATARMNETa13fcf9070.DATARMNETbb588401ec=DATARMNETddcafd8b91.DATARMNETbb588401ec;
DATARMNETb14e52a504=DATARMNETbd1d5c8f28(DATARMNET54338da2ff,DATARMNET15437be67e,
DATARMNET818a0b6438,sizeof(DATARMNETa13fcf9070),&DATARMNETa13fcf9070,GFP_KERNEL)
;return DATARMNETb14e52a504;}static int DATARMNET9e18f3d501(struct list_head*
DATARMNET817a8d238c,struct DATARMNETd51e57e3f4*DATARMNETddcafd8b91){struct
DATARMNET6fd48c33f6*DATARMNETaa568481cf;struct DATARMNETb356c61ad6*
DATARMNET8f197b20f6;DATARMNETaa568481cf=DATARMNET3ed11fdc8d(DATARMNET817a8d238c,
DATARMNETddcafd8b91->DATARMNETbb588401ec);if(!DATARMNETaa568481cf){
DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x6e\x6f\x74\x20\x66\x6f\x75\x6e\x64" "\n"
,DATARMNETddcafd8b91->DATARMNETbb588401ec);return-EINVAL;}switch(
DATARMNETddcafd8b91->cmd){case DATARMNETd0bce1573e:DATARMNET8f197b20f6=
rcu_dereference(DATARMNETaa568481cf->DATARMNET8f197b20f6);if(DATARMNET8f197b20f6
){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x69\x6c\x74\x65\x72\x20\x66\x6f\x72\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x65\x78\x69\x73\x74\x73" "\n"
,DATARMNETddcafd8b91->DATARMNETbb588401ec);return-EINVAL;}DATARMNET8f197b20f6=
kzalloc(sizeof(*DATARMNET8f197b20f6),GFP_KERNEL);if(!DATARMNET8f197b20f6){
DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x6d\x65\x6d\x6f\x72\x79" "\n");return-ENOMEM;}
memcpy(&DATARMNET8f197b20f6->DATARMNET54338da2ff,DATARMNETddcafd8b91,sizeof(*
DATARMNETddcafd8b91));if(DATARMNET8f197b20f6->DATARMNET54338da2ff.tos){if(!
DATARMNET8f197b20f6->DATARMNET54338da2ff.DATARMNETa400ad4f72)DATARMNET8f197b20f6
->DATARMNET54338da2ff.DATARMNETa400ad4f72=(0xbf7+4364-0x1c04);
DATARMNET8f197b20f6->DATARMNET54338da2ff.tos&=DATARMNET8f197b20f6->
DATARMNET54338da2ff.DATARMNETa400ad4f72;}rcu_assign_pointer(DATARMNETaa568481cf
->DATARMNET8f197b20f6,DATARMNET8f197b20f6);break;default:return-EINVAL;}return
(0xd2d+202-0xdf7);}int DATARMNETae6b282c61(struct sk_buff*DATARMNETaafc1d9519,
struct genl_info*DATARMNET54338da2ff){struct nlattr*DATARMNET9c5e00ef03;struct
DATARMNETd51e57e3f4 DATARMNETddcafd8b91;struct DATARMNET15bcb4844b
DATARMNETa13fcf9070;struct net_device*DATARMNET413e8dcf7b=NULL;struct
DATARMNET758277d429*aps_cb;struct DATARMNETc4743b996e*DATARMNET81b03d6be4;int
DATARMNETb14e52a504=-EINVAL;DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x25\x73" "\n",__func__);if(!DATARMNET54338da2ff)return-
EINVAL;DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[DATARMNET7edfedec7f];if(!
DATARMNET9c5e00ef03){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x61\x74\x74\x72\x73" "\n");return-EINVAL;}if(
nla_memcpy(&DATARMNETddcafd8b91,DATARMNET9c5e00ef03,sizeof(DATARMNETddcafd8b91))
<=(0xd2d+202-0xdf7)){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6c\x61\x5f\x6d\x65\x6d\x63\x70\x79\x20\x66\x61\x69\x6c\x65\x64" "\n"
);return-EINVAL;}mutex_lock(&DATARMNETd7b5a80f84);if(!DATARMNET54b95e4416)goto
DATARMNETbf4095f79e;if(DATARMNETddcafd8b91.ifindex)DATARMNET413e8dcf7b=
dev_get_by_index(&init_net,DATARMNETddcafd8b91.ifindex);if(!DATARMNET413e8dcf7b)
{DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x64\x65\x76\x20\x66\x6f\x72\x20\x69\x66\x69\x6e\x64\x65\x78\x20\x25\x75" "\n"
,DATARMNETddcafd8b91.ifindex);goto DATARMNETbf4095f79e;}if(!DATARMNET4e81d27dfb(
DATARMNET413e8dcf7b)){dev_put(DATARMNET413e8dcf7b);goto DATARMNETbf4095f79e;}
switch(DATARMNETddcafd8b91.cmd){case DATARMNETd0bce1573e:aps_cb=
DATARMNETe1c7654a2e(DATARMNET413e8dcf7b);DATARMNET81b03d6be4=rcu_dereference(
aps_cb->DATARMNETac8d594fb6);if(DATARMNET81b03d6be4)DATARMNETb14e52a504=
DATARMNET9e18f3d501(&DATARMNET81b03d6be4->DATARMNET46c1c4375f,&
DATARMNETddcafd8b91);else DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x66\x6c\x6f\x77\x20\x6c\x69\x73\x74" "\n");
break;default:break;}dev_put(DATARMNET413e8dcf7b);DATARMNETbf4095f79e:
mutex_unlock(&DATARMNETd7b5a80f84);DATARMNETa13fcf9070.cmd=DATARMNETddcafd8b91.
cmd;DATARMNETa13fcf9070.DATARMNETe65883bfce=DATARMNETb14e52a504;
DATARMNETa13fcf9070.DATARMNETbb588401ec=DATARMNETddcafd8b91.DATARMNETbb588401ec;
DATARMNETb14e52a504=DATARMNETbd1d5c8f28(DATARMNET54338da2ff,DATARMNET97eefd45e3,
DATARMNETd2b1517d6b,sizeof(DATARMNETa13fcf9070),&DATARMNETa13fcf9070,GFP_KERNEL)
;return DATARMNETb14e52a504;}static ktime_t DATARMNETe7a1ab1dab;int
DATARMNET1998d09852(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
DATARMNET54338da2ff){struct nlattr*DATARMNET9c5e00ef03;struct
DATARMNET797a5b1493 DATARMNETddcafd8b91;struct DATARMNET9a727f81bc
DATARMNETa13fcf9070;struct net_device*DATARMNET413e8dcf7b;struct
DATARMNET758277d429*aps_cb;int DATARMNETb14e52a504;DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x25\x73" "\n",__func__);if(!DATARMNET54338da2ff)return-
EINVAL;DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[DATARMNET572e4a28eb];if(!
DATARMNET9c5e00ef03){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x61\x74\x74\x72\x73" "\n");return-EINVAL;}if(
nla_memcpy(&DATARMNETddcafd8b91,DATARMNET9c5e00ef03,sizeof(DATARMNETddcafd8b91))
<=(0xd2d+202-0xdf7)){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6c\x61\x5f\x6d\x65\x6d\x63\x70\x79\x20\x66\x61\x69\x6c\x65\x64" "\n"
);return-EINVAL;}DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x69\x66\x69\x6e\x64\x65\x78\x20\x25\x75\x20\x65\x78\x70\x69\x72\x65\x5f\x6d\x73\x20\x25\x75" "\n"
,DATARMNETddcafd8b91.ifindex,DATARMNETddcafd8b91.DATARMNETc277c62678);if(
DATARMNETddcafd8b91.DATARMNETc277c62678){ktime_t DATARMNET35f4c14174=ms_to_ktime
(DATARMNETddcafd8b91.DATARMNETc277c62678);if(DATARMNETe7a1ab1dab!=
DATARMNET35f4c14174)DATARMNETe7a1ab1dab=DATARMNET35f4c14174;}DATARMNET413e8dcf7b
=dev_get_by_index(&init_net,DATARMNETddcafd8b91.ifindex);if(DATARMNET413e8dcf7b)
{if(DATARMNET4e81d27dfb(DATARMNET413e8dcf7b)){aps_cb=DATARMNETe1c7654a2e(
DATARMNET413e8dcf7b);aps_cb->DATARMNET91119c34ed=DATARMNETddcafd8b91.
DATARMNETc277c62678?(0xd26+209-0xdf6):(0xd2d+202-0xdf7);}dev_put(
DATARMNET413e8dcf7b);}memset(&DATARMNETa13fcf9070,(0xd2d+202-0xdf7),sizeof(
DATARMNETa13fcf9070));DATARMNETa13fcf9070.ifindex=DATARMNETddcafd8b91.ifindex;
DATARMNETb14e52a504=DATARMNETbd1d5c8f28(DATARMNET54338da2ff,DATARMNET4f09ad7688,
DATARMNETe54d857ffe,sizeof(DATARMNETa13fcf9070),&DATARMNETa13fcf9070,GFP_KERNEL)
;return DATARMNETb14e52a504;}static void DATARMNETe0c7b9d5a4(struct net_device*
DATARMNET413e8dcf7b,struct sk_buff*DATARMNET543491eb0f){struct
DATARMNET758277d429*aps_cb=DATARMNETe1c7654a2e(DATARMNET413e8dcf7b);if(aps_cb->
DATARMNET91119c34ed)skb_hwtstamps(DATARMNET543491eb0f)->hwtstamp=
ktime_get_boottime();else skb_hwtstamps(DATARMNET543491eb0f)->hwtstamp=
(0xd2d+202-0xdf7);if(READ_ONCE(DATARMNETfef55eaf9a))DATARMNET30dd480cad(
DATARMNET413e8dcf7b,DATARMNET543491eb0f);}static int DATARMNET6ab4bbdaf4(struct
net_device*DATARMNET413e8dcf7b,struct sk_buff*DATARMNET543491eb0f){struct
DATARMNET758277d429*aps_cb=DATARMNETe1c7654a2e(DATARMNET413e8dcf7b);ktime_t
DATARMNET912d2a7edd;if(aps_cb->DATARMNET91119c34ed&&skb_hwtstamps(
DATARMNET543491eb0f)->hwtstamp&&DATARMNETe7a1ab1dab){DATARMNET912d2a7edd=
ktime_get_boottime();if(ktime_sub(DATARMNET912d2a7edd,skb_hwtstamps(
DATARMNET543491eb0f)->hwtstamp)>DATARMNETe7a1ab1dab)return-ETIMEDOUT;}return
(0xd2d+202-0xdf7);}static const struct rmnet_module_hook_register_info
DATARMNET509284caa6[]={{.hooknum=RMNET_MODULE_HOOK_APS_PRE_QUEUE,.func=
DATARMNETe0c7b9d5a4,},{.hooknum=RMNET_MODULE_HOOK_APS_POST_QUEUE,.func=
DATARMNET6ab4bbdaf4,},};static struct proc_dir_entry*DATARMNET147f9b9f22;static
struct proc_dir_entry*DATARMNETf9422af3b0;static DEFINE_SPINLOCK(
DATARMNET86e81617f0);struct DATARMNET837f670f1d{ktime_t DATARMNET763f2e5fac;
struct DATARMNETf21ed5deb4 DATARMNET5fe4c722a8;};
#define DATARMNET137373fbd9 (0xd27+224-0xdfd)
static int DATARMNET04583f0705;static struct DATARMNET837f670f1d
DATARMNETeb47903253[DATARMNET137373fbd9];static unsigned int inactive_time;
static ktime_t DATARMNET6736d5e29d;static ktime_t DATARMNETd4b2cd928c;static int
DATARMNETd7fae4b1c9(struct seq_file*DATARMNET80f4138358,void*
DATARMNETc3d0f72ff1){struct DATARMNET837f670f1d*DATARMNET590c4d44f6;s64
DATARMNET3c8f5f41f1,DATARMNET7d003c10d9;u8 DATARMNET5c33dbe77d,
DATARMNETa845529338,DATARMNET35784a722f;int DATARMNETefc9df3df2;spin_lock_bh(&
DATARMNET86e81617f0);if(!DATARMNETeb47903253[DATARMNET04583f0705].
DATARMNET763f2e5fac)DATARMNETefc9df3df2=(0xd2d+202-0xdf7);else
DATARMNETefc9df3df2=DATARMNET04583f0705;do{DATARMNET590c4d44f6=&
DATARMNETeb47903253[DATARMNETefc9df3df2];if(!DATARMNET590c4d44f6->
DATARMNET763f2e5fac)break;DATARMNET3c8f5f41f1=ktime_divns(DATARMNET590c4d44f6->
DATARMNET763f2e5fac,NSEC_PER_SEC);DATARMNET7d003c10d9=DATARMNET3c8f5f41f1/86400;
DATARMNET5c33dbe77d=DATARMNET3c8f5f41f1%86400/(0x17a8+2156-0x1204);
DATARMNETa845529338=DATARMNET3c8f5f41f1%(0x17a8+2156-0x1204)/(0xf07+1090-0x130d)
;DATARMNET35784a722f=DATARMNET3c8f5f41f1%(0xf07+1090-0x130d);if(
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2==IPPROTO_TCP||
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2==IPPROTO_UDP){if(
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET9d758b8e5b==(0xd11+230-0xdf3))
seq_printf(DATARMNET80f4138358,
"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20"
"\x25\x70\x49\x34\x2f\x25\x75\x20\x25\x70\x49\x34\x2f\x25\x75" "\n",
DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f,
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,DATARMNET590c4d44f6
->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->
DATARMNET5fe4c722a8.dport);else seq_printf(DATARMNET80f4138358,
"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20"
"\x25\x70\x49\x36\x2f\x25\x75\x20\x25\x70\x49\x36\x2f\x25\x75" "\n",
DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f,
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,DATARMNET590c4d44f6
->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->
DATARMNET5fe4c722a8.dport);}else{if(DATARMNET590c4d44f6->DATARMNET5fe4c722a8.
DATARMNET9d758b8e5b==(0xd11+230-0xdf3))seq_printf(DATARMNET80f4138358,
"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x34\x20"
"\x25\x70\x49\x34" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
DATARMNETa845529338,DATARMNET35784a722f,DATARMNET590c4d44f6->DATARMNET5fe4c722a8
.DATARMNET06d2413ad2,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr);else seq_printf(
DATARMNET80f4138358,
"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x36\x20"
"\x25\x70\x49\x36" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
DATARMNETa845529338,DATARMNET35784a722f,DATARMNET590c4d44f6->DATARMNET5fe4c722a8
.DATARMNET06d2413ad2,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr);}if(++DATARMNETefc9df3df2>=
DATARMNET137373fbd9)DATARMNETefc9df3df2=(0xd2d+202-0xdf7);}while(
DATARMNETefc9df3df2!=DATARMNET04583f0705);spin_unlock_bh(&DATARMNET86e81617f0);
return(0xd2d+202-0xdf7);}static void DATARMNET71e03e7287(void){spin_lock_bh(&
DATARMNET86e81617f0);DATARMNETd4b2cd928c=ktime_get_coarse_boottime();
spin_unlock_bh(&DATARMNET86e81617f0);}static void DATARMNETfb7a2ce025(struct
rmnet_frag_descriptor*DATARMNET9d1b321642,struct sk_buff*DATARMNET543491eb0f){
struct DATARMNETf21ed5deb4 DATARMNET203a7a0136={(0xd2d+202-0xdf7),};struct
DATARMNET837f670f1d*DATARMNET590c4d44f6;ktime_t DATARMNET5711967d6f;int
DATARMNET61c2303133;if(!DATARMNET9d1b321642&&!DATARMNET543491eb0f)return;
spin_lock_bh(&DATARMNET86e81617f0);if(!DATARMNET6736d5e29d)goto
DATARMNETbf4095f79e;DATARMNET5711967d6f=ktime_get_coarse_boottime();if(ktime_sub
(DATARMNET5711967d6f,DATARMNETd4b2cd928c)>DATARMNET6736d5e29d){if(
DATARMNET9d1b321642)DATARMNET61c2303133=DATARMNET9e7ac83deb(DATARMNET9d1b321642,
&DATARMNET203a7a0136);else if(DATARMNET543491eb0f)DATARMNET61c2303133=
DATARMNET481989429b(DATARMNET543491eb0f,&DATARMNET203a7a0136);else
DATARMNET61c2303133=-EINVAL;if(DATARMNET61c2303133||(DATARMNET203a7a0136.
DATARMNETe419bc836d&&!DATARMNET203a7a0136.DATARMNETd43be7664c))goto
DATARMNETbf4095f79e;DATARMNET590c4d44f6=&DATARMNETeb47903253[DATARMNET04583f0705
];DATARMNET590c4d44f6->DATARMNET763f2e5fac=DATARMNET5711967d6f;
DATARMNET590c4d44f6->DATARMNET5fe4c722a8=DATARMNET203a7a0136;if(++
DATARMNET04583f0705>=DATARMNET137373fbd9)DATARMNET04583f0705=(0xd2d+202-0xdf7);}
DATARMNETbf4095f79e:spin_unlock_bh(&DATARMNET86e81617f0);}static const struct
rmnet_module_hook_register_info DATARMNETbdf157f06a[]={{.hooknum=
RMNET_MODULE_HOOK_APS_DATA_INACTIVE,.func=DATARMNET71e03e7287,},{.hooknum=
RMNET_MODULE_HOOK_APS_DATA_ACTIVE,.func=DATARMNETfb7a2ce025,},};static int
DATARMNET8871996254(const char*DATARMNETcc6099cb14,const struct kernel_param*
DATARMNETb3ce0fdc63){unsigned int DATARMNET3f85732c70;if(kstrtouint(
DATARMNETcc6099cb14,(0xd27+224-0xdfd),&DATARMNET3f85732c70))return-EINVAL;
spin_lock_bh(&DATARMNET86e81617f0);if(DATARMNET3f85732c70){DATARMNET6736d5e29d=
ms_to_ktime(DATARMNET3f85732c70*(0xdc7+2653-0x143c));DATARMNETd4b2cd928c=
ktime_get_coarse_boottime();rmnet_module_hook_register(DATARMNETbdf157f06a,
ARRAY_SIZE(DATARMNETbdf157f06a));}else{DATARMNET6736d5e29d=(0xd2d+202-0xdf7);
rmnet_module_hook_unregister_no_sync(DATARMNETbdf157f06a,ARRAY_SIZE(
DATARMNETbdf157f06a));}spin_unlock_bh(&DATARMNET86e81617f0);return
param_set_uint(DATARMNETcc6099cb14,DATARMNETb3ce0fdc63);}static const struct
kernel_param_ops DATARMNETd34b496ea4={.set=DATARMNET8871996254,.get=
param_get_uint,};module_param_cb(inactive_time,&DATARMNETd34b496ea4,&
inactive_time,(0xdb7+6665-0x261c));MODULE_PARM_DESC(inactive_time,
"\x49\x6e\x61\x63\x74\x69\x76\x65\x20\x74\x69\x6d\x65\x20\x69\x6e\x20\x73\x65\x63\x6f\x6e\x64\x73"
);static void DATARMNET519162865c(void){DATARMNET147f9b9f22=proc_mkdir(
"\x61\x70\x73",NULL);if(!DATARMNET147f9b9f22){pr_err(
"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x72\x65\x61\x74\x65\x20\x70\x72\x6f\x63\x20\x64\x69\x72" "\n"
);return;}DATARMNETf9422af3b0=proc_create_single_data(
"\x64\x6c\x5f\x61\x63\x74\x69\x76\x69\x74\x79",(0xcb7+5769-0x221c),
DATARMNET147f9b9f22,DATARMNETd7fae4b1c9,NULL);if(!DATARMNETf9422af3b0)pr_err(
"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x72\x65\x61\x74\x65\x20\x64\x6c\x5f\x61\x63\x74\x69\x76\x69\x74\x79\x20\x65\x6e\x74\x72\x79" "\n"
);}static void DATARMNETb4a75cfdea(void){proc_remove(DATARMNETf9422af3b0);
proc_remove(DATARMNET147f9b9f22);}static bool DATARMNET5500f4ed98=true;static
u32 DATARMNETb666ba3e85;static DEFINE_SPINLOCK(DATARMNETc3c07e6644);static
LIST_HEAD(DATARMNET5e3c62e3a4);static void DATARMNET2cc15953ac(struct timer_list
*DATARMNET6e4292679f);static DEFINE_TIMER(DATARMNET2d8efce4f0,
DATARMNET2cc15953ac);struct DATARMNET321b555862{struct list_head
DATARMNET46c1c4375f;struct genl_info DATARMNET54338da2ff;__be32 tx_id;unsigned
long expires;};struct DATARMNET548caa01db{struct qmap_cmd_hdr
DATARMNET9eab1e957c;u8 DATARMNETde8ef6e56a;u8 DATARMNET6f031e7934;u8
DATARMNET08e1628d23;u8 len;__be32 DATARMNETa960d37cad[(0xd35+210-0xdff)];}
__aligned((0xd26+209-0xdf6));static int DATARMNET3eadc89edf(u8
DATARMNET6f031e7934,u8 mux_id,u8 DATARMNETc2284e5688,__be32*DATARMNET40f827eabe)
{struct sk_buff*DATARMNET543491eb0f;struct DATARMNET548caa01db*
DATARMNET791beb2b4a;unsigned int len;len=sizeof(struct DATARMNET548caa01db);
DATARMNET543491eb0f=alloc_skb(len,GFP_ATOMIC);if(!DATARMNET543491eb0f)return-
ENOMEM;DATARMNET543491eb0f->protocol=htons(ETH_P_MAP);DATARMNET791beb2b4a=
skb_put(DATARMNET543491eb0f,len);memset(DATARMNET791beb2b4a,(0xd2d+202-0xdf7),
len);DATARMNET791beb2b4a->DATARMNET9eab1e957c.cd_bit=(0xd26+209-0xdf6);
DATARMNET791beb2b4a->DATARMNET9eab1e957c.mux_id=DATARMNETc2284e5688?
(0xbf7+4364-0x1c04):mux_id;DATARMNET791beb2b4a->DATARMNET9eab1e957c.pkt_len=
htons(len-QMAP_HDR_LEN);DATARMNET791beb2b4a->DATARMNET9eab1e957c.cmd_name=
QMAP_DATA_REPORT;DATARMNET791beb2b4a->DATARMNET9eab1e957c.cmd_type=
QMAP_CMD_REQUEST;DATARMNET791beb2b4a->DATARMNET9eab1e957c.tx_id=htonl(
rmnet_qmap_next_txid());DATARMNET791beb2b4a->DATARMNETde8ef6e56a=
(0xd26+209-0xdf6);DATARMNET791beb2b4a->DATARMNET6f031e7934=DATARMNET6f031e7934;
DATARMNET791beb2b4a->DATARMNET08e1628d23=DATARMNETc2284e5688?(0xd26+209-0xdf6):
(0xd2d+202-0xdf7);if(DATARMNET40f827eabe)*DATARMNET40f827eabe=
DATARMNET791beb2b4a->DATARMNET9eab1e957c.tx_id;return rmnet_qmap_send(
DATARMNET543491eb0f,RMNET_CH_CTL,false);}void DATARMNET5ff569bc33(struct sk_buff
*DATARMNET543491eb0f){struct DATARMNET548caa01db*DATARMNET791beb2b4a;struct
DATARMNET321b555862*DATARMNET66942f9c00=NULL;struct DATARMNET321b555862*
DATARMNETf7b3d2c1a0;struct DATARMNET7fb3ee4333 DATARMNETa13fcf9070;int
DATARMNETefc9df3df2;if(DATARMNET543491eb0f->len<sizeof(struct
DATARMNET548caa01db))return;DATARMNET791beb2b4a=(struct DATARMNET548caa01db*)
DATARMNET543491eb0f->data;if(!DATARMNET791beb2b4a||DATARMNET791beb2b4a->
DATARMNET9eab1e957c.cmd_name!=QMAP_DATA_REPORT||DATARMNET791beb2b4a->
DATARMNET9eab1e957c.cmd_type!=QMAP_CMD_ACK)return;if(DATARMNET791beb2b4a->len>
ARRAY_SIZE(DATARMNET791beb2b4a->DATARMNETa960d37cad))return;spin_lock_bh(&
DATARMNETc3c07e6644);list_for_each_entry(DATARMNETf7b3d2c1a0,&
DATARMNET5e3c62e3a4,DATARMNET46c1c4375f){if(DATARMNETf7b3d2c1a0->tx_id==
DATARMNET791beb2b4a->DATARMNET9eab1e957c.tx_id){DATARMNET66942f9c00=
DATARMNETf7b3d2c1a0;list_del(&DATARMNET66942f9c00->DATARMNET46c1c4375f);
DATARMNETb666ba3e85--;break;}}spin_unlock_bh(&DATARMNETc3c07e6644);if(
DATARMNET66942f9c00){DATARMNETa13fcf9070.mux_id=DATARMNET791beb2b4a->
DATARMNET9eab1e957c.mux_id;DATARMNETa13fcf9070.DATARMNET6f031e7934=
DATARMNET791beb2b4a->DATARMNET6f031e7934;DATARMNETa13fcf9070.DATARMNET08e1628d23
=DATARMNET791beb2b4a->DATARMNET08e1628d23;DATARMNETa13fcf9070.len=
DATARMNET791beb2b4a->len;for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);
DATARMNETefc9df3df2<DATARMNETa13fcf9070.len;DATARMNETefc9df3df2++)
DATARMNETa13fcf9070.DATARMNETa960d37cad[DATARMNETefc9df3df2]=ntohl(
DATARMNET791beb2b4a->DATARMNETa960d37cad[DATARMNETefc9df3df2]);
DATARMNETbd1d5c8f28(&DATARMNET66942f9c00->DATARMNET54338da2ff,
DATARMNET30180ab70e,DATARMNET24b8b9ef93,sizeof(DATARMNETa13fcf9070),&
DATARMNETa13fcf9070,GFP_ATOMIC);kfree(DATARMNET66942f9c00);}}int
DATARMNET568dffe281(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
DATARMNET54338da2ff){struct nlattr*DATARMNET9c5e00ef03;struct
DATARMNET7fb3ee4333 DATARMNETddcafd8b91;__be32 DATARMNET40f827eabe;struct
DATARMNET321b555862*DATARMNET66942f9c00;unsigned long DATARMNETfb1521ef26=
(0xd2d+202-0xdf7);int DATARMNETb14e52a504;if(!DATARMNET54338da2ff)return-EINVAL;
DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[DATARMNET24b8b9ef93];if(!
DATARMNET9c5e00ef03){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x4e\x6f\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x61\x74\x74\x72" "\n"
);return-EINVAL;}if(nla_memcpy(&DATARMNETddcafd8b91,DATARMNET9c5e00ef03,sizeof(
DATARMNETddcafd8b91))<=(0xd2d+202-0xdf7)){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x63\x6f\x70\x79\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x61\x74\x74\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
);return-EINVAL;}spin_lock_bh(&DATARMNETc3c07e6644);if(!DATARMNET5500f4ed98){
DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x69\x67\x6e\x6f\x72\x65\x20\x74\x68\x65\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x72\x65\x71\x75\x65\x73\x74" "\n"
);goto DATARMNETbf2e68b8a3;}if(DATARMNETb666ba3e85>=(0xd0a+237-0xdf2)){
DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x74\x6f\x6f\x20\x6d\x61\x6e\x79\x20\x6f\x75\x74\x73\x74\x61\x6e\x64\x69\x6e\x67\x20\x72\x65\x71\x75\x65\x73\x74\x73" "\n"
);goto DATARMNETbf2e68b8a3;}if(DATARMNET3eadc89edf(DATARMNETddcafd8b91.
DATARMNET6f031e7934,DATARMNETddcafd8b91.mux_id,DATARMNETddcafd8b91.
DATARMNET08e1628d23,&DATARMNET40f827eabe)){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x63\x6f\x6d\x6d\x61\x6e\x64"
);goto DATARMNETbf2e68b8a3;}DATARMNET66942f9c00=kzalloc(sizeof(*
DATARMNET66942f9c00),GFP_ATOMIC);if(!DATARMNET66942f9c00){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x6d\x65\x6d\x6f\x72\x79\x20\x66\x6f\x72\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74" "\n"
);goto DATARMNETbf2e68b8a3;}DATARMNET66942f9c00->DATARMNET54338da2ff=*
DATARMNET54338da2ff;DATARMNET66942f9c00->tx_id=DATARMNET40f827eabe;
DATARMNET66942f9c00->expires=jiffies+HZ;if(list_empty(&DATARMNET5e3c62e3a4))
DATARMNETfb1521ef26=DATARMNET66942f9c00->expires;list_add(&DATARMNET66942f9c00->
DATARMNET46c1c4375f,&DATARMNET5e3c62e3a4);DATARMNETb666ba3e85++;spin_unlock_bh(&
DATARMNETc3c07e6644);if(DATARMNETfb1521ef26){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x69\x6d\x65\x72" "\n"
);mod_timer(&DATARMNET2d8efce4f0,DATARMNETfb1521ef26);}return(0xd2d+202-0xdf7);
DATARMNETbf2e68b8a3:spin_unlock_bh(&DATARMNETc3c07e6644);DATARMNETddcafd8b91.len
=(0xd2d+202-0xdf7);DATARMNETb14e52a504=DATARMNETbd1d5c8f28(DATARMNET54338da2ff,
DATARMNET30180ab70e,DATARMNET24b8b9ef93,sizeof(DATARMNETddcafd8b91),&
DATARMNETddcafd8b91,GFP_KERNEL);return DATARMNETb14e52a504;}static void
DATARMNET2cc15953ac(struct timer_list*DATARMNET6e4292679f){struct
DATARMNET321b555862*DATARMNET66942f9c00;struct DATARMNET321b555862*
DATARMNETf7b3d2c1a0;unsigned long DATARMNET02dfdbc38d=jiffies;bool
DATARMNETb7430302d6=false;DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x69\x6d\x65\x72\x20\x66\x69\x72\x65\x64" "\n"
);spin_lock_bh(&DATARMNETc3c07e6644);list_for_each_entry_safe(
DATARMNET66942f9c00,DATARMNETf7b3d2c1a0,&DATARMNET5e3c62e3a4,DATARMNET46c1c4375f
){if(time_before_eq(DATARMNET66942f9c00->expires,DATARMNET02dfdbc38d)){list_del(
&DATARMNET66942f9c00->DATARMNET46c1c4375f);kfree(DATARMNET66942f9c00);
DATARMNETb666ba3e85--;DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x72\x65\x6d\x6f\x76\x65\x64\x20\x6f\x6e\x65\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x72\x65\x71\x75\x65\x73\x74" "\n"
);}}if(!list_empty(&DATARMNET5e3c62e3a4))DATARMNETb7430302d6=true;spin_unlock_bh
(&DATARMNETc3c07e6644);if(DATARMNETb7430302d6){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x69\x6d\x65\x72\x20\x72\x65\x2d\x61\x72\x6d\x65\x64" "\n"
);mod_timer(&DATARMNET2d8efce4f0,jiffies+HZ);}}static void DATARMNETb3f219d872(
void){struct DATARMNET321b555862*DATARMNET66942f9c00;struct DATARMNET321b555862*
DATARMNETf7b3d2c1a0;spin_lock_bh(&DATARMNETc3c07e6644);list_for_each_entry_safe(
DATARMNET66942f9c00,DATARMNETf7b3d2c1a0,&DATARMNET5e3c62e3a4,DATARMNET46c1c4375f
){list_del(&DATARMNET66942f9c00->DATARMNET46c1c4375f);kfree(DATARMNET66942f9c00)
;}DATARMNET5500f4ed98=false;DATARMNETb666ba3e85=(0xd2d+202-0xdf7);spin_unlock_bh
(&DATARMNETc3c07e6644);}static const struct rmnet_module_hook_register_info
DATARMNET644887c40e[]={{.hooknum=RMNET_MODULE_HOOK_APS_DATA_REPORT,.func=
DATARMNET5ff569bc33,},};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);
rcu_assign_pointer(rmnet_aps_pre_queue,DATARMNETe0c7b9d5a4);rcu_assign_pointer(
rmnet_aps_post_queue,DATARMNET6ab4bbdaf4);rmnet_module_hook_register(
DATARMNET509284caa6,ARRAY_SIZE(DATARMNET509284caa6));rmnet_module_hook_register(
DATARMNET644887c40e,ARRAY_SIZE(DATARMNET644887c40e));mutex_lock(&
DATARMNETd7b5a80f84);DATARMNET54b95e4416=true;mutex_unlock(&DATARMNETd7b5a80f84)
;DATARMNET519162865c();return(0xd2d+202-0xdf7);}static void __exit
DATARMNETff67054ba9(void){DATARMNETb4a75cfdea();
rmnet_module_hook_unregister_no_sync(DATARMNETbdf157f06a,ARRAY_SIZE(
DATARMNETbdf157f06a));rmnet_module_hook_unregister_no_sync(DATARMNET644887c40e,
ARRAY_SIZE(DATARMNET644887c40e));rcu_assign_pointer(rmnet_aps_pre_queue,NULL);
rcu_assign_pointer(rmnet_aps_post_queue,NULL);rmnet_module_hook_unregister(
DATARMNET509284caa6,ARRAY_SIZE(DATARMNET509284caa6));mutex_lock(&
DATARMNETd7b5a80f84);DATARMNET54b95e4416=false;DATARMNET9ac8a34003();
mutex_unlock(&DATARMNETd7b5a80f84);DATARMNET446f780f19((0xd2d+202-0xdf7),
DATARMNET94016043b8);cancel_delayed_work_sync(&DATARMNET3481998252);
del_timer_sync(&DATARMNETd21629e047);cancel_work_sync(&DATARMNET8e3aef0760);
DATARMNETb3f219d872();del_timer_sync(&DATARMNET2d8efce4f0);
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);

View File

@ -0,0 +1,56 @@
TARGET_DATARMNET_EXT_ENABLE := false
ifeq ($(TARGET_KERNEL_DLKM_DISABLE), true)
ifeq ($(TARGET_KERNEL_DLKM_DATARMNETEXT_OVERRIDE), true)
TARGET_DATARMNET_EXT_ENABLE := true
endif
else
TARGET_DATARMNET_EXT_ENABLE := true
endif
ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
#Build rmnet modules
DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST := pineapple
DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += blair
DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += pitti
DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += volcano
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST := pineapple
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += blair
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += pitti
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += volcano
DATA_APS_DLKM_BOARD_PLATFORMS_LIST := pineapple
DATA_APS_DLKM_BOARD_PLATFORMS_LIST += pitti
DATA_APS_DLKM_BOARD_PLATFORMS_LIST += volcano
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST := pineapple
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += blair
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += monaco
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += pitti
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += volcano
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST := pineapple
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST += blair
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST += monaco
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST += pitti
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST += volcano
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
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_wlan.ko
endif
ifeq ($(call is-board-platform-in-list,$(DATA_MEM_DLKM_BOARD_PLATFORMS_LIST)),true)
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_mem.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
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
ifeq ($(call is-board-platform-in-list,$(DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST)),true)
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_wlan.ko
endif
endif
endif

View File

@ -0,0 +1,8 @@
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
PRODUCT_PACKAGES += rmnet_mem.ko

View File

@ -0,0 +1,32 @@
ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_MEM_DLKM_PLATFORMS_LIST := pineapple
RMNET_MEM_DLKM_PLATFORMS_LIST += blair
RMNET_MEM_DLKM_PLATFORMS_LIST += monaco
RMNET_MEM_DLKM_PLATFORMS_LIST += pitti
RMNET_MEM_DLKM_PLATFORMS_LIST += volcano
ifeq ($(call is-board-platform-in-list, $(RMNET_MEM_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#Enabling BAZEL
LOCAL_MODULE_DDK_BUILD := true
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_CLANG :=true
LOCAL_MODULE := rmnet_mem.ko
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
BOARD_COMMON_DIR ?= device/qcom/common
DLKM_DIR := $(TOP)/$(BOARD_COMMON_DIR)/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
endif #End of Check for datarmnet

View File

@ -0,0 +1,34 @@
load(":define_mem.bzl", "define_mem")
load("//build/kernel/kleaf:kernel.bzl", "ddk_headers")
define_mem("pineapple", "consolidate")
define_mem("pineapple", "gki")
define_mem("blair", "consolidate")
define_mem("blair", "gki")
define_mem("monaco", "consolidate")
define_mem("monaco", "gki")
define_mem("pitti", "consolidate")
define_mem("pitti", "gki")
define_mem("volcano", "consolidate")
define_mem("volcano", "gki")
package(
default_visibility = [
"//visibility:public", ],
)
ddk_headers(
name = "rmnet_mem_headers",
hdrs = glob([
"*.h",
]),
includes = ["."],
)

View File

@ -0,0 +1,7 @@
obj-m += rmnet_mem.o
ccflags-y := $(call cc-option,-Wno-misleading-indentation)
rmnet_mem-y := \
rmnet_mem_main.o \
rmnet_mem_nl.o \
rmnet_mem_pool.o

View File

@ -0,0 +1,9 @@
#
# RMNET_MEM driver
#
menuconfig RMNET_MEM
tristate "Rmnet MEM support"
default m
---help---
Memory module for RmNet driver

View File

@ -0,0 +1,16 @@
#By default build for CLD
RMNET_MEM_SELECT := CONFIG_RMNET_MEM=m
KBUILD_OPTIONS += $(RMNET_MEM_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

View File

@ -0,0 +1,37 @@
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
def define_mem(target, variant):
kernel_build_variant = "{}_{}".format(target, variant)
include_base = "../../../{}".format(native.package_name())
ddk_module(
name = "{}_rmnet_mem".format(kernel_build_variant),
out = "rmnet_mem.ko",
includes = ["."],
hdrs = [ "rmnet_mem.h" ],
srcs = [
"rmnet_mem_main.c",
"rmnet_mem_nl.c",
"rmnet_mem_nl.h",
"rmnet_mem_pool.c",
"rmnet_mem_priv.h",
],
kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
deps = [
"//msm-kernel:all_headers",
],
copts = ["-Wno-misleading-indentation"],
)
copy_to_dist_dir(
name = "{}_datarment-ext_dist".format(kernel_build_variant),
data = [
":{}_rmnet_mem".format(kernel_build_variant),
],
dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
flat = True,
wipe_dist_dir = False,
allow_duplicate_filenames = False,
mode_overrides = {"**/*": "644"},
)

View File

@ -0,0 +1,25 @@
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: GPL-2.0-only
*/
#ifndef _RMNET_MEM_H_
#define _RMNET_MEM_H_
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/module.h>
#include <linux/mm.h>
#define IPA_ID (0xd26+209-0xdf6)
#define RMNET_CORE_ID (0xd1f+216-0xdf5)
#define POOL_NOTIF (0xd18+223-0xdf4)
#define RMNET_MEM_SUCCESS (0xd2d+202-0xdf7)
#define RMNET_MEM_FAIL -(0xd26+209-0xdf6)
#define RMNET_MEM_DOWNGRADE -(0xd1f+216-0xdf5)
#define RMNET_MEM_UPGRADE -(0xd18+223-0xdf4)
int rmnet_mem_unregister_notifier(struct notifier_block*nb);int
rmnet_mem_register_notifier(struct notifier_block*nb);extern struct
rmnet_mem_notif_s rmnet_mem_notifier;void rmnet_mem_put_page_entry(struct page*
page);void rmnet_mem_page_ref_inc_entry(struct page*page,unsigned id);struct
page*rmnet_mem_get_pages_entry(gfp_t gfp_mask,unsigned int order,int*code,int*
pageorder,unsigned id);
#endif

View File

@ -0,0 +1,125 @@
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: GPL-2.0-only
*/
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/module.h>
#include <linux/mm.h>
#include "rmnet_mem_nl.h"
#include "rmnet_mem.h"
#include "rmnet_mem_priv.h"
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");DEFINE_SPINLOCK(rmnet_mem_lock);int
DATARMNETfb2a1a4560[POOL_LEN];module_param_array(DATARMNETfb2a1a4560,int,NULL,
(0xcb7+5769-0x221c));MODULE_PARM_DESC(DATARMNETfb2a1a4560,
"\x67\x61\x76\x65\x75\x70\x20\x70\x65\x72\x20\x69\x64");int max_pool_size[
POOL_LEN]={(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),MAX_POOL_O2,MAX_POOL_O3};
module_param_array(max_pool_size,int,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
max_pool_size,
"\x4d\x61\x78\x20\x50\x6f\x6f\x6c\x20\x73\x69\x7a\x65\x20\x70\x65\x72\x20\x6f\x72\x64\x65\x72"
);int static_pool_size[POOL_LEN];module_param_array(static_pool_size,int,NULL,
(0xcb7+5769-0x221c));MODULE_PARM_DESC(static_pool_size,
"\x50\x6f\x6f\x6c\x20\x73\x69\x7a\x65\x20\x70\x65\x72\x20\x6f\x72\x64\x65\x72");
int pool_unbound_feature[POOL_LEN]={(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),
(0xd26+209-0xdf6),(0xd26+209-0xdf6)};module_param_array(pool_unbound_feature,int
,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC(pool_unbound_featue,
"\x50\x6f\x6f\x6c\x20\x62\x6f\x75\x6e\x64\x20\x67\x61\x74\x65");int
rmnet_mem_order_requests[POOL_LEN];module_param_array(rmnet_mem_order_requests,
int,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(rmnet_mem_order_requests,
"\x52\x65\x71\x75\x65\x73\x74\x20\x70\x65\x72\x20\x6f\x72\x64\x65\x72");int
rmnet_mem_id_req[POOL_LEN];module_param_array(rmnet_mem_id_req,int,NULL,
(0xcb7+5769-0x221c));MODULE_PARM_DESC(rmnet_mem_id_req,
"\x52\x65\x71\x75\x65\x73\x74\x20\x70\x65\x72\x20\x69\x64");int
rmnet_mem_id_recycled[POOL_LEN];module_param_array(rmnet_mem_id_recycled,int,
NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(rmnet_mem_id_recycled,
"\x52\x65\x63\x79\x63\x6c\x65\x64\x20\x70\x65\x72\x20\x69\x64");struct
workqueue_struct*mem_wq;int target_static_pool_size[POOL_LEN];module_param_array
(target_static_pool_size,int,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
target_static_pool_size,
"\x50\x6f\x6f\x6c\x20\x73\x69\x7a\x65\x20\x70\x65\x72\x20\x6f\x72\x64\x65\x72");
struct work_struct pool_adjust_work;struct list_head rmnet_mem_pool[POOL_LEN];
struct mem_info{struct page*addr;struct list_head mem_head;u8 order;};void
rmnet_mem_page_ref_inc_entry(struct page*page,unsigned id){page_ref_inc(page);}
EXPORT_SYMBOL(rmnet_mem_page_ref_inc_entry);struct rmnet_mem_notif_s{struct
raw_notifier_head chain;spinlock_t lock;};struct rmnet_mem_notif_s
rmnet_mem_notifier={.chain=RAW_NOTIFIER_INIT(rmnet_mem_notifier.chain),.lock=
__SPIN_LOCK_UNLOCKED(rmnet_mem_notifier.lock),};EXPORT_SYMBOL(rmnet_mem_notifier
);int rmnet_mem_mode_notify(unsigned pool_size){unsigned long flags;
spin_lock_irqsave(&rmnet_mem_notifier.lock,flags);raw_notifier_call_chain(&
rmnet_mem_notifier.chain,pool_size,NULL);spin_unlock_irqrestore(&
rmnet_mem_notifier.lock,flags);return NOTIFY_OK;}int rmnet_mem_register_notifier
(struct notifier_block*nb){unsigned long flags;int ret;spin_lock_irqsave(&
rmnet_mem_notifier.lock,flags);ret=raw_notifier_chain_register(&
rmnet_mem_notifier.chain,nb);spin_unlock_irqrestore(&rmnet_mem_notifier.lock,
flags);return ret;}EXPORT_SYMBOL_GPL(rmnet_mem_register_notifier);int
rmnet_mem_unregister_notifier(struct notifier_block*nb){unsigned long flags;int
ret;spin_lock_irqsave(&rmnet_mem_notifier.lock,flags);ret=
raw_notifier_chain_unregister(&rmnet_mem_notifier.chain,nb);
spin_unlock_irqrestore(&rmnet_mem_notifier.lock,flags);return ret;}
EXPORT_SYMBOL_GPL(rmnet_mem_unregister_notifier);struct mem_info*
rmnet_mem_add_page(struct page*page,u8 pageorder){struct mem_info*mem_slot;
mem_slot=(struct mem_info*)kzalloc(sizeof(*mem_slot),GFP_ATOMIC);if(!mem_slot)
return NULL;static_pool_size[pageorder]++;mem_slot->order=pageorder;mem_slot->
addr=(void*)page;INIT_LIST_HEAD(&mem_slot->mem_head);if(pageorder<POOL_LEN){
list_add_rcu(&mem_slot->mem_head,&(rmnet_mem_pool[pageorder]));}return mem_slot;
}void rmnet_mem_free_all(void){unsigned long flags;struct mem_info*mem_slot;
struct list_head*ptr=NULL,*next=NULL;int i;spin_lock_irqsave(&rmnet_mem_lock,
flags);for(i=(0xd2d+202-0xdf7);i<POOL_LEN;i++){list_for_each_safe(ptr,next,&
rmnet_mem_pool[i]){mem_slot=list_entry(ptr,struct mem_info,mem_head);list_del(&
mem_slot->mem_head);put_page(mem_slot->addr);static_pool_size[mem_slot->order]--
;kfree(mem_slot);}}spin_unlock_irqrestore(&rmnet_mem_lock,flags);}struct page*
rmnet_mem_get_pages_entry(gfp_t gfp_mask,unsigned int order,int*code,int*
pageorder,unsigned id){unsigned long flags;struct mem_info*mem_page;struct page*
page=NULL;int i=(0xd2d+202-0xdf7);int j=(0xd2d+202-0xdf7);int
DATARMNET8224a106d8=(0xd2d+202-0xdf7);spin_lock_irqsave(&rmnet_mem_lock,flags);
if(order<POOL_LEN){rmnet_mem_id_req[id]++;rmnet_mem_order_requests[order]++;for(
j=order;j>(0xd2d+202-0xdf7)&&j<POOL_LEN;j++){do{mem_page=
list_first_entry_or_null(&rmnet_mem_pool[j],struct mem_info,mem_head);if(!
mem_page){break;}if(page_ref_count(mem_page->addr)==(0xd26+209-0xdf6)){
rmnet_mem_id_recycled[j]++;page=mem_page->addr;page_ref_inc(mem_page->addr);
list_rotate_left(&rmnet_mem_pool[j]);break;}list_rotate_left(&rmnet_mem_pool[j])
;i++;}while(i<=(0xd0a+237-0xdf2));if(page&&pageorder){*pageorder=j;break;}i=
(0xd2d+202-0xdf7);}}if(static_pool_size[order]<max_pool_size[order]&&
pool_unbound_feature[order]){DATARMNET8224a106d8=(0xd26+209-0xdf6);}else
spin_unlock_irqrestore(&rmnet_mem_lock,flags);if(!page){DATARMNETfb2a1a4560[id]
++;if(order<(0xd18+223-0xdf4)){page=__dev_alloc_pages((DATARMNET8224a106d8)?
GFP_ATOMIC:gfp_mask,order);if(page){if(DATARMNET8224a106d8){rmnet_mem_add_page(
page,order);page_ref_inc(page);}if(pageorder){*pageorder=order;}}}else{if(
DATARMNET8224a106d8){page=__dev_alloc_pages((DATARMNET8224a106d8)?GFP_ATOMIC:
gfp_mask,order);if(page){rmnet_mem_add_page(page,order);page_ref_inc(page);}if(
pageorder){*pageorder=order;}}}}if(DATARMNET8224a106d8)spin_unlock_irqrestore(&
rmnet_mem_lock,flags);if(pageorder&&code&&page){if(*pageorder==order)*code=
RMNET_MEM_SUCCESS;else if(*pageorder>order)*code=RMNET_MEM_UPGRADE;else if(*
pageorder<order)*code=RMNET_MEM_DOWNGRADE;}else if(pageorder&&code){*code=
RMNET_MEM_FAIL;*pageorder=(0xd2d+202-0xdf7);}return page;}EXPORT_SYMBOL(
rmnet_mem_get_pages_entry);void rmnet_mem_put_page_entry(struct page*page){
put_page(page);}EXPORT_SYMBOL(rmnet_mem_put_page_entry);static void
mem_update_pool_work(struct work_struct*work){int i;for(i=(0xd2d+202-0xdf7);i<
POOL_LEN;i++){local_bh_disable();rmnet_mem_adjust(target_static_pool_size[i],i);
if(i==POOL_NOTIF){rmnet_mem_mode_notify(target_static_pool_size[i]);}
local_bh_enable();}}void rmnet_mem_adjust(unsigned perm_size,u8 pageorder){
struct list_head*entry,*next;struct mem_info*mem_slot;int i;struct page*newpage=
NULL;int adjustment;unsigned long flags;if(pageorder>=POOL_LEN||perm_size>
MAX_STATIC_POOL)return;adjustment=perm_size-static_pool_size[pageorder];if(
perm_size==static_pool_size[pageorder])return;spin_lock_irqsave(&rmnet_mem_lock,
flags);if(perm_size>static_pool_size[pageorder]){for(i=(0xd2d+202-0xdf7);i<(
adjustment);i++){newpage=__dev_alloc_pages(GFP_ATOMIC,pageorder);if(!newpage){
continue;}rmnet_mem_add_page(newpage,pageorder);}}else{list_for_each_safe(entry,
next,&(rmnet_mem_pool[pageorder])){mem_slot=list_entry(entry,struct mem_info,
mem_head);list_del(&mem_slot->mem_head);put_page(mem_slot->addr);kfree(mem_slot)
;static_pool_size[pageorder]--;if(static_pool_size[pageorder]==perm_size)break;}
}spin_unlock_irqrestore(&rmnet_mem_lock,flags);}int __init rmnet_mem_module_init
(void){int rc=(0xd2d+202-0xdf7);int i=(0xd2d+202-0xdf7);pr_info(
"\x25\x73\x28\x29\x3a\x20\x53\x74\x61\x72\x74\x69\x6e\x67\x20\x72\x6d\x6e\x65\x74\x20\x6d\x65\x6d\x20\x6d\x6f\x64\x75\x6c\x65" "\n"
,__func__);for(i=(0xd2d+202-0xdf7);i<POOL_LEN;i++){INIT_LIST_HEAD(&(
rmnet_mem_pool[i]));}mem_wq=alloc_workqueue("\x6d\x65\x6d\x5f\x77\x71",
WQ_HIGHPRI,(0xd2d+202-0xdf7));if(!mem_wq){pr_err(
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x61\x6c\x6c\x6f\x63\x20\x77\x6f\x72\x6b\x71\x75\x65\x75\x65\x20" "\n"
,__func__);return-ENOMEM;}INIT_WORK(&pool_adjust_work,mem_update_pool_work);rc=
rmnet_mem_nl_register();if(rc){pr_err(
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x6e\x65\x74\x6c\x69\x6e\x6b\x20\x66\x61\x6d\x69\x6c\x79" "\n"
,__func__);return-ENOMEM;}return(0xd2d+202-0xdf7);}void __exit
rmnet_mem_module_exit(void){rmnet_mem_nl_unregister();if(mem_wq){
cancel_work_sync(&pool_adjust_work);drain_workqueue(mem_wq);destroy_workqueue(
mem_wq);mem_wq=NULL;}rmnet_mem_free_all();}module_init(rmnet_mem_module_init);
module_exit(rmnet_mem_module_exit);

View File

@ -0,0 +1,39 @@
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: GPL-2.0-only
*/
#include "rmnet_mem_nl.h"
#include "rmnet_mem_priv.h"
#define DATARMNETb005a78b72 "\x52\x4d\x4e\x45\x54\x5f\x4d\x45\x4d"
#define DATARMNET39e021cd6f (0xd26+209-0xdf6)
enum{DATARMNET5277047270,DATARMNET654ec9d727,DATARMNET579b73b6a1,
DATARMNET99bbc5ae70,};
#define DATARMNETb2539ccff0 (DATARMNETc820b7a9dc - (0xd26+209-0xdf6))
uint32_t DATARMNET7c4038843f;static struct nla_policy DATARMNET93ad46699e[
DATARMNETb2539ccff0+(0xd26+209-0xdf6)]={[DATARMNETe5184c7a76]=
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNET5d6175c98d)),[DATARMNETb0428b7575]=
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNET5d23779a8f)),};static const struct
genl_ops DATARMNETb68b0ed922[]={{.cmd=DATARMNET654ec9d727,.doit=
DATARMNET291f036d31,},{.cmd=DATARMNET579b73b6a1,.doit=DATARMNET8e48a951e4,},};
struct genl_family DATARMNET595b5c3a9e __ro_after_init={.hdrsize=
(0xd2d+202-0xdf7),.name=DATARMNETb005a78b72,.version=DATARMNET39e021cd6f,.
maxattr=DATARMNETb2539ccff0,.policy=DATARMNET93ad46699e,.ops=DATARMNETb68b0ed922
,.n_ops=ARRAY_SIZE(DATARMNETb68b0ed922),};int DATARMNETe85d734d4f(int val,struct
genl_info*DATARMNET54338da2ff){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),(0xd2d+202-0xdf7),&
DATARMNET595b5c3a9e,(0xd2d+202-0xdf7),DATARMNET654ec9d727);if(msg_head==NULL){rc
=-ENOMEM;rm_err(
"\x4d\x45\x4d\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,DATARMNETbd57d2442f
,val);if(rc!=(0xd2d+202-0xdf7)){rm_err(
"\x4d\x45\x4d\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_reply(skb,DATARMNET54338da2ff);if(rc!=(0xd2d+202-0xdf7))goto
DATARMNETbf4095f79e;rm_err(
"\x4d\x45\x4d\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(
"\x4d\x45\x4d\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 rmnet_mem_nl_register(void){return
genl_register_family(&DATARMNET595b5c3a9e);}void rmnet_mem_nl_unregister(void){
genl_unregister_family(&DATARMNET595b5c3a9e);}

View File

@ -0,0 +1,47 @@
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: GPL-2.0-only
*/
#ifndef _RMNET_MEM_NL_H_
#define _RMNET_MEM_NL_H_
#include <net/genetlink.h>
enum {
RMNET_MEM_ATTR_UNSPEC,
RMNET_MEM_ATTR_MODE,
RMNET_MEM_ATTR_POOL_SIZE,
RMNET_MEM_ATTR_INT,
__RMNET_MEM_ATTR_MAX,
};
struct rmnet_memzone_req {
int zone;
int valid;
};
struct rmnet_pool_update_req {
unsigned poolsize[4];
unsigned valid_mask;
};
int rmnet_mem_nl_register(void);
void rmnet_mem_nl_unregister(void);
int rmnet_mem_nl_cmd_update_mode(struct sk_buff *skb, struct genl_info *info);
int rmnet_mem_nl_cmd_update_pool_size(struct sk_buff *skb, struct genl_info *info);
int rmnet_mem_genl_send_int_to_userspace_no_info(int val, struct genl_info *info);
#endif /* _RMNET_MEM_GENL_H_ */
#ifndef DATARMNET7b1420e7bf
#define DATARMNET7b1420e7bf
#include <net/genetlink.h>
enum{DATARMNET2cc66aaa85,DATARMNETe5184c7a76,DATARMNETb0428b7575,
DATARMNETbd57d2442f,DATARMNETc820b7a9dc,};struct DATARMNET5d6175c98d{int
DATARMNET3a4d9ad400;int valid;};struct DATARMNET5d23779a8f{unsigned
DATARMNETe87b937bb6[(0xd11+230-0xdf3)];unsigned DATARMNET855b934a37;};int
rmnet_mem_nl_register(void);void rmnet_mem_nl_unregister(void);int
DATARMNET291f036d31(struct sk_buff*skb,struct genl_info*DATARMNET54338da2ff);int
DATARMNET8e48a951e4(struct sk_buff*skb,struct genl_info*DATARMNET54338da2ff);
int DATARMNETe85d734d4f(int val,struct genl_info*DATARMNET54338da2ff);
#endif

View File

@ -0,0 +1,39 @@
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: GPL-2.0-only
*/
#include "rmnet_mem_nl.h"
#include "rmnet_mem_priv.h"
#define DATARMNETc8aadbe769 (0xdf7+6169-0x241c)
#define DATARMNET831d60a2b1 (0xd18+223-0xdf4)
#define DATARMNETa967925c7a (0xdb7+6677-0x263c)
#define DATARMNET19337c1bbf (0xdb7+6670-0x2634)
extern struct work_struct pool_adjust_work;extern struct workqueue_struct*mem_wq
;int DATARMNET291f036d31(struct sk_buff*skb,struct genl_info*DATARMNET54338da2ff
){u8 mode=(0xd2d+202-0xdf7);struct sk_buff*DATARMNETa13fcf9070;struct
DATARMNET5d6175c98d mem_info;struct nlattr*na;if(DATARMNET54338da2ff->attrs[
DATARMNETe5184c7a76]){na=DATARMNET54338da2ff->attrs[DATARMNETe5184c7a76];if(
nla_memcpy(&mem_info,na,sizeof(mem_info))>(0xd2d+202-0xdf7)){rm_err(
"%s(): modeinfo %u\n",__func__,mem_info.DATARMNET3a4d9ad400);}rm_err(
"\x25\x73\x28\x29\x3a\x20\x6d\x6f\x64\x65\x20\x25\x75" "\n",__func__,mode);
DATARMNETa13fcf9070=nlmsg_new(NLMSG_DEFAULT_SIZE,GFP_KERNEL);if(!
DATARMNETa13fcf9070)return-ENOMEM;DATARMNETe85d734d4f(DATARMNETa967925c7a,
DATARMNET54338da2ff);}else{DATARMNETe85d734d4f(DATARMNET19337c1bbf,
DATARMNET54338da2ff);}return(0xd2d+202-0xdf7);}int DATARMNET8e48a951e4(struct
sk_buff*skb,struct genl_info*DATARMNET54338da2ff){struct sk_buff*
DATARMNETa13fcf9070;struct DATARMNET5d23779a8f mem_info;struct nlattr*na;int i;
u8 DATARMNET205e85dea0=(0xd2d+202-0xdf7);if(DATARMNET54338da2ff->attrs[
DATARMNETb0428b7575]){na=DATARMNET54338da2ff->attrs[DATARMNETb0428b7575];if(
nla_memcpy(&mem_info,na,sizeof(mem_info))>(0xd2d+202-0xdf7)){pr_err(
"\x25\x73\x28\x29\x3a\x20\x6d\x6f\x64\x65\x69\x6e\x66\x6f\x20\x25\x75" "\n",
__func__,mem_info.DATARMNET855b934a37);}rm_err(
"\x25\x73\x28\x29\x3a\x20\x70\x6f\x6f\x6c\x5f\x73\x69\x7a\x65\x20\x25\x75" "\n",
__func__,mem_info.DATARMNETe87b937bb6[(0xd2d+202-0xdf7)]);for(i=
(0xd2d+202-0xdf7);i<POOL_LEN;i++){if(mem_info.DATARMNET855b934a37&
(0xd26+209-0xdf6)<<i&&mem_info.DATARMNETe87b937bb6[i]!=static_pool_size[i]){
target_static_pool_size[i]=mem_info.DATARMNETe87b937bb6[i];DATARMNET205e85dea0=
(0xd26+209-0xdf6);}}if(DATARMNET205e85dea0&&mem_wq)queue_work(mem_wq,&
pool_adjust_work);DATARMNETa13fcf9070=nlmsg_new(NLMSG_DEFAULT_SIZE,GFP_KERNEL);
if(!DATARMNETa13fcf9070)return-ENOMEM;DATARMNETe85d734d4f(DATARMNETa967925c7a,
DATARMNET54338da2ff);}else{DATARMNETe85d734d4f(DATARMNET19337c1bbf,
DATARMNET54338da2ff);}return(0xd2d+202-0xdf7);}

View File

@ -0,0 +1,26 @@
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: GPL-2.0-only
*/
#ifndef DATARMNET64d33b9eb9
#define DATARMNET64d33b9eb9
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/module.h>
#include <linux/mm.h>
#define IPA_ID (0xd26+209-0xdf6)
#define RMNET_CORE_ID (0xd1f+216-0xdf5)
#define POOL_LEN (0xd11+230-0xdf3)
#define MAX_STATIC_POOL (0xc07+1233-0xe1c)
#define MAX_POOL_O3 (0xbb7+1296-0xe24)
#define MAX_POOL_O2 (0xbb7+4453-0x1c3c)
void rmnet_mem_adjust(unsigned perm_size,u8 order);
#define rm_err(DATARMNET6c3cf5865b, ...) \
do { if ((0xd2d+202-0xdf7)) pr_err(DATARMNET6c3cf5865b, __VA_ARGS__); } while (\
(0xd2d+202-0xdf7))
extern int max_pool_size[POOL_LEN];extern int static_pool_size[POOL_LEN];extern
int pool_unbound_feature[POOL_LEN];extern int rmnet_mem_order_requests[POOL_LEN]
;extern int rmnet_mem_id_req[POOL_LEN];extern int rmnet_mem_id_recycled[POOL_LEN
];extern int target_static_pool_size[POOL_LEN];
#endif

View File

@ -0,0 +1,45 @@
ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_OFFLOAD_DLKM_PLATFORMS_LIST := pineapple
RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += blair
RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += pitti
RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += volcano
ifeq ($(call is-board-platform-in-list, $(RMNET_OFFLOAD_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#Enabling BAZEL
LOCAL_MODULE_DDK_BUILD := true
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
endif #End of Check for datarmnet

View File

@ -0,0 +1,18 @@
load(":define_offload.bzl", "define_offload")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
define_offload("pineapple", "consolidate")
define_offload("pineapple", "gki")
define_offload("blair", "consolidate")
define_offload("blair", "gki")
define_offload("pitti", "consolidate")
define_offload("pitti", "gki")
define_offload("volcano", "consolidate")
define_offload("volcano", "gki")

View File

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

View File

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

View File

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

View File

@ -0,0 +1,46 @@
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
def define_offload(target, variant):
kernel_build_variant = "{}_{}".format(target, variant)
include_base = "../../../{}".format(native.package_name())
ddk_module(
name = "{}_offload".format(kernel_build_variant),
out = "rmnet_offload.ko",
srcs = [
"rmnet_offload_engine.c",
"rmnet_offload_engine.h",
"rmnet_offload_knob.c",
"rmnet_offload_knob.h",
"rmnet_offload_main.c",
"rmnet_offload_main.h",
"rmnet_offload_state.c",
"rmnet_offload_state.h",
"rmnet_offload_stats.c",
"rmnet_offload_stats.h",
"rmnet_offload_tcp.c",
"rmnet_offload_tcp.h",
"rmnet_offload_udp.c",
"rmnet_offload_udp.h",
],
kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
deps = [
"//msm-kernel:all_headers",
"//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
"//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
],
copts = ["-Wno-misleading-indentation"],
)
copy_to_dist_dir(
name = "{}_datarment-ext_dist".format(kernel_build_variant),
data = [
":{}_offload".format(kernel_build_variant),
],
dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
flat = True,
wipe_dist_dir = False,
allow_duplicate_filenames = False,
mode_overrides = {"**/*": "644"},
)

View File

@ -0,0 +1,195 @@
/* 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 <linux/log2.h>
#include <linux/list.h>
#include <linux/hashtable.h>
#include "rmnet_descriptor.h"
#include "rmnet_module.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->
DATARMNET8dfc11cccd<DATARMNET78d9393ac8){DATARMNET6745427f98=&
DATARMNETa6f73cbe10->DATARMNET2846a01cce[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);}static const
struct rmnet_module_hook_register_info DATARMNETcbc211d052={.hooknum=
RMNET_MODULE_HOOK_OFFLOAD_CHAIN_END,.func=DATARMNETbe30d096c6,};void
DATARMNETd4230b6bfe(void){rcu_assign_pointer(rmnet_perf_chain_end,
DATARMNETbe30d096c6);rmnet_module_hook_register(&DATARMNETcbc211d052,
(0xd26+209-0xdf6));}void DATARMNET560e127137(void){rcu_assign_pointer(
rmnet_perf_chain_end,NULL);rmnet_module_hook_unregister_no_sync(&
DATARMNETcbc211d052,(0xd26+209-0xdf6));}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);
DATARMNETefc9df3df2<DATARMNET78d9393ac8;DATARMNETefc9df3df2++){struct
DATARMNETd7c9631acd*DATARMNETaa568481cf;DATARMNETaa568481cf=&DATARMNETe05748b000
->DATARMNETebb45c8d86.DATARMNET2846a01cce[DATARMNETefc9df3df2];INIT_LIST_HEAD(&
DATARMNETaa568481cf->DATARMNETb76b79d0d5);INIT_HLIST_NODE(&DATARMNETaa568481cf->
DATARMNETbd5d7d96d8);}return DATARMNET0529bb9c4e;}

View File

@ -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 <linux/types.h>
#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

View File

@ -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 <linux/moduleparam.h>
#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)
DATARMNETcd597b0a1b<DATARMNET0751f2024d->DATARMNET949fb858da||(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;}

View File

@ -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 <linux/types.h>
enum{DATARMNETdf66588a73,DATARMNET9c85bb95a3,DATARMNET6d2ed4b822,
DATARMNET94aa767bca,};u64 DATARMNETf1d1b8287f(u32 DATARMNET4c4a5ce272);
#endif

View File

@ -0,0 +1,267 @@
/* 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 <linux/compiler.h>
#include <linux/rcupdate.h>
#include <linux/jhash.h>
#include <linux/spinlock.h>
#include "rmnet_descriptor.h"
#include "rmnet_handlers.h"
#include "rmnet_map.h"
#include "rmnet_module.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",
"\x65\x32\x31\x38\x66\x34\x35\x31","\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
DATARMNETb56d685c50(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);}static void DATARMNET29e8d137c4(
struct list_head*DATARMNETb5730f5283,struct rmnet_port*DATARMNETf0d9de7e2f){
struct rmnet_frag_descriptor*DATARMNETced5b4128f,*DATARMNET0386f6f82a;
list_for_each_entry_safe(DATARMNETced5b4128f,DATARMNET0386f6f82a,
DATARMNETb5730f5283,list){list_del_init(&DATARMNETced5b4128f->list);
DATARMNETb56d685c50(DATARMNETced5b4128f,DATARMNETf0d9de7e2f);}}void
DATARMNET664568fcd0(void){spin_lock_bh(&DATARMNET0b5e447f18);}void
DATARMNET6a76048590(void){spin_unlock_bh(&DATARMNET0b5e447f18);}static const
struct rmnet_module_hook_register_info DATARMNET162e7a2013={.hooknum=
RMNET_MODULE_HOOK_OFFLOAD_INGRESS,.func=DATARMNET29e8d137c4,};void
DATARMNET818b960147(void){rcu_assign_pointer(rmnet_perf_desc_entry,
DATARMNETb56d685c50);rmnet_module_hook_register(&DATARMNET162e7a2013,
(0xd26+209-0xdf6));}void DATARMNETba38823a2f(void){rcu_assign_pointer(
rmnet_perf_desc_entry,NULL);rmnet_module_hook_unregister_no_sync(&
DATARMNET162e7a2013,(0xd26+209-0xdf6));}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);}

View File

@ -0,0 +1,74 @@
/* 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 DATARMNET3f65517842
#define DATARMNET3f65517842
#include <linux/types.h>
#include <asm/byteorder.h>
#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 "<asm/byteorder.h> 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 "<asm/byteorder.h> 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);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

View File

@ -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 <linux/module.h>
#include <linux/netdevice.h>
#include <linux/rcupdate.h>
#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);

View File

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

View File

@ -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 <linux/moduleparam.h>
#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<DATARMNETd04f96aa13)DATARMNET6c78aba0c8[DATARMNET248f120dd5]
+=DATARMNETb639f6e1b1;}void DATARMNETa00cda79d0(u32 DATARMNET248f120dd5){
DATARMNETbad3b5165e(DATARMNET248f120dd5,(0xd26+209-0xdf6));}

View File

@ -0,0 +1,27 @@
/* 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 DATARMNETbc7bfad32a
#define DATARMNETbc7bfad32a
#include <linux/types.h>
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

View File

@ -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 <linux/list.h>
#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;}

View File

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

View File

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

View File

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

View File

@ -0,0 +1,59 @@
ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_PERF_DLKM_PLATFORMS_LIST := pineapple
RMNET_PERF_DLKM_PLATFORMS_LIST += blair
RMNET_PERF_DLKM_PLATFORMS_LIST += pitti
RMNET_PERF_DLKM_PLATFORMS_LIST += volcano
ifeq ($(call is-board-platform-in-list, $(RMNET_PERF_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#Enabling BAZEL
LOCAL_MODULE_DDK_BUILD := true
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
endif #End of Check for datarmnet

View File

@ -0,0 +1,18 @@
load(":define_perf.bzl", "define_perf")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
define_perf("pineapple", "consolidate")
define_perf("pineapple", "gki")
define_perf("blair", "consolidate")
define_perf("blair", "gki")
define_perf("pitti", "consolidate")
define_perf("pitti", "gki")
define_perf("volcano", "consolidate")
define_perf("volcano", "gki")

View File

@ -0,0 +1,7 @@
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 \
rmnet_perf_tcp.o \
rmnet_perf_udp.o

View File

@ -0,0 +1,11 @@
#
# RMNET_PERF driver
#
menuconfig RMNET_PERF
tristate "Rmnet perf support"
default m
depends on RMNET_CORE
depends on RMNET_SHS
---help---
Performance support for the RmNet driver

View File

@ -0,0 +1,17 @@
#By default build for CLD
RMNET_PERF_SELECT := CONFIG_RMNET_PERF=m
KBUILD_OPTIONS += $(RMNET_PERF_SELECT)
KBUILD_OPTIONS += $(KBUILD_EXTRA) # Extra config if any
KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_PATH)/Module.symvers
KBUILD_EXTRA_SYMBOLS += $(M)/../../$(DATARMNET_SHS_PATH)/Module.symvers
M ?= $(shell pwd)
all:
$(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS) $(KBUILD_EXTRA_SYMBOLS)
modules_install:
$(MAKE) INSTALL_MOD_STRIP=1 -C $(KERNEL_SRC) M=$(M) modules_install
clean:
$(MAKE) -C $(KERNEL_SRC) M=$(M) clean

View File

@ -0,0 +1,37 @@
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
def define_perf(target, variant):
kernel_build_variant = "{}_{}".format(target, variant)
include_base = "../../../{}".format(native.package_name())
ddk_module(
name = "{}_perf".format(kernel_build_variant),
out = "rmnet_perf.ko",
srcs = [
"rmnet_perf_main.c",
"rmnet_perf_tcp.c",
"rmnet_perf_tcp.h",
"rmnet_perf_udp.c",
"rmnet_perf_udp.h",
],
kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
deps = [
"//msm-kernel:all_headers",
"//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
"//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
],
copts = ["-Wno-misleading-indentation"],
)
copy_to_dist_dir(
name = "{}_datarment-ext_dist".format(kernel_build_variant),
data = [
":{}_perf".format(kernel_build_variant),
],
dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
flat = True,
wipe_dist_dir = False,
allow_duplicate_filenames = False,
mode_overrides = {"**/*": "644"},
)

View File

@ -0,0 +1,135 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET PERF framework
*
*/
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/in.h>
#include <linux/udp.h>
#include <linux/ip.h>
#include <linux/ipv6.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include "rmnet_module.h"
#include <net/ipv6.h>
#include <net/ip.h>
#include "rmnet_perf_tcp.h"
#include "rmnet_perf_udp.h"
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={
"\x38\x61\x62\x30\x61\x38\x65\x65","\x66\x32\x32\x62\x61\x63\x65\x30",
"\x63\x63\x39\x38\x66\x30\x38\x61","\x63\x65\x37\x39\x33\x32\x31\x63",
"\x35\x64\x63\x64\x64\x34\x63\x30","\x34\x63\x39\x62\x35\x33\x33\x37",
"\x61\x33\x62\x61\x62\x64\x34\x30","\x37\x66\x30\x37\x38\x66\x39\x36",
"\x65\x35\x36\x63\x62\x35\x35\x64","\x65\x32\x31\x38\x66\x34\x35\x31",
"\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"
);bool DATARMNETc03b668e4c=true;module_param_named(rmnet_perf_knob0,
DATARMNETc03b668e4c,bool,(0xdb7+6665-0x261c));static bool DATARMNET21c7a3c377=
true;module_param_named(rmnet_perf_knob1,DATARMNET21c7a3c377,bool,
(0xdb7+6665-0x261c));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)<sizeof(struct udphdr)+(0xd26+209-0xdf6))
return false;DATARMNET352416e828=skb_header_pointer(DATARMNET543491eb0f,
DATARMNET611d08d671+sizeof(struct udphdr),(0xd26+209-0xdf6),&DATARMNETd9bda61912
);if(!DATARMNET352416e828)return false;return((*DATARMNET352416e828)&
(0xbf7+4869-0x1e3c))==(0xbf7+4869-0x1e3c);}static int DATARMNETee9214ce9b(struct
sk_buff*DATARMNET543491eb0f,int DATARMNET611d08d671){if(DATARMNET77ab42949f(
DATARMNET543491eb0f,DATARMNET611d08d671)){DATARMNET543491eb0f->hash=
(0xd2d+202-0xdf7);DATARMNET543491eb0f->sw_hash=(0xd26+209-0xdf6);return
(0xd2d+202-0xdf7);}return-EINVAL;}int DATARMNETf2958615b1(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))return-EINVAL;if(DATARMNET86f1f2cdc9->
protocol==IPPROTO_UDP){if(DATARMNET21c7a3c377)DATARMNET2a6d02a6a5(
DATARMNET543491eb0f);return DATARMNETee9214ce9b(DATARMNET543491eb0f,
DATARMNET86f1f2cdc9->ihl*(0xd11+230-0xdf3));}if(DATARMNET86f1f2cdc9->protocol==
IPPROTO_TCP){if(DATARMNETc03b668e4c)DATARMNET9250714999(DATARMNET543491eb0f);
return-EINVAL;}}else if(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct
ipv6hdr*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;int DATARMNET611d08d671;__be16
DATARMNET98fed39916;u8 DATARMNET65293f17c4;DATARMNETbf55123e5b=
skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*
DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)return-EINVAL
;DATARMNET65293f17c4=DATARMNETbf55123e5b->nexthdr;DATARMNET611d08d671=
ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*DATARMNETbf55123e5b),&
DATARMNET65293f17c4,&DATARMNET98fed39916);if(DATARMNET611d08d671<
(0xd2d+202-0xdf7)||DATARMNET98fed39916)return-EINVAL;if(DATARMNET65293f17c4==
IPPROTO_UDP){if(DATARMNET21c7a3c377)DATARMNET2a6d02a6a5(DATARMNET543491eb0f);
return DATARMNETee9214ce9b(DATARMNET543491eb0f,DATARMNET611d08d671);}if(
DATARMNET65293f17c4==IPPROTO_TCP){if(DATARMNETc03b668e4c)DATARMNET9250714999(
DATARMNET543491eb0f);return-EINVAL;}}return-EINVAL;}void DATARMNET7b0253229f(
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))return;if(DATARMNET86f1f2cdc9->protocol==
IPPROTO_TCP){if(DATARMNETc03b668e4c)DATARMNETd8fdde8978(DATARMNET543491eb0f);}}
else if(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;int DATARMNET611d08d671;__be16
DATARMNET98fed39916;u8 DATARMNET65293f17c4;DATARMNETbf55123e5b=
skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*
DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)return;
DATARMNET65293f17c4=DATARMNETbf55123e5b->nexthdr;DATARMNET611d08d671=
ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*DATARMNETbf55123e5b),&
DATARMNET65293f17c4,&DATARMNET98fed39916);if(DATARMNET611d08d671<
(0xd2d+202-0xdf7)||DATARMNET98fed39916)return;if(DATARMNET65293f17c4==
IPPROTO_TCP){if(DATARMNETc03b668e4c)DATARMNETd8fdde8978(DATARMNET543491eb0f);}}}
static void DATARMNET05c4bf8af9(struct sk_buff*DATARMNET543491eb0f,int
DATARMNET611d08d671){if(DATARMNET77ab42949f(DATARMNET543491eb0f,
DATARMNET611d08d671))DATARMNET543491eb0f->priority=14286874;}void
DATARMNET324fe25dad(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))return;if(DATARMNET86f1f2cdc9->protocol==
IPPROTO_UDP){if(DATARMNET21c7a3c377)DATARMNET5ecc30669c(DATARMNET543491eb0f);
DATARMNET05c4bf8af9(DATARMNET543491eb0f,DATARMNET86f1f2cdc9->ihl*
(0xd11+230-0xdf3));return;}if(DATARMNET86f1f2cdc9->protocol==IPPROTO_TCP){if(
DATARMNETc03b668e4c)DATARMNET9d574e64b1(DATARMNET543491eb0f);return;}}else if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;int DATARMNET611d08d671;__be16
DATARMNET98fed39916;u8 DATARMNET65293f17c4;DATARMNETbf55123e5b=
skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*
DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)return;
DATARMNET65293f17c4=DATARMNETbf55123e5b->nexthdr;DATARMNET611d08d671=
ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*DATARMNETbf55123e5b),&
DATARMNET65293f17c4,&DATARMNET98fed39916);if(DATARMNET611d08d671<
(0xd2d+202-0xdf7)||DATARMNET98fed39916)return;if(DATARMNET65293f17c4==
IPPROTO_UDP){if(DATARMNET21c7a3c377)DATARMNET5ecc30669c(DATARMNET543491eb0f);
DATARMNET05c4bf8af9(DATARMNET543491eb0f,DATARMNET611d08d671);return;}if(
DATARMNET65293f17c4==IPPROTO_TCP){if(DATARMNETc03b668e4c)DATARMNET9d574e64b1(
DATARMNET543491eb0f);return;}}}static const struct
rmnet_module_hook_register_info DATARMNET95a71e03c1[]={{.hooknum=
RMNET_MODULE_HOOK_PERF_INGRESS,.func=DATARMNETf2958615b1,},{.hooknum=
RMNET_MODULE_HOOK_PERF_EGRESS,.func=DATARMNET324fe25dad,},{.hooknum=
RMNET_MODULE_HOOK_PERF_SET_THRESH,.func=DATARMNET7fa1835595,},{.hooknum=
RMNET_MODULE_HOOK_PERF_INGRESS_RX_HANDLER,.func=DATARMNET7b0253229f,},};void
DATARMNET49c17a32bc(void){rcu_assign_pointer(rmnet_perf_egress_hook1,
DATARMNET324fe25dad);rmnet_module_hook_register(DATARMNET95a71e03c1,ARRAY_SIZE(
DATARMNET95a71e03c1));}void DATARMNET41e8cc085c(void){rcu_assign_pointer(
rmnet_perf_egress_hook1,NULL);rmnet_module_hook_unregister(DATARMNET95a71e03c1,
ARRAY_SIZE(DATARMNET95a71e03c1));}static int __init DATARMNET63abbdc3d3(void){
int DATARMNETb14e52a504;pr_info("%s(): Loading\n",__func__);DATARMNETb14e52a504=
DATARMNET7e9995246e();if(DATARMNETb14e52a504)return DATARMNETb14e52a504;
DATARMNETb14e52a504=DATARMNETe80a33d544();if(DATARMNETb14e52a504){
DATARMNET38bb6f2b7a();return DATARMNETb14e52a504;}DATARMNET49c17a32bc();return
(0xd2d+202-0xdf7);}static void __exit DATARMNETa343229e33(void){
DATARMNET41e8cc085c();DATARMNET4b5170a1ef();DATARMNET38bb6f2b7a();pr_info(
"\x25\x73\x28\x29\x3a\x20\x65\x78\x69\x74\x69\x6e\x67" "\n",__func__);}
module_init(DATARMNET63abbdc3d3);module_exit(DATARMNETa343229e33);

View File

@ -0,0 +1,252 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET PERF TCP framework
*
*/
#include <linux/types.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/skbuff.h>
#include <linux/spinlock.h>
#include <linux/rcupdate.h>
#include <linux/hashtable.h>
#include <linux/log2.h>
#include <linux/workqueue.h>
#include <net/ip.h>
#include <net/inet_hashtables.h>
#include <net/ipv6.h>
#include <net/inet6_hashtables.h>
#include <net/tcp.h>
#include <net/sock.h>
#include "rmnet_private.h"
#include "rmnet_perf_tcp.h"
#define DATARMNET3dad3dfdc0 ((0x16a8+1565-0x14f5))
#define DATARMNETe6309522cf ((0xdf7+6169-0x241c))
#define DATARMNET99a2e6e390 (192000)
#define DATARMNET714c9c3081 ((0xeb7+1158-0x132d))
#define DATARMNET347bd5eb15 \
(const_ilog2(DATARMNET714c9c3081))
enum{DATARMNETe0e37fef7a,DATARMNETf354672897,DATARMNET9cc765a89e,
DATARMNETb03f9571a3,DATARMNET53c8cfb28e,DATARMNET74f0a28fec,DATARMNETaa18c75b61,
};struct DATARMNET4b40fe9cd4{union{__be32 DATARMNETdfe430c2d6;struct in6_addr
DATARMNET815cbb4bf5;};union{__be32 DATARMNET2cb607d686;struct in6_addr
DATARMNETc3f31215b7;};union{struct{__be16 DATARMNET08e913477e;__be16
DATARMNETda7f7fa492;};u32 DATARMNET556bcfcf8f;};u8 DATARMNET0d956cc77a;};struct
DATARMNETddbc1e5435{struct hlist_node hash;struct rcu_head DATARMNET28bfe9e6ad;
struct DATARMNET4b40fe9cd4 DATARMNET54338da2ff;unsigned long DATARMNET763f2e5fac
;u32 DATARMNETfef3675ce7;u32 DATARMNET9076d335ab;u32 DATARMNET9c389f3b86;u32
DATARMNET9a57846b4e;u32 DATARMNETb8fc35ed64;bool DATARMNET55056146f6;u8
DATARMNET1717afebc7;};struct DATARMNET74cfea3d20{struct delayed_work
DATARMNET190b4452e8;bool DATARMNETcd94e0d3c7;};static DEFINE_SPINLOCK(
DATARMNET8e3721c47d);static DEFINE_HASHTABLE(DATARMNET1fd012f255,
DATARMNET347bd5eb15);static u32 DATARMNET1c62a8e2c9;static struct
DATARMNET74cfea3d20 DATARMNETac6535da80;static u32 DATARMNET84337b8855=
(0xeb7+698-0x110d);module_param_named(rmnet_perf_tcp_knob0,DATARMNET84337b8855,
uint,(0xdb7+6665-0x261c));static u64 DATARMNETeb09e391b5[DATARMNETaa18c75b61];
module_param_array_named(rmnet_perf_tcp_stat,DATARMNETeb09e391b5,ullong,NULL,
(0xcb7+5769-0x221c));static void DATARMNET32b91c8ae6(u32 DATARMNET248f120dd5){if
(DATARMNET248f120dd5<DATARMNETaa18c75b61)DATARMNETeb09e391b5[DATARMNET248f120dd5
]+=(0xd26+209-0xdf6);}static bool DATARMNETd92eab34a9(struct DATARMNETddbc1e5435
*DATARMNET63b1a086d5,unsigned long DATARMNET763f2e5fac){unsigned long
DATARMNETc2d5c71ce1;DATARMNETc2d5c71ce1=msecs_to_jiffies(DATARMNET3dad3dfdc0);if
(DATARMNET763f2e5fac-DATARMNET63b1a086d5->DATARMNET763f2e5fac>
DATARMNETc2d5c71ce1)return true;return false;}static void DATARMNET776e08992c(
struct rcu_head*DATARMNET5d432e897f){struct DATARMNETddbc1e5435*
DATARMNET63b1a086d5;DATARMNET63b1a086d5=container_of(DATARMNET5d432e897f,struct
DATARMNETddbc1e5435,DATARMNET28bfe9e6ad);kfree(DATARMNET63b1a086d5);}static bool
DATARMNETb8167597bc(bool DATARMNETe78ad140cc){struct DATARMNETddbc1e5435*
DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;unsigned long
DATARMNET763f2e5fac;int DATARMNET5c2fd31d7b;DATARMNET763f2e5fac=jiffies;
hash_for_each_safe(DATARMNET1fd012f255,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,
DATARMNET63b1a086d5,hash){if(DATARMNET63b1a086d5->DATARMNET1717afebc7)continue;
if(DATARMNETe78ad140cc||DATARMNETd92eab34a9(DATARMNET63b1a086d5,
DATARMNET763f2e5fac)){DATARMNET63b1a086d5->DATARMNET1717afebc7=true;hash_del_rcu
(&DATARMNET63b1a086d5->hash);call_rcu(&DATARMNET63b1a086d5->DATARMNET28bfe9e6ad,
DATARMNET776e08992c);DATARMNET32b91c8ae6(DATARMNET9cc765a89e);
DATARMNET1c62a8e2c9--;}}return!!DATARMNET1c62a8e2c9;}static void
DATARMNETfec9085d8e(struct work_struct*DATARMNET190b4452e8){struct
DATARMNET74cfea3d20*DATARMNET9dd153bdf2;unsigned long DATARMNETfb0677cc3c;bool
DATARMNET6e1c466378;DATARMNET9dd153bdf2=container_of(to_delayed_work(
DATARMNET190b4452e8),struct DATARMNET74cfea3d20,DATARMNET190b4452e8);
spin_lock_irqsave(&DATARMNET8e3721c47d,DATARMNETfb0677cc3c);DATARMNET6e1c466378=
DATARMNETb8167597bc(DATARMNET9dd153bdf2->DATARMNETcd94e0d3c7);if(
DATARMNET6e1c466378){unsigned long DATARMNETf71ef1b8da;DATARMNETf71ef1b8da=
msecs_to_jiffies(DATARMNETe6309522cf);schedule_delayed_work(&DATARMNET9dd153bdf2
->DATARMNET190b4452e8,DATARMNETf71ef1b8da);}spin_unlock_irqrestore(&
DATARMNET8e3721c47d,DATARMNETfb0677cc3c);}static bool DATARMNET2f1039220d(struct
DATARMNET4b40fe9cd4*DATARMNETae0905b0b3,struct DATARMNET4b40fe9cd4*
DATARMNETdb49f21565){if(DATARMNETae0905b0b3->DATARMNET0d956cc77a!=
DATARMNETdb49f21565->DATARMNET0d956cc77a||DATARMNETae0905b0b3->
DATARMNET08e913477e!=DATARMNETdb49f21565->DATARMNET08e913477e||
DATARMNETae0905b0b3->DATARMNETda7f7fa492!=DATARMNETdb49f21565->
DATARMNETda7f7fa492)return false;if(DATARMNETae0905b0b3->DATARMNET0d956cc77a==
(0xd11+230-0xdf3))return DATARMNETae0905b0b3->DATARMNETdfe430c2d6==
DATARMNETdb49f21565->DATARMNETdfe430c2d6&&DATARMNETae0905b0b3->
DATARMNET2cb607d686==DATARMNETdb49f21565->DATARMNET2cb607d686;return!
ipv6_addr_cmp(&DATARMNETae0905b0b3->DATARMNET815cbb4bf5,&DATARMNETdb49f21565->
DATARMNET815cbb4bf5)&&!ipv6_addr_cmp(&DATARMNETae0905b0b3->DATARMNETc3f31215b7,&
DATARMNETdb49f21565->DATARMNETc3f31215b7);}static struct DATARMNETddbc1e5435*
DATARMNETba919c78e5(struct DATARMNET4b40fe9cd4*DATARMNET3396919a68)__must_hold(&
DATARMNET8e3721c47d){struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;if(
DATARMNET1c62a8e2c9>=DATARMNET84337b8855)return NULL;DATARMNET63b1a086d5=kzalloc
(sizeof(*DATARMNET63b1a086d5),GFP_ATOMIC);if(!DATARMNET63b1a086d5){
DATARMNET32b91c8ae6(DATARMNETf354672897);return NULL;}INIT_HLIST_NODE(&
DATARMNET63b1a086d5->hash);memcpy(&DATARMNET63b1a086d5->DATARMNET54338da2ff,
DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));DATARMNET63b1a086d5->
DATARMNET9a57846b4e=DATARMNET99a2e6e390;DATARMNET63b1a086d5->DATARMNET763f2e5fac
=jiffies;hash_add_rcu(DATARMNET1fd012f255,&DATARMNET63b1a086d5->hash,
DATARMNET3396919a68->DATARMNET556bcfcf8f);DATARMNET32b91c8ae6(
DATARMNETe0e37fef7a);if(!DATARMNET1c62a8e2c9){unsigned long DATARMNETf71ef1b8da;
DATARMNETf71ef1b8da=msecs_to_jiffies(DATARMNETe6309522cf);schedule_delayed_work(
&DATARMNETac6535da80.DATARMNET190b4452e8,DATARMNETf71ef1b8da);}
DATARMNET1c62a8e2c9++;return DATARMNET63b1a086d5;}static void
DATARMNET11a5f0fd38(struct DATARMNETddbc1e5435*DATARMNET63b1a086d5,struct
sk_buff*DATARMNET543491eb0f,bool DATARMNETd147c14c0e)__must_hold(RCU){struct
tcphdr*DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f);struct rmnet_skb_cb*
DATARMNET1ec4882bf7=RMNET_SKB_CB(DATARMNET543491eb0f);DATARMNET63b1a086d5->
DATARMNET9c389f3b86=DATARMNET543491eb0f->hash;if(DATARMNETd147c14c0e){u32
DATARMNET9076d335ab=ntohl(DATARMNET668416551c->ack_seq);WRITE_ONCE(
DATARMNET63b1a086d5->DATARMNET9076d335ab,DATARMNET9076d335ab);WRITE_ONCE(
DATARMNET63b1a086d5->DATARMNETfef3675ce7,DATARMNET9076d335ab);}else{u32
DATARMNETfef3675ce7=ntohl(DATARMNET668416551c->seq);WRITE_ONCE(
DATARMNET63b1a086d5->DATARMNETfef3675ce7,DATARMNETfef3675ce7);WRITE_ONCE(
DATARMNET63b1a086d5->DATARMNET9076d335ab,DATARMNETfef3675ce7-(0xd26+209-0xdf6));
DATARMNET1ec4882bf7->bif=(0xd2d+202-0xdf7);DATARMNET1ec4882bf7->ack_thresh=
READ_ONCE(DATARMNET63b1a086d5->DATARMNET9a57846b4e);}}static struct
DATARMNETddbc1e5435*DATARMNET9f0aaf07cc(struct DATARMNET4b40fe9cd4*
DATARMNET3396919a68,struct sk_buff*DATARMNET543491eb0f,bool DATARMNETd147c14c0e)
__must_hold(RCU){struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;unsigned long
DATARMNETfb0677cc3c;spin_lock_irqsave(&DATARMNET8e3721c47d,DATARMNETfb0677cc3c);
hash_for_each_possible_rcu(DATARMNET1fd012f255,DATARMNET63b1a086d5,hash,
DATARMNET3396919a68->DATARMNET556bcfcf8f){if(DATARMNET63b1a086d5->
DATARMNET1717afebc7)continue;if(DATARMNET2f1039220d(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,DATARMNET3396919a68)){spin_unlock_irqrestore(&
DATARMNET8e3721c47d,DATARMNETfb0677cc3c);return DATARMNET63b1a086d5;}}
DATARMNET63b1a086d5=DATARMNETba919c78e5(DATARMNET3396919a68);
spin_unlock_irqrestore(&DATARMNET8e3721c47d,DATARMNETfb0677cc3c);if(
DATARMNET63b1a086d5)DATARMNET11a5f0fd38(DATARMNET63b1a086d5,DATARMNET543491eb0f,
DATARMNETd147c14c0e);return DATARMNET63b1a086d5;}static struct sock*
DATARMNETc0b5d624ae(struct DATARMNET4b40fe9cd4*DATARMNET3396919a68,struct
net_device*DATARMNETc96400be1e){struct net*net=dev_net(DATARMNETc96400be1e);if(
DATARMNET3396919a68->DATARMNET0d956cc77a==(0xd11+230-0xdf3))return
inet_lookup_established(net,&tcp_hashinfo,DATARMNET3396919a68->
DATARMNETdfe430c2d6,DATARMNET3396919a68->DATARMNET08e913477e,DATARMNET3396919a68
->DATARMNET2cb607d686,DATARMNET3396919a68->DATARMNETda7f7fa492,
DATARMNETc96400be1e->ifindex);return __inet6_lookup_established(net,&
tcp_hashinfo,&DATARMNET3396919a68->DATARMNET815cbb4bf5,DATARMNET3396919a68->
DATARMNET08e913477e,&DATARMNET3396919a68->DATARMNETc3f31215b7,ntohs(
DATARMNET3396919a68->DATARMNETda7f7fa492),DATARMNETc96400be1e->ifindex,
(0xd2d+202-0xdf7));}static void DATARMNET31a7673e56(struct DATARMNETddbc1e5435*
DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f)__must_hold(RCU){struct
sock*sk;if(DATARMNET543491eb0f->sk){sk=DATARMNET543491eb0f->sk;if(sk_fullsock(sk
)){if(sk->sk_state==TCP_ESTABLISHED&&!sock_flag(sk,SOCK_DEAD)&&!sk_unhashed(sk)
&&sk->sk_shutdown!=SHUTDOWN_MASK){inet_csk(sk)->icsk_ack.pending|=ICSK_ACK_NOW;
DATARMNET63b1a086d5->DATARMNETb8fc35ed64++;DATARMNET32b91c8ae6(
DATARMNET74f0a28fec);}}return;}sk=DATARMNETc0b5d624ae(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,DATARMNET543491eb0f->dev);if(!sk){struct rmnet_skb_cb*
DATARMNET1ec4882bf7=RMNET_SKB_CB(DATARMNET543491eb0f);DATARMNET32b91c8ae6(
DATARMNETb03f9571a3);DATARMNET63b1a086d5->DATARMNET55056146f6=true;
DATARMNET1ec4882bf7->tethered=true;return;}if(sk_fullsock(sk)){bh_lock_sock(sk);
if(sk->sk_state==TCP_ESTABLISHED&&!sock_flag(sk,SOCK_DEAD)&&!sk_unhashed(sk)&&sk
->sk_shutdown!=SHUTDOWN_MASK){inet_csk(sk)->icsk_ack.pending|=ICSK_ACK_NOW;
inet_csk_schedule_ack(sk);DATARMNET63b1a086d5->DATARMNETb8fc35ed64++;
DATARMNET32b91c8ae6(DATARMNET53c8cfb28e);}bh_unlock_sock(sk);}sock_gen_put(sk);}
static u32 DATARMNET62fb576113(struct sk_buff*DATARMNET543491eb0f){struct tcphdr
*DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f);return DATARMNET543491eb0f->
len-((u8*)DATARMNET668416551c-DATARMNET543491eb0f->data)-DATARMNET668416551c->
doff*(0xd11+230-0xdf3);}static void DATARMNET55fda9e01e(struct
DATARMNETddbc1e5435*DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f,bool
DATARMNETd147c14c0e)__must_hold(RCU){struct tcphdr*DATARMNET668416551c=tcp_hdr(
DATARMNET543491eb0f);u32 DATARMNET26945497d8=ntohl(DATARMNET668416551c->seq);u32
DATARMNETb1b0ee1b2d=ntohl(DATARMNET668416551c->ack_seq);u32 DATARMNETb6ff6d25f8
=READ_ONCE(DATARMNET63b1a086d5->DATARMNETfef3675ce7);u32 DATARMNET91c1d5c029=
READ_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab);u32 DATARMNET9445bc443c=
READ_ONCE(DATARMNET63b1a086d5->DATARMNET9a57846b4e);DATARMNET63b1a086d5->
DATARMNET763f2e5fac=jiffies;if(DATARMNET63b1a086d5->DATARMNET55056146f6)return;
if(DATARMNETd147c14c0e){if(after(DATARMNETb1b0ee1b2d,DATARMNET91c1d5c029)){u32
DATARMNET4e557c82d6=(0xd2d+202-0xdf7);if(DATARMNETb1b0ee1b2d>DATARMNETb6ff6d25f8
)DATARMNET4e557c82d6=DATARMNETb1b0ee1b2d-DATARMNETb6ff6d25f8;if(
DATARMNET4e557c82d6>DATARMNET9445bc443c)DATARMNET31a7673e56(DATARMNET63b1a086d5,
DATARMNET543491eb0f);WRITE_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab,
DATARMNETb1b0ee1b2d);}}else{u32 DATARMNET4e557c82d6;if(after(DATARMNET26945497d8
,DATARMNETb6ff6d25f8)){DATARMNET4e557c82d6=DATARMNET26945497d8-
DATARMNET91c1d5c029;DATARMNET4e557c82d6+=DATARMNET62fb576113(DATARMNET543491eb0f
);if(DATARMNET4e557c82d6>DATARMNET9445bc443c)DATARMNET31a7673e56(
DATARMNET63b1a086d5,DATARMNET543491eb0f);WRITE_ONCE(DATARMNET63b1a086d5->
DATARMNETfef3675ce7,DATARMNET26945497d8);}}}static bool DATARMNET6670717310(
struct sk_buff*DATARMNET543491eb0f,struct DATARMNET4b40fe9cd4*
DATARMNET3396919a68){struct tcphdr*DATARMNET668416551c;u32 DATARMNETd660a1a629;
if(!skb_transport_header_was_set(DATARMNET543491eb0f)||DATARMNET543491eb0f->
ip_summed==CHECKSUM_NONE)return false;DATARMNET668416551c=tcp_hdr(
DATARMNET543491eb0f);if(DATARMNET668416551c->syn)return false;
DATARMNETd660a1a629=DATARMNET62fb576113(DATARMNET543491eb0f);if(!
DATARMNETd660a1a629&&DATARMNET668416551c->ack)return false;DATARMNET3396919a68->
DATARMNET08e913477e=DATARMNET668416551c->source;DATARMNET3396919a68->
DATARMNETda7f7fa492=DATARMNET668416551c->dest;if(DATARMNET543491eb0f->protocol==
htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9=ip_hdr(DATARMNET543491eb0f);
DATARMNET3396919a68->DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9->saddr;
DATARMNET3396919a68->DATARMNET2cb607d686=DATARMNET86f1f2cdc9->daddr;
DATARMNET3396919a68->DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else{struct ipv6hdr*
DATARMNETbf55123e5b=ipv6_hdr(DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68->
DATARMNET815cbb4bf5,&DATARMNETbf55123e5b->saddr,sizeof(DATARMNETbf55123e5b->
saddr));memcpy(&DATARMNET3396919a68->DATARMNETc3f31215b7,&DATARMNETbf55123e5b->
daddr,sizeof(DATARMNETbf55123e5b->daddr));DATARMNET3396919a68->
DATARMNET0d956cc77a=(0xd03+244-0xdf1);}return true;}void DATARMNET9250714999(
struct sk_buff*DATARMNET543491eb0f){struct rmnet_skb_cb*DATARMNET1ec4882bf7=
RMNET_SKB_CB(DATARMNET543491eb0f);struct DATARMNET4b40fe9cd4 DATARMNET3396919a68
={};struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;if(!DATARMNET6670717310(
DATARMNET543491eb0f,&DATARMNET3396919a68))return;rcu_read_lock();
DATARMNET63b1a086d5=DATARMNET9f0aaf07cc(&DATARMNET3396919a68,DATARMNET543491eb0f
,false);if(!DATARMNET63b1a086d5)goto DATARMNETbf4095f79e;if(unlikely(
DATARMNETd92eab34a9(DATARMNET63b1a086d5,jiffies)))goto DATARMNETbf4095f79e;if(
DATARMNET63b1a086d5->DATARMNET55056146f6){DATARMNET1ec4882bf7->tethered=true;}
else{u32 DATARMNET4e557c82d6=READ_ONCE(DATARMNET63b1a086d5->DATARMNETfef3675ce7)
-READ_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab);DATARMNET1ec4882bf7->bif=
DATARMNET4e557c82d6;DATARMNET1ec4882bf7->ack_thresh=READ_ONCE(
DATARMNET63b1a086d5->DATARMNET9a57846b4e);DATARMNET1ec4882bf7->ack_forced=
DATARMNET63b1a086d5->DATARMNETb8fc35ed64;}DATARMNETbf4095f79e:rcu_read_unlock();
}void DATARMNETd8fdde8978(struct sk_buff*DATARMNET543491eb0f){struct
DATARMNET4b40fe9cd4 DATARMNET3396919a68={};struct DATARMNETddbc1e5435*
DATARMNET63b1a086d5;if(!DATARMNET6670717310(DATARMNET543491eb0f,&
DATARMNET3396919a68))return;rcu_read_lock();DATARMNET63b1a086d5=
DATARMNET9f0aaf07cc(&DATARMNET3396919a68,DATARMNET543491eb0f,false);if(
DATARMNET63b1a086d5){if(likely(!DATARMNETd92eab34a9(DATARMNET63b1a086d5,jiffies)
))DATARMNET55fda9e01e(DATARMNET63b1a086d5,DATARMNET543491eb0f,false);}
rcu_read_unlock();}void DATARMNET9d574e64b1(struct sk_buff*DATARMNET543491eb0f){
struct DATARMNET4b40fe9cd4 DATARMNET3396919a68={};struct DATARMNETddbc1e5435*
DATARMNET63b1a086d5;struct tcphdr*DATARMNET668416551c;u32 DATARMNETd660a1a629;if
(!skb_transport_header_was_set(DATARMNET543491eb0f))return;DATARMNET668416551c=
tcp_hdr(DATARMNET543491eb0f);if(DATARMNET668416551c->syn)return;
DATARMNETd660a1a629=DATARMNET62fb576113(DATARMNET543491eb0f);if(
DATARMNETd660a1a629||!DATARMNET668416551c->ack)return;DATARMNET3396919a68.
DATARMNET08e913477e=DATARMNET668416551c->dest;DATARMNET3396919a68.
DATARMNETda7f7fa492=DATARMNET668416551c->source;if(DATARMNET543491eb0f->protocol
==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9=ip_hdr(DATARMNET543491eb0f);
DATARMNET3396919a68.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9->daddr;
DATARMNET3396919a68.DATARMNET2cb607d686=DATARMNET86f1f2cdc9->saddr;
DATARMNET3396919a68.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else{struct ipv6hdr*
DATARMNETbf55123e5b=ipv6_hdr(DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68.
DATARMNET815cbb4bf5,&DATARMNETbf55123e5b->daddr,sizeof(DATARMNETbf55123e5b->
daddr));memcpy(&DATARMNET3396919a68.DATARMNETc3f31215b7,&DATARMNETbf55123e5b->
saddr,sizeof(DATARMNETbf55123e5b->saddr));DATARMNET3396919a68.
DATARMNET0d956cc77a=(0xd03+244-0xdf1);}rcu_read_lock();DATARMNET63b1a086d5=
DATARMNET9f0aaf07cc(&DATARMNET3396919a68,DATARMNET543491eb0f,true);if(
DATARMNET63b1a086d5){if(likely(!DATARMNETd92eab34a9(DATARMNET63b1a086d5,jiffies)
))DATARMNET55fda9e01e(DATARMNET63b1a086d5,DATARMNET543491eb0f,true);}
rcu_read_unlock();}void DATARMNET7fa1835595(u32 DATARMNET556bcfcf8f,u32
DATARMNET9445bc443c){struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;int
DATARMNET5c2fd31d7b;if(DATARMNET556bcfcf8f==(0xd2d+202-0xdf7)){if(
DATARMNET9445bc443c==(0xd2d+202-0xdf7)){DATARMNETc03b668e4c=false;}else if(
DATARMNET9445bc443c==(0xd26+209-0xdf6)){DATARMNETc03b668e4c=true;}return;}
rcu_read_lock();hash_for_each_rcu(DATARMNET1fd012f255,DATARMNET5c2fd31d7b,
DATARMNET63b1a086d5,hash){if(DATARMNET63b1a086d5->DATARMNET9c389f3b86==
DATARMNET556bcfcf8f)WRITE_ONCE(DATARMNET63b1a086d5->DATARMNET9a57846b4e,
DATARMNET9445bc443c);}rcu_read_unlock();}int DATARMNET7e9995246e(void){
INIT_DELAYED_WORK(&DATARMNETac6535da80.DATARMNET190b4452e8,DATARMNETfec9085d8e);
return(0xd2d+202-0xdf7);}void DATARMNET38bb6f2b7a(void){cancel_delayed_work_sync
(&DATARMNETac6535da80.DATARMNET190b4452e8);DATARMNETac6535da80.
DATARMNETcd94e0d3c7=true;schedule_delayed_work(&DATARMNETac6535da80.
DATARMNET190b4452e8,(0xd2d+202-0xdf7));cancel_delayed_work_sync(&
DATARMNETac6535da80.DATARMNET190b4452e8);}

View File

@ -0,0 +1,17 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET PERF TCP framework
*
*/
#ifndef DATARMNET3a73abbc73
#define DATARMNET3a73abbc73
#include <linux/skbuff.h>
extern bool DATARMNETc03b668e4c;void DATARMNET9250714999(struct sk_buff*
DATARMNET543491eb0f);void DATARMNETd8fdde8978(struct sk_buff*DATARMNET543491eb0f
);void DATARMNET9d574e64b1(struct sk_buff*DATARMNET543491eb0f);void
DATARMNET7fa1835595(u32 hash,u32 DATARMNET9445bc443c);int DATARMNET7e9995246e(
void);void DATARMNET38bb6f2b7a(void);
#endif

View File

@ -0,0 +1,176 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2023,Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET PERF UDP framework
*
*/
#include <linux/types.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/skbuff.h>
#include <linux/spinlock.h>
#include <linux/rcupdate.h>
#include <linux/hashtable.h>
#include <linux/log2.h>
#include <linux/workqueue.h>
#include <linux/refcount.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include <net/udp.h>
#include <net/sock.h>
#include "rmnet_private.h"
#include "rmnet_perf_udp.h"
#define DATARMNET15dbec5cc0 ((0x16a8+1565-0x14f5))
#define DATARMNET1b69f5599a ((0xdf7+6169-0x241c))
#define DATARMNETe19b881e3e ((0xeb7+1158-0x132d))
#define DATARMNET98862aed95 \
(const_ilog2(DATARMNETe19b881e3e))
enum{DATARMNETcffce1f6da,DATARMNET1d79c7ae4b,DATARMNETf1cd747d89,
DATARMNETf5e31b47ad,DATARMNETbaf32ca0ac,};struct DATARMNETee0c11924c{union{
__be32 DATARMNETdfe430c2d6;struct in6_addr DATARMNET815cbb4bf5;};union{__be32
DATARMNET2cb607d686;struct in6_addr DATARMNETc3f31215b7;};union{struct{__be16
DATARMNET08e913477e;__be16 DATARMNETda7f7fa492;};u32 DATARMNET556bcfcf8f;};u8
DATARMNET0d956cc77a;};struct DATARMNETac2887e8c4{struct hlist_node hash;struct
rcu_head DATARMNET28bfe9e6ad;struct DATARMNETee0c11924c DATARMNET54338da2ff;
struct sock*DATARMNETa3e9a18f1b;unsigned long DATARMNET763f2e5fac;u8
DATARMNET1717afebc7;};struct DATARMNET451f84b309{struct delayed_work
DATARMNET190b4452e8;bool DATARMNETcd94e0d3c7;};static DEFINE_SPINLOCK(
DATARMNETa125272ee8);static DEFINE_HASHTABLE(DATARMNET187c01aba9,
DATARMNET98862aed95);static u32 DATARMNETe0c4a54a69;static struct
DATARMNET451f84b309 DATARMNET3ed0b852e9;static u64 DATARMNETf41987fea1[
DATARMNETbaf32ca0ac];module_param_array_named(rmnet_perf_udp_stat,
DATARMNETf41987fea1,ullong,NULL,(0xcb7+5769-0x221c));static void
DATARMNET19b3edd6de(u32 DATARMNET248f120dd5){if(DATARMNET248f120dd5<
DATARMNETbaf32ca0ac)DATARMNETf41987fea1[DATARMNET248f120dd5]+=(0xd26+209-0xdf6);
}static bool DATARMNETa8d347a4e6(struct DATARMNETac2887e8c4*DATARMNET63b1a086d5,
unsigned long DATARMNET763f2e5fac){unsigned long DATARMNETc2d5c71ce1;
DATARMNETc2d5c71ce1=msecs_to_jiffies(DATARMNET15dbec5cc0);if(DATARMNET763f2e5fac
-DATARMNET63b1a086d5->DATARMNET763f2e5fac>DATARMNETc2d5c71ce1)return true;return
false;}static void DATARMNETfcb3ce7715(struct rcu_head*DATARMNET5d432e897f){
struct DATARMNETac2887e8c4*DATARMNET63b1a086d5;DATARMNET63b1a086d5=container_of(
DATARMNET5d432e897f,struct DATARMNETac2887e8c4,DATARMNET28bfe9e6ad);if(!
IS_ERR_OR_NULL(DATARMNET63b1a086d5->DATARMNETa3e9a18f1b))sock_put(
DATARMNET63b1a086d5->DATARMNETa3e9a18f1b);kfree(DATARMNET63b1a086d5);}static
bool DATARMNET18d263f0ec(bool DATARMNETe78ad140cc){struct DATARMNETac2887e8c4*
DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;unsigned long
DATARMNET763f2e5fac;int DATARMNET5c2fd31d7b;DATARMNET763f2e5fac=jiffies;
hash_for_each_safe(DATARMNET187c01aba9,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,
DATARMNET63b1a086d5,hash){if(DATARMNET63b1a086d5->DATARMNET1717afebc7)continue;
if(DATARMNETe78ad140cc||DATARMNETa8d347a4e6(DATARMNET63b1a086d5,
DATARMNET763f2e5fac)){DATARMNET63b1a086d5->DATARMNET1717afebc7=(0xd26+209-0xdf6)
;hash_del_rcu(&DATARMNET63b1a086d5->hash);call_rcu(&DATARMNET63b1a086d5->
DATARMNET28bfe9e6ad,DATARMNETfcb3ce7715);DATARMNET19b3edd6de(DATARMNETf1cd747d89
);DATARMNETe0c4a54a69--;}}return!!DATARMNETe0c4a54a69;}static void
DATARMNET47ed281d61(struct work_struct*DATARMNET190b4452e8){struct
DATARMNET451f84b309*DATARMNET3a3a7762bb;unsigned long DATARMNETfb0677cc3c;bool
DATARMNET6e1c466378;DATARMNET3a3a7762bb=container_of(to_delayed_work(
DATARMNET190b4452e8),struct DATARMNET451f84b309,DATARMNET190b4452e8);
spin_lock_irqsave(&DATARMNETa125272ee8,DATARMNETfb0677cc3c);DATARMNET6e1c466378=
DATARMNET18d263f0ec(DATARMNET3a3a7762bb->DATARMNETcd94e0d3c7);if(
DATARMNET6e1c466378){unsigned long DATARMNETf71ef1b8da;DATARMNETf71ef1b8da=
msecs_to_jiffies(DATARMNET1b69f5599a);schedule_delayed_work(&DATARMNET3a3a7762bb
->DATARMNET190b4452e8,DATARMNETf71ef1b8da);}spin_unlock_irqrestore(&
DATARMNETa125272ee8,DATARMNETfb0677cc3c);}static bool DATARMNET47899a016a(struct
DATARMNETee0c11924c*DATARMNETae0905b0b3,struct DATARMNETee0c11924c*
DATARMNETdb49f21565){if(DATARMNETae0905b0b3->DATARMNET0d956cc77a!=
DATARMNETdb49f21565->DATARMNET0d956cc77a||DATARMNETae0905b0b3->
DATARMNET08e913477e!=DATARMNETdb49f21565->DATARMNET08e913477e||
DATARMNETae0905b0b3->DATARMNETda7f7fa492!=DATARMNETdb49f21565->
DATARMNETda7f7fa492)return false;if(DATARMNETae0905b0b3->DATARMNET0d956cc77a==
(0xd11+230-0xdf3))return DATARMNETae0905b0b3->DATARMNETdfe430c2d6==
DATARMNETdb49f21565->DATARMNETdfe430c2d6&&DATARMNETae0905b0b3->
DATARMNET2cb607d686==DATARMNETdb49f21565->DATARMNET2cb607d686;return!
ipv6_addr_cmp(&DATARMNETae0905b0b3->DATARMNET815cbb4bf5,&DATARMNETdb49f21565->
DATARMNET815cbb4bf5)&&!ipv6_addr_cmp(&DATARMNETae0905b0b3->DATARMNETc3f31215b7,&
DATARMNETdb49f21565->DATARMNETc3f31215b7);}static struct DATARMNETac2887e8c4*
DATARMNET7b1084dc09(struct DATARMNETee0c11924c*DATARMNET3396919a68)__must_hold(&
DATARMNETa125272ee8){struct DATARMNETac2887e8c4*DATARMNET63b1a086d5;
DATARMNET63b1a086d5=kzalloc(sizeof(*DATARMNET63b1a086d5),GFP_ATOMIC);if(!
DATARMNET63b1a086d5){DATARMNET19b3edd6de(DATARMNET1d79c7ae4b);return NULL;}
INIT_HLIST_NODE(&DATARMNET63b1a086d5->hash);memcpy(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));
DATARMNET63b1a086d5->DATARMNET763f2e5fac=jiffies;hash_add_rcu(
DATARMNET187c01aba9,&DATARMNET63b1a086d5->hash,DATARMNET3396919a68->
DATARMNET556bcfcf8f);DATARMNET19b3edd6de(DATARMNETcffce1f6da);if(!
DATARMNETe0c4a54a69){unsigned long DATARMNETf71ef1b8da;DATARMNETf71ef1b8da=
msecs_to_jiffies(DATARMNET1b69f5599a);schedule_delayed_work(&DATARMNET3ed0b852e9
.DATARMNET190b4452e8,DATARMNETf71ef1b8da);}DATARMNETe0c4a54a69++;return
DATARMNET63b1a086d5;}static struct DATARMNETac2887e8c4*DATARMNET270a2369fc(
struct DATARMNETee0c11924c*DATARMNET3396919a68)__must_hold(RCU){struct
DATARMNETac2887e8c4*DATARMNET63b1a086d5;unsigned long DATARMNETfb0677cc3c;
spin_lock_irqsave(&DATARMNETa125272ee8,DATARMNETfb0677cc3c);
hash_for_each_possible_rcu(DATARMNET187c01aba9,DATARMNET63b1a086d5,hash,
DATARMNET3396919a68->DATARMNET556bcfcf8f){if(DATARMNET63b1a086d5->
DATARMNET1717afebc7)continue;if(DATARMNET47899a016a(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,DATARMNET3396919a68))goto DATARMNETbf4095f79e;}
DATARMNET63b1a086d5=DATARMNET7b1084dc09(DATARMNET3396919a68);DATARMNETbf4095f79e
:spin_unlock_irqrestore(&DATARMNETa125272ee8,DATARMNETfb0677cc3c);return
DATARMNET63b1a086d5;}static struct sock*DATARMNETa9a99daddb(struct
DATARMNETee0c11924c*DATARMNET3396919a68,struct sk_buff*DATARMNET543491eb0f){
struct sock*DATARMNET370b0f4269;if(DATARMNET3396919a68->DATARMNET0d956cc77a==
(0xd11+230-0xdf3))DATARMNET370b0f4269=__udp4_lib_lookup(dev_net(
DATARMNET543491eb0f->dev),DATARMNET3396919a68->DATARMNETdfe430c2d6,
DATARMNET3396919a68->DATARMNET08e913477e,DATARMNET3396919a68->
DATARMNET2cb607d686,DATARMNET3396919a68->DATARMNETda7f7fa492,inet_iif(
DATARMNET543491eb0f),(0xd2d+202-0xdf7),&udp_table,NULL);else DATARMNET370b0f4269
=__udp6_lib_lookup(dev_net(DATARMNET543491eb0f->dev),&DATARMNET3396919a68->
DATARMNET815cbb4bf5,DATARMNET3396919a68->DATARMNET08e913477e,&
DATARMNET3396919a68->DATARMNETc3f31215b7,DATARMNET3396919a68->
DATARMNETda7f7fa492,inet6_iif(DATARMNET543491eb0f),(0xd2d+202-0xdf7),&udp_table,
NULL);if(DATARMNET370b0f4269&&!refcount_inc_not_zero(&DATARMNET370b0f4269->
sk_refcnt))DATARMNET370b0f4269=NULL;return DATARMNET370b0f4269;}static void
DATARMNET991df48508(struct DATARMNETac2887e8c4*DATARMNET63b1a086d5,struct
sk_buff*DATARMNET543491eb0f)__must_hold(RCU){struct rmnet_skb_cb*
DATARMNET1ec4882bf7=RMNET_SKB_CB(DATARMNET543491eb0f);DATARMNET63b1a086d5->
DATARMNET763f2e5fac=jiffies;if(IS_ERR(DATARMNET63b1a086d5->DATARMNETa3e9a18f1b))
{DATARMNET1ec4882bf7->tethered=true;return;}if(!DATARMNET63b1a086d5->
DATARMNETa3e9a18f1b){DATARMNET63b1a086d5->DATARMNETa3e9a18f1b=
DATARMNETa9a99daddb(&DATARMNET63b1a086d5->DATARMNET54338da2ff,
DATARMNET543491eb0f);if(!DATARMNET63b1a086d5->DATARMNETa3e9a18f1b){
DATARMNET19b3edd6de(DATARMNETf5e31b47ad);DATARMNET63b1a086d5->
DATARMNETa3e9a18f1b=ERR_PTR(-EINVAL);DATARMNET1ec4882bf7->tethered=true;return;}
}}void DATARMNET2a6d02a6a5(struct sk_buff*DATARMNET543491eb0f){struct
DATARMNETee0c11924c DATARMNET3396919a68={};struct DATARMNETac2887e8c4*
DATARMNET63b1a086d5;struct udphdr*DATARMNETa1abb4897c;if(!
skb_transport_header_was_set(DATARMNET543491eb0f)||DATARMNET543491eb0f->
ip_summed==CHECKSUM_NONE)return;DATARMNETa1abb4897c=udp_hdr(DATARMNET543491eb0f)
;DATARMNET3396919a68.DATARMNET08e913477e=DATARMNETa1abb4897c->source;
DATARMNET3396919a68.DATARMNETda7f7fa492=DATARMNETa1abb4897c->dest;if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9
=ip_hdr(DATARMNET543491eb0f);DATARMNET3396919a68.DATARMNETdfe430c2d6=
DATARMNET86f1f2cdc9->saddr;DATARMNET3396919a68.DATARMNET2cb607d686=
DATARMNET86f1f2cdc9->daddr;DATARMNET3396919a68.DATARMNET0d956cc77a=
(0xd11+230-0xdf3);}else{struct ipv6hdr*DATARMNETbf55123e5b=ipv6_hdr(
DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68.DATARMNET815cbb4bf5,&
DATARMNETbf55123e5b->saddr,sizeof(DATARMNETbf55123e5b->saddr));memcpy(&
DATARMNET3396919a68.DATARMNETc3f31215b7,&DATARMNETbf55123e5b->daddr,sizeof(
DATARMNETbf55123e5b->daddr));DATARMNET3396919a68.DATARMNET0d956cc77a=
(0xd03+244-0xdf1);}rcu_read_lock();DATARMNET63b1a086d5=DATARMNET270a2369fc(&
DATARMNET3396919a68);if(DATARMNET63b1a086d5){if(likely(!DATARMNETa8d347a4e6(
DATARMNET63b1a086d5,jiffies)))DATARMNET991df48508(DATARMNET63b1a086d5,
DATARMNET543491eb0f);}rcu_read_unlock();}void DATARMNET5ecc30669c(struct sk_buff
*DATARMNET543491eb0f){struct DATARMNETee0c11924c DATARMNET3396919a68={};struct
DATARMNETac2887e8c4*DATARMNET63b1a086d5;struct udphdr*DATARMNETa1abb4897c;if(!
skb_transport_header_was_set(DATARMNET543491eb0f))return;DATARMNETa1abb4897c=
udp_hdr(DATARMNET543491eb0f);DATARMNET3396919a68.DATARMNET08e913477e=
DATARMNETa1abb4897c->dest;DATARMNET3396919a68.DATARMNETda7f7fa492=
DATARMNETa1abb4897c->source;if(DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){
struct iphdr*DATARMNET86f1f2cdc9=ip_hdr(DATARMNET543491eb0f);DATARMNET3396919a68
.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9->daddr;DATARMNET3396919a68.
DATARMNET2cb607d686=DATARMNET86f1f2cdc9->saddr;DATARMNET3396919a68.
DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else{struct ipv6hdr*DATARMNETbf55123e5b=
ipv6_hdr(DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68.DATARMNET815cbb4bf5,&
DATARMNETbf55123e5b->daddr,sizeof(DATARMNETbf55123e5b->daddr));memcpy(&
DATARMNET3396919a68.DATARMNETc3f31215b7,&DATARMNETbf55123e5b->saddr,sizeof(
DATARMNETbf55123e5b->saddr));DATARMNET3396919a68.DATARMNET0d956cc77a=
(0xd03+244-0xdf1);}rcu_read_lock();DATARMNET63b1a086d5=DATARMNET270a2369fc(&
DATARMNET3396919a68);if(DATARMNET63b1a086d5){if(likely(!DATARMNETa8d347a4e6(
DATARMNET63b1a086d5,jiffies)))DATARMNET991df48508(DATARMNET63b1a086d5,
DATARMNET543491eb0f);}rcu_read_unlock();}int DATARMNETe80a33d544(void){
INIT_DELAYED_WORK(&DATARMNET3ed0b852e9.DATARMNET190b4452e8,DATARMNET47ed281d61);
return(0xd2d+202-0xdf7);}void DATARMNET4b5170a1ef(void){cancel_delayed_work_sync
(&DATARMNET3ed0b852e9.DATARMNET190b4452e8);DATARMNET3ed0b852e9.
DATARMNETcd94e0d3c7=true;schedule_delayed_work(&DATARMNET3ed0b852e9.
DATARMNET190b4452e8,(0xd2d+202-0xdf7));cancel_delayed_work_sync(&
DATARMNET3ed0b852e9.DATARMNET190b4452e8);}

View File

@ -0,0 +1,15 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET PERF UDP framework
*
*/
#ifndef DATARMNET7d5af408af
#define DATARMNET7d5af408af
#include <linux/skbuff.h>
void DATARMNET2a6d02a6a5(struct sk_buff*DATARMNET543491eb0f);void
DATARMNET5ecc30669c(struct sk_buff*DATARMNET543491eb0f);int DATARMNETe80a33d544(
void);void DATARMNET4b5170a1ef(void);
#endif

View File

@ -0,0 +1,46 @@
ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST := pineapple
RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += blair
RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += pitti
RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += volcano
ifeq ($(call is-board-platform-in-list, $(RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#Enabling BAZEL
LOCAL_MODULE_DDK_BUILD := true
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
endif #End of Check for datarmnet

View File

@ -0,0 +1,18 @@
load(":define_perf_tether.bzl", "define_perf_tether")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
define_perf_tether("pineapple", "consolidate")
define_perf_tether("pineapple", "gki")
define_perf_tether("blair", "consolidate")
define_perf_tether("blair", "gki")
define_perf_tether("pitti", "consolidate")
define_perf_tether("pitti", "gki")
define_perf_tether("volcano", "consolidate")
define_perf_tether("volcano", "gki")

View File

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

View File

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

View File

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

View File

@ -0,0 +1,33 @@
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
def define_perf_tether(target, variant):
kernel_build_variant = "{}_{}".format(target, variant)
include_base = "../../../{}".format(native.package_name())
ddk_module(
name = "{}_perf_tether".format(kernel_build_variant),
out = "rmnet_perf_tether.ko",
srcs = [
"rmnet_perf_tether_main.c",
],
kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
deps = [
"//msm-kernel:all_headers",
"//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
"//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
],
copts = ["-Wno-misleading-indentation"],
)
copy_to_dist_dir(
name = "{}_datarment-ext_dist".format(kernel_build_variant),
data = [
":{}_perf_tether".format(kernel_build_variant),
],
dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
flat = True,
wipe_dist_dir = False,
allow_duplicate_filenames = False,
mode_overrides = {"**/*": "644"},
)

View File

@ -0,0 +1,243 @@
// 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 <linux/module.h>
#include <net/tcp.h>
#include "rmnet_descriptor.h"
#include "rmnet_map.h"
#include "rmnet_qmap.h"
#include "rmnet_module.h"
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={
"\x65\x32\x31\x38\x66\x34\x35\x31","\x36\x34\x38\x62\x37\x30\x39\x35",
"\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);rmnet_qmap_send(DATARMNET543491eb0f,RMNET_CH_CTL,false);}
DATARMNETaabe3a05f8:dev_put(dev);}static const struct
rmnet_module_hook_register_info DATARMNET0762b4f121[]={{.hooknum=
RMNET_MODULE_HOOK_PERF_TETHER_INGRESS,.func=DATARMNETe70d5ec61a,},{.hooknum=
RMNET_MODULE_HOOK_PERF_TETHER_EGRESS,.func=DATARMNET6ab362e985,},{.hooknum=
RMNET_MODULE_HOOK_PERF_TETHER_CMD,.func=DATARMNET136e008d70,},};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);rmnet_module_hook_register(DATARMNET0762b4f121,ARRAY_SIZE(
DATARMNET0762b4f121));}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);rmnet_module_hook_unregister(
DATARMNET0762b4f121,ARRAY_SIZE(DATARMNET0762b4f121));}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);

View File

@ -0,0 +1,28 @@
ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_SCH_DLKM_PLATFORMS_LIST := pineapple
RMNET_SCH_DLKM_PLATFORMS_LIST += pitti
RMNET_SCH_DLKM_PLATFORMS_LIST += volcano
ifeq ($(call is-board-platform-in-list, $(RMNET_SCH_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#Enabling BAZEL
LOCAL_MODULE_DDK_BUILD := true
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
endif #End of Check for datarmnet

View File

@ -0,0 +1,14 @@
load(":define_sch.bzl", "define_sch")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
define_sch("pineapple", "consolidate")
define_sch("pineapple", "gki")
define_sch("pitti", "consolidate")
define_sch("pitti", "gki")
define_sch("volcano", "consolidate")
define_sch("volcano", "gki")

View File

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

View File

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

View File

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

View File

@ -0,0 +1,29 @@
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
def define_sch(target, variant):
kernel_build_variant = "{}_{}".format(target, variant)
include_base = "../../../{}".format(native.package_name())
ddk_module(
name = "{}_sch".format(kernel_build_variant),
out = "rmnet_sch.ko",
srcs = [
"rmnet_sch_main.c",
],
deps = ["//msm-kernel:all_headers"],
copts = ["-Wno-misleading-indentation"],
kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
)
copy_to_dist_dir(
name = "{}_datarment-ext_dist".format(kernel_build_variant),
data = [
":{}_sch".format(kernel_build_variant),
],
dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
flat = True,
wipe_dist_dir = False,
allow_duplicate_filenames = False,
mode_overrides = {"**/*": "644"},
)

View File

@ -0,0 +1,151 @@
/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/skbuff.h>
#include <linux/rtnetlink.h>
#include <net/pkt_sched.h>
static char*verinfo[]={"\x62\x31\x30\x66\x32\x65\x61\x32",
"\x65\x36\x33\x37\x31\x64\x34\x30","\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\x32";
#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)};static const int DATARMNET14ed95ab67[
DATARMNETe632b2e0b0]={(0xd11+230-0xdf3),(0xd18+223-0xdf4),(0xd1f+216-0xdf5),
(0xd26+209-0xdf6)};struct DATARMNET93da852cc2{struct qdisc_skb_head q;int
DATARMNET1de7b3d891;int DATARMNETf9afebb887;unsigned int DATARMNETb93c9b44d9;
unsigned int DATARMNET04fa439380;};struct DATARMNET74e95d25df{struct
DATARMNET93da852cc2 DATARMNETb4180393e4[DATARMNETe632b2e0b0];};static int
DATARMNETdaae0b9ea8(struct DATARMNET74e95d25df*DATARMNETe823dcf978){int
DATARMNET70fa801d65=DATARMNETe632b2e0b0;int DATARMNET3c5d4329d8=
DATARMNETe632b2e0b0;int DATARMNET2372d14a3d,DATARMNET713b43476b,
DATARMNETdc41089b89=-(0xd26+209-0xdf6);for(DATARMNET2372d14a3d=(0xd2d+202-0xdf7)
;DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++){if(
DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen>
DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
DATARMNET04fa439380){DATARMNET713b43476b=DATARMNETe823dcf978->
DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen-DATARMNETe823dcf978->
DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNET04fa439380;if(
DATARMNET713b43476b>=DATARMNETdc41089b89){DATARMNETdc41089b89=
DATARMNET713b43476b;DATARMNET70fa801d65=DATARMNET2372d14a3d;}}if(
DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen>
DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
DATARMNETb93c9b44d9)DATARMNET3c5d4329d8=DATARMNET2372d14a3d;}if(
DATARMNET70fa801d65<DATARMNETe632b2e0b0)return DATARMNET70fa801d65;return
DATARMNET3c5d4329d8;}static inline void DATARMNET8c1d8c9f65(struct
DATARMNET74e95d25df*DATARMNETe823dcf978,int DATARMNET2372d14a3d){
DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
DATARMNET1de7b3d891=DATARMNET9dd1382d86[DATARMNET2372d14a3d];DATARMNETe823dcf978
->DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNETf9afebb887=
DATARMNET91bbdde74c[DATARMNET2372d14a3d];}static inline void DATARMNET60cff0042c
(struct DATARMNET74e95d25df*DATARMNETe823dcf978,int DATARMNET2372d14a3d,unsigned
int DATARMNETf9d25d31ff){DATARMNETe823dcf978->DATARMNETb4180393e4[
DATARMNET2372d14a3d].DATARMNETb93c9b44d9=DATARMNETf9d25d31ff/(0xd27+224-0xdfd)*
DATARMNET14ed95ab67[DATARMNET2372d14a3d];DATARMNETe823dcf978->
DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNET04fa439380=DATARMNETe823dcf978
->DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNETb93c9b44d9<<
(0xd26+209-0xdf6);}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);int DATARMNETba251b7c9f;int DATARMNETa9b7aedc43;struct
sk_buff*DATARMNET7495e55ca2;DATARMNETba251b7c9f=DATARMNET93bdeed8cb[
DATARMNET543491eb0f->priority&TC_PRIO_MAX];if(unlikely(DATARMNET9b0193c8c4->q.
qlen>=qdisc_dev(DATARMNET9b0193c8c4)->tx_queue_len)){DATARMNETa9b7aedc43=
DATARMNETdaae0b9ea8(DATARMNETe823dcf978);if(DATARMNETa9b7aedc43<
DATARMNETe632b2e0b0&&DATARMNETa9b7aedc43!=DATARMNETba251b7c9f){
DATARMNET7495e55ca2=__qdisc_dequeue_head(&DATARMNETe823dcf978->
DATARMNETb4180393e4[DATARMNETa9b7aedc43].q);if(likely(DATARMNET7495e55ca2)){
DATARMNET9b0193c8c4->qstats.backlog-=qdisc_pkt_len(DATARMNET7495e55ca2);
DATARMNET9b0193c8c4->q.qlen--;qdisc_drop(DATARMNET7495e55ca2,DATARMNET9b0193c8c4
,DATARMNET6af05df5b3);}}else{return qdisc_drop(DATARMNET543491eb0f,
DATARMNET9b0193c8c4,DATARMNET6af05df5b3);}}__qdisc_enqueue_tail(
DATARMNET543491eb0f,&DATARMNETe823dcf978->DATARMNETb4180393e4[
DATARMNETba251b7c9f].q);qdisc_update_stats_at_enqueue(DATARMNET9b0193c8c4,
DATARMNET5affe290b8);return NET_XMIT_SUCCESS;}static u8 DATARMNETf9ac3daa83(
struct DATARMNET74e95d25df*DATARMNETe823dcf978){int DATARMNET2372d14a3d,
DATARMNET70fa801d65=DATARMNETe632b2e0b0;for(DATARMNET2372d14a3d=
(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
{if(!DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen)
continue;if(DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
DATARMNET1de7b3d891<=(0xd2d+202-0xdf7)||DATARMNETe823dcf978->DATARMNETb4180393e4
[DATARMNET2372d14a3d].DATARMNETf9afebb887<=(0xd2d+202-0xdf7)){if(
DATARMNET2372d14a3d<DATARMNET70fa801d65)DATARMNET70fa801d65=DATARMNET2372d14a3d;
continue;}return DATARMNET2372d14a3d;}for(DATARMNET2372d14a3d=(0xd2d+202-0xdf7);
DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
DATARMNET8c1d8c9f65(DATARMNETe823dcf978,DATARMNET2372d14a3d);return
DATARMNET70fa801d65;}static struct sk_buff*DATARMNET11bbc6360d(struct Qdisc*
DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(
DATARMNET9b0193c8c4);struct sk_buff*DATARMNET543491eb0f=NULL;u8
DATARMNET2372d14a3d;DATARMNET2372d14a3d=DATARMNETf9ac3daa83(DATARMNETe823dcf978)
;if(DATARMNET2372d14a3d<DATARMNETe632b2e0b0){DATARMNET543491eb0f=
__qdisc_dequeue_head(&DATARMNETe823dcf978->DATARMNETb4180393e4[
DATARMNET2372d14a3d].q);if(likely(DATARMNET543491eb0f)){DATARMNETe823dcf978->
DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNET1de7b3d891--;
DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
DATARMNETf9afebb887-=qdisc_pkt_len(DATARMNET543491eb0f);
qdisc_update_stats_at_dequeue(DATARMNET9b0193c8c4,DATARMNET543491eb0f);}}return
DATARMNET543491eb0f;}static struct sk_buff*DATARMNET5842e6aac7(struct Qdisc*
DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(
DATARMNET9b0193c8c4);struct sk_buff*DATARMNET543491eb0f=NULL;u8
DATARMNET2372d14a3d;DATARMNET2372d14a3d=DATARMNETf9ac3daa83(DATARMNETe823dcf978)
;if(DATARMNET2372d14a3d<DATARMNETe632b2e0b0)DATARMNET543491eb0f=
DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.head;return
DATARMNET543491eb0f;}static int DATARMNET757a7de682(struct Qdisc*
DATARMNET9b0193c8c4,struct nlattr*DATARMNET8bdeb8bf5c,struct netlink_ext_ack*
DATARMNET79a1f177ed){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(
DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(DATARMNET2372d14a3d=
(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
{DATARMNET8c1d8c9f65(DATARMNETe823dcf978,DATARMNET2372d14a3d);
DATARMNET60cff0042c(DATARMNETe823dcf978,DATARMNET2372d14a3d,qdisc_dev(
DATARMNET9b0193c8c4)->tx_queue_len);}DATARMNET9b0193c8c4->flags|=
TCQ_F_CAN_BYPASS;return(0xd2d+202-0xdf7);}static void DATARMNET9593ab9587(struct
Qdisc*DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=
qdisc_priv(DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(DATARMNET2372d14a3d=
(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
{kfree_skb_list(DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.
head);DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.head=NULL;
DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.tail=NULL;
DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen=
(0xd2d+202-0xdf7);DATARMNET8c1d8c9f65(DATARMNETe823dcf978,DATARMNET2372d14a3d);
DATARMNET60cff0042c(DATARMNETe823dcf978,DATARMNET2372d14a3d,qdisc_dev(
DATARMNET9b0193c8c4)->tx_queue_len);}}static int DATARMNET6647342968(struct
Qdisc*DATARMNET9b0193c8c4,unsigned int qlen){struct DATARMNET74e95d25df*
DATARMNETe823dcf978=qdisc_priv(DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(
DATARMNET2372d14a3d=(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;
DATARMNET2372d14a3d++)DATARMNET60cff0042c(DATARMNETe823dcf978,
DATARMNET2372d14a3d,qlen);return(0xd2d+202-0xdf7);}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,.change_tx_queue_len=DATARMNET6647342968,.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);

View File

@ -0,0 +1,46 @@
ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_SHS_DLKM_PLATFORMS_LIST := pineapple
RMNET_SHS_DLKM_PLATFORMS_LIST += blair
RMNET_SHS_DLKM_PLATFORMS_LIST += pitti
RMNET_SHS_DLKM_PLATFORMS_LIST += volcano
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
#Enabling BAZEL
LOCAL_MODULE_DDK_BUILD := 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
endif #End of Check for datarmnet

View File

@ -0,0 +1,17 @@
load(":define_shs.bzl", "define_shs")
define_shs("pineapple", "consolidate")
define_shs("pineapple", "gki")
define_shs("blair", "consolidate")
define_shs("blair", "gki")
define_shs("pitti", "consolidate")
define_shs("pitti", "gki")
define_shs("volcano", "consolidate")
define_shs("volcano", "gki")

View File

@ -0,0 +1,13 @@
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_ll.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

View File

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

View File

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

View File

@ -0,0 +1,50 @@
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
def define_shs(target, variant):
kernel_build_variant = "{}_{}".format(target, variant)
include_base = "../../../{}".format(native.package_name())
ddk_module(
name = "{}_shs".format(kernel_build_variant),
out = "rmnet_shs.ko",
srcs = [
"rmnet_shs.h",
"rmnet_shs_common.c",
"rmnet_shs_common.h",
"rmnet_shs_config.c",
"rmnet_shs_config.h",
"rmnet_shs_freq.c",
"rmnet_shs_freq.h",
"rmnet_shs_ll.c",
"rmnet_shs_ll.h",
"rmnet_shs_main.c",
"rmnet_shs_modules.c",
"rmnet_shs_modules.h",
"rmnet_shs_wq.c",
"rmnet_shs_wq.h",
"rmnet_shs_wq_genl.c",
"rmnet_shs_wq_genl.h",
"rmnet_shs_wq_mem.c",
"rmnet_shs_wq_mem.h",
],
kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
deps = [
"//msm-kernel:all_headers",
"//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
"//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
],
copts = ["-Wno-misleading-indentation"],
)
copy_to_dist_dir(
name = "{}_datarment-ext_dist".format(kernel_build_variant),
data = [
":{}_shs".format(kernel_build_variant),
],
dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
flat = True,
wipe_dist_dir = False,
allow_duplicate_filenames = False,
mode_overrides = {"**/*": "644"},
)

View File

@ -0,0 +1,190 @@
/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <linux/skbuff.h>
#include <linux/in.h>
#include <linux/ip.h>
#include <linux/ipv6.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#include "rmnet_shs_wq.h"
#ifndef DATARMNETbd5709177a
#define DATARMNETbd5709177a
#include "rmnet_shs_freq.h"
#include "rmnet_config.h"
#include "rmnet_map.h"
#include "rmnet_shs_wq_genl.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 DATARMNETecc0627c70.DATARMNET2f954f58f8
#define DATARMNETc6782fed88 (0xd35+210-0xdff)
#define DATARMNETbc3c416b77 DATARMNETecc0627c70.DATARMNETf510b48c29
#define DATARMNET9273f84bf1 DATARMNETecc0627c70.DATARMNET637025ccc1
#define DATARMNET12f3a261a0 ((0xc07+4861-0x1e3c))
#define DATARMNETb91aee91fd -(0xd26+209-0xdf6)
#define DATARMNET2edff26954 (0xd2d+202-0xdf7)
#define DATARMNET752465942a (0xbf7+4364-0x1c04)
#define DATARMNETbfe31ef643 (0xc07+1233-0xe1c)
#define DATARMNET2d0941aa7c (0xd11+230-0xdf3)
#define DATARMNETaa0602144b 11184810
#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 hrtimer DATARMNET533dba0f29;struct rmnet_map_dl_ind
DATARMNET08dbb5ab35;struct rmnet_map_pb_ind DATARMNET6b783c98fe;struct
qmi_rmnet_ps_ind rmnet_idl_ind_cb;struct rmnet_port*port;struct
DATARMNETa6f2d499b2 DATARMNET132b9c7dc4[DATARMNETc6782fed88];u64
DATARMNETbd3a0ee74e[DATARMNETc6782fed88];long DATARMNETc252a1f55d;long
DATARMNETa2e32cdd3a;atomic_long_t DATARMNET64bb8a8f57;u8 DATARMNET110549da6f;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;u8
DATARMNET2f954f58f8;u8 DATARMNETf510b48c29;u8 DATARMNET637025ccc1;u8
DATARMNET75af9f3c31;};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
DATARMNET1743c92e66;u32 queue_head;u32 hash;u32 bif;u32 ack_thresh;u16 map_index
;u16 map_cpu;u16 DATARMNETfbbec4c537;u16 DATARMNETa59ce1fd2d;u8
DATARMNET85c698ec34;u16 DATARMNET0371465875;u16 DATARMNET1e9d25d9ff;u8
DATARMNET6250e93187;u8 DATARMNET80eb31d7b8;u8 DATARMNETd986107d55;u8 mux_id;};
enum DATARMNETa40e71cf32{DATARMNET39a19f2e82,DATARMNETbb52958049,
DATARMNET46a17e3ec5,DATARMNETfeb864b93d,DATARMNET3503c562cb};enum
DATARMNET055bc2777b{DATARMNETf8fcf5a1db,DATARMNET6a801720f2,DATARMNET64165df74d,
DATARMNETfb9ca677b8};enum DATARMNET156842d55e{DATARMNET7bc926fdbe,
DATARMNETb3e3b2a799,DATARMNET8dcf06727b};enum DATARMNET8463cba7c7{
DATARMNETc3bce05be2,DATARMNET14067f0be4,DATARMNET28bb261646,DATARMNET67b67dc88f,
DATARMNET0efbbe2821,DATARMNETa4267dfd8a,DATARMNETf13db5ace8,DATARMNETb6eae1e097,
DATARMNET0e398136dc,DATARMNET975060d6b5,DATARMNET7f401828b3,DATARMNET6ea8a58f4e,
DATARMNETcf84373518,DATARMNET6bf40b86f6,DATARMNET9f8bd72ee5,DATARMNET5eefd5051a,
DATARMNET6d1e5ff045,DATARMNETf6458f40e6,DATARMNET438fb7f8f3,DATARMNET6fed39da20,
DATARMNET706cd2d052,DATARMNETaac8ed4c2d,DATARMNETeccb61ebc3};enum
DATARMNETf355367410{DATARMNET557ff68d74,DATARMNET1c55e5fdb1,DATARMNET4ab5a31d0c,
DATARMNETde2dd86539};enum DATARMNET6c7f7f22c7{DATARMNETe35e238437,
DATARMNET465c0e5e6d,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,
DATARMNET62807647a4,DATARMNET3b5329031b,DATARMNETdfffcec2c8,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;u8
DATARMNET72067bf727;};enum DATARMNETf0a06dc55a{DATARMNET1790979ccf,
DATARMNETd5eb6398da,DATARMNETcd24fca747,DATARMNETe50d824af7,DATARMNET6b317c4c73,
DATARMNET75d955c408,DATARMNETf3aaad06eb,DATARMNET720469c0a9,DATARMNET4510abc30d,
DATARMNET23f8730007,DATARMNETb77d87790d,DATARMNETf783febe14,};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,DATARMNETae009376be,DATARMNET5994bb1411,
DATARMNET623224aa0a,DATARMNET94906cea05,};struct DATARMNETe2f668ccb4{u8
DATARMNET42c3ecbd5e;u8 DATARMNET24fec1b9ad;u8 DATARMNETf58377e952;unsigned long
DATARMNET5c98629e14;};extern struct DATARMNET37ef896af8 DATARMNET1731db288b;
extern spinlock_t DATARMNETd83ee17944;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_ll_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
);void DATARMNET203752febd(void);void DATARMNET7520667b38(void);void
DATARMNETa871eeb7e7(void);void DATARMNET8f9da46b14(void);int DATARMNET362b15f941
(u16 cpu);void DATARMNETeacad8334e(void);void DATARMNETe1f95274f1(void);void
DATARMNETaeb508acb0(void);unsigned int DATARMNET02cdd9b125(void);int
DATARMNET310c3eb16e(u8 mask);int DATARMNETe02152c351(struct DATARMNET63d7680df2*
DATARMNET63b1a086d5,u8 DATARMNETd87669e323,u8 DATARMNET5447204733,struct sk_buff
**DATARMNETc88d0a6cdd);void DATARMNET4684d6c911(struct rmnet_map_pb_ind_hdr*
DATARMNET4e61dda775);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);void DATARMNETe767554e6e(struct sk_buff*skb);u32
DATARMNETadb0248bd4(u8 DATARMNET42a992465f);
#endif

View File

@ -0,0 +1,238 @@
/* Copyright (c) 2020-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 "rmnet_shs.h"
#include "rmnet_shs_wq.h"
#include "rmnet_shs_modules.h"
#include <net/ip.h>
#include <linux/cpu.h>
#include <linux/bitmap.h>
#include <linux/netdevice.h>
#include <linux/kernel.h>
#include <linux/smp.h>
#include <linux/ipv6.h>
#include <linux/netdevice.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){trace_rmnet_shs_wq_low(
DATARMNET238d08f0df,DATARMNET3f2d29c867,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL);spin_lock_bh(&
DATARMNETfbdbab2ef6);list_add_rcu(&DATARMNETd2a694d52a->DATARMNET6de26f0feb,&
DATARMNET9825511866);spin_unlock_bh(&DATARMNETfbdbab2ef6);}void
DATARMNET2fe780019f(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a){
trace_rmnet_shs_wq_low(DATARMNET238d08f0df,DATARMNET5a3ea29c57,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
DATARMNETd2a694d52a,NULL);spin_lock_bh(&DATARMNETfbdbab2ef6);list_del_rcu(&
DATARMNETd2a694d52a->DATARMNET6de26f0feb);spin_unlock_bh(&DATARMNETfbdbab2ef6);}
void DATARMNETb4a6870b3b(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a){
trace_rmnet_shs_wq_low(DATARMNET92b282b12c,DATARMNETdb9197631d,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
DATARMNETd2a694d52a,NULL);spin_lock_bh(&DATARMNETfbdbab2ef6);list_del_init(&
DATARMNETd2a694d52a->DATARMNET742867e97a);spin_unlock_bh(&DATARMNETfbdbab2ef6);}
void DATARMNETd8a6375e9c(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct
list_head*head){trace_rmnet_shs_wq_low(DATARMNET92b282b12c,DATARMNET4b58d51c6a,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
DATARMNETd2a694d52a,NULL);spin_lock_bh(&DATARMNETfbdbab2ef6);list_add(&
DATARMNETd2a694d52a->DATARMNET742867e97a,head);spin_unlock_bh(&
DATARMNETfbdbab2ef6);}void DATARMNET9914e9761e(struct DATARMNET6c78e47d24*
DATARMNETd2a694d52a,struct list_head*head){trace_rmnet_shs_wq_low(
DATARMNET92b282b12c,DATARMNETfd4d416388,DATARMNETd2a694d52a->DATARMNET7c894c2f8f
,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a,
NULL);spin_lock_bh(&DATARMNETfbdbab2ef6);list_move(&DATARMNETd2a694d52a->
DATARMNET742867e97a,head);spin_unlock_bh(&DATARMNETfbdbab2ef6);}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){
DATARMNET443cf5aaaf[cpu]+=count;}}u64 DATARMNETfc888b4d3e(u16 cpu){if(cpu>=
DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return
(0xd2d+202-0xdf7);}return DATARMNET713717107f[cpu];}inline int
DATARMNET362b15f941(u16 cpu){return!(((0xd26+209-0xdf6)<<cpu)&
DATARMNETbc3c416b77);}u32 DATARMNETadb0248bd4(u8 DATARMNET42a992465f){u32 ret=
(0xd2d+202-0xdf7);if(DATARMNET42a992465f<DATARMNETc6782fed88)ret=
DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNETae196235f2;DATARMNETda96251102
(DATARMNET75d955c408,DATARMNET9f467b9ce4,DATARMNET42a992465f,ret,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);return ret;}u32
DATARMNETeb3978575d(u8 DATARMNET42a992465f){u32 ret=(0xd2d+202-0xdf7);if(
DATARMNET42a992465f<DATARMNETc6782fed88)ret=DATARMNET0997c5650d[
DATARMNET42a992465f].qtail;DATARMNETda96251102(DATARMNET75d955c408,
DATARMNETc154fd2d48,DATARMNET42a992465f,ret,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);return ret;}u32 DATARMNETeea3cef5b6(u8
DATARMNET42a992465f){u32 ret=(0xd2d+202-0xdf7);if(DATARMNET42a992465f<
DATARMNETc6782fed88)ret=DATARMNET0997c5650d[DATARMNET42a992465f].
DATARMNET96571b28de;DATARMNETda96251102(DATARMNET75d955c408,DATARMNETc154fd2d48,
DATARMNET42a992465f,ret,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);return
ret;}int DATARMNET4e292977da(void*priv,const struct list_head*
DATARMNET9cf7d31274,const struct list_head*DATARMNET5444bd3b6f){struct
DATARMNETe176be7f7c*DATARMNET40e125212a;struct DATARMNETe176be7f7c*
DATARMNETdcaff77beb;if(!DATARMNET9cf7d31274||!DATARMNET5444bd3b6f)return
(0xd2d+202-0xdf7);DATARMNET40e125212a=list_entry(DATARMNET9cf7d31274,struct
DATARMNETe176be7f7c,DATARMNET7287946e7b);DATARMNETdcaff77beb=list_entry(
DATARMNET5444bd3b6f,struct DATARMNETe176be7f7c,DATARMNET7287946e7b);if(
DATARMNET40e125212a->DATARMNET253a9fc708>DATARMNETdcaff77beb->
DATARMNET253a9fc708)return-(0xd26+209-0xdf6);else if(DATARMNET40e125212a->
DATARMNET253a9fc708<DATARMNETdcaff77beb->DATARMNET253a9fc708)return
(0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}int DATARMNET3c489db64a(void*priv,
const struct list_head*DATARMNET9cf7d31274,const struct list_head*
DATARMNET5444bd3b6f){struct DATARMNET13c47d154e*DATARMNET40e125212a;struct
DATARMNET13c47d154e*DATARMNETdcaff77beb;if(!DATARMNET9cf7d31274||!
DATARMNET5444bd3b6f)return(0xd2d+202-0xdf7);DATARMNET40e125212a=list_entry(
DATARMNET9cf7d31274,struct DATARMNET13c47d154e,DATARMNETec0e3cb8f0);
DATARMNETdcaff77beb=list_entry(DATARMNET5444bd3b6f,struct DATARMNET13c47d154e,
DATARMNETec0e3cb8f0);if(DATARMNET40e125212a->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,const struct list_head*DATARMNET9cf7d31274,const
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->DATARMNET253a9fc708<
DATARMNETdcaff77beb->DATARMNET253a9fc708)return(0xd26+209-0xdf6);return
(0xd2d+202-0xdf7);}int DATARMNET85af86a36d(void*priv,const struct list_head*
DATARMNET9cf7d31274,const 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->
DATARMNET4da6031170<DATARMNET11d167e92b->DATARMNET4da6031170)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;if(!dev){DATARMNET68d84e7b98[
DATARMNETf5157a9b85]++;return DATARMNET895df156d7;}spin_lock_bh(&
DATARMNETec2a4f5211);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_bh(&DATARMNETec2a4f5211);return
DATARMNET895df156d7;}DATARMNETde5894dad9=ep->DATARMNET6bda8fe27e;
DATARMNETd9e9d4ff7e=ep->DATARMNETd7a83774f8;while(DATARMNETde5894dad9<
DATARMNETd9e9d4ff7e){if(ep->DATARMNET5af04d0405[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_bh(&DATARMNETec2a4f5211)
;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);
if(!dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;return DATARMNET895df156d7;}
spin_lock_bh(&DATARMNETec2a4f5211);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_bh(&DATARMNETec2a4f5211);return
DATARMNET895df156d7;}DATARMNETcc5b7cd962=ep->DATARMNET121a654efd;
DATARMNET15bde5cb53=ep->DATARMNET847276e5af;while(DATARMNETcc5b7cd962<
DATARMNET15bde5cb53){if(ep->DATARMNET7167e10d99[DATARMNETcc5b7cd962]>=
(0xd2d+202-0xdf7)){DATARMNET895df156d7=ep->DATARMNET7167e10d99[
DATARMNETcc5b7cd962];break;}DATARMNETcc5b7cd962++;}if(DATARMNET895df156d7>=
(0xd2d+202-0xdf7))ep->DATARMNET121a654efd=((DATARMNETcc5b7cd962+
(0xd26+209-0xdf6))%DATARMNET15bde5cb53);spin_unlock_bh(&DATARMNETec2a4f5211);
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);i<map->len;i++)mask|=(0xd26+209-0xdf6)<<map->cpus[i];return
mask;}int DATARMNET310c3eb16e(u8 mask){u8 i;u8 DATARMNETc2284e5688=
(0xd2d+202-0xdf7);for(i=(0xd2d+202-0xdf7);i<DATARMNETc6782fed88;i++){if(mask&(
(0xd26+209-0xdf6)<<i))DATARMNETc2284e5688++;}return DATARMNETc2284e5688;}int
DATARMNET04e8d1b862(u8 cpu,u8 mask){int ret=DATARMNETb91aee91fd;u8 idx=
(0xd2d+202-0xdf7);u8 i;if(!(mask&(0xd26+209-0xdf6)<<cpu))return ret;for(i=
(0xd2d+202-0xdf7);i<DATARMNETc6782fed88;i++){if(i==cpu&&(mask&((0xd26+209-0xdf6)
<<i))){ret=idx;break;}if(mask&((0xd26+209-0xdf6)<<i))idx++;}return ret;}int
DATARMNET217fe38119(u64 DATARMNETab155dfd5d,struct net_device*dev){int
DATARMNETf54fdb137b=DATARMNETb91aee91fd;if(DATARMNETab155dfd5d<
DATARMNETd82a2ed45e)DATARMNETf54fdb137b=DATARMNETf181a18009(dev);if(
DATARMNETf54fdb137b==DATARMNETb91aee91fd||DATARMNETab155dfd5d>=
DATARMNETd82a2ed45e)DATARMNETf54fdb137b=DATARMNET98b2a0ce62(dev);
DATARMNET52de1f3dc0(DATARMNET720469c0a9,DATARMNET7e63a08ad4,DATARMNETf54fdb137b,
DATARMNETab155dfd5d,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);return
DATARMNETf54fdb137b;}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);i<shinfo->nr_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;}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;
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);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{}}u32
DATARMNET8532ab3089(u32 index,u32 DATARMNET0258668025,u32 hash,u8
DATARMNET72067bf727){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<
DATARMNETc6782fed88)ret=((((index+((DATARMNET0258668025%(0xd1f+216-0xdf5))?
(0xd26+209-0xdf6):(0xd2d+202-0xdf7))))<<(0xec7+1122-0x130d))*DATARMNETebbd4cd1d9
[(DATARMNET0258668025-(0xd26+209-0xdf6))>>(0xd26+209-0xdf6)])|(hash&16777215);if
(DATARMNET72067bf727)ret=(ret&~1048575)|DATARMNET94fa0a43a2;DATARMNETda96251102(
DATARMNETf3aaad06eb,DATARMNET4e91ddb48a,ret,hash,index,DATARMNET0258668025,NULL,
NULL);return ret;}

View File

@ -0,0 +1,67 @@
/* Copyright (c) 2020 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.
*
*/
#ifndef DATARMNET4e9dcb0338
#define DATARMNET4e9dcb0338
#undef TRACE_INCLUDE_PATH
#include <trace/hooks/sched.h>
#include <linux/tracepoint.h>
#include <trace/hooks/vendor_hooks.h>
#define DATARMNET94fa0a43a2 489335
void DATARMNET4095253347(struct DATARMNET9b44b71ee9*ep);void DATARMNETf7d317ed55
(struct DATARMNET9b44b71ee9*ep);void DATARMNET36e5e526fa(struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a);void DATARMNET2fe780019f(struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a);void DATARMNETd8a6375e9c(struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct list_head*head);void
DATARMNET9914e9761e(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct
list_head*head);void DATARMNET6bf538fa23(void);void DATARMNETaea4c85748(void);
void DATARMNETe46c480d71(void);void DATARMNETde8ee16f92(struct
DATARMNET63d7680df2*DATARMNET63b1a086d5);void DATARMNET3e37ad2816(struct
DATARMNET63d7680df2*DATARMNET63b1a086d5,struct list_head*DATARMNET4d030eb9b5);
void DATARMNETe102b3a798(struct DATARMNET63d7680df2*DATARMNET63b1a086d5,struct
list_head*DATARMNET4d030eb9b5,int DATARMNETa7a5705ab0);void DATARMNET4bde88919f(
u8 cpu,int count);inline int DATARMNET362b15f941(u16 cpu);u64
DATARMNETfc888b4d3e(u16 cpu);u32 DATARMNETeb3978575d(u8 DATARMNET42a992465f);u32
DATARMNETeea3cef5b6(u8 DATARMNET42a992465f);u8 DATARMNET928c931df9(struct
rps_map*map);int DATARMNET4e292977da(void*priv,const struct list_head*
DATARMNET9cf7d31274,const struct list_head*DATARMNET5444bd3b6f);int
DATARMNET3c489db64a(void*priv,const struct list_head*DATARMNET9cf7d31274,const
struct list_head*DATARMNET5444bd3b6f);int DATARMNETd5c15f1ff3(void*priv,const
struct list_head*DATARMNET9cf7d31274,const struct list_head*DATARMNET5444bd3b6f)
;int DATARMNET85af86a36d(void*priv,const struct list_head*DATARMNET9cf7d31274,
const struct list_head*DATARMNET5444bd3b6f);int DATARMNETf181a18009(struct
net_device*dev);int DATARMNET98b2a0ce62(struct net_device*dev);void
DATARMNET7f1d9480cb(void*port);void DATARMNETa4bd2ef52c(void*port);int
DATARMNET310c3eb16e(u8 mask);void DATARMNETb4a6870b3b(struct DATARMNET6c78e47d24
*DATARMNETd2a694d52a);void DATARMNETd8a6375e9c(struct DATARMNET6c78e47d24*
DATARMNETd2a694d52a,struct list_head*head);void DATARMNET9914e9761e(struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct list_head*head);int
DATARMNET04e8d1b862(u8 cpu,u8 mask);void DATARMNET44459105b4(struct sk_buff*skb,
struct DATARMNET63d7680df2*node_p);int DATARMNET217fe38119(u64
DATARMNETab155dfd5d,struct net_device*dev);void*DATARMNETefcaf5fbe9(struct
sk_buff*skb,u32 offset,u32 DATARMNET567bdc7221,void*buf);u32 DATARMNET8532ab3089
(u32 index,u32 DATARMNET0258668025,u32 hash,u8 DATARMNET778962e2c2);extern
struct list_head DATARMNET9825511866;static inline void DATARMNET3e88a91b63(void
*unused,struct wait_queue_head*DATARMNETa08427f746,int*done,struct sock*sk){if((
sk->sk_protocol==IPPROTO_TCP||sk->sk_protocol==IPPROTO_UDP)&&(sk->sk_rxhash&
1048575)==DATARMNET94fa0a43a2){(*done)=(0xd26+209-0xdf6);
wake_up_interruptible_poll(DATARMNETa08427f746,EPOLLIN|EPOLLPRI|EPOLLRDNORM|
EPOLLRDBAND);}}static inline int DATARMNETed3cac41ac(void){int rc=
(0xd2d+202-0xdf7);rc=register_trace_android_vh_do_wake_up_sync(
DATARMNET3e88a91b63,NULL);return rc;}static inline int DATARMNET7fcf8c178f(void)
{int rc=(0xd2d+202-0xdf7);rc=unregister_trace_android_vh_do_wake_up_sync(
DATARMNET3e88a91b63,NULL);return rc;}
#undef TRACE_INCLUDE_PATH
#endif

View File

@ -0,0 +1,110 @@
/* 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 <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/module.h>
#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_ll.h"
#include "rmnet_shs_freq.h"
#include "rmnet_shs_wq_genl.h"
#include "rmnet_shs_common.h"
#include "rmnet_shs_modules.h"
#include "rmnet_module.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",
"\x61\x63\x36\x32\x36","\x35\x63\x66\x66\x37","\x61\x35\x38\x36\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 const struct rmnet_module_hook_register_info DATARMNETf6217b20b8={.
hooknum=RMNET_MODULE_HOOK_SHS_SKB_LL_ENTRY,.func=DATARMNETf5821256ad};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);DATARMNET203752febd();DATARMNETa871eeb7e7();
rmnet_module_hook_unregister_no_sync(&DATARMNETf6217b20b8,(0xd26+209-0xdf6));
qmi_rmnet_ps_ind_deregister(DATARMNETecc0627c70.port,&DATARMNETecc0627c70.
rmnet_idl_ind_cb);rmnet_map_dl_ind_deregister(DATARMNETecc0627c70.port,&
DATARMNETecc0627c70.DATARMNET08dbb5ab35);rmnet_map_pb_ind_deregister(
DATARMNETecc0627c70.port,&DATARMNETecc0627c70.DATARMNET6b783c98fe);
DATARMNETeacad8334e();DATARMNET90fe3a4b56();DATARMNET9f4bc49c6f=
DATARMNET02cdd9b125();if(DATARMNETecc0627c70.DATARMNET9c869c1ec2)
DATARMNET7fcf8c178f();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;
DATARMNETecc0627c70.DATARMNET6b783c98fe.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.DATARMNET6b783c98fe.
pb_ind_handler=&DATARMNET4684d6c911;}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=rmnet_map_pb_ind_register(port,&DATARMNETecc0627c70.
DATARMNET6b783c98fe);if(ret)pr_err(
"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x20\x70\x62\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();trace_rmnet_shs_high(DATARMNET1790979ccf,
DATARMNET443dab7031,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);DATARMNETa871eeb7e7();DATARMNET7520667b38();
rmnet_module_hook_register(&DATARMNETf6217b20b8,(0xd26+209-0xdf6));
DATARMNETed3cac41ac();DATARMNETecc0627c70.DATARMNET9c869c1ec2=(0xd26+209-0xdf6);
break;}DATARMNET7492293980(dev);break;default:break;}return NOTIFY_DONE;}
module_init(DATARMNET163e93649e);module_exit(DATARMNETf3298dab6f);

View File

@ -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 <linux/init.h>
#include <linux/module.h>
#include <linux/netdevice.h>
#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

View File

@ -0,0 +1,130 @@
/* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 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 <linux/module.h>
#include "rmnet_shs.h"
#include "rmnet_shs_freq.h"
#include "rmnet_shs_modules.h"
#include <linux/cpufreq.h>
#include <linux/cpu.h>
#include <linux/pm_qos.h>
#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);struct
DATARMNET257fd3bf84{struct cpu_freq __percpu*DATARMNETde47bee4ac;};static struct
DATARMNET257fd3bf84 DATARMNET7cf8d49bd5;static struct work_struct
DATARMNET3dc8e3c69f;static DEFINE_PER_CPU(struct freq_qos_request,
DATARMNET68a4af61b9);static void DATARMNETb90d2272b4(struct work_struct*
DATARMNET33110a3ff5){struct cpu_freq*DATARMNETe24d518157;unsigned int i;int ret;
struct freq_qos_request*DATARMNETddcafd8b91;cpus_read_lock();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);}cpus_read_unlock(
);}static void DATARMNET5a406b068f(struct work_struct*DATARMNET33110a3ff5){
struct cpu_freq*DATARMNETe24d518157;unsigned int i;int ret;struct
freq_qos_request*DATARMNETddcafd8b91;cpus_read_lock();for_each_online_cpu(i){
DATARMNETe24d518157=per_cpu_ptr(DATARMNET7cf8d49bd5.DATARMNETde47bee4ac,i);
DATARMNETddcafd8b91=&per_cpu(DATARMNET68a4af61b9,i);ret=freq_qos_update_request(
DATARMNETddcafd8b91,DATARMNETe24d518157->DATARMNET103c8d34fe);
DATARMNETda96251102(DATARMNETb77d87790d,DATARMNET5994bb1411,DATARMNETe24d518157
->DATARMNET103c8d34fe,DATARMNETe24d518157->DATARMNET1159aa2cb6,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}cpus_read_unlock();}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;}
for_each_possible_cpu(i){DATARMNETe24d518157=per_cpu_ptr(DATARMNET7cf8d49bd5.
DATARMNETde47bee4ac,i);DATARMNETe24d518157->DATARMNET103c8d34fe=MIN_FREQ;
DATARMNETe24d518157->DATARMNET1159aa2cb6=DATARMNET81fe789d21;}}void
DATARMNET5e4aeef593(int cpu){struct cpu_freq*DATARMNETe24d518157;int i=cpu;if(
cpu<(0xd2d+202-0xdf7)||cpu>=DATARMNETc6782fed88)return;if(((0xd26+209-0xdf6)<<i)
&DATARMNET9273f84bf1)return;DATARMNETe24d518157=per_cpu_ptr(DATARMNETc4b1be7898.
DATARMNET9dd9bc4abb,i);DATARMNETe24d518157->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)<<i)&DATARMNETbc3c416b77)continue;DATARMNETe24d518157=
per_cpu_ptr(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb,i);DATARMNETe24d518157->
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
DATARMNET202a68d7d0(void){struct cpu_freq*DATARMNETe24d518157;int i;
for_each_possible_cpu(i){if(((0xd26+209-0xdf6)<<i)&DATARMNETbc3c416b77)continue;
DATARMNETe24d518157=per_cpu_ptr(DATARMNET7cf8d49bd5.DATARMNETde47bee4ac,i);
DATARMNETe24d518157->DATARMNET103c8d34fe=DATARMNET59b491fbc9;DATARMNETe24d518157
->DATARMNET1159aa2cb6=DATARMNET81fe789d21;trace_rmnet_freq_boost(i,
DATARMNET59b491fbc9);}if(work_pending(&DATARMNET3dc8e3c69f))return;if(
DATARMNETde8f350999){queue_work_on(DATARMNET03d51cb126,DATARMNETde8f350999,&
DATARMNET3dc8e3c69f);}}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);}void
DATARMNETf20806b279(void){struct cpu_freq*DATARMNETe24d518157;int i;
for_each_possible_cpu(i){DATARMNETe24d518157=per_cpu_ptr(DATARMNET7cf8d49bd5.
DATARMNETde47bee4ac,i);DATARMNETe24d518157->DATARMNET103c8d34fe=MIN_FREQ;
DATARMNETe24d518157->DATARMNET1159aa2cb6=DATARMNET81fe789d21;
trace_rmnet_freq_reset(i,MIN_FREQ);}if(work_pending(&DATARMNET3dc8e3c69f))return
;if(DATARMNETde8f350999)queue_work_on(DATARMNET03d51cb126,DATARMNETde8f350999,&
DATARMNET3dc8e3c69f);}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);}DATARMNETddcafd8b91=&per_cpu(DATARMNET68a4af61b9,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;DATARMNET7cf8d49bd5.
DATARMNETde47bee4ac=alloc_percpu(struct cpu_freq);if(!DATARMNET7cf8d49bd5.
DATARMNETde47bee4ac){free_percpu(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;}DATARMNETddcafd8b91=&per_cpu(DATARMNET68a4af61b9,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\x70\x62\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\x70\x62\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);
INIT_WORK(&DATARMNET3dc8e3c69f,DATARMNET5a406b068f);DATARMNET82d7f4ffa2();return
(0xd2d+202-0xdf7);err:DATARMNET82d7f4ffa2();free_percpu(DATARMNETc4b1be7898.
DATARMNET9dd9bc4abb);free_percpu(DATARMNET7cf8d49bd5.DATARMNETde47bee4ac);if(
DATARMNETde8f350999){destroy_workqueue(DATARMNETde8f350999);DATARMNETde8f350999=
NULL;}return ret;}int DATARMNETdf74db7e38(void){DATARMNET009d37d173();if(
DATARMNETde8f350999){destroy_workqueue(DATARMNETde8f350999);DATARMNETde8f350999=
NULL;}free_percpu(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb);free_percpu(
DATARMNET7cf8d49bd5.DATARMNETde47bee4ac);return(0xd2d+202-0xdf7);}

View File

@ -0,0 +1,22 @@
/* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 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.
*
*/
#ifndef DATARMNETef19703014
#define DATARMNETef19703014
int DATARMNETe6e8431304(void);int DATARMNETdf74db7e38(void);void
DATARMNETfb7007f025(void);void DATARMNET371703c28d(void);void
DATARMNET202a68d7d0(void);void DATARMNETf20806b279(void);void
DATARMNET5e4aeef593(int cpu);
#endif

View File

@ -0,0 +1,380 @@
/* 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 <net/sock.h>
#include <linux/netlink.h>
#include <linux/ip.h>
#include <linux/cpu.h>
#include <net/ip.h>
#include <linux/cpu.h>
#include <linux/bitmap.h>
#include <linux/kernel.h>
#include <linux/smp.h>
#include <linux/ipv6.h>
#include <linux/netdevice.h>
#include <linux/percpu-defs.h>
#include "rmnet_shs.h"
#include "rmnet_shs_wq_genl.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 <linux/icmp.h>
#include <linux/inet.h>
DEFINE_HASHTABLE(DATARMNET58fe8ac797,DATARMNET25437d35fd);DEFINE_HASHTABLE(
DATARMNET5750992efb,DATARMNET25437d35fd);DEFINE_SPINLOCK(DATARMNETd83ee17944);
struct DATARMNETe600c5b727 DATARMNET148e775ece[DATARMNETc6782fed88];
#define DATARMNET82243f712c (0xeb7+698-0x110d)
#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 DATARMNET8053357aa4 (0xeb7+1130-0x130d)
unsigned int DATARMNETefe3dcad0a=(0xd2d+202-0xdf7);module_param(
DATARMNETefe3dcad0a,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETefe3dcad0a,
"\x4c\x4c\x20\x70\x61\x63\x6b\x65\x74\x73\x20\x73\x65\x65\x6e\x20\x69\x6e\x20\x6c\x6c\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73"
);unsigned int DATARMNET75ae82094a=(0xd2d+202-0xdf7);module_param(
DATARMNET75ae82094a,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET75ae82094a,
"\x4c\x4c\x20\x66\x69\x6c\x74\x65\x72\x20\x63\x6f\x75\x6e\x74\x20\x73\x65\x65\x6e\x20\x69\x6e\x20\x6c\x6c\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73"
);int DATARMNETf4aefff4c2(struct sk_buff*skb){int DATARMNETbd864aa442=
(0xd2d+202-0xdf7);struct iphdr*ip4h,DATARMNETc00baf31c3;struct ipv6hdr*ip6h,
DATARMNETcf1d9e2c1e;const struct ipv6_opt_hdr*DATARMNET7b34b7b5be;struct
ipv6_opt_hdr DATARMNET1688a97aa4;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);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);}}else if(ip4h->
protocol==IPPROTO_ESP){skb->hash=DATARMNETaa0602144b;skb->sw_hash=
(0xd26+209-0xdf6);}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);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);}}else if(ip6h->nexthdr==NEXTHDR_ESP){skb->
hash=DATARMNETaa0602144b;skb->sw_hash=(0xd26+209-0xdf6);}else if(ip6h->nexthdr==
NEXTHDR_FRAGMENT){if(skb->len-sizeof(struct ipv6hdr)<(int)sizeof(struct
ipv6_opt_hdr)){break;}DATARMNET7b34b7b5be=skb_header_pointer(skb,sizeof(struct
ipv6hdr),sizeof(DATARMNET1688a97aa4),&DATARMNET1688a97aa4);if(
DATARMNET7b34b7b5be&&DATARMNET7b34b7b5be->nexthdr==NEXTHDR_ESP){skb->hash=
DATARMNETaa0602144b;skb->sw_hash=(0xd26+209-0xdf6);}}DATARMNETf623862dd4:break;
default:break;}DATARMNETda96251102(DATARMNETcd24fca747,DATARMNET116c96c236,
DATARMNETbd864aa442,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb
,NULL);return DATARMNETbd864aa442;}int DATARMNET71b0abb49e(struct sk_buff*skb,
struct ipv6hdr*DATARMNET5d09fca14e,struct DATARMNETbf4d34b241*
DATARMNET54338da2ff){struct tcphdr*tp,DATARMNETd1ff6cd568;struct udphdr*up,
DATARMNETc82d2f4e16;int DATARMNETb3ce3d0107,DATARMNETb16a9be210,
DATARMNET5a94751027,DATARMNETad7ab41bc8,DATARMNETf13f5dee10=false;int ret=false;
int DATARMNETd6e492a659=(0xd2d+202-0xdf7);u8 protocol;__be16 frag_off;
DATARMNETb3ce3d0107=!DATARMNET54338da2ff->DATARMNET1819cae4a3||ipv6_addr_equal(&
DATARMNET5d09fca14e->saddr,&DATARMNET54338da2ff->DATARMNET53d5f671f0.v6_saddr);
DATARMNETb16a9be210=!DATARMNET54338da2ff->DATARMNETb035edcfb9||ipv6_addr_equal(&
DATARMNET5d09fca14e->daddr,&DATARMNET54338da2ff->DATARMNETea422561ef.v6_daddr);
DATARMNET5a94751027=!DATARMNET54338da2ff->DATARMNET8b5ace4a98||
DATARMNET54338da2ff->proto==DATARMNET5d09fca14e->nexthdr;DATARMNETad7ab41bc8=!
DATARMNET54338da2ff->DATARMNET5a5907dd87;DATARMNETf13f5dee10=!
DATARMNET54338da2ff->DATARMNET1c959e10ca;protocol=DATARMNET5d09fca14e->nexthdr;
if(DATARMNET54338da2ff->DATARMNET5a5907dd87||DATARMNET54338da2ff->
DATARMNET1c959e10ca){DATARMNETd6e492a659=ipv6_skip_exthdr(skb,sizeof(*
DATARMNET5d09fca14e),&protocol,&frag_off);if(DATARMNETd6e492a659<
(0xd2d+202-0xdf7)){return false;}if(DATARMNET5d09fca14e->nexthdr==IPPROTO_TCP){
tp=DATARMNETefcaf5fbe9(skb,DATARMNETd6e492a659,sizeof(*tp),&DATARMNETd1ff6cd568)
;if(!tp){DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=false;}else{
DATARMNETad7ab41bc8=!DATARMNET54338da2ff->DATARMNET5a5907dd87||tp->source==(
DATARMNET54338da2ff->src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff->
DATARMNET1c959e10ca||tp->dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}else
if(DATARMNET5d09fca14e->nexthdr==IPPROTO_UDP){up=DATARMNETefcaf5fbe9(skb,
DATARMNETd6e492a659,sizeof(*up),&DATARMNETc82d2f4e16);if(!up){
DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=false;}else{DATARMNETad7ab41bc8=!
DATARMNET54338da2ff->DATARMNET5a5907dd87||up->source==(DATARMNET54338da2ff->
src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff->DATARMNET1c959e10ca||up->
dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}}if((DATARMNETb3ce3d0107)&&(
DATARMNETb16a9be210)&&(DATARMNET5a94751027)&&(DATARMNETad7ab41bc8)&&(
DATARMNETf13f5dee10))ret=true;return ret;}int DATARMNETb9e0ebf153(struct sk_buff
*skb,struct iphdr*skb_ip4h,struct DATARMNETbf4d34b241*DATARMNET54338da2ff){int
ret=false;struct tcphdr*tp,DATARMNETd1ff6cd568;struct udphdr*up,
DATARMNETc82d2f4e16;u16 DATARMNET43b01ff41b=skb_ip4h->ihl*(0xd11+230-0xdf3);int
DATARMNETb3ce3d0107=!DATARMNET54338da2ff->DATARMNET1819cae4a3||skb_ip4h->saddr==
DATARMNET54338da2ff->DATARMNET53d5f671f0.saddr;int DATARMNETb16a9be210=!
DATARMNET54338da2ff->DATARMNETb035edcfb9||skb_ip4h->daddr==(DATARMNET54338da2ff
->DATARMNETea422561ef.daddr);int DATARMNET5a94751027=!DATARMNET54338da2ff->
DATARMNET8b5ace4a98||skb_ip4h->protocol==DATARMNET54338da2ff->proto;int
DATARMNETad7ab41bc8=!DATARMNET54338da2ff->DATARMNET5a5907dd87;int
DATARMNETf13f5dee10=!DATARMNET54338da2ff->DATARMNET1c959e10ca;if(
DATARMNET54338da2ff->DATARMNET5a5907dd87||DATARMNET54338da2ff->
DATARMNET1c959e10ca){if(skb_ip4h->protocol==IPPROTO_TCP){tp=DATARMNETefcaf5fbe9(
skb,DATARMNET43b01ff41b,sizeof(*tp),&DATARMNETd1ff6cd568);if(!tp){
DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=false;}else{DATARMNETad7ab41bc8=!
DATARMNET54338da2ff->DATARMNET5a5907dd87||tp->source==(DATARMNET54338da2ff->
src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff->DATARMNET1c959e10ca||tp->
dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}else if(skb_ip4h->protocol==
IPPROTO_UDP){up=DATARMNETefcaf5fbe9(skb,DATARMNET43b01ff41b,sizeof(*up),&
DATARMNETc82d2f4e16);if(!up){DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=false
;}else{DATARMNETad7ab41bc8=!DATARMNET54338da2ff->DATARMNET5a5907dd87||up->source
==(DATARMNET54338da2ff->src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff->
DATARMNET1c959e10ca||up->dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}}if(
(DATARMNETb3ce3d0107)&&(DATARMNETb16a9be210)&&(DATARMNET5a94751027)&&(
DATARMNETad7ab41bc8)&&(DATARMNETf13f5dee10))ret=true;rm_err(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x56\x34\x20\x73\x61\x64\x64\x72\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x20\x64\x61\x64\x64\x72\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x2c\x20\x70\x72\x6f\x74\x6f\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x2c\x20\x73\x72\x63\x20\x70\x6f\x72\x74\x20\x25\x75\x2c\x20\x64\x65\x73\x74\x20\x70\x6f\x72\x74\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x20\x20\x70\x72\x6f\x74\x6f\x20\x25\x75" "\n"
,DATARMNETb3ce3d0107,DATARMNETb16a9be210,DATARMNET5a94751027,DATARMNETad7ab41bc8
,DATARMNETf13f5dee10,skb_ip4h->protocol);return ret;}int DATARMNET8fc45abdc4(
struct DATARMNET0331d6732d*DATARMNET63b1a086d5,struct DATARMNET0331d6732d*
DATARMNET82190d5ee0){struct DATARMNETbf4d34b241*DATARMNET54338da2ff=&
DATARMNET63b1a086d5->DATARMNET54338da2ff;struct DATARMNETbf4d34b241*
DATARMNET099bdc749a=&DATARMNET82190d5ee0->DATARMNET54338da2ff;int
DATARMNET10f1c9f8db=DATARMNET54338da2ff->DATARMNET602389fe52==
DATARMNET099bdc749a->DATARMNET602389fe52;int DATARMNETb3ce3d0107,
DATARMNETb16a9be210,DATARMNET5a94751027,DATARMNETad7ab41bc8,DATARMNETf13f5dee10=
false;if(DATARMNET54338da2ff->seq&&DATARMNET099bdc749a->seq&&(
DATARMNET54338da2ff->seq==DATARMNET099bdc749a->seq)){return true;}
DATARMNETb3ce3d0107=(!DATARMNET54338da2ff->DATARMNET1819cae4a3&&!
DATARMNET099bdc749a->DATARMNET1819cae4a3)||(DATARMNET54338da2ff->
DATARMNET1819cae4a3&&DATARMNET099bdc749a->DATARMNET1819cae4a3&&(
DATARMNET54338da2ff->DATARMNET602389fe52==(0xd11+230-0xdf3))?(
DATARMNET54338da2ff->DATARMNET53d5f671f0.saddr==DATARMNET099bdc749a->
DATARMNET53d5f671f0.saddr):ipv6_addr_equal(&DATARMNET099bdc749a->
DATARMNET53d5f671f0.v6_saddr,&DATARMNET54338da2ff->DATARMNET53d5f671f0.v6_saddr)
);DATARMNETb16a9be210=(!DATARMNET54338da2ff->DATARMNETb035edcfb9&&!
DATARMNET099bdc749a->DATARMNETb035edcfb9)||(DATARMNET54338da2ff->
DATARMNETb035edcfb9&&DATARMNET099bdc749a->DATARMNETb035edcfb9&&(
DATARMNET54338da2ff->DATARMNET602389fe52==(0xd11+230-0xdf3))?(
DATARMNET54338da2ff->DATARMNETea422561ef.daddr==DATARMNET099bdc749a->
DATARMNETea422561ef.daddr):ipv6_addr_equal(&DATARMNET099bdc749a->
DATARMNETea422561ef.v6_daddr,&DATARMNET54338da2ff->DATARMNETea422561ef.v6_daddr)
);DATARMNET5a94751027=(!DATARMNET54338da2ff->DATARMNET8b5ace4a98&&!
DATARMNET099bdc749a->DATARMNET8b5ace4a98)||(DATARMNET54338da2ff->
DATARMNET8b5ace4a98&&DATARMNET099bdc749a->DATARMNET8b5ace4a98&&
DATARMNET54338da2ff->proto==DATARMNET099bdc749a->proto);DATARMNETad7ab41bc8=(!
DATARMNET54338da2ff->DATARMNET5a5907dd87&&!DATARMNET099bdc749a->
DATARMNET5a5907dd87)||(DATARMNET54338da2ff->DATARMNET5a5907dd87&&
DATARMNET099bdc749a->DATARMNET5a5907dd87&&DATARMNET54338da2ff->src_port==
DATARMNET099bdc749a->src_port);DATARMNETf13f5dee10=(!DATARMNET54338da2ff->
DATARMNET1c959e10ca&&!DATARMNET099bdc749a->DATARMNET1c959e10ca)||(
DATARMNET54338da2ff->DATARMNET1c959e10ca&&DATARMNET099bdc749a->
DATARMNET1c959e10ca&&DATARMNET54338da2ff->DATARMNET1e49bc75c8==
DATARMNET099bdc749a->DATARMNET1e49bc75c8);rm_err(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x6d\x61\x74\x63\x68\x20\x72\x65\x73\x75\x6c\x74\x20\x73\x61\x64\x72\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x20\x64\x61\x64\x64\x72\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x2c\x20\x70\x72\x6f\x74\x6f\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x2c\x20\x73\x72\x63\x20\x70\x6f\x72\x74\x20\x25\x75\x2c\x20\x64\x65\x73\x74\x20\x70\x6f\x72\x74\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x6d\x61\x74\x63\x68\x20\x25\x75" "\n"
,DATARMNETb3ce3d0107,DATARMNETb16a9be210,DATARMNET5a94751027,DATARMNETad7ab41bc8
,DATARMNETf13f5dee10,DATARMNET10f1c9f8db);return(DATARMNET10f1c9f8db&&
DATARMNETb3ce3d0107&&DATARMNETb16a9be210&&DATARMNET5a94751027&&
DATARMNETad7ab41bc8&&DATARMNETf13f5dee10);}int DATARMNETe24386452c(struct
sk_buff*skb){struct iphdr*ip4h,DATARMNETc00baf31c3;struct ipv6hdr*ip6h,
DATARMNETcf1d9e2c1e;struct DATARMNET0331d6732d*node_p;struct hlist_node*tmp;int
ret=false;spin_lock_bh(&DATARMNETd83ee17944);switch(skb->protocol){case htons(
ETH_P_IP):ip4h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),sizeof(*ip4h),&
DATARMNETc00baf31c3);if(!ip4h){break;}hash_for_each_possible_safe(
DATARMNET5750992efb,node_p,tmp,list,ip4h->saddr){if(DATARMNETb9e0ebf153(skb,ip4h
,&node_p->DATARMNET54338da2ff)){ret=true;break;}}break;case htons(ETH_P_IPV6):
ip6h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),sizeof(*ip6h),&
DATARMNETcf1d9e2c1e);if(!ip6h){break;}hash_for_each_possible_safe(
DATARMNET5750992efb,node_p,tmp,list,ip6h->saddr.in6_u.u6_addr32[
(0xd2d+202-0xdf7)]){if(DATARMNET71b0abb49e(skb,ip6h,&node_p->DATARMNET54338da2ff
)){ret=true;break;}}break;default:break;}spin_unlock_bh(&DATARMNETd83ee17944);
rm_err(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x50\x61\x63\x6b\x65\x74\x20\x46\x69\x6c\x74\x65\x72\x20\x63\x68\x65\x63\x6b\x65\x64\x20\x61\x6e\x61\x6c\x79\x7a\x65\x64\x20\x72\x65\x74\x3a\x20\x25\x64"
,ret);return ret;}void DATARMNETd52d50282d(struct DATARMNET0331d6732d*
DATARMNET63b1a086d5){struct DATARMNET0331d6732d*DATARMNET9a739c7d8b;struct
hlist_node*tmp;struct DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;unsigned long
bkt;int i=(0xd2d+202-0xdf7);spin_lock_bh(&DATARMNETd83ee17944);
hash_for_each_safe(DATARMNET5750992efb,bkt,tmp,DATARMNET9a739c7d8b,list){i++;if(
DATARMNET8fc45abdc4(DATARMNET9a739c7d8b,DATARMNET63b1a086d5)){rm_err(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x25\x73" "\n",
"\x46\x69\x6c\x74\x65\x72\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x69\x6e\x73\x74\x61\x6c\x6c\x65\x64\x2c\x20\x44\x75\x70\x20\x46\x69\x6c\x74\x65\x72"
);hash_del_rcu(&DATARMNET9a739c7d8b->list);kfree(DATARMNET9a739c7d8b);break;}}
spin_unlock_bh(&DATARMNETd83ee17944);spin_lock_bh(&DATARMNETfbdbab2ef6);
list_for_each_entry(DATARMNETd2a694d52a,&DATARMNET9825511866,DATARMNET6de26f0feb
){if(DATARMNETd2a694d52a->DATARMNET63b1a086d5&&!DATARMNETd2a694d52a->
DATARMNET63b1a086d5->DATARMNET80eb31d7b8){DATARMNETd2a694d52a->
DATARMNET63b1a086d5->DATARMNET80eb31d7b8=DATARMNET64165df74d;}}spin_unlock_bh(&
DATARMNETfbdbab2ef6);kfree(DATARMNET63b1a086d5);DATARMNETecc0627c70.
DATARMNET110549da6f--;DATARMNET75ae82094a--;rm_err(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x25\x73",
"\x20\x55\x6e\x69\x6e\x73\x74\x61\x6c\x6c\x65\x64\x20\x4c\x4c\x20\x66\x69\x6c\x74\x65\x72"
);}void DATARMNET1e918c8e0d(struct DATARMNET0331d6732d*DATARMNET63b1a086d5){
struct DATARMNETbf4d34b241*DATARMNET54338da2ff=&DATARMNET63b1a086d5->
DATARMNET54338da2ff;pr_info(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x70\x72\x6f\x74\x6f\x20\x76\x61\x6c\x69\x64\x20\x25\x75\x20\x73\x72\x63\x20\x61\x64\x64\x72\x20\x76\x61\x6c\x69\x64\x20\x25\x75\x2c\x20\x64\x65\x73\x74\x20\x61\x64\x64\x72\x20\x76\x61\x6c\x69\x64\x20\x25\x75\x2c\x20\x64\x65\x73\x74\x20\x70\x6f\x72\x74\x20\x76\x61\x6c\x69\x64\x20\x25\x75\x2c\x20\x73\x72\x63\x70\x6f\x72\x74\x20\x76\x61\x6c\x69\x64\x20\x25\x75\x2c\x20\x69\x70\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x25\x75\x20\x73\x65\x71\x20\x25\x75"
,DATARMNET54338da2ff->DATARMNET8b5ace4a98,DATARMNET54338da2ff->
DATARMNET1819cae4a3,DATARMNET54338da2ff->DATARMNETb035edcfb9,DATARMNET54338da2ff
->DATARMNET1c959e10ca,DATARMNET54338da2ff->DATARMNET5a5907dd87,
DATARMNET54338da2ff->DATARMNET602389fe52,DATARMNET54338da2ff->seq);pr_info(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x70\x5f\x76\x65\x72\x73\x69\x6f\x6e\x20\x25\x75"
,DATARMNET54338da2ff->DATARMNET602389fe52);pr_info(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x69\x6e\x66\x6f\x2d\x3e\x70\x72\x6f\x74\x6f\x20\x25\x75"
,DATARMNET54338da2ff->proto);pr_info(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x69\x6e\x66\x6f\x2d\x3e\x64\x65\x73\x74\x5f\x70\x6f\x72\x74\x20\x25\x75"
,DATARMNET54338da2ff->DATARMNET1e49bc75c8);pr_info(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x69\x6e\x66\x6f\x2d\x3e\x73\x72\x63\x5f\x70\x6f\x72\x74\x20\x25\x75"
,DATARMNET54338da2ff->src_port);pr_info(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x69\x6e\x66\x6f\x2d\x3e\x64\x65\x73\x74\x5f\x61\x64\x64\x72\x5f\x76\x61\x6c\x69\x64\x20\x25\x75"
,DATARMNET54338da2ff->DATARMNETb035edcfb9);pr_info(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x69\x6e\x66\x6f\x2d\x3e\x73\x72\x63\x5f\x61\x64\x64\x72\x5f\x76\x61\x6c\x69\x64\x20\x25\x75"
,DATARMNET54338da2ff->DATARMNET1819cae4a3);pr_info(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x69\x6e\x66\x6f\x2d\x3e\x73\x65\x71\x20\x25\x75"
,DATARMNET54338da2ff->seq);if(DATARMNET54338da2ff->DATARMNET602389fe52==
(0xd11+230-0xdf3)&&(DATARMNET54338da2ff->DATARMNETb035edcfb9)&&(
DATARMNET54338da2ff->DATARMNET1819cae4a3)){pr_info(
"\x4e\x65\x77\x20\x66\x6c\x6f\x77\x20\x69\x6e\x66\x6f\x2d\x3e\x64\x65\x73\x74\x5f\x61\x64\x64\x72\x5f\x76\x61\x6c\x69\x64\x20\x25\x75\x20"
,DATARMNET54338da2ff->DATARMNETea422561ef.daddr);pr_info(
"\x4e\x65\x77\x20\x66\x6c\x6f\x77\x20\x69\x6e\x66\x6f\x2d\x3e\x73\x72\x63\x5f\x61\x64\x64\x72\x5f\x76\x61\x6c\x69\x64\x20\x25\x75"
,DATARMNET54338da2ff->DATARMNET53d5f671f0.saddr);}if(DATARMNET54338da2ff->
DATARMNET602389fe52==(0xd03+244-0xdf1)&&(DATARMNET54338da2ff->
DATARMNETb035edcfb9)&&(DATARMNET54338da2ff->DATARMNET1819cae4a3)){pr_info(
"\x4e\x65\x77\x20\x66\x6c\x6f\x77\x20\x69\x6e\x66\x6f\x2d\x3e\x64\x65\x73\x74\x5f\x61\x64\x64\x72\x5f\x76\x61\x6c\x69\x64\x20\x25\x75\x20\x25\x75\x20\x25\x75\x20\x25\x75\x20"
,DATARMNET63b1a086d5->DATARMNET54338da2ff.DATARMNETea422561ef.v6_daddr.in6_u.
u6_addr32[(0xd18+223-0xdf4)],DATARMNET63b1a086d5->DATARMNET54338da2ff.
DATARMNETea422561ef.v6_daddr.in6_u.u6_addr32[(0xd1f+216-0xdf5)],
DATARMNET63b1a086d5->DATARMNET54338da2ff.DATARMNETea422561ef.v6_daddr.in6_u.
u6_addr32[(0xd26+209-0xdf6)],DATARMNET63b1a086d5->DATARMNET54338da2ff.
DATARMNETea422561ef.v6_daddr.in6_u.u6_addr32[(0xd2d+202-0xdf7)]);pr_info(
"\x4e\x65\x77\x20\x66\x6c\x6f\x77\x20\x69\x6e\x66\x6f\x2d\x3e\x73\x72\x63\x5f\x61\x64\x64\x72\x5f\x76\x61\x6c\x69\x64\x20\x20\x25\x75\x20\x25\x75\x20\x25\x75\x20\x25\x75"
,DATARMNET63b1a086d5->DATARMNET54338da2ff.DATARMNET53d5f671f0.v6_saddr.in6_u.
u6_addr32[(0xd18+223-0xdf4)],DATARMNET63b1a086d5->DATARMNET54338da2ff.
DATARMNET53d5f671f0.v6_saddr.in6_u.u6_addr32[(0xd1f+216-0xdf5)],
DATARMNET63b1a086d5->DATARMNET54338da2ff.DATARMNET53d5f671f0.v6_saddr.in6_u.
u6_addr32[(0xd26+209-0xdf6)],DATARMNET63b1a086d5->DATARMNET54338da2ff.
DATARMNET53d5f671f0.v6_saddr.in6_u.u6_addr32[(0xd2d+202-0xdf7)]);}}void
DATARMNET2ac305d296(struct DATARMNET0331d6732d*DATARMNET63b1a086d5){struct
DATARMNET0331d6732d*DATARMNET9a739c7d8b;struct DATARMNET6c78e47d24*
DATARMNETd2a694d52a=NULL;unsigned long bkt;int i=(0xd2d+202-0xdf7);spin_lock_bh(
&DATARMNETd83ee17944);hash_for_each(DATARMNET5750992efb,bkt,DATARMNET9a739c7d8b,
list){i++;if(DATARMNET8fc45abdc4(DATARMNET9a739c7d8b,DATARMNET63b1a086d5)){kfree
(DATARMNET63b1a086d5);spin_unlock_bh(&DATARMNETd83ee17944);rm_err(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x25\x73",
"\x20\x44\x75\x70\x20\x66\x69\x6c\x74\x65\x72\x20\x73\x65\x65\x6e\x20\x6d\x61\x74\x63\x68\x20\x73\x65\x65\x6e\x2c\x20\x6e\x6f\x20\x69\x6e\x73\x74\x61\x6c\x6c"
);return;}}if(DATARMNETecc0627c70.DATARMNET110549da6f>=DATARMNET82243f712c){
kfree(DATARMNET63b1a086d5);spin_unlock_bh(&DATARMNETd83ee17944);
DATARMNET68d84e7b98[DATARMNET62807647a4]++;rm_err(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x25\x73" "\n",
"\x49\x6e\x73\x74\x61\x6c\x6c\x65\x64\x20\x4c\x4c\x20\x66\x69\x6c\x74\x65\x72\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x4d\x61\x78\x20\x72\x65\x61\x63\x68\x65\x64"
);return;}DATARMNETecc0627c70.DATARMNET110549da6f++;DATARMNET75ae82094a++;if(
DATARMNET756bdd424a)DATARMNET1e918c8e0d(DATARMNET63b1a086d5);hash_add(
DATARMNET5750992efb,&DATARMNET63b1a086d5->list,DATARMNET63b1a086d5->
DATARMNET54338da2ff.DATARMNET53d5f671f0.saddr);spin_unlock_bh(&
DATARMNETd83ee17944);rm_err("\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x25\x73" "\n",
"\x53\x65\x74\x74\x69\x6e\x67\x20\x6c\x6f\x77\x20\x6c\x61\x74\x65\x6e\x63\x79\x20\x66\x6c\x6f\x77\x20\x63\x68\x65\x63\x6b\x20\x66\x6f\x72\x20\x61\x6c\x6c\x20\x66\x6c\x6f\x77\x73"
);spin_lock_bh(&DATARMNETfbdbab2ef6);list_for_each_entry(DATARMNETd2a694d52a,&
DATARMNET9825511866,DATARMNET6de26f0feb){if(DATARMNETd2a694d52a->
DATARMNET63b1a086d5&&!DATARMNETd2a694d52a->DATARMNET63b1a086d5->
DATARMNET80eb31d7b8){DATARMNETd2a694d52a->DATARMNET63b1a086d5->
DATARMNET80eb31d7b8=DATARMNET64165df74d;}}spin_unlock_bh(&DATARMNETfbdbab2ef6);
rm_err("\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x25\x73" "\n",
"\x49\x6e\x73\x74\x61\x6c\x6c\x65\x64\x20\x4c\x4c\x20\x66\x69\x6c\x74\x65\x72");
}void DATARMNET337eca0417(struct sk_buff*skb,struct DATARMNET63d7680df2*
DATARMNET63b1a086d5){u32 DATARMNET1fcbf046ec=(0xd2d+202-0xdf7);u8 map=
(0xd2d+202-0xdf7),DATARMNET0258668025=(0xd2d+202-0xdf7);u16 index;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->hash,(0xd2d+202-0xdf7));skb->hash=DATARMNET1fcbf046ec;}}int
DATARMNETf5821256ad(struct sk_buff*skb,struct rmnet_shs_clnt_s*
DATARMNET0bf01e7c6f){struct DATARMNET63d7680df2*node_p;struct hlist_node*tmp;int
map=DATARMNETecc0627c70.map_mask;int DATARMNETb925972e2a=DATARMNET3874292c18;
int map_cpu;u32 hash;u8 is_match_found=(0xd2d+202-0xdf7);struct
DATARMNETe600c5b727*DATARMNETa4055affd5;struct rmnet_priv*priv;
DATARMNETefe3dcad0a++;hash=skb_get_hash(skb);if(!(DATARMNET0bf01e7c6f->config&
RMNET_SHS_STMP_ALL)&&!DATARMNETf4aefff4c2(skb)){DATARMNETe767554e6e(skb);return
(0xd2d+202-0xdf7);}spin_lock_bh(&DATARMNETd83ee17944);do{
hash_for_each_possible_safe(DATARMNET58fe8ac797,node_p,tmp,list,hash){if(hash!=
node_p->hash)continue;is_match_found=(0xd26+209-0xdf6);node_p->map_cpu=
DATARMNET3874292c18;node_p->map_index=DATARMNET04e8d1b862(node_p->map_cpu,map);
break;}if(is_match_found)break;if(DATARMNETb925972e2a<(0xd2d+202-0xdf7)){
DATARMNET68d84e7b98[DATARMNETa1f9420686]++;break;}if(atomic_long_read(&
DATARMNETecc0627c70.DATARMNET64bb8a8f57)>DATARMNETbfe31ef643){
DATARMNET68d84e7b98[DATARMNETe6e77f9f03]++;break;}node_p=kzalloc(sizeof(*node_p)
,GFP_ATOMIC);if(!node_p){DATARMNET68d84e7b98[DATARMNET394acaf558]++;break;}
atomic_long_inc(&DATARMNETecc0627c70.DATARMNET64bb8a8f57);node_p->
DATARMNETfbbec4c537=DATARMNET0bf01e7c6f->map_mask;node_p->DATARMNETa59ce1fd2d=
DATARMNETecc0627c70.map_mask;node_p->dev=skb->dev;node_p->hash=skb->hash;node_p
->map_cpu=DATARMNETb925972e2a;node_p->DATARMNET80eb31d7b8=(0xd26+209-0xdf6);
node_p->map_index=DATARMNET04e8d1b862(node_p->map_cpu,map);node_p->map_cpu=
raw_smp_processor_id();node_p->map_index=DATARMNET04e8d1b862(node_p->map_cpu,map
);INIT_LIST_HEAD(&node_p->DATARMNET04c88b8191);DATARMNET44459105b4(skb,node_p);
DATARMNET350f55bfca(node_p);map_cpu=node_p->map_cpu;DATARMNETa4055affd5=&
DATARMNET148e775ece[map_cpu];priv=netdev_priv(node_p->dev);if(!priv){rm_err(
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\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\x4c\x4c\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(DATARMNET58fe8ac797,&
node_p->list,skb->hash);is_match_found=(0xd26+209-0xdf6);break;}while(
(0xd2d+202-0xdf7));spin_unlock_bh(&DATARMNETd83ee17944);if(is_match_found){
DATARMNET337eca0417(skb,node_p);if(!node_p->DATARMNETd986107d55&&
DATARMNET362b15f941(raw_smp_processor_id())){if(DATARMNETd2d15e7f67(
raw_smp_processor_id())<DATARMNET8053357aa4&&DATARMNETdc7bead533(
raw_smp_processor_id(),(0x2495+531-0x1708))){skb->hash=(0xd2d+202-0xdf7);skb->
sw_hash=(0xd26+209-0xdf6);}else if(!node_p->DATARMNETd986107d55){node_p->
DATARMNETd986107d55=DATARMNETbb52958049;node_p->map_cpu=DATARMNETb925972e2a;
node_p->map_index=DATARMNET04e8d1b862(node_p->map_cpu,map);}}else if(node_p->
DATARMNETd986107d55!=DATARMNET46a17e3ec5){if(!DATARMNET362b15f941(
raw_smp_processor_id())){if(DATARMNETd2d15e7f67(raw_smp_processor_id())<
DATARMNET8053357aa4&&DATARMNETdc7bead533(raw_smp_processor_id(),12000)){skb->
hash=(0xd2d+202-0xdf7);skb->sw_hash=(0xd26+209-0xdf6);}else{node_p->
DATARMNETd986107d55=DATARMNET46a17e3ec5;node_p->map_cpu=DATARMNETb925972e2a;
node_p->map_index=DATARMNET04e8d1b862(node_p->map_cpu,map);}}}if(skb_shinfo(skb)
->gso_segs){node_p->DATARMNET11930c5df8+=skb_shinfo(skb)->gso_segs;
DATARMNET0997c5650d[node_p->map_cpu].DATARMNET4133fc9428++;node_p->
DATARMNETae4b27456e.DATARMNET35234676d4+=skb_shinfo(skb)->gso_segs;}else{node_p
->DATARMNET11930c5df8+=(0xd26+209-0xdf6);DATARMNET0997c5650d[node_p->map_cpu].
DATARMNET4133fc9428++;node_p->DATARMNETae4b27456e.DATARMNET35234676d4++;}node_p
->DATARMNETa8940e4a7b+=(0xd26+209-0xdf6);node_p->DATARMNET3ecedac168+=
RMNET_SKB_CB(skb)->coal_bytes;node_p->DATARMNETce5f56eab9+=RMNET_SKB_CB(skb)->
coal_bufsize;if(skb->priority==55834)node_p->DATARMNET1743c92e66++;node_p->
DATARMNET2594c418db+=skb->len;}DATARMNETe767554e6e(skb);return(0xd2d+202-0xdf7);
}void DATARMNET44499733f2(void){u8 DATARMNET0e4304d903;for(DATARMNET0e4304d903=
(0xd2d+202-0xdf7);DATARMNET0e4304d903<DATARMNETc6782fed88;DATARMNET0e4304d903++)
INIT_LIST_HEAD(&DATARMNET148e775ece[DATARMNET0e4304d903].DATARMNET3dc4262f53);}
void DATARMNET90fe3a4b56(void){struct DATARMNET0331d6732d*DATARMNET63b1a086d5;
struct hlist_node*tmp;unsigned long bkt;rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x44\x65\x2d\x69\x6e\x69\x74\x20\x4c\x4c\x20\x62\x6f\x6f\x6b\x2d\x6b\x65\x65\x70\x69\x6e\x67"
);spin_lock_bh(&DATARMNETd83ee17944);hash_for_each_safe(DATARMNET58fe8ac797,bkt,
tmp,DATARMNET63b1a086d5,list){hash_del_rcu(&DATARMNET63b1a086d5->list);}
hash_for_each_safe(DATARMNET5750992efb,bkt,tmp,DATARMNET63b1a086d5,list){
hash_del_rcu(&DATARMNET63b1a086d5->list);kfree(DATARMNET63b1a086d5);
DATARMNETecc0627c70.DATARMNET110549da6f--;DATARMNET75ae82094a--;}spin_unlock_bh(
&DATARMNETd83ee17944);rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x44\x65\x2d\x69\x6e\x69\x74\x20\x4c\x4c\x20\x62\x6f\x6f\x6b\x2d\x6b\x65\x65\x70\x69\x6e\x67\x20\x65\x78\x69\x74"
);}

View File

@ -0,0 +1,22 @@
/* 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 DATARMNETf391f4bee3
#define DATARMNETf391f4bee3
int DATARMNETf5821256ad(struct sk_buff*skb,struct rmnet_shs_clnt_s*
DATARMNET0bf01e7c6f);void DATARMNET44499733f2(void);void DATARMNET90fe3a4b56(
void);void DATARMNET2ac305d296(struct DATARMNET0331d6732d*DATARMNET63b1a086d5);
void DATARMNETd52d50282d(struct DATARMNET0331d6732d*DATARMNET63b1a086d5);int
DATARMNETe24386452c(struct sk_buff*skb);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,252 @@
/* Copyright (c) 2020-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 "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,DATARMNET243c638e7d,DATARMNET243c638e7d,
DATARMNET243c638e7d,DATARMNETb38cb72105,DATARMNETb38cb72105,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,DATARMNET22feab5726,DATARMNET22feab5726,
DATARMNET22feab5726,DATARMNET9bc9e0cac3,DATARMNET9bc9e0cac3,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 DATARMNET121c8bc82a __read_mostly=(0xd2d+202-0xdf7);module_param(
DATARMNET121c8bc82a,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET121c8bc82a,
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x73\x65\x72\x76\x65\x5f\x6d\x61\x73\x6b"
);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"
);unsigned int DATARMNET3874292c18=DATARMNET2d0941aa7c;module_param(
DATARMNET3874292c18,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET3874292c18,
"\x43\x75\x72\x72\x65\x6e\x74\x20\x4c\x4c\x20\x66\x6c\x6f\x77\x20\x63\x70\x75\x20"
);unsigned int DATARMNETbb1a9dff8b=(0xd1f+216-0xdf5);module_param(
DATARMNETbb1a9dff8b,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETbb1a9dff8b,
"\x43\x75\x72\x72\x65\x6e\x74\x20\x4c\x4c\x20\x70\x68\x79\x20\x63\x70\x75\x20");
unsigned int DATARMNETd619186789=(0xd2d+202-0xdf7);module_param(
DATARMNETd619186789,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETd619186789,
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x57\x71\x20\x65\x78\x65\x63\x75\x74\x69\x6f\x6e\x20\x74\x69\x63\x6b\x20"
);unsigned int DATARMNETaf95716235=(0xd2d+202-0xdf7);module_param(
DATARMNETaf95716235,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETaf95716235,
"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x77\x71\x20\x70\x61\x75\x73\x65\x20\x63\x6f\x75\x6e\x74"
);unsigned int DATARMNET7e039054c6=(0xd2d+202-0xdf7);module_param(
DATARMNET7e039054c6,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET7e039054c6,
"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x77\x71\x20\x72\x65\x73\x74\x61\x72\x74\x20\x63\x6f\x75\x6e\x74"
);unsigned int DATARMNET68dc14b50d=(0xd26+209-0xdf6);module_param(
DATARMNET68dc14b50d,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET68dc14b50d,
"\x72\x65\x73\x65\x72\x76\x65\x20\x6d\x61\x73\x6b\x20\x66\x65\x61\x74\x75\x72\x65\x20\x66\x6c\x61\x67"
);unsigned int rmnet_shs_no_sync_off=(0xd26+209-0xdf6);module_param(
rmnet_shs_no_sync_off,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
rmnet_shs_no_sync_off,
"\x72\x6d\x6e\x65\x74\x20\x6e\x6f\x20\x73\x79\x6e\x63\x20\x66\x65\x61\x74\x75\x72\x65\x20\x74\x6f\x67\x67\x6c\x65"
);unsigned int DATARMNET952c960091=(0xd2d+202-0xdf7);module_param(
DATARMNET952c960091,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET952c960091,
"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x61\x73\x79\x6e\x63\x20\x70\x61\x63\x6b\x65\x74\x20\x63\x6f\x75\x6e\x74"
);

View File

@ -0,0 +1,63 @@
/* Copyright (c) 2020 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 "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];extern unsigned int DATARMNET3874292c18
;extern unsigned int DATARMNETbb1a9dff8b;extern unsigned int DATARMNET121c8bc82a
;extern unsigned int DATARMNETd619186789;extern unsigned int DATARMNETaf95716235
;extern unsigned int DATARMNET7e039054c6;extern unsigned int DATARMNET952c960091
;extern unsigned int rmnet_shs_no_sync_off;extern unsigned int
DATARMNET68dc14b50d;
#endif

View File

@ -0,0 +1,995 @@
/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2024 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 <linux/workqueue.h>
#include <linux/list_sort.h>
#include <net/sock.h>
#include <linux/skbuff.h>
#if IS_ENABLED(CONFIG_SCHED_WALT)
#include <linux/sched/walt.h>
#endif
#include "rmnet_shs_modules.h"
#include "rmnet_shs_common.h"
#include <linux/pm_wakeup.h>
#include "rmnet_module.h"
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 DATARMNET8853edc997 (0xd1f+216-0xdf5)
#define DATARMNETbf1e2975c1 (0xd0a+237-0xdf2)
#define DATARMNETea0e3bb99c (0xd03+244-0xdf1)
#define DATARMNET81ec51f31c (0xef7+637-0x10f5)
#define DATARMNET69be7dee16 15000
#define DATARMNETc6f7fb02ea 34000
#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 DATARMNET63229bfce5=LIST_HEAD_INIT(
DATARMNET63229bfce5);struct list_head DATARMNET9825511866=LIST_HEAD_INIT(
DATARMNET9825511866);static int DATARMNETe038d33545;struct list_head
DATARMNET30a3e83974=LIST_HEAD_INIT(DATARMNET30a3e83974);static int
DATARMNET882958a556(int cpu){
#if IS_ENABLED(CONFIG_SCHED_WALT)
cpumask_t DATARMNETaec9fb9581=walt_get_cpus_taken();return cpumask_test_cpu(cpu,
&DATARMNETaec9fb9581);
#else
return(0xd2d+202-0xdf7);
#endif
}static void DATARMNET6f7f8bf494(void){struct DATARMNET177911299b
DATARMNETecb92a9ca5;DATARMNET1d4b1eff85(&DATARMNETecb92a9ca5,DATARMNETecc0627c70
.DATARMNET7d667e828e,DATARMNETecc0627c70.DATARMNET7d667e828e);
DATARMNETb5d58adbe7(&DATARMNETecb92a9ca5);}static void DATARMNETdb368d4fbd(void)
{
#if IS_ENABLED(CONFIG_SCHED_WALT)
cpumask_t DATARMNETaec9fb9581={CPU_BITS_NONE};int DATARMNETda889fd34d;unsigned
int DATARMNET9824ef7d49=(0xd2d+202-0xdf7);if(walt_get_cpus_in_state1(&
DATARMNETaec9fb9581)<(0xd2d+202-0xdf7))return;for(DATARMNETda889fd34d=
(0xd2d+202-0xdf7);DATARMNETda889fd34d<DATARMNETc6782fed88;DATARMNETda889fd34d++)
{if(cpumask_test_cpu(DATARMNETda889fd34d,&DATARMNETaec9fb9581)){
DATARMNET9824ef7d49|=(0xd26+209-0xdf6)<<DATARMNETda889fd34d;}}if((
DATARMNET9824ef7d49&((0xd26+209-0xdf6)<<DATARMNETbf1e2975c1))&&(
DATARMNET9824ef7d49&((0xd26+209-0xdf6)<<DATARMNETea0e3bb99c))){if(((
DATARMNETecc0627c70.DATARMNETf510b48c29&((0xd26+209-0xdf6)<<DATARMNETbf1e2975c1)
)&&(DATARMNETecc0627c70.DATARMNETf510b48c29&((0xd26+209-0xdf6)<<
DATARMNETea0e3bb99c)))){DATARMNETecc0627c70.DATARMNET637025ccc1|=
(0xd26+209-0xdf6)<<DATARMNETbf1e2975c1;DATARMNETecc0627c70.DATARMNET637025ccc1|=
(0xd26+209-0xdf6)<<DATARMNETea0e3bb99c;DATARMNETecc0627c70.DATARMNETf510b48c29=(
(0xbf7+4364-0x1c04)^DATARMNETecc0627c70.DATARMNET637025ccc1);DATARMNETecc0627c70
.DATARMNET2f954f58f8=hweight_long(DATARMNETecc0627c70.DATARMNET637025ccc1);
DATARMNET4793ed48af[DATARMNETbf1e2975c1]=DATARMNET9bc9e0cac3;DATARMNET4793ed48af
[DATARMNETea0e3bb99c]=DATARMNET9bc9e0cac3;DATARMNET713717107f[
DATARMNETbf1e2975c1]=DATARMNETb38cb72105;DATARMNET713717107f[DATARMNETea0e3bb99c
]=DATARMNETb38cb72105;trace_rmnet_shs_wq_low(DATARMNETf783febe14,
DATARMNET94906cea05,DATARMNETecc0627c70.DATARMNETf510b48c29,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);DATARMNETb7ddf3c5dd[
DATARMNET706cd2d052]++;}}else{if(((DATARMNETecc0627c70.DATARMNET637025ccc1&(
(0xd26+209-0xdf6)<<DATARMNETbf1e2975c1))&&(DATARMNETecc0627c70.
DATARMNET637025ccc1&((0xd26+209-0xdf6)<<DATARMNETea0e3bb99c)))){
DATARMNETecc0627c70.DATARMNETf510b48c29|=(0xd26+209-0xdf6)<<DATARMNETbf1e2975c1;
DATARMNETecc0627c70.DATARMNETf510b48c29|=(0xd26+209-0xdf6)<<DATARMNETea0e3bb99c;
DATARMNETecc0627c70.DATARMNET637025ccc1=((0xbf7+4364-0x1c04)^DATARMNETecc0627c70
.DATARMNETf510b48c29);DATARMNETecc0627c70.DATARMNET2f954f58f8=hweight_long(
DATARMNETecc0627c70.DATARMNET637025ccc1);DATARMNET4793ed48af[DATARMNETbf1e2975c1
]=DATARMNET22feab5726;DATARMNET4793ed48af[DATARMNETea0e3bb99c]=
DATARMNET22feab5726;DATARMNET713717107f[DATARMNETbf1e2975c1]=DATARMNET243c638e7d
;DATARMNET713717107f[DATARMNETea0e3bb99c]=DATARMNET243c638e7d;
trace_rmnet_shs_wq_low(DATARMNETf783febe14,DATARMNET94906cea05,
DATARMNETecc0627c70.DATARMNETf510b48c29,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);DATARMNETb7ddf3c5dd[DATARMNETaac8ed4c2d]++;}}
#endif
}static void DATARMNETae3b7a67f8(void){
#if IS_ENABLED(CONFIG_SCHED_WALT)
int DATARMNETda889fd34d=(0xd2d+202-0xdf7);int DATARMNETb9aecdfadd=
(0xd2d+202-0xdf7);int DATARMNET054dda278c=(0xd2d+202-0xdf7);int
DATARMNET09cb196c21=(0xd26+209-0xdf6);int DATARMNETcfb5dc7296;cpumask_t
DATARMNETaec9fb9581=walt_get_cpus_taken();if(!DATARMNET68dc14b50d)return;for(
DATARMNETda889fd34d=(0xd2d+202-0xdf7);DATARMNETda889fd34d<DATARMNET8853edc997;
DATARMNETda889fd34d++){if(cpumask_test_cpu(DATARMNETda889fd34d,&
DATARMNETaec9fb9581)){DATARMNETb9aecdfadd++;DATARMNET054dda278c|=
(0xd26+209-0xdf6)<<DATARMNETda889fd34d;}if(DATARMNETb9aecdfadd>=
DATARMNET8853edc997){DATARMNET68d84e7b98[DATARMNETdfffcec2c8]++;break;}}
DATARMNET121c8bc82a=DATARMNET054dda278c;if(((0xd26+209-0xdf6)<<
DATARMNETecc0627c70.DATARMNET7d667e828e)&DATARMNET121c8bc82a){
DATARMNETcfb5dc7296=DATARMNET362c14e98b(DATARMNETecc0627c70.map_mask&
DATARMNETbc3c416b77&~DATARMNETecc0627c70.DATARMNETba3f7a11ef&~
DATARMNET121c8bc82a);if(DATARMNETcfb5dc7296>(0xd2d+202-0xdf7)){
DATARMNET09cb196c21=DATARMNETcfb5dc7296;DATARMNETecc0627c70.DATARMNET5c24e1df05=
DATARMNET09cb196c21;rcu_read_lock();RCU_INIT_POINTER(rmnet_shs_switch,
DATARMNET756778f14f);rcu_read_unlock();}}
#endif
}int DATARMNETdc7bead533(unsigned DATARMNET42a992465f,unsigned
DATARMNET435f2b5517){struct DATARMNET228056d4b7*DATARMNETf632b170b1;struct
DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;if(
DATARMNET42a992465f>=DATARMNETc6782fed88){DATARMNET68d84e7b98[
DATARMNET54b67b8a75]++;return(0xd2d+202-0xdf7);}DATARMNETf632b170b1=&
DATARMNET7bea4a06a6->DATARMNET73464778dc[DATARMNET42a992465f];return
DATARMNETf632b170b1->DATARMNET324c1a8f98>DATARMNET435f2b5517;}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->DATARMNET77b978dd84=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->
DATARMNET3b7421773f=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET29c6349349=
(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));DATARMNETd2a694d52a->bif=(0xd2d+202-0xdf7);
DATARMNETd2a694d52a->ack_thresh=(0xd2d+202-0xdf7);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;rcu_read_lock();spin_lock_bh(&DATARMNETfbdbab2ef6);
list_for_each_entry_rcu(DATARMNETd2a694d52a,&DATARMNET9825511866,
DATARMNET6de26f0feb){if(DATARMNETd2a694d52a->DATARMNET0dc393a345==
(0xd2d+202-0xdf7)){DATARMNETe70783182f=DATARMNETd2a694d52a;DATARMNETe70783182f->
DATARMNET0dc393a345=(0xd26+209-0xdf6);DATARMNETe70783182f->DATARMNET8a4e1d5aaa=
(0xd26+209-0xdf6);break;}}spin_unlock_bh(&DATARMNETfbdbab2ef6);rcu_read_unlock()
;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->
DATARMNET3b7421773f=node_p->DATARMNET341ea38662->DATARMNET77b978dd84;
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->
DATARMNET77b978dd84=node_p->DATARMNET1743c92e66;DATARMNETdbe9f3dbe3->
DATARMNET29c6349349=DATARMNETdbe9f3dbe3->DATARMNET77b978dd84!=
DATARMNETdbe9f3dbe3->DATARMNET3b7421773f;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);DATARMNETdbe9f3dbe3->bif=node_p->bif;
DATARMNETdbe9f3dbe3->ack_thresh=node_p->ack_thresh;DATARMNETd2da2e8466(
"\x53\x48\x53\x5f\x51\x55\x49\x43\x4b\x41\x43\x4b\x3a\x20\x62\x69\x66\x20\x3d\x20\x25\x75\x20\x61\x63\x6b\x5f\x74\x68\x72\x65\x73\x68\x20\x3d\x20\x25\x75"
,node_p->bif,node_p->ack_thresh);}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);
DATARMNET0997c5650d[cpu].DATARMNET72067bf727=(0xd2d+202-0xdf7);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(DATARMNET362b15f941(cpu)&&
DATARMNETcf7ef40ff9->DATARMNET324c1a8f98<DATARMNETc6f7fb02ea&&
DATARMNETcf7ef40ff9->DATARMNET324c1a8f98>DATARMNET69be7dee16){
DATARMNET0997c5650d[cpu].DATARMNET72067bf727=(0xd26+209-0xdf6);}else{
DATARMNET0997c5650d[cpu].DATARMNET72067bf727=(0xd2d+202-0xdf7);}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<
DATARMNETc6782fed88;cpu++)DATARMNET73d2153565(cpu);trace_rmnet_shs_wq_high(
DATARMNET39a68a0eba,DATARMNET5c7c474d94,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNET5b2ed86112(
struct DATARMNET6c78e47d24*DATARMNET7b2c1bbf38){struct DATARMNETc8fdbf9c85*
DATARMNET3c48cbf7e4=&DATARMNET6cdd58e74c;struct DATARMNET63d7680df2*node_p;u64
DATARMNETee9f72f13f,byte_diff;u16 DATARMNET42a992465f;if(!DATARMNET7b2c1bbf38){
DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}node_p=DATARMNET7b2c1bbf38->
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(
DATARMNET42a992465f!=DATARMNET7b2c1bbf38->DATARMNET7c894c2f8f&&!
DATARMNET7b2c1bbf38->DATARMNET8a4e1d5aaa){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;}else if(DATARMNET7b2c1bbf38->DATARMNET8a4e1d5aaa){
DATARMNET0349051465(DATARMNET42a992465f);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);
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;u16
bkt;spin_lock_bh(&DATARMNET3764d083f0);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_bh(&
DATARMNET3764d083f0);}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;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);}spin_lock_bh
(&DATARMNET3764d083f0);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_bh(&DATARMNET3764d083f0
);return rc;}u64 DATARMNETd406e89a85(u32 DATARMNETfaedbb66a9){int
DATARMNET42a992465f;u64 DATARMNET5a8059a7ce=(0xd2d+202-0xdf7);struct
DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;for(
DATARMNET42a992465f=(0xd2d+202-0xdf7);DATARMNET42a992465f<DATARMNETc6782fed88;
DATARMNET42a992465f++){if((((0xd26+209-0xdf6)<<DATARMNET42a992465f)&
DATARMNETfaedbb66a9)&&(DATARMNET7bea4a06a6->DATARMNET73464778dc[
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)
<<DATARMNET42a992465f)&DATARMNETfaedbb66a9)&&cpu_online(DATARMNET42a992465f)&&!
DATARMNET882958a556(DATARMNET42a992465f);if(!DATARMNETdebcca6b26)continue;
DATARMNET65385af8a0=&DATARMNET7bea4a06a6->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
->flows<DATARMNET84d36cfd28){DATARMNET84d36cfd28=DATARMNET65385af8a0->flows;
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<DATARMNETc6782fed88;
DATARMNET42a992465f++){DATARMNETca535905d7=(((0xd26+209-0xdf6)<<
DATARMNET42a992465f)&(ep->DATARMNET9fb369ce5f&~DATARMNETecc0627c70.
DATARMNETba3f7a11ef)&~DATARMNET121c8bc82a);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)<<DATARMNET208ea67e1d)&ep->DATARMNET9fb369ce5f&~
DATARMNETecc0627c70.DATARMNETba3f7a11ef&~DATARMNET121c8bc82a;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){struct DATARMNET9b44b71ee9*ep;if(DATARMNETc790ff30fc>=
DATARMNETc6782fed88||DATARMNET208ea67e1d>=DATARMNETc6782fed88){
DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return(0xd2d+202-0xdf7);}spin_lock_bh
(&DATARMNETec2a4f5211);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_bh(&DATARMNETec2a4f5211);return(0xd26+209-0xdf6);}}spin_unlock_bh(
&DATARMNETec2a4f5211);return(0xd2d+202-0xdf7);}int DATARMNETf85599b9d8(u32
DATARMNET8c11bd9466,u8 DATARMNET87636d0152){struct DATARMNET63d7680df2*node_p;
struct DATARMNET6c78e47d24*DATARMNET7b2c1bbf38;u16 bkt;spin_lock_bh(&
DATARMNET3764d083f0);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_bh(&DATARMNET3764d083f0);return(0xd26+209-0xdf6);}spin_unlock_bh(&
DATARMNET3764d083f0);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);}int
DATARMNET1faf2b953f(u32 DATARMNET8c11bd9466,u32 ack_thresh){rm_err(
"\x43\x61\x6c\x6c\x69\x6e\x67\x20\x71\x75\x69\x63\x6b\x61\x63\x6b\x20\x74\x68\x72\x65\x73\x68\x20\x68\x6f\x6f\x6b\x20\x69\x6e\x20\x72\x6d\x6e\x65\x74\x5f\x70\x65\x72\x66\x20\x77\x2f\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x61\x6e\x64\x20\x74\x68\x72\x65\x73\x68\x20\x25\x75"
,DATARMNET8c11bd9466,ack_thresh);if(rmnet_module_hook_perf_set_thresh(
DATARMNET8c11bd9466,ack_thresh)){rm_err(
"\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x63\x68\x61\x6e\x67\x65\x64\x20\x61\x63\x6b\x5f\x74\x68\x72\x65\x73\x68\x20\x74\x6f\x20\x25\x75"
,ack_thresh);return(0xd26+209-0xdf6);}rm_err(
"\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x68\x61\x6e\x67\x65\x20\x61\x63\x6b\x5f\x74\x68\x72\x65\x73\x68\x20\x74\x6f\x20\x25\x75"
,ack_thresh);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);
DATARMNET42a992465f<DATARMNETc6782fed88;DATARMNET42a992465f++){
DATARMNETf632b170b1=&DATARMNET7bea4a06a6->DATARMNET73464778dc[
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);rcu_read_lock();
list_for_each_entry_rcu(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);}}rcu_read_unlock();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,struct
list_head*DATARMNETf629816d3d){if(!DATARMNETe46ae760db||!DATARMNETb436c3f30b||!
DATARMNETf0fb155a9c||!DATARMNET3208cd0982||!DATARMNETf629816d3d){
DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}list_sort(NULL,
DATARMNETe46ae760db,&DATARMNET85af86a36d);list_sort(NULL,DATARMNETb436c3f30b,&
DATARMNETd5c15f1ff3);list_sort(NULL,DATARMNET3208cd0982,&DATARMNET3c489db64a);
list_sort(NULL,DATARMNETf629816d3d,&DATARMNET4e292977da);DATARMNET5157210c44(
DATARMNETe46ae760db);DATARMNET0e273eab79(DATARMNETb436c3f30b);
DATARMNETe15af8eb6d(DATARMNETf0fb155a9c);DATARMNET78f3a0ca4f(DATARMNET3208cd0982
);DATARMNETa3d6c4072d(DATARMNETf629816d3d);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);
DATARMNET42a992465f<DATARMNETc6782fed88;DATARMNET42a992465f++){flows=
DATARMNET7bea4a06a6->DATARMNET73464778dc[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|
DATARMNET121c8bc82a))||!cpu_online(DATARMNET42a992465f)||((DATARMNET253a9fc708<
DATARMNET53ce143c7e)&&(DATARMNETc7c10881f4<DATARMNET53ce143c7e)))
DATARMNET466244e5d6(DATARMNET42a992465f);}}void DATARMNETe00453a3e4(struct
DATARMNET9b44b71ee9*ep){int DATARMNET9025861a27;int DATARMNETef87f9e251;u16
DATARMNETb773055ecd;u16 DATARMNETc312f6517d;u16 DATARMNETc35b40fa7b;u8
DATARMNETffd83bb362=(0xd2d+202-0xdf7);u8 DATARMNET24f6ce5dc0=(0xd2d+202-0xdf7);
if(!ep){DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;return;}DATARMNETb773055ecd=
ep->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&~
DATARMNET121c8bc82a);if(DATARMNET9025861a27>=(0xd2d+202-0xdf7)){ep->
DATARMNET5af04d0405[DATARMNETffd83bb362]=DATARMNET9025861a27;DATARMNETc312f6517d
=DATARMNETc312f6517d&~((0xd26+209-0xdf6)<<DATARMNET9025861a27);
DATARMNETffd83bb362++;}else{break;}}while(DATARMNETc312f6517d!=(0xd2d+202-0xdf7)
);trace_rmnet_shs_wq_low(DATARMNET39a68a0eba,DATARMNETb9205423e5,ep->
DATARMNET5af04d0405[(0xd2d+202-0xdf7)],ep->DATARMNET5af04d0405[(0xd26+209-0xdf6)
],ep->DATARMNET5af04d0405[(0xd1f+216-0xdf5)],ep->DATARMNETd7a83774f8,ep,NULL);do
{DATARMNETef87f9e251=DATARMNET362c14e98b(DATARMNETc35b40fa7b&~
DATARMNETecc0627c70.DATARMNETba3f7a11ef&~DATARMNET121c8bc82a);if(
DATARMNETef87f9e251>=(0xd2d+202-0xdf7)){ep->DATARMNET7167e10d99[
DATARMNET24f6ce5dc0]=DATARMNETef87f9e251;DATARMNETc35b40fa7b=DATARMNETc35b40fa7b
&~((0xd26+209-0xdf6)<<DATARMNETef87f9e251);DATARMNET24f6ce5dc0++;}else break;}
while(DATARMNETc35b40fa7b!=(0xd2d+202-0xdf7));ep->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,atomic_long_t DATARMNET64bb8a8f57){int ret=
false;u32 flows=atomic_long_read(&DATARMNETecc0627c70.DATARMNET64bb8a8f57);if(
time>DATARMNETa804c0b904)ret=true;else if(flows>DATARMNET1c2d76f636&&time>
DATARMNET2922c89d50)ret=true;else if(flows>DATARMNET7a815512d3&&time>
DATARMNET270b564b55)ret=true;return ret;}void DATARMNET39391a8bc5(u8
DATARMNETcd94e0d3c7){struct DATARMNET63d7680df2*node_p=NULL;ktime_t
DATARMNETf48008e7b6;struct DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;struct
list_head*DATARMNET7b34b7b5be=NULL,*next=NULL;rcu_read_lock();spin_lock_bh(&
DATARMNET3764d083f0);list_for_each_safe(DATARMNET7b34b7b5be,next,&
DATARMNET9825511866){DATARMNETd2a694d52a=list_entry(DATARMNET7b34b7b5be,struct
DATARMNET6c78e47d24,DATARMNET6de26f0feb);if(DATARMNETd2a694d52a->
DATARMNET63b1a086d5==NULL)continue;if(DATARMNETecc0627c70.DATARMNET75af9f3c31&&!
DATARMNETcd94e0d3c7)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){if(
node_p->DATARMNET80eb31d7b8){spin_lock_bh(&DATARMNETd83ee17944);
DATARMNETde8ee16f92(node_p);hash_del_rcu(&node_p->list);node_p->
DATARMNET04c88b8191.next=NULL;node_p->DATARMNET04c88b8191.prev=NULL;kfree(node_p
);spin_unlock_bh(&DATARMNETd83ee17944);}else{DATARMNETde8ee16f92(node_p);
hash_del_rcu(&node_p->list);node_p->DATARMNET04c88b8191.next=NULL;node_p->
DATARMNET04c88b8191.prev=NULL;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);DATARMNETd2a694d52a->
DATARMNET6de26f0feb.next=NULL;DATARMNETd2a694d52a->DATARMNET6de26f0feb.prev=NULL
;kfree(DATARMNETd2a694d52a);}else{DATARMNETa6e92c3315(DATARMNETd2a694d52a);}
atomic_long_dec(&DATARMNETecc0627c70.DATARMNET64bb8a8f57);}}spin_unlock_bh(&
DATARMNET3764d083f0);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);len<map->len;len++)ep->DATARMNET9fb369ce5f|=(
(0xd26+209-0xdf6)<<map->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;if(!dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;return;}
spin_lock_bh(&DATARMNETec2a4f5211);list_for_each_entry_safe(ep,tmp,&
DATARMNET30a3e83974,DATARMNET0763436b8d){if(ep->ep==dev){ep->DATARMNET4a4e6f66b5
=(0xd2d+202-0xdf7);DATARMNETf7d317ed55(ep);ep->DATARMNET0763436b8d.next=NULL;ep
->DATARMNET0763436b8d.prev=NULL;kfree(ep);break;}}spin_unlock_bh(&
DATARMNETec2a4f5211);}void DATARMNET7492293980(struct net_device*dev){struct
DATARMNET9b44b71ee9*ep=NULL;if(!dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;
return;}spin_lock_bh(&DATARMNETec2a4f5211);ep=kzalloc(sizeof(*ep),GFP_ATOMIC);if
(!ep){DATARMNET68d84e7b98[DATARMNET40ceff078e]++;spin_unlock_bh(&
DATARMNETec2a4f5211);return;}ep->ep=dev;ep->DATARMNET4a4e6f66b5=
(0xd26+209-0xdf6);INIT_LIST_HEAD(&ep->DATARMNET0763436b8d);DATARMNETe69c918dc8(
ep);DATARMNET4095253347(ep);spin_unlock_bh(&DATARMNETec2a4f5211);}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);cpu<DATARMNETc6782fed88;cpu++
){DATARMNET2d482e7d9f[cpu]=(0xd2d+202-0xdf7);DATARMNET0997c5650d[cpu].seg=
(0xd2d+202-0xdf7);}rcu_read_lock();list_for_each_entry_rcu(DATARMNETd2a694d52a,&
DATARMNET9825511866,DATARMNET6de26f0feb){if(DATARMNETd2a694d52a->
DATARMNET0dc393a345==(0xd2d+202-0xdf7))continue;if(DATARMNETd2a694d52a->
DATARMNET253a9fc708>DATARMNET832dcfb5f8&&DATARMNETd2a694d52a->
DATARMNET4b4a76b094>DATARMNET59f7cb903f)if(DATARMNETd2a694d52a->
DATARMNET7c894c2f8f<DATARMNETc6782fed88){DATARMNET421230d879=DATARMNETd2a694d52a
->DATARMNET7c894c2f8f;DATARMNET2d482e7d9f[DATARMNET421230d879]++;}
DATARMNETc790ff30fc=DATARMNETd2a694d52a->DATARMNET7c894c2f8f;if(
DATARMNETc790ff30fc>=DATARMNETc6782fed88||DATARMNETc790ff30fc<(0xd2d+202-0xdf7))
{continue;}if(DATARMNETd2a694d52a->DATARMNET87636d0152>(0xd2d+202-0xdf7)){
DATARMNET0997c5650d[DATARMNETc790ff30fc].seg++;}}rcu_read_unlock();}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();DATARMNETae3b7a67f8();
DATARMNETdb368d4fbd();if((DATARMNETd619186789&DATARMNET81ec51f31c)==
DATARMNET81ec51f31c)DATARMNET6f7f8bf494();rcu_read_lock();
list_for_each_entry_rcu(DATARMNETd2a694d52a,&DATARMNET9825511866,
DATARMNET6de26f0feb){if(DATARMNETd2a694d52a->DATARMNET0dc393a345==
(0xd2d+202-0xdf7))continue;if(DATARMNETd2a694d52a->DATARMNET63b1a086d5){
DATARMNET9a7769cf21(DATARMNETd2a694d52a);DATARMNET5b2ed86112(DATARMNETd2a694d52a
);if(DATARMNETc252c204a8){if(DATARMNETd2a694d52a->DATARMNET63b1a086d5->
DATARMNET80eb31d7b8){DATARMNET312b06829d(DATARMNETd2a694d52a,&
DATARMNET922b4752e2);}else{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);}}}rcu_read_unlock();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,&DATARMNET922b4752e2);
DATARMNETa1b141715b(&DATARMNET6c23f11e81);DATARMNET3af54cd726(&
DATARMNETf91b305f4e);DATARMNETb177316a15(&DATARMNETe46ae760db);
DATARMNETcc489fbbad(&DATARMNET3208cd0982);DATARMNETf7730d41c1(&
DATARMNET922b4752e2);}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
DATARMNET28085cfd14;trace_rmnet_shs_wq_high(DATARMNET4fe8e8c1a9,
DATARMNET5a417740cb,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);DATARMNETd619186789++;spin_lock_bh(&
DATARMNETec2a4f5211);DATARMNETcd6e26f0ad();spin_unlock_bh(&DATARMNETec2a4f5211);
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);ep->DATARMNET0763436b8d.next=NULL;ep->
DATARMNET0763436b8d.prev=NULL;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<DATARMNETc6782fed88;
DATARMNET42a992465f++){trace_rmnet_shs_wq_high(DATARMNET92b282b12c,
DATARMNET57cad43bb7,DATARMNET42a992465f,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c.
DATARMNET73464778dc[DATARMNET42a992465f];INIT_LIST_HEAD(&DATARMNET7bea4a06a6->
DATARMNETab5c1e9ad5);DATARMNET7bea4a06a6->DATARMNET42a992465f=
DATARMNET42a992465f;}}void DATARMNET4063c95208(void){int cpu;DATARMNETaf95716235
++;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)<<DATARMNETecc0627c70.DATARMNET7d667e828e)
&DATARMNETbc3c416b77)&&(((0xd26+209-0xdf6)<<(0xd26+209-0xdf6))&~
DATARMNET121c8bc82a)){DATARMNETecc0627c70.DATARMNET5c24e1df05=(0xd26+209-0xdf6);
DATARMNET8f9da46b14();DATARMNETb7ddf3c5dd[DATARMNET6ea8a58f4e]++;}
rcu_read_unlock();}void DATARMNET7b6c061b06(void){DATARMNET7e039054c6++;if(
DATARMNETf141197982&&DATARMNET9dc7755be5)queue_delayed_work(DATARMNETf141197982,
&DATARMNET9dc7755be5->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);cpu<DATARMNETc6782fed88;cpu++){DATARMNET847bd62811=
DATARMNETb709a938b5(cpu);if(DATARMNET847bd62811>DATARMNET59bd820724)
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(;DATARMNETaff7dd6611<DATARMNET2ab4b15bd2;
DATARMNETaff7dd6611++){DATARMNET847bd62811=DATARMNETb709a938b5(
DATARMNETaff7dd6611);if(DATARMNET847bd62811>DATARMNET59bd820724)
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);
}

View File

@ -0,0 +1,143 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2024 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 <linux/ktime.h>
#include <linux/arch_topology.h>
#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+1174-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,DATARMNET5898b2a84b,DATARMNET0fec83de79,
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
DATARMNET3b7421773f;u32 DATARMNET77b978dd84;u32 DATARMNET9fb369ce5f;u32
DATARMNET17f2abdf03;u32 DATARMNET399c840115;u32 DATARMNET1a1d89d417;u32
DATARMNETb932033f50;u32 hash;u32 bif;u32 ack_thresh;int DATARMNETb5f5519502;u16
DATARMNET6e1a4eaf09;u16 DATARMNET7c894c2f8f;u16 DATARMNET1e9d25d9ff;u8
DATARMNET29c6349349;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 DATARMNETe176be7f7c{struct list_head
DATARMNET7287946e7b;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;
u8 DATARMNETda8e8ae7ed;};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;u32
bif;u32 ack_thresh;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);int DATARMNET1faf2b953f(u32 DATARMNET8c11bd9466,u32
ack_thresh);void DATARMNET6bf538fa23(void);void DATARMNETaea4c85748(void);void
DATARMNETcd6e26f0ad(void);int DATARMNETdc7bead533(unsigned DATARMNET42a992465f,
unsigned DATARMNET435f2b5517);
#endif

View File

@ -0,0 +1,353 @@
/* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2024 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_ll.h"
#include "rmnet_shs_wq_genl.h"
#include <net/sock.h>
#include <linux/skbuff.h>
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)),[DATARMNET6ab4513e45]=
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNETbf4d34b241)),[DATARMNET627787b1dd]=
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNET1ac24ff95c)),[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(
DATARMNETc574b5cfba,DATARMNET740f3b34b3),DATARMNETcfe22ed4d3(DATARMNET8e3adfc5dd
,DATARMNET29175fb5fc),DATARMNETcfe22ed4d3(DATARMNETffb2945689,
DATARMNETd81d2866ba),DATARMNETcfe22ed4d3(DATARMNET51b1ee5a68,DATARMNETc850634243
),DATARMNETcfe22ed4d3(RMNET_SHS_GENL_CMD_LL_FLOW,DATARMNET283f08f439),
DATARMNETcfe22ed4d3(DATARMNET93b3e11659,DATARMNET9bbfc822c2),};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),DATARMNETc574b5cfba);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),DATARMNETc574b5cfba
);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),DATARMNETc574b5cfba
);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\x3a\x20\x43\x6c\x65\x61\x72\x20\x4c\x4c"
);DATARMNET90fe3a4b56();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 DATARMNET283f08f439(
struct sk_buff*DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff){struct
nlattr*na;struct DATARMNET0331d6732d*DATARMNETc4af21d05e;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\x6c\x6c"
);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[DATARMNET6ab4513e45];
if(na){DATARMNETc4af21d05e=kzalloc(sizeof(*DATARMNETc4af21d05e),GFP_ATOMIC);if(!
DATARMNETc4af21d05e){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\x6c\x6c\x20\x66\x6c\x6f\x77\x20\x69\x6e\x66\x6f\x20\x66\x61\x69\x6c\x75\x72\x65"
);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET00895c1601);return
(0xd2d+202-0xdf7);}if(nla_memcpy(&DATARMNETc4af21d05e->DATARMNET54338da2ff,na,
sizeof(DATARMNETc4af21d05e->DATARMNET54338da2ff))>(0xd2d+202-0xdf7)){if(
DATARMNETc4af21d05e->DATARMNET54338da2ff.DATARMNET969cfb9094==
DATARMNET8d88a2f3f5)DATARMNET2ac305d296(DATARMNETc4af21d05e);else if(
DATARMNETc4af21d05e->DATARMNET54338da2ff.DATARMNET969cfb9094==
DATARMNET9a035137c0)DATARMNETd52d50282d(DATARMNETc4af21d05e);DATARMNET5d4ca1da1c
(DATARMNET54338da2ff,DATARMNET0cb8735618);}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"
,DATARMNET6ab4513e45);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"
,DATARMNET6ab4513e45);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET00895c1601);return(0xd2d+202-0xdf7);}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
DATARMNET9bbfc822c2(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
DATARMNET54338da2ff){struct nlattr*na;struct DATARMNET1ac24ff95c
DATARMNET8641231b50;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\x71\x75\x69\x63\x6b\x61\x63\x6b\x5f\x74\x68\x72\x65\x73\x68"
);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[DATARMNET627787b1dd];
if(na){if(nla_memcpy(&DATARMNET8641231b50,na,sizeof(DATARMNET8641231b50))>
(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x65\x63\x76\x20\x71\x75\x69\x63\x6b\x61\x63\x6b\x20\x72\x65\x71\x20"
"\x68\x61\x73\x68\x5f\x74\x6f\x5f\x73\x65\x74\x20\x3d\x20\x30\x78\x25\x78\x20\x74\x68\x72\x65\x73\x68\x20\x3d\x20\x25\x75"
,DATARMNET8641231b50.DATARMNET8c11bd9466,DATARMNET8641231b50.ack_thresh);rc=
DATARMNET1faf2b953f(DATARMNET8641231b50.DATARMNET8c11bd9466,DATARMNET8641231b50.
ack_thresh);if(rc==(0xd26+209-0xdf6)){DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNETc30f35c15f);}else{DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET6e742895e1);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"
,DATARMNET627787b1dd);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET6e742895e1);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"
,DATARMNET627787b1dd);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET6e742895e1);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.DATARMNET208ea67e1d>=DATARMNETc6782fed88||
DATARMNET7f0ce2d6ad.DATARMNETc790ff30fc>=DATARMNETc6782fed88){
DATARMNET930a441406[DATARMNET465c0e5e6d]++;DATARMNET5d4ca1da1c(
DATARMNET54338da2ff,DATARMNET96de786762);return-(0xd26+209-0xdf6);}if(
DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5==DATARMNET5898b2a84b){
DATARMNET3874292c18=DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d;
trace_rmnet_shs_wq_high(DATARMNETa0ecb9daac,DATARMNETd7f7ade458,
DATARMNET7f0ce2d6ad.DATARMNETc790ff30fc,DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d,
DATARMNET7f0ce2d6ad.DATARMNET4da4612f1e,DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5,
NULL,NULL);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET2d19c9b1ef);return
(0xd2d+202-0xdf7);}if(DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5==
DATARMNET0fec83de79){DATARMNETbb1a9dff8b=DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d
;trace_rmnet_shs_wq_high(DATARMNETa0ecb9daac,DATARMNETd7f7ade458,
DATARMNET7f0ce2d6ad.DATARMNETc790ff30fc,DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d,
DATARMNET7f0ce2d6ad.DATARMNET4da4612f1e,DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5,
NULL,NULL);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET2d19c9b1ef);return
(0xd2d+202-0xdf7);}if(DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5==
DATARMNET5dccc475d4){DATARMNETb7ddf3c5dd[DATARMNETf13db5ace8]++;if(!((
(0xd26+209-0xdf6)<<DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d)&DATARMNET9273f84bf1)
||(((0xd26+209-0xdf6)<<DATARMNETecc0627c70.DATARMNET5c24e1df05)&
DATARMNET9273f84bf1)){DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET2d19c9b1ef);return-(0xd26+209-0xdf6);}if((((0xd26+209-0xdf6)<<
DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d)&DATARMNET121c8bc82a)){
DATARMNETb7ddf3c5dd[DATARMNET438fb7f8f3]++;DATARMNET5d4ca1da1c(
DATARMNET54338da2ff,DATARMNET96de786762);return-(0xd26+209-0xdf6);}
DATARMNETecc0627c70.DATARMNET5c24e1df05=DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d;
rcu_read_lock();DATARMNET8f9da46b14();rcu_read_unlock();DATARMNET5d4ca1da1c(
DATARMNET54338da2ff,DATARMNET2d19c9b1ef);return(0xd2d+202-0xdf7);}if(
DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5==DATARMNET37da25c8e8){
DATARMNETb7ddf3c5dd[DATARMNETb6eae1e097]++;if(!(((0xd26+209-0xdf6)<<
DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d)&DATARMNETbc3c416b77)){
DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET2d19c9b1ef);return-
(0xd26+209-0xdf6);}if((((0xd26+209-0xdf6)<<DATARMNET7f0ce2d6ad.
DATARMNET208ea67e1d)&DATARMNET121c8bc82a)){DATARMNETb7ddf3c5dd[
DATARMNETf6458f40e6]++;DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET96de786762);return-(0xd26+209-0xdf6);}if((DATARMNETecc0627c70.
DATARMNET7d667e828e)==DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d&&(
DATARMNETecc0627c70.DATARMNET5c24e1df05)==DATARMNET7f0ce2d6ad.
DATARMNET208ea67e1d){DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET2d19c9b1ef
);return(0xd2d+202-0xdf7);}if((((0xd26+209-0xdf6)<<DATARMNET7f0ce2d6ad.
DATARMNET208ea67e1d)&DATARMNETbc3c416b77)&&(((0xd26+209-0xdf6)<<
DATARMNETecc0627c70.DATARMNET7d667e828e)&DATARMNETbc3c416b77)){
DATARMNETb7ddf3c5dd[DATARMNET6fed39da20]++;}DATARMNETecc0627c70.
DATARMNET5c24e1df05=DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d;rcu_read_lock();
DATARMNET8f9da46b14();rcu_read_unlock();DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET2d19c9b1ef);return(0xd2d+202-0xdf7);}rc=DATARMNET5f72606f6f(
DATARMNET7f0ce2d6ad.DATARMNETc790ff30fc,DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d,
DATARMNET7f0ce2d6ad.DATARMNET4da4612f1e,DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5)
;if(rc==(0xd26+209-0xdf6)){DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET598eb03fad);trace_rmnet_shs_wq_high(DATARMNETa0ecb9daac,
DATARMNETd7f7ade458,DATARMNET7f0ce2d6ad.DATARMNETc790ff30fc,DATARMNET7f0ce2d6ad.
DATARMNET208ea67e1d,DATARMNET7f0ce2d6ad.DATARMNET4da4612f1e,DATARMNET7f0ce2d6ad.
DATARMNETa3f89581b5,NULL,NULL);}else{DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNETe64295b6cb);trace_rmnet_shs_wq_high(DATARMNETa0ecb9daac,
DATARMNET53e4a6b394,DATARMNET7f0ce2d6ad.DATARMNETc790ff30fc,DATARMNET7f0ce2d6ad.
DATARMNET208ea67e1d,DATARMNET7f0ce2d6ad.DATARMNET4da4612f1e,DATARMNET7f0ce2d6ad.
DATARMNETa3f89581b5,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"
,DATARMNET813a742587);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNETe64295b6cb);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"
,DATARMNET813a742587);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNETe64295b6cb);return(0xd2d+202-0xdf7);}return(0xd2d+202-0xdf7);}int
DATARMNETc850634243(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\x6d\x65\x6d\x5f\x73\x79\x6e\x63"
);if(!DATARMNETc252c204a8)DATARMNETc252c204a8=(0xd26+209-0xdf6);
trace_rmnet_shs_wq_high(DATARMNETa0ecb9daac,DATARMNETd1d3902361,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL
,NULL);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);}DATARMNETb01cbc5ec9=genl_info_net(
DATARMNET54338da2ff);DATARMNET373156e169=DATARMNET54338da2ff->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);}void DATARMNET1d4b1eff85(struct DATARMNET177911299b*
DATARMNET60b6e12cfd,uint8_t DATARMNET907a90c6af,uint8_t DATARMNET9a4544e068){
struct DATARMNET80e227e008 DATARMNETc909849dcb;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(&DATARMNETc909849dcb,(0xd2d+202-0xdf7),sizeof(
DATARMNETc909849dcb));ktime_get_real_ts64(&time);DATARMNET60b6e12cfd->timestamp=
(DATARMNET6987463c5e(time.tv_sec)+time.tv_nsec);DATARMNETc909849dcb.
DATARMNET035f475d5c=DATARMNET907a90c6af;DATARMNETc909849dcb.DATARMNETcfb5dc7296=
DATARMNET9a4544e068;memcpy(&(DATARMNET60b6e12cfd->list[(0xd2d+202-0xdf7)].
DATARMNETdf2dbc641f),&DATARMNETc909849dcb,sizeof(DATARMNETc909849dcb));
DATARMNET60b6e12cfd->list[(0xd2d+202-0xdf7)].msg_type=DATARMNETf41c724abf;
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);}

View File

@ -0,0 +1,84 @@
/* Copyright (c) 2019-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.
*
*/
#ifndef DATARMNETf34a2d1928
#define DATARMNETf34a2d1928
#include "rmnet_shs.h"
#include <net/genetlink.h>
#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 DATARMNETb5601817b1 (0xdb7+6677-0x263c)
#define DATARMNET00895c1601 (0xdc7+3085-0x163c)
#define DATARMNET0cb8735618 (0xdb7+3102-0x1634)
#define DATARMNET6e742895e1 (0xdb7+3095-0x162c)
#define DATARMNETc30f35c15f (0xdb7+3088-0x1624)
#define DATARMNET19092afcc2 (0xec7+1152-0x131d)
extern int DATARMNETc252c204a8;enum{DATARMNET9491b185b7,DATARMNETc574b5cfba,
DATARMNET8e3adfc5dd,DATARMNETffb2945689,DATARMNET51b1ee5a68,
RMNET_SHS_GENL_CMD_LL_FLOW,DATARMNET93b3e11659,DATARMNET5b3796e25a,};enum{
DATARMNET603b776397,DATARMNETaa0fe5a855,DATARMNET7d289a7bfa,DATARMNET813a742587,
DATARMNET50e1cd26c7,DATARMNET6ab4513e45,DATARMNET627787b1dd,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;};struct DATARMNET1ac24ff95c{uint32_t DATARMNET8c11bd9466;
uint32_t ack_thresh;};struct DATARMNET80e227e008{uint8_t DATARMNET035f475d5c;
uint8_t DATARMNETcfb5dc7296;};
#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),DATARMNETf41c724abf=(0xd1f+216-0xdf5),};
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;};struct DATARMNETbf4d34b241{
union{__be32 daddr;struct in6_addr v6_daddr;}DATARMNETea422561ef;union{__be32
saddr;struct in6_addr v6_saddr;}DATARMNET53d5f671f0;u16 src_port;u16
DATARMNET5a5907dd87;u16 DATARMNET1e49bc75c8;u16 DATARMNET1c959e10ca;u8
DATARMNET1819cae4a3;u8 DATARMNETb035edcfb9;u8 proto;u8 DATARMNET8b5ace4a98;u8
DATARMNET602389fe52;u8 DATARMNETc2d5c71ce1;u8 seq;u8 DATARMNET969cfb9094;};enum
DATARMNET4c422f5fb1{DATARMNET9a035137c0,DATARMNET8d88a2f3f5,DATARMNET755fb8f198,
};struct DATARMNET0331d6732d{struct list_head DATARMNET32e10c59ce;struct
hlist_node list;struct DATARMNETbf4d34b241 DATARMNET54338da2ff;};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 DATARMNET283f08f439(struct sk_buff*DATARMNETaafc1d9519,
struct genl_info*DATARMNET54338da2ff);int DATARMNET9bbfc822c2(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);void DATARMNET1d4b1eff85(struct DATARMNET177911299b*
DATARMNET60b6e12cfd,uint8_t DATARMNET907a90c6af,uint8_t DATARMNET9a4544e068);int
DATARMNET0dbc627e8f(void);int DATARMNETeabd69d1ab(void);
#endif

View File

@ -0,0 +1,677 @@
/* Copyright (c) 2019-2020 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 "rmnet_shs_modules.h"
#include "rmnet_shs_common.h"
#include "rmnet_shs_wq_mem.h"
#include <linux/proc_fs.h>
#include <linux/refcount.h>
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 DATARMNET26737fb11e DATARMNET2fdef9da24[
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 list_head DATARMNET922b4752e2=LIST_HEAD_INIT(
DATARMNET922b4752e2);struct DATARMNETa41d4c4a12*DATARMNET410036d5ac;struct
DATARMNETa41d4c4a12*DATARMNET19c47a9f3a;struct DATARMNETa41d4c4a12*
DATARMNET22e796eff3;struct DATARMNETa41d4c4a12*DATARMNET9b8000d2a7;struct
DATARMNETa41d4c4a12*DATARMNET835a28686c;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 DATARMNET1ab1f570f2(struct vm_fault*
DATARMNETca901b4e1f){struct page*page=NULL;struct DATARMNETa41d4c4a12*
DATARMNET54338da2ff;DATARMNET6bf538fa23();if(DATARMNET835a28686c){
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 DATARMNET523167fa26={.close=
DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNET1ab1f570f2,};
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;vm_flags_set(vma,
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
;vm_flags_set(vma,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;vm_flags_set(vma,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;vm_flags_set(vma,
VM_DONTEXPAND|VM_DONTDUMP);vma->vm_private_data=DATARMNET3cc114dce0->
private_data;return(0xd2d+202-0xdf7);}static int DATARMNET150e284e90(struct file
*DATARMNET3cc114dce0,struct vm_area_struct*vma){vma->vm_ops=&DATARMNET523167fa26
;vm_flags_set(vma,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;vm_flags_set(vma,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 DATARMNET601894f27b(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\x6c\x6c\x5f\x66\x6c\x6f\x77\x73\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(!DATARMNET835a28686c){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;}DATARMNET835a28686c=DATARMNET54338da2ff;refcount_set(&
DATARMNET835a28686c->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\x6c\x6c\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*)DATARMNET835a28686c));}else{refcount_inc(&
DATARMNET835a28686c->refcnt);}DATARMNET3cc114dce0->private_data=
DATARMNET835a28686c;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 DATARMNET794d7587bd(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(DATARMNET835a28686c){DATARMNET54338da2ff=
DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt)
<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree(
DATARMNET54338da2ff);DATARMNET835a28686c=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 DATARMNETddcdf7bd4e={.
proc_mmap=DATARMNET150e284e90,.proc_open=DATARMNET601894f27b,.proc_release=
DATARMNET794d7587bd,.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->bif=DATARMNETd2a694d52a->
bif;DATARMNET0f551e8a47->ack_thresh=DATARMNETd2a694d52a->ack_thresh;
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->DATARMNET324c1a8f98<DATARMNET264b01f4d5){
DATARMNETace28a2c7f->DATARMNET18b7a5b761=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 DATARMNET312b06829d(struct DATARMNET6c78e47d24
*DATARMNETd2a694d52a,struct list_head*DATARMNET922b4752e2){struct
DATARMNETe176be7f7c*DATARMNET4af6567922;if(!DATARMNETd2a694d52a||!
DATARMNET922b4752e2){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}
DATARMNET4af6567922=kzalloc(sizeof(*DATARMNET4af6567922),GFP_ATOMIC);if(
DATARMNET4af6567922!=NULL&&DATARMNETd2a694d52a->DATARMNET63b1a086d5!=NULL){
DATARMNET4af6567922->DATARMNET253a9fc708=DATARMNETd2a694d52a->
DATARMNET253a9fc708;DATARMNET4af6567922->DATARMNET42a992465f=DATARMNETd2a694d52a
->DATARMNET7c894c2f8f;DATARMNET4af6567922->hash=DATARMNETd2a694d52a->hash;
DATARMNET4af6567922->DATARMNET324c1a8f98=DATARMNETd2a694d52a->
DATARMNET324c1a8f98;DATARMNET4af6567922->DATARMNETbb80fccd97=DATARMNETd2a694d52a
->DATARMNETbb80fccd97;DATARMNET4af6567922->trans_proto=DATARMNETd2a694d52a->
DATARMNET1e9d25d9ff;DATARMNET4af6567922->mux_id=DATARMNETd2a694d52a->mux_id;
DATARMNET4af6567922->DATARMNET95266642d1=DATARMNETd2a694d52a->
DATARMNET95266642d1;DATARMNET4af6567922->DATARMNET0d682bcb29=DATARMNETd2a694d52a
->DATARMNET0d682bcb29;DATARMNET4af6567922->DATARMNET20e8fc9db8=
DATARMNETd2a694d52a->DATARMNET20e8fc9db8;DATARMNET4af6567922->
DATARMNETda8e8ae7ed=DATARMNETd2a694d52a->DATARMNET29c6349349;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"
,DATARMNET4af6567922->DATARMNET0d682bcb29,DATARMNET4af6567922->
DATARMNET20e8fc9db8);rm_err(
"\x53\x48\x53\x5f\x46\x4d\x55\x58\x3a\x20\x6d\x75\x78\x20\x69\x64\x20\x66\x6f\x72\x20\x4c\x4c\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x69\x73\x20\x25\x64\x20\x74\x70\x20\x25\x64"
,DATARMNET4af6567922->hash,DATARMNET4af6567922->mux_id,DATARMNET4af6567922->
trans_proto);memcpy(&DATARMNET4af6567922->ip_hdr,&DATARMNETd2a694d52a->
DATARMNET63b1a086d5->ip_hdr,sizeof(DATARMNET4af6567922->ip_hdr));memcpy(&
DATARMNET4af6567922->DATARMNETe33b41dad9,&DATARMNETd2a694d52a->
DATARMNET63b1a086d5->DATARMNETe33b41dad9,sizeof(DATARMNET4af6567922->
DATARMNETe33b41dad9));list_add(&DATARMNET4af6567922->DATARMNET7287946e7b,
DATARMNET922b4752e2);}else{DATARMNET68d84e7b98[DATARMNET6533f70c87]++;}}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
DATARMNETf7730d41c1(struct list_head*DATARMNET922b4752e2){struct
DATARMNET13c47d154e*DATARMNET4af6567922;struct list_head*DATARMNET7b34b7b5be,*
next;if(!DATARMNET922b4752e2){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;
}list_for_each_safe(DATARMNET7b34b7b5be,next,DATARMNET922b4752e2){
DATARMNET4af6567922=list_entry(DATARMNET7b34b7b5be,struct DATARMNET13c47d154e,
DATARMNETec0e3cb8f0);list_del_init(&DATARMNET4af6567922->DATARMNETec0e3cb8f0);
kfree(DATARMNET4af6567922);}}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;struct DATARMNET661e7a8566 DATARMNET3ef5021fcf;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;DATARMNET63c47f3c37[idx].DATARMNETf510b48c29=
DATARMNETecc0627c70.DATARMNETf510b48c29;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));rm_err(
"\x25\x73\x28\x29\x3a\x20\x72\x6d\x65\x6d\x20\x25\x64\x20\x25\x64\x20\x25\x64\x20\x77\x6d\x65\x6d\x20\x25\x64\x20\x25\x64\x20\x25\x64" "\n"
,__func__,init_net.ipv4.sysctl_tcp_rmem[(0xd2d+202-0xdf7)],init_net.ipv4.
sysctl_tcp_rmem[(0xd26+209-0xdf6)],init_net.ipv4.sysctl_tcp_rmem[
(0xd1f+216-0xdf5)],init_net.ipv4.sysctl_tcp_wmem[(0xd2d+202-0xdf7)],init_net.
ipv4.sysctl_tcp_wmem[(0xd26+209-0xdf6)],init_net.ipv4.sysctl_tcp_wmem[
(0xd1f+216-0xdf5)]);memset(&DATARMNET3ef5021fcf,(0xd2d+202-0xdf7),sizeof(
DATARMNET3ef5021fcf));DATARMNET3ef5021fcf.DATARMNET68a58889b0[(0xd2d+202-0xdf7)]
=init_net.ipv4.sysctl_tcp_rmem[(0xd2d+202-0xdf7)];DATARMNET3ef5021fcf.
DATARMNET68a58889b0[(0xd26+209-0xdf6)]=init_net.ipv4.sysctl_tcp_rmem[
(0xd26+209-0xdf6)];DATARMNET3ef5021fcf.DATARMNET68a58889b0[(0xd1f+216-0xdf5)]=
init_net.ipv4.sysctl_tcp_rmem[(0xd1f+216-0xdf5)];DATARMNET3ef5021fcf.
DATARMNET1c7c913c7b[(0xd2d+202-0xdf7)]=init_net.ipv4.sysctl_tcp_wmem[
(0xd2d+202-0xdf7)];DATARMNET3ef5021fcf.DATARMNET1c7c913c7b[(0xd26+209-0xdf6)]=
init_net.ipv4.sysctl_tcp_wmem[(0xd26+209-0xdf6)];DATARMNET3ef5021fcf.
DATARMNET1c7c913c7b[(0xd1f+216-0xdf5)]=init_net.ipv4.sysctl_tcp_wmem[
(0xd1f+216-0xdf5)];memcpy((char*)DATARMNET410036d5ac->data+sizeof(
DATARMNET63c47f3c37),(void*)&DATARMNET3ef5021fcf,sizeof(DATARMNET3ef5021fcf));}
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\x20\x62\x69\x66\x5b\x25\x75\x5d\x20\x61\x63\x6b\x5f\x74\x68\x72\x65\x73\x68\x5b\x25\x75\x5d"
,DATARMNET0f551e8a47->hash,DATARMNET0f551e8a47->DATARMNET324c1a8f98,
DATARMNET0f551e8a47->DATARMNET42a992465f,DATARMNET0f551e8a47->bif,
DATARMNET0f551e8a47->ack_thresh);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;DATARMNETb0d78d576f
[idx].ack_thresh=DATARMNET0f551e8a47->ack_thresh;DATARMNETb0d78d576f[idx].bif=
DATARMNET0f551e8a47->bif;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 DATARMNETa3d6c4072d(struct
list_head*DATARMNET922b4752e2){struct DATARMNETe176be7f7c*DATARMNET4af6567922;
uint16_t idx=(0xd2d+202-0xdf7);int DATARMNET5c1d9cb9dd=(0xd2d+202-0xdf7);if(!
DATARMNET922b4752e2){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x54\x4f\x50\x3a\x20\x4c\x4c\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\x4c\x4c\x20\x66\x69\x6c\x74\x65\x72\x20\x66\x6c\x6f\x77\x73\x3a"
);list_for_each_entry(DATARMNET4af6567922,DATARMNET922b4752e2,
DATARMNET7287946e7b){if(idx>=DATARMNETa847b6b6d0){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"
,DATARMNET4af6567922->hash,DATARMNET4af6567922->DATARMNET324c1a8f98,
DATARMNET4af6567922->DATARMNET42a992465f);DATARMNET5c1d9cb9dd+=(0xd26+209-0xdf6)
;memcpy(&(DATARMNET2fdef9da24[idx].ip_hdr),&(DATARMNET4af6567922->ip_hdr),sizeof
(DATARMNET2fdef9da24[idx].ip_hdr));memcpy(&(DATARMNET2fdef9da24[idx].
DATARMNETe33b41dad9),&(DATARMNET4af6567922->DATARMNETe33b41dad9),sizeof(
DATARMNET2fdef9da24[idx].DATARMNETe33b41dad9));DATARMNET2fdef9da24[idx].
DATARMNET42a992465f=DATARMNET4af6567922->DATARMNET42a992465f;DATARMNET2fdef9da24
[idx].hash=DATARMNET4af6567922->hash;DATARMNET2fdef9da24[idx].
DATARMNET253a9fc708=DATARMNET4af6567922->DATARMNET253a9fc708;DATARMNET2fdef9da24
[idx].DATARMNET324c1a8f98=DATARMNET4af6567922->DATARMNET324c1a8f98;
DATARMNET2fdef9da24[idx].DATARMNETda8e8ae7ed=DATARMNET4af6567922->
DATARMNETda8e8ae7ed;DATARMNET2fdef9da24[idx].DATARMNETbb80fccd97=
DATARMNET4af6567922->DATARMNETbb80fccd97;DATARMNET2fdef9da24[idx].trans_proto=
DATARMNET4af6567922->trans_proto;DATARMNET2fdef9da24[idx].mux_id=
DATARMNET4af6567922->mux_id;DATARMNET2fdef9da24[idx].DATARMNET95266642d1=
DATARMNET4af6567922->DATARMNET95266642d1;DATARMNET2fdef9da24[idx].
DATARMNET0d682bcb29=DATARMNET4af6567922->DATARMNET0d682bcb29;DATARMNET2fdef9da24
[idx].DATARMNET20e8fc9db8=DATARMNET4af6567922->DATARMNET20e8fc9db8;idx+=
(0xd26+209-0xdf6);}rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x6c\x6c\x5f\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*)DATARMNET835a28686c),
DATARMNET835a28686c);if(!DATARMNET835a28686c){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x6c\x6c\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\x6c\x6c\x66\x6c\x6f\x77\x73\x20\x3d\x20\x25\x75" "\n"
,idx);memcpy(((char*)DATARMNET835a28686c->data),&idx,sizeof(idx));memcpy(((char*
)DATARMNET835a28686c->data+sizeof(uint16_t)),(void*)&DATARMNET2fdef9da24[
(0xd2d+202-0xdf7)],sizeof(DATARMNET2fdef9da24));}void DATARMNET78666f33a1(void){
struct rmnet_priv*priv;struct rmnet_port*port;struct DATARMNET9b44b71ee9*ep=NULL
;u16 idx=(0xd2d+202-0xdf7);u16 count=(0xd2d+202-0xdf7);port=DATARMNETecc0627c70.
port;if(!port){DATARMNET68d84e7b98[DATARMNET42b73d0f3f]++;return;}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;DATARMNETf46265286b[idx].pb_marker_seq=port->stats.
pb_marker_seq;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(
DATARMNET8b29e14112,(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,&DATARMNETddcdf7bd4e
);proc_create(DATARMNETe98d39b779,(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,&
DATARMNET6eb63d9ad0);DATARMNET6bf538fa23();DATARMNET410036d5ac=NULL;
DATARMNET19c47a9f3a=NULL;DATARMNET22e796eff3=NULL;DATARMNET9b8000d2a7=NULL;
DATARMNET835a28686c=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(DATARMNET8b29e14112,
DATARMNETe4c5563cdb);remove_proc_entry(DATARMNETe98d39b779,DATARMNETe4c5563cdb);
remove_proc_entry(DATARMNET6517f07a36,NULL);DATARMNET6bf538fa23();
DATARMNET410036d5ac=NULL;DATARMNET19c47a9f3a=NULL;DATARMNET22e796eff3=NULL;
DATARMNET9b8000d2a7=NULL;DATARMNET835a28686c=NULL;DATARMNET67d31dc40a=NULL;
DATARMNETaea4c85748();}

View File

@ -0,0 +1,87 @@
/* Copyright (c) 2019-2020 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.
*
*/
#ifndef DATARMNETe10fe0b1e0
#define DATARMNETe10fe0b1e0
#include "rmnet_shs.h"
#include "rmnet_shs_config.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 DATARMNET8b29e14112 \
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6c\x6c\x5f\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 ((0xec7+1108-0x12fd))
#define DATARMNETa847b6b6d0 (DATARMNET67578af78f)
#define DATARMNET75c69edb82 ((0xeb7+698-0x110d))
#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;u8
DATARMNETf510b48c29;};struct __attribute__((__packed__))DATARMNET661e7a8566{int
DATARMNET68a58889b0[(0xd18+223-0xdf4)];int DATARMNET1c7c913c7b[(0xd18+223-0xdf4)
];};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;
u32 bif;u32 ack_thresh;u16 DATARMNET42a992465f;};struct __attribute__((
__packed__))DATARMNET26737fb11e{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;
u8 DATARMNETda8e8ae7ed;};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;u64 pb_marker_seq;u8 mux_id;};extern struct list_head
DATARMNET6c23f11e81;extern struct list_head DATARMNETf91b305f4e;extern struct
list_head DATARMNET3208cd0982;extern struct list_head DATARMNET922b4752e2;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 DATARMNET312b06829d(struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct list_head*DATARMNET922b4752e2);
void DATARMNETa1b141715b(struct list_head*DATARMNETb436c3f30b);void
DATARMNET3af54cd726(struct list_head*DATARMNETf0fb155a9c);void
DATARMNETcc489fbbad(struct list_head*DATARMNET3208cd0982);void
DATARMNETf7730d41c1(struct list_head*DATARMNET922b4752e2);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
DATARMNETa3d6c4072d(struct list_head*DATARMNET922b4752e2);void
DATARMNET78666f33a1(void);void DATARMNETf5f83b943f(void);void
DATARMNET28d33bd09f(void);
#endif

View File

@ -0,0 +1,49 @@
ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_WLAN_DLKM_PLATFORMS_LIST := pineapple
RMNET_WLAN_DLKM_PLATFORMS_LIST += blair
RMNET_WLAN_DLKM_PLATFORMS_LIST += monaco
RMNET_WLAN_DLKM_PLATFORMS_LIST += pitti
RMNET_WLAN_DLKM_PLATFORMS_LIST += volcano
ifeq ($(call is-board-platform-in-list, $(RMNET_WLAN_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#Enabling BAZEL
LOCAL_MODULE_DDK_BUILD := true
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_MODULE := rmnet_wlan.ko
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
BOARD_OPENSOURCE_DIR ?= vendor/qcom/opensource
BOARD_COMMON_DIR ?= device/qcom/common
#path from build top to the core directory
DATARMNET_CORE_PATH := datarmnet/core
RMNET_CORE_PATH := $(BOARD_OPENSOURCE_DIR)/$(DATARMNET_CORE_PATH)
DLKM_DIR := $(TOP)/$(BOARD_COMMON_DIR)/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
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
endif #End of Check for datarmnet

View File

@ -0,0 +1,22 @@
load(":define_wlan.bzl", "define_wlan")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
define_wlan("pineapple", "consolidate")
define_wlan("pineapple", "gki")
define_wlan("blair", "consolidate")
define_wlan("blair", "gki")
define_wlan("monaco", "consolidate")
define_wlan("monaco", "gki")
define_wlan("pitti", "consolidate")
define_wlan("pitti", "gki")
define_wlan("volcano", "consolidate")
define_wlan("volcano", "gki")

View File

@ -0,0 +1,9 @@
obj-m += rmnet_wlan.o
ccflags-y := -I$(RMNET_CORE_INC_DIR) \
$(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

View File

@ -0,0 +1,10 @@
#
# RMNET_WLAN driver
#
menuconfig RMNET_WLAN
tristate "Rmnet WLAN support"
default m
depends on RMNET_CORE
---help---
WLAN processing module for RmNet driver

View File

@ -0,0 +1,16 @@
#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
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

View File

@ -0,0 +1,42 @@
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
def define_wlan(target, variant):
kernel_build_variant = "{}_{}".format(target, variant)
include_base = "../../../{}".format(native.package_name())
ddk_module(
name = "{}_wlan".format(kernel_build_variant),
out = "rmnet_wlan.ko",
srcs = [
"rmnet_wlan.h",
"rmnet_wlan_connection.c",
"rmnet_wlan_connection.h",
"rmnet_wlan_fragment.c",
"rmnet_wlan_fragment.h",
"rmnet_wlan_genl.c",
"rmnet_wlan_genl.h",
"rmnet_wlan_main.c",
"rmnet_wlan_stats.c",
"rmnet_wlan_stats.h",
],
kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
deps = [
"//msm-kernel:all_headers",
"//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
"//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
],
copts = ["-Wno-misleading-indentation"],
)
copy_to_dist_dir(
name = "{}_datarment-ext_dist".format(kernel_build_variant),
data = [
":{}_wlan".format(kernel_build_variant),
],
dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
flat = True,
wipe_dist_dir = False,
allow_duplicate_filenames = False,
mode_overrides = {"**/*": "644"},
)

View File

@ -0,0 +1,61 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET WLAN handler framework
*
*/
#ifndef DATARMNETc7bc459123
#define DATARMNETc7bc459123
#include <linux/types.h>
#include <net/genetlink.h>
#include <linux/netdevice.h>
#include <linux/in6.h>
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;};struct DATARMNETe117226f58{union{
__be32 DATARMNETdfe430c2d6;struct in6_addr DATARMNET815cbb4bf5;};union{__be32
DATARMNET2cb607d686;struct in6_addr DATARMNETc3f31215b7;};__be16
DATARMNET08e913477e;__be16 DATARMNETda7f7fa492;u8 DATARMNET0d956cc77a;};enum{
DATARMNET356f2a237e,DATARMNET45ee632553,DATARMNET9bfbc31cd6,DATARMNETdcafdec32a,
};rx_handler_result_t DATARMNET37a92021f9(struct sk_buff**DATARMNET89946cec52);
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);int DATARMNET4c1c11d8a5(struct DATARMNETe117226f58*
DATARMNET3396919a68);int DATARMNET56fde5181e(void);extern struct
DATARMNETe117226f58*DATARMNETcde6e442f5;int DATARMNETaba2beb199(const char*
DATARMNETf6f1ac8bbf,const char*DATARMNET8faed3a82a,size_t DATARMNET1dfbbc30a5);
#endif

Some files were not shown because too many files have changed in this diff Show More