sm8750: init kernel modules repo
This commit is contained in:
41
qcom/opensource/datarmnet-ext/aps/Android.mk
Normal file
41
qcom/opensource/datarmnet-ext/aps/Android.mk
Normal file
@@ -0,0 +1,41 @@
|
||||
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 += sun
|
||||
RMNET_APS_DLKM_PLATFORMS_LIST += parrot
|
||||
RMNET_APS_DLKM_PLATFORMS_LIST += tuna
|
||||
|
||||
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
|
14
qcom/opensource/datarmnet-ext/aps/BUILD.bazel
Normal file
14
qcom/opensource/datarmnet-ext/aps/BUILD.bazel
Normal 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", "perf")
|
||||
|
||||
define_aps("sun", "consolidate")
|
||||
define_aps("sun", "perf")
|
||||
|
||||
define_aps("parrot", "consolidate")
|
||||
define_aps("parrot", "perf")
|
||||
|
||||
define_aps("tuna", "consolidate")
|
||||
define_aps("tuna", "perf")
|
6
qcom/opensource/datarmnet-ext/aps/Kbuild
Normal file
6
qcom/opensource/datarmnet-ext/aps/Kbuild
Normal 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
|
9
qcom/opensource/datarmnet-ext/aps/Kconfig
Normal file
9
qcom/opensource/datarmnet-ext/aps/Kconfig
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# RMNET_APS drivers
|
||||
#
|
||||
|
||||
menuconfig RMNET_APS
|
||||
tristate "Rmnet APS support"
|
||||
default m
|
||||
---help---
|
||||
Apps prioritization module for RmNet driver
|
16
qcom/opensource/datarmnet-ext/aps/Makefile
Normal file
16
qcom/opensource/datarmnet-ext/aps/Makefile
Normal 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
|
37
qcom/opensource/datarmnet-ext/aps/define_aps.bzl
Normal file
37
qcom/opensource/datarmnet-ext/aps/define_aps.bzl
Normal 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"},
|
||||
)
|
45
qcom/opensource/datarmnet-ext/aps/rmnet_aps.h
Normal file
45
qcom/opensource/datarmnet-ext/aps/rmnet_aps.h
Normal 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
|
||||
|
39
qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.c
Normal file
39
qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.c
Normal 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);}
|
26
qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.h
Normal file
26
qcom/opensource/datarmnet-ext/aps/rmnet_aps_genl.h
Normal 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
|
||||
|
789
qcom/opensource/datarmnet-ext/aps/rmnet_aps_main.c
Normal file
789
qcom/opensource/datarmnet-ext/aps/rmnet_aps_main.c
Normal file
@@ -0,0 +1,789 @@
|
||||
/* 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[]={"\x35\x38\x61\x61\x39\x62\x65\x65",
|
||||
"\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 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);
|
||||
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));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);
|
@@ -0,0 +1,57 @@
|
||||
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 += sun
|
||||
DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += parrot
|
||||
DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += tuna
|
||||
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST := pineapple
|
||||
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += sun
|
||||
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += parrot
|
||||
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += tuna
|
||||
DATA_APS_DLKM_BOARD_PLATFORMS_LIST := pineapple
|
||||
DATA_APS_DLKM_BOARD_PLATFORMS_LIST += sun
|
||||
DATA_APS_DLKM_BOARD_PLATFORMS_LIST += parrot
|
||||
DATA_APS_DLKM_BOARD_PLATFORMS_LIST += tuna
|
||||
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST := pineapple
|
||||
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += sun
|
||||
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += parrot
|
||||
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += monaco
|
||||
DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += tuna
|
||||
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST := pineapple
|
||||
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST += sun
|
||||
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST += parrot
|
||||
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST += monaco
|
||||
DATA_MEM_DLKM_BOARD_PLATFORMS_LIST += tuna
|
||||
|
||||
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
|
@@ -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
|
30
qcom/opensource/datarmnet-ext/mem/Android.mk
Normal file
30
qcom/opensource/datarmnet-ext/mem/Android.mk
Normal file
@@ -0,0 +1,30 @@
|
||||
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 += sun
|
||||
RMNET_MEM_DLKM_PLATFORMS_LIST += parrot
|
||||
RMNET_MEM_DLKM_PLATFORMS_LIST += monaco
|
||||
RMNET_MEM_DLKM_PLATFORMS_LIST += tuna
|
||||
|
||||
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)/*)
|
||||
|
||||
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
|
29
qcom/opensource/datarmnet-ext/mem/BUILD.bazel
Normal file
29
qcom/opensource/datarmnet-ext/mem/BUILD.bazel
Normal file
@@ -0,0 +1,29 @@
|
||||
load(":define_mem.bzl", "define_mem")
|
||||
load("//build/kernel/kleaf:kernel.bzl", "ddk_headers")
|
||||
|
||||
define_mem("pineapple", "consolidate")
|
||||
define_mem("pineapple", "perf")
|
||||
|
||||
define_mem("sun", "consolidate")
|
||||
define_mem("sun", "perf")
|
||||
|
||||
define_mem("parrot", "consolidate")
|
||||
define_mem("parrot", "perf")
|
||||
|
||||
define_mem("monaco", "consolidate")
|
||||
define_mem("monaco", "perf")
|
||||
|
||||
define_mem("tuna", "consolidate")
|
||||
define_mem("tuna", "perf")
|
||||
|
||||
package(
|
||||
default_visibility = [
|
||||
"//visibility:public", ],
|
||||
)
|
||||
ddk_headers(
|
||||
name = "rmnet_mem_headers",
|
||||
hdrs = glob([
|
||||
"*.h",
|
||||
]),
|
||||
includes = ["."],
|
||||
)
|
7
qcom/opensource/datarmnet-ext/mem/Kbuild
Normal file
7
qcom/opensource/datarmnet-ext/mem/Kbuild
Normal 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
|
9
qcom/opensource/datarmnet-ext/mem/Kconfig
Normal file
9
qcom/opensource/datarmnet-ext/mem/Kconfig
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# RMNET_MEM driver
|
||||
#
|
||||
|
||||
menuconfig RMNET_MEM
|
||||
tristate "Rmnet MEM support"
|
||||
default m
|
||||
---help---
|
||||
Memory module for RmNet driver
|
16
qcom/opensource/datarmnet-ext/mem/Makefile
Normal file
16
qcom/opensource/datarmnet-ext/mem/Makefile
Normal 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
|
||||
|
37
qcom/opensource/datarmnet-ext/mem/define_mem.bzl
Normal file
37
qcom/opensource/datarmnet-ext/mem/define_mem.bzl
Normal 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"},
|
||||
)
|
27
qcom/opensource/datarmnet-ext/mem/rmnet_mem.h
Normal file
27
qcom/opensource/datarmnet-ext/mem/rmnet_mem.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/* Copyright (c) 2023-2024 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)
|
||||
#define DATARMNET68fc0be252 1000000
|
||||
int rmnet_mem_unregister_notifier(struct notifier_block*nb);int
|
||||
rmnet_mem_register_notifier(struct notifier_block*nb);void rmnet_mem_pb_ind(void
|
||||
);int rmnet_mem_get_pool_size(unsigned order);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
|
||||
|
161
qcom/opensource/datarmnet-ext/mem/rmnet_mem_main.c
Normal file
161
qcom/opensource/datarmnet-ext/mem/rmnet_mem_main.c
Normal file
@@ -0,0 +1,161 @@
|
||||
/* Copyright (c) 2023-2024 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");int
|
||||
DATARMNETa293261aea[DATARMNETbc3b36ce41];module_param_array(DATARMNETa293261aea,
|
||||
int,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(DATARMNETa293261aea,
|
||||
"\x52\x6d\x6e\x65\x74\x20\x6d\x65\x6d\x20\x73\x74\x61\x74\x73\x20\x66\x6f\x72\x20\x6d\x6f\x64\x75\x6c\x65\x73"
|
||||
);int DATARMNETaceba3d00e[DATARMNETfdc300cd1f];module_param_array(
|
||||
DATARMNETaceba3d00e,int,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
|
||||
DATARMNETaceba3d00e,"\x45\x72\x72\x6f\x72\x20\x63\x6f\x75\x6e\x74\x69\x6e\x67");
|
||||
unsigned int DATARMNETf85ebffa7a[POOL_LEN];module_param_array(
|
||||
DATARMNETf85ebffa7a,uint,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
|
||||
DATARMNETf85ebffa7a,
|
||||
"\x50\x6f\x6f\x6c\x20\x73\x69\x7a\x65\x20\x76\x6f\x74\x65\x20\x74\x68\x61\x74\x20\x69\x73\x20\x61\x63\x74\x69\x76\x65\x20\x6f\x6e\x20\x50\x42\x20\x69\x6e\x64"
|
||||
);unsigned DATARMNET15e53a8338[POOL_LEN]={(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),
|
||||
DATARMNETe4e4a9ca82,DATARMNETeb73899668};module_param_array(DATARMNET15e53a8338,
|
||||
uint,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(DATARMNET15e53a8338,
|
||||
"\x50\x6f\x6f\x6c\x20\x73\x69\x7a\x65\x20\x77\x71\x20\x77\x69\x6c\x6c\x20\x61\x64\x6a\x75\x73\x74\x20\x74\x6f\x20\x6f\x6e\x20\x72\x75\x6e"
|
||||
);static char*verinfo[]={"\x32\x30\x30\x33\x62\x61\x65\x33"};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"
|
||||
);struct workqueue_struct*mem_wq;struct delayed_work pool_adjust_work;int
|
||||
DATARMNETb84a1c23e6;struct hrtimer DATARMNET7bbd010c46;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_GPL(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_GPL(rmnet_mem_notifier);int rmnet_mem_get_pool_size(unsigned order
|
||||
){if(order>=POOL_LEN){DATARMNETaceba3d00e[DATARMNET0b84d87330]++;return
|
||||
(0xd2d+202-0xdf7);}return(static_pool_size[order])?static_pool_size[order]:
|
||||
DATARMNET15e53a8338[order];}EXPORT_SYMBOL_GPL(rmnet_mem_get_pool_size);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=kzalloc(sizeof(*mem_slot),GFP_ATOMIC);if(!mem_slot){
|
||||
DATARMNETaceba3d00e[DATARMNETbcd0fd349d]++;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_GPL(
|
||||
rmnet_mem_get_pages_entry);void rmnet_mem_put_page_entry(struct page*page){
|
||||
put_page(page);}EXPORT_SYMBOL_GPL(rmnet_mem_put_page_entry);static void
|
||||
mem_update_pool_work(struct work_struct*work){int i;int DATARMNET2df6d5c0a2;
|
||||
local_bh_disable();for(i=(0xd2d+202-0xdf7);i<POOL_LEN;i++){DATARMNET2df6d5c0a2=(
|
||||
DATARMNETb84a1c23e6&&DATARMNETf85ebffa7a[i])?DATARMNET3657d13d98(
|
||||
DATARMNETf85ebffa7a[i],DATARMNET15e53a8338[i]):DATARMNET15e53a8338[i];
|
||||
rmnet_mem_adjust(DATARMNET2df6d5c0a2,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){
|
||||
DATARMNETaceba3d00e[DATARMNETf03ba54970]++;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);if(pageorder==POOL_NOTIF){rmnet_mem_mode_notify(perm_size)
|
||||
;}}enum hrtimer_restart DATARMNET2c79fa7b83(struct hrtimer*DATARMNET6e4292679f){
|
||||
unsigned DATARMNET28085cfd14;DATARMNETb84a1c23e6=(0xd2d+202-0xdf7);
|
||||
DATARMNETa293261aea[DATARMNETc8e634191a]++;DATARMNET28085cfd14=msecs_to_jiffies(
|
||||
DATARMNET675090896c);queue_delayed_work(mem_wq,&pool_adjust_work,
|
||||
DATARMNET28085cfd14);return HRTIMER_NORESTART;}void rmnet_mem_pb_ind(void){if(!
|
||||
DATARMNETf85ebffa7a[POOL_NOTIF]){DATARMNETa293261aea[DATARMNET55412eb785]++;
|
||||
return;}DATARMNETb84a1c23e6=(0xd26+209-0xdf6);if(hrtimer_active(&
|
||||
DATARMNET7bbd010c46)){hrtimer_cancel(&DATARMNET7bbd010c46);}else{
|
||||
cancel_delayed_work(&pool_adjust_work);queue_delayed_work(mem_wq,&
|
||||
pool_adjust_work,(0xd2d+202-0xdf7));}DATARMNETa293261aea[RMNET_MEM_PB_IND]++;
|
||||
hrtimer_start(&DATARMNET7bbd010c46,ns_to_ktime(DATARMNETc8ec566153*
|
||||
DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);}EXPORT_SYMBOL_GPL(
|
||||
rmnet_mem_pb_ind);int __init rmnet_mem_module_init(void){int rc,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_DELAYED_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__);destroy_workqueue(mem_wq);mem_wq=NULL;return-ENOMEM;}hrtimer_init(&
|
||||
DATARMNET7bbd010c46,CLOCK_MONOTONIC,HRTIMER_MODE_REL);DATARMNET7bbd010c46.
|
||||
function=DATARMNET2c79fa7b83;return(0xd2d+202-0xdf7);}void __exit
|
||||
rmnet_mem_module_exit(void){rmnet_mem_nl_unregister();if(mem_wq){
|
||||
cancel_delayed_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);
|
39
qcom/opensource/datarmnet-ext/mem/rmnet_mem_nl.c
Normal file
39
qcom/opensource/datarmnet-ext/mem/rmnet_mem_nl.c
Normal file
@@ -0,0 +1,39 @@
|
||||
/* Copyright (c) 2023-2024 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,
|
||||
DATARMNETc3ee3defef,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,},{.
|
||||
cmd=DATARMNETc3ee3defef,.doit=DATARMNET803d42739e,},};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);}
|
48
qcom/opensource/datarmnet-ext/mem/rmnet_mem_nl.h
Normal file
48
qcom/opensource/datarmnet-ext/mem/rmnet_mem_nl.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/* Copyright (c) 2023-2024 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 DATARMNET803d42739e(struct sk_buff*skb,struct genl_info*DATARMNET54338da2ff)
|
||||
;int DATARMNETe85d734d4f(int val,struct genl_info*DATARMNET54338da2ff);
|
||||
#endif
|
||||
|
58
qcom/opensource/datarmnet-ext/mem/rmnet_mem_pool.c
Normal file
58
qcom/opensource/datarmnet-ext/mem/rmnet_mem_pool.c
Normal file
@@ -0,0 +1,58 @@
|
||||
/* Copyright (c) 2023-2025 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 delayed_work 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 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);
|
||||
DATARMNETe85d734d4f(DATARMNETa967925c7a,DATARMNET54338da2ff);}else{
|
||||
DATARMNETe85d734d4f(DATARMNET19337c1bbf,DATARMNET54338da2ff);}return
|
||||
(0xd2d+202-0xdf7);}int DATARMNET8e48a951e4(struct sk_buff*skb,struct genl_info*
|
||||
DATARMNET54338da2ff){struct DATARMNET5d23779a8f mem_info;struct nlattr*na;int i;
|
||||
unsigned long DATARMNET28085cfd14;u8 DATARMNET205e85dea0=(0xd2d+202-0xdf7);u8
|
||||
DATARMNET4f9cb7ce34=(0xd2d+202-0xdf7);DATARMNETa293261aea[DATARMNET95fc2e84cc]++
|
||||
;if(DATARMNET54338da2ff->attrs[DATARMNETb0428b7575]){na=DATARMNET54338da2ff->
|
||||
attrs[DATARMNETb0428b7575];if(nla_memcpy(&mem_info,na,sizeof(mem_info))>
|
||||
(0xd2d+202-0xdf7)){rm_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x6d\x6f\x64\x65\x69\x6e\x66\x6f\x20\x25\x75" "\n",
|
||||
__func__,mem_info.DATARMNET855b934a37);}for(i=(0xd2d+202-0xdf7);i<POOL_LEN;i++){
|
||||
if(mem_info.DATARMNET855b934a37&(0xd26+209-0xdf6)<<i&&mem_info.
|
||||
DATARMNETe87b937bb6[i]>(0xd2d+202-0xdf7)&&mem_info.DATARMNETe87b937bb6[i]<=
|
||||
MAX_STATIC_POOL){DATARMNET15e53a8338[i]=mem_info.DATARMNETe87b937bb6[i];
|
||||
max_pool_size[i]=mem_info.DATARMNETe87b937bb6[i];DATARMNET205e85dea0=
|
||||
(0xd26+209-0xdf6);if(!DATARMNET4f9cb7ce34&&mem_info.DATARMNETe87b937bb6[i]>
|
||||
static_pool_size[i]){DATARMNET4f9cb7ce34=(0xd26+209-0xdf6);}}}rm_err(
|
||||
"\x20\x70\x6f\x6f\x6c\x73\x69\x7a\x65\x20\x25\x64\x20\x25\x64" "\n",mem_info.
|
||||
DATARMNETe87b937bb6[(0xd1f+216-0xdf5)],mem_info.DATARMNETe87b937bb6[
|
||||
(0xd18+223-0xdf4)]);if(DATARMNET205e85dea0&&mem_wq){DATARMNET28085cfd14=
|
||||
msecs_to_jiffies(DATARMNET675090896c);cancel_delayed_work_sync(&pool_adjust_work
|
||||
);queue_delayed_work(mem_wq,&pool_adjust_work,(DATARMNET4f9cb7ce34)?
|
||||
(0xd2d+202-0xdf7):DATARMNET28085cfd14);}DATARMNETe85d734d4f(DATARMNETa967925c7a,
|
||||
DATARMNET54338da2ff);}else{DATARMNETe85d734d4f(DATARMNET19337c1bbf,
|
||||
DATARMNET54338da2ff);}return(0xd2d+202-0xdf7);}int DATARMNET803d42739e(struct
|
||||
sk_buff*skb,struct genl_info*DATARMNET54338da2ff){struct DATARMNET5d23779a8f
|
||||
mem_info;struct nlattr*na;int i;DATARMNETa293261aea[DATARMNETe581523c0b]++;if(
|
||||
DATARMNET54338da2ff->attrs[DATARMNETb0428b7575]){na=DATARMNET54338da2ff->attrs[
|
||||
DATARMNETb0428b7575];if(nla_memcpy(&mem_info,na,sizeof(mem_info))>
|
||||
(0xd2d+202-0xdf7)){rm_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\x62\x69\x6e\x64\x20\x70\x6f\x6f\x6c\x5f\x73\x69\x7a\x65\x20\x25\x75" "\n"
|
||||
,__func__,mem_info.DATARMNETe87b937bb6[(0xd18+223-0xdf4)]);for(i=
|
||||
(0xd2d+202-0xdf7);i<POOL_LEN;i++){if(mem_info.DATARMNET855b934a37&
|
||||
(0xd26+209-0xdf6)<<i){if(mem_info.DATARMNETe87b937bb6[i]>(0xd2d+202-0xdf7)&&
|
||||
mem_info.DATARMNETe87b937bb6[i]<=MAX_STATIC_POOL)DATARMNETf85ebffa7a[i]=mem_info
|
||||
.DATARMNETe87b937bb6[i];}}DATARMNETe85d734d4f(DATARMNETa967925c7a,
|
||||
DATARMNET54338da2ff);}else{DATARMNETe85d734d4f(DATARMNET19337c1bbf,
|
||||
DATARMNET54338da2ff);}return(0xd2d+202-0xdf7);}
|
38
qcom/opensource/datarmnet-ext/mem/rmnet_mem_priv.h
Normal file
38
qcom/opensource/datarmnet-ext/mem/rmnet_mem_priv.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/* Copyright (c) 2023-2024 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)
|
||||
#define DATARMNETeb73899668 (0x385+2882-0xc6f)
|
||||
#define DATARMNETe4e4a9ca82 (0xc07+4803-0x1e0c)
|
||||
#define DATARMNET675090896c (0x16f8+4804-0x1e04)
|
||||
#define DATARMNETc8ec566153 (0xec7+711-0x1125)
|
||||
#define DATARMNET3657d13d98(DATARMNET9cf7d31274,DATARMNET5444bd3b6f) ((\
|
||||
DATARMNET9cf7d31274) > (DATARMNET5444bd3b6f) ? (DATARMNET9cf7d31274) : (\
|
||||
DATARMNET5444bd3b6f))
|
||||
enum{RMNET_MEM_PB_IND,DATARMNETc8e634191a,DATARMNET95fc2e84cc,
|
||||
DATARMNETe581523c0b,DATARMNET55412eb785,DATARMNETbc3b36ce41,};enum{
|
||||
DATARMNETbcd0fd349d,DATARMNET0b84d87330,DATARMNETf03ba54970,DATARMNETe433597216,
|
||||
DATARMNETfdc300cd1f,};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 unsigned int DATARMNET15e53a8338[POOL_LEN];extern unsigned int
|
||||
DATARMNETf85ebffa7a[POOL_LEN];extern int DATARMNETa293261aea[DATARMNETbc3b36ce41
|
||||
];
|
||||
#endif
|
||||
|
45
qcom/opensource/datarmnet-ext/offload/Android.mk
Normal file
45
qcom/opensource/datarmnet-ext/offload/Android.mk
Normal 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 += sun
|
||||
RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += parrot
|
||||
RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += tuna
|
||||
|
||||
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
|
14
qcom/opensource/datarmnet-ext/offload/BUILD.bazel
Normal file
14
qcom/opensource/datarmnet-ext/offload/BUILD.bazel
Normal file
@@ -0,0 +1,14 @@
|
||||
load(":define_offload.bzl", "define_offload")
|
||||
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
|
||||
|
||||
define_offload("pineapple", "consolidate")
|
||||
define_offload("pineapple", "perf")
|
||||
|
||||
define_offload("sun", "consolidate")
|
||||
define_offload("sun", "perf")
|
||||
|
||||
define_offload("parrot", "consolidate")
|
||||
define_offload("parrot", "perf")
|
||||
|
||||
define_offload("tuna", "consolidate")
|
||||
define_offload("tuna", "perf")
|
8
qcom/opensource/datarmnet-ext/offload/Kbuild
Normal file
8
qcom/opensource/datarmnet-ext/offload/Kbuild
Normal 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
|
10
qcom/opensource/datarmnet-ext/offload/Kconfig
Normal file
10
qcom/opensource/datarmnet-ext/offload/Kconfig
Normal 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
|
16
qcom/opensource/datarmnet-ext/offload/Makefile
Normal file
16
qcom/opensource/datarmnet-ext/offload/Makefile
Normal 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
|
46
qcom/opensource/datarmnet-ext/offload/define_offload.bzl
Normal file
46
qcom/opensource/datarmnet-ext/offload/define_offload.bzl
Normal 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"},
|
||||
)
|
193
qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.c
Normal file
193
qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.c
Normal file
@@ -0,0 +1,193 @@
|
||||
/* 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/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){rmnet_module_hook_register(&DATARMNETcbc211d052,
|
||||
(0xd26+209-0xdf6));}void DATARMNET560e127137(void){
|
||||
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;}
|
37
qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.h
Normal file
37
qcom/opensource/datarmnet-ext/offload/rmnet_offload_engine.h
Normal 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
|
||||
|
75
qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.c
Normal file
75
qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.c
Normal 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;}
|
18
qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.h
Normal file
18
qcom/opensource/datarmnet-ext/offload/rmnet_offload_knob.h
Normal 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
|
267
qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.c
Normal file
267
qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.c
Normal file
@@ -0,0 +1,267 @@
|
||||
/* 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/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[]={"\x37\x39\x37\x32\x32\x35\x34\x63",
|
||||
"\x33\x36\x66\x30\x64\x38\x62\x31","\x35\x38\x61\x61\x39\x62\x65\x65",
|
||||
"\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"};
|
||||
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){rmnet_module_hook_register(&DATARMNET162e7a2013,
|
||||
(0xd26+209-0xdf6));}void DATARMNETba38823a2f(void){
|
||||
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);}
|
74
qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.h
Normal file
74
qcom/opensource/datarmnet-ext/offload/rmnet_offload_main.h
Normal 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
|
||||
|
99
qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.c
Normal file
99
qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.c
Normal file
@@ -0,0 +1,99 @@
|
||||
/* 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/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__);}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);
|
29
qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.h
Normal file
29
qcom/opensource/datarmnet-ext/offload/rmnet_offload_state.h
Normal file
@@ -0,0 +1,29 @@
|
||||
/* Copyright (c) 2013-2014, 2016-2017, 2019-2020 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 DATARMNETc03e325706
|
||||
#define DATARMNETc03e325706
|
||||
#include "rmnet_offload_engine.h"
|
||||
#include "rmnet_map.h"
|
||||
#include "rmnet_descriptor.h"
|
||||
#include "qmi_rmnet.h"
|
||||
enum{DATARMNET0529bb9c4e,DATARMNET8e1c5c09f8,DATARMNETb881657565,};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
|
||||
|
20
qcom/opensource/datarmnet-ext/offload/rmnet_offload_stats.c
Normal file
20
qcom/opensource/datarmnet-ext/offload/rmnet_offload_stats.c
Normal 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));}
|
27
qcom/opensource/datarmnet-ext/offload/rmnet_offload_stats.h
Normal file
27
qcom/opensource/datarmnet-ext/offload/rmnet_offload_stats.h
Normal 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
|
||||
|
83
qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.c
Normal file
83
qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.c
Normal 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;}
|
21
qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.h
Normal file
21
qcom/opensource/datarmnet-ext/offload/rmnet_offload_tcp.h
Normal 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
|
||||
|
40
qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.c
Normal file
40
qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.c
Normal 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;}
|
21
qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.h
Normal file
21
qcom/opensource/datarmnet-ext/offload/rmnet_offload_udp.h
Normal 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
|
||||
|
59
qcom/opensource/datarmnet-ext/perf/Android.mk
Normal file
59
qcom/opensource/datarmnet-ext/perf/Android.mk
Normal 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 += sun
|
||||
RMNET_PERF_DLKM_PLATFORMS_LIST += parrot
|
||||
RMNET_PERF_DLKM_PLATFORMS_LIST += tuna
|
||||
|
||||
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
|
14
qcom/opensource/datarmnet-ext/perf/BUILD.bazel
Normal file
14
qcom/opensource/datarmnet-ext/perf/BUILD.bazel
Normal file
@@ -0,0 +1,14 @@
|
||||
load(":define_perf.bzl", "define_perf")
|
||||
load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
|
||||
|
||||
define_perf("pineapple", "consolidate")
|
||||
define_perf("pineapple", "perf")
|
||||
|
||||
define_perf("sun", "consolidate")
|
||||
define_perf("sun", "perf")
|
||||
|
||||
define_perf("parrot", "consolidate")
|
||||
define_perf("parrot", "perf")
|
||||
|
||||
define_perf("tuna", "consolidate")
|
||||
define_perf("tuna", "perf")
|
7
qcom/opensource/datarmnet-ext/perf/Kbuild
Normal file
7
qcom/opensource/datarmnet-ext/perf/Kbuild
Normal 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
|
11
qcom/opensource/datarmnet-ext/perf/Kconfig
Normal file
11
qcom/opensource/datarmnet-ext/perf/Kconfig
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# RMNET_PERF driver
|
||||
#
|
||||
|
||||
menuconfig RMNET_PERF
|
||||
tristate "Rmnet perf support"
|
||||
default m
|
||||
depends on RMNET_CORE
|
||||
depends on RMNET_SHS
|
||||
---help---
|
||||
Performance support for the RmNet driver
|
17
qcom/opensource/datarmnet-ext/perf/Makefile
Normal file
17
qcom/opensource/datarmnet-ext/perf/Makefile
Normal file
@@ -0,0 +1,17 @@
|
||||
#By default build for CLD
|
||||
RMNET_PERF_SELECT := CONFIG_RMNET_PERF=m
|
||||
KBUILD_OPTIONS += $(RMNET_PERF_SELECT)
|
||||
KBUILD_OPTIONS += $(KBUILD_EXTRA) # Extra config if any
|
||||
KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_PATH)/Module.symvers
|
||||
KBUILD_EXTRA_SYMBOLS += $(M)/../../$(DATARMNET_SHS_PATH)/Module.symvers
|
||||
|
||||
M ?= $(shell pwd)
|
||||
|
||||
all:
|
||||
$(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS) $(KBUILD_EXTRA_SYMBOLS)
|
||||
|
||||
modules_install:
|
||||
$(MAKE) INSTALL_MOD_STRIP=1 -C $(KERNEL_SRC) M=$(M) modules_install
|
||||
|
||||
clean:
|
||||
$(MAKE) -C $(KERNEL_SRC) M=$(M) clean
|
37
qcom/opensource/datarmnet-ext/perf/define_perf.bzl
Normal file
37
qcom/opensource/datarmnet-ext/perf/define_perf.bzl
Normal 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"},
|
||||
)
|
409
qcom/opensource/datarmnet-ext/perf/rmnet_perf_main.c
Normal file
409
qcom/opensource/datarmnet-ext/perf/rmnet_perf_main.c
Normal file
@@ -0,0 +1,409 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/* Copyright (c) 2021-2024 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"
|
||||
#include "rmnet_descriptor.h"
|
||||
#include "rmnet_map.h"
|
||||
#include "rmnet_qmap.h"
|
||||
#include <net/genetlink.h>
|
||||
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={
|
||||
"\x37\x31\x62\x32\x30\x31\x39\x64","\x31\x61\x35\x66\x61\x34\x39\x33",
|
||||
"\x35\x38\x61\x61\x39\x62\x65\x65","\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"};
|
||||
#define DATARMNETa83100182f "\x52\x4d\x4e\x45\x54\x5f\x50\x45\x52\x46"
|
||||
#define DATARMNET00fb84ae3b \
|
||||
"\x52\x4d\x4e\x45\x54\x5f\x50\x45\x52\x46\x5f\x4d\x43\x5f\x30"
|
||||
#define DATARMNET73fb6764ba \
|
||||
"\x52\x4d\x4e\x45\x54\x5f\x50\x45\x52\x46\x5f\x4d\x43\x5f\x31"
|
||||
#define DATARMNET28c8fd3c72 \
|
||||
"\x52\x4d\x4e\x45\x54\x5f\x50\x45\x52\x46\x5f\x4d\x43\x5f\x32"
|
||||
#define DATARMNET7c6c3f348a \
|
||||
"\x52\x4d\x4e\x45\x54\x5f\x50\x45\x52\x46\x5f\x4d\x43\x5f\x33"
|
||||
#define DATARMNET816321eafb (0xd26+209-0xdf6)
|
||||
enum{DATARMNET6030257476,DATARMNET9420caeb53,DATARMNET036a8433e0,
|
||||
DATARMNET553ce0f746,};enum{DATARMNETda6c092e19,DATARMNET3b1665bc33,
|
||||
DATARMNETf5c6d9329e,DATARMNET951a42c086,DATARMNET246991e0bf,DATARMNET5b232a76af,
|
||||
DATARMNETf1e02c5c94,};enum{DATARMNET055fcd05b3,DATARMNETf1d566b8aa,
|
||||
DATARMNET4b4a874099,DATARMNETa5619df200,DATARMNET906d0d1a72,};
|
||||
#define DATARMNETed4efa075c (DATARMNETf1e02c5c94 - (0xd26+209-0xdf6))
|
||||
struct DATARMNETf698794b6c{u8 mux_id;}__aligned((0xd26+209-0xdf6));struct
|
||||
DATARMNET980f4f86dc{u64 DATARMNET209094b7dd;u64 DATARMNETfdd32eb79e;u64
|
||||
DATARMNET6c81844df0;u64 DATARMNET462c6e2ad3;u64 DATARMNET8409399739;u64
|
||||
DATARMNETcb286ca3be;u64 DATARMNET2698e2274b;u64 DATARMNET29b53445ac;}__aligned(
|
||||
(0xd26+209-0xdf6));struct DATARMNETcbee5bfe39{u64 DATARMNET09a124a6d5;u64
|
||||
DATARMNET9447586660;u64 DATARMNET3507da0e2a;u64 DATARMNETa510b8513c;u64
|
||||
DATARMNET34fcb79334;u64 DATARMNETda64236809;u64 DATARMNETe6327165c4;u64
|
||||
DATARMNET9dbda9c770;u64 DATARMNETaa87614a96;u64 DATARMNET232a43aa2e;u64
|
||||
DATARMNET914ce4d7bc;}__aligned((0xd26+209-0xdf6));struct DATARMNET2af049cb88{
|
||||
struct DATARMNETcbee5bfe39 DATARMNETcd826f85c1;struct DATARMNET980f4f86dc
|
||||
DATARMNETc5ec22d8f4[(0xeb7+1158-0x132d)];u64 DATARMNET11724e6fbe;u64
|
||||
DATARMNET3e28742e7a;}__aligned((0xd26+209-0xdf6));struct DATARMNET67c61325df{
|
||||
struct DATARMNET980f4f86dc DATARMNET0e6c4cf04c;}__aligned((0xd26+209-0xdf6));
|
||||
struct DATARMNETce5df1988e{struct DATARMNET2af049cb88 DATARMNETbe4615133d;struct
|
||||
DATARMNET67c61325df DATARMNET0b3510b126;}__aligned((0xd26+209-0xdf6));struct
|
||||
DATARMNETf723c861fa{u16 DATARMNETfdf7997f18;struct DATARMNETce5df1988e
|
||||
DATARMNETa57ae53d4c;}__aligned((0xd26+209-0xdf6));struct DATARMNETec7dafaa2f{u16
|
||||
DATARMNETaab62d18d0;u8 cmd_name;u8 ack;u8 DATARMNET7dcd62530f[16384];}__aligned
|
||||
((0xd26+209-0xdf6));struct DATARMNETa312f70a7c{u8 cmd_name;u16
|
||||
DATARMNETfdf7997f18;}__aligned((0xd26+209-0xdf6));struct DATARMNET0276dc600a{u16
|
||||
DATARMNETaab62d18d0;u8 cmd_name;u8 ack;u8 DATARMNET7dcd62530f[
|
||||
(0x24f5+499-0x16e8)];}__aligned((0xd26+209-0xdf6));static struct nla_policy
|
||||
DATARMNET9e2a491680[DATARMNETed4efa075c+(0xd26+209-0xdf6)]={[DATARMNET3b1665bc33
|
||||
]=NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNETf698794b6c)),[DATARMNETf5c6d9329e]
|
||||
=NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNETf723c861fa)),[DATARMNET951a42c086]=
|
||||
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNETec7dafaa2f)),[DATARMNET246991e0bf]=
|
||||
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNETa312f70a7c)),[DATARMNET5b232a76af]=
|
||||
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNET0276dc600a)),};static const struct
|
||||
genl_multicast_group DATARMNET4e83edd544[]={[DATARMNET055fcd05b3]={.name=
|
||||
DATARMNET00fb84ae3b,},[DATARMNETf1d566b8aa]={.name=DATARMNET73fb6764ba,},[
|
||||
DATARMNET4b4a874099]={.name=DATARMNET28c8fd3c72,},[DATARMNETa5619df200]={.name=
|
||||
DATARMNET7c6c3f348a,},};int DATARMNET376884db81=(0xd2d+202-0xdf7);
|
||||
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));
|
||||
#define DATARMNETf241a4b20f (0xe07+6616-0x2624)
|
||||
struct DATARMNETce5df1988e DATARMNETceb52e7075[(0xeb7+1151-0x1325)];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;}}}void DATARMNET21f4abc439(struct sk_buff*
|
||||
DATARMNET543491eb0f);void DATARMNETa7918f2abb(struct sk_buff*DATARMNET543491eb0f
|
||||
){if(skb_linearize(DATARMNET543491eb0f)){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x4c\x69\x6e\x65\x61\x72\x69\x7a\x61\x74\x69\x6f\x6e\x20\x65\x72\x72\x6f\x72" "\n"
|
||||
,__func__);return;}DATARMNET21f4abc439(DATARMNET543491eb0f);}void
|
||||
DATARMNET941e2135b0(uint8_t mux_id,uint32_t DATARMNET6f031e7934){if(!mux_id||
|
||||
mux_id>(0xeb7+1158-0x132d))goto DATARMNET27d4697979;switch(DATARMNET6f031e7934){
|
||||
case(0xd2d+202-0xdf7):DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.
|
||||
DATARMNETcd826f85c1.DATARMNET09a124a6d5++;break;case(0xd26+209-0xdf6):
|
||||
DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.DATARMNETcd826f85c1.
|
||||
DATARMNET9447586660++;break;case(0xd1f+216-0xdf5):DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNETcd826f85c1.DATARMNET3507da0e2a++;break;case
|
||||
(0xd18+223-0xdf4):DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.
|
||||
DATARMNETcd826f85c1.DATARMNETa510b8513c++;break;case(0xd11+230-0xdf3):
|
||||
DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.DATARMNETcd826f85c1.
|
||||
DATARMNET34fcb79334++;break;case(0xd0a+237-0xdf2):DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNETcd826f85c1.DATARMNETda64236809++;break;case
|
||||
(0xd03+244-0xdf1):DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.
|
||||
DATARMNETcd826f85c1.DATARMNETe6327165c4++;break;case(0xcfc+267-0xe00):
|
||||
DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.DATARMNETcd826f85c1.
|
||||
DATARMNET9dbda9c770++;break;case(0xd35+210-0xdff):DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNETcd826f85c1.DATARMNETaa87614a96++;break;case 9:
|
||||
DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.DATARMNETcd826f85c1.
|
||||
DATARMNET232a43aa2e++;break;case(0xd27+224-0xdfd):DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNETcd826f85c1.DATARMNET914ce4d7bc++;break;default:
|
||||
break;}DATARMNET27d4697979:return;}void DATARMNETe6269dcf2c(uint8_t mux_id,
|
||||
uint8_t DATARMNETb2211e57d2,uint64_t len,uint32_t DATARMNET6f031e7934){if(!
|
||||
mux_id||mux_id>(0xeb7+1158-0x132d))goto DATARMNET27d4697979;if(
|
||||
DATARMNETb2211e57d2>=(0xeb7+1158-0x132d))goto DATARMNET27d4697979;switch(
|
||||
DATARMNET6f031e7934){case(0xd2d+202-0xdf7):DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNETc5ec22d8f4[DATARMNETb2211e57d2].DATARMNET209094b7dd
|
||||
++;DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.DATARMNETc5ec22d8f4[
|
||||
DATARMNETb2211e57d2].DATARMNETfdd32eb79e+=len;break;case(0xd26+209-0xdf6):
|
||||
DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.DATARMNETc5ec22d8f4[
|
||||
DATARMNETb2211e57d2].DATARMNET6c81844df0++;DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNETc5ec22d8f4[DATARMNETb2211e57d2].DATARMNET462c6e2ad3
|
||||
+=len;break;case(0xd1f+216-0xdf5):DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNETc5ec22d8f4[DATARMNETb2211e57d2].DATARMNET8409399739
|
||||
++;DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.DATARMNETc5ec22d8f4[
|
||||
DATARMNETb2211e57d2].DATARMNETcb286ca3be+=len;break;case(0xd18+223-0xdf4):
|
||||
DATARMNETceb52e7075[mux_id].DATARMNETbe4615133d.DATARMNETc5ec22d8f4[
|
||||
DATARMNETb2211e57d2].DATARMNET2698e2274b++;DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNETc5ec22d8f4[DATARMNETb2211e57d2].DATARMNET29b53445ac
|
||||
+=len;break;}DATARMNET27d4697979:return;}void DATARMNETc70b241863(uint8_t mux_id
|
||||
,struct sk_buff*DATARMNET543491eb0f){if(!mux_id||mux_id>(0xeb7+1158-0x132d))goto
|
||||
DATARMNET27d4697979;if(DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){if(
|
||||
ip_hdr(DATARMNET543491eb0f)->protocol==IPPROTO_TCP){DATARMNETceb52e7075[mux_id].
|
||||
DATARMNET0b3510b126.DATARMNET0e6c4cf04c.DATARMNET209094b7dd++;
|
||||
DATARMNETceb52e7075[mux_id].DATARMNET0b3510b126.DATARMNET0e6c4cf04c.
|
||||
DATARMNETfdd32eb79e+=DATARMNET543491eb0f->len;}else if(ip_hdr(
|
||||
DATARMNET543491eb0f)->protocol==IPPROTO_UDP){DATARMNETceb52e7075[mux_id].
|
||||
DATARMNET0b3510b126.DATARMNET0e6c4cf04c.DATARMNET6c81844df0++;
|
||||
DATARMNETceb52e7075[mux_id].DATARMNET0b3510b126.DATARMNET0e6c4cf04c.
|
||||
DATARMNET462c6e2ad3+=DATARMNET543491eb0f->len;}}if(DATARMNET543491eb0f->protocol
|
||||
==htons(ETH_P_IPV6)){if(ipv6_hdr(DATARMNET543491eb0f)->nexthdr==IPPROTO_TCP){
|
||||
DATARMNETceb52e7075[mux_id].DATARMNET0b3510b126.DATARMNET0e6c4cf04c.
|
||||
DATARMNET8409399739++;DATARMNETceb52e7075[mux_id].DATARMNET0b3510b126.
|
||||
DATARMNET0e6c4cf04c.DATARMNETcb286ca3be+=DATARMNET543491eb0f->len;}else if(
|
||||
ipv6_hdr(DATARMNET543491eb0f)->nexthdr==IPPROTO_UDP){DATARMNETceb52e7075[mux_id]
|
||||
.DATARMNET0b3510b126.DATARMNET0e6c4cf04c.DATARMNET2698e2274b++;
|
||||
DATARMNETceb52e7075[mux_id].DATARMNET0b3510b126.DATARMNET0e6c4cf04c.
|
||||
DATARMNET29b53445ac+=DATARMNET543491eb0f->len;}}DATARMNET27d4697979:return;}void
|
||||
DATARMNETc892e451fe(uint8_t mux_id,uint64_t len){if(!mux_id||mux_id>
|
||||
(0xeb7+1158-0x132d))goto DATARMNET27d4697979;DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNET11724e6fbe++;DATARMNETceb52e7075[mux_id].
|
||||
DATARMNETbe4615133d.DATARMNET3e28742e7a+=len;DATARMNET27d4697979: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,},{.hooknum=
|
||||
RMNET_MODULE_HOOK_PERF_CMD_INGRESS,.func=DATARMNETa7918f2abb,},{.hooknum=
|
||||
RMNET_MODULE_HOOK_PERF_COAL_COMMON_STAT,.func=DATARMNET941e2135b0,},{.hooknum=
|
||||
RMNET_MODULE_HOOK_PERF_COAL_STAT,.func=DATARMNETe6269dcf2c,},{.hooknum=
|
||||
RMNET_MODULE_HOOK_PERF_SEG_STAT,.func=DATARMNETc70b241863,},{.hooknum=
|
||||
RMNET_MODULE_HOOK_PERF_NON_COAL_STAT,.func=DATARMNETc892e451fe,},};void
|
||||
DATARMNET49c17a32bc(void){rmnet_module_hook_register(DATARMNET95a71e03c1,
|
||||
ARRAY_SIZE(DATARMNET95a71e03c1));}void DATARMNET41e8cc085c(void){
|
||||
rmnet_module_hook_unregister(DATARMNET95a71e03c1,ARRAY_SIZE(DATARMNET95a71e03c1)
|
||||
);}int DATARMNET0b2c5bc768(struct sk_buff*DATARMNET543491eb0f,struct genl_info*
|
||||
DATARMNET54338da2ff);int DATARMNET114b9148d9(struct sk_buff*DATARMNET543491eb0f,
|
||||
struct genl_info*DATARMNET54338da2ff);static const struct genl_ops
|
||||
DATARMNET1cf1a695d4[]={{.cmd=DATARMNET9420caeb53,.doit=DATARMNET0b2c5bc768,},{.
|
||||
cmd=DATARMNET036a8433e0,.doit=DATARMNET114b9148d9,},};struct genl_family
|
||||
DATARMNETe64f65b66c __ro_after_init={.hdrsize=(0xd2d+202-0xdf7),.name=
|
||||
DATARMNETa83100182f,.version=DATARMNET816321eafb,.maxattr=DATARMNETed4efa075c,.
|
||||
policy=DATARMNET9e2a491680,.ops=DATARMNET1cf1a695d4,.n_ops=ARRAY_SIZE(
|
||||
DATARMNET1cf1a695d4),.mcgrps=DATARMNET4e83edd544,.n_mcgrps=ARRAY_SIZE(
|
||||
DATARMNET4e83edd544),};int DATARMNET0b2c5bc768(struct sk_buff*
|
||||
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct
|
||||
DATARMNETf723c861fa*DATARMNETa13fcf9070=NULL;struct DATARMNETf698794b6c
|
||||
DATARMNETddcafd8b91;int DATARMNET4989d95877=-(0xd26+209-0xdf6),
|
||||
DATARMNET61c2303133=-ENOMEM;struct sk_buff*DATARMNETfb7a00623a=NULL;struct
|
||||
nlattr*DATARMNET9c5e00ef03=NULL;void*DATARMNET1ed9689f7e=NULL;
|
||||
DATARMNETfb7a00623a=genlmsg_new(NLMSG_GOODSIZE,GFP_ATOMIC);if(!
|
||||
DATARMNETfb7a00623a){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x20\x73\x6b\x62" "\n"
|
||||
,__func__);goto DATARMNET27d4697979;}DATARMNET1ed9689f7e=genlmsg_put(
|
||||
DATARMNETfb7a00623a,(0xd2d+202-0xdf7),DATARMNET376884db81++,&DATARMNETe64f65b66c
|
||||
,(0xd2d+202-0xdf7),DATARMNET9420caeb53);if(!DATARMNET1ed9689f7e){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x73\x65\x74\x20\x68\x65\x61\x64\x65\x72\x20\x70\x6f\x69\x6e\x74\x65\x72" "\n"
|
||||
,__func__);goto DATARMNETb042feb7e2;}DATARMNETa13fcf9070=kzalloc(sizeof(struct
|
||||
DATARMNETf723c861fa),GFP_ATOMIC);if(!DATARMNETa13fcf9070){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x20\x63\x6d\x64" "\n"
|
||||
,__func__);goto DATARMNETb042feb7e2;}memset(&DATARMNETddcafd8b91,
|
||||
(0xd2d+202-0xdf7),sizeof(struct DATARMNETf698794b6c));DATARMNET61c2303133=-
|
||||
EINVAL;DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[DATARMNET3b1665bc33];if(!
|
||||
DATARMNET9c5e00ef03){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x67\x65\x74\x20\x63\x6d\x64\x20\x72\x65\x71\x75\x65\x73\x74\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65" "\n"
|
||||
,__func__);goto DATARMNET321a78afb9;}DATARMNET4989d95877=nla_memcpy(&
|
||||
DATARMNETddcafd8b91,DATARMNET9c5e00ef03,sizeof(struct DATARMNETf698794b6c));if(
|
||||
DATARMNET4989d95877<=(0xd2d+202-0xdf7)){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x6f\x70\x79\x20\x63\x6d\x64\x20\x72\x65\x71\x75\x65\x73\x74\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65" "\n"
|
||||
,__func__);goto DATARMNET321a78afb9;}if(DATARMNETddcafd8b91.mux_id>
|
||||
(0xeb7+1158-0x132d)){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x55\x6e\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x20\x6d\x75\x78\x20\x69\x64\x20\x25\x75" "\n"
|
||||
,__func__,DATARMNETddcafd8b91.mux_id);goto DATARMNET321a78afb9;}
|
||||
DATARMNET61c2303133=(0xd2d+202-0xdf7);memcpy(&DATARMNETa13fcf9070->
|
||||
DATARMNETa57ae53d4c,&DATARMNETceb52e7075[DATARMNETddcafd8b91.mux_id],sizeof(
|
||||
struct DATARMNETce5df1988e));DATARMNET321a78afb9:DATARMNETa13fcf9070->
|
||||
DATARMNETfdf7997f18=abs(DATARMNET61c2303133);if(!nla_put(DATARMNETfb7a00623a,
|
||||
DATARMNETf5c6d9329e,sizeof(struct DATARMNETf723c861fa),DATARMNETa13fcf9070)){
|
||||
kfree(DATARMNETa13fcf9070);genlmsg_end(DATARMNETfb7a00623a,DATARMNET1ed9689f7e);
|
||||
return genlmsg_reply(DATARMNETfb7a00623a,DATARMNET54338da2ff);}else{pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x6f\x70\x79\x20\x63\x6d\x64\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65" "\n"
|
||||
,__func__);}kfree(DATARMNETa13fcf9070);DATARMNETb042feb7e2:nlmsg_free(
|
||||
DATARMNETfb7a00623a);DATARMNET27d4697979:return DATARMNET61c2303133;}void
|
||||
DATARMNET21f4abc439(struct sk_buff*DATARMNET543491eb0f){uint8_t
|
||||
DATARMNETb65c469a15=sizeof(struct qmap_cmd_hdr);struct DATARMNET0276dc600a*
|
||||
DATARMNET3be93329cd=NULL;struct qmap_cmd_hdr*DATARMNET8b1565b348=NULL;struct
|
||||
sk_buff*DATARMNET1bd2c6f90a=NULL;void*DATARMNET1ed9689f7e=NULL;int
|
||||
DATARMNETb14e52a504=-EINVAL;DATARMNET1bd2c6f90a=genlmsg_new(NLMSG_GOODSIZE,
|
||||
GFP_ATOMIC);if(!DATARMNET1bd2c6f90a){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x69\x6e\x64\x69\x63\x61\x74\x69\x6f\x6e\x20\x73\x6b\x62" "\n"
|
||||
,__func__);goto DATARMNET27d4697979;}DATARMNET1ed9689f7e=genlmsg_put(
|
||||
DATARMNET1bd2c6f90a,(0xd2d+202-0xdf7),DATARMNET376884db81++,&DATARMNETe64f65b66c
|
||||
,(0xd2d+202-0xdf7),DATARMNET036a8433e0);if(!DATARMNET1ed9689f7e){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x73\x65\x74\x20\x68\x65\x61\x64\x65\x72\x20\x70\x6f\x69\x6e\x74\x65\x72" "\n"
|
||||
,__func__);goto DATARMNETb042feb7e2;}DATARMNET3be93329cd=kzalloc(sizeof(struct
|
||||
DATARMNET0276dc600a),GFP_ATOMIC);if(!DATARMNET3be93329cd){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x69\x6e\x64\x69\x63\x61\x74\x69\x6f\x6e\x20\x63\x6d\x64" "\n"
|
||||
,__func__);goto DATARMNETb042feb7e2;}if(DATARMNET543491eb0f->len<=
|
||||
DATARMNETb65c469a15){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x49\x6e\x63\x6f\x6d\x69\x6e\x67\x20\x63\x6d\x64\x20\x73\x69\x7a\x65\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64" "\n"
|
||||
,__func__);goto DATARMNET321a78afb9;}DATARMNET8b1565b348=(struct qmap_cmd_hdr*)
|
||||
DATARMNET543491eb0f->data;DATARMNET3be93329cd->DATARMNETaab62d18d0=
|
||||
DATARMNET543491eb0f->len-DATARMNETb65c469a15;DATARMNET3be93329cd->cmd_name=
|
||||
DATARMNET8b1565b348->cmd_name;DATARMNET3be93329cd->ack=DATARMNET8b1565b348->
|
||||
cmd_type;memcpy(DATARMNET3be93329cd->DATARMNET7dcd62530f,DATARMNET543491eb0f->
|
||||
data+DATARMNETb65c469a15,DATARMNET3be93329cd->DATARMNETaab62d18d0);if(nla_put(
|
||||
DATARMNET1bd2c6f90a,DATARMNET5b232a76af,sizeof(struct DATARMNET0276dc600a),
|
||||
DATARMNET3be93329cd)){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x6f\x70\x79\x20\x63\x6d\x64\x20\x69\x6e\x64\x69\x63\x61\x74\x69\x6f\x6e\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65" "\n"
|
||||
,__func__);goto DATARMNET321a78afb9;}genlmsg_end(DATARMNET1bd2c6f90a,
|
||||
DATARMNET1ed9689f7e);kfree(DATARMNET3be93329cd);DATARMNETb14e52a504=
|
||||
genlmsg_multicast(&DATARMNETe64f65b66c,DATARMNET1bd2c6f90a,(0xd2d+202-0xdf7),
|
||||
DATARMNET055fcd05b3,GFP_ATOMIC);if(DATARMNETb14e52a504==-EINVAL){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x67\x72\x6f\x75\x70\x20\x66\x6f\x72\x20\x6d\x75\x6c\x74\x69\x63\x61\x73\x74" "\n"
|
||||
,__func__);goto DATARMNETb042feb7e2;}return;DATARMNET321a78afb9:kfree(
|
||||
DATARMNET3be93329cd);DATARMNETb042feb7e2:nlmsg_free(DATARMNET1bd2c6f90a);
|
||||
DATARMNET27d4697979:return;}int DATARMNETaee3327083(struct DATARMNETec7dafaa2f*
|
||||
cmd){struct net_device*dev=dev_get_by_name(&init_net,
|
||||
"\x72\x6d\x6e\x65\x74\x5f\x69\x70\x61\x30");int DATARMNETaab62d18d0=sizeof(
|
||||
struct qmap_cmd_hdr)+cmd->DATARMNETaab62d18d0;struct qmap_cmd_hdr*
|
||||
DATARMNET8b1565b348=NULL;struct sk_buff*DATARMNET543491eb0f=NULL;char*
|
||||
DATARMNET7dcd62530f=NULL;int DATARMNET61c2303133=-ENODEV;if(!dev){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x55\x6e\x61\x62\x6c\x65\x20\x74\x6f\x20\x67\x65\x74\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x74\x6f\x20\x64\x65\x76\x69\x63\x65" "\n"
|
||||
,__func__);goto DATARMNET27d4697979;}DATARMNET543491eb0f=alloc_skb(
|
||||
DATARMNETaab62d18d0,GFP_ATOMIC);if(!DATARMNET543491eb0f){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x55\x6e\x61\x62\x6c\x65\x20\x74\x6f\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x6d\x65\x6d\x6f\x72\x79\x20\x66\x6f\x72\x20\x63\x6d\x64" "\n"
|
||||
,__func__);DATARMNET61c2303133=-ENOMEM;goto DATARMNETb042feb7e2;}skb_put(
|
||||
DATARMNET543491eb0f,DATARMNETaab62d18d0);memset(DATARMNET543491eb0f->data,
|
||||
(0xd2d+202-0xdf7),DATARMNETaab62d18d0);DATARMNET8b1565b348=(struct qmap_cmd_hdr*
|
||||
)DATARMNET543491eb0f->data;DATARMNET8b1565b348->cd_bit=(0xd26+209-0xdf6);
|
||||
DATARMNET8b1565b348->mux_id=(0xd2d+202-0xdf7);DATARMNET8b1565b348->pkt_len=htons
|
||||
(sizeof(struct rmnet_map_control_command_header)+cmd->DATARMNETaab62d18d0);
|
||||
DATARMNET8b1565b348->cmd_name=cmd->cmd_name;DATARMNET8b1565b348->cmd_type=cmd->
|
||||
ack;DATARMNET7dcd62530f=(char*)(DATARMNET543491eb0f->data+sizeof(struct
|
||||
qmap_cmd_hdr));memcpy(DATARMNET7dcd62530f,cmd->DATARMNET7dcd62530f,cmd->
|
||||
DATARMNETaab62d18d0);DATARMNET543491eb0f->dev=dev;DATARMNET543491eb0f->protocol=
|
||||
htons(ETH_P_MAP);DATARMNET61c2303133=rmnet_qmap_send(DATARMNET543491eb0f,
|
||||
RMNET_CH_CTL,false);DATARMNETb042feb7e2:dev_put(dev);DATARMNET27d4697979:return
|
||||
DATARMNET61c2303133;}int DATARMNET114b9148d9(struct sk_buff*DATARMNET543491eb0f,
|
||||
struct genl_info*DATARMNET54338da2ff){struct DATARMNETec7dafaa2f*
|
||||
DATARMNETddcafd8b91=NULL;struct DATARMNETa312f70a7c DATARMNETa13fcf9070;int
|
||||
DATARMNET4989d95877=-(0xd26+209-0xdf6),DATARMNET61c2303133=-ENOMEM;struct
|
||||
sk_buff*DATARMNETfb7a00623a=NULL;struct nlattr*DATARMNET9c5e00ef03=NULL;void*
|
||||
DATARMNET1ed9689f7e=NULL;DATARMNETfb7a00623a=genlmsg_new(NLMSG_GOODSIZE,
|
||||
GFP_ATOMIC);if(!DATARMNETfb7a00623a){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x20\x73\x6b\x62" "\n"
|
||||
,__func__);goto DATARMNET27d4697979;}DATARMNET1ed9689f7e=genlmsg_put(
|
||||
DATARMNETfb7a00623a,(0xd2d+202-0xdf7),DATARMNET376884db81++,&DATARMNETe64f65b66c
|
||||
,(0xd2d+202-0xdf7),DATARMNET036a8433e0);if(!DATARMNET1ed9689f7e){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x73\x65\x74\x20\x68\x65\x61\x64\x65\x72\x20\x70\x6f\x69\x6e\x74\x65\x72" "\n"
|
||||
,__func__);goto DATARMNETb042feb7e2;}memset(&DATARMNETa13fcf9070,
|
||||
(0xd2d+202-0xdf7),sizeof(struct DATARMNETa312f70a7c));DATARMNETddcafd8b91=
|
||||
kzalloc(sizeof(struct DATARMNETec7dafaa2f),GFP_ATOMIC);if(!DATARMNETddcafd8b91){
|
||||
pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x72\x65\x71\x75\x65\x73\x74\x20\x63\x6d\x64" "\n"
|
||||
,__func__);goto DATARMNET321a78afb9;}DATARMNET61c2303133=-EINVAL;
|
||||
DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[DATARMNET951a42c086];if(!
|
||||
DATARMNET9c5e00ef03){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x67\x65\x74\x20\x63\x6d\x64\x20\x72\x65\x71\x75\x65\x73\x74\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65" "\n"
|
||||
,__func__);goto DATARMNET55f99d18f5;}DATARMNET4989d95877=nla_memcpy(
|
||||
DATARMNETddcafd8b91,DATARMNET9c5e00ef03,sizeof(struct DATARMNETec7dafaa2f));if(
|
||||
DATARMNET4989d95877<=(0xd2d+202-0xdf7)){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x6f\x70\x79\x20\x63\x6d\x64\x20\x72\x65\x71\x75\x65\x73\x74\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65" "\n"
|
||||
,__func__);goto DATARMNET55f99d18f5;}switch(DATARMNETddcafd8b91->cmd_name){case
|
||||
QMAP_CMD_31:case QMAP_CMD_32:case QMAP_CMD_40:case QMAP_CMD_42:break;default:
|
||||
pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x55\x6e\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x25\x75" "\n"
|
||||
,__func__,DATARMNETddcafd8b91->cmd_name);goto DATARMNET55f99d18f5;}if(!
|
||||
DATARMNETddcafd8b91->DATARMNETaab62d18d0||(DATARMNETddcafd8b91->
|
||||
DATARMNETaab62d18d0>16000)){pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x55\x6e\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x20\x6c\x65\x6e\x67\x74\x68\x20\x25\x75" "\n"
|
||||
,__func__,DATARMNETddcafd8b91->DATARMNETaab62d18d0);goto DATARMNET55f99d18f5;}
|
||||
DATARMNETa13fcf9070.cmd_name=DATARMNETddcafd8b91->cmd_name;DATARMNET61c2303133=
|
||||
DATARMNETaee3327083(DATARMNETddcafd8b91);DATARMNET55f99d18f5:kfree(
|
||||
DATARMNETddcafd8b91);DATARMNET321a78afb9:DATARMNETa13fcf9070.DATARMNETfdf7997f18
|
||||
=abs(DATARMNET61c2303133);if(!nla_put(DATARMNETfb7a00623a,DATARMNET246991e0bf,
|
||||
sizeof(struct DATARMNETa312f70a7c),&DATARMNETa13fcf9070)){genlmsg_end(
|
||||
DATARMNETfb7a00623a,DATARMNET1ed9689f7e);return genlmsg_reply(
|
||||
DATARMNETfb7a00623a,DATARMNET54338da2ff);}else{pr_err(
|
||||
"\x25\x73\x28\x29\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x6f\x70\x79\x20\x63\x6d\x64\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65" "\n"
|
||||
,__func__);}DATARMNETb042feb7e2:nlmsg_free(DATARMNETfb7a00623a);
|
||||
DATARMNET27d4697979:return DATARMNET61c2303133;}int DATARMNET31ff8cdc40(void){
|
||||
return genl_register_family(&DATARMNETe64f65b66c);}void DATARMNET8e1548cd2e(void
|
||||
){genl_unregister_family(&DATARMNETe64f65b66c);}static int __init
|
||||
DATARMNET63abbdc3d3(void){int DATARMNETb14e52a504;pr_info(
|
||||
"\x25\x73\x28\x29\x3a\x20\x4c\x6f\x61\x64\x69\x6e\x67" "\n",__func__);
|
||||
DATARMNETb14e52a504=DATARMNET7e9995246e();if(DATARMNETb14e52a504)goto
|
||||
DATARMNET27d4697979;DATARMNETb14e52a504=DATARMNETe80a33d544();if(
|
||||
DATARMNETb14e52a504)goto DATARMNETb042feb7e2;DATARMNETb14e52a504=
|
||||
DATARMNET31ff8cdc40();if(DATARMNETb14e52a504){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__);goto DATARMNET321a78afb9;}DATARMNET49c17a32bc();DATARMNET321a78afb9:
|
||||
DATARMNET4b5170a1ef();DATARMNETb042feb7e2:DATARMNET38bb6f2b7a();
|
||||
DATARMNET27d4697979:return DATARMNETb14e52a504;}static void __exit
|
||||
DATARMNETa343229e33(void){DATARMNET41e8cc085c();DATARMNET8e1548cd2e();
|
||||
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);
|
252
qcom/opensource/datarmnet-ext/perf/rmnet_perf_tcp.c
Normal file
252
qcom/opensource/datarmnet-ext/perf/rmnet_perf_tcp.c
Normal 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);}
|
17
qcom/opensource/datarmnet-ext/perf/rmnet_perf_tcp.h
Normal file
17
qcom/opensource/datarmnet-ext/perf/rmnet_perf_tcp.h
Normal 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
|
||||
|
176
qcom/opensource/datarmnet-ext/perf/rmnet_perf_udp.c
Normal file
176
qcom/opensource/datarmnet-ext/perf/rmnet_perf_udp.c
Normal 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);}
|
15
qcom/opensource/datarmnet-ext/perf/rmnet_perf_udp.h
Normal file
15
qcom/opensource/datarmnet-ext/perf/rmnet_perf_udp.h
Normal 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
|
||||
|
46
qcom/opensource/datarmnet-ext/perf_tether/Android.mk
Normal file
46
qcom/opensource/datarmnet-ext/perf_tether/Android.mk
Normal 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 += sun
|
||||
RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += parrot
|
||||
RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += tuna
|
||||
|
||||
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
|
14
qcom/opensource/datarmnet-ext/perf_tether/BUILD.bazel
Normal file
14
qcom/opensource/datarmnet-ext/perf_tether/BUILD.bazel
Normal file
@@ -0,0 +1,14 @@
|
||||
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", "perf")
|
||||
|
||||
define_perf_tether("sun", "consolidate")
|
||||
define_perf_tether("sun", "perf")
|
||||
|
||||
define_perf_tether("parrot", "consolidate")
|
||||
define_perf_tether("parrot", "perf")
|
||||
|
||||
define_perf_tether("tuna", "consolidate")
|
||||
define_perf_tether("tuna", "perf")
|
5
qcom/opensource/datarmnet-ext/perf_tether/Kbuild
Normal file
5
qcom/opensource/datarmnet-ext/perf_tether/Kbuild
Normal 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
|
10
qcom/opensource/datarmnet-ext/perf_tether/Kconfig
Normal file
10
qcom/opensource/datarmnet-ext/perf_tether/Kconfig
Normal 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
|
16
qcom/opensource/datarmnet-ext/perf_tether/Makefile
Normal file
16
qcom/opensource/datarmnet-ext/perf_tether/Makefile
Normal 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
|
@@ -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"},
|
||||
)
|
@@ -0,0 +1,234 @@
|
||||
// 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 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[]={
|
||||
"\x35\x38\x61\x61\x39\x62\x65\x65","\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"
|
||||
);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,
|
||||
"\x72\x6d\x6e\x65\x74\x5f\x69\x70\x61\x30");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){rmnet_module_hook_register(DATARMNET0762b4f121,
|
||||
ARRAY_SIZE(DATARMNET0762b4f121));}void DATARMNET229327cbd2(void){
|
||||
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);
|
29
qcom/opensource/datarmnet-ext/sch/Android.mk
Normal file
29
qcom/opensource/datarmnet-ext/sch/Android.mk
Normal file
@@ -0,0 +1,29 @@
|
||||
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 += sun
|
||||
RMNET_SCH_DLKM_PLATFORMS_LIST += parrot
|
||||
RMNET_SCH_DLKM_PLATFORMS_LIST += tuna
|
||||
|
||||
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
|
14
qcom/opensource/datarmnet-ext/sch/BUILD.bazel
Normal file
14
qcom/opensource/datarmnet-ext/sch/BUILD.bazel
Normal 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", "perf")
|
||||
|
||||
define_sch("sun", "consolidate")
|
||||
define_sch("sun", "perf")
|
||||
|
||||
define_sch("parrot", "consolidate")
|
||||
define_sch("parrot", "perf")
|
||||
|
||||
define_sch("tuna", "consolidate")
|
||||
define_sch("tuna", "perf")
|
4
qcom/opensource/datarmnet-ext/sch/Kbuild
Normal file
4
qcom/opensource/datarmnet-ext/sch/Kbuild
Normal 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 \
|
9
qcom/opensource/datarmnet-ext/sch/Kconfig
Normal file
9
qcom/opensource/datarmnet-ext/sch/Kconfig
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# RMNET_SCH driver
|
||||
#
|
||||
|
||||
menuconfig RMNET_SCH
|
||||
tristate "Rmnet SCH Qdisc support"
|
||||
default m
|
||||
---help---
|
||||
QDisc module for RmNet driver
|
15
qcom/opensource/datarmnet-ext/sch/Makefile
Normal file
15
qcom/opensource/datarmnet-ext/sch/Makefile
Normal 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
|
29
qcom/opensource/datarmnet-ext/sch/define_sch.bzl
Normal file
29
qcom/opensource/datarmnet-ext/sch/define_sch.bzl
Normal 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"},
|
||||
)
|
151
qcom/opensource/datarmnet-ext/sch/rmnet_sch_main.c
Normal file
151
qcom/opensource/datarmnet-ext/sch/rmnet_sch_main.c
Normal 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);
|
46
qcom/opensource/datarmnet-ext/shs/Android.mk
Normal file
46
qcom/opensource/datarmnet-ext/shs/Android.mk
Normal 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 += sun
|
||||
RMNET_SHS_DLKM_PLATFORMS_LIST += parrot
|
||||
RMNET_SHS_DLKM_PLATFORMS_LIST += tuna
|
||||
|
||||
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
|
13
qcom/opensource/datarmnet-ext/shs/BUILD.bazel
Normal file
13
qcom/opensource/datarmnet-ext/shs/BUILD.bazel
Normal file
@@ -0,0 +1,13 @@
|
||||
load(":define_shs.bzl", "define_shs")
|
||||
|
||||
define_shs("pineapple", "consolidate")
|
||||
define_shs("pineapple", "perf")
|
||||
|
||||
define_shs("sun", "consolidate")
|
||||
define_shs("sun", "perf")
|
||||
|
||||
define_shs("parrot", "consolidate")
|
||||
define_shs("parrot", "perf")
|
||||
|
||||
define_shs("tuna", "consolidate")
|
||||
define_shs("tuna", "perf")
|
13
qcom/opensource/datarmnet-ext/shs/Kbuild
Normal file
13
qcom/opensource/datarmnet-ext/shs/Kbuild
Normal 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
|
10
qcom/opensource/datarmnet-ext/shs/Kconfig
Normal file
10
qcom/opensource/datarmnet-ext/shs/Kconfig
Normal 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
|
15
qcom/opensource/datarmnet-ext/shs/Makefile
Normal file
15
qcom/opensource/datarmnet-ext/shs/Makefile
Normal 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
|
50
qcom/opensource/datarmnet-ext/shs/define_shs.bzl
Normal file
50
qcom/opensource/datarmnet-ext/shs/define_shs.bzl
Normal 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"},
|
||||
)
|
190
qcom/opensource/datarmnet-ext/shs/rmnet_shs.h
Normal file
190
qcom/opensource/datarmnet-ext/shs/rmnet_shs.h
Normal 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 DATARMNETf81c265415 (0xd26+209-0xdf6)
|
||||
#define DATARMNETaa7431cfa3 (0xd26+209-0xdf6)
|
||||
#define DATARMNET5c4b64e404 (0xd1f+216-0xdf5)
|
||||
#define DATARMNETd874bf9c0b (0xd11+230-0xdf3)
|
||||
#define DATARMNET563c6da1f2 (0xd35+210-0xdff)
|
||||
#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];long
|
||||
DATARMNETc252a1f55d;long DATARMNETa2e32cdd3a;atomic_long_t DATARMNET64bb8a8f57;
|
||||
ktime_t DATARMNETdd3caf9200;struct wakeup_source*ws;u16 DATARMNETfeee6933fc;u16
|
||||
DATARMNET85a9848b29;u8 DATARMNET110549da6f;u8 DATARMNET9c869c1ec2;u8
|
||||
DATARMNETd9cfd2812b;u8 DATARMNET34097703c8;u8 DATARMNETfc89d842ae;u8
|
||||
DATARMNET6fe0db3a49;u8 DATARMNETba3f7a11ef;u8 map_mask;u8 map_len;u8
|
||||
DATARMNET5c24e1df05;u8 DATARMNET6625085b71;u8 DATARMNET7d667e828e;u8
|
||||
DATARMNET2f954f58f8;u8 DATARMNETf510b48c29;u8 DATARMNET637025ccc1;u8
|
||||
DATARMNET75af9f3c31;u32 DATARMNETe306607c08;};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,DATARMNETf2dfd00577,DATARMNETf27c21d7c2,
|
||||
DATARMNET93ad3f8240,DATARMNETeccb61ebc3};enum DATARMNETf355367410{
|
||||
DATARMNET557ff68d74,DATARMNET1c55e5fdb1,DATARMNET4ab5a31d0c,DATARMNETde2dd86539}
|
||||
;enum DATARMNET6c7f7f22c7{DATARMNETe35e238437,DATARMNET465c0e5e6d,
|
||||
DATARMNET9ca23da8b4,DATARMNET8ea1466f15,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,
|
||||
DATARMNETfb3150a66e,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,
|
||||
};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)];void
|
||||
DATARMNET203752febd(void);void DATARMNET7520667b38(void);void
|
||||
DATARMNETa871eeb7e7(void);void DATARMNET8f9da46b14(void);int DATARMNET362b15f941
|
||||
(u16 cpu);void DATARMNETeacad8334e(void);void DATARMNETe1f95274f1(void);unsigned
|
||||
int DATARMNET02cdd9b125(void);int DATARMNET310c3eb16e(u8 mask);int
|
||||
DATARMNETe02152c351(struct DATARMNET63d7680df2*DATARMNET63b1a086d5,u8
|
||||
DATARMNETd87669e323,u8 DATARMNET5447204733,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
|
||||
|
238
qcom/opensource/datarmnet-ext/shs/rmnet_shs_common.c
Normal file
238
qcom/opensource/datarmnet-ext/shs/rmnet_shs_common.c
Normal file
@@ -0,0 +1,238 @@
|
||||
/* Copyright (c) 2020-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.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" "\n"
|
||||
,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;}
|
71
qcom/opensource/datarmnet-ext/shs/rmnet_shs_common.h
Normal file
71
qcom/opensource/datarmnet-ext/shs/rmnet_shs_common.h
Normal file
@@ -0,0 +1,71 @@
|
||||
/* Copyright (c) 2020 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 DATARMNET4e9dcb0338
|
||||
#define DATARMNET4e9dcb0338
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#include <trace/hooks/sched.h>
|
||||
#include <linux/tracepoint.h>
|
||||
#include <trace/hooks/vendor_hooks.h>
|
||||
#if (KERNEL_VERSION((0xd03+244-0xdf1), 9, (0xd2d+202-0xdf7)) <= \
|
||||
LINUX_VERSION_CODE)
|
||||
#include <net/rps.h>
|
||||
#endif
|
||||
#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
|
||||
|
108
qcom/opensource/datarmnet-ext/shs/rmnet_shs_config.c
Normal file
108
qcom/opensource/datarmnet-ext/shs/rmnet_shs_config.c
Normal file
@@ -0,0 +1,108 @@
|
||||
/* 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/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\x4c\x6f\x61\x64\x65\x64\x20\x72\x6d\x6e\x65\x74\x20\x53\x48\x53\x20\x6d\x6f\x64\x75\x6c\x65\x20" "\n"
|
||||
,__func__);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" "\n"
|
||||
,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" "\n"
|
||||
,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" "\n"
|
||||
);break;}DATARMNET45d8cdb224(priv->real_dev,dev);DATARMNET3ae0d614d6();
|
||||
DATARMNETe1f95274f1();}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" "\n"
|
||||
);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);
|
27
qcom/opensource/datarmnet-ext/shs/rmnet_shs_config.h
Normal file
27
qcom/opensource/datarmnet-ext/shs/rmnet_shs_config.h
Normal 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
|
||||
|
131
qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.c
Normal file
131
qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.c
Normal file
@@ -0,0 +1,131 @@
|
||||
/* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2023, 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/module.h>
|
||||
#include "rmnet_shs.h"
|
||||
#include "rmnet_shs_freq.h"
|
||||
#include "rmnet_shs_modules.h"
|
||||
#include "rmnet_shs_config.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 DATARMNETecc0627c70.DATARMNETe306607c08
|
||||
#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);}
|
22
qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.h
Normal file
22
qcom/opensource/datarmnet-ext/shs/rmnet_shs_freq.h
Normal 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
|
||||
|
380
qcom/opensource/datarmnet-ext/shs/rmnet_shs_ll.c
Normal file
380
qcom/opensource/datarmnet-ext/shs/rmnet_shs_ll.c
Normal file
@@ -0,0 +1,380 @@
|
||||
/* 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 <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" "\n"
|
||||
,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" "\n"
|
||||
,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" "\n"
|
||||
,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" "\n"
|
||||
,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" "\n"
|
||||
,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" "\n"
|
||||
,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" "\n"
|
||||
,DATARMNET54338da2ff->DATARMNET1819cae4a3);pr_info(
|
||||
"\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x69\x6e\x66\x6f\x2d\x3e\x73\x65\x71\x20\x25\x75" "\n"
|
||||
,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" "\n"
|
||||
,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" "\n"
|
||||
,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" "\n"
|
||||
,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" "\n"
|
||||
,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"
|
||||
);}
|
22
qcom/opensource/datarmnet-ext/shs/rmnet_shs_ll.h
Normal file
22
qcom/opensource/datarmnet-ext/shs/rmnet_shs_ll.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* 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 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
|
||||
|
1000
qcom/opensource/datarmnet-ext/shs/rmnet_shs_main.c
Normal file
1000
qcom/opensource/datarmnet-ext/shs/rmnet_shs_main.c
Normal file
File diff suppressed because it is too large
Load Diff
255
qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.c
Normal file
255
qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.c
Normal file
@@ -0,0 +1,255 @@
|
||||
/* Copyright (c) 2020-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"
|
||||
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=(0xd2d+202-0xdf7);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(
|
||||
DATARMNET32fc6f2889,
|
||||
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x73\x65\x72\x76\x65\x5f\x6d\x61\x73\x6b"
|
||||
);unsigned int DATARMNETf55430ea0a __read_mostly=(0xd2d+202-0xdf7);module_param(
|
||||
DATARMNETf55430ea0a,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
|
||||
DATARMNETf55430ea0a,
|
||||
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x68\x61\x6c\x74\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 __read_mostly=(0xd2d+202-0xdf7);
|
||||
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"
|
||||
);
|
63
qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.h
Normal file
63
qcom/opensource/datarmnet-ext/shs/rmnet_shs_modules.h
Normal file
@@ -0,0 +1,63 @@
|
||||
/* Copyright (c) 2020 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_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 DATARMNETf55430ea0a
|
||||
;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
|
||||
|
1009
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.c
Normal file
1009
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.c
Normal file
File diff suppressed because it is too large
Load Diff
142
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.h
Normal file
142
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq.h
Normal file
@@ -0,0 +1,142 @@
|
||||
/* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DATARMNETa58841a91d
|
||||
#define DATARMNETa58841a91d
|
||||
#include "rmnet_shs_config.h"
|
||||
#include "rmnet_shs.h"
|
||||
#include <linux/ktime.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
|
||||
|
398
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.c
Normal file
398
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.c
Normal file
@@ -0,0 +1,398 @@
|
||||
/* 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>
|
||||
#include <linux/cpumask.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},[DATARMNET310b1858b8]=
|
||||
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNET506d6d2edb)),};
|
||||
#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),DATARMNETcfe22ed4d3
|
||||
(DATARMNET5d672fac06,DATARMNET2b7c02fa2c),};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
|
||||
DATARMNET2b7c02fa2c(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
|
||||
DATARMNET54338da2ff){struct nlattr*na;struct DATARMNET506d6d2edb
|
||||
DATARMNET9c9f014b92;int i;rm_err("\x25\x73\x20\x25\x73",
|
||||
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20",__func__);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[DATARMNET310b1858b8];
|
||||
if(na){if(nla_memcpy(&DATARMNET9c9f014b92,na,sizeof(DATARMNET9c9f014b92))>
|
||||
(0xd2d+202-0xdf7)){DATARMNETecc0627c70.DATARMNET637025ccc1=DATARMNET9c9f014b92.
|
||||
DATARMNET637025ccc1;DATARMNETecc0627c70.DATARMNET2f954f58f8=hweight_long(
|
||||
DATARMNET9c9f014b92.DATARMNET637025ccc1);DATARMNETecc0627c70.DATARMNETf510b48c29
|
||||
=~DATARMNETecc0627c70.DATARMNET637025ccc1;DATARMNETecc0627c70.
|
||||
DATARMNET85a9848b29=DATARMNET9c9f014b92.DATARMNET85a9848b29;DATARMNETecc0627c70.
|
||||
DATARMNETe306607c08=DATARMNET9c9f014b92.DATARMNETe306607c08;if(
|
||||
DATARMNETecc0627c70.DATARMNET85a9848b29&DATARMNET5c4b64e404){DATARMNET12565c8f98
|
||||
=(0xd26+209-0xdf6);}rm_err(
|
||||
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x62\x6f\x6f\x74\x75\x70\x20\x72\x65\x71\x20"
|
||||
"\x66\x65\x61\x74\x75\x72\x65\x5f\x6d\x61\x73\x6b\x20\x3d\x20\x30\x78\x25\x78\x20\x6e\x6f\x6e\x5f\x70\x65\x72\x66\x6d\x61\x78\x6b\x20\x3d\x20\x30\x78\x25\x78\x2c\x20\x70\x65\x72\x66\x5f\x6d\x61\x73\x6b\x20\x30\x78\x25\x78"
|
||||
,DATARMNET9c9f014b92.DATARMNET85a9848b29,DATARMNETecc0627c70.DATARMNET637025ccc1
|
||||
,DATARMNETecc0627c70.DATARMNETf510b48c29);for(i=(0xd2d+202-0xdf7);i<
|
||||
DATARMNETc6782fed88;i++){DATARMNET4793ed48af[i]=DATARMNET9c9f014b92.
|
||||
DATARMNETef524c3133[i];DATARMNET713717107f[i]=DATARMNET9c9f014b92.
|
||||
DATARMNET6beee7b91c[i];rm_err(
|
||||
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x62\x6f\x6f\x74\x75\x70\x20\x25\x69\x20\x72\x65\x71\x20\x25\x6c\x6c\x75\x20\x25\x6c\x6c\x75"
|
||||
,i,DATARMNET4793ed48af[i],DATARMNET713717107f[i]);}DATARMNET5d4ca1da1c(
|
||||
DATARMNET54338da2ff,DATARMNETc9a3fec39c);}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"
|
||||
,DATARMNET310b1858b8);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
|
||||
DATARMNET87c27cd354);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"
|
||||
,DATARMNET310b1858b8);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
|
||||
DATARMNET87c27cd354);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)&DATARMNETf55430ea0a)){
|
||||
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)&DATARMNETf55430ea0a)){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 DATARMNET88ef60041c(uint8_t seq,struct
|
||||
DATARMNET177911299b*DATARMNET60b6e12cfd){struct DATARMNET1564093dbc
|
||||
DATARMNET28ce320ddf;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(&DATARMNET28ce320ddf,(0xd2d+202-0xdf7),sizeof(
|
||||
DATARMNET28ce320ddf));memcpy(&(DATARMNET60b6e12cfd->list[(0xd2d+202-0xdf7)].
|
||||
DATARMNETdf2dbc641f),&DATARMNET28ce320ddf,sizeof(DATARMNET28ce320ddf));
|
||||
DATARMNET60b6e12cfd->list[(0xd2d+202-0xdf7)].msg_type=DATARMNET890e50739c;
|
||||
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);}
|
94
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.h
Normal file
94
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_genl.h
Normal file
@@ -0,0 +1,94 @@
|
||||
/* 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.h"
|
||||
#ifndef DATARMNETf34a2d1928
|
||||
#define DATARMNETf34a2d1928
|
||||
#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 DATARMNET87c27cd354 (0x52f+2440-0xca5)
|
||||
#define DATARMNETc9a3fec39c (0x530+2455-0xcac)
|
||||
#define DATARMNET6e742895e1 (0xdb7+3095-0x162c)
|
||||
#define DATARMNETc30f35c15f (0xdb7+3088-0x1624)
|
||||
#define DATARMNET19092afcc2 (0xec7+1152-0x131d)
|
||||
#define DATARMNETfe6b3a15a1 (0xd35+210-0xdff)
|
||||
extern int DATARMNETc252c204a8;enum{DATARMNET9491b185b7,DATARMNETc574b5cfba,
|
||||
DATARMNET8e3adfc5dd,DATARMNETffb2945689,DATARMNET51b1ee5a68,
|
||||
RMNET_SHS_GENL_CMD_LL_FLOW,DATARMNET93b3e11659,DATARMNET5d672fac06,
|
||||
DATARMNET5b3796e25a,};enum{DATARMNET603b776397,DATARMNETaa0fe5a855,
|
||||
DATARMNET7d289a7bfa,DATARMNET813a742587,DATARMNET50e1cd26c7,DATARMNET6ab4513e45,
|
||||
DATARMNET627787b1dd,DATARMNET310b1858b8,DATARMNET0158bf4d2b,};
|
||||
#define DATARMNETcecb35ee33 (DATARMNET0158bf4d2b - (0xd26+209-0xdf6))
|
||||
struct DATARMNET506d6d2edb{uint32_t DATARMNET85a9848b29;uint8_t
|
||||
DATARMNET637025ccc1;uint32_t DATARMNETef524c3133[DATARMNETfe6b3a15a1];uint32_t
|
||||
DATARMNET6beee7b91c[DATARMNETfe6b3a15a1];uint32_t DATARMNETe306607c08;};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;};struct DATARMNET1564093dbc{uint8_t seq;};enum{
|
||||
DATARMNET68b3f1699c=(0xd2d+202-0xdf7),DATARMNETfce267cbe9=(0xd26+209-0xdf6),
|
||||
DATARMNETf41c724abf=(0xd1f+216-0xdf5),DATARMNET890e50739c=(0xd18+223-0xdf4),};
|
||||
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
|
||||
DATARMNET2b7c02fa2c(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);void DATARMNET88ef60041c(uint8_t
|
||||
seq,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
|
||||
|
676
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.c
Normal file
676
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.c
Normal file
@@ -0,0 +1,676 @@
|
||||
/* Copyright (c) 2019-2020 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_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;}
|
||||
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\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\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\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\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\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\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\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\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;strscpy(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();}
|
87
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.h
Normal file
87
qcom/opensource/datarmnet-ext/shs/rmnet_shs_wq_mem.h
Normal 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
|
||||
|
87
qcom/opensource/datarmnet-ext/src/aps/rmnet_aps.h
Normal file
87
qcom/opensource/datarmnet-ext/src/aps/rmnet_aps.h
Normal file
@@ -0,0 +1,87 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _RMNET_APS_H_
|
||||
#define _RMNET_APS_H_
|
||||
|
||||
#include <linux/skbuff.h>
|
||||
#include <net/genetlink.h>
|
||||
|
||||
#ifdef RMNET_APS_DEBUG
|
||||
#define aps_log(...) pr_err(__VA_ARGS__)
|
||||
#else
|
||||
#define aps_log(...)
|
||||
#endif
|
||||
|
||||
struct rmnet_aps_flow_req {
|
||||
u32 cmd;
|
||||
u32 label;
|
||||
u32 duration;
|
||||
u32 ifindex;
|
||||
u8 aps_prio;
|
||||
u8 use_llc;
|
||||
u8 use_llb;
|
||||
u8 reserved;
|
||||
};
|
||||
|
||||
struct rmnet_aps_flow_resp {
|
||||
u32 cmd;
|
||||
u32 cmd_data;
|
||||
u32 label;
|
||||
};
|
||||
|
||||
#define FILTER_MASK_SADDR 1
|
||||
#define FILTER_MASK_DADDR 2
|
||||
struct rmnet_aps_filter_req {
|
||||
u32 cmd;
|
||||
u32 label;
|
||||
u32 ifindex;
|
||||
s32 ip_type;
|
||||
__be32 saddr[4];
|
||||
__be32 daddr[4];
|
||||
u16 sport;
|
||||
u16 dport;
|
||||
u32 flow_label;
|
||||
u8 tos;
|
||||
u8 tos_mask;
|
||||
u8 l4_proto;
|
||||
u8 filter_masks;
|
||||
u8 reserved[68];
|
||||
};
|
||||
|
||||
struct rmnet_aps_filter_resp {
|
||||
u32 cmd;
|
||||
u32 cmd_data;
|
||||
u32 label;
|
||||
};
|
||||
|
||||
struct rmnet_aps_pdn_config_req {
|
||||
u32 ifindex;
|
||||
u64 apn_mask;
|
||||
u32 expire_ms;
|
||||
u32 reserved[8];
|
||||
};
|
||||
|
||||
struct rmnet_aps_pdn_config_resp {
|
||||
u32 ifindex;
|
||||
u32 reserved[7];
|
||||
};
|
||||
|
||||
struct rmnet_aps_data_report {
|
||||
u8 mux_id;
|
||||
u8 type;
|
||||
u8 sum_all_bearers;
|
||||
u8 len;
|
||||
u32 value[8];
|
||||
};
|
||||
|
||||
int rmnet_aps_genl_flow_hdlr(struct sk_buff *skb_2, struct genl_info *info);
|
||||
int rmnet_aps_genl_pdn_config_hdlr(struct sk_buff *skb_2,
|
||||
struct genl_info *info);
|
||||
int rmnet_aps_genl_filter_hdlr(struct sk_buff *skb_2, struct genl_info *info);
|
||||
int rmnet_aps_genl_data_report_hdlr(struct sk_buff *skb_2,
|
||||
struct genl_info *info);
|
||||
|
||||
#endif /* _RMNET_APS_H_ */
|
63
qcom/opensource/datarmnet-ext/src/aps/rmnet_aps_genl.c
Normal file
63
qcom/opensource/datarmnet-ext/src/aps/rmnet_aps_genl.c
Normal file
@@ -0,0 +1,63 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "rmnet_aps_genl.h"
|
||||
#include "rmnet_aps.h"
|
||||
|
||||
/* Static Functions and Definitions */
|
||||
static struct nla_policy rmnet_aps_genl_attr_policy[RMNET_APS_GENL_ATTR_MAX +
|
||||
1] = {
|
||||
[RMNET_APS_GENL_ATTR_FLOW_REQ] =
|
||||
NLA_POLICY_EXACT_LEN(sizeof(struct rmnet_aps_flow_req)),
|
||||
[RMNET_APS_GENL_ATTR_FLOW_RESP] = NLA_POLICY_EXACT_LEN(
|
||||
sizeof(struct rmnet_aps_flow_resp)),
|
||||
[RMNET_APS_GENL_ATTR_PDN_CONFIG_REQ] = NLA_POLICY_EXACT_LEN(
|
||||
sizeof(struct rmnet_aps_pdn_config_req)),
|
||||
[RMNET_APS_GENL_ATTR_PDN_CONFIG_RESP] = NLA_POLICY_EXACT_LEN(
|
||||
sizeof(struct rmnet_aps_pdn_config_resp)),
|
||||
[RMNET_APS_GENL_ATTR_FILTER_REQ] = NLA_POLICY_EXACT_LEN(
|
||||
sizeof(struct rmnet_aps_filter_req)),
|
||||
[RMNET_APS_GENL_ATTR_FILTER_RESP] = NLA_POLICY_EXACT_LEN(
|
||||
sizeof(struct rmnet_aps_filter_resp)),
|
||||
[RMNET_APS_GENL_ATTR_DATA_REPORT] = NLA_POLICY_EXACT_LEN(
|
||||
sizeof(struct rmnet_aps_data_report)),
|
||||
};
|
||||
|
||||
#define RMNET_APS_GENL_OP(_cmd, _func) \
|
||||
{ \
|
||||
.cmd = _cmd, .doit = _func, .dumpit = NULL, .flags = 0, \
|
||||
}
|
||||
|
||||
static const struct genl_ops rmnet_aps_genl_ops[] = {
|
||||
RMNET_APS_GENL_OP(RMNET_APS_GENL_CMD_FLOW, rmnet_aps_genl_flow_hdlr),
|
||||
RMNET_APS_GENL_OP(RMNET_APS_GENL_CMD_PDN_CONFIG,
|
||||
rmnet_aps_genl_pdn_config_hdlr),
|
||||
RMNET_APS_GENL_OP(RMNET_APS_GENL_CMD_FILTER,
|
||||
rmnet_aps_genl_filter_hdlr),
|
||||
RMNET_APS_GENL_OP(RMNET_APS_GENL_CMD_DATA_REPORT,
|
||||
rmnet_aps_genl_data_report_hdlr),
|
||||
};
|
||||
|
||||
struct genl_family rmnet_aps_genl_family = {
|
||||
.hdrsize = 0,
|
||||
.name = RMNET_APS_GENL_FAMILY_NAME,
|
||||
.version = RMNET_APS_GENL_VERSION,
|
||||
.maxattr = RMNET_APS_GENL_ATTR_MAX,
|
||||
.policy = rmnet_aps_genl_attr_policy,
|
||||
.ops = rmnet_aps_genl_ops,
|
||||
.n_ops = ARRAY_SIZE(rmnet_aps_genl_ops),
|
||||
};
|
||||
|
||||
/* register new generic netlink family */
|
||||
int rmnet_aps_genl_init(void)
|
||||
{
|
||||
return genl_register_family(&rmnet_aps_genl_family);
|
||||
}
|
||||
|
||||
/* Unregister the generic netlink family */
|
||||
void rmnet_aps_genl_deinit(void)
|
||||
{
|
||||
genl_unregister_family(&rmnet_aps_genl_family);
|
||||
}
|
39
qcom/opensource/datarmnet-ext/src/aps/rmnet_aps_genl.h
Normal file
39
qcom/opensource/datarmnet-ext/src/aps/rmnet_aps_genl.h
Normal file
@@ -0,0 +1,39 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _RMNET_APS_GENL_H_
|
||||
#define _RMNET_APS_GENL_H_
|
||||
|
||||
#include <net/genetlink.h>
|
||||
|
||||
/* Generic Netlink Definitions */
|
||||
#define RMNET_APS_GENL_VERSION 1
|
||||
#define RMNET_APS_GENL_FAMILY_NAME "RMNET_APS"
|
||||
|
||||
enum { RMNET_APS_GENL_CMD_UNSPEC,
|
||||
RMNET_APS_GENL_CMD_FLOW,
|
||||
RMNET_APS_GENL_CMD_PDN_CONFIG,
|
||||
RMNET_APS_GENL_CMD_FILTER,
|
||||
RMNET_APS_GENL_CMD_DATA_REPORT,
|
||||
__RMNET_APS_GENL_CMD_MAX,
|
||||
};
|
||||
|
||||
enum { RMNET_APS_GENL_ATTR_UNSPEC,
|
||||
RMNET_APS_GENL_ATTR_FLOW_REQ,
|
||||
RMNET_APS_GENL_ATTR_FLOW_RESP,
|
||||
RMNET_APS_GENL_ATTR_PDN_CONFIG_REQ,
|
||||
RMNET_APS_GENL_ATTR_PDN_CONFIG_RESP,
|
||||
RMNET_APS_GENL_ATTR_FILTER_REQ,
|
||||
RMNET_APS_GENL_ATTR_FILTER_RESP,
|
||||
RMNET_APS_GENL_ATTR_DATA_REPORT,
|
||||
__RMNET_APS_GENL_ATTR_MAX,
|
||||
};
|
||||
#define RMNET_APS_GENL_ATTR_MAX (__RMNET_APS_GENL_ATTR_MAX - 1)
|
||||
|
||||
int rmnet_aps_genl_init(void);
|
||||
|
||||
void rmnet_aps_genl_deinit(void);
|
||||
|
||||
#endif /*_RMNET_APS_GENL_H_*/
|
1659
qcom/opensource/datarmnet-ext/src/aps/rmnet_aps_main.c
Normal file
1659
qcom/opensource/datarmnet-ext/src/aps/rmnet_aps_main.c
Normal file
File diff suppressed because it is too large
Load Diff
36
qcom/opensource/datarmnet-ext/src/mem/rmnet_mem.h
Normal file
36
qcom/opensource/datarmnet-ext/src/mem/rmnet_mem.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#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 1
|
||||
#define RMNET_CORE_ID 2
|
||||
|
||||
#define POOL_NOTIF 3
|
||||
|
||||
#define RMNET_MEM_SUCCESS 0
|
||||
#define RMNET_MEM_FAIL -1
|
||||
#define RMNET_MEM_DOWNGRADE -2
|
||||
#define RMNET_MEM_UPGRADE -3
|
||||
#define NS_IN_MS 1000000
|
||||
|
||||
int rmnet_mem_unregister_notifier(struct notifier_block *nb);
|
||||
int rmnet_mem_register_notifier(struct notifier_block *nb);
|
||||
void rmnet_mem_pb_ind(void);
|
||||
int rmnet_mem_get_pool_size(unsigned order);
|
||||
|
||||
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
|
444
qcom/opensource/datarmnet-ext/src/mem/rmnet_mem_main.c
Normal file
444
qcom/opensource/datarmnet-ext/src/mem/rmnet_mem_main.c
Normal file
@@ -0,0 +1,444 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#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("GPL v2");
|
||||
|
||||
DEFINE_SPINLOCK(rmnet_mem_lock);
|
||||
|
||||
int rmnet_mem_id_gaveup[POOL_LEN];
|
||||
module_param_array(rmnet_mem_id_gaveup, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(rmnet_mem_id_gaveup, "gaveup per id");
|
||||
|
||||
int max_pool_size[POOL_LEN] = { 0, 0, MAX_POOL_O2, MAX_POOL_O3};
|
||||
module_param_array(max_pool_size, int, NULL, 0644);
|
||||
MODULE_PARM_DESC(max_pool_size, "Max Pool size per order");
|
||||
|
||||
int static_pool_size[POOL_LEN];
|
||||
module_param_array(static_pool_size, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(static_pool_size, "Pool size per order");
|
||||
|
||||
int pool_unbound_feature[POOL_LEN] = { 0, 0, 1, 1};
|
||||
module_param_array(pool_unbound_feature, int, NULL, 0644);
|
||||
MODULE_PARM_DESC(pool_unbound_featue, "Pool bound gate");
|
||||
|
||||
int rmnet_mem_order_requests[POOL_LEN];
|
||||
module_param_array(rmnet_mem_order_requests, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(rmnet_mem_order_requests, "Request per order");
|
||||
|
||||
int rmnet_mem_id_req[POOL_LEN];
|
||||
module_param_array(rmnet_mem_id_req, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(rmnet_mem_id_req, "Request per id");
|
||||
|
||||
int rmnet_mem_id_recycled[POOL_LEN];
|
||||
module_param_array(rmnet_mem_id_recycled, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(rmnet_mem_id_recycled, "Recycled per id");
|
||||
|
||||
int rmnet_mem_stats[RMNET_MEM_STAT_MAX];
|
||||
module_param_array(rmnet_mem_stats, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(rmnet_mem_stats, "Rmnet mem stats for modules");
|
||||
|
||||
int rmnet_mem_err[ERR_MAX];
|
||||
module_param_array(rmnet_mem_err, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(rmnet_mem_err, "Error counting");
|
||||
|
||||
unsigned int rmnet_mem_pb_ind_max[POOL_LEN];
|
||||
module_param_array(rmnet_mem_pb_ind_max, uint, NULL, 0644);
|
||||
MODULE_PARM_DESC(rmnet_mem_pb_ind_max, "Pool size vote that is active on PB ind");
|
||||
|
||||
unsigned target_pool_size[POOL_LEN] = { 0, 0, MID_POOL_O2, MID_POOL_O3};
|
||||
module_param_array(target_pool_size, uint, NULL, 0444);
|
||||
MODULE_PARM_DESC(target_pool_size, "Pool size wq will adjust to on run");
|
||||
|
||||
static char *verinfo[] = {"2003bae3"};
|
||||
module_param_array(verinfo, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(verinfo, "Version of the driver");
|
||||
|
||||
struct workqueue_struct *mem_wq;
|
||||
struct delayed_work pool_adjust_work;
|
||||
int pb_ind_pending;
|
||||
struct hrtimer pb_timer;
|
||||
|
||||
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_GPL(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_GPL(rmnet_mem_notifier);
|
||||
|
||||
int rmnet_mem_get_pool_size(unsigned order)
|
||||
{
|
||||
if (order >= POOL_LEN) {
|
||||
rmnet_mem_err[ERR_GET_ORDER_ERR]++;
|
||||
return 0;
|
||||
}
|
||||
/* Return actual size or configured amount if not grown yet.*/
|
||||
return (static_pool_size[order]) ? static_pool_size[order]: target_pool_size[order];
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rmnet_mem_get_pool_size);
|
||||
|
||||
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);
|
||||
|
||||
/* Malloc by client so rem from to pool */
|
||||
struct mem_info* rmnet_mem_add_page(struct page *page, u8 pageorder)
|
||||
{
|
||||
struct mem_info *mem_slot;
|
||||
|
||||
mem_slot = kzalloc(sizeof(*mem_slot), GFP_ATOMIC);
|
||||
if (!mem_slot) {
|
||||
rmnet_mem_err[ERR_MALLOC_FAIL1]++;
|
||||
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;
|
||||
}
|
||||
|
||||
/* Freed by client so added back to pool */
|
||||
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 = 0; 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);
|
||||
}
|
||||
|
||||
/* Freed by client so added back to pool */
|
||||
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 = 0;
|
||||
int j = 0;
|
||||
int adding = 0;
|
||||
|
||||
spin_lock_irqsave(&rmnet_mem_lock, flags);
|
||||
if (order < POOL_LEN) {
|
||||
rmnet_mem_id_req[id]++;
|
||||
rmnet_mem_order_requests[order]++;
|
||||
/* Check high order for rmnet and lower order for IPA if matching order fails */
|
||||
for (j = order; j > 0 && 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) == 1) {
|
||||
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 <= 5);
|
||||
if (page && pageorder) {
|
||||
*pageorder = j;
|
||||
break;
|
||||
}
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
if (static_pool_size[order] < max_pool_size[order] &&
|
||||
pool_unbound_feature[order]) {
|
||||
adding = 1;
|
||||
} else
|
||||
spin_unlock_irqrestore(&rmnet_mem_lock, flags);
|
||||
|
||||
if (!page) {
|
||||
rmnet_mem_id_gaveup[id]++;
|
||||
/* IPA doesn't want retry logic but pool will be empty for lower orders and those
|
||||
* will fail too so that is akin to retry. So just hardcode to not retry for o3 page req
|
||||
*/
|
||||
if (order < 3) {
|
||||
page = __dev_alloc_pages((adding)? GFP_ATOMIC : gfp_mask, order);
|
||||
if (page) {
|
||||
/* If below unbound limit then add page to static pool*/
|
||||
if (adding) {
|
||||
rmnet_mem_add_page(page, order);
|
||||
page_ref_inc(page);
|
||||
}
|
||||
|
||||
if (pageorder) {
|
||||
*pageorder = order;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* Only call get page if we will add page to static pool*/
|
||||
if (adding) {
|
||||
page = __dev_alloc_pages((adding)? GFP_ATOMIC : gfp_mask, order);
|
||||
if (page) {
|
||||
|
||||
rmnet_mem_add_page(page, order);
|
||||
page_ref_inc(page);
|
||||
}
|
||||
|
||||
if (pageorder) {
|
||||
*pageorder = order;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* If we had potential to add, this won't occur after we fill up to limit */
|
||||
if (adding)
|
||||
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 = 0;
|
||||
}
|
||||
|
||||
return page;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rmnet_mem_get_pages_entry);
|
||||
|
||||
/* Freed by client so added back to pool */
|
||||
void rmnet_mem_put_page_entry(struct page *page)
|
||||
{
|
||||
put_page(page);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rmnet_mem_put_page_entry);
|
||||
|
||||
static void mem_update_pool_work(struct work_struct *work)
|
||||
{
|
||||
int i;
|
||||
int new_size;
|
||||
|
||||
local_bh_disable();
|
||||
for (i = 0; i < POOL_LEN; i++) {
|
||||
/* If PB ind is active and max pool has been configured
|
||||
* new pool size is max of the two.
|
||||
*/
|
||||
new_size = (pb_ind_pending && rmnet_mem_pb_ind_max[i]) ?
|
||||
MAX_VOTE(rmnet_mem_pb_ind_max[i],target_pool_size[i]):
|
||||
target_pool_size[i];
|
||||
|
||||
rmnet_mem_adjust(new_size, i);
|
||||
}
|
||||
local_bh_enable();
|
||||
|
||||
}
|
||||
|
||||
/* Freed by client so added back to pool */
|
||||
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) {
|
||||
rmnet_mem_err[ERR_INV_ARGS]++;
|
||||
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 = 0; i < (adjustment); i++) {
|
||||
newpage = __dev_alloc_pages(GFP_ATOMIC, pageorder);
|
||||
if (!newpage) {
|
||||
continue;
|
||||
}
|
||||
rmnet_mem_add_page(newpage, pageorder);
|
||||
}
|
||||
} else {
|
||||
/*TODO what if shrink comes in when we have allocated all pages, can't shrink currently */
|
||||
/* Shrink static pool */
|
||||
list_for_each_safe(entry, next, &(rmnet_mem_pool[pageorder])) {
|
||||
mem_slot = list_entry(entry, struct mem_info, mem_head);
|
||||
/* Freeing temp pool memory Remove from ht and kfree*/
|
||||
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);
|
||||
if (pageorder == POOL_NOTIF) {
|
||||
rmnet_mem_mode_notify(perm_size);
|
||||
}
|
||||
}
|
||||
|
||||
enum hrtimer_restart rmnet_mem_pb_timer_cb(struct hrtimer *t)
|
||||
{
|
||||
unsigned jiffies;
|
||||
|
||||
pb_ind_pending = 0;
|
||||
rmnet_mem_stats[RMNET_MEM_PB_TIMEOUT]++;
|
||||
jiffies = msecs_to_jiffies(RAMP_DOWN_DELAY);
|
||||
/* Ramping down can be done with a delay. Less urgent.*/
|
||||
queue_delayed_work(mem_wq, &pool_adjust_work, jiffies);
|
||||
|
||||
return HRTIMER_NORESTART;
|
||||
}
|
||||
|
||||
void rmnet_mem_pb_ind(void)
|
||||
{
|
||||
/* Only listen to pb idn vote if configured*/
|
||||
if (!rmnet_mem_pb_ind_max[POOL_NOTIF]) {
|
||||
rmnet_mem_stats[RMNET_MEM_PB_IND_CONFIG_FAIL]++;
|
||||
return;
|
||||
}
|
||||
|
||||
pb_ind_pending = 1;
|
||||
/* Trigger update to change pool size */
|
||||
if (hrtimer_active(&pb_timer)) {
|
||||
hrtimer_cancel(&pb_timer);
|
||||
} else {
|
||||
cancel_delayed_work(&pool_adjust_work);
|
||||
queue_delayed_work(mem_wq, &pool_adjust_work, 0);
|
||||
}
|
||||
rmnet_mem_stats[RMNET_MEM_PB_IND]++;
|
||||
hrtimer_start(&pb_timer, ns_to_ktime(PB_IND_DUR* NS_IN_MS),
|
||||
HRTIMER_MODE_REL| HRTIMER_MODE_PINNED);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rmnet_mem_pb_ind);
|
||||
|
||||
int __init rmnet_mem_module_init(void)
|
||||
{
|
||||
int rc, i = 0;
|
||||
|
||||
pr_info("%s(): Starting rmnet mem module\n", __func__);
|
||||
for (i = 0; i < POOL_LEN; i++) {
|
||||
INIT_LIST_HEAD(&(rmnet_mem_pool[i]));
|
||||
}
|
||||
|
||||
mem_wq = alloc_workqueue("mem_wq", WQ_HIGHPRI, 0);
|
||||
if (!mem_wq) {
|
||||
pr_err("%s(): Failed to alloc workqueue \n", __func__);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
INIT_DELAYED_WORK(&pool_adjust_work, mem_update_pool_work);
|
||||
|
||||
rc = rmnet_mem_nl_register();
|
||||
if (rc) {
|
||||
pr_err("%s(): Failed to register generic netlink family\n", __func__);
|
||||
destroy_workqueue(mem_wq);
|
||||
mem_wq = NULL;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
hrtimer_init(&pb_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
|
||||
pb_timer.function = rmnet_mem_pb_timer_cb;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __exit rmnet_mem_module_exit(void)
|
||||
{
|
||||
rmnet_mem_nl_unregister();
|
||||
|
||||
if (mem_wq) {
|
||||
cancel_delayed_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);
|
105
qcom/opensource/datarmnet-ext/src/mem/rmnet_mem_nl.c
Normal file
105
qcom/opensource/datarmnet-ext/src/mem/rmnet_mem_nl.c
Normal file
@@ -0,0 +1,105 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "rmnet_mem_nl.h"
|
||||
#include "rmnet_mem_priv.h"
|
||||
|
||||
#define RMNET_MEM_GENL_FAMILY_NAME "RMNET_MEM"
|
||||
#define RMNET_MEM_GENL_VERSION 1
|
||||
|
||||
enum {
|
||||
RMNET_MEM_CMD_UNSPEC,
|
||||
RMNET_MEM_CMD_UPDATE_MODE,
|
||||
RMNET_MEM_CMD_UPDATE_POOL_SIZE,
|
||||
RMNET_MEM_CMD_UPDATE_PEAK_POOL_SIZE,
|
||||
__RMNET_MEM_GENL_CMD_MAX,
|
||||
};
|
||||
|
||||
#define RMNET_MEM_ATTR_MAX (__RMNET_MEM_ATTR_MAX - 1)
|
||||
|
||||
uint32_t rmnet_shs_genl_seqnum;
|
||||
|
||||
static struct nla_policy rmnet_mem_nl_policy[RMNET_MEM_ATTR_MAX + 1] = {
|
||||
[RMNET_MEM_ATTR_MODE] = NLA_POLICY_EXACT_LEN(sizeof(struct rmnet_memzone_req)),
|
||||
[RMNET_MEM_ATTR_POOL_SIZE] = NLA_POLICY_EXACT_LEN(sizeof(struct rmnet_pool_update_req)),
|
||||
};
|
||||
|
||||
static const struct genl_ops rmnet_mem_nl_ops[] = {
|
||||
{
|
||||
/* Deprecated, not used*/
|
||||
.cmd = RMNET_MEM_CMD_UPDATE_MODE,
|
||||
.doit = rmnet_mem_nl_cmd_update_mode,
|
||||
},
|
||||
{
|
||||
/* Adjust static pool size on the fly, set target_pool_size & start wq */
|
||||
.cmd = RMNET_MEM_CMD_UPDATE_POOL_SIZE,
|
||||
.doit = rmnet_mem_nl_cmd_update_pool_size,
|
||||
},
|
||||
{
|
||||
/* Set PB ind vote for what pool size will be adjusted to
|
||||
* during active PB IND. Max(target_pool_size, pb_ind_max)
|
||||
*/
|
||||
.cmd = RMNET_MEM_CMD_UPDATE_PEAK_POOL_SIZE,
|
||||
.doit = rmnet_mem_nl_cmd_peak_pool_size,
|
||||
},
|
||||
};
|
||||
|
||||
struct genl_family rmnet_aps_nl_family __ro_after_init = {
|
||||
.hdrsize = 0,
|
||||
.name = RMNET_MEM_GENL_FAMILY_NAME,
|
||||
.version = RMNET_MEM_GENL_VERSION,
|
||||
.maxattr = RMNET_MEM_ATTR_MAX,
|
||||
.policy = rmnet_mem_nl_policy,
|
||||
.ops = rmnet_mem_nl_ops,
|
||||
.n_ops = ARRAY_SIZE(rmnet_mem_nl_ops),
|
||||
};
|
||||
|
||||
int rmnet_mem_genl_send_int_to_userspace_no_info(int val, struct genl_info *info)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
void *msg_head;
|
||||
int rc;
|
||||
|
||||
skb = genlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC);
|
||||
if (skb == NULL)
|
||||
goto out;
|
||||
|
||||
msg_head = genlmsg_put(skb, 0, 0, &rmnet_aps_nl_family,
|
||||
0, RMNET_MEM_CMD_UPDATE_MODE);
|
||||
if (msg_head == NULL) {
|
||||
rc = -ENOMEM;
|
||||
rm_err("MEM_GNL: FAILED to msg_head %d\n", rc);
|
||||
kfree(skb);
|
||||
goto out;
|
||||
}
|
||||
rc = nla_put_u32(skb, RMNET_MEM_ATTR_INT, val);
|
||||
if (rc != 0) {
|
||||
rm_err("MEM_GNL: FAILED nla_put %d\n", rc);
|
||||
kfree(skb);
|
||||
goto out;
|
||||
}
|
||||
|
||||
genlmsg_end(skb, msg_head);
|
||||
|
||||
rc = genlmsg_reply(skb, info);
|
||||
if (rc != 0)
|
||||
goto out;
|
||||
|
||||
rm_err("MEM_GNL: Successfully sent int %d\n", val);
|
||||
return 0;
|
||||
|
||||
out:
|
||||
rm_err("MEM_GNL: FAILED to send int %d\n", val);
|
||||
return -1;
|
||||
}
|
||||
int rmnet_mem_nl_register(void)
|
||||
{
|
||||
return genl_register_family(&rmnet_aps_nl_family);
|
||||
}
|
||||
|
||||
void rmnet_mem_nl_unregister(void)
|
||||
{
|
||||
genl_unregister_family(&rmnet_aps_nl_family);
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user