Add 'qcom/opensource/datarmnet-ext/' from commit '9181e2c15db87c9895f99e6ec3d9b70c0cafcc06'

git-subtree-dir: qcom/opensource/datarmnet-ext
git-subtree-mainline: 5aff01d717
git-subtree-split: 9181e2c15db87c9895f99e6ec3d9b70c0cafcc06
This commit is contained in:
Arian
2024-02-24 15:32:42 +01:00
77 changed files with 7556 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_APS_DLKM_PLATFORMS_LIST := taro
RMNET_APS_DLKM_PLATFORMS_LIST += parrot
ifeq ($(call is-board-platform-in-list, $(RMNET_APS_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := rmnet_aps.ko
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
DATARMNET_CORE_PATH := datarmnet/core
RMNET_CORE_PATH := vendor/qcom/opensource/$(DATARMNET_CORE_PATH)
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
RMNET_CORE_INC_DIR := $(abspath $(RMNET_CORE_PATH))
KBUILD_OPTIONS := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS += RMNET_CORE_PATH=$(RMNET_CORE_PATH)
KBUILD_OPTIONS += DATARMNET_CORE_PATH=$(DATARMNET_CORE_PATH)
KBUILD_OPTIONS_GKI := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS_GKI += RMNET_CORE_PATH=$(RMNET_CORE_PATH)/gki
#Must be built after the core rmnet module
LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/rmnet_core.ko
LOCAL_ADDITIONAL_DEPENDENCIES_GKI := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/gki/rmnet_core.ko
include $(DLKM_DIR)/Build_external_kernelmodule.mk
endif #End of check for target
endif #End of Check for qssi target
endif #End of check for AUTO Target

View File

@@ -0,0 +1,6 @@
obj-m += rmnet_aps.o
ccflags-y := -I$(RMNET_CORE_INC_DIR) \
$(call cc-option,-Wno-misleading-indentation)
rmnet_aps-y := \
rmnet_aps_main.o \
rmnet_aps_genl.o

View File

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

View File

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

View File

@@ -0,0 +1,28 @@
/* Copyright (c) 2021. Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DATARMNETa70542332d
#define DATARMNETa70542332d
#include <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;};int DATARMNET37a9efbbcb(
struct sk_buff*DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff);
#endif

View File

@@ -0,0 +1,32 @@
/* Copyright (c) 2021. Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "rmnet_aps_genl.h"
#include "rmnet_aps.h"
static struct nla_policy DATARMNET157d4c7a8a[DATARMNET3b044438b9+
(0xd26+209-0xdf6)]={[DATARMNET98b93f2e86]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNET5d4139d9d7)),[DATARMNET818a0b6438]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNETca79857d4a)),};
#define DATARMNET7dc6237681(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e)\
\
{ \
.cmd = DATARMNET5aeb0ef9bc, .doit = DATARMNETbd9859b58e, .dumpit = NULL, .\
flags = (0xd2d+202-0xdf7), \
}
static const struct genl_ops DATARMNET27a52625e4[]={DATARMNET7dc6237681(
DATARMNET15437be67e,DATARMNET37a9efbbcb),};struct genl_family
DATARMNETcdba30eca9={.hdrsize=(0xd2d+202-0xdf7),.name=DATARMNETa4a6e34e45,.
version=DATARMNET33d1a3e23a,.maxattr=DATARMNET3b044438b9,.policy=
DATARMNET157d4c7a8a,.ops=DATARMNET27a52625e4,.n_ops=ARRAY_SIZE(
DATARMNET27a52625e4),};int DATARMNETcfa8d492f8(void){return genl_register_family
(&DATARMNETcdba30eca9);}void DATARMNETca7606cfd1(void){genl_unregister_family(&
DATARMNETcdba30eca9);}

View File

@@ -0,0 +1,24 @@
/* Copyright (c) 2021. Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DATARMNET975050c527
#define DATARMNET975050c527
#include <net/genetlink.h>
#define DATARMNET33d1a3e23a (0xd26+209-0xdf6)
#define DATARMNETa4a6e34e45 "\x52\x4d\x4e\x45\x54\x5f\x41\x50\x53"
enum{DATARMNETeafde44f15,DATARMNET15437be67e,DATARMNET4ac82df478,};enum{
DATARMNET900754429d,DATARMNET98b93f2e86,DATARMNET818a0b6438,DATARMNET074e71007e,
};
#define DATARMNET3b044438b9 (DATARMNET074e71007e - (0xd26+209-0xdf6))
int DATARMNETcfa8d492f8(void);void DATARMNETca7606cfd1(void);
#endif

View File

@@ -0,0 +1,294 @@
/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/timer.h>
#include <linux/list_sort.h>
#include <linux/workqueue.h>
#include <linux/hashtable.h>
#include <linux/netdevice.h>
#include "rmnet_config.h"
#include "rmnet_aps.h"
#include "rmnet_aps_genl.h"
static char*verinfo[]={"\x37\x34\x31\x35\x39\x32\x31\x63",
"\x39\x66\x36\x36\x38\x31\x62\x34"};module_param_array(verinfo,charp,NULL,
(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
);
#define DATARMNET63ff5c35c2 (0xd26+209-0xdf6)
#define DATARMNETceae994093 (0xd1f+216-0xdf5)
#define DATARMNET3412b803e1 (0xd18+223-0xdf4)
#define DATARMNET1efd633004 (0xd11+230-0xdf3)
#define DATARMNETdc217f1b29 (0xd0a+237-0xdf2)
#define DATARMNETee209ff1f9 (0xd26+209-0xdf6)
#define DATARMNET24e4186a83 (0xd1f+216-0xdf5)
#define DATARMNET94016043b8 (0xd18+223-0xdf4)
#define DATARMNET50dac65bef (0xd2d+202-0xdf7)
#define DATARMNETe1763a8705 (0xbf7+4364-0x1c04)
#define DATARMNET3bc5e7094a (0xd0a+237-0xdf2)
#define DATARMNET810b8d04cd 55932
#define DATARMNET7b5bbaa047 ((0xd18+223-0xdf4))
#define DATARMNETfd026b105a (DATARMNET7b5bbaa047 * HZ)
#define DATARMNET65d0d735fa ((0xdf7+6169-0x241c) * (0xdf7+2629-0x143c) * \
(0xdf7+2629-0x143c) / (0xd35+210-0xdff) * DATARMNET7b5bbaa047)
#define DATARMNETb8ab933cae ((0xc07+4861-0x1e3c) * (0xdf7+2629-0x143c) * \
(0xdf7+2629-0x143c) / (0xd35+210-0xdff) * DATARMNET7b5bbaa047)
static const char*DATARMNETe5ef0e617c="\x31\x2e\x30";static u16
DATARMNET2fe4661b82=DATARMNET810b8d04cd;static struct genl_info
DATARMNET7d98961cbe;static u32 DATARMNETfef55eaf9a;static u8 DATARMNET9628311a6b
[DATARMNET3bc5e7094a]={(0xd2d+202-0xdf7),(0xd03+244-0xdf1),(0xcfc+267-0xe00),
(0xd35+210-0xdff),9};static DEFINE_SPINLOCK(DATARMNET33bd4139f4);static
DEFINE_HASHTABLE(DATARMNET2ee773c365,(0xd0a+237-0xdf2));static LIST_HEAD(
DATARMNET7520901fb5);struct DATARMNET6fd48c33f6{struct hlist_node hash_list;
struct list_head DATARMNETed4d7b4a3c;struct DATARMNET5d4139d9d7
DATARMNET54338da2ff;u32 DATARMNET556cdfb5eb;u32 DATARMNETee01ad514b;unsigned
long expires;u64 DATARMNETa27e524d8a;bool DATARMNET626c626b74;bool
DATARMNET40bb1d945b;};extern void(*rmnet_aps_set_prio)(struct net_device*
DATARMNET413e8dcf7b,struct sk_buff*DATARMNET543491eb0f);extern struct
genl_family DATARMNETcdba30eca9;static void DATARMNET30dd480cad(struct
net_device*DATARMNET413e8dcf7b,struct sk_buff*DATARMNET543491eb0f);static void
DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 DATARMNETf8bbe3b0fb);static void
DATARMNETf844db79d9(struct timer_list*DATARMNET6e4292679f);static DEFINE_TIMER(
DATARMNETd21629e047,DATARMNETf844db79d9);static void DATARMNET5979020f87(struct
work_struct*DATARMNET33110a3ff5);static DECLARE_DELAYED_WORK(DATARMNET3481998252
,DATARMNET5979020f87);static int DATARMNET998f6cbce7(struct notifier_block*
DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*DATARMNETaef95eabe8);
static struct notifier_block DATARMNETc580548769 __read_mostly={.notifier_call=
DATARMNET998f6cbce7,.priority=(0xd1f+216-0xdf5),};static struct
DATARMNET6fd48c33f6*DATARMNET3ed11fdc8d(u32 DATARMNETbb588401ec){struct
DATARMNET6fd48c33f6*DATARMNETaa568481cf;hash_for_each_possible(
DATARMNET2ee773c365,DATARMNETaa568481cf,hash_list,DATARMNETbb588401ec){if(
DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec==
DATARMNETbb588401ec)return DATARMNETaa568481cf;}return NULL;}static void
DATARMNET1e616c2160(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){hash_add(
DATARMNET2ee773c365,&DATARMNETaa568481cf->hash_list,DATARMNETaa568481cf->
DATARMNET54338da2ff.DATARMNETbb588401ec);list_add(&DATARMNETaa568481cf->
DATARMNETed4d7b4a3c,&DATARMNET7520901fb5);DATARMNETfef55eaf9a++;if(
DATARMNETaa568481cf->expires){if(!timer_pending(&DATARMNETd21629e047)||
time_before(DATARMNETaa568481cf->expires,DATARMNETd21629e047.expires))mod_timer(
&DATARMNETd21629e047,DATARMNETaa568481cf->expires);}if(DATARMNETfef55eaf9a==
(0xd26+209-0xdf6))WRITE_ONCE(rmnet_aps_set_prio,DATARMNET30dd480cad);}static
void DATARMNET7fa3dd63cb(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){
hash_del(&DATARMNETaa568481cf->hash_list);list_del(&DATARMNETaa568481cf->
DATARMNETed4d7b4a3c);if(likely(DATARMNETfef55eaf9a))DATARMNETfef55eaf9a--;else
DATARMNET112d724eff("aps: flow count is aleady 0\n");if(!DATARMNETfef55eaf9a){
WRITE_ONCE(rmnet_aps_set_prio,NULL);del_timer(&DATARMNETd21629e047);}kfree(
DATARMNETaa568481cf);}static void DATARMNET9ac8a34003(void){struct
DATARMNET6fd48c33f6*DATARMNETaa568481cf,*DATARMNETaf503e06a5;struct hlist_node*
DATARMNET0386f6f82a;int DATARMNET5c2fd31d7b;del_timer(&DATARMNETd21629e047);
list_for_each_entry_safe(DATARMNETaa568481cf,DATARMNETaf503e06a5,&
DATARMNET7520901fb5,DATARMNETed4d7b4a3c){list_del(&DATARMNETaa568481cf->
DATARMNETed4d7b4a3c);}hash_for_each_safe(DATARMNET2ee773c365,DATARMNET5c2fd31d7b
,DATARMNET0386f6f82a,DATARMNETaa568481cf,hash_list){hash_del(&
DATARMNETaa568481cf->hash_list);kfree(DATARMNETaa568481cf);}DATARMNETfef55eaf9a=
(0xd2d+202-0xdf7);WRITE_ONCE(rmnet_aps_set_prio,NULL);DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x61\x6c\x6c\x20\x66\x6c\x6f\x77\x73\x20\x72\x65\x6d\x6f\x76\x65\x64" "\n"
);}static void DATARMNET250448eb06(int ifindex){struct DATARMNET6fd48c33f6*
DATARMNETaa568481cf;struct hlist_node*DATARMNET0386f6f82a;int
DATARMNET5c2fd31d7b;hash_for_each_safe(DATARMNET2ee773c365,DATARMNET5c2fd31d7b,
DATARMNET0386f6f82a,DATARMNETaa568481cf,hash_list){if(DATARMNETaa568481cf->
DATARMNET54338da2ff.ifindex==ifindex){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x64\x6f\x77\x6e" "\n"
,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec);
DATARMNET446f780f19(DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec
,DATARMNET24e4186a83);DATARMNET7fa3dd63cb(DATARMNETaa568481cf);}}}static void
DATARMNETf844db79d9(struct timer_list*DATARMNET6e4292679f){struct
DATARMNET6fd48c33f6*DATARMNETaa568481cf;struct hlist_node*DATARMNET0386f6f82a;
unsigned long DATARMNET02dfdbc38d=jiffies;unsigned long DATARMNET2cf3deab22;int
DATARMNET5c2fd31d7b;u32 DATARMNETbb588401ec;DATARMNET2cf3deab22=
DATARMNET02dfdbc38d;spin_lock_bh(&DATARMNET33bd4139f4);hash_for_each_safe(
DATARMNET2ee773c365,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,DATARMNETaa568481cf,
hash_list){if(!DATARMNETaa568481cf->expires)continue;if(time_before_eq(
DATARMNETaa568481cf->expires,DATARMNET02dfdbc38d)){DATARMNETbb588401ec=
DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec;DATARMNET112d724eff
(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x65\x78\x70\x69\x72\x65\x64" "\n"
,DATARMNETbb588401ec);DATARMNET7fa3dd63cb(DATARMNETaa568481cf);
DATARMNET446f780f19(DATARMNETbb588401ec,DATARMNETee209ff1f9);}else if(
DATARMNET2cf3deab22==DATARMNET02dfdbc38d||time_before(DATARMNETaa568481cf->
expires,DATARMNET2cf3deab22)){DATARMNET2cf3deab22=DATARMNETaa568481cf->expires;}
}if(DATARMNET2cf3deab22!=DATARMNET02dfdbc38d)mod_timer(&DATARMNETd21629e047,
DATARMNET2cf3deab22);spin_unlock_bh(&DATARMNET33bd4139f4);}static void
DATARMNET3281082da4(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){
DATARMNETaa568481cf->DATARMNET556cdfb5eb=RMNET_APS_MAJOR<<(0xeb7+1158-0x132d);if
(DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNET6c2cba039d>=
DATARMNET3bc5e7094a)DATARMNETaa568481cf->DATARMNET556cdfb5eb|=
DATARMNET9628311a6b[(0xd2d+202-0xdf7)];else DATARMNETaa568481cf->
DATARMNET556cdfb5eb|=DATARMNET9628311a6b[DATARMNETaa568481cf->
DATARMNET54338da2ff.DATARMNET6c2cba039d];if(DATARMNETaa568481cf->
DATARMNET626c626b74)DATARMNETaa568481cf->DATARMNET556cdfb5eb|=RMNET_APS_LLC_MASK
;if(DATARMNETaa568481cf->DATARMNET40bb1d945b)DATARMNETaa568481cf->
DATARMNET556cdfb5eb|=RMNET_APS_LLB_MASK;}static int DATARMNET772c0b87c5(void*
DATARMNETe823dcf978,struct list_head*DATARMNET9cf7d31274,struct list_head*
DATARMNET5444bd3b6f){struct DATARMNET6fd48c33f6*DATARMNET40e125212a;struct
DATARMNET6fd48c33f6*DATARMNETdcaff77beb;DATARMNET40e125212a=list_entry(
DATARMNET9cf7d31274,struct DATARMNET6fd48c33f6,DATARMNETed4d7b4a3c);
DATARMNETdcaff77beb=list_entry(DATARMNET5444bd3b6f,struct DATARMNET6fd48c33f6,
DATARMNETed4d7b4a3c);return DATARMNET40e125212a->DATARMNETa27e524d8a>
DATARMNETdcaff77beb->DATARMNETa27e524d8a;}static void DATARMNET5979020f87(struct
work_struct*DATARMNET33110a3ff5){struct DATARMNET6fd48c33f6*DATARMNETaa568481cf
;u64 DATARMNETf78537d374=(0xd2d+202-0xdf7);u64 DATARMNETd39b09fa66=
(0xd2d+202-0xdf7);u64 DATARMNETedd419d6e2;bool DATARMNETd3eb49eab3=false;
spin_lock_bh(&DATARMNET33bd4139f4);list_sort(NULL,&DATARMNET7520901fb5,
DATARMNET772c0b87c5);list_for_each_entry(DATARMNETaa568481cf,&
DATARMNET7520901fb5,DATARMNETed4d7b4a3c){if(DATARMNETaa568481cf->
DATARMNET54338da2ff.DATARMNET626c626b74){DATARMNETedd419d6e2=DATARMNETf78537d374
+DATARMNETaa568481cf->DATARMNETa27e524d8a;if(DATARMNETedd419d6e2<
DATARMNET65d0d735fa){DATARMNETaa568481cf->DATARMNET626c626b74=true;
DATARMNETaa568481cf->DATARMNET556cdfb5eb|=RMNET_APS_LLC_MASK;DATARMNETf78537d374
=DATARMNETedd419d6e2;}else{DATARMNETaa568481cf->DATARMNET626c626b74=false;
DATARMNETaa568481cf->DATARMNET556cdfb5eb&=~RMNET_APS_LLC_MASK;}
DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x74\x78\x5f\x62\x79\x74\x65\x73\x20\x25\x6c\x6c\x75\x20\x6c\x6c\x63\x20\x25\x64\x20\x6c\x6c\x63\x5f\x62\x79\x74\x65\x73\x20"
"\x25\x6c\x6c\x75" "\n",DATARMNETaa568481cf->DATARMNET54338da2ff.
DATARMNETbb588401ec,DATARMNETaa568481cf->DATARMNETa27e524d8a,DATARMNETaa568481cf
->DATARMNET626c626b74,DATARMNETf78537d374);}if(DATARMNETaa568481cf->
DATARMNET54338da2ff.DATARMNET40bb1d945b){DATARMNETedd419d6e2=DATARMNETd39b09fa66
+DATARMNETaa568481cf->DATARMNETa27e524d8a;if(DATARMNETedd419d6e2<
DATARMNETb8ab933cae){DATARMNETaa568481cf->DATARMNET40bb1d945b=true;
DATARMNETaa568481cf->DATARMNET556cdfb5eb|=RMNET_APS_LLB_MASK;DATARMNETd39b09fa66
=DATARMNETedd419d6e2;}else{DATARMNETaa568481cf->DATARMNET40bb1d945b=false;
DATARMNETaa568481cf->DATARMNET556cdfb5eb&=~RMNET_APS_LLB_MASK;}
DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x74\x78\x5f\x62\x79\x74\x65\x73\x20\x25\x6c\x6c\x75\x20\x6c\x6c\x62\x20\x25\x64\x20\x6c\x6c\x62\x5f\x62\x79\x74\x65\x73\x20"
"\x25\x6c\x6c\x75" "\n",DATARMNETaa568481cf->DATARMNET54338da2ff.
DATARMNETbb588401ec,DATARMNETaa568481cf->DATARMNETa27e524d8a,DATARMNETaa568481cf
->DATARMNET40bb1d945b,DATARMNETd39b09fa66);}if(DATARMNETaa568481cf->
DATARMNETa27e524d8a){DATARMNETd3eb49eab3=true;DATARMNETaa568481cf->
DATARMNETa27e524d8a=(0xd2d+202-0xdf7);}}spin_unlock_bh(&DATARMNET33bd4139f4);if(
DATARMNETd3eb49eab3)schedule_delayed_work(&DATARMNET3481998252,
DATARMNETfd026b105a);}static int DATARMNET82d65f9ca6(struct DATARMNET5d4139d9d7*
DATARMNETddcafd8b91){struct DATARMNET6fd48c33f6*DATARMNETaa568481cf;
DATARMNETaa568481cf=DATARMNET3ed11fdc8d(DATARMNETddcafd8b91->DATARMNETbb588401ec
);if(DATARMNETddcafd8b91->cmd==DATARMNET3412b803e1){if(DATARMNETaa568481cf){
DATARMNET7fa3dd63cb(DATARMNETaa568481cf);DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x72\x65\x6d\x6f\x76\x65\x64\x2c\x20\x63\x6e\x74\x20\x25\x75" "\n"
,DATARMNETddcafd8b91->DATARMNETbb588401ec,DATARMNETfef55eaf9a);}else{
DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x72\x65\x6d\x6f\x76\x65\x64" "\n"
,DATARMNETddcafd8b91->DATARMNETbb588401ec);}return(0xd2d+202-0xdf7);}if(
DATARMNETddcafd8b91->cmd==DATARMNETceae994093&&DATARMNETaa568481cf){
DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x72\x65\x6d\x6f\x76\x65\x20\x62\x65\x66\x6f\x72\x65\x20\x61\x64\x64" "\n"
,DATARMNETddcafd8b91->DATARMNETbb588401ec);DATARMNET7fa3dd63cb(
DATARMNETaa568481cf);DATARMNETaa568481cf=NULL;}if(!DATARMNETaa568481cf){if(
DATARMNETfef55eaf9a>=DATARMNETe1763a8705){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x63\x6f\x75\x6e\x74\x20\x25\x75\x20\x65\x78\x63\x65\x65\x64\x73\x20\x6d\x61\x78" "\n"
,DATARMNETfef55eaf9a);return-EINVAL;}DATARMNETaa568481cf=kzalloc(sizeof(*
DATARMNETaa568481cf),GFP_ATOMIC);if(!DATARMNETaa568481cf){DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x6d\x65\x6d\x6f\x72\x79" "\n");return-ENOMEM;}
memcpy(&DATARMNETaa568481cf->DATARMNET54338da2ff,DATARMNETddcafd8b91,sizeof(
DATARMNETaa568481cf->DATARMNET54338da2ff));DATARMNETaa568481cf->
DATARMNET626c626b74=DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNET626c626b74
;DATARMNETaa568481cf->DATARMNET40bb1d945b=DATARMNETaa568481cf->
DATARMNET54338da2ff.DATARMNET40bb1d945b;DATARMNET3281082da4(DATARMNETaa568481cf)
;if(DATARMNETddcafd8b91->DATARMNET655f822a62){DATARMNETaa568481cf->
DATARMNETee01ad514b=DATARMNETddcafd8b91->DATARMNET655f822a62*HZ;
DATARMNETaa568481cf->expires=jiffies+DATARMNETaa568481cf->DATARMNETee01ad514b;}
DATARMNET1e616c2160(DATARMNETaa568481cf);DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x61\x64\x64\x65\x64\x2c\x20\x63\x6e\x74\x20\x25\x75" "\n"
,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec,
DATARMNETfef55eaf9a);}else{memcpy(&DATARMNETaa568481cf->DATARMNET54338da2ff,
DATARMNETddcafd8b91,sizeof(DATARMNETaa568481cf->DATARMNET54338da2ff));
DATARMNETaa568481cf->DATARMNET626c626b74=DATARMNETaa568481cf->
DATARMNET54338da2ff.DATARMNET626c626b74;DATARMNETaa568481cf->DATARMNET40bb1d945b
=DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNET40bb1d945b;
DATARMNET3281082da4(DATARMNETaa568481cf);DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x75\x70\x64\x61\x74\x65\x64\x2c\x20\x63\x6e\x74\x20\x25\x75" "\n"
,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec,
DATARMNETfef55eaf9a);}return(0xd2d+202-0xdf7);}static int DATARMNET1d51fe00f2(
struct genl_info*DATARMNET54338da2ff,struct DATARMNETca79857d4a*
DATARMNETa13fcf9070,gfp_t flags){struct sk_buff*DATARMNET543491eb0f;void*
DATARMNETd7f97e2e5a;int DATARMNETb14e52a504;if(!DATARMNET54338da2ff||!
DATARMNETa13fcf9070)return-EINVAL;DATARMNET543491eb0f=genlmsg_new(sizeof(*
DATARMNETa13fcf9070),flags);if(!DATARMNET543491eb0f)goto DATARMNETbf4095f79e;
DATARMNETd7f97e2e5a=genlmsg_put(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
DATARMNET54338da2ff->snd_seq+(0xd26+209-0xdf6),&DATARMNETcdba30eca9,
(0xd2d+202-0xdf7),DATARMNET15437be67e);if(!DATARMNETd7f97e2e5a)goto
DATARMNETbf4095f79e;DATARMNETb14e52a504=nla_put(DATARMNET543491eb0f,
DATARMNET818a0b6438,sizeof(*DATARMNETa13fcf9070),DATARMNETa13fcf9070);if(
DATARMNETb14e52a504!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;genlmsg_end(
DATARMNET543491eb0f,DATARMNETd7f97e2e5a);DATARMNETb14e52a504=genlmsg_unicast(
genl_info_net(DATARMNET54338da2ff),DATARMNET543491eb0f,DATARMNET54338da2ff->
snd_portid);if(DATARMNETb14e52a504!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;
return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:DATARMNET112d724eff("\x25\x73",
"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x61\x70\x73\x20\x61\x64\x64\x20\x66\x6c\x6f\x77\x20\x72\x65\x73\x70" "\n"
);return-EFAULT;}static void DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8
DATARMNETf8bbe3b0fb){struct DATARMNETca79857d4a DATARMNETa13fcf9070;if(!
DATARMNET7d98961cbe.snd_portid){DATARMNET112d724eff(
"\x61\x70\x73\x20\x63\x6c\x69\x65\x6e\x74\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64" "\n"
);return;}DATARMNETa13fcf9070.cmd=DATARMNETdc217f1b29;DATARMNETa13fcf9070.
DATARMNETe65883bfce=DATARMNETf8bbe3b0fb;DATARMNETa13fcf9070.DATARMNETbb588401ec=
DATARMNETbb588401ec;if(DATARMNET1d51fe00f2(&DATARMNET7d98961cbe,&
DATARMNETa13fcf9070,GFP_ATOMIC)){DATARMNET112d724eff(
"\x61\x70\x73\x20\x63\x6c\x69\x65\x6e\x74\x20\x73\x65\x6e\x64\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x64\x69\x73\x61\x62\x6c\x65\x20\x63\x6c\x69\x65\x6e\x74" "\n"
);DATARMNET7d98961cbe.snd_portid=(0xd2d+202-0xdf7);}}static void
DATARMNET30dd480cad(struct net_device*DATARMNET413e8dcf7b,struct sk_buff*
DATARMNET543491eb0f){struct DATARMNET6fd48c33f6*DATARMNETaa568481cf;if(
DATARMNET543491eb0f->priority>>(0xeb7+1158-0x132d)!=DATARMNET2fe4661b82)return;
if(!READ_ONCE(DATARMNETfef55eaf9a))return;spin_lock_bh(&DATARMNET33bd4139f4);
DATARMNETaa568481cf=DATARMNET3ed11fdc8d(DATARMNET543491eb0f->priority);if(
DATARMNETaa568481cf){DATARMNET543491eb0f->priority=DATARMNETaa568481cf->
DATARMNET556cdfb5eb;DATARMNETaa568481cf->expires=jiffies+DATARMNETaa568481cf->
DATARMNETee01ad514b;DATARMNETaa568481cf->DATARMNETa27e524d8a+=
DATARMNET543491eb0f->len;}spin_unlock_bh(&DATARMNET33bd4139f4);if(
DATARMNETaa568481cf)schedule_delayed_work(&DATARMNET3481998252,
DATARMNETfd026b105a);}static int DATARMNET998f6cbce7(struct notifier_block*
DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*DATARMNETaef95eabe8){
struct net_device*DATARMNET413e8dcf7b;DATARMNET413e8dcf7b=
netdev_notifier_info_to_dev(DATARMNETaef95eabe8);if(unlikely(!
DATARMNET413e8dcf7b))return NOTIFY_DONE;if(strncmp(DATARMNET413e8dcf7b->name,
"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd27+224-0xdfd)))return NOTIFY_DONE
;switch(DATARMNET9a4761f31c){case NETDEV_DOWN:spin_lock_bh(&DATARMNET33bd4139f4)
;DATARMNET250448eb06(DATARMNET413e8dcf7b->ifindex);spin_unlock_bh(&
DATARMNET33bd4139f4);break;default:break;}return NOTIFY_DONE;}int
DATARMNET37a9efbbcb(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
DATARMNET54338da2ff){struct nlattr*DATARMNET9c5e00ef03;struct
DATARMNET5d4139d9d7 DATARMNETddcafd8b91;struct DATARMNETca79857d4a
DATARMNETa13fcf9070;int DATARMNETb14e52a504;DATARMNET112d724eff(
"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x25\x73" "\n",__func__);if(!
DATARMNET54338da2ff){DATARMNET112d724eff(
"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x65\x72\x72\x6f\x72\x20\x2d\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c" "\n"
);return-EINVAL;}DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[
DATARMNET98b93f2e86];if(DATARMNET9c5e00ef03){if(nla_memcpy(&DATARMNETddcafd8b91,
DATARMNET9c5e00ef03,sizeof(DATARMNETddcafd8b91))<=(0xd2d+202-0xdf7)){
DATARMNET112d724eff(
"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6c\x61\x5f\x6d\x65\x6d\x63\x70\x79\x20\x66\x61\x69\x6c\x65\x64\x20\x25\x64" "\n"
,DATARMNET98b93f2e86);return-EINVAL;}}else{DATARMNET112d724eff(
"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6f\x20\x69\x6e\x66\x6f\x2d\x3e\x61\x74\x74\x72\x73\x20\x25\x64" "\n"
,DATARMNET98b93f2e86);return-EINVAL;}spin_lock_bh(&DATARMNET33bd4139f4);switch(
DATARMNETddcafd8b91.cmd){case DATARMNET63ff5c35c2:DATARMNET7d98961cbe=*
DATARMNET54338da2ff;DATARMNET9ac8a34003();DATARMNET2fe4661b82=(u16)
DATARMNETddcafd8b91.DATARMNETbb588401ec;DATARMNET112d724eff(
"\x61\x70\x73\x20\x63\x6c\x69\x65\x6e\x74\x20\x69\x6e\x69\x74\x20\x63\x6f\x6f\x6b\x69\x65\x20\x30\x78\x25\x78" "\n"
,DATARMNET2fe4661b82);DATARMNETb14e52a504=(0xd2d+202-0xdf7);break;case
DATARMNETceae994093:case DATARMNET3412b803e1:case DATARMNET1efd633004:
DATARMNETb14e52a504=DATARMNET82d65f9ca6(&DATARMNETddcafd8b91);break;default:
DATARMNETb14e52a504=-EINVAL;break;}spin_unlock_bh(&DATARMNET33bd4139f4);
DATARMNETa13fcf9070.cmd=DATARMNETddcafd8b91.cmd;DATARMNETa13fcf9070.
DATARMNETe65883bfce=DATARMNETb14e52a504;DATARMNETa13fcf9070.DATARMNETbb588401ec=
DATARMNETddcafd8b91.DATARMNETbb588401ec;DATARMNETb14e52a504=DATARMNET1d51fe00f2(
DATARMNET54338da2ff,&DATARMNETa13fcf9070,GFP_KERNEL);return DATARMNETb14e52a504;
}static int __init DATARMNET0718a3fa4c(void){int DATARMNETb14e52a504;pr_info(
"\x61\x70\x73\x3a\x20\x69\x6e\x69\x74\x20\x28\x25\x73\x29" "\n",
DATARMNETe5ef0e617c);DATARMNETb14e52a504=DATARMNETcfa8d492f8();if(
DATARMNETb14e52a504){pr_err(
"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x67\x65\x6e\x6c\x20\x66\x61\x6d\x69\x6c\x79" "\n"
);return DATARMNETb14e52a504;}register_netdevice_notifier(&DATARMNETc580548769);
return(0xd2d+202-0xdf7);}static void __exit DATARMNETff67054ba9(void){
DATARMNET446f780f19((0xd2d+202-0xdf7),DATARMNET94016043b8);spin_lock_bh(&
DATARMNET33bd4139f4);DATARMNET9ac8a34003();spin_unlock_bh(&DATARMNET33bd4139f4);
cancel_delayed_work_sync(&DATARMNET3481998252);del_timer_sync(&
DATARMNETd21629e047);unregister_netdevice_notifier(&DATARMNETc580548769);
DATARMNETca7606cfd1();DATARMNET112d724eff(
"\x61\x70\x73\x3a\x20\x65\x78\x69\x74" "\n");}MODULE_LICENSE(
"\x47\x50\x4c\x20\x76\x32");module_init(DATARMNET0718a3fa4c);module_exit(
DATARMNETff67054ba9);

View File

@@ -0,0 +1,25 @@
#Build rmnet modules
DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST := lahaina
DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += taro
DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += parrot
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST := lahaina
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += taro
DATA_APS_DLKM_BOARD_PLATFORMS_LIST += taro
DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += parrot
DATA_APS_DLKM_BOARD_PLATFORMS_LIST += parrot
ifneq ($(TARGET_BOARD_AUTO),true)
ifeq ($(call is-board-platform-in-list,$(DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST)),true)
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_offload.ko
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_perf_tether.ko
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_perf.ko
endif
ifeq ($(call is-board-platform-in-list,$(DATA_SHS_DLKM_BOARD_PLATFORMS_LIST)),true)
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_shs.ko
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_wlan.ko
endif
ifeq ($(call is-board-platform-in-list,$(DATA_APS_DLKM_BOARD_PLATFORMS_LIST)),true)
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_aps.ko
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_sch.ko
endif
endif

View File

@@ -0,0 +1,7 @@
PRODUCT_PACKAGES += rmnet_offload.ko
PRODUCT_PACKAGES += rmnet_shs.ko
PRODUCT_PACKAGES += rmnet_wlan.ko
PRODUCT_PACKAGES += rmnet_perf_tether.ko
PRODUCT_PACKAGES += rmnet_perf.ko
PRODUCT_PACKAGES += rmnet_aps.ko
PRODUCT_PACKAGES += rmnet_sch.ko

View File

@@ -0,0 +1,39 @@
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_OFFLOAD_DLKM_PLATFORMS_LIST := lahaina
RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += taro
RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += parrot
ifeq ($(call is-board-platform-in-list, $(RMNET_OFFLOAD_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_MODULE := rmnet_offload.ko
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
#path from build top to the core directory
DATARMNET_CORE_PATH := datarmnet/core
RMNET_CORE_PATH := vendor/qcom/opensource/$(DATARMNET_CORE_PATH)
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
#absolute path to the build directory. Can't use $(TOP) here since
#that resolves to ., and we pass this to Kbuild, where . is different
RMNET_CORE_INC_DIR := $(abspath $(RMNET_CORE_PATH))
#pass variables down to Kbuild environment
KBUILD_OPTIONS := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS += RMNET_CORE_PATH=$(RMNET_CORE_PATH)
KBUILD_OPTIONS += DATARMNET_CORE_PATH=$(DATARMNET_CORE_PATH)
KBUILD_OPTIONS_GKI := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS_GKI += RMNET_CORE_PATH=$(RMNET_CORE_PATH)/gki
#Must be built after the core rmnet module
LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/rmnet_core.ko
LOCAL_ADDITIONAL_DEPENDENCIES_GKI := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/gki/rmnet_core.ko
include $(DLKM_DIR)/Build_external_kernelmodule.mk
endif #End of check for target
endif #End of Check for qssi target
endif #End of check for AUTO Target

View File

@@ -0,0 +1,8 @@
obj-m += rmnet_offload.o
#Need core headers
ccflags-y := -I$(RMNET_CORE_INC_DIR) \
$(call cc-option,-Wno-misleading-indentation)
rmnet_offload-y := rmnet_offload_state.o rmnet_offload_main.o \
rmnet_offload_engine.o rmnet_offload_tcp.o \
rmnet_offload_udp.o rmnet_offload_stats.o \
rmnet_offload_knob.o

View File

@@ -0,0 +1,10 @@
#
# RMNET_OFFLOAD driver
#
menuconfig RMNET_OFFLOAD
tristate "Rmnet offload support"
default m
depends on RMNET_CORE
---help---
Offload support for the RmNet driver

View File

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

View File

@@ -0,0 +1,189 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/log2.h>
#include <linux/list.h>
#include <linux/hashtable.h>
#include "rmnet_descriptor.h"
#include "rmnet_offload_state.h"
#include "rmnet_offload_engine.h"
#include "rmnet_offload_main.h"
#include "rmnet_offload_tcp.h"
#include "rmnet_offload_udp.h"
#include "rmnet_offload_stats.h"
#include "rmnet_offload_knob.h"
#define DATARMNET644a5e11da \
(const_ilog2(DATARMNET78d9393ac8))
static DEFINE_HASHTABLE(DATARMNET4791268d67,DATARMNET644a5e11da);static u32
DATARMNET1993bae165(u8 DATARMNET06d2413ad2,struct list_head*DATARMNET6f9bfa17e6)
{struct DATARMNETd7c9631acd*DATARMNET7c382e536d;int DATARMNETae0201901a;u32
DATARMNET737bbd41c3=(0xd2d+202-0xdf7);hash_for_each(DATARMNET4791268d67,
DATARMNETae0201901a,DATARMNET7c382e536d,DATARMNETbd5d7d96d8){if(
DATARMNET7c382e536d->DATARMNET1db11fa85e&&DATARMNET7c382e536d->
DATARMNET78fd20ce0e.DATARMNET7fa8b2acbf==DATARMNET06d2413ad2){
DATARMNET737bbd41c3++;DATARMNETa3055c21f2(DATARMNET7c382e536d,
DATARMNET6f9bfa17e6);}}return DATARMNET737bbd41c3;}static bool
DATARMNET2013036d80(u8 DATARMNET06d2413ad2){u64 DATARMNET3924f3f9e3;
DATARMNET3924f3f9e3=DATARMNETf1d1b8287f(DATARMNET6d2ed4b822);if(
DATARMNET3924f3f9e3==DATARMNET2d89680280)return true;if(DATARMNET3924f3f9e3==
DATARMNET03daf91a60&&DATARMNET06d2413ad2==DATARMNETfd5c3d30e5)return true;if(
DATARMNET3924f3f9e3==DATARMNET88a9920663&&DATARMNET06d2413ad2==
DATARMNETa656f324b2)return true;return false;}static bool DATARMNET5a0f9fc3a2(
struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*
DATARMNET5fe4c722a8){if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return false;
if(DATARMNET5fe4c722a8->DATARMNET144d119066.DATARMNET388842c721==
(0xd11+230-0xdf3)){struct DATARMNET4287f07234*DATARMNET699c2c62cd,*
DATARMNET8814564ab9;DATARMNET699c2c62cd=&DATARMNETaa568481cf->
DATARMNET78fd20ce0e;DATARMNET8814564ab9=&DATARMNET5fe4c722a8->
DATARMNET144d119066;if(DATARMNET699c2c62cd->DATARMNET19b03754c4^
DATARMNET8814564ab9->DATARMNET19b03754c4||DATARMNET699c2c62cd->
DATARMNET57bf608183^DATARMNET8814564ab9->DATARMNET57bf608183||
DATARMNET699c2c62cd->DATARMNETcf915688f5^DATARMNET8814564ab9->
DATARMNETcf915688f5||DATARMNET699c2c62cd->DATARMNET4ca5ac9de1^
DATARMNET8814564ab9->DATARMNET4ca5ac9de1)return true;}else if(
DATARMNET5fe4c722a8->DATARMNET144d119066.DATARMNET388842c721==(0xd03+244-0xdf1))
{__be32 DATARMNET25ffacbec5,DATARMNETb351dd927f;__be32 DATARMNET9422f16113;
DATARMNET25ffacbec5=DATARMNETaa568481cf->DATARMNET78fd20ce0e.DATARMNETabd58f7f89
;DATARMNETb351dd927f=DATARMNET5fe4c722a8->DATARMNET144d119066.
DATARMNETabd58f7f89;;DATARMNET9422f16113=DATARMNET25ffacbec5^DATARMNETb351dd927f
;if(DATARMNET9422f16113&htonl(267386880))return true;}return false;}static bool
DATARMNET6895620058(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct
DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){struct DATARMNET4287f07234*
DATARMNET699c2c62cd,*DATARMNET8814564ab9;DATARMNET699c2c62cd=&
DATARMNETaa568481cf->DATARMNET78fd20ce0e;DATARMNET8814564ab9=&
DATARMNET5fe4c722a8->DATARMNET144d119066;if(!DATARMNETaa568481cf->
DATARMNET1db11fa85e)return DATARMNETaa568481cf->DATARMNET381f1cadc4==
DATARMNET5fe4c722a8->DATARMNET645e8912b8;if(DATARMNET699c2c62cd->
DATARMNET7fa8b2acbf!=DATARMNET8814564ab9->DATARMNET7fa8b2acbf)return false;if(
DATARMNET699c2c62cd->DATARMNETa60d2ae3f6^DATARMNET8814564ab9->
DATARMNETa60d2ae3f6||DATARMNET699c2c62cd->DATARMNET5e7452ec23^
DATARMNET8814564ab9->DATARMNET5e7452ec23)return false;if(DATARMNET8814564ab9->
DATARMNET388842c721==(0xd11+230-0xdf3)){if(DATARMNET699c2c62cd->
DATARMNET1a2be7b6c2^DATARMNET8814564ab9->DATARMNET1a2be7b6c2||
DATARMNET699c2c62cd->DATARMNET0a28fa80f4^DATARMNET8814564ab9->
DATARMNET0a28fa80f4)return false;}else if(DATARMNET8814564ab9->
DATARMNET388842c721==(0xd03+244-0xdf1)){if(memcmp(DATARMNET699c2c62cd->
DATARMNET949c2754de,DATARMNET8814564ab9->DATARMNET949c2754de,sizeof(
DATARMNET8814564ab9->DATARMNET949c2754de))||memcmp(DATARMNET699c2c62cd->
DATARMNET45ec858bc5,DATARMNET8814564ab9->DATARMNET45ec858bc5,sizeof(
DATARMNET8814564ab9->DATARMNET45ec858bc5)))return false;}else{return false;}
return true;}static struct DATARMNETd7c9631acd*DATARMNETd41def0046(void){struct
DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();struct
DATARMNET907d58c807*DATARMNETa6f73cbe10;struct DATARMNETd7c9631acd*
DATARMNET6745427f98;LIST_HEAD(DATARMNET6f9bfa17e6);DATARMNETa6f73cbe10=&
DATARMNETe05748b000->DATARMNETebb45c8d86;if(DATARMNETa6f73cbe10->
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);}void
DATARMNETd4230b6bfe(void){rcu_assign_pointer(rmnet_perf_chain_end,
DATARMNETbe30d096c6);}void DATARMNET560e127137(void){rcu_assign_pointer(
rmnet_perf_chain_end,NULL);}int DATARMNET241493ab9a(u64 DATARMNET0470698d6c,u64
DATARMNETfeff65e096){LIST_HEAD(DATARMNET6f9bfa17e6);u32 DATARMNET737bbd41c3=
(0xd2d+202-0xdf7);if(DATARMNET0470698d6c==DATARMNET5fe3af8828||
DATARMNETfeff65e096==DATARMNET2d89680280)return(0xd2d+202-0xdf7);switch(
DATARMNETfeff65e096){case DATARMNET03daf91a60:DATARMNET737bbd41c3=
DATARMNET1993bae165(DATARMNETa656f324b2,&DATARMNET6f9bfa17e6);break;case
DATARMNET88a9920663:DATARMNET737bbd41c3=DATARMNET1993bae165(DATARMNETfd5c3d30e5,
&DATARMNET6f9bfa17e6);break;case DATARMNET5fe3af8828:DATARMNET737bbd41c3=
DATARMNETae70636c90(&DATARMNET6f9bfa17e6);break;}DATARMNETbad3b5165e(
DATARMNETddf572458d,DATARMNET737bbd41c3);DATARMNETc70e73c8d4(&
DATARMNET6f9bfa17e6);return(0xd2d+202-0xdf7);}void DATARMNETa3055c21f2(struct
DATARMNETd7c9631acd*DATARMNETaa568481cf,struct list_head*DATARMNET6f9bfa17e6){
struct DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();struct
rmnet_frag_descriptor*DATARMNETd74aeaa49a,*DATARMNETa1625e27e2,*
DATARMNET0386f6f82a;struct DATARMNET4287f07234*DATARMNET699c2c62cd=&
DATARMNETaa568481cf->DATARMNET78fd20ce0e;u32 DATARMNET567bdc7221=
DATARMNET699c2c62cd->DATARMNET4ca5ac9de1+DATARMNET699c2c62cd->
DATARMNET0aeee57ceb;if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return;
DATARMNETd74aeaa49a=list_first_entry(&DATARMNETaa568481cf->DATARMNETb76b79d0d5,
struct rmnet_frag_descriptor,list);if(!DATARMNETd74aeaa49a->gso_segs)
DATARMNETd74aeaa49a->gso_segs=(0xd26+209-0xdf6);DATARMNETd74aeaa49a->gso_size=
DATARMNETaa568481cf->DATARMNET1978d5d8de;DATARMNETa1625e27e2=DATARMNETd74aeaa49a
;list_for_each_entry_safe_continue(DATARMNETa1625e27e2,DATARMNET0386f6f82a,&
DATARMNETaa568481cf->DATARMNETb76b79d0d5,list){u32 DATARMNET904423d5e4=
DATARMNETa1625e27e2->len-DATARMNET567bdc7221;if(!
rmnet_frag_descriptor_add_frags_from(DATARMNETd74aeaa49a,DATARMNETa1625e27e2,
DATARMNET567bdc7221,DATARMNET904423d5e4)){DATARMNETd74aeaa49a->gso_segs+=(
DATARMNETa1625e27e2->gso_segs)?:(0xd26+209-0xdf6);DATARMNETd74aeaa49a->
coal_bytes+=DATARMNETa1625e27e2->coal_bytes;DATARMNETd74aeaa49a->coal_bufsize+=
DATARMNETa1625e27e2->coal_bufsize;}rmnet_recycle_frag_descriptor(
DATARMNETa1625e27e2,DATARMNETe05748b000->DATARMNET403589239f);}
DATARMNETd74aeaa49a->hash=DATARMNETaa568481cf->DATARMNET381f1cadc4;list_del_init
(&DATARMNETd74aeaa49a->list);list_add_tail(&DATARMNETd74aeaa49a->list,
DATARMNET6f9bfa17e6);DATARMNETaa568481cf->DATARMNET1db11fa85e=(0xd2d+202-0xdf7);
DATARMNETaa568481cf->DATARMNETcf28ae376b=(0xd2d+202-0xdf7);}void
DATARMNETc38c135c9f(u32 DATARMNET3f8cc6fc24,struct list_head*DATARMNET6f9bfa17e6
){struct DATARMNETd7c9631acd*DATARMNETaa568481cf;hash_for_each_possible(
DATARMNET4791268d67,DATARMNETaa568481cf,DATARMNETbd5d7d96d8,DATARMNET3f8cc6fc24)
{if(DATARMNETaa568481cf->DATARMNET381f1cadc4==DATARMNET3f8cc6fc24&&
DATARMNETaa568481cf->DATARMNET1db11fa85e)DATARMNETa3055c21f2(DATARMNETaa568481cf
,DATARMNET6f9bfa17e6);}}u32 DATARMNETae70636c90(struct list_head*
DATARMNET6f9bfa17e6){struct DATARMNETd7c9631acd*DATARMNETaa568481cf;int
DATARMNETae0201901a;u32 DATARMNET737bbd41c3=(0xd2d+202-0xdf7);hash_for_each(
DATARMNET4791268d67,DATARMNETae0201901a,DATARMNETaa568481cf,DATARMNETbd5d7d96d8)
{if(DATARMNETaa568481cf->DATARMNET1db11fa85e){DATARMNET737bbd41c3++;
DATARMNETa3055c21f2(DATARMNETaa568481cf,DATARMNET6f9bfa17e6);}}return
DATARMNET737bbd41c3;}void DATARMNET33aa5df9ef(struct DATARMNETd7c9631acd*
DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){if(
DATARMNET5fe4c722a8->DATARMNETf1b6b0a6cc){memcpy(&DATARMNETaa568481cf->
DATARMNET78fd20ce0e,&DATARMNET5fe4c722a8->DATARMNET144d119066,sizeof(
DATARMNETaa568481cf->DATARMNET78fd20ce0e));DATARMNETaa568481cf->
DATARMNET381f1cadc4=DATARMNET5fe4c722a8->DATARMNET645e8912b8;DATARMNETaa568481cf
->DATARMNET1978d5d8de=(DATARMNET5fe4c722a8->DATARMNET719f68fb88->gso_size)?:
DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;}if(DATARMNET5fe4c722a8->
DATARMNET144d119066.DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5)DATARMNETaa568481cf
->DATARMNET78fd20ce0e.DATARMNETbc28a5970f+=DATARMNET5fe4c722a8->
DATARMNET1ef22e4c76;list_add_tail(&DATARMNET5fe4c722a8->DATARMNET719f68fb88->
list,&DATARMNETaa568481cf->DATARMNETb76b79d0d5);DATARMNETaa568481cf->
DATARMNET1db11fa85e++;DATARMNETaa568481cf->DATARMNETcf28ae376b+=
DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;}bool DATARMNETfbf5798e15(struct
DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,struct list_head*DATARMNET6f9bfa17e6){
struct DATARMNETd7c9631acd*DATARMNETaa568481cf;bool DATARMNET885970f252=false;u8
DATARMNET9695aa5b1d=DATARMNET5fe4c722a8->DATARMNET144d119066.
DATARMNET7fa8b2acbf;if(!DATARMNET2013036d80(DATARMNET9695aa5b1d)){
DATARMNETa00cda79d0(DATARMNET6a894ab63d);return false;}hash_for_each_possible(
DATARMNET4791268d67,DATARMNETaa568481cf,DATARMNETbd5d7d96d8,DATARMNET5fe4c722a8
->DATARMNET645e8912b8){bool DATARMNET2dd83daa1c;if(!DATARMNET6895620058(
DATARMNETaa568481cf,DATARMNET5fe4c722a8))continue;DATARMNETc6f994577c:
DATARMNET2dd83daa1c=DATARMNET5a0f9fc3a2(DATARMNETaa568481cf,DATARMNET5fe4c722a8)
;DATARMNET5fe4c722a8->DATARMNETf1b6b0a6cc=true;DATARMNET885970f252=true;switch(
DATARMNET9695aa5b1d){case DATARMNETfd5c3d30e5:return DATARMNET4c7cdc25b7(
DATARMNETaa568481cf,DATARMNET5fe4c722a8,DATARMNET2dd83daa1c,DATARMNET6f9bfa17e6)
;case DATARMNETa656f324b2:return DATARMNET8dc47eb7af(DATARMNETaa568481cf,
DATARMNET5fe4c722a8,DATARMNET2dd83daa1c,DATARMNET6f9bfa17e6);default:return
false;}}if(!DATARMNET885970f252){DATARMNETaa568481cf=DATARMNETd41def0046();
DATARMNETaa568481cf->DATARMNET381f1cadc4=DATARMNET5fe4c722a8->
DATARMNET645e8912b8;hash_add(DATARMNET4791268d67,&DATARMNETaa568481cf->
DATARMNETbd5d7d96d8,DATARMNETaa568481cf->DATARMNET381f1cadc4);goto
DATARMNETc6f994577c;}return false;}void DATARMNETb98b78b8e3(void){struct
DATARMNETd7c9631acd*DATARMNETaa568481cf;struct hlist_node*DATARMNET0386f6f82a;
int DATARMNETae0201901a;hash_for_each_safe(DATARMNET4791268d67,
DATARMNETae0201901a,DATARMNET0386f6f82a,DATARMNETaa568481cf,DATARMNETbd5d7d96d8)
hash_del(&DATARMNETaa568481cf->DATARMNETbd5d7d96d8);}int DATARMNETdbcaf01255(
void){struct DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();u8
DATARMNETefc9df3df2;for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);
DATARMNETefc9df3df2<DATARMNET78d9393ac8;DATARMNETefc9df3df2++){struct
DATARMNETd7c9631acd*DATARMNETaa568481cf;DATARMNETaa568481cf=&DATARMNETe05748b000
->DATARMNETebb45c8d86.DATARMNET2846a01cce[DATARMNETefc9df3df2];INIT_LIST_HEAD(&
DATARMNETaa568481cf->DATARMNETb76b79d0d5);INIT_HLIST_NODE(&DATARMNETaa568481cf->
DATARMNETbd5d7d96d8);}return DATARMNET0529bb9c4e;}

View File

@@ -0,0 +1,37 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DATARMNETbf894466c7
#define DATARMNETbf894466c7
#include <linux/types.h>
#include "rmnet_offload_main.h"
#define DATARMNET78d9393ac8 (0xef7+1112-0x131d)
enum{DATARMNET7af645849a,DATARMNETb0bd5db24d,DATARMNET0413b43080,};enum{
DATARMNETa2ddeec85f,DATARMNET2d89680280=DATARMNETa2ddeec85f,DATARMNET03daf91a60,
DATARMNET88a9920663,DATARMNET5fe3af8828,DATARMNETaccb69cf16=DATARMNET5fe3af8828,
};struct DATARMNETd7c9631acd{struct hlist_node DATARMNETbd5d7d96d8;struct
list_head DATARMNETb76b79d0d5;struct DATARMNET4287f07234 DATARMNET78fd20ce0e;u32
DATARMNET381f1cadc4;u16 DATARMNETcf28ae376b;u32 DATARMNETd3a1a2b9b5;u16
DATARMNET1978d5d8de;u8 DATARMNET1db11fa85e;};struct DATARMNET907d58c807{struct
DATARMNETd7c9631acd DATARMNET2846a01cce[DATARMNET78d9393ac8];u8
DATARMNET8dfc11cccd;u8 DATARMNET57d435b225;};void DATARMNETd4230b6bfe(void);void
DATARMNET560e127137(void);int DATARMNET241493ab9a(u64 DATARMNET0470698d6c,u64
DATARMNETfeff65e096);void DATARMNETa3055c21f2(struct DATARMNETd7c9631acd*
DATARMNETaa568481cf,struct list_head*DATARMNET6f9bfa17e6);void
DATARMNETc38c135c9f(u32 DATARMNET3f8cc6fc24,struct list_head*DATARMNET6f9bfa17e6
);u32 DATARMNETae70636c90(struct list_head*DATARMNET6f9bfa17e6);void
DATARMNET33aa5df9ef(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct
DATARMNETd812bcdbb5*DATARMNET5fe4c722a8);bool DATARMNETfbf5798e15(struct
DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,struct list_head*DATARMNET6f9bfa17e6);
void DATARMNETb98b78b8e3(void);int DATARMNETdbcaf01255(void);
#endif

View File

@@ -0,0 +1,75 @@
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/moduleparam.h>
#include "rmnet_offload_knob.h"
#include "rmnet_offload_main.h"
#include "rmnet_offload_engine.h"
#define DATARMNET7996ea045b(DATARMNET4c4a5ce272) \
static int __ ## DATARMNET4c4a5ce272(const char *DATARMNETcc6099cb14, const \
struct kernel_param *DATARMNETb3ce0fdc63) \
{ \
return DATARMNETf467eaf6fc(DATARMNETcc6099cb14, DATARMNETb3ce0fdc63, \
DATARMNET4c4a5ce272); \
}
#define DATARMNETce9a74c748(DATARMNET4c4a5ce272, DATARMNET91574ba67a, \
DATARMNET8f535916a4, DATARMNETae9bf9b111, DATARMNETbdf6f9d425) \
(struct DATARMNET5374f6eafa) { \
.DATARMNETd67569df12 = DATARMNET91574ba67a, \
.DATARMNET949fb858da = DATARMNET8f535916a4, \
.DATARMNET6c81c0097b = DATARMNETae9bf9b111, \
.DATARMNET8a7dce7d36 = DATARMNETbdf6f9d425, \
.DATARMNET9cee06cbe4 = { \
.set = __ ## DATARMNET4c4a5ce272, \
.get = param_get_ullong, \
}, \
}
#define DATARMNET584f34118e(DATARMNETe1196c6554, DATARMNET4c4a5ce272) \
module_param_cb(DATARMNETe1196c6554, &DATARMNET07ae1e39fb[DATARMNET4c4a5ce272].\
DATARMNET9cee06cbe4, \
&DATARMNET07ae1e39fb[DATARMNET4c4a5ce272].DATARMNETd67569df12, \
(0xdb7+6665-0x261c))
struct DATARMNET5374f6eafa{u64 DATARMNETd67569df12;u64 DATARMNET949fb858da;u64
DATARMNET6c81c0097b;int(*DATARMNET8a7dce7d36)(u64 DATARMNET7e07157b72,u64
DATARMNETcd597b0a1b);struct kernel_param_ops DATARMNET9cee06cbe4;};static int
DATARMNETf467eaf6fc(const char*DATARMNETcc6099cb14,const struct kernel_param*
DATARMNETb3ce0fdc63,u32 DATARMNET4c4a5ce272);DATARMNET7996ea045b(
DATARMNETdf66588a73);DATARMNET7996ea045b(DATARMNET9c85bb95a3);
DATARMNET7996ea045b(DATARMNET6d2ed4b822);static struct DATARMNET5374f6eafa
DATARMNET07ae1e39fb[DATARMNET94aa767bca]={DATARMNETce9a74c748(
DATARMNETdf66588a73,65000,(0xd2d+202-0xdf7),65000,NULL),DATARMNETce9a74c748(
DATARMNET9c85bb95a3,65000,(0xd2d+202-0xdf7),65000,NULL),DATARMNETce9a74c748(
DATARMNET6d2ed4b822,DATARMNET2d89680280,DATARMNETa2ddeec85f,DATARMNETaccb69cf16,
DATARMNET241493ab9a),};static int DATARMNETf467eaf6fc(const char*
DATARMNETcc6099cb14,const struct kernel_param*DATARMNETb3ce0fdc63,u32
DATARMNET4c4a5ce272){struct DATARMNET5374f6eafa*DATARMNET0751f2024d;unsigned
long long DATARMNETcd597b0a1b;u64 DATARMNET7e07157b72;int DATARMNETb14e52a504;if
(DATARMNET4c4a5ce272>=DATARMNET94aa767bca)return-EINVAL;DATARMNETb14e52a504=
kstrtoull(DATARMNETcc6099cb14,(0xd2d+202-0xdf7),&DATARMNETcd597b0a1b);if(
DATARMNETb14e52a504<(0xd2d+202-0xdf7))return DATARMNETb14e52a504;
DATARMNET0751f2024d=&DATARMNET07ae1e39fb[DATARMNET4c4a5ce272];if((u64)
DATARMNETcd597b0a1b<DATARMNET0751f2024d->DATARMNET949fb858da||(u64)
DATARMNETcd597b0a1b>DATARMNET0751f2024d->DATARMNET6c81c0097b)return-ERANGE;
DATARMNET664568fcd0();DATARMNET7e07157b72=*(u64*)DATARMNETb3ce0fdc63->arg;if((
u64)DATARMNETcd597b0a1b==DATARMNET7e07157b72){DATARMNET6a76048590();return
(0xd2d+202-0xdf7);}if(DATARMNET0751f2024d->DATARMNET8a7dce7d36){
DATARMNETb14e52a504=DATARMNET0751f2024d->DATARMNET8a7dce7d36(DATARMNET7e07157b72
,(u64)DATARMNETcd597b0a1b);if(DATARMNETb14e52a504<(0xd2d+202-0xdf7)){
DATARMNET6a76048590();return DATARMNETb14e52a504;}}*(u64*)DATARMNETb3ce0fdc63->
arg=(u64)DATARMNETcd597b0a1b;DATARMNET6a76048590();return(0xd2d+202-0xdf7);}
DATARMNET584f34118e(rmnet_offload_knob0,DATARMNETdf66588a73);DATARMNET584f34118e
(rmnet_offload_knob1,DATARMNET9c85bb95a3);DATARMNET584f34118e(
rmnet_offload_knob2,DATARMNET6d2ed4b822);u64 DATARMNETf1d1b8287f(u32
DATARMNET4c4a5ce272){struct DATARMNET5374f6eafa*DATARMNET0751f2024d;if(
DATARMNET4c4a5ce272>=DATARMNET94aa767bca)return(u64)~(0xd2d+202-0xdf7);
DATARMNET0751f2024d=&DATARMNET07ae1e39fb[DATARMNET4c4a5ce272];return
DATARMNET0751f2024d->DATARMNETd67569df12;}

View File

@@ -0,0 +1,18 @@
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DATARMNET5833be0738
#define DATARMNET5833be0738
#include <linux/types.h>
enum{DATARMNETdf66588a73,DATARMNET9c85bb95a3,DATARMNET6d2ed4b822,
DATARMNET94aa767bca,};u64 DATARMNETf1d1b8287f(u32 DATARMNET4c4a5ce272);
#endif

View File

@@ -0,0 +1,260 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <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_offload_main.h"
#include "rmnet_offload_state.h"
#include "rmnet_offload_engine.h"
#include "rmnet_offload_stats.h"
static char*verinfo[]={"\x63\x38\x61\x63\x61\x66\x38\x35",
"\x32\x61\x34\x34\x66\x36\x62\x65","\x37\x34\x31\x35\x39\x32\x31\x63",
"\x34\x31\x32\x39\x36\x62\x30\x39"};module_param_array(verinfo,charp,NULL,
(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
);static DEFINE_SPINLOCK(DATARMNET0b5e447f18);static u32 DATARMNETcb7325e02d(
struct DATARMNETd812bcdbb5*DATARMNET458b70e7e5){struct DATARMNET4287f07234*
DATARMNET8814564ab9=&DATARMNET458b70e7e5->DATARMNET144d119066;__be32
DATARMNETdfd47b00ff[(0xd20+231-0xdfc)];u32 DATARMNET5ebf661879;__be16
DATARMNET08e913477e=(0xd2d+202-0xdf7),DATARMNETda7f7fa492=(0xd2d+202-0xdf7);if(
DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNETa656f324b2||
DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){
DATARMNET08e913477e=DATARMNET8814564ab9->DATARMNETa60d2ae3f6;DATARMNETda7f7fa492
=DATARMNET8814564ab9->DATARMNET5e7452ec23;}if(DATARMNET8814564ab9->
DATARMNET388842c721==(0xd11+230-0xdf3)){DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)]=
DATARMNET8814564ab9->DATARMNET0a28fa80f4;DATARMNETdfd47b00ff[(0xd26+209-0xdf6)]=
DATARMNET8814564ab9->DATARMNET1a2be7b6c2;DATARMNETdfd47b00ff[(0xd1f+216-0xdf5)]=
DATARMNET8814564ab9->DATARMNET7fa8b2acbf;DATARMNETdfd47b00ff[(0xd18+223-0xdf4)]=
DATARMNETda7f7fa492;DATARMNETdfd47b00ff[(0xd11+230-0xdf3)]=DATARMNET08e913477e;
DATARMNET5ebf661879=(0xd0a+237-0xdf2);}else{memcpy(&DATARMNETdfd47b00ff[
(0xd2d+202-0xdf7)],&DATARMNET8814564ab9->DATARMNET45ec858bc5[(0xd2d+202-0xdf7)],
sizeof(DATARMNET8814564ab9->DATARMNET45ec858bc5));memcpy(&DATARMNETdfd47b00ff[
(0xd0a+237-0xdf2)],&DATARMNET8814564ab9->DATARMNET949c2754de[(0xd2d+202-0xdf7)],
sizeof(DATARMNET8814564ab9->DATARMNET45ec858bc5));DATARMNETdfd47b00ff[
(0xd35+210-0xdff)]=DATARMNET8814564ab9->DATARMNET7fa8b2acbf;DATARMNETdfd47b00ff[
9]=DATARMNETda7f7fa492;DATARMNETdfd47b00ff[(0xd27+224-0xdfd)]=
DATARMNET08e913477e;DATARMNET5ebf661879=(0xd20+231-0xdfc);}return jhash2(
DATARMNETdfd47b00ff,DATARMNET5ebf661879,(0xd2d+202-0xdf7));}static void
DATARMNETe26a68d20e(u32 DATARMNET5affe290b8){u32 DATARMNET2991ac9aa9;if(
DATARMNET5affe290b8>50000)DATARMNET2991ac9aa9=DATARMNETa121404606;else if(
DATARMNET5affe290b8>30000)DATARMNET2991ac9aa9=DATARMNET787b04223a;else if(
DATARMNET5affe290b8>23000)DATARMNET2991ac9aa9=DATARMNET8e1480cff2;else if(
DATARMNET5affe290b8>14500)DATARMNET2991ac9aa9=DATARMNETf335e26298;else if(
DATARMNET5affe290b8>7000)DATARMNET2991ac9aa9=DATARMNET3067ea3199;else if(
DATARMNET5affe290b8>(0x5b4+1875-0x78f))DATARMNET2991ac9aa9=DATARMNETa76d93355c;
else DATARMNET2991ac9aa9=DATARMNET92f3434694;DATARMNETa00cda79d0(
DATARMNET2991ac9aa9);}static bool DATARMNET1a7ed9a6a2(struct
rmnet_frag_descriptor*DATARMNET9d1b321642,struct DATARMNETd812bcdbb5*
DATARMNET458b70e7e5){struct DATARMNET4287f07234*DATARMNET8814564ab9=&
DATARMNET458b70e7e5->DATARMNET144d119066;u8*DATARMNETdf2dbc641f;u16
DATARMNET5affe290b8;u16 DATARMNETdaa9248df1;DATARMNET5affe290b8=
DATARMNET9d1b321642->len;DATARMNET458b70e7e5->DATARMNET3eb91ee54d=true;if(
unlikely(!(DATARMNET9d1b321642->dev->features&NETIF_F_RXCSUM))){goto
DATARMNETaabe3a05f8;}if(DATARMNET9d1b321642->hdrs_valid){struct
DATARMNET0b82084e89*DATARMNET75be5f3406,DATARMNETc82d2f4e16;struct
DATARMNETd2991e8952*DATARMNET2e7cc88971,DATARMNETd1ff6cd568;DATARMNET8814564ab9
->DATARMNET388842c721=DATARMNET9d1b321642->ip_proto;DATARMNET8814564ab9->
DATARMNET4ca5ac9de1=DATARMNET9d1b321642->ip_len;DATARMNET8814564ab9->
DATARMNET7fa8b2acbf=DATARMNET9d1b321642->trans_proto;DATARMNET8814564ab9->
DATARMNET0aeee57ceb=DATARMNET9d1b321642->trans_len;DATARMNET5affe290b8=
DATARMNET9d1b321642->len;if(DATARMNET8814564ab9->DATARMNET388842c721==
(0xd11+230-0xdf3)){struct DATARMNET308c06fca6*DATARMNET86f1f2cdc9,
DATARMNETbf6548198e;DATARMNET86f1f2cdc9=rmnet_frag_header_ptr(
DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&
DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto DATARMNETaabe3a05f8;
DATARMNET8814564ab9->DATARMNET1a2be7b6c2=DATARMNET86f1f2cdc9->
DATARMNET9bbd2ca483;DATARMNET8814564ab9->DATARMNET0a28fa80f4=DATARMNET86f1f2cdc9
->DATARMNET11ef55b2bb;DATARMNET8814564ab9->DATARMNET19b03754c4=
DATARMNET86f1f2cdc9->DATARMNET1eb6c27583;DATARMNET8814564ab9->
DATARMNET57bf608183=DATARMNET86f1f2cdc9->DATARMNET03e081f69f;DATARMNET8814564ab9
->DATARMNETcf915688f5=DATARMNET86f1f2cdc9->DATARMNET2c091223da;}else{struct
DATARMNET64bb8f616e*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;DATARMNETbf55123e5b=
rmnet_frag_header_ptr(DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*
DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto
DATARMNETaabe3a05f8;memcpy(&DATARMNET8814564ab9->DATARMNET949c2754de[
(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNET31202449fc[(0xd2d+202-0xdf7)],
sizeof(DATARMNETbf55123e5b->DATARMNET31202449fc));memcpy(&DATARMNET8814564ab9->
DATARMNET45ec858bc5[(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNETc657c0a139
[(0xd2d+202-0xdf7)],sizeof(DATARMNETbf55123e5b->DATARMNETc657c0a139));
DATARMNET8814564ab9->DATARMNETabd58f7f89=DATARMNETbf55123e5b->
DATARMNET0687f7ecdc;if(DATARMNET8814564ab9->DATARMNET4ca5ac9de1>sizeof(*
DATARMNETbf55123e5b)){int DATARMNET0afb05821a;__be16 DATARMNET833503918f;bool
DATARMNETcd214ed34c;u8 DATARMNET615595a09c=DATARMNETbf55123e5b->
DATARMNET7244bfdc4f;DATARMNET0afb05821a=rmnet_frag_ipv6_skip_exthdr(
DATARMNET9d1b321642,sizeof(*DATARMNETbf55123e5b),&DATARMNET615595a09c,&
DATARMNET833503918f,&DATARMNETcd214ed34c);if(DATARMNET0afb05821a<
(0xd2d+202-0xdf7)||DATARMNET833503918f||DATARMNETcd214ed34c){if(
DATARMNET615595a09c==DATARMNET5b166167a8)DATARMNET8814564ab9->
DATARMNET4ca5ac9de1+=(0xd35+210-0xdff);DATARMNETa00cda79d0(DATARMNET807e4dad18);
goto DATARMNETaabe3a05f8;}}}DATARMNET75be5f3406=rmnet_frag_header_ptr(
DATARMNET9d1b321642,DATARMNET8814564ab9->DATARMNET4ca5ac9de1,sizeof(*
DATARMNET75be5f3406),&DATARMNETc82d2f4e16);if(!DATARMNET75be5f3406)goto
DATARMNETaabe3a05f8;DATARMNET8814564ab9->DATARMNETa60d2ae3f6=DATARMNET75be5f3406
->DATARMNET1b1c406ae9;DATARMNET8814564ab9->DATARMNET5e7452ec23=
DATARMNET75be5f3406->DATARMNETdf0e8545ee;if(DATARMNET8814564ab9->
DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){__be32 DATARMNET0849981c7c;
DATARMNET2e7cc88971=rmnet_frag_header_ptr(DATARMNET9d1b321642,
DATARMNET8814564ab9->DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),&
DATARMNETd1ff6cd568);if(!DATARMNET2e7cc88971)goto DATARMNETaabe3a05f8;if(
DATARMNET9d1b321642->tcp_seq_set)DATARMNET0849981c7c=DATARMNET9d1b321642->
tcp_seq;else DATARMNET0849981c7c=DATARMNET2e7cc88971->DATARMNETb3e70104e0;
DATARMNET8814564ab9->DATARMNETbc28a5970f=ntohl(DATARMNET0849981c7c);}
DATARMNET458b70e7e5->DATARMNET645e8912b8=DATARMNETcb7325e02d(DATARMNET458b70e7e5
);DATARMNET458b70e7e5->DATARMNET1ef22e4c76=DATARMNET9d1b321642->len-
DATARMNET9d1b321642->ip_len-DATARMNET9d1b321642->trans_len;DATARMNET458b70e7e5->
DATARMNET719f68fb88=DATARMNET9d1b321642;DATARMNET458b70e7e5->DATARMNET3eb91ee54d
=false;return false;}DATARMNETdf2dbc641f=rmnet_frag_data_ptr(DATARMNET9d1b321642
);if(unlikely(!DATARMNETdf2dbc641f))return true;DATARMNET8814564ab9->
DATARMNET388842c721=(DATARMNETdf2dbc641f[(0xd2d+202-0xdf7)]&(0xbf7+4405-0x1c3c))
>>(0xd11+230-0xdf3);if(DATARMNET8814564ab9->DATARMNET388842c721==
(0xd11+230-0xdf3)){struct DATARMNET308c06fca6*DATARMNET86f1f2cdc9,
DATARMNETbf6548198e;DATARMNET86f1f2cdc9=rmnet_frag_header_ptr(
DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&
DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto DATARMNETaabe3a05f8;
DATARMNET8814564ab9->DATARMNET4ca5ac9de1=DATARMNET86f1f2cdc9->
DATARMNET610d06a887*(0xd11+230-0xdf3);DATARMNET8814564ab9->DATARMNET7fa8b2acbf=
DATARMNET86f1f2cdc9->DATARMNET953d32410f;DATARMNET8814564ab9->
DATARMNET1a2be7b6c2=DATARMNET86f1f2cdc9->DATARMNET9bbd2ca483;DATARMNET8814564ab9
->DATARMNET0a28fa80f4=DATARMNET86f1f2cdc9->DATARMNET11ef55b2bb;
DATARMNET8814564ab9->DATARMNET19b03754c4=DATARMNET86f1f2cdc9->
DATARMNET1eb6c27583;DATARMNET8814564ab9->DATARMNET57bf608183=DATARMNET86f1f2cdc9
->DATARMNET03e081f69f;DATARMNET8814564ab9->DATARMNETcf915688f5=
DATARMNET86f1f2cdc9->DATARMNET2c091223da;if(DATARMNET86f1f2cdc9->
DATARMNET2c091223da&htons(16383)){DATARMNETa00cda79d0(DATARMNET807e4dad18);goto
DATARMNETaabe3a05f8;}DATARMNETdaa9248df1=ntohs(DATARMNET86f1f2cdc9->
DATARMNET8e175ac02d);DATARMNET458b70e7e5->DATARMNET8f59f5a745=
DATARMNETdaa9248df1!=DATARMNET5affe290b8;}else if(DATARMNET8814564ab9->
DATARMNET388842c721==(0xd03+244-0xdf1)){struct DATARMNET64bb8f616e*
DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;int DATARMNET0549c61885;__be16
DATARMNET833503918f;bool DATARMNETcd214ed34c;u8 DATARMNET3f56a2bcf4;
DATARMNETbf55123e5b=rmnet_frag_header_ptr(DATARMNET9d1b321642,(0xd2d+202-0xdf7),
sizeof(*DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto
DATARMNETaabe3a05f8;DATARMNET3f56a2bcf4=DATARMNETbf55123e5b->DATARMNET7244bfdc4f
;DATARMNET0549c61885=rmnet_frag_ipv6_skip_exthdr(DATARMNET9d1b321642,sizeof(*
DATARMNETbf55123e5b),&DATARMNET3f56a2bcf4,&DATARMNET833503918f,&
DATARMNETcd214ed34c);if(DATARMNET0549c61885<(0xd2d+202-0xdf7)){goto
DATARMNETaabe3a05f8;}DATARMNET8814564ab9->DATARMNET4ca5ac9de1=(u16)
DATARMNET0549c61885;DATARMNET8814564ab9->DATARMNET7fa8b2acbf=DATARMNET3f56a2bcf4
;memcpy(&DATARMNET8814564ab9->DATARMNET949c2754de[(0xd2d+202-0xdf7)],&
DATARMNETbf55123e5b->DATARMNET31202449fc[(0xd2d+202-0xdf7)],sizeof(
DATARMNETbf55123e5b->DATARMNET31202449fc));memcpy(&DATARMNET8814564ab9->
DATARMNET45ec858bc5[(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNETc657c0a139
[(0xd2d+202-0xdf7)],sizeof(DATARMNETbf55123e5b->DATARMNETc657c0a139));
DATARMNET8814564ab9->DATARMNETabd58f7f89=DATARMNETbf55123e5b->
DATARMNET0687f7ecdc;if(DATARMNET833503918f||DATARMNETcd214ed34c){if(
DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNET5b166167a8)
DATARMNET8814564ab9->DATARMNET4ca5ac9de1+=(0xd35+210-0xdff);DATARMNETa00cda79d0(
DATARMNET807e4dad18);goto DATARMNETaabe3a05f8;}DATARMNETdaa9248df1=ntohs(
DATARMNETbf55123e5b->DATARMNETaa340485c5)+sizeof(*DATARMNETbf55123e5b);
DATARMNET458b70e7e5->DATARMNET8f59f5a745=DATARMNETdaa9248df1!=
DATARMNET5affe290b8;}else{return true;}if(DATARMNET8814564ab9->
DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){struct DATARMNETd2991e8952*
DATARMNET2e7cc88971,DATARMNETd1ff6cd568;DATARMNET2e7cc88971=
rmnet_frag_header_ptr(DATARMNET9d1b321642,DATARMNET8814564ab9->
DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),&DATARMNETd1ff6cd568);if(!
DATARMNET2e7cc88971)goto DATARMNETaabe3a05f8;DATARMNET8814564ab9->
DATARMNET0aeee57ceb=DATARMNET2e7cc88971->DATARMNETcf2e43ad69*(0xd11+230-0xdf3);
DATARMNET8814564ab9->DATARMNETa60d2ae3f6=DATARMNET2e7cc88971->
DATARMNET6acbeeebb1;DATARMNET8814564ab9->DATARMNET5e7452ec23=DATARMNET2e7cc88971
->DATARMNET29b8c05d14;DATARMNET8814564ab9->DATARMNETbc28a5970f=ntohl(
DATARMNET2e7cc88971->DATARMNETb3e70104e0);}else if(DATARMNET8814564ab9->
DATARMNET7fa8b2acbf==DATARMNETa656f324b2){struct DATARMNET0b82084e89*
DATARMNET75be5f3406,DATARMNETc82d2f4e16;DATARMNET75be5f3406=
rmnet_frag_header_ptr(DATARMNET9d1b321642,DATARMNET8814564ab9->
DATARMNET4ca5ac9de1,sizeof(*DATARMNET75be5f3406),&DATARMNETc82d2f4e16);if(!
DATARMNET75be5f3406)goto DATARMNETaabe3a05f8;DATARMNET8814564ab9->
DATARMNET0aeee57ceb=sizeof(*DATARMNET75be5f3406);DATARMNET8814564ab9->
DATARMNETa60d2ae3f6=DATARMNET75be5f3406->DATARMNET1b1c406ae9;DATARMNET8814564ab9
->DATARMNET5e7452ec23=DATARMNET75be5f3406->DATARMNETdf0e8545ee;}else{goto
DATARMNETaabe3a05f8;}DATARMNET458b70e7e5->DATARMNET3eb91ee54d=false;
DATARMNET458b70e7e5->DATARMNET645e8912b8=DATARMNETcb7325e02d(DATARMNET458b70e7e5
);if(!DATARMNET458b70e7e5->DATARMNET8f59f5a745){DATARMNET9d1b321642->ip_proto=
DATARMNET8814564ab9->DATARMNET388842c721;DATARMNET9d1b321642->ip_len=
DATARMNET8814564ab9->DATARMNET4ca5ac9de1;DATARMNET9d1b321642->trans_proto=
DATARMNET8814564ab9->DATARMNET7fa8b2acbf;DATARMNET9d1b321642->trans_len=
DATARMNET8814564ab9->DATARMNET0aeee57ceb;DATARMNET9d1b321642->hdrs_valid=
(0xd26+209-0xdf6);}DATARMNETaabe3a05f8:DATARMNET458b70e7e5->DATARMNET1ef22e4c76=
DATARMNET5affe290b8-DATARMNET8814564ab9->DATARMNET4ca5ac9de1-DATARMNET8814564ab9
->DATARMNET0aeee57ceb;if(DATARMNET458b70e7e5->DATARMNET8f59f5a745)
DATARMNETa00cda79d0(DATARMNET52b7da9033);DATARMNET458b70e7e5->
DATARMNET719f68fb88=DATARMNET9d1b321642;return false;}static void
DATARMNET29e8d137c4(struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct
rmnet_port*DATARMNETf0d9de7e2f){struct DATARMNET70f3b87b5d*DATARMNETe05748b000=
DATARMNETc2a630b113();struct DATARMNETd812bcdbb5 DATARMNET458b70e7e5;LIST_HEAD(
DATARMNET6f9bfa17e6);memset(&DATARMNET458b70e7e5,(0xd2d+202-0xdf7),sizeof(
DATARMNET458b70e7e5));DATARMNET664568fcd0();DATARMNETe05748b000->
DATARMNET403589239f=DATARMNETf0d9de7e2f;if(DATARMNET1a7ed9a6a2(
DATARMNET9d1b321642,&DATARMNET458b70e7e5)){DATARMNETa00cda79d0(
DATARMNET1cddffce49);rmnet_recycle_frag_descriptor(DATARMNET9d1b321642,
DATARMNETf0d9de7e2f);goto DATARMNETbf4095f79e;}DATARMNETa00cda79d0(
DATARMNET9b3fdb0e16);if(DATARMNET458b70e7e5.DATARMNET3eb91ee54d){goto
DATARMNET806c6f8e60;}else if(DATARMNET458b70e7e5.DATARMNET8f59f5a745){
DATARMNETc38c135c9f(DATARMNET458b70e7e5.DATARMNET645e8912b8,&DATARMNET6f9bfa17e6
);goto DATARMNET806c6f8e60;}if(!DATARMNET9d1b321642->csum_valid){goto
DATARMNET806c6f8e60;}if(!DATARMNETfbf5798e15(&DATARMNET458b70e7e5,&
DATARMNET6f9bfa17e6))goto DATARMNET806c6f8e60;goto DATARMNETbf4095f79e;
DATARMNET806c6f8e60:DATARMNET19d190f2bd(&DATARMNET458b70e7e5,&
DATARMNET6f9bfa17e6);DATARMNETbf4095f79e:DATARMNET6a76048590();
DATARMNETc70e73c8d4(&DATARMNET6f9bfa17e6);}void DATARMNET664568fcd0(void){
spin_lock_bh(&DATARMNET0b5e447f18);}void DATARMNET6a76048590(void){
spin_unlock_bh(&DATARMNET0b5e447f18);}void DATARMNET818b960147(void){
rcu_assign_pointer(rmnet_perf_desc_entry,DATARMNET29e8d137c4);}void
DATARMNETba38823a2f(void){rcu_assign_pointer(rmnet_perf_desc_entry,NULL);}bool
DATARMNET19eb0de3b2(void){void(*DATARMNET27ebcde4bf)(struct
rmnet_frag_descriptor*DATARMNET9d1b321642,struct rmnet_port*DATARMNETf0d9de7e2f)
;rcu_read_lock();DATARMNET27ebcde4bf=rcu_dereference(rmnet_perf_desc_entry);
rcu_read_unlock();return DATARMNET27ebcde4bf!=NULL;}void DATARMNETc70e73c8d4(
struct list_head*DATARMNETb5730f5283){struct DATARMNET70f3b87b5d*
DATARMNETe05748b000=DATARMNETc2a630b113();struct rmnet_frag_descriptor*
DATARMNET9d1b321642,*DATARMNET0386f6f82a;list_for_each_entry_safe(
DATARMNET9d1b321642,DATARMNET0386f6f82a,DATARMNETb5730f5283,list){
DATARMNETe26a68d20e(DATARMNET9d1b321642->len);DATARMNETa00cda79d0(
DATARMNET65843ad009);list_del_init(&DATARMNET9d1b321642->list);
rmnet_frag_deliver(DATARMNET9d1b321642,DATARMNETe05748b000->DATARMNET403589239f)
;}}void DATARMNET19d190f2bd(struct DATARMNETd812bcdbb5*DATARMNET458b70e7e5,
struct list_head*DATARMNET6f9bfa17e6){struct rmnet_frag_descriptor*
DATARMNET9d1b321642=DATARMNET458b70e7e5->DATARMNET719f68fb88;u32
DATARMNET5affe290b8=DATARMNET458b70e7e5->DATARMNET1ef22e4c76+DATARMNET458b70e7e5
->DATARMNET144d119066.DATARMNET4ca5ac9de1+DATARMNET458b70e7e5->
DATARMNET144d119066.DATARMNET0aeee57ceb;if(DATARMNET5affe290b8>65536)return;if(!
DATARMNET458b70e7e5->DATARMNET3eb91ee54d)DATARMNET9d1b321642->hash=
DATARMNET458b70e7e5->DATARMNET645e8912b8;list_add_tail(&DATARMNET9d1b321642->
list,DATARMNET6f9bfa17e6);}void DATARMNET9292bebdd3(void*DATARMNETf0d9de7e2f){}
void DATARMNETb7e47d7254(void*DATARMNETf0d9de7e2f){}void DATARMNET95e1703026(
struct rmnet_map_dl_ind_hdr*DATARMNET7c7748ef7a,struct
rmnet_map_control_command_header*DATARMNET8b07ee3e82){struct DATARMNET70f3b87b5d
*DATARMNETe05748b000=DATARMNETc2a630b113();LIST_HEAD(DATARMNET6f9bfa17e6);(void)
DATARMNET8b07ee3e82;DATARMNET664568fcd0();if(DATARMNETe05748b000->
DATARMNETa9f2b2f677.DATARMNETb165d2c5c4&&DATARMNETae70636c90(&
DATARMNET6f9bfa17e6))DATARMNETa00cda79d0(DATARMNET372ef39ae4);
DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNETb165d2c5c4=true;
DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNETe2251ce433=DATARMNET7c7748ef7a
->le.seq;DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNET7f59b108db=
DATARMNET7c7748ef7a->le.pkts;DATARMNET6a76048590();DATARMNETc70e73c8d4(&
DATARMNET6f9bfa17e6);}void DATARMNETc9dd320f49(struct rmnet_map_dl_ind_trl*
DATARMNET2541770fea,struct rmnet_map_control_command_header*DATARMNET8b07ee3e82)
{struct DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();LIST_HEAD(
DATARMNET6f9bfa17e6);(void)DATARMNET8b07ee3e82;DATARMNET664568fcd0();if(
DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNETe2251ce433!=
DATARMNET2541770fea->seq_le)DATARMNETa00cda79d0(DATARMNET30a4d88ea6);if(
DATARMNETae70636c90(&DATARMNET6f9bfa17e6))DATARMNETa00cda79d0(
DATARMNETa03ed3629e);DATARMNETe05748b000->DATARMNETa9f2b2f677.
DATARMNETb165d2c5c4=false;DATARMNETe05748b000->DATARMNETa9f2b2f677.
DATARMNETe2251ce433=(0xd2d+202-0xdf7);DATARMNETe05748b000->DATARMNETa9f2b2f677.
DATARMNET7f59b108db=(0xd2d+202-0xdf7);DATARMNET6a76048590();DATARMNETc70e73c8d4(
&DATARMNET6f9bfa17e6);}

View File

@@ -0,0 +1,73 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DATARMNET3f65517842
#define DATARMNET3f65517842
#include <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);bool
DATARMNET19eb0de3b2(void);void DATARMNETc70e73c8d4(struct list_head*
DATARMNETb5730f5283);void DATARMNET19d190f2bd(struct DATARMNETd812bcdbb5*
DATARMNET458b70e7e5,struct list_head*DATARMNET6f9bfa17e6);void
DATARMNET9292bebdd3(void*DATARMNETf0d9de7e2f);void DATARMNETb7e47d7254(void*
DATARMNETf0d9de7e2f);void DATARMNET95e1703026(struct rmnet_map_dl_ind_hdr*
DATARMNET7c7748ef7a,struct rmnet_map_control_command_header*DATARMNET8b07ee3e82)
;void DATARMNETc9dd320f49(struct rmnet_map_dl_ind_trl*DATARMNET2541770fea,struct
rmnet_map_control_command_header*DATARMNET8b07ee3e82);
#endif

View File

@@ -0,0 +1,101 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/module.h>
#include <linux/netdevice.h>
#include <linux/rcupdate.h>
#include "rmnet_map.h"
#include "rmnet_private.h"
#include "qmi_rmnet.h"
#include "rmnet_offload_state.h"
#include "rmnet_offload_engine.h"
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");
#define DATARMNET1f03ff7987 (0xd2d+202-0xdf7)
static struct DATARMNET70f3b87b5d*DATARMNETe05748b000;static void
DATARMNETac9c8c14b1(void){struct rmnet_port*DATARMNETf0d9de7e2f=
DATARMNETe05748b000->DATARMNET403589239f;struct DATARMNET74bb35b8f2*
DATARMNET87b015f76f;qmi_rmnet_ps_ind_deregister(DATARMNETf0d9de7e2f,&
DATARMNETe05748b000->DATARMNET341393eda2);DATARMNET87b015f76f=&
DATARMNETe05748b000->DATARMNETa9f2b2f677;if(DATARMNET87b015f76f->
DATARMNETc2832b8f85)rmnet_map_dl_ind_deregister(DATARMNETf0d9de7e2f,&
DATARMNET87b015f76f->DATARMNET8633ae8f1e);}static void DATARMNET345f805b34(void)
{LIST_HEAD(DATARMNET6f9bfa17e6);if(!DATARMNETe05748b000)return;
DATARMNETac9c8c14b1();DATARMNETba38823a2f();DATARMNET560e127137();
synchronize_rcu();DATARMNETae70636c90(&DATARMNET6f9bfa17e6);DATARMNETb98b78b8e3(
);kfree(DATARMNETe05748b000);DATARMNETe05748b000=NULL;}static int
DATARMNETd68e3594a7(void){struct rmnet_port*DATARMNETf0d9de7e2f=
DATARMNETe05748b000->DATARMNET403589239f;struct qmi_rmnet_ps_ind*
DATARMNETbc78d7fd3c;struct DATARMNET74bb35b8f2*DATARMNET87b015f76f;struct
rmnet_map_dl_ind*DATARMNET8633ae8f1e;int DATARMNETb14e52a504=DATARMNET0529bb9c4e
;DATARMNETbc78d7fd3c=&DATARMNETe05748b000->DATARMNET341393eda2;
DATARMNETbc78d7fd3c->ps_on_handler=DATARMNET9292bebdd3;DATARMNETbc78d7fd3c->
ps_off_handler=DATARMNETb7e47d7254;if(qmi_rmnet_ps_ind_register(
DATARMNETf0d9de7e2f,DATARMNETbc78d7fd3c)){DATARMNETb14e52a504=
DATARMNET8e1c5c09f8;pr_warn(
"\x25\x73\x28\x29\x3a\x20\x50\x53\x20\x43\x42\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);}if(DATARMNETf0d9de7e2f->data_format&
RMNET_INGRESS_FORMAT_DL_MARKER_V2){DATARMNET87b015f76f=&DATARMNETe05748b000->
DATARMNETa9f2b2f677;DATARMNET8633ae8f1e=&DATARMNET87b015f76f->
DATARMNET8633ae8f1e;DATARMNET8633ae8f1e->priority=DATARMNET1f03ff7987;
DATARMNET8633ae8f1e->dl_hdr_handler_v2=DATARMNET95e1703026;DATARMNET8633ae8f1e->
dl_trl_handler_v2=DATARMNETc9dd320f49;if(rmnet_map_dl_ind_register(
DATARMNETf0d9de7e2f,DATARMNET8633ae8f1e)){DATARMNETb14e52a504=
DATARMNET8e1c5c09f8;pr_warn(
"\x25\x73\x28\x29\x3a\x20\x44\x4c\x20\x43\x42\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);}else{DATARMNET87b015f76f->DATARMNETc2832b8f85=true;}}
DATARMNETd4230b6bfe();return DATARMNETb14e52a504;}static int DATARMNET9f53d54812
(struct rmnet_port*DATARMNETf0d9de7e2f){int DATARMNETb14e52a504;
DATARMNETe05748b000=kzalloc(sizeof(*DATARMNETe05748b000),GFP_KERNEL);if(!
DATARMNETe05748b000){pr_err(
"\x25\x73\x28\x29\x3a\x20\x52\x65\x73\x6f\x75\x72\x63\x65\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);return DATARMNETb881657565;}DATARMNETe05748b000->DATARMNET403589239f=
DATARMNETf0d9de7e2f;DATARMNETb14e52a504=DATARMNETdbcaf01255();if(
DATARMNETb14e52a504<(0xd2d+202-0xdf7))goto DATARMNET1d7e728ddf;
DATARMNETb14e52a504=DATARMNETd68e3594a7();if(DATARMNETb14e52a504!=
DATARMNET0529bb9c4e){pr_warn(
"\x25\x73\x28\x29\x3a\x20\x43\x61\x6c\x6c\x62\x61\x63\x6b\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);}DATARMNETe05748b000->DATARMNETcb2b3ae8e4=(0xd26+209-0xdf6);
DATARMNET818b960147();return DATARMNETb14e52a504;DATARMNET1d7e728ddf:kfree(
DATARMNETe05748b000);DATARMNETe05748b000=NULL;return DATARMNETb14e52a504;}static
int DATARMNET7dec24813e(struct notifier_block*DATARMNET272c159b3c,unsigned long
DATARMNET4abd997295,void*DATARMNET3f254bae11){struct net_device*
DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(DATARMNET3f254bae11);struct
rmnet_port*DATARMNETf0d9de7e2f;struct rmnet_priv*DATARMNETe823dcf978;int
DATARMNETb14e52a504;(void)DATARMNET272c159b3c;if(!DATARMNET00dcb79bc4||strncmp(
DATARMNET00dcb79bc4->name,"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",
(0xd27+224-0xdfd)))goto DATARMNETaabe3a05f8;switch(DATARMNET4abd997295){case
NETDEV_REGISTER:if(DATARMNETe05748b000){DATARMNETe05748b000->DATARMNETcb2b3ae8e4
++;goto DATARMNETaabe3a05f8;}DATARMNETe823dcf978=netdev_priv(DATARMNET00dcb79bc4
);DATARMNETf0d9de7e2f=rmnet_get_port(DATARMNETe823dcf978->real_dev);if(!
DATARMNETf0d9de7e2f){pr_err(
"\x25\x73\x28\x29\x3a\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x72\x6d\x6e\x65\x74\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x25\x73" "\n"
,__func__,DATARMNET00dcb79bc4->name);goto DATARMNETaabe3a05f8;}pr_info(
"\x25\x73\x28\x29\x3a\x20\x49\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x6f\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x25\x73" "\n"
,__func__,DATARMNET00dcb79bc4->name);DATARMNETb14e52a504=DATARMNET9f53d54812(
DATARMNETf0d9de7e2f);if(DATARMNETb14e52a504==DATARMNETb881657565){pr_err(
"\x25\x73\x28\x29\x3a\x20\x49\x6e\x69\x74\x69\x61\x6c\x69\x7a\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);goto DATARMNETaabe3a05f8;}break;case NETDEV_UNREGISTER:if(!
DATARMNETe05748b000)goto DATARMNETaabe3a05f8;if(--DATARMNETe05748b000->
DATARMNETcb2b3ae8e4)goto DATARMNETaabe3a05f8;pr_info(
"\x25\x73\x28\x29\x3a\x20\x55\x6e\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x6f\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x25\x73" "\n"
,__func__,DATARMNET00dcb79bc4->name);DATARMNET345f805b34();break;}
DATARMNETaabe3a05f8:return NOTIFY_DONE;}static struct notifier_block
DATARMNETcae9c64c41={.notifier_call=DATARMNET7dec24813e,.priority=
(0xd26+209-0xdf6),};static int __init DATARMNETb1c42acd9c(void){pr_info(
"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x6f\x66\x66\x6c\x6f\x61\x64\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67" "\n"
,__func__);return register_netdevice_notifier(&DATARMNETcae9c64c41);}static void
__exit DATARMNET0f6d85e415(void){pr_info(
"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x6f\x66\x66\x6c\x6f\x61\x64\x20\x65\x78\x69\x74\x69\x6e\x67" "\n"
,__func__);unregister_netdevice_notifier(&DATARMNETcae9c64c41);}struct
DATARMNET70f3b87b5d*DATARMNETc2a630b113(void){return DATARMNETe05748b000;}
module_init(DATARMNETb1c42acd9c);module_exit(DATARMNET0f6d85e415);

View File

@@ -0,0 +1,30 @@
/* Copyright (c) 2013-2014, 2016-2017, 2019-2020 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DATARMNETc03e325706
#define DATARMNETc03e325706
#include "rmnet_offload_engine.h"
#include "rmnet_map.h"
#include "rmnet_descriptor.h"
#include "qmi_rmnet.h"
enum{DATARMNET0529bb9c4e,DATARMNET8e1c5c09f8,DATARMNETb881657565,};extern void(*
rmnet_perf_desc_entry)(struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct
rmnet_port*DATARMNETf0d9de7e2f);extern void(*rmnet_perf_chain_end)(void);struct
DATARMNET74bb35b8f2{struct rmnet_map_dl_ind DATARMNET8633ae8f1e;u32
DATARMNETe2251ce433;u32 DATARMNET7f59b108db;bool DATARMNETc2832b8f85;bool
DATARMNETb165d2c5c4;};struct DATARMNET70f3b87b5d{struct rmnet_port*
DATARMNET403589239f;struct DATARMNET74bb35b8f2 DATARMNETa9f2b2f677;struct
qmi_rmnet_ps_ind DATARMNET341393eda2;struct DATARMNET907d58c807
DATARMNETebb45c8d86;u8 DATARMNETcb2b3ae8e4;};struct DATARMNET70f3b87b5d*
DATARMNETc2a630b113(void);
#endif

View File

@@ -0,0 +1,20 @@
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/moduleparam.h>
#include "rmnet_offload_stats.h"
static u64 DATARMNET6c78aba0c8[DATARMNETd04f96aa13];module_param_array_named(
rmnet_offload_stat,DATARMNET6c78aba0c8,ullong,NULL,(0xcb7+5769-0x221c));void
DATARMNETbad3b5165e(u32 DATARMNET248f120dd5,u64 DATARMNETb639f6e1b1){if(
DATARMNET248f120dd5<DATARMNETd04f96aa13)DATARMNET6c78aba0c8[DATARMNET248f120dd5]
+=DATARMNETb639f6e1b1;}void DATARMNETa00cda79d0(u32 DATARMNET248f120dd5){
DATARMNETbad3b5165e(DATARMNET248f120dd5,(0xd26+209-0xdf6));}

View File

@@ -0,0 +1,27 @@
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DATARMNETbc7bfad32a
#define DATARMNETbc7bfad32a
#include <linux/types.h>
enum{DATARMNET9b3fdb0e16,DATARMNET65843ad009,DATARMNET1cddffce49,
DATARMNET372ef39ae4,DATARMNET30a4d88ea6,DATARMNETa03ed3629e,DATARMNET807e4dad18,
DATARMNET52b7da9033,DATARMNETf3f92fc0b9,DATARMNET5727f095ec,DATARMNET6a894ab63d,
DATARMNETddf572458d,DATARMNET47a963957c,DATARMNETb322de38be,DATARMNET38317c7efd,
DATARMNET31c0e41f5a,DATARMNET0cd1fa0d98,DATARMNET1c0d243816,DATARMNETc34a778ea2,
DATARMNETbc56977b7e,DATARMNETc9b8ef90d1,DATARMNET92f3434694,DATARMNETa76d93355c,
DATARMNET3067ea3199,DATARMNETf335e26298,DATARMNET8e1480cff2,DATARMNET787b04223a,
DATARMNETa121404606,DATARMNETd04f96aa13,};void DATARMNETbad3b5165e(u32
DATARMNET248f120dd5,u64 DATARMNETb639f6e1b1);void DATARMNETa00cda79d0(u32
DATARMNET248f120dd5);
#endif

View File

@@ -0,0 +1,83 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/list.h>
#include "rmnet_descriptor.h"
#include "rmnet_offload_main.h"
#include "rmnet_offload_engine.h"
#include "rmnet_offload_stats.h"
#include "rmnet_offload_knob.h"
union DATARMNETe0a7777e12{struct DATARMNETd2991e8952 DATARMNETe31a04a369;u8
DATARMNET021aa8e68d[(0xf07+1090-0x130d)];};static bool DATARMNET2818ea93ec(
struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){struct DATARMNETd2991e8952*
DATARMNET2e7cc88971,DATARMNETd1ff6cd568;__be32 DATARMNETa8eeab014d;u8
DATARMNETfb0677cc3c;DATARMNET2e7cc88971=rmnet_frag_header_ptr(
DATARMNET5fe4c722a8->DATARMNET719f68fb88,DATARMNET5fe4c722a8->
DATARMNET144d119066.DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),&
DATARMNETd1ff6cd568);if(!DATARMNET2e7cc88971)return true;DATARMNETa8eeab014d=
(0xbf7+4796-0x1e04);DATARMNETfb0677cc3c=DATARMNET2e7cc88971->DATARMNETd570802f3d
;if(DATARMNET5fe4c722a8->DATARMNET719f68fb88->tcp_flags_set)DATARMNETfb0677cc3c=
(u8)ntohs(DATARMNET5fe4c722a8->DATARMNET719f68fb88->tcp_flags);if((!
DATARMNET5fe4c722a8->DATARMNET1ef22e4c76&&(DATARMNETfb0677cc3c&
(0xeb7+1158-0x132d)))||(DATARMNETfb0677cc3c&DATARMNETa8eeab014d))return true;
return false;}static bool DATARMNET829fcf5939(struct DATARMNETd7c9631acd*
DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){union
DATARMNETe0a7777e12*DATARMNET699c2c62cd,DATARMNETee66845de4;union
DATARMNETe0a7777e12*DATARMNET8814564ab9,DATARMNETa27d4d22be;struct
rmnet_frag_descriptor*DATARMNET48cfce4de4;u32 DATARMNET3c3abe9e2c,
DATARMNETefc9df3df2;DATARMNET48cfce4de4=list_first_entry(&DATARMNETaa568481cf->
DATARMNETb76b79d0d5,struct rmnet_frag_descriptor,list);DATARMNET699c2c62cd=
rmnet_frag_header_ptr(DATARMNET48cfce4de4,DATARMNETaa568481cf->
DATARMNET78fd20ce0e.DATARMNET4ca5ac9de1,DATARMNETaa568481cf->DATARMNET78fd20ce0e
.DATARMNET0aeee57ceb,&DATARMNETee66845de4);if(!DATARMNET699c2c62cd)return true;
DATARMNET8814564ab9=rmnet_frag_header_ptr(DATARMNET5fe4c722a8->
DATARMNET719f68fb88,DATARMNET5fe4c722a8->DATARMNET144d119066.DATARMNET4ca5ac9de1
,DATARMNET5fe4c722a8->DATARMNET144d119066.DATARMNET0aeee57ceb,&
DATARMNETa27d4d22be);if(!DATARMNET8814564ab9)return true;DATARMNET3c3abe9e2c=
DATARMNET699c2c62cd->DATARMNETe31a04a369.DATARMNETcf2e43ad69*(0xd11+230-0xdf3);
if(DATARMNET8814564ab9->DATARMNETe31a04a369.DATARMNETcf2e43ad69*
(0xd11+230-0xdf3)!=DATARMNET3c3abe9e2c)return true;for(DATARMNETefc9df3df2=
sizeof(DATARMNET699c2c62cd->DATARMNETe31a04a369);DATARMNETefc9df3df2<
DATARMNET3c3abe9e2c;DATARMNETefc9df3df2+=(0xd11+230-0xdf3)){if(*(u32*)(
DATARMNET699c2c62cd->DATARMNET021aa8e68d+DATARMNETefc9df3df2)^*(u32*)(
DATARMNET8814564ab9->DATARMNET021aa8e68d+DATARMNETefc9df3df2))return true;}
return false;}static int DATARMNET9a13d70865(struct DATARMNETd7c9631acd*
DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){u64
DATARMNET7457d496cb;u32 DATARMNET95acece3fc;if(DATARMNET2818ea93ec(
DATARMNET5fe4c722a8)){DATARMNETa00cda79d0(DATARMNETb322de38be);return
DATARMNET7af645849a;}if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return
DATARMNET0413b43080;if(DATARMNET829fcf5939(DATARMNETaa568481cf,
DATARMNET5fe4c722a8)){DATARMNETa00cda79d0(DATARMNET38317c7efd);return
DATARMNETb0bd5db24d;}if(DATARMNET5fe4c722a8->DATARMNET144d119066.
DATARMNETbc28a5970f^DATARMNETaa568481cf->DATARMNET78fd20ce0e.DATARMNETbc28a5970f
){DATARMNETa00cda79d0(DATARMNET31c0e41f5a);return DATARMNET7af645849a;}
DATARMNET95acece3fc=(DATARMNET5fe4c722a8->DATARMNET719f68fb88->gso_size)?:
DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;if(DATARMNET95acece3fc!=
DATARMNETaa568481cf->DATARMNET1978d5d8de){DATARMNETa00cda79d0(
DATARMNET0cd1fa0d98);return DATARMNETb0bd5db24d;}DATARMNET7457d496cb=
DATARMNETf1d1b8287f(DATARMNETdf66588a73);if(DATARMNET5fe4c722a8->
DATARMNET1ef22e4c76+DATARMNETaa568481cf->DATARMNETcf28ae376b>=
DATARMNET7457d496cb){DATARMNETa00cda79d0(DATARMNET1c0d243816);return
DATARMNETb0bd5db24d;}DATARMNET5fe4c722a8->DATARMNETf1b6b0a6cc=false;return
DATARMNET0413b43080;}bool DATARMNET4c7cdc25b7(struct DATARMNETd7c9631acd*
DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,bool
DATARMNETd87669e323,struct list_head*DATARMNET6f9bfa17e6){int
DATARMNETb14e52a504;if(DATARMNETd87669e323){DATARMNETa00cda79d0(
DATARMNET47a963957c);DATARMNETa3055c21f2(DATARMNETaa568481cf,DATARMNET6f9bfa17e6
);DATARMNET19d190f2bd(DATARMNET5fe4c722a8,DATARMNET6f9bfa17e6);return true;}
DATARMNETb14e52a504=DATARMNET9a13d70865(DATARMNETaa568481cf,DATARMNET5fe4c722a8)
;if(DATARMNETb14e52a504==DATARMNET0413b43080){DATARMNET33aa5df9ef(
DATARMNETaa568481cf,DATARMNET5fe4c722a8);}else if(DATARMNETb14e52a504==
DATARMNETb0bd5db24d){DATARMNETa3055c21f2(DATARMNETaa568481cf,DATARMNET6f9bfa17e6
);DATARMNET33aa5df9ef(DATARMNETaa568481cf,DATARMNET5fe4c722a8);}else{
DATARMNETa3055c21f2(DATARMNETaa568481cf,DATARMNET6f9bfa17e6);DATARMNET19d190f2bd
(DATARMNET5fe4c722a8,DATARMNET6f9bfa17e6);}return true;}

View File

@@ -0,0 +1,21 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DATARMNET1f0bf20b47
#define DATARMNET1f0bf20b47
#include "rmnet_offload_main.h"
#include "rmnet_offload_engine.h"
bool DATARMNET4c7cdc25b7(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct
DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,bool DATARMNETd87669e323,struct
list_head*DATARMNET6f9bfa17e6);
#endif

View File

@@ -0,0 +1,40 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "rmnet_descriptor.h"
#include "rmnet_offload_main.h"
#include "rmnet_offload_engine.h"
#include "rmnet_offload_stats.h"
#include "rmnet_offload_knob.h"
static int DATARMNETdf8e0dc3a0(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,
struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){u64 DATARMNET71c7d18d88;u16
DATARMNET95acece3fc;if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return
DATARMNET0413b43080;DATARMNET95acece3fc=(DATARMNET5fe4c722a8->
DATARMNET719f68fb88->gso_size)?:DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;if(
DATARMNET95acece3fc!=DATARMNETaa568481cf->DATARMNET1978d5d8de){
DATARMNETa00cda79d0(DATARMNETbc56977b7e);return DATARMNETb0bd5db24d;}
DATARMNET71c7d18d88=DATARMNETf1d1b8287f(DATARMNET9c85bb95a3);if(
DATARMNET5fe4c722a8->DATARMNET1ef22e4c76+DATARMNETaa568481cf->
DATARMNETcf28ae376b>=DATARMNET71c7d18d88){DATARMNETa00cda79d0(
DATARMNETc9b8ef90d1);return DATARMNETb0bd5db24d;}DATARMNET5fe4c722a8->
DATARMNETf1b6b0a6cc=false;return DATARMNET0413b43080;}bool DATARMNET8dc47eb7af(
struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*
DATARMNET5fe4c722a8,bool DATARMNETd87669e323,struct list_head*
DATARMNET6f9bfa17e6){int DATARMNETb14e52a504;if(DATARMNETd87669e323){
DATARMNETa00cda79d0(DATARMNETc34a778ea2);DATARMNETa3055c21f2(DATARMNETaa568481cf
,DATARMNET6f9bfa17e6);DATARMNET19d190f2bd(DATARMNET5fe4c722a8,
DATARMNET6f9bfa17e6);return true;}DATARMNETb14e52a504=DATARMNETdf8e0dc3a0(
DATARMNETaa568481cf,DATARMNET5fe4c722a8);if(DATARMNETb14e52a504==
DATARMNET0413b43080){DATARMNET33aa5df9ef(DATARMNETaa568481cf,DATARMNET5fe4c722a8
);}else if(DATARMNETb14e52a504==DATARMNETb0bd5db24d){DATARMNETa3055c21f2(
DATARMNETaa568481cf,DATARMNET6f9bfa17e6);DATARMNET33aa5df9ef(DATARMNETaa568481cf
,DATARMNET5fe4c722a8);}return true;}

View File

@@ -0,0 +1,21 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DATARMNETd4ae2cf0b5
#define DATARMNETd4ae2cf0b5
#include "rmnet_offload_main.h"
#include "rmnet_offload_engine.h"
bool DATARMNET8dc47eb7af(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct
DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,bool DATARMNETd87669e323,struct
list_head*DATARMNET6f9bfa17e6);
#endif

View File

@@ -0,0 +1,52 @@
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_PERF_DLKM_PLATFORMS_LIST := taro
RMNET_PERF_DLKM_PLATFORMS_LIST += parrot
ifeq ($(call is-board-platform-in-list, $(RMNET_PERF_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_MODULE := rmnet_perf.ko
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
#path from build top to the core directory
DATARMNET_CORE_PATH := datarmnet/core
RMNET_CORE_PATH := vendor/qcom/opensource/$(DATARMNET_CORE_PATH)
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
#absolute path to the build directory. Can't use $(TOP) here since
#that resolves to ., and we pass this to Kbuild, where . is different
RMNET_CORE_INC_DIR := $(abspath $(RMNET_CORE_PATH))
#pass variables down to Kbuild environment
KBUILD_OPTIONS := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS += RMNET_CORE_PATH=$(RMNET_CORE_PATH)
KBUILD_OPTIONS += DATARMNET_CORE_PATH=$(DATARMNET_CORE_PATH)
KBUILD_OPTIONS_GKI := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS_GKI += RMNET_CORE_PATH=$(RMNET_CORE_PATH)/gki
#rmnet shs path
DATARMNET_SHS_PATH := datarmnet-ext/shs
RMNET_SHS_PATH := vendor/qcom/opensource/$(DATARMNET_SHS_PATH)
RMNET_SHS_INC_DIR := $(abspath $(RMNET_SHS_PATH))
#Must be built after the core rmnet and shs module
KBUILD_OPTIONS += RMNET_SHS_INC_DIR=$(RMNET_SHS_INC_DIR)
KBUILD_OPTIONS += RMNET_SHS_PATH=$(RMNET_SHS_PATH)
KBUILD_OPTIONS += DATARMNET_SHS_PATH=$(DATARMNET_SHS_PATH)
KBUILD_OPTIONS_GKI += RMNET_SHS_INC_DIR=$(RMNET_SHS_INC_DIR)
KBUILD_OPTIONS_GKI += RMNET_SHS_PATH=$(RMNET_SHS_PATH)/gki
LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/rmnet_core.ko
LOCAL_ADDITIONAL_DEPENDENCIES_GKI := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/gki/rmnet_core.ko
LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_SHS_PATH)/rmnet_shs.ko
LOCAL_ADDITIONAL_DEPENDENCIES_GKI += $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_SHS_PATH)/gki/rmnet_shs.ko
include $(DLKM_DIR)/Build_external_kernelmodule.mk
endif #End of check for target
endif #End of Check for qssi target
endif #End of check for AUTO Target

View File

@@ -0,0 +1,5 @@
obj-m += rmnet_perf.o
#Need core headers
ccflags-y := -I$(RMNET_CORE_INC_DIR) \
$(call cc-option,-Wno-misleading-indentation)
rmnet_perf-y := rmnet_perf_main.o

View File

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

View File

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

View File

@@ -0,0 +1,82 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET PERF framework
*
*/
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/in.h>
#include <linux/udp.h>
#include <linux/ip.h>
#include <linux/ipv6.h>
#include <net/ipv6.h>
#include <net/ip.h>
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={
"\x65\x35\x36\x63\x62\x35\x35\x64","\x33\x39\x63\x62\x64\x37\x64\x35",
"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x64\x65\x34\x39\x64\x62\x35",
"\x62\x31\x63\x34\x34\x62\x34\x63"};module_param_array(verinfo,charp,NULL,
(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
);extern int(*rmnet_perf_ingress_hook1)(struct sk_buff*DATARMNET543491eb0f);
extern void(*rmnet_perf_egress_hook1)(struct sk_buff*DATARMNET543491eb0f);
#define DATARMNETf241a4b20f (0xe07+6616-0x2624)
static inline bool DATARMNETe1ef3edea2(struct udphdr*DATARMNETa1abb4897c){return
be16_to_cpu(DATARMNETa1abb4897c->source)==DATARMNETf241a4b20f||be16_to_cpu(
DATARMNETa1abb4897c->dest)==DATARMNETf241a4b20f;}static bool DATARMNET77ab42949f
(struct sk_buff*DATARMNET543491eb0f,int DATARMNET611d08d671){u8*
DATARMNET352416e828,DATARMNETd9bda61912;struct udphdr*DATARMNETa1abb4897c,
DATARMNET7b1af10647;DATARMNETa1abb4897c=skb_header_pointer(DATARMNET543491eb0f,
DATARMNET611d08d671,sizeof(*DATARMNETa1abb4897c),&DATARMNET7b1af10647);if(!
DATARMNETa1abb4897c||!DATARMNETe1ef3edea2(DATARMNETa1abb4897c))return false;if(
be16_to_cpu(DATARMNETa1abb4897c->len)<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);}int DATARMNETee9214ce9b(struct
sk_buff*DATARMNET543491eb0f){if(DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){
struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;DATARMNET86f1f2cdc9=
skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*
DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9||
ip_is_fragment(DATARMNET86f1f2cdc9)||DATARMNET86f1f2cdc9->protocol!=IPPROTO_UDP)
return-EINVAL;if(DATARMNET77ab42949f(DATARMNET543491eb0f,(DATARMNET86f1f2cdc9->
ihl)*(0xd11+230-0xdf3)))goto DATARMNET606558916b;return-EINVAL;}if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;u8 protocol;int DATARMNET611d08d671=
(0xd2d+202-0xdf7);__be16 DATARMNET98fed39916=(0xd2d+202-0xdf7);
DATARMNETbf55123e5b=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
sizeof(*DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)
return-EINVAL;protocol=DATARMNETbf55123e5b->nexthdr;DATARMNET611d08d671=
ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(struct ipv6hdr),&protocol,&
DATARMNET98fed39916);if(DATARMNET98fed39916||protocol!=IPPROTO_UDP||
DATARMNET611d08d671==-(0xd26+209-0xdf6))return-EINVAL;if(DATARMNET77ab42949f(
DATARMNET543491eb0f,DATARMNET611d08d671))goto DATARMNET606558916b;}return-EINVAL
;DATARMNET606558916b:DATARMNET543491eb0f->hash=(0xd2d+202-0xdf7);
DATARMNET543491eb0f->sw_hash=(0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}void
DATARMNET05c4bf8af9(struct sk_buff*DATARMNET543491eb0f){if(DATARMNET543491eb0f->
protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;
DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9||
ip_is_fragment(DATARMNET86f1f2cdc9)||DATARMNET86f1f2cdc9->protocol!=IPPROTO_UDP)
return;if(DATARMNET77ab42949f(DATARMNET543491eb0f,(DATARMNET86f1f2cdc9->ihl)*
(0xd11+230-0xdf3)))goto DATARMNETb261f33b7b;return;}if(DATARMNET543491eb0f->
protocol==htons(ETH_P_IPV6)){struct ipv6hdr*DATARMNETbf55123e5b,
DATARMNETcf1d9e2c1e;u8 protocol;int DATARMNET611d08d671=(0xd2d+202-0xdf7);__be16
DATARMNET98fed39916=(0xd2d+202-0xdf7);DATARMNETbf55123e5b=skb_header_pointer(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),&
DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)return;protocol=DATARMNETbf55123e5b
->nexthdr;DATARMNET611d08d671=ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(struct
ipv6hdr),&protocol,&DATARMNET98fed39916);if(DATARMNET98fed39916||protocol!=
IPPROTO_UDP||DATARMNET611d08d671==-(0xd26+209-0xdf6))return;if(
DATARMNET77ab42949f(DATARMNET543491eb0f,DATARMNET611d08d671))goto
DATARMNETb261f33b7b;}return;DATARMNETb261f33b7b:DATARMNET543491eb0f->priority=
14286874;}void DATARMNET49c17a32bc(void){rcu_assign_pointer(
rmnet_perf_ingress_hook1,DATARMNETee9214ce9b);rcu_assign_pointer(
rmnet_perf_egress_hook1,DATARMNET05c4bf8af9);}void DATARMNET41e8cc085c(void){
rcu_assign_pointer(rmnet_perf_ingress_hook1,NULL);rcu_assign_pointer(
rmnet_perf_egress_hook1,NULL);synchronize_rcu();}static int __init
DATARMNET63abbdc3d3(void){pr_info("%s(): Loading\n",__func__);
DATARMNET49c17a32bc();return(0xd2d+202-0xdf7);}static void __exit
DATARMNETa343229e33(void){DATARMNET41e8cc085c();pr_info(
"\x25\x73\x28\x29\x3a\x20\x65\x78\x69\x74\x69\x6e\x67" "\n",__func__);}
module_init(DATARMNET63abbdc3d3);module_exit(DATARMNETa343229e33);

View File

@@ -0,0 +1,40 @@
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST := lahaina
RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += taro
RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += parrot
ifeq ($(call is-board-platform-in-list, $(RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_MODULE := rmnet_perf_tether.ko
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
#path from build top to the core directory
DATARMNET_CORE_PATH := datarmnet/core
RMNET_CORE_PATH := vendor/qcom/opensource/$(DATARMNET_CORE_PATH)
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
#absolute path to the build directory. Can't use $(TOP) here since
#that resolves to ., and we pass this to Kbuild, where . is different
RMNET_CORE_INC_DIR := $(abspath $(RMNET_CORE_PATH))
#pass variables down to Kbuild environment
KBUILD_OPTIONS := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS += RMNET_CORE_PATH=$(RMNET_CORE_PATH)
KBUILD_OPTIONS += DATARMNET_CORE_PATH=$(DATARMNET_CORE_PATH)
KBUILD_OPTIONS_GKI := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS_GKI += RMNET_CORE_PATH=$(RMNET_CORE_PATH)/gki
#Must be built after the core rmnet module
LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/rmnet_core.ko
LOCAL_ADDITIONAL_DEPENDENCIES_GKI := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/gki/rmnet_core.ko
include $(DLKM_DIR)/Build_external_kernelmodule.mk
endif #End of check for target
endif #End of Check for qssi target
endif #End of check for AUTO Target

View File

@@ -0,0 +1,5 @@
obj-m += rmnet_perf_tether.o
#Need core headers
ccflags-y := -I$(RMNET_CORE_INC_DIR) \
$(call cc-option,-Wno-misleading-indentation)
rmnet_perf_tether-y := rmnet_perf_tether_main.o

View File

@@ -0,0 +1,10 @@
#
# RMNET_PERF_TETHER driver
#
menuconfig RMNET_PERF_TETHER
tristate "Rmnet perf tethering support"
default m
depends on RMNET_CORE
---help---
Offload support for the RmNet driver

View File

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

View File

@@ -0,0 +1,233 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET PERF TETHER framework
*
*/
#include <linux/module.h>
#include <net/tcp.h>
#include "rmnet_descriptor.h"
#include "rmnet_map.h"
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={
"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x39\x61\x66\x39\x62\x64\x34"};
module_param_array(verinfo,charp,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
verinfo,
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
);extern void(*rmnet_perf_tether_ingress_hook)(struct tcphdr*DATARMNET2e7cc88971
,struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct iphdr*
DATARMNET86f1f2cdc9);extern void(*rmnet_perf_tether_egress_hook)(struct sk_buff*
DATARMNET543491eb0f);extern void(*rmnet_perf_tether_cmd_hook)(u8
DATARMNET07b1a05079,u64 DATARMNETcc6099cb14);struct DATARMNETf9eee4068d{u8
DATARMNETd0ef85194f;};static struct DATARMNETf9eee4068d*DATARMNET8a1e9920bf;
unsigned int configure_knob1 __read_mostly=(0xd2d+202-0xdf7);module_param(
configure_knob1,uint,(0xdb7+6665-0x261c));unsigned int knob1 __read_mostly=
(0xd2d+202-0xdf7);module_param(knob1,uint,(0xdb7+6665-0x261c));unsigned int
configure_knob2 __read_mostly=(0xd2d+202-0xdf7);module_param(configure_knob2,
uint,(0xdb7+6665-0x261c));unsigned int knob2 __read_mostly=(0xd2d+202-0xdf7);
module_param(knob2,uint,(0xdb7+6665-0x261c));static DEFINE_SPINLOCK(
DATARMNETcf56327171);
#define DATARMNETd063f2edce ((0xef7+1112-0x131d))
#define DATARMNET4c845df513 \
(const_ilog2(DATARMNETd063f2edce))
static DEFINE_HASHTABLE(DATARMNET031f18e039,DATARMNET4c845df513);struct
DATARMNETb477d446e7{struct list_head list;struct hlist_node hlist;u32 hash;
__be32 DATARMNETdfd47b00ff[(0xd20+231-0xdfc)];u32 DATARMNET4b119c4ff3;};struct
list_head DATARMNETc588a190d4=LIST_HEAD_INIT(DATARMNETc588a190d4);
#define DATARMNETc99cb98651 ((0xd26+209-0xdf6))
#define DATARMNETfc6d4bac8a ((0xd19+238-0xdfb))
#define DATARMNETc152fdcc34 ((0xec7+1129-0x1315))
#define DATARMNET7bd625a8c0 ((0xd26+209-0xdf6))
struct DATARMNETb0eda9d28e{u8 DATARMNETba8c503d04;u8 DATARMNET4f46aa107b;u8
DATARMNETc59f891d69;u8 DATARMNETecca9147fd;};static u32 DATARMNET233bccd449(
struct sk_buff*DATARMNET543491eb0f,int*DATARMNET76bafbc6ce,int
DATARMNET32b08042b9,int DATARMNET3a925295d9){__be32 DATARMNETdfd47b00ff[
(0xd20+231-0xdfc)];u32 DATARMNET5ebf661879;if(DATARMNET543491eb0f->protocol==
htons(ETH_P_IP)){if(!tcp_hdr(DATARMNET543491eb0f)->syn)goto DATARMNET1d7e728ddf;
if(DATARMNET32b08042b9){if(!tcp_hdr(DATARMNET543491eb0f)->ack)goto
DATARMNET1d7e728ddf;}else{if(tcp_hdr(DATARMNET543491eb0f)->ack)goto
DATARMNET1d7e728ddf;}DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)]=DATARMNET3a925295d9?
ip_hdr(DATARMNET543491eb0f)->daddr:ip_hdr(DATARMNET543491eb0f)->saddr;
DATARMNETdfd47b00ff[(0xd26+209-0xdf6)]=DATARMNET3a925295d9?ip_hdr(
DATARMNET543491eb0f)->saddr:ip_hdr(DATARMNET543491eb0f)->daddr;
DATARMNETdfd47b00ff[(0xd1f+216-0xdf5)]=ip_hdr(DATARMNET543491eb0f)->protocol;
DATARMNETdfd47b00ff[(0xd18+223-0xdf4)]=DATARMNET3a925295d9?tcp_hdr(
DATARMNET543491eb0f)->dest:tcp_hdr(DATARMNET543491eb0f)->source;
DATARMNETdfd47b00ff[(0xd11+230-0xdf3)]=DATARMNET3a925295d9?tcp_hdr(
DATARMNET543491eb0f)->source:tcp_hdr(DATARMNET543491eb0f)->dest;
DATARMNET5ebf661879=(0xd0a+237-0xdf2);}else if(DATARMNET543491eb0f->protocol==
htons(ETH_P_IPV6)){if(!tcp_hdr(DATARMNET543491eb0f)->syn)goto
DATARMNET1d7e728ddf;if(DATARMNET32b08042b9){if(!tcp_hdr(DATARMNET543491eb0f)->
ack)goto DATARMNET1d7e728ddf;}else{if(tcp_hdr(DATARMNET543491eb0f)->ack)goto
DATARMNET1d7e728ddf;}memcpy(&DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)],
DATARMNET3a925295d9?ipv6_hdr(DATARMNET543491eb0f)->daddr.s6_addr:ipv6_hdr(
DATARMNET543491eb0f)->saddr.s6_addr,sizeof(struct in6_addr));memcpy(&
DATARMNETdfd47b00ff[(0xd0a+237-0xdf2)],DATARMNET3a925295d9?ipv6_hdr(
DATARMNET543491eb0f)->saddr.s6_addr:ipv6_hdr(DATARMNET543491eb0f)->daddr.s6_addr
,sizeof(struct in6_addr));DATARMNETdfd47b00ff[(0xd35+210-0xdff)]=ipv6_hdr(
DATARMNET543491eb0f)->nexthdr;DATARMNETdfd47b00ff[9]=tcp_hdr(DATARMNET543491eb0f
)->dest;DATARMNETdfd47b00ff[(0xd27+224-0xdfd)]=tcp_hdr(DATARMNET543491eb0f)->
source;DATARMNET5ebf661879=(0xd20+231-0xdfc);}else{goto DATARMNET1d7e728ddf;}*
DATARMNET76bafbc6ce=(0xd26+209-0xdf6);return jhash2(DATARMNETdfd47b00ff,
DATARMNET5ebf661879,(0xd2d+202-0xdf7));DATARMNET1d7e728ddf:*DATARMNET76bafbc6ce=
(0xd2d+202-0xdf7);return(0xd2d+202-0xdf7);}static void DATARMNET9d42c8a184(
struct tcphdr*DATARMNET2e7cc88971){if(DATARMNET2e7cc88971->syn&&
DATARMNET2e7cc88971->ack){if(configure_knob1){if(knob1>65535)knob1=65535;
DATARMNET2e7cc88971->window=cpu_to_be16(knob1);}if(configure_knob2){unsigned
char*DATARMNET7b34b7b5be;u32 DATARMNET539d2ad3f2;if(knob2>TCP_MAX_WSCALE)knob2=
TCP_MAX_WSCALE;DATARMNET539d2ad3f2=DATARMNET2e7cc88971->doff*(0xd11+230-0xdf3)-
sizeof(struct tcphdr);DATARMNET7b34b7b5be=(unsigned char*)(DATARMNET2e7cc88971+
(0xd26+209-0xdf6));while(DATARMNET539d2ad3f2>(0xd2d+202-0xdf7)){int
DATARMNET969cfb9094=*DATARMNET7b34b7b5be++;int DATARMNET68a21637e9;switch(
DATARMNET969cfb9094){case TCPOPT_EOL:return;case TCPOPT_NOP:DATARMNET539d2ad3f2
--;continue;default:if(DATARMNET539d2ad3f2<(0xd1f+216-0xdf5))return;
DATARMNET68a21637e9=*DATARMNET7b34b7b5be++;if(DATARMNET68a21637e9<
(0xd1f+216-0xdf5))return;if(DATARMNET68a21637e9>DATARMNET539d2ad3f2)return;if(
DATARMNET969cfb9094==TCPOPT_WINDOW)*DATARMNET7b34b7b5be=knob2;
DATARMNET7b34b7b5be+=DATARMNET68a21637e9-(0xd1f+216-0xdf5);DATARMNET539d2ad3f2-=
DATARMNET68a21637e9;}}}}}static int DATARMNET94d0b7e790(struct
DATARMNETb477d446e7*DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f){if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){if((DATARMNET63b1a086d5->
DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)]==ip_hdr(DATARMNET543491eb0f)->saddr)&&(
DATARMNET63b1a086d5->DATARMNETdfd47b00ff[(0xd26+209-0xdf6)]==ip_hdr(
DATARMNET543491eb0f)->daddr)&&(DATARMNET63b1a086d5->DATARMNETdfd47b00ff[
(0xd1f+216-0xdf5)]==ip_hdr(DATARMNET543491eb0f)->protocol)&&(DATARMNET63b1a086d5
->DATARMNETdfd47b00ff[(0xd18+223-0xdf4)]==tcp_hdr(DATARMNET543491eb0f)->source)
&&(DATARMNET63b1a086d5->DATARMNETdfd47b00ff[(0xd11+230-0xdf3)]==tcp_hdr(
DATARMNET543491eb0f)->dest)&&(DATARMNET63b1a086d5->DATARMNET4b119c4ff3==
(0xd0a+237-0xdf2)))return(0xd2d+202-0xdf7);}else if(DATARMNET543491eb0f->
protocol==htons(ETH_P_IPV6)){if((!memcmp(&DATARMNET63b1a086d5->
DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)],ipv6_hdr(DATARMNET543491eb0f)->saddr.
s6_addr,sizeof(struct in6_addr)))&&(!memcmp(&DATARMNET63b1a086d5->
DATARMNETdfd47b00ff[(0xd0a+237-0xdf2)],ipv6_hdr(DATARMNET543491eb0f)->daddr.
s6_addr,sizeof(struct in6_addr)))&&(DATARMNET63b1a086d5->DATARMNETdfd47b00ff[
(0xd35+210-0xdff)]==ipv6_hdr(DATARMNET543491eb0f)->nexthdr)&&(
DATARMNET63b1a086d5->DATARMNETdfd47b00ff[9]==tcp_hdr(DATARMNET543491eb0f)->
source)&&(DATARMNET63b1a086d5->DATARMNETdfd47b00ff[(0xd27+224-0xdfd)]==tcp_hdr(
DATARMNET543491eb0f)->dest)&&(DATARMNET63b1a086d5->DATARMNET4b119c4ff3==
(0xd20+231-0xdfc)))return(0xd2d+202-0xdf7);}return(0xd26+209-0xdf6);}void
DATARMNETe70d5ec61a(struct tcphdr*DATARMNET2e7cc88971,struct sk_buff*
DATARMNET543491eb0f){int DATARMNET76bafbc6ce=(0xd2d+202-0xdf7);u32 hash;unsigned
long DATARMNETfb0677cc3c;struct DATARMNETb477d446e7*DATARMNET63b1a086d5,*
DATARMNET0386f6f82a=NULL;if(!configure_knob1&&!configure_knob2)return;hash=
DATARMNET233bccd449(DATARMNET543491eb0f,&DATARMNET76bafbc6ce,(0xd26+209-0xdf6),
(0xd2d+202-0xdf7));if(!DATARMNET76bafbc6ce)return;spin_lock_irqsave(&
DATARMNETcf56327171,DATARMNETfb0677cc3c);hash_for_each_possible(
DATARMNET031f18e039,DATARMNET63b1a086d5,hlist,hash){if(!DATARMNET94d0b7e790(
DATARMNET63b1a086d5,DATARMNET543491eb0f)){DATARMNET0386f6f82a=
DATARMNET63b1a086d5;break;}DATARMNET0386f6f82a=NULL;}if(!DATARMNET0386f6f82a){
spin_unlock_irqrestore(&DATARMNETcf56327171,DATARMNETfb0677cc3c);return;}if(
DATARMNET63b1a086d5){hash_del(&DATARMNET63b1a086d5->hlist);list_add_tail(&
DATARMNET63b1a086d5->list,&DATARMNETc588a190d4);}spin_unlock_irqrestore(&
DATARMNETcf56327171,DATARMNETfb0677cc3c);DATARMNET9d42c8a184(DATARMNET2e7cc88971
);}static void DATARMNET9eb31df630(struct DATARMNETb477d446e7*
DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f){if(DATARMNET543491eb0f->
protocol==htons(ETH_P_IP)){DATARMNET63b1a086d5->DATARMNETdfd47b00ff[
(0xd2d+202-0xdf7)]=ip_hdr(DATARMNET543491eb0f)->daddr;DATARMNET63b1a086d5->
DATARMNETdfd47b00ff[(0xd26+209-0xdf6)]=ip_hdr(DATARMNET543491eb0f)->saddr;
DATARMNET63b1a086d5->DATARMNETdfd47b00ff[(0xd1f+216-0xdf5)]=ip_hdr(
DATARMNET543491eb0f)->protocol;DATARMNET63b1a086d5->DATARMNETdfd47b00ff[
(0xd18+223-0xdf4)]=tcp_hdr(DATARMNET543491eb0f)->dest;DATARMNET63b1a086d5->
DATARMNETdfd47b00ff[(0xd11+230-0xdf3)]=tcp_hdr(DATARMNET543491eb0f)->source;
DATARMNET63b1a086d5->DATARMNET4b119c4ff3=(0xd0a+237-0xdf2);}else if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){memcpy(&DATARMNET63b1a086d5->
DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)],ipv6_hdr(DATARMNET543491eb0f)->daddr.
s6_addr,sizeof(struct in6_addr));memcpy(&DATARMNET63b1a086d5->
DATARMNETdfd47b00ff[(0xd0a+237-0xdf2)],ipv6_hdr(DATARMNET543491eb0f)->saddr.
s6_addr,sizeof(struct in6_addr));DATARMNET63b1a086d5->DATARMNETdfd47b00ff[
(0xd35+210-0xdff)]=ipv6_hdr(DATARMNET543491eb0f)->nexthdr;DATARMNET63b1a086d5->
DATARMNETdfd47b00ff[9]=tcp_hdr(DATARMNET543491eb0f)->dest;DATARMNET63b1a086d5->
DATARMNETdfd47b00ff[(0xd27+224-0xdfd)]=tcp_hdr(DATARMNET543491eb0f)->source;
DATARMNET63b1a086d5->DATARMNET4b119c4ff3=(0xd20+231-0xdfc);}}void
DATARMNET6ab362e985(struct sk_buff*DATARMNET543491eb0f){int DATARMNET76bafbc6ce=
(0xd2d+202-0xdf7);u32 hash;unsigned long DATARMNETfb0677cc3c;struct
DATARMNETb477d446e7*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;
int DATARMNETae0201901a;struct net_device*dev;if(!configure_knob1&&!
configure_knob2)return;if(!DATARMNET543491eb0f->skb_iif)return;dev=
__dev_get_by_index(&init_net,DATARMNET543491eb0f->skb_iif);if(!dev)return;hash=
DATARMNET233bccd449(DATARMNET543491eb0f,&DATARMNET76bafbc6ce,(0xd2d+202-0xdf7),
(0xd26+209-0xdf6));if(!DATARMNET76bafbc6ce)return;spin_lock_irqsave(&
DATARMNETcf56327171,DATARMNETfb0677cc3c);DATARMNET63b1a086d5=
list_first_entry_or_null(&DATARMNETc588a190d4,struct DATARMNETb477d446e7,list);
if(DATARMNET63b1a086d5){list_del(&DATARMNET63b1a086d5->list);DATARMNET63b1a086d5
->hash=hash;DATARMNET9eb31df630(DATARMNET63b1a086d5,DATARMNET543491eb0f);
hash_add(DATARMNET031f18e039,&DATARMNET63b1a086d5->hlist,DATARMNET63b1a086d5->
hash);}else{hash_for_each_safe(DATARMNET031f18e039,DATARMNETae0201901a,
DATARMNET0386f6f82a,DATARMNET63b1a086d5,hlist){hash_del(&DATARMNET63b1a086d5->
hlist);DATARMNET63b1a086d5->hash=hash;DATARMNET9eb31df630(DATARMNET63b1a086d5,
DATARMNET543491eb0f);hash_add(DATARMNET031f18e039,&DATARMNET63b1a086d5->hlist,
DATARMNET63b1a086d5->hash);break;}}spin_unlock_irqrestore(&DATARMNETcf56327171,
DATARMNETfb0677cc3c);}void DATARMNET136e008d70(u8 DATARMNET07b1a05079,u64
DATARMNETcc6099cb14){struct net_device*dev=dev_get_by_name(&init_net,
"rmnet_ipa0");struct sk_buff*DATARMNET543491eb0f;if(!dev)return;if(
DATARMNET07b1a05079==DATARMNETc99cb98651){struct
rmnet_map_control_command_header*DATARMNETb87c07b92a;struct DATARMNETb0eda9d28e*
DATARMNETcd32395e82;struct rmnet_map_header*DATARMNETf937c77d8f;
DATARMNET543491eb0f=alloc_skb((0xeb7+1158-0x132d),GFP_ATOMIC);if(!
DATARMNET543491eb0f)goto DATARMNETaabe3a05f8;skb_put(DATARMNET543491eb0f,
(0xeb7+1158-0x132d));memset(DATARMNET543491eb0f->data,(0xd2d+202-0xdf7),
(0xeb7+1158-0x132d));DATARMNETf937c77d8f=(struct rmnet_map_header*)
DATARMNET543491eb0f->data;DATARMNETf937c77d8f->cd_bit=(0xd26+209-0xdf6);
DATARMNETf937c77d8f->pkt_len=htons(DATARMNETfc6d4bac8a);DATARMNETb87c07b92a=(
struct rmnet_map_control_command_header*)(DATARMNET543491eb0f->data+sizeof(*
DATARMNETf937c77d8f));DATARMNETb87c07b92a->command_name=DATARMNETc152fdcc34;
DATARMNETcd32395e82=(struct DATARMNETb0eda9d28e*)(DATARMNET543491eb0f->data+
sizeof(*DATARMNETf937c77d8f)+sizeof(*DATARMNETb87c07b92a));DATARMNETcd32395e82->
DATARMNETba8c503d04=DATARMNET7bd625a8c0;DATARMNETcd32395e82->DATARMNETc59f891d69
=!DATARMNETcc6099cb14;DATARMNET543491eb0f->dev=dev;DATARMNET543491eb0f->protocol
=htons(ETH_P_MAP);dev_queue_xmit(DATARMNET543491eb0f);}DATARMNETaabe3a05f8:
dev_put(dev);}void DATARMNET5fe3ffe2ab(void){rcu_assign_pointer(
rmnet_perf_tether_ingress_hook,DATARMNETe70d5ec61a);rcu_assign_pointer(
rmnet_perf_tether_egress_hook,DATARMNET6ab362e985);rcu_assign_pointer(
rmnet_perf_tether_cmd_hook,DATARMNET136e008d70);}void DATARMNET229327cbd2(void){
rcu_assign_pointer(rmnet_perf_tether_ingress_hook,NULL);rcu_assign_pointer(
rmnet_perf_tether_egress_hook,NULL);rcu_assign_pointer(
rmnet_perf_tether_cmd_hook,NULL);}static int DATARMNETaa549ce89a(void){int
DATARMNETefc9df3df2;DATARMNET8a1e9920bf=kzalloc(sizeof(*DATARMNET8a1e9920bf),
GFP_KERNEL);if(!DATARMNET8a1e9920bf){pr_err(
"\x25\x73\x28\x29\x3a\x20\x52\x65\x73\x6f\x75\x72\x63\x65\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);return-(0xd26+209-0xdf6);}DATARMNET8a1e9920bf->DATARMNETd0ef85194f++;
for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);DATARMNETefc9df3df2<
DATARMNETd063f2edce;DATARMNETefc9df3df2++){struct DATARMNETb477d446e7*
DATARMNET63b1a086d5;DATARMNET63b1a086d5=kzalloc(sizeof(*DATARMNET63b1a086d5),
GFP_ATOMIC);if(!DATARMNET63b1a086d5)continue;INIT_LIST_HEAD(&DATARMNET63b1a086d5
->list);INIT_HLIST_NODE(&DATARMNET63b1a086d5->hlist);list_add_tail(&
DATARMNET63b1a086d5->list,&DATARMNETc588a190d4);}DATARMNET5fe3ffe2ab();return
(0xd2d+202-0xdf7);}static void DATARMNET2b8220b2f3(void){struct
DATARMNETb477d446e7*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;
int DATARMNETae0201901a;hash_for_each_safe(DATARMNET031f18e039,
DATARMNETae0201901a,DATARMNET0386f6f82a,DATARMNET63b1a086d5,hlist){hash_del(&
DATARMNET63b1a086d5->hlist);kfree(DATARMNET63b1a086d5);}}static void
DATARMNET66219231cc(void){struct DATARMNETb477d446e7*DATARMNET63b1a086d5,*
DATARMNET2133db01db;list_for_each_entry_safe(DATARMNET63b1a086d5,
DATARMNET2133db01db,&DATARMNETc588a190d4,list){list_del(&DATARMNET63b1a086d5->
list);kfree(DATARMNET63b1a086d5);}}static void DATARMNET3ece352201(void){
DATARMNET229327cbd2();DATARMNET66219231cc();DATARMNET2b8220b2f3();kfree(
DATARMNET8a1e9920bf);DATARMNET8a1e9920bf=NULL;}static int DATARMNET6e31e62d2e(
struct notifier_block*DATARMNET272c159b3c,unsigned long DATARMNET4abd997295,void
*DATARMNET3f254bae11){struct net_device*DATARMNET00dcb79bc4=
netdev_notifier_info_to_dev(DATARMNET3f254bae11);int DATARMNETb14e52a504;(void)
DATARMNET272c159b3c;if(!DATARMNET00dcb79bc4||strncmp(DATARMNET00dcb79bc4->name,
"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd27+224-0xdfd)))goto
DATARMNETaabe3a05f8;switch(DATARMNET4abd997295){case NETDEV_REGISTER:if(
DATARMNET8a1e9920bf){DATARMNET8a1e9920bf->DATARMNETd0ef85194f++;goto
DATARMNETaabe3a05f8;}pr_info(
"\x25\x73\x28\x29\x3a\x20\x49\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x6f\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x25\x73" "\n"
,__func__,DATARMNET00dcb79bc4->name);DATARMNETb14e52a504=DATARMNETaa549ce89a();
if(DATARMNETb14e52a504){pr_err(
"\x25\x73\x28\x29\x3a\x20\x49\x6e\x69\x74\x69\x61\x6c\x69\x7a\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);goto DATARMNETaabe3a05f8;}break;case NETDEV_UNREGISTER:if(!
DATARMNET8a1e9920bf)goto DATARMNETaabe3a05f8;if(--DATARMNET8a1e9920bf->
DATARMNETd0ef85194f)goto DATARMNETaabe3a05f8;pr_info(
"\x25\x73\x28\x29\x3a\x20\x55\x6e\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x6f\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x25\x73" "\n"
,__func__,DATARMNET00dcb79bc4->name);DATARMNET3ece352201();break;}
DATARMNETaabe3a05f8:return NOTIFY_DONE;}static struct notifier_block
DATARMNETd9d8382fca={.notifier_call=DATARMNET6e31e62d2e,.priority=
(0xd18+223-0xdf4),};static int __init DATARMNET5e4be08a32(void){pr_info(
"\x25\x73\x28\x29\x3a\x20\x4c\x6f\x61\x64\x69\x6e\x67" "\n",__func__);return
register_netdevice_notifier(&DATARMNETd9d8382fca);}static void __exit
DATARMNET50e3d76d94(void){pr_info(
"\x25\x73\x28\x29\x3a\x20\x65\x78\x69\x74\x69\x6e\x67" "\n",__func__);
unregister_netdevice_notifier(&DATARMNETd9d8382fca);}module_init(
DATARMNET5e4be08a32);module_exit(DATARMNET50e3d76d94);

View File

@@ -0,0 +1,22 @@
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_SCH_DLKM_PLATFORMS_LIST := taro
RMNET_SCH_DLKM_PLATFORMS_LIST += parrot
ifeq ($(call is-board-platform-in-list, $(RMNET_SCH_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_MODULE := rmnet_sch.ko
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
include $(DLKM_DIR)/Build_external_kernelmodule.mk
endif #End of check for target
endif #End of Check for qssi target
endif #End of check for AUTO Target

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,40 @@
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_SHS_DLKM_PLATFORMS_LIST := lahaina
RMNET_SHS_DLKM_PLATFORMS_LIST += taro
RMNET_SHS_DLKM_PLATFORMS_LIST += parrot
ifeq ($(call is-board-platform-in-list, $(RMNET_SHS_DLKM_PLATFORMS_LIST)),true)
#Make file to create RMNET_SHS DLKM
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS := -Wno-macro-redefined -Wno-unused-function -Wall -Werror
LOCAL_CLANG :=true
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_MODULE := rmnet_shs.ko
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
#path from build top to the core directory
DATARMNET_CORE_PATH := datarmnet/core
RMNET_CORE_PATH := vendor/qcom/opensource/$(DATARMNET_CORE_PATH)
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
#absolute path to the build directory. Can't use $(TOP) here since
#that resolves to ., and we pass this to Kbuild, where . is different
RMNET_CORE_INC_DIR := $(abspath $(RMNET_CORE_PATH))
#pass variables down to Kbuild environment
KBUILD_OPTIONS := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS += RMNET_CORE_PATH=$(RMNET_CORE_PATH)
KBUILD_OPTIONS += DATARMNET_CORE_PATH=$(DATARMNET_CORE_PATH)
KBUILD_OPTIONS_GKI := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR)
KBUILD_OPTIONS_GKI += RMNET_CORE_PATH=$(RMNET_CORE_PATH)/gki
#Must be built after the core rmnet module
LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/rmnet_core.ko
LOCAL_ADDITIONAL_DEPENDENCIES_GKI := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/gki/rmnet_core.ko
include $(DLKM_DIR)/Build_external_kernelmodule.mk
endif #End of Check for target
endif #End of Check for qssi target

View File

@@ -0,0 +1,12 @@
obj-m += rmnet_shs.o
#Need core headers
ccflags-y := -I$(RMNET_CORE_INC_DIR) \
$(call cc-option,-Wno-misleading-indentation)
rmnet_shs-y := rmnet_shs_config.o \
rmnet_shs_main.o \
rmnet_shs_common.o \
rmnet_shs_wq.o \
rmnet_shs_freq.o \
rmnet_shs_wq_mem.o \
rmnet_shs_wq_genl.o \
rmnet_shs_modules.o

View File

@@ -0,0 +1,10 @@
#
# RMNET_SHS driver
#
menuconfig RMNET_SHS
tristate "Rmnet SHS driver"
default m
depends on RMNET_CORE
---help---
performance mode of rmnet driver

View File

@@ -0,0 +1,15 @@
KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build
KBUILD_OPTIONS := RMNET_SHS_ROOT=$(PWD)
KBUILD_OPTIONS += MODNAME?=rmnet_shs
KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_PATH)/Module.symvers
M ?= $(shell pwd)
all:
$(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS) $(KBUILD_EXTRA_SYMBOLS)
modules_install:
$(MAKE) INSTALL_MOD_STRIP=1 -C $(KERNEL_SRC) M=$(M) modules_install
clean:
$(MAKE) -C $(KERNEL_SRC) M=$(M) clean

View File

@@ -0,0 +1,165 @@
/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <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_private.h"
#include "rmnet_handlers.h"
#include "rmnet_trace.h"
#include "qmi_rmnet.h"
#define DATARMNETe603c3a4b3 DATARMNETbfe1afe595
#define DATARMNET25437d35fd 9
#define DATARMNET4899358462 (0xeb7+1101-0x12f5)
#define DATARMNET401583e606 (0xd11+230-0xdf3)
#define DATARMNETc6782fed88 (0xd35+210-0xdff)
#define DATARMNETbc3c416b77 (0xbf7+4405-0x1c3c)
#define DATARMNET9273f84bf1 (0xeb7+1101-0x12f5)
#define DATARMNET12f3a261a0 ((0xc07+4861-0x1e3c))
#define DATARMNET2edff26954 (0xd2d+202-0xdf7)
#define DATARMNET752465942a (0xbf7+4364-0x1c04)
#define DATARMNETbfe31ef643 (0xc07+1233-0xe1c)
#define DATARMNET7a815512d3 (0xef7+1100-0x12fd)
#define DATARMNET270b564b55 (0xd35+210-0xdff)
#define DATARMNET1c2d76f636 (0xf07+658-0x110d)
#define DATARMNET2922c89d50 (0xd1f+216-0xdf5)
#define DATARMNET015fb2ba0e(...) \
do { if (DATARMNET756bdd424a) trace_rmnet_shs_err(__VA_ARGS__); } while (\
(0xd2d+202-0xdf7))
#define DATARMNET52de1f3dc0(...) \
do { if (DATARMNET756bdd424a) trace_rmnet_shs_high(__VA_ARGS__); } while (\
(0xd2d+202-0xdf7))
#define DATARMNETda96251102(...) \
do { if (DATARMNET756bdd424a) trace_rmnet_shs_low(__VA_ARGS__); } while (\
(0xd2d+202-0xdf7))
#define DATARMNETd82a2ed45e 204800
#define DATARMNETc668d192f2 (0xec7+1093-0x12f5)
#define DATARMNETb38cb72105 100000
#define DATARMNETfbee9e182e 100000
#define DATARMNETac6d632788 (80000*DATARMNETc668d192f2)
#define DATARMNET243c638e7d 210000
#define DATARMNET03fd42433e (210000*DATARMNETc668d192f2)
#define DATARMNET9bc9e0cac3 (0xd2d+202-0xdf7)
#define DATARMNET22feab5726 40000
#define DATARMNET4298ee0d38 (40000*DATARMNETc668d192f2)
#define DATARMNET3a9bca9cba 20000
#define DATARMNETcdee526004 (DATARMNET243c638e7d / (0xd1f+216-0xdf5))
struct DATARMNETa6f2d499b2{struct hrtimer DATARMNET758a55f103;struct work_struct
DATARMNET33110a3ff5;struct timespec64 DATARMNET251b97a380;int
DATARMNETe61d62310f;u8 DATARMNET42c3ecbd5e;};struct DATARMNETa6b20d7e8b{struct
hrtimer DATARMNET6fd692fc7a;struct hrtimer DATARMNET645fb3b468;struct hrtimer
hrtimer_wake;struct rmnet_map_dl_ind DATARMNET08dbb5ab35;struct qmi_rmnet_ps_ind
rmnet_idl_ind_cb;struct rmnet_port*port;struct DATARMNETa6f2d499b2
DATARMNET132b9c7dc4[DATARMNETc6782fed88];u64 DATARMNETbd3a0ee74e[
DATARMNETc6782fed88];long DATARMNETc252a1f55d;long DATARMNETa2e32cdd3a;u16
DATARMNET64bb8a8f57;u8 DATARMNET9c869c1ec2;u8 DATARMNETd9cfd2812b;u8
DATARMNETf5ab31b9b0;u8 DATARMNET34097703c8;u8 DATARMNETfc89d842ae;u8
DATARMNET6fe0db3a49;u8 DATARMNETba3f7a11ef;u8 map_mask;u8 map_len;u8
DATARMNET5c24e1df05;u8 DATARMNET6625085b71;u16 DATARMNETfeee6933fc;u8
DATARMNET7d667e828e;u8 DATARMNETe250463eef;ktime_t DATARMNETdd3caf9200;struct
wakeup_source*ws;};struct DATARMNETa034b2e60c{struct sk_buff*head;struct sk_buff
*tail;u64 DATARMNETbaa5765693;u32 DATARMNET6215127f48;u32 DATARMNET35234676d4;};
struct DATARMNET63d7680df2{union{struct iphdr DATARMNETac9bbaad7c;struct ipv6hdr
DATARMNET1688a97aa4;}ip_hdr;union{struct tcphdr tp;struct udphdr up;}
DATARMNETe33b41dad9;struct list_head DATARMNET04c88b8191;struct net_device*dev;
struct DATARMNET6c78e47d24*DATARMNET341ea38662;struct DATARMNETa034b2e60c
DATARMNETae4b27456e;struct hlist_node list;u64 DATARMNET11930c5df8;u64
DATARMNETa8940e4a7b;u64 DATARMNET2594c418db;u64 DATARMNET3ecedac168;u64
DATARMNETce5f56eab9;u32 queue_head;u32 hash;u16 map_index;u16 map_cpu;u16
DATARMNETfbbec4c537;u16 DATARMNETa59ce1fd2d;u8 DATARMNET85c698ec34;u16
DATARMNET0371465875;u16 DATARMNET1e9d25d9ff;u8 DATARMNETa1099c74fe;u8
DATARMNET6250e93187;u8 mux_id;};enum DATARMNET156842d55e{DATARMNET7bc926fdbe,
DATARMNETb3e3b2a799,DATARMNET8dcf06727b};enum DATARMNET8463cba7c7{
DATARMNETc3bce05be2,DATARMNET14067f0be4,DATARMNET28bb261646,DATARMNET67b67dc88f,
DATARMNET0efbbe2821,DATARMNETa4267dfd8a,DATARMNETf13db5ace8,DATARMNETb6eae1e097,
DATARMNET0e398136dc,DATARMNET975060d6b5,DATARMNET7f401828b3,DATARMNET6ea8a58f4e,
DATARMNETcf84373518,DATARMNETeccb61ebc3};enum DATARMNETf355367410{
DATARMNET557ff68d74,DATARMNET1c55e5fdb1,DATARMNET4ab5a31d0c,DATARMNETde2dd86539}
;enum DATARMNET6c7f7f22c7{DATARMNETe35e238437,DATARMNET0d61981934};enum
DATARMNET3f3bc61c03{DATARMNETf5157a9b85,DATARMNET709b59b0e6,DATARMNET99db6e7d86,
DATARMNETe3c02ddaeb,DATARMNET394acaf558,DATARMNETef8cbfa62f,DATARMNETe6e77f9f03,
DATARMNETecdf13872c,DATARMNETd1687e0776,DATARMNET1828d69e96,DATARMNET40ceff078e,
DATARMNET42b73d0f3f,DATARMNETb8fe2c0e64,DATARMNET72db8b9bac,DATARMNET33a9d4759f,
DATARMNET46966e7828,DATARMNETa1f9420686,DATARMNET54b67b8a75,DATARMNETac729c3d29,
DATARMNET6533f70c87,DATARMNET6f6efeaf61,DATARMNETcc0ef52ccb,DATARMNETf8de7cb644,
DATARMNETdd6bf3de6b,DATARMNETfeaf903a28,DATARMNET767c76ca08,DATARMNET048727d1d9,
DATARMNET43405942ed,DATARMNET2e68f4bd9f,DATARMNET0fa3506473,DATARMNETbb641cd339,
DATARMNETf352684b06,DATARMNETf3110711cb};enum DATARMNET269385986c{
DATARMNET5c4c7e20f2,DATARMNET95c85e6fe1,DATARMNET27fb9a225d,DATARMNETbbf8fe40aa,
DATARMNETa7d45fb6d4,DATARMNET0acd775aa8,DATARMNET2217440c2e,DATARMNET6aecae7be2,
DATARMNETf3dfa53867,DATARMNET0492ddb5d5};enum DATARMNETd751e3ec84{
DATARMNETcc3c294f38,DATARMNET802083239a,DATARMNETed69052342,DATARMNETcfb1764a91,
DATARMNET84a9e136b8,DATARMNET01bf75e27c,DATARMNETd45c383019,DATARMNETbb5757569c,
DATARMNETc8058e2cff,DATARMNET04dac3a62b,DATARMNETdf6ecde77a,DATARMNET94658618fc,
DATARMNET0d07041c32,DATARMNET3cef75f6cd};struct DATARMNETfd554c7eac{struct
sk_buff*skb;struct DATARMNETfd554c7eac*next;};struct DATARMNET37ef896af8{struct
work_struct DATARMNET33110a3ff5;struct rmnet_port*port;};struct
DATARMNETe600c5b727{struct list_head DATARMNET3dc4262f53;u32 DATARMNETae196235f2
;u32 qtail;u32 DATARMNET96571b28de;u32 DATARMNET4133fc9428;u32 seg;u8
DATARMNETef866573e0;u8 DATARMNET1e1f197118;};enum DATARMNETf0a06dc55a{
DATARMNET1790979ccf,DATARMNETd5eb6398da,DATARMNETcd24fca747,DATARMNETe50d824af7,
DATARMNET6b317c4c73,DATARMNET75d955c408,DATARMNETf3aaad06eb,DATARMNET720469c0a9,
DATARMNET4510abc30d,DATARMNET23f8730007,};enum DATARMNETc1d9e38720{
DATARMNET0b15fd8b54,DATARMNET5b5927fd7e,DATARMNETba3049005f};enum
DATARMNET4f392b0182{DATARMNET72cb00fdc0,DATARMNET443dab7031,DATARMNET96db46917c,
DATARMNET89958f9b63,DATARMNET6d7a3a033a,DATARMNET16a68afc17,DATARMNET916f444e0a,
DATARMNETe9a79499ac,DATARMNET89f4779456,DATARMNETa94c7e31a0,DATARMNET116c96c236,
DATARMNET9da2ea4f74,DATARMNETe55953a107,DATARMNET43225b7a7c,DATARMNET4dbb6812b5,
DATARMNETbf80eada88,DATARMNET26438cb654,DATARMNETa6d85c8497,DATARMNET650a0ef6e1,
DATARMNET3e031f1532,DATARMNET9f467b9ce4,DATARMNETc154fd2d48,DATARMNET5874e1ecd7,
DATARMNET4f09dc5794,DATARMNET11a1fd3964,DATARMNETf2fc7954d4,DATARMNET4e91ddb48a,
DATARMNET16befe9635,DATARMNET856c53293b,DATARMNET7e63a08ad4,DATARMNETf7c8c7aa3f,
DATARMNET08b6defcff,DATARMNETf5c836f9ae,DATARMNETdd870ee64c,DATARMNETf730f80f06,
DATARMNET998c6de143,DATARMNETe7afce2292,DATARMNETe0fee0991a,DATARMNETbc2a6aea12,
DATARMNETde91850c28,DATARMNET237e7bd5f6,DATARMNETf16e78412b,DATARMNET83147a2e7d,
DATARMNET816bb1e327,DATARMNETf311f20c00,DATARMNETa2bd301af7,DATARMNET99640d60f7,
DATARMNET562b7d32a8,DATARMNET0808844559,DATARMNET5410705c1c,DATARMNET022082b219,
DATARMNETe4ee0d2636,DATARMNET23b8465daf,DATARMNET052f49b190,DATARMNETfb753e521e,
DATARMNET64b02f64c6,DATARMNET576793621a,DATARMNETc262b24b02,DATARMNET4ebbc01257,
DATARMNET595eed6ea2,DATARMNETde090e8314,DATARMNETa593d87b38,DATARMNET8a2898988b,
DATARMNET0709c9f764,};extern struct DATARMNET37ef896af8 DATARMNET1731db288b;
extern spinlock_t DATARMNET3764d083f0;extern spinlock_t DATARMNETec2a4f5211;
extern spinlock_t DATARMNETfbdbab2ef6;extern struct hlist_head
DATARMNETe603c3a4b3[(0xd26+209-0xdf6)<<(DATARMNET25437d35fd)];extern int(*
rmnet_shs_skb_entry)(struct sk_buff*skb,struct rmnet_shs_clnt_s*
DATARMNET9e820fbfe3);extern int(*rmnet_shs_switch)(struct sk_buff*skb,struct
rmnet_shs_clnt_s*DATARMNET9e820fbfe3);int DATARMNET362b15f941(u16 cpu);void
DATARMNETeacad8334e(void);void DATARMNETe1f95274f1(void);unsigned int
DATARMNET02cdd9b125(void);int DATARMNET310c3eb16e(u8 mask);int
DATARMNETe02152c351(struct DATARMNET63d7680df2*DATARMNET63b1a086d5,u8
DATARMNETd87669e323,u8 DATARMNET5447204733);void DATARMNET78bb6be330(struct
rmnet_map_dl_ind_hdr*dlhdr,struct rmnet_map_control_command_header*qcmd);void
DATARMNETf61cd23b90(struct rmnet_map_dl_ind_trl*dltrl,struct
rmnet_map_control_command_header*qcmd);void DATARMNET7ed4cef8a3(struct
rmnet_map_dl_ind_hdr*dlhdr);void DATARMNET613a81eca8(struct rmnet_map_dl_ind_trl
*dltrl);int DATARMNET756778f14f(struct sk_buff*skb,struct rmnet_shs_clnt_s*
DATARMNET9e820fbfe3);void DATARMNETa4bf9fbf64(u8 DATARMNET665469cfb6,u8
DATARMNET5447204733);void DATARMNETde8ee16f92(struct DATARMNET63d7680df2*
DATARMNET63b1a086d5);void DATARMNET45d8cdb224(struct net_device*dev,struct
net_device*vnd);void DATARMNET9297340f58(unsigned int DATARMNET9f4bc49c6f);void
DATARMNET7f1d9480cb(void*port);void DATARMNETa4bd2ef52c(void*port);void
DATARMNETe074a09496(void);void DATARMNET23c7ddd780(struct DATARMNET63d7680df2*
DATARMNET63b1a086d5,u8 DATARMNET5447204733);void DATARMNET349c3a0cab(u16 map_cpu
,bool DATARMNETb639f6e1b1);u32 DATARMNETadb0248bd4(u8 DATARMNET42a992465f);
#endif

View File

@@ -0,0 +1,173 @@
/* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include "rmnet_shs.h"
#include "rmnet_shs_wq.h"
#include "rmnet_shs_modules.h"
#define DATARMNET48a89fcc16 (0xd26+209-0xdf6)
#define DATARMNETbfe901fc62 (0xd2d+202-0xdf7)
void DATARMNET4095253347(struct DATARMNET9b44b71ee9*ep){trace_rmnet_shs_wq_low(
DATARMNET5e796836fb,DATARMNET7fc202c4c1,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),ep,NULL);list_add(&ep->DATARMNET0763436b8d
,&DATARMNET30a3e83974);}void DATARMNETf7d317ed55(struct DATARMNET9b44b71ee9*ep){
trace_rmnet_shs_wq_low(DATARMNET5e796836fb,DATARMNET7643ab0f49,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),ep,
NULL);list_del_init(&ep->DATARMNET0763436b8d);}void DATARMNET36e5e526fa(struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a){unsigned long flags;
trace_rmnet_shs_wq_low(DATARMNET238d08f0df,DATARMNET3f2d29c867,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
DATARMNETd2a694d52a,NULL);spin_lock_irqsave(&DATARMNETfbdbab2ef6,flags);list_add
(&DATARMNETd2a694d52a->DATARMNET6de26f0feb,&DATARMNET9825511866);
spin_unlock_irqrestore(&DATARMNETfbdbab2ef6,flags);}void DATARMNET2fe780019f(
struct DATARMNET6c78e47d24*DATARMNETd2a694d52a){unsigned long flags;
trace_rmnet_shs_wq_low(DATARMNET238d08f0df,DATARMNET5a3ea29c57,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
DATARMNETd2a694d52a,NULL);spin_lock_irqsave(&DATARMNETfbdbab2ef6,flags);
list_del_init(&DATARMNETd2a694d52a->DATARMNET6de26f0feb);spin_unlock_irqrestore(
&DATARMNETfbdbab2ef6,flags);}void DATARMNETb4a6870b3b(struct DATARMNET6c78e47d24
*DATARMNETd2a694d52a){unsigned long flags;trace_rmnet_shs_wq_low(
DATARMNET92b282b12c,DATARMNETdb9197631d,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL);
spin_lock_irqsave(&DATARMNETfbdbab2ef6,flags);list_del_init(&DATARMNETd2a694d52a
->DATARMNET742867e97a);spin_unlock_irqrestore(&DATARMNETfbdbab2ef6,flags);}void
DATARMNETd8a6375e9c(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct
list_head*head){unsigned long flags;trace_rmnet_shs_wq_low(DATARMNET92b282b12c,
DATARMNET4b58d51c6a,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL);spin_lock_irqsave(&
DATARMNETfbdbab2ef6,flags);list_add(&DATARMNETd2a694d52a->DATARMNET742867e97a,
head);spin_unlock_irqrestore(&DATARMNETfbdbab2ef6,flags);}void
DATARMNET9914e9761e(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct
list_head*head){unsigned long flags;trace_rmnet_shs_wq_low(DATARMNET92b282b12c,
DATARMNETfd4d416388,DATARMNETd2a694d52a->DATARMNET7c894c2f8f,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL);
spin_lock_irqsave(&DATARMNETfbdbab2ef6,flags);list_move(&DATARMNETd2a694d52a->
DATARMNET742867e97a,head);spin_unlock_irqrestore(&DATARMNETfbdbab2ef6,flags);}
void DATARMNET6bf538fa23(void){spin_lock_bh(&DATARMNETec2a4f5211);}void
DATARMNETaea4c85748(void){spin_unlock_bh(&DATARMNETec2a4f5211);}void
DATARMNETe46c480d71(void){u8 mask=DATARMNET752465942a;u8 DATARMNET998de79791=
(0xd2d+202-0xdf7);struct DATARMNET9b44b71ee9*ep;list_for_each_entry(ep,&
DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;if
(ep->DATARMNET9fb369ce5f){mask&=ep->DATARMNET9fb369ce5f;DATARMNET998de79791=
(0xd26+209-0xdf6);}}if(!DATARMNET998de79791){DATARMNETecc0627c70.map_mask=
(0xd2d+202-0xdf7);DATARMNETecc0627c70.map_len=(0xd2d+202-0xdf7);return;}else if(
DATARMNETecc0627c70.map_mask!=mask){DATARMNETecc0627c70.map_mask=mask;
DATARMNETecc0627c70.map_len=DATARMNET310c3eb16e(mask);pr_info(
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x3a\x20\x20\x6d\x61\x73\x6b\x3a\x20\x30\x78\x25\x78\x20\x6d\x61\x70\x6c\x65\x6e\x3a\x20\x25\x64"
,DATARMNETecc0627c70.map_mask,DATARMNETecc0627c70.map_len);}}void
DATARMNETde8ee16f92(struct DATARMNET63d7680df2*DATARMNET63b1a086d5){
DATARMNETda96251102(DATARMNETd5eb6398da,DATARMNETe9a79499ac,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);
list_del_init(&DATARMNET63b1a086d5->DATARMNET04c88b8191);DATARMNET349c3a0cab(
DATARMNET63b1a086d5->map_cpu,DATARMNETbfe901fc62);}void DATARMNET3e37ad2816(
struct DATARMNET63d7680df2*DATARMNET63b1a086d5,struct list_head*
DATARMNET4d030eb9b5){DATARMNETda96251102(DATARMNETd5eb6398da,DATARMNET16a68afc17
,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
NULL,NULL);list_add(&DATARMNET63b1a086d5->DATARMNET04c88b8191,
DATARMNET4d030eb9b5);DATARMNET349c3a0cab(DATARMNET63b1a086d5->map_cpu,
DATARMNET48a89fcc16);}void DATARMNETe102b3a798(struct DATARMNET63d7680df2*
DATARMNET63b1a086d5,struct list_head*DATARMNET4d030eb9b5,int DATARMNETa7a5705ab0
){DATARMNETda96251102(DATARMNETd5eb6398da,DATARMNET916f444e0a,(0x16e8+787-0xc0c)
,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);list_move(&
DATARMNET63b1a086d5->DATARMNET04c88b8191,DATARMNET4d030eb9b5);
DATARMNET349c3a0cab(DATARMNET63b1a086d5->map_cpu,DATARMNET48a89fcc16);
DATARMNET349c3a0cab((u16)DATARMNETa7a5705ab0,DATARMNETbfe901fc62);}void
DATARMNET4bde88919f(u8 cpu,int count){if(cpu<DATARMNETc6782fed88){
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 DATARMNET3c489db64a(void*priv,struct list_head*DATARMNET9cf7d31274,
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,struct list_head*
DATARMNET9cf7d31274,struct list_head*DATARMNET5444bd3b6f){struct
DATARMNET09a412b1c6*DATARMNET40e125212a;struct DATARMNET09a412b1c6*
DATARMNETdcaff77beb;if(!DATARMNET9cf7d31274||!DATARMNET5444bd3b6f)return
(0xd2d+202-0xdf7);DATARMNET40e125212a=list_entry(DATARMNET9cf7d31274,struct
DATARMNET09a412b1c6,DATARMNETd502c0412a);DATARMNETdcaff77beb=list_entry(
DATARMNET5444bd3b6f,struct DATARMNET09a412b1c6,DATARMNETd502c0412a);if(
DATARMNET40e125212a->DATARMNET253a9fc708>DATARMNETdcaff77beb->
DATARMNET253a9fc708)return-(0xd26+209-0xdf6);else if(DATARMNET40e125212a->
DATARMNET253a9fc708<DATARMNETdcaff77beb->DATARMNET253a9fc708)return
(0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}int DATARMNET85af86a36d(void*priv,
struct list_head*DATARMNET9cf7d31274,struct list_head*DATARMNET5444bd3b6f){
struct DATARMNET47a6995138*DATARMNETdad817a72a;struct DATARMNET47a6995138*
DATARMNET11d167e92b;if(!DATARMNET9cf7d31274||!DATARMNET5444bd3b6f)return
(0xd2d+202-0xdf7);DATARMNETdad817a72a=list_entry(DATARMNET9cf7d31274,struct
DATARMNET47a6995138,DATARMNET02523bfb57);DATARMNET11d167e92b=list_entry(
DATARMNET5444bd3b6f,struct DATARMNET47a6995138,DATARMNET02523bfb57);if(
DATARMNETdad817a72a->DATARMNET4da6031170>DATARMNET11d167e92b->
DATARMNET4da6031170)return-(0xd26+209-0xdf6);else if(DATARMNETdad817a72a->
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;unsigned long flags;if(!dev){
DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;return DATARMNET895df156d7;}
spin_lock_irqsave(&DATARMNETec2a4f5211,flags);list_for_each_entry(ep,&
DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;if
(ep->ep==dev){is_match_found=(0xd26+209-0xdf6);break;}}if(!is_match_found){
DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;spin_unlock_irqrestore(&
DATARMNETec2a4f5211,flags);return DATARMNET895df156d7;}DATARMNETde5894dad9=ep->
DATARMNET6bda8fe27e;DATARMNETd9e9d4ff7e=ep->DATARMNETd7a83774f8;while(
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_irqrestore(&DATARMNETec2a4f5211,flags);return DATARMNET895df156d7;}
int DATARMNET98b2a0ce62(struct net_device*dev){struct DATARMNET9b44b71ee9*ep=
NULL;int DATARMNET895df156d7=-(0xd26+209-0xdf6);u8 DATARMNETcc5b7cd962;u8
DATARMNET15bde5cb53;u8 is_match_found=(0xd2d+202-0xdf7);unsigned long flags;if(!
dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;return DATARMNET895df156d7;}
spin_lock_irqsave(&DATARMNETec2a4f5211,flags);list_for_each_entry(ep,&
DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;if
(ep->ep==dev){is_match_found=(0xd26+209-0xdf6);break;}}if(!is_match_found){
DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;spin_unlock_irqrestore(&
DATARMNETec2a4f5211,flags);return DATARMNET895df156d7;}DATARMNETcc5b7cd962=ep->
DATARMNET121a654efd;DATARMNET15bde5cb53=ep->DATARMNET847276e5af;while(
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_irqrestore(&DATARMNETec2a4f5211,flags);return DATARMNET895df156d7;}
void DATARMNET7f1d9480cb(void*port){DATARMNET4063c95208();}void
DATARMNETa4bd2ef52c(void*port){DATARMNET7b6c061b06();}u8 DATARMNET928c931df9(
struct rps_map*map){u8 mask=(0xd2d+202-0xdf7);u8 i;for(i=(0xd2d+202-0xdf7);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;}

View File

@@ -0,0 +1,46 @@
/* Copyright (c) 2020 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include "rmnet_shs.h"
#include "rmnet_shs_wq.h"
#ifndef DATARMNET4e9dcb0338
#define DATARMNET4e9dcb0338
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 DATARMNET3c489db64a(void*priv,struct list_head*
DATARMNET9cf7d31274,struct list_head*DATARMNET5444bd3b6f);int
DATARMNETd5c15f1ff3(void*priv,struct list_head*DATARMNET9cf7d31274,struct
list_head*DATARMNET5444bd3b6f);int DATARMNET85af86a36d(void*priv,struct
list_head*DATARMNET9cf7d31274,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);extern struct list_head DATARMNET9825511866;
#endif

View File

@@ -0,0 +1,97 @@
/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <linux/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_wq_genl.h"
#include "rmnet_shs_common.h"
#include "rmnet_shs_modules.h"
static int DATARMNETe9173bbe0e(struct notifier_block*DATARMNET272c159b3c,
unsigned long DATARMNET7f045a1e6e,void*data);static struct notifier_block
DATARMNET5fc54f7a13 __read_mostly={.notifier_call=DATARMNETe9173bbe0e,.priority=
(0xd1f+216-0xdf5),};static char*DATARMNETbc8418e817[]={"\x34\x33\x61\x36\x62",
"\x61\x32\x63\x65\x36","\x64\x31\x61\x62\x31","\x64\x38\x37\x39\x62"};
module_param_array(DATARMNETbc8418e817,charp,NULL,(0xcb7+5769-0x221c));
MODULE_PARM_DESC(DATARMNETbc8418e817,
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x73\x68\x73\x20\x64\x72\x69\x76\x65\x72"
);static int DATARMNET2cb9ae589c;int __init DATARMNET163e93649e(void){pr_info(
"\x25\x73\x28\x29\x3a\x20\x53\x74\x61\x72\x74\x69\x6e\x67\x20\x72\x6d\x6e\x65\x74\x20\x53\x48\x53\x20\x6d\x6f\x64\x75\x6c\x65\x20\x25\x73\x20" "\n"
,__func__,DATARMNETbc8418e817[(0xd2d+202-0xdf7)]);trace_rmnet_shs_high(
DATARMNET1790979ccf,DATARMNET72cb00fdc0,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);if(DATARMNET0dbc627e8f()){
rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x69\x6e\x69\x74\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x6e\x65\x74\x6c\x69\x6e\x6b"
);}return register_netdevice_notifier(&DATARMNET5fc54f7a13);}void __exit
DATARMNETf3298dab6f(void){trace_rmnet_shs_high(DATARMNET1790979ccf,
DATARMNET89958f9b63,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);unregister_netdevice_notifier(&DATARMNET5fc54f7a13
);DATARMNETeabd69d1ab();pr_info(
"\x25\x73\x28\x29\x3a\x20\x45\x78\x69\x74\x69\x6e\x67\x20\x72\x6d\x6e\x65\x74\x20\x53\x48\x53\x20\x6d\x6f\x64\x75\x6c\x65" "\n"
,__func__);}static int DATARMNETe9173bbe0e(struct notifier_block*
DATARMNET272c159b3c,unsigned long DATARMNET7f045a1e6e,void*data){struct
net_device*dev=netdev_notifier_info_to_dev(data);struct rmnet_priv*priv;struct
rmnet_port*port;int ret=(0xd2d+202-0xdf7);if(!dev){DATARMNET68d84e7b98[
DATARMNETf5157a9b85]++;return NOTIFY_DONE;}if(!(strncmp(dev->name,
"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd27+224-0xdfd))==(0xd2d+202-0xdf7)
))return NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_DOWN:
DATARMNETd6ee05f1b4(dev);break;case NETDEV_UNREGISTER:DATARMNET2cb9ae589c--;if(!
DATARMNET2cb9ae589c&&DATARMNETecc0627c70.DATARMNETfc89d842ae){unsigned int
DATARMNET9f4bc49c6f;pr_info(
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x20\x64\x65\x69\x6e\x69\x74\x20\x25\x73\x20\x67\x6f\x69\x6e\x67\x20\x64\x6f\x77\x6e\x20"
,dev->name);RCU_INIT_POINTER(rmnet_shs_skb_entry,NULL);RCU_INIT_POINTER(
rmnet_shs_switch,NULL);qmi_rmnet_ps_ind_deregister(DATARMNETecc0627c70.port,&
DATARMNETecc0627c70.rmnet_idl_ind_cb);rmnet_map_dl_ind_deregister(
DATARMNETecc0627c70.port,&DATARMNETecc0627c70.DATARMNET08dbb5ab35);
DATARMNETeacad8334e();DATARMNET9f4bc49c6f=DATARMNET02cdd9b125();
DATARMNETf7dcab9a9e();DATARMNET9297340f58(DATARMNET9f4bc49c6f);
trace_rmnet_shs_high(DATARMNET1790979ccf,DATARMNET443dab7031,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}break;case
NETDEV_REGISTER:DATARMNET2cb9ae589c++;if(DATARMNET2cb9ae589c&&!
DATARMNETecc0627c70.DATARMNETfc89d842ae){pr_info(
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x25\x73"
,dev->name);priv=netdev_priv(dev);port=rmnet_get_port(priv->real_dev);if(!port){
pr_err(
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x3a\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x72\x6d\x6e\x65\x74\x5f\x70\x6f\x72\x74"
);break;}DATARMNET45d8cdb224(priv->real_dev,dev);DATARMNET3ae0d614d6();
DATARMNETe1f95274f1();DATARMNETecc0627c70.DATARMNETf5ab31b9b0=(0xd26+209-0xdf6);
}break;case NETDEV_UP:if(!DATARMNETecc0627c70.DATARMNET9c869c1ec2&&
DATARMNETecc0627c70.DATARMNETfc89d842ae){port=DATARMNETecc0627c70.port;if(!port)
{pr_err(
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x3a\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x72\x6d\x6e\x65\x74\x5f\x63\x66\x67\x5f\x70\x6f\x72\x74"
);break;}DATARMNETecc0627c70.DATARMNET08dbb5ab35.priority=RMNET_SHS;if(port->
data_format&RMNET_INGRESS_FORMAT_DL_MARKER_V2){DATARMNETecc0627c70.
DATARMNET08dbb5ab35.dl_hdr_handler_v2=&DATARMNET78bb6be330;DATARMNETecc0627c70.
DATARMNET08dbb5ab35.dl_trl_handler_v2=&DATARMNETf61cd23b90;}DATARMNETecc0627c70.
rmnet_idl_ind_cb.ps_on_handler=&DATARMNET7f1d9480cb;DATARMNETecc0627c70.
rmnet_idl_ind_cb.ps_off_handler=&DATARMNETa4bd2ef52c;ret=
rmnet_map_dl_ind_register(port,&DATARMNETecc0627c70.DATARMNET08dbb5ab35);if(ret)
pr_err(
"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x20\x64\x6c\x5f\x69\x6e\x64\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c" "\n"
,__func__);ret=qmi_rmnet_ps_ind_register(port,&DATARMNETecc0627c70.
rmnet_idl_ind_cb);if(ret)pr_err(
"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x20\x70\x73\x5f\x69\x6e\x64\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c" "\n"
,__func__);DATARMNET7492293980(dev);DATARMNET039ac6d55d();DATARMNET0a6fb12cb2();
DATARMNETe46c480d71();DATARMNETecc0627c70.DATARMNET9c869c1ec2=(0xd26+209-0xdf6);
trace_rmnet_shs_high(DATARMNET1790979ccf,DATARMNET443dab7031,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);
DATARMNETcd6e26f0ad();RCU_INIT_POINTER(rmnet_shs_switch,NULL);RCU_INIT_POINTER(
rmnet_shs_skb_entry,DATARMNET756778f14f);break;}DATARMNET7492293980(dev);break;
default:break;}return NOTIFY_DONE;}module_init(DATARMNET163e93649e);module_exit(
DATARMNETf3298dab6f);

View File

@@ -0,0 +1,27 @@
/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/netdevice.h>
#ifndef DATARMNET104309e08f
#define DATARMNET104309e08f
#define DATARMNETadb2d068fe (0xd26+209-0xdf6)
#define DATARMNET8120d41372 (0xd1f+216-0xdf5)
#define DATARMNET47c2367f93 (0xd18+223-0xdf4)
extern struct DATARMNETa6b20d7e8b DATARMNETecc0627c70;extern int
rmnet_is_real_dev_registered(const struct net_device*real_dev);extern
rx_handler_result_t rmnet_rx_handler(struct sk_buff**DATARMNET89946cec52);int
__init DATARMNET163e93649e(void);void __exit DATARMNETf3298dab6f(void);
#endif

View File

@@ -0,0 +1,86 @@
/* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <linux/module.h>
#include "rmnet_shs.h"
#include "rmnet_shs_freq.h"
#include <linux/cpufreq.h>
#include <linux/cpu.h>
#include <linux/pm_qos.h>
#define DATARMNET81fe789d21 INT_MAX
#define MIN_FREQ (0xd2d+202-0xdf7)
#define DATARMNET59b491fbc9 DATARMNET81fe789d21
#define DATARMNET03d51cb126 (0xd1f+216-0xdf5)
struct cpu_freq{unsigned int DATARMNET103c8d34fe;unsigned int
DATARMNET1159aa2cb6;};unsigned int DATARMNET666c9ff35e __read_mostly=
(0xd26+209-0xdf6);module_param(DATARMNET666c9ff35e,uint,(0xdb7+6665-0x261c));
MODULE_PARM_DESC(DATARMNET666c9ff35e,
"\x45\x6e\x61\x62\x6c\x65\x2f\x64\x69\x73\x61\x62\x6c\x65\x20\x66\x72\x65\x71\x20\x62\x6f\x6f\x73\x74\x20\x66\x65\x61\x74\x75\x72\x65"
);struct workqueue_struct*DATARMNETde8f350999;struct DATARMNET4e6b0cd2b8{struct
cpu_freq __percpu*DATARMNET9dd9bc4abb;};static struct DATARMNET4e6b0cd2b8
DATARMNETc4b1be7898;static struct work_struct DATARMNETbfcbb4b8ac;static
DEFINE_PER_CPU(struct freq_qos_request,DATARMNET17d6a9530a);static void
DATARMNETb90d2272b4(struct work_struct*DATARMNET33110a3ff5){struct cpu_freq*
DATARMNETe24d518157;unsigned int i;int ret;struct freq_qos_request*
DATARMNETddcafd8b91;get_online_cpus();for_each_online_cpu(i){DATARMNETe24d518157
=per_cpu_ptr(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb,i);DATARMNETddcafd8b91=&
per_cpu(DATARMNET17d6a9530a,i);ret=freq_qos_update_request(DATARMNETddcafd8b91,
DATARMNETe24d518157->DATARMNET103c8d34fe);}put_online_cpus();}void
DATARMNET82d7f4ffa2(void){struct cpu_freq*DATARMNETe24d518157;int i;
for_each_possible_cpu(i){DATARMNETe24d518157=per_cpu_ptr(DATARMNETc4b1be7898.
DATARMNET9dd9bc4abb,i);DATARMNETe24d518157->DATARMNET103c8d34fe=MIN_FREQ;
DATARMNETe24d518157->DATARMNET1159aa2cb6=DATARMNET81fe789d21;}}void
DATARMNET5e4aeef593(int cpu){struct cpu_freq*DATARMNETe24d518157;int i=cpu;if((
(0xd26+209-0xdf6)<<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 DATARMNET371703c28d(void){struct cpu_freq*
DATARMNETe24d518157;int i;for_each_possible_cpu(i){DATARMNETe24d518157=
per_cpu_ptr(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb,i);DATARMNETe24d518157->
DATARMNET103c8d34fe=MIN_FREQ;DATARMNETe24d518157->DATARMNET1159aa2cb6=
DATARMNET81fe789d21;trace_rmnet_freq_reset(i,MIN_FREQ);}if(work_pending(&
DATARMNETbfcbb4b8ac))return;if(DATARMNETde8f350999)queue_work_on(
DATARMNET03d51cb126,DATARMNETde8f350999,&DATARMNETbfcbb4b8ac);}static void
DATARMNET009d37d173(void){struct freq_qos_request*DATARMNETddcafd8b91;int i;
for_each_possible_cpu(i){DATARMNETddcafd8b91=&per_cpu(DATARMNET17d6a9530a,i);if(
DATARMNETddcafd8b91&&freq_qos_request_active(DATARMNETddcafd8b91)){
freq_qos_remove_request(DATARMNETddcafd8b91);}}}int DATARMNETe6e8431304(void){
struct cpu_freq*DATARMNETe24d518157;int i;int ret=(0xd2d+202-0xdf7);struct
freq_qos_request*DATARMNETddcafd8b91;struct cpufreq_policy*policy;
DATARMNETc4b1be7898.DATARMNET9dd9bc4abb=alloc_percpu(struct cpu_freq);if(!
DATARMNETc4b1be7898.DATARMNET9dd9bc4abb)return-ENOMEM;if(!DATARMNETde8f350999)
DATARMNETde8f350999=alloc_workqueue(
"\x73\x68\x73\x5f\x62\x6f\x6f\x73\x74\x5f\x77\x71",WQ_HIGHPRI,(0xd2d+202-0xdf7))
;if(!DATARMNETde8f350999){ret=-ENOMEM;goto err;}for_each_possible_cpu(i){
DATARMNETe24d518157=per_cpu_ptr(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb,i);
DATARMNETddcafd8b91=&per_cpu(DATARMNET17d6a9530a,i);policy=cpufreq_cpu_get(i);if
(!policy){pr_err(
"\x25\x73\x3a\x20\x63\x70\x75\x66\x72\x65\x71\x20\x70\x6f\x6c\x69\x63\x79\x20\x6e\x6f\x74\x20\x66\x6f\x75\x6e\x64\x20\x66\x6f\x72\x20\x63\x70\x75\x25\x64" "\n"
,__func__,i);return-ESRCH;}ret=freq_qos_add_request(&policy->constraints,
DATARMNETddcafd8b91,FREQ_QOS_MIN,MIN_FREQ);if(ret<(0xd2d+202-0xdf7)){pr_err(
"\x25\x73\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x61\x64\x64\x20\x66\x72\x65\x71\x20\x63\x6f\x6e\x73\x74\x72\x61\x69\x6e\x74\x20\x28\x25\x64\x29" "\n"
,__func__,ret);return ret;}}INIT_WORK(&DATARMNETbfcbb4b8ac,DATARMNETb90d2272b4);
DATARMNET82d7f4ffa2();return(0xd2d+202-0xdf7);err:DATARMNET82d7f4ffa2();
free_percpu(DATARMNETc4b1be7898.DATARMNET9dd9bc4abb);if(DATARMNETde8f350999){
destroy_workqueue(DATARMNETde8f350999);DATARMNETde8f350999=NULL;}return ret;}int
DATARMNETdf74db7e38(void){DATARMNET009d37d173();if(DATARMNETde8f350999){
destroy_workqueue(DATARMNETde8f350999);DATARMNETde8f350999=NULL;}free_percpu(
DATARMNETc4b1be7898.DATARMNET9dd9bc4abb);return(0xd2d+202-0xdf7);}

View File

@@ -0,0 +1,20 @@
/* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef DATARMNETef19703014
#define DATARMNETef19703014
int DATARMNETe6e8431304(void);int DATARMNETdf74db7e38(void);void
DATARMNETfb7007f025(void);void DATARMNET371703c28d(void);void
DATARMNET5e4aeef593(int cpu);
#endif

View File

@@ -0,0 +1,941 @@
/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <net/sock.h>
#include <linux/netlink.h>
#include <linux/ip.h>
#include <linux/cpu.h>
#include <linux/oom.h>
#include <net/ip.h>
#include <linux/cpu.h>
#include <linux/bitmap.h>
#include <linux/netdevice.h>
#include <linux/kernel.h>
#include <linux/pm_wakeup.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_config.h"
#include "rmnet_shs_wq.h"
#include "rmnet_shs_modules.h"
#include "rmnet_shs_common.h"
#include "rmnet_trace.h"
#include "rmnet_shs_wq_genl.h"
#include <linux/module.h>
#include <linux/cpumask.h>
#include <linux/icmp.h>
#include <linux/inet.h>
static char*verinfo[]={"\x36\x38\x36\x36\x36\x32\x33\x32",
"\x30\x36\x61\x33\x66\x33\x34\x62","\x35\x65\x31\x64\x38\x37\x39\x62",
"\x37\x34\x31\x35\x39\x32\x31\x63","\x31\x35\x33\x64\x31\x61\x62\x31",
"\x34\x66\x64\x35\x39\x63\x66\x35","\x38\x61\x64\x37\x64\x32\x62\x65",
"\x63\x30\x32\x62\x61\x39\x30\x65"};module_param_array(verinfo,charp,NULL,
(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
);
#define DATARMNET2f67183a86 2000000
#define DATARMNET68fc0be252 1000000
#define DATARMNETd391fbd694 (0xd2d+202-0xdf7)
#define DATARMNETae2e980d66 (0xd11+230-0xdf3)
#define DATARMNET249a927510 (0xd27+224-0xdfd)
#define DATARMNET904145ccb9 (0xd11+230-0xdf3)
#define DATARMNETb91aee91fd -(0xd26+209-0xdf6)
#define DATARMNET00d5787aad 2000000
#define DATARMNET8948dc953d (0xd0a+237-0xdf2)
#define DATARMNET20dc6bb36b (0xd26+209-0xdf6)
#define DATARMNET832731a933(CPU) (per_cpu(softnet_data, CPU).input_pkt_queue)
#define DATARMNET3de2536baf(CPU) (per_cpu(softnet_data, CPU).process_queue)
#define DATARMNETd2d15e7f67(CPU) (DATARMNET832731a933(CPU).qlen + \
DATARMNET3de2536baf(CPU).qlen)
#define DATARMNET78ec5e8746(DATARMNETfbfdc7f27e, CPU) (per_cpu(\
DATARMNETfbfdc7f27e, CPU).input_queue_tail)
#define DATARMNET9c1c20df35(DATARMNETfbfdc7f27e, CPU) (per_cpu(\
DATARMNETfbfdc7f27e, CPU).input_queue_head)
#define DATARMNET66ead9195a(CPU) (per_cpu(softnet_data, CPU).input_queue_head)
#define DATARMNETbb1541e65b(CPU) (per_cpu(softnet_data, CPU).input_queue_tail)
#define DATARMNETba5ea4329f(CPU) DATARMNETecc0627c70.DATARMNET132b9c7dc4[CPU].\
DATARMNET758a55f103
#define DATARMNETe84c5b47ba (0xd2d+202-0xdf7)
#define DATARMNET313d662f61 (0xd26+209-0xdf6)
#define DATARMNET0085702236 (0xd0a+237-0xdf2)
#define DATARMNETec970d7090 (0xd26+209-0xdf6)
#define DATARMNET8fadb49f38 (0xd2d+202-0xdf7)
#define DATARMNET48a89fcc16 (0xd26+209-0xdf6)
#define DATARMNETbfe901fc62 (0xd2d+202-0xdf7)
DEFINE_SPINLOCK(DATARMNET3764d083f0);DEFINE_HASHTABLE(DATARMNETe603c3a4b3,
DATARMNET25437d35fd);struct DATARMNETe600c5b727 DATARMNET0997c5650d[
DATARMNETc6782fed88];int DATARMNETcff375d916[DATARMNETc6782fed88];unsigned int
DATARMNET064fbe9e3a __read_mostly=(0xd2d+202-0xdf7);module_param(
DATARMNET064fbe9e3a,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET064fbe9e3a,"\x77\x61\x6b\x65\x20\x73\x74\x61\x74\x75\x73");unsigned int
DATARMNETe4a6d22824 __read_mostly=(0xc07+4861-0x1e3c);module_param(
DATARMNETe4a6d22824,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET94b2cc2f14,
"\x75\x70\x20\x64\x75\x74\x79\x20\x63\x79\x63\x6c\x65\x20\x69\x6e\x20\x6d\x73");
unsigned int DATARMNETaf998640fd __read_mostly=(0xcb7+1735-0x102c);module_param(
DATARMNETaf998640fd,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETaf998640fd,
"\x4d\x61\x78\x20\x69\x6e\x74\x65\x72\x6c\x65\x61\x76\x65\x64\x20\x69\x70\x61\x20\x70\x6b\x74\x73\x20\x73\x68\x73\x20\x77\x69\x6c\x6c\x20\x70\x61\x72\x6b"
);unsigned int DATARMNET566e381630 __read_mostly=(0xf07+658-0x110d);module_param
(DATARMNET566e381630,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETaf998640fd,
"\x4d\x61\x78\x20\x69\x6e\x74\x65\x72\x6c\x65\x61\x76\x65\x64\x20\x69\x70\x61\x20\x70\x6b\x74\x73\x20\x73\x68\x73\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x70\x61\x72\x6b\x20\x66\x6f\x72\x20\x28\x6d\x73\x29"
);unsigned int DATARMNETf4cacbb5dc __read_mostly=7000;module_param(
DATARMNETf4cacbb5dc,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETf4cacbb5dc,
"\x4d\x61\x78\x20\x70\x61\x63\x6b\x65\x74\x73\x20\x73\x68\x73\x20\x77\x69\x6c\x6c\x20\x73\x74\x65\x65\x72"
);unsigned int DATARMNET673cf85e28 __read_mostly=(0xd2d+202-0xdf7);module_param(
DATARMNET673cf85e28,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET673cf85e28,
"\x4d\x61\x78\x20\x70\x68\x79\x20\x62\x61\x63\x6b\x6c\x6f\x67\x20\x73\x65\x65\x6e"
);struct DATARMNETa6b20d7e8b DATARMNETecc0627c70;struct DATARMNET37ef896af8
shs_rx_work;int DATARMNET762cfa52fe(u8 mask);unsigned DATARMNET016351c9e4=
(0xd2d+202-0xdf7);typedef int(*DATARMNET318cb01989)(struct sk_buff*skb);
DATARMNET318cb01989 rmnet_perf_ingress_hook1 __rcu __read_mostly;EXPORT_SYMBOL(
rmnet_perf_ingress_hook1);ssize_t DATARMNET713da9913c(struct netdev_rx_queue*
DATARMNETb4180393e4,u8 cpu,u8 DATARMNET5780499e9c){struct rps_map*
DATARMNETaeb4918e65,*map;cpumask_var_t mask;map=rcu_dereference(
DATARMNETb4180393e4->rps_map);if(map){map->cpus[(0xd2d+202-0xdf7)]=cpu;map->len=
(0xd26+209-0xdf6);if(((0xd26+209-0xdf6)<<cpu)&DATARMNETbc3c416b77)
DATARMNETb7ddf3c5dd[DATARMNET975060d6b5]++;else DATARMNETb7ddf3c5dd[
DATARMNET0e398136dc]++;return(0xd2d+202-0xdf7);}if(!alloc_cpumask_var(&mask,
GFP_ATOMIC))return-ENOMEM;cpumask_set_cpu(cpu,(struct cpumask*)&mask);map=
kzalloc(max_t(unsigned int,RPS_MAP_SIZE(cpumask_weight(mask)),L1_CACHE_BYTES),
GFP_ATOMIC);if(!map){free_cpumask_var(mask);return-ENOMEM;}map->cpus[
(0xd2d+202-0xdf7)]=cpu;map->len=(0xd26+209-0xdf6);if(((0xd26+209-0xdf6)<<cpu)&
DATARMNETbc3c416b77)DATARMNETb7ddf3c5dd[DATARMNET975060d6b5]++;else
DATARMNETb7ddf3c5dd[DATARMNET0e398136dc]++;rcu_read_lock();DATARMNETaeb4918e65=
rcu_dereference(DATARMNETb4180393e4->rps_map);rcu_assign_pointer(
DATARMNETb4180393e4->rps_map,map);if(DATARMNETaeb4918e65)kfree(
DATARMNETaeb4918e65);free_cpumask_var(mask);rcu_read_unlock();return
(0xd2d+202-0xdf7);}static void*DATARMNETefcaf5fbe9(struct sk_buff*skb,u32 offset
,u32 DATARMNET567bdc7221,void*buf){struct skb_shared_info*shinfo=skb_shinfo(skb)
;skb_frag_t*frag;u32 DATARMNETedc267a909=offset;int i;if(offset>skb->len||
DATARMNET567bdc7221>skb->len||offset+DATARMNET567bdc7221>skb->len)return NULL;if
(skb_headlen(skb)>=offset+DATARMNET567bdc7221)return skb->data+offset;offset-=
skb_headlen(skb);for(i=(0xd2d+202-0xdf7);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;}int DATARMNET9303cec796(
struct sk_buff*skb){int DATARMNETbd864aa442=(0xd2d+202-0xdf7);struct iphdr*ip4h,
DATARMNETc00baf31c3;struct ipv6hdr*ip6h,DATARMNETcf1d9e2c1e;DATARMNET318cb01989
DATARMNET9a0f3e1b3a;s64 DATARMNETe30c7cdaf5;struct timespec64 time;
DATARMNET9a0f3e1b3a=rcu_dereference(rmnet_perf_ingress_hook1);if(
DATARMNET9a0f3e1b3a){if(!DATARMNET9a0f3e1b3a(skb)){goto done;}}switch(skb->
protocol){case htons(ETH_P_IP):ip4h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),
sizeof(*ip4h),&DATARMNETc00baf31c3);if(!ip4h)break;if(!ip_is_fragment(ip4h)&&(
ip4h->protocol==IPPROTO_TCP||ip4h->protocol==IPPROTO_UDP)){DATARMNETbd864aa442=
(0xd26+209-0xdf6);break;}if(ip4h->protocol==IPPROTO_ICMP){skb->hash=
(0xd2d+202-0xdf7);skb->sw_hash=(0xd26+209-0xdf6);(void)ktime_get_boottime_ts64(&
time);DATARMNETe30c7cdaf5=ktime_ms_delta(ktime_set(time.tv_sec,time.tv_nsec),
DATARMNETecc0627c70.DATARMNETdd3caf9200);if(hrtimer_active(&DATARMNETecc0627c70.
hrtimer_wake)){hrtimer_cancel(&DATARMNETecc0627c70.hrtimer_wake);hrtimer_start(&
DATARMNETecc0627c70.hrtimer_wake,ns_to_ktime((0xbf7+4070-0x172d)*
DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);DATARMNET064fbe9e3a=
(0xd1f+216-0xdf5);}else{hrtimer_start(&DATARMNETecc0627c70.hrtimer_wake,
ns_to_ktime((0xbf7+4070-0x172d)*DATARMNET68fc0be252),HRTIMER_MODE_REL|
HRTIMER_MODE_PINNED);__pm_stay_awake(DATARMNETecc0627c70.ws);DATARMNET064fbe9e3a
=(0xd1f+216-0xdf5);}if(!hrtimer_active(&DATARMNETecc0627c70.DATARMNET645fb3b468)
){hrtimer_start(&DATARMNETecc0627c70.DATARMNET645fb3b468,ns_to_ktime(
(0xdf7+3019-0x160c)*DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);
if(DATARMNETe30c7cdaf5>DATARMNET12f3a261a0&&DATARMNETecc0627c70.
DATARMNETdd3caf9200){DATARMNET930a441406[DATARMNETe35e238437]++;}}else{
DATARMNET930a441406[DATARMNETe35e238437]++;}if(trace_print_icmp_rx_enabled()){
char saddr[INET6_ADDRSTRLEN],daddr[INET6_ADDRSTRLEN];u16 ip_proto=
(0xd2d+202-0xdf7);__be16 sequence=(0xd2d+202-0xdf7);u8 type=(0xd2d+202-0xdf7);
struct icmphdr*icmphdr,DATARMNET5aa29a2264;memset(saddr,(0xd2d+202-0xdf7),
INET6_ADDRSTRLEN);memset(daddr,(0xd2d+202-0xdf7),INET6_ADDRSTRLEN);icmphdr=
DATARMNETefcaf5fbe9(skb,ip4h->ihl*(0xd11+230-0xdf3),sizeof(*icmphdr),&
DATARMNET5aa29a2264);if(!icmphdr)goto DATARMNET03fd0cd6e6;if(icmphdr->type!=
ICMP_ECHOREPLY&&icmphdr->type!=ICMP_ECHO)goto DATARMNET03fd0cd6e6;ip_proto=htons
(ETH_P_IP);type=icmphdr->type;sequence=icmphdr->un.echo.sequence;snprintf(saddr,
INET6_ADDRSTRLEN,"\x25\x70\x49\x34",&ip4h->saddr);snprintf(daddr,
INET6_ADDRSTRLEN,"\x25\x70\x49\x34",&ip4h->daddr);trace_print_icmp_rx(skb,
ip_proto,type,sequence,saddr,daddr);}}DATARMNET03fd0cd6e6:break;case htons(
ETH_P_IPV6):ip6h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),sizeof(*ip6h),&
DATARMNETcf1d9e2c1e);if(!ip6h)break;if(!(ip6h->nexthdr==NEXTHDR_FRAGMENT)&&(ip6h
->nexthdr==IPPROTO_TCP||ip6h->nexthdr==IPPROTO_UDP)){DATARMNETbd864aa442=
(0xd26+209-0xdf6);break;}if(ip6h->nexthdr==NEXTHDR_ICMP){skb->hash=
(0xd2d+202-0xdf7);skb->sw_hash=(0xd26+209-0xdf6);(void)ktime_get_boottime_ts64(&
time);DATARMNETe30c7cdaf5=ktime_ms_delta(ktime_set(time.tv_sec,time.tv_nsec),
DATARMNETecc0627c70.DATARMNETdd3caf9200);if(hrtimer_active(&DATARMNETecc0627c70.
hrtimer_wake)){hrtimer_cancel(&DATARMNETecc0627c70.hrtimer_wake);hrtimer_start(&
DATARMNETecc0627c70.hrtimer_wake,ns_to_ktime((0xbf7+4070-0x172d)*
DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);DATARMNET064fbe9e3a=
(0xd1f+216-0xdf5);}else{hrtimer_start(&DATARMNETecc0627c70.hrtimer_wake,
ns_to_ktime((0xbf7+4070-0x172d)*DATARMNET68fc0be252),HRTIMER_MODE_REL|
HRTIMER_MODE_PINNED);__pm_stay_awake(DATARMNETecc0627c70.ws);DATARMNET064fbe9e3a
=(0xd1f+216-0xdf5);}if(!hrtimer_active(&DATARMNETecc0627c70.DATARMNET645fb3b468)
){hrtimer_start(&DATARMNETecc0627c70.DATARMNET645fb3b468,ns_to_ktime(
(0xdf7+3019-0x160c)*DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);
if(DATARMNETe30c7cdaf5>DATARMNET12f3a261a0&&DATARMNETecc0627c70.
DATARMNETdd3caf9200){DATARMNET930a441406[DATARMNETe35e238437]++;}}else{
DATARMNET930a441406[DATARMNETe35e238437]++;}if(trace_print_icmp_rx_enabled()){
char saddr[INET6_ADDRSTRLEN],daddr[INET6_ADDRSTRLEN];u16 ip_proto=
(0xd2d+202-0xdf7);__be16 sequence=(0xd2d+202-0xdf7);u8 type=(0xd2d+202-0xdf7);
struct icmp6hdr*icmp6hdr,DATARMNETaa41336581;memset(saddr,(0xd2d+202-0xdf7),
INET6_ADDRSTRLEN);memset(daddr,(0xd2d+202-0xdf7),INET6_ADDRSTRLEN);icmp6hdr=
DATARMNETefcaf5fbe9(skb,sizeof(*ip6h),sizeof(*icmp6hdr),&DATARMNETaa41336581);if
(!icmp6hdr)goto DATARMNETf623862dd4;if(icmp6hdr->icmp6_type!=ICMPV6_ECHO_REQUEST
&&icmp6hdr->icmp6_type!=ICMPV6_ECHO_REPLY)goto DATARMNETf623862dd4;ip_proto=
htons(ETH_P_IPV6);type=icmp6hdr->icmp6_type;sequence=icmp6hdr->icmp6_sequence;
snprintf(saddr,INET6_ADDRSTRLEN,"\x25\x70\x49\x36",&ip6h->saddr);snprintf(daddr,
INET6_ADDRSTRLEN,"\x25\x70\x49\x36",&ip6h->daddr);trace_print_icmp_rx(skb,
ip_proto,type,sequence,saddr,daddr);}}DATARMNETf623862dd4:break;default:break;}
done:DATARMNETda96251102(DATARMNETcd24fca747,DATARMNET116c96c236,
DATARMNETbd864aa442,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb
,NULL);return DATARMNETbd864aa442;}static void DATARMNETfa919d00dc(int cpu,int
DATARMNET8a461bad56){struct timespec64 DATARMNET2e47295bf1;struct timespec64*
DATARMNET736ac5582e;long DATARMNETb64270afc1;int DATARMNETa67155ba38=(
DATARMNETa1ac2608b5<DATARMNET8948dc953d)?DATARMNET8948dc953d:DATARMNETa1ac2608b5
;ktime_get_boottime_ts64(&DATARMNET2e47295bf1);DATARMNET736ac5582e=&
DATARMNETecc0627c70.DATARMNET132b9c7dc4[cpu].DATARMNET251b97a380;
DATARMNETb64270afc1=DATARMNETe6671dbf38(DATARMNET2e47295bf1.tv_sec-
DATARMNET736ac5582e->tv_sec)+DATARMNET2e47295bf1.tv_nsec-DATARMNET736ac5582e->
tv_nsec;if(DATARMNETb64270afc1>=DATARMNETa67155ba38*DATARMNET68fc0be252){if(
DATARMNETecc0627c70.DATARMNET132b9c7dc4[cpu].DATARMNETe61d62310f>
DATARMNETd75e474598[cpu])DATARMNETd75e474598[cpu]=DATARMNETecc0627c70.
DATARMNET132b9c7dc4[cpu].DATARMNETe61d62310f;DATARMNETecc0627c70.
DATARMNET132b9c7dc4[cpu].DATARMNET251b97a380.tv_sec=DATARMNET2e47295bf1.tv_sec;
DATARMNETecc0627c70.DATARMNET132b9c7dc4[cpu].DATARMNET251b97a380.tv_nsec=
DATARMNET2e47295bf1.tv_nsec;DATARMNETecc0627c70.DATARMNET132b9c7dc4[cpu].
DATARMNETe61d62310f=DATARMNET8a461bad56;}else{DATARMNETecc0627c70.
DATARMNET132b9c7dc4[cpu].DATARMNETe61d62310f+=DATARMNET8a461bad56;}}void
DATARMNETe767554e6e(struct sk_buff*skb){DATARMNETda96251102(DATARMNET6b317c4c73,
DATARMNET43225b7a7c,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),skb,NULL);netif_receive_skb(skb);}void DATARMNET514ce0bf59(
struct sk_buff*skb){DATARMNETda96251102(DATARMNET6b317c4c73,DATARMNET43225b7a7c,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb,
NULL);netif_rx_ni(skb);}static struct sk_buff*DATARMNET0e315f0262(struct sk_buff
*skb,u16 DATARMNETf8272cfb41){struct skb_shared_info*shinfo=skb_shinfo(skb);
struct sk_buff*DATARMNET6643e66666,*tmp;u16 gso_size=shinfo->gso_size;u16
gso_segs=shinfo->gso_segs;unsigned int gso_type=shinfo->gso_type;if(
DATARMNETf8272cfb41>=gso_segs){return NULL;}shinfo->gso_segs=DIV_ROUND_UP(
gso_segs,DATARMNETf8272cfb41);shinfo->gso_size=gso_size*DATARMNETf8272cfb41;
DATARMNET6643e66666=__skb_gso_segment(skb,NETIF_F_SG,false);if(unlikely(
IS_ERR_OR_NULL(DATARMNET6643e66666))){shinfo->gso_size=gso_size;shinfo->gso_segs
=gso_segs;return NULL;}if(DATARMNETf8272cfb41<=(0xd26+209-0xdf6))return
DATARMNET6643e66666;for(tmp=DATARMNET6643e66666;tmp;tmp=tmp->next){struct
skb_shared_info*DATARMNETa7dac37e66=skb_shinfo(tmp);DATARMNETa7dac37e66->
gso_type=gso_type;DATARMNETa7dac37e66->gso_size=gso_size;if(gso_segs>=
DATARMNETf8272cfb41)DATARMNETa7dac37e66->gso_segs=DATARMNETf8272cfb41;else
DATARMNETa7dac37e66->gso_segs=gso_segs;gso_segs-=DATARMNETf8272cfb41;if(gso_segs
<=(0xd26+209-0xdf6)){break;}}return DATARMNET6643e66666;}static void
DATARMNET21243b86ae(struct sk_buff*DATARMNETe08e18123e,u8 DATARMNETf345c1d909,
u16 DATARMNET87636d0152){struct sk_buff*skb=NULL;struct sk_buff*
DATARMNETcebafc57a4=NULL;struct sk_buff*DATARMNET39bcb0d197=NULL;int count=
(0xd2d+202-0xdf7);DATARMNETda96251102(DATARMNET6b317c4c73,DATARMNET43225b7a7c,
(0xd26+209-0xdf6),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
DATARMNETe08e18123e,NULL);DATARMNET39bcb0d197=DATARMNET0e315f0262(
DATARMNETe08e18123e,DATARMNET87636d0152);if(DATARMNET39bcb0d197==NULL){if(
DATARMNETf345c1d909==DATARMNET0b15fd8b54)netif_receive_skb(DATARMNETe08e18123e);
else netif_rx(DATARMNETe08e18123e);return;}for((skb=DATARMNET39bcb0d197);skb!=
NULL;skb=DATARMNETcebafc57a4){DATARMNETcebafc57a4=skb->next;skb->hash=
DATARMNETe08e18123e->hash;skb->dev=DATARMNETe08e18123e->dev;skb->next=NULL;if(
DATARMNETf345c1d909==DATARMNET0b15fd8b54)netif_receive_skb(skb);else netif_rx(
skb);count+=(0xd26+209-0xdf6);}consume_skb(DATARMNETe08e18123e);return;}int
DATARMNET2efb1a51c7(struct DATARMNET63d7680df2*node_p){int ret=(0xd2d+202-0xdf7)
;int DATARMNET42c3ecbd5e=(0xd26+209-0xdf6);u16 idx=(0xd2d+202-0xdf7);for(idx=
(0xd2d+202-0xdf7);idx<DATARMNETc6782fed88;idx++){if(node_p->DATARMNET341ea38662
->DATARMNET1a1d89d417&DATARMNET42c3ecbd5e)ret++;DATARMNET42c3ecbd5e=
DATARMNET42c3ecbd5e<<(0xd26+209-0xdf6);}return ret;}u32 DATARMNET8532ab3089(u32
index,u32 DATARMNET0258668025,u32 hash){int DATARMNETebbd4cd1d9[
DATARMNETc6782fed88/(0xd1f+216-0xdf5)]={(0xd35+210-0xdff),(0xd11+230-0xdf3),
(0xd18+223-0xdf4),(0xd1f+216-0xdf5)};u32 ret=(0xd2d+202-0xdf7);if(!
DATARMNET0258668025){DATARMNET68d84e7b98[DATARMNETef8cbfa62f]++;return ret;}if(
DATARMNET0258668025<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&1048575);DATARMNETda96251102(DATARMNETf3aaad06eb,DATARMNET4e91ddb48a,ret,
hash,index,DATARMNET0258668025,NULL,NULL);return ret;}int DATARMNET762cfa52fe(u8
mask){int ret=DATARMNETb91aee91fd;int DATARMNETd416f5b047=DATARMNETb91aee91fd;
u8 DATARMNET05e5e122cd=(0xd2d+202-0xdf7);u8 i;for(i=(0xd2d+202-0xdf7);i<
DATARMNETc6782fed88;i++){if(!(mask&((0xd26+209-0xdf6)<<i)))continue;if(mask&(
(0xd26+209-0xdf6)<<i))DATARMNET05e5e122cd++;if(list_empty(&DATARMNET0997c5650d[i
].DATARMNET3dc4262f53))return i;if(DATARMNETcff375d916[i]<=DATARMNETd416f5b047||
DATARMNETd416f5b047==DATARMNETb91aee91fd){ret=i;DATARMNETd416f5b047=
DATARMNETcff375d916[i];}}return ret;}static int DATARMNETaef946bb68(u8 index,u8
mask){int ret=DATARMNETb91aee91fd;u8 DATARMNET05e5e122cd=(0xd2d+202-0xdf7);u8 i;
for(i=(0xd2d+202-0xdf7);i<DATARMNETc6782fed88;i++){if(DATARMNET05e5e122cd==index
&&(mask&((0xd26+209-0xdf6)<<i)))return i;if(mask&((0xd26+209-0xdf6)<<i))
DATARMNET05e5e122cd++;}return ret;}static 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;}int
DATARMNET6af33ebb5b(struct DATARMNET63d7680df2*DATARMNET63b1a086d5){int cpu=
DATARMNETb91aee91fd;u8 DATARMNETd4a0b11b47;u8 DATARMNET7dc3d97229;if(
DATARMNET63b1a086d5->DATARMNET85c698ec34)return DATARMNETecc0627c70.
DATARMNET5c24e1df05;else if(DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu].
DATARMNETef866573e0&&DATARMNET362b15f941(DATARMNET63b1a086d5->map_cpu)){cpu=
DATARMNET762cfa52fe(DATARMNETbc3c416b77&~DATARMNETecc0627c70.DATARMNETba3f7a11ef
&DATARMNET63b1a086d5->DATARMNETfbbec4c537);if(cpu<(0xd2d+202-0xdf7)&&
DATARMNET63b1a086d5->DATARMNET341ea38662!=NULL)cpu=DATARMNET63b1a086d5->
DATARMNET341ea38662->DATARMNET6e1a4eaf09;}else if(DATARMNET63b1a086d5->
DATARMNET341ea38662!=NULL){cpu=DATARMNET63b1a086d5->DATARMNET341ea38662->
DATARMNET6e1a4eaf09;if(((0xd26+209-0xdf6)<<DATARMNET63b1a086d5->map_cpu)&
DATARMNETecc0627c70.DATARMNETba3f7a11ef){DATARMNETd4a0b11b47=(
DATARMNETbc3c416b77&((0xd26+209-0xdf6)<<cpu))?DATARMNETbc3c416b77:
DATARMNET9273f84bf1;cpu=DATARMNET762cfa52fe(DATARMNETd4a0b11b47&~
DATARMNETecc0627c70.DATARMNETba3f7a11ef&DATARMNET63b1a086d5->DATARMNETfbbec4c537
);DATARMNETb7ddf3c5dd[DATARMNET7f401828b3]++;}else if(((0xd26+209-0xdf6)<<cpu)&
DATARMNETecc0627c70.DATARMNETba3f7a11ef){DATARMNETd4a0b11b47=(
DATARMNETbc3c416b77&((0xd26+209-0xdf6)<<cpu))?DATARMNETbc3c416b77:
DATARMNET9273f84bf1;DATARMNET7dc3d97229=(DATARMNETbc3c416b77&((0xd26+209-0xdf6)
<<DATARMNET63b1a086d5->map_cpu))?DATARMNETbc3c416b77:DATARMNET9273f84bf1;if(
DATARMNETd4a0b11b47!=DATARMNET7dc3d97229)cpu=DATARMNET762cfa52fe(
DATARMNETd4a0b11b47&~DATARMNETecc0627c70.DATARMNETba3f7a11ef&DATARMNET63b1a086d5
->DATARMNETfbbec4c537);else cpu=DATARMNET63b1a086d5->map_cpu;}else if(
DATARMNET0997c5650d[cpu].DATARMNETef866573e0){cpu=DATARMNET63b1a086d5->map_cpu;}
}return cpu;}int DATARMNETb6bff4a724(struct DATARMNET63d7680df2*
DATARMNET63b1a086d5){int cpu,idx=DATARMNETb91aee91fd;cpu=DATARMNET6af33ebb5b(
DATARMNET63b1a086d5);idx=DATARMNET04e8d1b862(cpu,DATARMNET63b1a086d5->
DATARMNETfbbec4c537);if(unlikely(idx<(0xd2d+202-0xdf7)))idx=DATARMNET04e8d1b862(
DATARMNET63b1a086d5->map_cpu,DATARMNET63b1a086d5->DATARMNETfbbec4c537);
DATARMNETda96251102(DATARMNETf3aaad06eb,DATARMNETf2fc7954d4,DATARMNET63b1a086d5
->hash,cpu,idx,(0x16e8+787-0xc0c),DATARMNET63b1a086d5,NULL);return idx;}static
int DATARMNET2af09ccd0b(int cpu,int DATARMNET63a222ae1f,int DATARMNETea08087fc0)
{int ret=(0xd2d+202-0xdf7);if(DATARMNETecc0627c70.DATARMNET132b9c7dc4[cpu].
DATARMNETe61d62310f>=DATARMNET65393dea13[cpu]){ret=DATARMNET0efbbe2821;}if(
DATARMNET63a222ae1f&&((DATARMNETeea3cef5b6(cpu)+DATARMNETea08087fc0)>=
DATARMNETbc049ffc4c[cpu]))ret=DATARMNETa4267dfd8a;return ret;}void
DATARMNET349c3a0cab(u16 map_cpu,bool DATARMNETb639f6e1b1){if(map_cpu<
DATARMNETc6782fed88)(DATARMNETb639f6e1b1)?DATARMNETcff375d916[map_cpu]++:
DATARMNETcff375d916[map_cpu]--;else DATARMNET68d84e7b98[DATARMNETcc0ef52ccb]++;}
void DATARMNETb1157fd5c4(u8 DATARMNET42a992465f){if(DATARMNET42a992465f>=
DATARMNETc6782fed88)return;rcu_read_lock();DATARMNET0997c5650d[
DATARMNET42a992465f].DATARMNETae196235f2=DATARMNET9c1c20df35(softnet_data,
DATARMNET42a992465f);DATARMNET0997c5650d[DATARMNET42a992465f].qtail=
DATARMNET78ec5e8746(softnet_data,DATARMNET42a992465f);rcu_read_unlock();
DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET96571b28de=DATARMNET0997c5650d
[DATARMNET42a992465f].qtail-DATARMNET0997c5650d[DATARMNET42a992465f].
DATARMNETae196235f2;DATARMNETda96251102(DATARMNET75d955c408,DATARMNET5874e1ecd7,
DATARMNET42a992465f,DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNETae196235f2
,DATARMNET0997c5650d[DATARMNET42a992465f].qtail,(0x16e8+787-0xc0c),NULL,NULL);}
void DATARMNETe074a09496(void){u8 DATARMNET42a992465f;rcu_read_lock();for(
DATARMNET42a992465f=(0xd2d+202-0xdf7);DATARMNET42a992465f<DATARMNETc6782fed88;
DATARMNET42a992465f++){if(!cpu_online(DATARMNET42a992465f))continue;
DATARMNETb1157fd5c4(DATARMNET42a992465f);DATARMNETda96251102(DATARMNET75d955c408
,DATARMNET5874e1ecd7,DATARMNET42a992465f,DATARMNET0997c5650d[DATARMNET42a992465f
].DATARMNETae196235f2,DATARMNET0997c5650d[DATARMNET42a992465f].qtail,
(0x16e8+787-0xc0c),NULL,NULL);}rcu_read_unlock();}int DATARMNET765b8ecfba(struct
net_device*dev,u8 cpu,u8 DATARMNET5780499e9c){if(rmnet_is_real_dev_registered(
dev)){if(DATARMNET713da9913c(dev->_rx,cpu,DATARMNET5780499e9c)==
(0xd2d+202-0xdf7)){DATARMNETecc0627c70.DATARMNETba3f7a11ef=(0xd26+209-0xdf6)<<
cpu;DATARMNETecc0627c70.DATARMNET6625085b71=DATARMNETecc0627c70.
DATARMNET7d667e828e;DATARMNETecc0627c70.DATARMNET7d667e828e=cpu;}else{return-
(0xd26+209-0xdf6);}}else{DATARMNET68d84e7b98[DATARMNET767c76ca08]++;}return
(0xd2d+202-0xdf7);}int DATARMNETe488c1c396(struct DATARMNET63d7680df2*
DATARMNET63b1a086d5,u8 DATARMNETd87669e323,u8 DATARMNET5447204733){int
DATARMNET5c4a331b9c;u32 DATARMNETd3673fd5f0;u32 DATARMNET9bbfe49633;int ret=
(0xd2d+202-0xdf7);int DATARMNET5a2e9192f9=-(0xd26+209-0xdf6);int
DATARMNET8ceb7a8cc9;int DATARMNET42a992465f;int DATARMNETcfb5dc7296;struct
DATARMNETe600c5b727*DATARMNET373e474754;u8 map=DATARMNET63b1a086d5->
DATARMNETfbbec4c537;DATARMNET5c4a331b9c=DATARMNETb6bff4a724(DATARMNET63b1a086d5)
;do{DATARMNET5a2e9192f9=DATARMNET63b1a086d5->map_cpu;if(DATARMNET5c4a331b9c<
(0xd2d+202-0xdf7)){DATARMNET63b1a086d5->DATARMNET6250e93187=(0xd2d+202-0xdf7);
ret=(0xd26+209-0xdf6);break;}DATARMNET63b1a086d5->DATARMNET6250e93187=
(0xd26+209-0xdf6);if(!map){DATARMNET63b1a086d5->DATARMNET6250e93187=
(0xd2d+202-0xdf7);ret=(0xd26+209-0xdf6);break;}if(DATARMNET5c4a331b9c==
DATARMNET63b1a086d5->map_index){ret=(0xd26+209-0xdf6);break;}if(!
DATARMNET63b1a086d5->DATARMNET85c698ec34)DATARMNETd3673fd5f0=DATARMNETadb0248bd4
(DATARMNET63b1a086d5->map_cpu);else DATARMNETd3673fd5f0=DATARMNETadb0248bd4(
DATARMNETecc0627c70.DATARMNET7d667e828e);DATARMNET9bbfe49633=DATARMNET63b1a086d5
->queue_head;DATARMNET42a992465f=DATARMNET63b1a086d5->map_cpu;if((!
DATARMNET63b1a086d5->DATARMNET85c698ec34&&DATARMNETd3673fd5f0>=(
DATARMNET9bbfe49633+DATARMNET63b1a086d5->DATARMNET0371465875))||(
DATARMNETd87669e323>=DATARMNETa7d45fb6d4||(DATARMNETd87669e323&&
DATARMNET63b1a086d5->DATARMNET85c698ec34))||(!DATARMNET63b1a086d5->
DATARMNET85c698ec34&&!DATARMNETeea3cef5b6(DATARMNET42a992465f)&&++
DATARMNET14ed771dfb[DATARMNET0d07041c32])){if(likely(DATARMNETa7909611da)){
DATARMNETcfb5dc7296=DATARMNETaef946bb68(DATARMNET5c4a331b9c,DATARMNET63b1a086d5
->DATARMNETfbbec4c537);if(DATARMNETcfb5dc7296<(0xd2d+202-0xdf7)){ret=
(0xd26+209-0xdf6);break;}DATARMNET0997c5650d[DATARMNETcfb5dc7296].
DATARMNET4133fc9428+=DATARMNET63b1a086d5->DATARMNETae4b27456e.
DATARMNET6215127f48;DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu].
DATARMNET4133fc9428-=DATARMNET63b1a086d5->DATARMNETae4b27456e.
DATARMNET6215127f48;DATARMNET63b1a086d5->map_index=DATARMNET5c4a331b9c;
DATARMNET63b1a086d5->map_cpu=DATARMNETcfb5dc7296;DATARMNET8ceb7a8cc9=
DATARMNET63b1a086d5->map_cpu;if(DATARMNETd3673fd5f0<(DATARMNET9bbfe49633+
DATARMNET63b1a086d5->DATARMNET0371465875)){DATARMNETb7ddf3c5dd[
DATARMNET28bb261646]++;DATARMNETb7ddf3c5dd[DATARMNET67b67dc88f]+=(
DATARMNET9bbfe49633-DATARMNETd3673fd5f0)+DATARMNET63b1a086d5->
DATARMNET0371465875;DATARMNET4bde88919f(DATARMNET42a992465f,(DATARMNET9bbfe49633
-DATARMNETd3673fd5f0)+DATARMNET63b1a086d5->DATARMNET0371465875);pr_info(
"\x73\x68\x73\x20\x6f\x6f\x6f\x3a\x20\x70\x68\x79\x20\x25\x64\x20\x6e\x65\x77\x5f\x63\x70\x75\x20\x25\x64\x20\x6f\x6c\x64\x5f\x63\x70\x75\x20\x25\x64\x2c\x20\x6f\x66\x66\x73\x65\x74\x20\x25\x64\x20\x6e\x6f\x64\x65\x5f\x71\x68\x65\x61\x64\x20\x25\x64\x2c\x20\x63\x75\x72\x5f\x71\x68\x65\x61\x64\x20\x25\x64\x2c\x20\x66\x66\x20\x25\x64\x20\x6f\x6c\x64\x20\x63\x70\x75\x20\x71\x64\x69\x66\x66\x20\x25\x64\x20\x6e\x65\x77\x20\x71\x64\x69\x66\x66\x20\x25\x64\x20" "\n"
,DATARMNET63b1a086d5->DATARMNET85c698ec34,DATARMNETcfb5dc7296,
DATARMNET42a992465f,DATARMNET63b1a086d5->DATARMNET0371465875,DATARMNET9bbfe49633
,DATARMNETd3673fd5f0,DATARMNETd87669e323,DATARMNETeea3cef5b6(DATARMNET42a992465f
),DATARMNETeea3cef5b6(DATARMNETcfb5dc7296));}if(DATARMNET0997c5650d[
DATARMNET42a992465f].DATARMNETef866573e0){DATARMNET0997c5650d[
DATARMNET8ceb7a8cc9].DATARMNET1e1f197118=(0xd26+209-0xdf6);DATARMNETb7ddf3c5dd[
DATARMNETc3bce05be2]++;}else{DATARMNETb7ddf3c5dd[DATARMNET14067f0be4]++;}
DATARMNET373e474754=&DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu];
DATARMNETe074a09496();DATARMNET63b1a086d5->queue_head=DATARMNET373e474754->
DATARMNETae196235f2;DATARMNET63b1a086d5->queue_head+=DATARMNET63b1a086d5->
DATARMNETae4b27456e.DATARMNET6215127f48;if(DATARMNET63b1a086d5->
DATARMNET341ea38662)DATARMNET63b1a086d5->DATARMNET341ea38662->
DATARMNET6e1a4eaf09=DATARMNET8ceb7a8cc9;DATARMNETe102b3a798(DATARMNET63b1a086d5,
&DATARMNET373e474754->DATARMNET3dc4262f53,DATARMNET42a992465f);
DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET052f49b190,DATARMNET63b1a086d5
->map_cpu,DATARMNET5a2e9192f9,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
DATARMNET63b1a086d5,NULL);}ret=(0xd26+209-0xdf6);}}while((0xd2d+202-0xdf7));
DATARMNETda96251102(DATARMNET4510abc30d,DATARMNET23b8465daf,ret,
DATARMNET63b1a086d5->map_cpu,DATARMNET5a2e9192f9,(0x16e8+787-0xc0c),
DATARMNET63b1a086d5,NULL);return ret;}void DATARMNETfbc06e60f1(u8
DATARMNET42a992465f){struct DATARMNET63d7680df2*DATARMNET3f85732c70;struct
list_head*DATARMNET7b34b7b5be,*next;unsigned long ht_flags;u32
DATARMNET61ab18a4bd;u32 DATARMNETed7800fc72=(0xd2d+202-0xdf7);u32
DATARMNETa0df5de99d=(0xd2d+202-0xdf7);u32 DATARMNET8bf94cc2f7=(0xd2d+202-0xdf7);
u32 DATARMNET76192fa639=(0xd2d+202-0xdf7);DATARMNETe074a09496();
DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNETde91850c28,DATARMNETecc0627c70.
DATARMNETa2e32cdd3a,DATARMNETecc0627c70.DATARMNETc252a1f55d,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);local_bh_disable();spin_lock_irqsave(&
DATARMNET3764d083f0,ht_flags);DATARMNET61ab18a4bd=DATARMNETeb3978575d(
DATARMNET42a992465f);list_for_each_safe(DATARMNET7b34b7b5be,next,&
DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET3dc4262f53){
DATARMNET3f85732c70=list_entry(DATARMNET7b34b7b5be,struct DATARMNET63d7680df2,
DATARMNET04c88b8191);if(DATARMNET3f85732c70->DATARMNETae4b27456e.
DATARMNET6215127f48){DATARMNETed7800fc72=DATARMNET3f85732c70->
DATARMNETae4b27456e.DATARMNET6215127f48;DATARMNETa0df5de99d=DATARMNET3f85732c70
->DATARMNETae4b27456e.DATARMNETbaa5765693;DATARMNETe02152c351(
DATARMNET3f85732c70,DATARMNET6aecae7be2,DATARMNET5b5927fd7e);DATARMNET8bf94cc2f7
+=DATARMNETed7800fc72;DATARMNET76192fa639+=DATARMNETa0df5de99d;if(
DATARMNET3f85732c70->map_cpu==DATARMNET42a992465f){DATARMNET61ab18a4bd+=
DATARMNETed7800fc72;DATARMNET3f85732c70->queue_head=DATARMNET61ab18a4bd;}}}
DATARMNETecc0627c70.DATARMNETc252a1f55d-=DATARMNET76192fa639;DATARMNETecc0627c70
.DATARMNETa2e32cdd3a-=DATARMNET8bf94cc2f7;DATARMNET0997c5650d[
DATARMNET42a992465f].DATARMNETef866573e0=(0xd2d+202-0xdf7);DATARMNETecc0627c70.
DATARMNET132b9c7dc4[DATARMNET42a992465f].DATARMNETe61d62310f=(0xd2d+202-0xdf7);
DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET4133fc9428=(0xd2d+202-0xdf7);
spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);local_bh_enable();if(
DATARMNET42a992465f==DATARMNETecc0627c70.DATARMNET6625085b71&&rcu_dereference(
rmnet_shs_switch)){RCU_INIT_POINTER(rmnet_shs_switch,NULL);DATARMNETecc0627c70.
DATARMNETfeee6933fc=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNET6625085b71=
DATARMNETecc0627c70.DATARMNET7d667e828e;}DATARMNET52de1f3dc0(DATARMNET4510abc30d
,DATARMNET576793621a,DATARMNETecc0627c70.DATARMNETa2e32cdd3a,DATARMNETecc0627c70
.DATARMNETc252a1f55d,DATARMNET8bf94cc2f7,DATARMNET76192fa639,NULL,NULL);}void
DATARMNET056c939591(struct work_struct*DATARMNET33110a3ff5){struct
DATARMNETa6f2d499b2*DATARMNET4b39dc1574=container_of(DATARMNET33110a3ff5,struct
DATARMNETa6f2d499b2,DATARMNET33110a3ff5);DATARMNETfbc06e60f1(DATARMNET4b39dc1574
->DATARMNET42c3ecbd5e);DATARMNET14ed771dfb[DATARMNETbb5757569c]++;}void
DATARMNETcba2f7f7b6(struct DATARMNET63d7680df2*DATARMNET63b1a086d5,u8
DATARMNETf345c1d909){struct sk_buff*skb=NULL;struct sk_buff*DATARMNETcebafc57a4=
NULL;struct DATARMNETe600c5b727*DATARMNETa4055affd5;u32 DATARMNETe20a9cab2b=
(0xd2d+202-0xdf7);u32 DATARMNETb481d13a78=(0xd2d+202-0xdf7);u32
DATARMNET1fcbf046ec=(0xd2d+202-0xdf7);u8 map=(0xd2d+202-0xdf7),
DATARMNET0258668025=(0xd2d+202-0xdf7);u16 DATARMNET87636d0152=(0xd2d+202-0xdf7);
u16 index;if(!DATARMNET63b1a086d5->DATARMNETae4b27456e.head)return;if(!
DATARMNET63b1a086d5->DATARMNETfbbec4c537){map=DATARMNETecc0627c70.map_mask;
DATARMNET0258668025=DATARMNETecc0627c70.map_len;index=DATARMNET63b1a086d5->
map_index;}else{map=DATARMNET63b1a086d5->DATARMNETfbbec4c537;DATARMNET0258668025
=DATARMNET63b1a086d5->DATARMNETa59ce1fd2d;index=DATARMNET63b1a086d5->map_index;}
if(map){DATARMNET1fcbf046ec=DATARMNET8532ab3089(index,DATARMNET0258668025,
DATARMNET63b1a086d5->DATARMNETae4b27456e.head->hash);}else{DATARMNET63b1a086d5->
DATARMNET6250e93187=(0xd2d+202-0xdf7);}DATARMNET52de1f3dc0(DATARMNET4510abc30d,
DATARMNETe4ee0d2636,DATARMNET63b1a086d5->hash,DATARMNET1fcbf046ec,
DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNET6215127f48,DATARMNET63b1a086d5
->DATARMNETae4b27456e.DATARMNETbaa5765693,DATARMNET63b1a086d5,
DATARMNET63b1a086d5->DATARMNETae4b27456e.head);DATARMNET87636d0152=(u16)
DATARMNET63b1a086d5->DATARMNET341ea38662->DATARMNET87636d0152;for((skb=
DATARMNET63b1a086d5->DATARMNETae4b27456e.head);skb!=NULL;skb=DATARMNETcebafc57a4
){DATARMNETcebafc57a4=skb->next;if(DATARMNET63b1a086d5->DATARMNET6250e93187)skb
->hash=DATARMNET1fcbf046ec;skb->next=NULL;DATARMNETe20a9cab2b+=(0xd26+209-0xdf6)
;DATARMNETb481d13a78+=skb->len;if(DATARMNET87636d0152>(0xd2d+202-0xdf7)){if(
DATARMNET63b1a086d5->DATARMNET1e9d25d9ff==IPPROTO_UDP)DATARMNET68d84e7b98[
DATARMNETdd6bf3de6b]++;DATARMNET21243b86ae(skb,DATARMNETf345c1d909,
DATARMNET87636d0152);}else{if(DATARMNETf345c1d909==DATARMNET0b15fd8b54&&(!
DATARMNET63b1a086d5->DATARMNET85c698ec34))DATARMNETe767554e6e(skb);else if(
DATARMNETf345c1d909==DATARMNET5b5927fd7e&&(!DATARMNET63b1a086d5->
DATARMNET85c698ec34))DATARMNET514ce0bf59(skb);else if(DATARMNET63b1a086d5->
DATARMNET85c698ec34&&DATARMNETf345c1d909==DATARMNET0b15fd8b54){
DATARMNETa4055affd5=&DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu];
DATARMNETde8ee16f92(DATARMNET63b1a086d5);spin_unlock_bh(&DATARMNET3764d083f0);
rmnet_rx_handler(&skb);spin_lock_bh(&DATARMNET3764d083f0);DATARMNET3e37ad2816(
DATARMNET63b1a086d5,&DATARMNETa4055affd5->DATARMNET3dc4262f53);}else{
DATARMNET14ed771dfb[DATARMNET94658618fc]++;netif_rx_ni(skb);}}}
DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNET6215127f48=(0xd2d+202-0xdf7);
DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNETbaa5765693=(0xd2d+202-0xdf7);
DATARMNET63b1a086d5->DATARMNETae4b27456e.head=NULL;DATARMNET63b1a086d5->
DATARMNETae4b27456e.tail=NULL;if(DATARMNET63b1a086d5->DATARMNET85c698ec34){
RCU_INIT_POINTER(rmnet_shs_switch,NULL);DATARMNET63b1a086d5->DATARMNET0371465875
=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETfeee6933fc=(0xd2d+202-0xdf7);
DATARMNETecc0627c70.DATARMNET6625085b71=DATARMNETecc0627c70.DATARMNET7d667e828e;
}DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNETfb753e521e,DATARMNET63b1a086d5
->hash,DATARMNET1fcbf046ec,DATARMNETe20a9cab2b,DATARMNETb481d13a78,
DATARMNET63b1a086d5,NULL);}void DATARMNET23c7ddd780(struct DATARMNET63d7680df2*
DATARMNET63b1a086d5,u8 DATARMNET5447204733){struct sk_buff*skb;struct sk_buff*
DATARMNETcebafc57a4=NULL;u32 DATARMNETe20a9cab2b=(0xd2d+202-0xdf7);u32
DATARMNETb481d13a78=(0xd2d+202-0xdf7);u32 DATARMNET1fcbf046ec;u8 map,
DATARMNET0258668025;if(!DATARMNET63b1a086d5->DATARMNETae4b27456e.head)return;map
=DATARMNET63b1a086d5->DATARMNETfbbec4c537;DATARMNET0258668025=
DATARMNET63b1a086d5->DATARMNETa59ce1fd2d;if(map){DATARMNET1fcbf046ec=
DATARMNET8532ab3089(DATARMNET63b1a086d5->map_index,DATARMNET0258668025,
DATARMNET63b1a086d5->DATARMNETae4b27456e.head->hash);}else{DATARMNET63b1a086d5->
DATARMNET6250e93187=(0xd2d+202-0xdf7);}for((skb=DATARMNET63b1a086d5->
DATARMNETae4b27456e.head);skb!=NULL;skb=DATARMNETcebafc57a4){DATARMNETcebafc57a4
=skb->next;if(DATARMNET63b1a086d5->DATARMNET6250e93187)skb->hash=
DATARMNET1fcbf046ec;skb->next=NULL;DATARMNETe20a9cab2b+=(0xd26+209-0xdf6);
DATARMNETb481d13a78+=skb->len;if(DATARMNET5447204733==DATARMNET0b15fd8b54&&(!
DATARMNET63b1a086d5->DATARMNET85c698ec34))DATARMNETe767554e6e(skb);else if(
DATARMNET5447204733==DATARMNET5b5927fd7e&&(!DATARMNET63b1a086d5->
DATARMNET85c698ec34))DATARMNET514ce0bf59(skb);else{netif_rx_ni(skb);}}
DATARMNET68d84e7b98[DATARMNET72db8b9bac]++;DATARMNETecc0627c70.
DATARMNETc252a1f55d-=DATARMNETb481d13a78;DATARMNETecc0627c70.DATARMNETa2e32cdd3a
-=DATARMNETe20a9cab2b;DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu].
DATARMNET4133fc9428-=DATARMNETe20a9cab2b;}int DATARMNETe02152c351(struct
DATARMNET63d7680df2*DATARMNET63b1a086d5,u8 DATARMNETd87669e323,u8
DATARMNET5447204733){int DATARMNETbd864aa442=(0xd2d+202-0xdf7);int map=
DATARMNET63b1a086d5->DATARMNETfbbec4c537;int DATARMNET5643f7b5e9;
DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET022082b219,DATARMNETd87669e323,
DATARMNET5447204733,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNET63b1a086d5,
NULL);if(DATARMNETaef946bb68(DATARMNET63b1a086d5->map_index,map)!=
DATARMNET63b1a086d5->map_cpu){DATARMNET5643f7b5e9=DATARMNET04e8d1b862(
DATARMNET63b1a086d5->map_cpu,map);if(DATARMNET5643f7b5e9>=(0xd2d+202-0xdf7)){
DATARMNET63b1a086d5->map_index=DATARMNET5643f7b5e9;DATARMNET63b1a086d5->map_cpu=
DATARMNETaef946bb68(DATARMNET5643f7b5e9,map);}else{DATARMNET63b1a086d5->
map_index=DATARMNET2edff26954;DATARMNET63b1a086d5->map_cpu=DATARMNETaef946bb68(
DATARMNET2edff26954,map);if(DATARMNET63b1a086d5->map_cpu<(0xd2d+202-0xdf7))
DATARMNET63b1a086d5->map_cpu=DATARMNET2edff26954;}DATARMNETd87669e323=
(0xd26+209-0xdf6);DATARMNET68d84e7b98[DATARMNETa1f9420686]++;DATARMNET015fb2ba0e
(DATARMNET720469c0a9,DATARMNET998c6de143,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}if(DATARMNETe488c1c396(
DATARMNET63b1a086d5,DATARMNETd87669e323,DATARMNET5447204733)){
DATARMNETcba2f7f7b6(DATARMNET63b1a086d5,DATARMNET5447204733);DATARMNETbd864aa442
=(0xd26+209-0xdf6);}DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET64b02f64c6,
DATARMNETbd864aa442,DATARMNETd87669e323,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
DATARMNET63b1a086d5,NULL);return DATARMNETbd864aa442;}static void
DATARMNETc54e431bbc(u8 DATARMNET42a992465f,u8 DATARMNET7845d39672,u32
DATARMNETea08087fc0){u32 DATARMNETba6017a3a9=(!DATARMNET227d2ff866)?
(0xd26+209-0xdf6):DATARMNET227d2ff866;int DATARMNETd9d8392917;if((
DATARMNETd9d8392917=DATARMNET2af09ccd0b(DATARMNET42a992465f,DATARMNET7845d39672,
DATARMNETea08087fc0))&&DATARMNET362b15f941(DATARMNET42a992465f)&&!
DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNETef866573e0&&
DATARMNETecc0627c70.DATARMNET6625085b71!=DATARMNET42a992465f&&
DATARMNET42a992465f!=(0xd26+209-0xdf6)){DATARMNETba6017a3a9=(!
DATARMNET7845d39672)?DATARMNET249a927510:DATARMNETba6017a3a9;DATARMNET0997c5650d
[DATARMNET42a992465f].DATARMNETef866573e0=(0xd26+209-0xdf6);DATARMNETfb7007f025(
);if(hrtimer_active(&DATARMNETba5ea4329f(DATARMNET42a992465f)))hrtimer_cancel(&
DATARMNETba5ea4329f(DATARMNET42a992465f));hrtimer_start(&DATARMNETba5ea4329f(
DATARMNET42a992465f),ns_to_ktime(DATARMNETba6017a3a9*DATARMNET68fc0be252),
HRTIMER_MODE_REL);DATARMNETb7ddf3c5dd[DATARMNETd9d8392917]++;}}void
DATARMNETe377e0368d(u8 DATARMNETded3da1a77,u8 DATARMNET5447204733){struct
DATARMNET63d7680df2*DATARMNET3f85732c70=NULL;struct list_head*
DATARMNET7b34b7b5be=NULL,*next=NULL;int DATARMNET42a992465f;u32
DATARMNET61ab18a4bd;u32 DATARMNETed7800fc72=(0xd2d+202-0xdf7);u32
DATARMNETa0df5de99d=(0xd2d+202-0xdf7);u32 DATARMNETe56f4fbbe6=(0xd2d+202-0xdf7);
u32 DATARMNET8bf94cc2f7=(0xd2d+202-0xdf7);u32 DATARMNET76192fa639=
(0xd2d+202-0xdf7);u32 DATARMNET870611bedd=(0xd2d+202-0xdf7);u32
DATARMNETa6424e3c4e=(0xd2d+202-0xdf7);u8 DATARMNET77e7f4db43=(0xd2d+202-0xdf7);
DATARMNETe074a09496();DATARMNET52de1f3dc0(DATARMNET4510abc30d,
DATARMNETde91850c28,DATARMNETecc0627c70.DATARMNETa2e32cdd3a,DATARMNETecc0627c70.
DATARMNETc252a1f55d,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);for(
DATARMNET42a992465f=(0xd2d+202-0xdf7);DATARMNET42a992465f<DATARMNETc6782fed88;
DATARMNET42a992465f++){DATARMNET61ab18a4bd=DATARMNETeb3978575d(
DATARMNET42a992465f);DATARMNET870611bedd=(0xd2d+202-0xdf7);DATARMNETe56f4fbbe6=
(0xd2d+202-0xdf7);list_for_each_safe(DATARMNET7b34b7b5be,next,&
DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET3dc4262f53){
DATARMNET3f85732c70=list_entry(DATARMNET7b34b7b5be,struct DATARMNET63d7680df2,
DATARMNET04c88b8191);DATARMNETe56f4fbbe6+=DATARMNET3f85732c70->
DATARMNETae4b27456e.DATARMNET35234676d4;}if(DATARMNET12565c8f98){
DATARMNETc54e431bbc(DATARMNET42a992465f,DATARMNET20dc6bb36b,DATARMNETe56f4fbbe6)
;}list_for_each_safe(DATARMNET7b34b7b5be,next,&DATARMNET0997c5650d[
DATARMNET42a992465f].DATARMNET3dc4262f53){DATARMNET3f85732c70=list_entry(
DATARMNET7b34b7b5be,struct DATARMNET63d7680df2,DATARMNET04c88b8191);if(
DATARMNET3f85732c70->DATARMNETae4b27456e.DATARMNET6215127f48){
DATARMNETed7800fc72=DATARMNET3f85732c70->DATARMNETae4b27456e.DATARMNET6215127f48
;DATARMNETa0df5de99d=DATARMNET3f85732c70->DATARMNETae4b27456e.
DATARMNETbaa5765693;DATARMNETa6424e3c4e=DATARMNET3f85732c70->DATARMNETae4b27456e
.DATARMNET35234676d4;DATARMNET77e7f4db43=DATARMNETe02152c351(DATARMNET3f85732c70
,DATARMNETded3da1a77,DATARMNET5447204733);if(DATARMNET77e7f4db43){
DATARMNET870611bedd+=DATARMNETa6424e3c4e;DATARMNET8bf94cc2f7+=
DATARMNETed7800fc72;DATARMNET76192fa639+=DATARMNETa0df5de99d;DATARMNET0997c5650d
[DATARMNET3f85732c70->map_cpu].DATARMNET4133fc9428-=DATARMNETed7800fc72;
DATARMNET3f85732c70->DATARMNETae4b27456e.DATARMNET35234676d4=(0xd2d+202-0xdf7);
if(DATARMNET3f85732c70->map_cpu==DATARMNET42a992465f){DATARMNET61ab18a4bd+=
DATARMNETed7800fc72;DATARMNET3f85732c70->queue_head=DATARMNET61ab18a4bd;}}}}if(
DATARMNET12565c8f98){if(DATARMNET362b15f941(DATARMNET42a992465f)&&!
DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNETef866573e0)DATARMNETfa919d00dc
(DATARMNET42a992465f,DATARMNET870611bedd);DATARMNETc54e431bbc(
DATARMNET42a992465f,DATARMNET20dc6bb36b,(0xd2d+202-0xdf7));}if(
DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET4133fc9428<(0xd2d+202-0xdf7))
DATARMNET68d84e7b98[DATARMNET33a9d4759f]++;if(DATARMNETeea3cef5b6(
DATARMNET42a992465f)>=DATARMNET84413d1257[DATARMNET42a992465f])
DATARMNET84413d1257[DATARMNET42a992465f]=DATARMNETeea3cef5b6(DATARMNET42a992465f
);}DATARMNETecc0627c70.DATARMNETc252a1f55d-=DATARMNET76192fa639;
DATARMNETecc0627c70.DATARMNETa2e32cdd3a-=DATARMNET8bf94cc2f7;DATARMNET52de1f3dc0
(DATARMNET4510abc30d,DATARMNET576793621a,DATARMNETecc0627c70.DATARMNETa2e32cdd3a
,DATARMNETecc0627c70.DATARMNETc252a1f55d,DATARMNET8bf94cc2f7,DATARMNET76192fa639
,NULL,NULL);if((DATARMNETecc0627c70.DATARMNETc252a1f55d<=(0xd2d+202-0xdf7))||(
DATARMNETecc0627c70.DATARMNETa2e32cdd3a<=(0xd2d+202-0xdf7))){DATARMNETecc0627c70
.DATARMNETc252a1f55d=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETa2e32cdd3a=
(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETd9cfd2812b=(0xd2d+202-0xdf7);
DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNET8dcf06727b;if(
DATARMNET365ddeca1c){if(hrtimer_active(&DATARMNETecc0627c70.DATARMNET6fd692fc7a)
)hrtimer_cancel(&DATARMNETecc0627c70.DATARMNET6fd692fc7a);}}}void
DATARMNETa4bf9fbf64(u8 DATARMNETded3da1a77,u8 DATARMNET5447204733){spin_lock_bh(
&DATARMNET3764d083f0);DATARMNETe377e0368d(DATARMNETded3da1a77,
DATARMNET5447204733);if(DATARMNET5447204733==DATARMNET5b5927fd7e){if(
DATARMNET365ddeca1c&&DATARMNETecc0627c70.DATARMNETc252a1f55d&&
DATARMNETecc0627c70.DATARMNETa2e32cdd3a){if(hrtimer_active(&DATARMNETecc0627c70.
DATARMNET6fd692fc7a))hrtimer_cancel(&DATARMNETecc0627c70.DATARMNET6fd692fc7a);
hrtimer_start(&DATARMNETecc0627c70.DATARMNET6fd692fc7a,ns_to_ktime(
DATARMNET4ac8af832c*DATARMNET68fc0be252),HRTIMER_MODE_REL);}DATARMNET14ed771dfb[
DATARMNETd45c383019]++;}spin_unlock_bh(&DATARMNET3764d083f0);}void
DATARMNET495dab3d72(struct sk_buff*skb,struct DATARMNET63d7680df2*
DATARMNET63b1a086d5,struct rmnet_shs_clnt_s*DATARMNET0bf01e7c6f){u8
DATARMNET7d63e92341=(0xd2d+202-0xdf7);
#ifdef DATARMNETdddae6afa8
if(!(DATARMNET0bf01e7c6f->config&DATARMNET2a76d433b3)&&skb->cb[
DATARMNET8fadb49f38]){DATARMNETe377e0368d((0xd2d+202-0xdf7),DATARMNET0b15fd8b54)
;DATARMNET14ed771dfb[DATARMNETc8058e2cff]++;DATARMNET7d63e92341=
(0xd26+209-0xdf6);}
#endif
if(skb_shinfo(skb)->gso_segs){DATARMNET63b1a086d5->DATARMNET11930c5df8+=
skb_shinfo(skb)->gso_segs;DATARMNET0997c5650d[DATARMNET63b1a086d5->map_cpu].
DATARMNET4133fc9428++;DATARMNET63b1a086d5->DATARMNETae4b27456e.
DATARMNET35234676d4+=skb_shinfo(skb)->gso_segs;}else{DATARMNET63b1a086d5->
DATARMNET11930c5df8+=(0xd26+209-0xdf6);DATARMNET0997c5650d[DATARMNET63b1a086d5->
map_cpu].DATARMNET4133fc9428++;DATARMNET63b1a086d5->DATARMNETae4b27456e.
DATARMNET35234676d4++;}DATARMNET63b1a086d5->DATARMNETa8940e4a7b+=
(0xd26+209-0xdf6);DATARMNET63b1a086d5->DATARMNET3ecedac168+=RMNET_SKB_CB(skb)->
coal_bytes;DATARMNET63b1a086d5->DATARMNETce5f56eab9+=RMNET_SKB_CB(skb)->
coal_bufsize;DATARMNET63b1a086d5->DATARMNET2594c418db+=skb->len;
DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNETbaa5765693+=skb->len;
DATARMNETecc0627c70.DATARMNETc252a1f55d+=skb->len;if(DATARMNET63b1a086d5->
DATARMNETae4b27456e.DATARMNET6215127f48>(0xd2d+202-0xdf7)){DATARMNET63b1a086d5->
DATARMNETae4b27456e.tail->next=skb;DATARMNET63b1a086d5->DATARMNETae4b27456e.tail
=DATARMNET63b1a086d5->DATARMNETae4b27456e.tail->next;}else{DATARMNET63b1a086d5->
DATARMNETae4b27456e.head=skb;DATARMNET63b1a086d5->DATARMNETae4b27456e.tail=skb;}
DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNET6215127f48+=(0xd26+209-0xdf6);
DATARMNETecc0627c70.DATARMNETa2e32cdd3a+=(0xd26+209-0xdf6);if(unlikely(
DATARMNET7d63e92341))DATARMNETe377e0368d((0xd2d+202-0xdf7),DATARMNET0b15fd8b54);
DATARMNET52de1f3dc0(DATARMNET720469c0a9,DATARMNETf5c836f9ae,DATARMNET63b1a086d5
->DATARMNETae4b27456e.DATARMNET6215127f48,DATARMNET63b1a086d5->
DATARMNETae4b27456e.DATARMNETbaa5765693,DATARMNETecc0627c70.DATARMNETa2e32cdd3a,
DATARMNETecc0627c70.DATARMNETc252a1f55d,skb,DATARMNET63b1a086d5);}static void
DATARMNETa7afc8cdaa(struct work_struct*DATARMNET33110a3ff5){DATARMNET52de1f3dc0(
DATARMNET4510abc30d,DATARMNET816bb1e327,(0xd2d+202-0xdf7),DATARMNETecc0627c70.
DATARMNET34097703c8,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);if(
DATARMNETecc0627c70.DATARMNETa2e32cdd3a&&DATARMNETecc0627c70.DATARMNET34097703c8
==DATARMNETb3e3b2a799){local_bh_disable();DATARMNETa4bf9fbf64((0xd2d+202-0xdf7),
DATARMNET5b5927fd7e);local_bh_enable();}DATARMNET52de1f3dc0(DATARMNET4510abc30d,
DATARMNETf311f20c00,(0xd2d+202-0xdf7),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);}enum hrtimer_restart DATARMNET0a73c53ae6(struct
hrtimer*DATARMNET6e4292679f){enum hrtimer_restart ret=HRTIMER_NORESTART;
DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET237e7bd5f6,DATARMNETecc0627c70.
DATARMNET34097703c8,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
NULL,NULL);if(DATARMNETecc0627c70.DATARMNETa2e32cdd3a>(0xd2d+202-0xdf7)){if(
DATARMNETecc0627c70.DATARMNET34097703c8==DATARMNET7bc926fdbe){
DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNETb3e3b2a799;hrtimer_forward(
DATARMNET6e4292679f,hrtimer_cb_get_time(DATARMNET6e4292679f),ns_to_ktime(
DATARMNET00d5787aad));ret=HRTIMER_RESTART;DATARMNET52de1f3dc0(
DATARMNET4510abc30d,DATARMNETf16e78412b,DATARMNETecc0627c70.DATARMNETa2e32cdd3a,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}else if(
DATARMNETecc0627c70.DATARMNET34097703c8==DATARMNET8dcf06727b){
DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNET7bc926fdbe;}else if(
DATARMNETecc0627c70.DATARMNET34097703c8==DATARMNETb3e3b2a799){
DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET83147a2e7d,DATARMNETecc0627c70.
DATARMNET34097703c8,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
NULL,NULL);schedule_work((struct work_struct*)&shs_rx_work);}}return ret;}enum
hrtimer_restart DATARMNET2ba63fbd90(struct hrtimer*DATARMNET6e4292679f){const
enum hrtimer_restart ret=HRTIMER_NORESTART;__pm_relax(DATARMNETecc0627c70.ws);
DATARMNET064fbe9e3a=(0xd26+209-0xdf6);return ret;}enum hrtimer_restart
DATARMNETc2b0dbbb32(struct hrtimer*DATARMNET6e4292679f){const enum
hrtimer_restart ret=HRTIMER_NORESTART;struct DATARMNET177911299b
DATARMNET9f249e95ee;struct timespec64 time;DATARMNET8d0d510d45(
DATARMNETe4a6d22824,&DATARMNET9f249e95ee);DATARMNETb5d58adbe7(&
DATARMNET9f249e95ee);ktime_get_boottime_ts64(&time);DATARMNETecc0627c70.
DATARMNETdd3caf9200=ktime_set(time.tv_sec,time.tv_nsec);return ret;}enum
hrtimer_restart DATARMNET4ce9744605(struct hrtimer*DATARMNET6e4292679f){const
enum hrtimer_restart ret=HRTIMER_NORESTART;struct DATARMNETa6f2d499b2*
DATARMNET4b39dc1574=container_of(DATARMNET6e4292679f,struct DATARMNETa6f2d499b2,
DATARMNET758a55f103);DATARMNET371703c28d();schedule_work(&DATARMNET4b39dc1574->
DATARMNET33110a3ff5);return ret;}void DATARMNETe1f95274f1(void){int i;for(i=
(0xd2d+202-0xdf7);i<DATARMNETc6782fed88;i++){DATARMNETecc0627c70.
DATARMNET132b9c7dc4[i].DATARMNET42c3ecbd5e=i;INIT_WORK(&DATARMNETecc0627c70.
DATARMNET132b9c7dc4[i].DATARMNET33110a3ff5,DATARMNET056c939591);hrtimer_init(&
DATARMNETecc0627c70.DATARMNET132b9c7dc4[i].DATARMNET758a55f103,CLOCK_MONOTONIC,
HRTIMER_MODE_REL);DATARMNETecc0627c70.DATARMNET132b9c7dc4[i].DATARMNET758a55f103
.function=DATARMNET4ce9744605;}hrtimer_init(&DATARMNETecc0627c70.
DATARMNET6fd692fc7a,CLOCK_MONOTONIC,HRTIMER_MODE_REL);DATARMNETecc0627c70.
DATARMNET6fd692fc7a.function=DATARMNET0a73c53ae6;hrtimer_init(&
DATARMNETecc0627c70.DATARMNET645fb3b468,CLOCK_MONOTONIC,HRTIMER_MODE_REL);
DATARMNETecc0627c70.DATARMNET645fb3b468.function=DATARMNETc2b0dbbb32;
hrtimer_init(&DATARMNETecc0627c70.hrtimer_wake,CLOCK_MONOTONIC,HRTIMER_MODE_REL)
;DATARMNETecc0627c70.hrtimer_wake.function=DATARMNET2ba63fbd90;INIT_WORK(&
shs_rx_work.DATARMNET33110a3ff5,DATARMNETa7afc8cdaa);}unsigned int
DATARMNET02cdd9b125(void){unsigned int DATARMNET9f4bc49c6f=DATARMNET12565c8f98;
int i;DATARMNET12565c8f98=(0xd2d+202-0xdf7);for(i=(0xd2d+202-0xdf7);i<
DATARMNETc6782fed88;i++){hrtimer_cancel(&DATARMNETba5ea4329f(i));
cancel_work_sync(&DATARMNETecc0627c70.DATARMNET132b9c7dc4[i].DATARMNET33110a3ff5
);}cancel_work_sync(&shs_rx_work.DATARMNET33110a3ff5);return DATARMNET9f4bc49c6f
;}int DATARMNET82e88dbb56(struct sk_buff_head*list,int cpu){struct sk_buff*skb;
struct softnet_data*DATARMNETe95ad852b4=&per_cpu(softnet_data,cpu);rtnl_lock();
while((skb=skb_dequeue_tail(list))!=NULL){if(rmnet_is_real_dev_registered(skb->
dev)){DATARMNET68d84e7b98[DATARMNETf8de7cb644]++;atomic_long_inc(&skb->dev->
rx_dropped);input_queue_head_incr(DATARMNETe95ad852b4);DATARMNETe95ad852b4->
dropped++;kfree_skb(skb);}}rtnl_unlock();return(0xd2d+202-0xdf7);}static int
DATARMNET2aa4ef6ff9(struct notifier_block*DATARMNETea991f24f2,unsigned long
DATARMNET7ee7b05b93,void*DATARMNETe53e117dd2){int DATARMNETc3193054f2,
DATARMNET25fc1e341e,cpu;int*DATARMNETc628e18b55=(int*)DATARMNETe53e117dd2;struct
sk_buff_head*DATARMNET49115bea94;struct sk_buff_head*DATARMNETaf21dd6000;
for_each_possible_cpu(cpu){DATARMNET49115bea94=&DATARMNET3de2536baf(cpu);
DATARMNETaf21dd6000=&DATARMNET832731a933(cpu);DATARMNETc3193054f2=skb_queue_len(
DATARMNET49115bea94);DATARMNET25fc1e341e=skb_queue_len(DATARMNETaf21dd6000);if(
DATARMNET1ad396a890&&(DATARMNETc3193054f2+DATARMNET25fc1e341e)>=
DATARMNET1ad396a890){DATARMNET82e88dbb56(&per_cpu(softnet_data,cpu).
input_pkt_queue,cpu);DATARMNETc3193054f2=skb_queue_len(DATARMNET49115bea94);
DATARMNET25fc1e341e=skb_queue_len(DATARMNETaf21dd6000);if(DATARMNET25fc1e341e>=
DATARMNET1ad396a890){DATARMNET82e88dbb56(DATARMNET49115bea94,cpu);}(*
DATARMNETc628e18b55)++;}}return(0xd2d+202-0xdf7);}static struct notifier_block
DATARMNET105c85d84c={.notifier_call=DATARMNET2aa4ef6ff9,};void
DATARMNET78bb6be330(struct rmnet_map_dl_ind_hdr*dlhdr,struct
rmnet_map_control_command_header*qcmd){DATARMNET7ed4cef8a3(dlhdr);}void
DATARMNET7ed4cef8a3(struct rmnet_map_dl_ind_hdr*dlhdr){DATARMNETda96251102(
DATARMNET23f8730007,DATARMNET4ebbc01257,dlhdr->le.seq,dlhdr->le.pkts,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);if(!DATARMNET016351c9e4||
DATARMNET016351c9e4<dlhdr->le.seq)DATARMNET016351c9e4=dlhdr->le.seq;else{if(
DATARMNET756bdd424a)pr_info(
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x3a\x20\x4f\x46\x4f\x20\x64\x6c\x20\x73\x65\x71\x20\x25\x75\x20\x62\x65\x66\x6f\x72\x65\x20\x25\x75"
,DATARMNET016351c9e4,dlhdr->le.seq);DATARMNET016351c9e4=dlhdr->le.seq;
DATARMNET68d84e7b98[DATARMNETf352684b06]++;}if(!spin_is_locked(&
DATARMNET3764d083f0)){if(DATARMNETecc0627c70.DATARMNETa2e32cdd3a>
(0xd2d+202-0xdf7)&&DATARMNETecc0627c70.DATARMNET6fe0db3a49!=DATARMNET4ab5a31d0c)
{DATARMNET14ed771dfb[DATARMNET01bf75e27c]++;DATARMNETa4bf9fbf64(
(0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}DATARMNETecc0627c70.DATARMNET6fe0db3a49=
DATARMNET1c55e5fdb1;}}void DATARMNETf61cd23b90(struct rmnet_map_dl_ind_trl*dltrl
,struct rmnet_map_control_command_header*qcmd){DATARMNET613a81eca8(dltrl);}void
DATARMNET613a81eca8(struct rmnet_map_dl_ind_trl*dltrl){DATARMNET52de1f3dc0(
DATARMNET23f8730007,DATARMNET0808844559,DATARMNETecc0627c70.DATARMNETa2e32cdd3a,
(0xd2d+202-0xdf7),dltrl->seq_le,(0x16e8+787-0xc0c),NULL,NULL);
DATARMNETecc0627c70.DATARMNET6fe0db3a49=DATARMNET4ab5a31d0c;if(
DATARMNETecc0627c70.DATARMNETa2e32cdd3a>(0xd2d+202-0xdf7)&&!spin_is_locked(&
DATARMNET3764d083f0)){DATARMNET14ed771dfb[DATARMNET84a9e136b8]++;
DATARMNETa4bf9fbf64((0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}}void
DATARMNET45d8cdb224(struct net_device*dev,struct net_device*vnd){struct rps_map*
map;int rc;u8 DATARMNET0e4304d903;u8 map_mask;u8 map_len;if(DATARMNETecc0627c70.
DATARMNETfc89d842ae)return;map=rcu_dereference(vnd->_rx->rps_map);if(!map){
map_mask=(0xd2d+202-0xdf7);map_len=(0xd2d+202-0xdf7);}else{map_mask=
DATARMNET928c931df9(map);map_len=DATARMNET310c3eb16e(map_mask);}
DATARMNETecc0627c70.port=rmnet_get_port(dev);DATARMNETecc0627c70.map_mask=
map_mask;DATARMNETecc0627c70.map_len=map_len;DATARMNETecc0627c70.
DATARMNETba3f7a11ef=(0xd1f+216-0xdf5);DATARMNETecc0627c70.DATARMNET5c24e1df05=
(0xd26+209-0xdf6);DATARMNETecc0627c70.DATARMNET6625085b71=(0xd26+209-0xdf6);
DATARMNETecc0627c70.DATARMNET7d667e828e=(0xd26+209-0xdf6);for(
DATARMNET0e4304d903=(0xd2d+202-0xdf7);DATARMNET0e4304d903<DATARMNETc6782fed88;
DATARMNET0e4304d903++)INIT_LIST_HEAD(&DATARMNET0997c5650d[DATARMNET0e4304d903].
DATARMNET3dc4262f53);DATARMNETe6e8431304();rc=register_oom_notifier(&
DATARMNET105c85d84c);if(rc<(0xd2d+202-0xdf7)){pr_info(
"\x52\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x6f\x6d\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x69\x6c\x75\x72\x65"
);}pr_info(
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x20\x69\x6e\x69\x74\x20\x77\x69\x74\x68\x20\x25\x78"
,DATARMNETecc0627c70.map_mask);DATARMNETecc0627c70.ws=wakeup_source_register(
NULL,"\x52\x4d\x4e\x45\x54\x5f\x53\x48\x53");DATARMNETecc0627c70.
DATARMNETfc89d842ae=(0xd26+209-0xdf6);}void DATARMNETeacad8334e(void){struct
hlist_node*tmp;struct DATARMNET63d7680df2*DATARMNET63b1a086d5;struct sk_buff*
DATARMNET9a788b5480;int bkt;struct sk_buff*buf;unsigned long ht_flags;if(!
DATARMNETecc0627c70.DATARMNETa2e32cdd3a)return;spin_lock_irqsave(&
DATARMNET3764d083f0,ht_flags);hash_for_each_safe(DATARMNETe603c3a4b3,bkt,tmp,
DATARMNET63b1a086d5,list){for((buf=DATARMNET63b1a086d5->DATARMNETae4b27456e.head
);buf!=NULL;buf=DATARMNET9a788b5480){DATARMNET9a788b5480=buf->next;if(buf)
consume_skb(buf);}DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNET6215127f48=
(0xd2d+202-0xdf7);DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNETbaa5765693=
(0xd2d+202-0xdf7);DATARMNET63b1a086d5->DATARMNETae4b27456e.head=NULL;
DATARMNET63b1a086d5->DATARMNETae4b27456e.tail=NULL;}DATARMNETecc0627c70.
DATARMNETc252a1f55d=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETa2e32cdd3a=
(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETd9cfd2812b=(0xd2d+202-0xdf7);
DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNET8dcf06727b;
spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);}void DATARMNET44459105b4(
struct sk_buff*skb,struct DATARMNET63d7680df2*node_p){struct iphdr*ip4h,
DATARMNETc00baf31c3;struct ipv6hdr*ip6h,DATARMNETcf1d9e2c1e;struct tcphdr*tp,
DATARMNETd1ff6cd568;struct udphdr*up,DATARMNETc82d2f4e16;int len=
(0xd2d+202-0xdf7);u16 ip_len=(0xd2d+202-0xdf7);__be16 frag_off;u8 protocol;
node_p->DATARMNETa1099c74fe=(0xd2d+202-0xdf7);switch(skb->protocol){case htons(
ETH_P_IP):ip4h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),sizeof(*ip4h),&
DATARMNETc00baf31c3);if(!ip4h)return;node_p->DATARMNET1e9d25d9ff=ip4h->protocol;
memcpy(&(node_p->ip_hdr.DATARMNETac9bbaad7c),ip4h,sizeof(*ip4h));ip_len=ip4h->
ihl*(0xd11+230-0xdf3);node_p->DATARMNETa1099c74fe=!(ip4h->frag_off&htons(IP_DF))
;break;case htons(ETH_P_IPV6):ip6h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),
sizeof(*ip6h),&DATARMNETcf1d9e2c1e);if(!ip6h)return;node_p->DATARMNET1e9d25d9ff=
ip6h->nexthdr;memcpy(&(node_p->ip_hdr.DATARMNET1688a97aa4),ip6h,sizeof(*ip6h));
protocol=ip6h->nexthdr;len=ipv6_skip_exthdr(skb,sizeof(*ip6h),&protocol,&
frag_off);if(len<(0xd2d+202-0xdf7)){return;}ip_len=(u16)len;break;default:break;
}if(node_p->DATARMNET1e9d25d9ff==IPPROTO_TCP){tp=DATARMNETefcaf5fbe9(skb,ip_len,
sizeof(*tp),&DATARMNETd1ff6cd568);if(!tp)return;memcpy(&(node_p->
DATARMNETe33b41dad9.tp),tp,sizeof(struct tcphdr));}else if(node_p->
DATARMNET1e9d25d9ff==IPPROTO_UDP){up=DATARMNETefcaf5fbe9(skb,ip_len,sizeof(*up),
&DATARMNETc82d2f4e16);if(!up)return;memcpy(&(node_p->DATARMNETe33b41dad9.up),up,
sizeof(struct udphdr));}else{}}void DATARMNET02fc8b29a0(struct
DATARMNET63d7680df2*node_p,struct rmnet_shs_clnt_s*DATARMNET0bf01e7c6f,struct
net_device*dev){u32 DATARMNET421230d879;u32 DATARMNET5eee131e74;node_p->
DATARMNET85c698ec34=(0xd26+209-0xdf6);node_p->DATARMNETfbbec4c537=
DATARMNET0bf01e7c6f->map_mask;node_p->DATARMNETa59ce1fd2d=DATARMNET310c3eb16e(
node_p->DATARMNETfbbec4c537);node_p->map_cpu=DATARMNETecc0627c70.
DATARMNET7d667e828e;node_p->map_index=node_p->map_cpu;node_p->
DATARMNET0371465875=(0xd2d+202-0xdf7);if(DATARMNET362b15f941(node_p->map_cpu)){
DATARMNET5e4aeef593(DATARMNETecc0627c70.DATARMNET5c24e1df05);DATARMNETfb7007f025
();}DATARMNET765b8ecfba(dev,DATARMNETecc0627c70.DATARMNET5c24e1df05,
(0xd26+209-0xdf6));DATARMNET421230d879=(DATARMNET3de2536baf(node_p->map_cpu).
qlen+DATARMNET832731a933(node_p->map_cpu).qlen);if(DATARMNET421230d879>
DATARMNET673cf85e28)DATARMNET673cf85e28=DATARMNET421230d879;node_p->queue_head=
DATARMNETeb3978575d(DATARMNETecc0627c70.DATARMNET5c24e1df05)+DATARMNET421230d879
;DATARMNET5eee131e74=(DATARMNET3de2536baf(DATARMNETecc0627c70.
DATARMNET5c24e1df05).qlen+DATARMNET832731a933(DATARMNETecc0627c70.
DATARMNET5c24e1df05).qlen);if(DATARMNET362b15f941(node_p->map_cpu)){if(!
hrtimer_active(&DATARMNETba5ea4329f(node_p->map_cpu))){hrtimer_start(&
DATARMNETba5ea4329f(node_p->map_cpu),ns_to_ktime((DATARMNET566e381630)*
DATARMNET68fc0be252),HRTIMER_MODE_REL);}}else if((DATARMNET421230d879+
DATARMNET5eee131e74)<DATARMNET0085702236){if(!hrtimer_active(&
DATARMNETba5ea4329f(node_p->map_cpu))){hrtimer_start(&DATARMNETba5ea4329f(node_p
->map_cpu),ns_to_ktime((DATARMNET566e381630/(0xeb7+1130-0x130d))*
DATARMNET68fc0be252),HRTIMER_MODE_REL);}}else{if(!hrtimer_active(&
DATARMNETba5ea4329f(node_p->map_cpu))){hrtimer_start(&DATARMNETba5ea4329f(node_p
->map_cpu),ns_to_ktime((DATARMNET566e381630/(0xd1f+216-0xdf5))*
DATARMNET68fc0be252),HRTIMER_MODE_REL);}}}int DATARMNET756778f14f(struct sk_buff
*skb,struct rmnet_shs_clnt_s*DATARMNET0bf01e7c6f){struct DATARMNET63d7680df2*
node_p;struct hlist_node*tmp;int map=DATARMNETecc0627c70.map_mask;unsigned long
ht_flags;int DATARMNETcfb5dc7296;int map_cpu;u32 DATARMNET5c4a331b9c,hash;u8
is_match_found=(0xd2d+202-0xdf7);u8 DATARMNET935af10724=(0xd2d+202-0xdf7);u8
DATARMNET7c5ef97eab=(0xd2d+202-0xdf7);struct DATARMNETe600c5b727*
DATARMNETa4055affd5;struct rmnet_priv*priv;if(!(DATARMNET0bf01e7c6f->config&
RMNET_SHS_STMP_ALL)&&!DATARMNET9303cec796(skb)){DATARMNETe767554e6e(skb);return
(0xd2d+202-0xdf7);}if((unlikely(!map))||!DATARMNETecc0627c70.DATARMNETfc89d842ae
){DATARMNETe767554e6e(skb);DATARMNET015fb2ba0e(DATARMNET720469c0a9,
DATARMNETe0fee0991a,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);DATARMNET68d84e7b98[DATARMNETe3c02ddaeb]++;return
(0xd2d+202-0xdf7);}DATARMNET52de1f3dc0(DATARMNET720469c0a9,DATARMNET856c53293b,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb,
NULL);hash=skb_get_hash(skb);if(DATARMNET0bf01e7c6f->map_mask){skb->hash=57005;
hash=57005;if(raw_smp_processor_id()==DATARMNETecc0627c70.DATARMNET6625085b71&&
DATARMNETecc0627c70.DATARMNET6625085b71!=DATARMNETecc0627c70.DATARMNET7d667e828e
){netif_rx(skb);DATARMNETecc0627c70.DATARMNETfeee6933fc++;if(DATARMNETecc0627c70
.DATARMNETfeee6933fc>DATARMNETf4cacbb5dc){DATARMNETa4bf9fbf64(
DATARMNETf3dfa53867,DATARMNET0b15fd8b54);RCU_INIT_POINTER(rmnet_shs_switch,NULL)
;DATARMNET68d84e7b98[DATARMNET43405942ed]++;DATARMNETecc0627c70.
DATARMNETfeee6933fc=(0xd2d+202-0xdf7);}return(0xd2d+202-0xdf7);}}
spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);do{hash_for_each_possible_safe(
DATARMNETe603c3a4b3,node_p,tmp,list,hash){if(hash!=node_p->hash)continue;
DATARMNETda96251102(DATARMNET720469c0a9,DATARMNET08b6defcff,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb,NULL);
DATARMNET5c4a331b9c=node_p->map_index;is_match_found=(0xd26+209-0xdf6);
DATARMNET935af10724=(0xd26+209-0xdf6);if(node_p->DATARMNET85c698ec34){
DATARMNETe074a09496();if(raw_smp_processor_id()!=DATARMNETecc0627c70.
DATARMNET7d667e828e){DATARMNET68d84e7b98[DATARMNETbb641cd339]++;}if(
DATARMNETecc0627c70.DATARMNET5c24e1df05!=DATARMNETecc0627c70.DATARMNET7d667e828e
){if(node_p->map_cpu!=DATARMNETecc0627c70.DATARMNET7d667e828e){
DATARMNETa4055affd5=&DATARMNET0997c5650d[DATARMNETecc0627c70.DATARMNET7d667e828e
];DATARMNETe102b3a798(node_p,&DATARMNETa4055affd5->DATARMNET3dc4262f53,node_p->
map_cpu);DATARMNETb7ddf3c5dd[DATARMNETcf84373518]++;}DATARMNET02fc8b29a0(node_p,
DATARMNET0bf01e7c6f,skb->dev);netif_rx(skb);break;}node_p->DATARMNET0371465875++
;DATARMNET495dab3d72(skb,node_p,DATARMNET0bf01e7c6f);if(!rcu_dereference(
rmnet_shs_switch)){DATARMNET68d84e7b98[DATARMNET2e68f4bd9f]++;
DATARMNET7c5ef97eab=DATARMNET27fb9a225d;break;}if(DATARMNETadb0248bd4(
DATARMNETecc0627c70.DATARMNET7d667e828e)>=(node_p->queue_head+node_p->
DATARMNET0371465875)){DATARMNET7c5ef97eab=DATARMNETbbf8fe40aa;break;}if(
DATARMNETaf998640fd&&node_p->DATARMNETae4b27456e.DATARMNET6215127f48>
DATARMNETaf998640fd){DATARMNET14ed771dfb[DATARMNETcc3c294f38]++;
DATARMNET7c5ef97eab=DATARMNET95c85e6fe1;break;}spin_unlock_irqrestore(&
DATARMNET3764d083f0,ht_flags);return(0xd2d+202-0xdf7);}else DATARMNET495dab3d72(
skb,node_p,DATARMNET0bf01e7c6f);break;}if(is_match_found)break;if(
DATARMNET0bf01e7c6f->map_mask){DATARMNETcfb5dc7296=DATARMNET362c14e98b(
DATARMNETecc0627c70.map_mask&DATARMNET9273f84bf1&~DATARMNETecc0627c70.
DATARMNETba3f7a11ef);}else{DATARMNETcfb5dc7296=DATARMNET762cfa52fe(
DATARMNETecc0627c70.map_mask&DATARMNET9273f84bf1&~DATARMNETecc0627c70.
DATARMNETba3f7a11ef);}if(DATARMNETcfb5dc7296<(0xd2d+202-0xdf7)){
DATARMNET68d84e7b98[DATARMNETa1f9420686]++;break;}if(DATARMNETecc0627c70.
DATARMNET64bb8a8f57>DATARMNETbfe31ef643){DATARMNET68d84e7b98[DATARMNETe6e77f9f03
]++;break;}node_p=kzalloc(sizeof(*node_p),GFP_ATOMIC);if(!node_p){
DATARMNET68d84e7b98[DATARMNET394acaf558]++;break;}DATARMNETecc0627c70.
DATARMNET64bb8a8f57++;node_p->dev=skb->dev;node_p->hash=skb->hash;node_p->
map_cpu=DATARMNETcfb5dc7296;node_p->map_index=DATARMNET04e8d1b862(node_p->
map_cpu,map);INIT_LIST_HEAD(&node_p->DATARMNET04c88b8191);DATARMNET44459105b4(
skb,node_p);DATARMNET350f55bfca(node_p);if(!node_p->DATARMNET341ea38662){
DATARMNETecc0627c70.DATARMNET64bb8a8f57--;kfree(node_p);break;}if(
DATARMNET0bf01e7c6f->map_mask){DATARMNETe074a09496();DATARMNET02fc8b29a0(node_p,
DATARMNET0bf01e7c6f,skb->dev);}else{node_p->DATARMNETfbbec4c537=
DATARMNETecc0627c70.map_mask;node_p->DATARMNETa59ce1fd2d=DATARMNETecc0627c70.
map_len;}DATARMNET0349051465(node_p->map_cpu);map_cpu=node_p->map_cpu;
DATARMNETa4055affd5=&DATARMNET0997c5650d[map_cpu];priv=netdev_priv(node_p->dev);
if(!priv){rm_err(
"\x70\x72\x69\x76\x20\x66\x6f\x72\x20\x6e\x65\x74\x64\x65\x76\x20\x69\x73\x20\x6e\x75\x6c\x6c\x20\x66\x6f\x72\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78"
,node_p->hash);DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;}else{node_p->
DATARMNET341ea38662->mux_id=priv->mux_id;rm_err(
"\x53\x48\x53\x5f\x4d\x55\x58\x3a\x20\x6d\x75\x78\x20\x69\x64\x20\x66\x6f\x72\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x69\x73\x20\x25\x64"
,node_p->hash,node_p->DATARMNET341ea38662->mux_id);}DATARMNET3e37ad2816(node_p,&
DATARMNETa4055affd5->DATARMNET3dc4262f53);hash_add_rcu(DATARMNETe603c3a4b3,&
node_p->list,skb->hash);if(!node_p->DATARMNET85c698ec34)DATARMNET495dab3d72(skb,
node_p,DATARMNET0bf01e7c6f);else{netif_rx(skb);spin_unlock_irqrestore(&
DATARMNET3764d083f0,ht_flags);return(0xd2d+202-0xdf7);}DATARMNET935af10724=
(0xd26+209-0xdf6);break;}while((0xd2d+202-0xdf7));if(!DATARMNET935af10724){
spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);DATARMNET68d84e7b98[
DATARMNET99db6e7d86]++;DATARMNETe767554e6e(skb);DATARMNET015fb2ba0e(
DATARMNET720469c0a9,DATARMNETe0fee0991a,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);return(0xd2d+202-0xdf7);}if(!
DATARMNETecc0627c70.DATARMNETd9cfd2812b&&DATARMNETecc0627c70.DATARMNETa2e32cdd3a
&&DATARMNET365ddeca1c){DATARMNETecc0627c70.DATARMNETd9cfd2812b=(0xd26+209-0xdf6)
;DATARMNETecc0627c70.DATARMNET34097703c8=DATARMNET7bc926fdbe;if(hrtimer_active(&
DATARMNETecc0627c70.DATARMNET6fd692fc7a)){DATARMNETda96251102(
DATARMNET720469c0a9,DATARMNETf730f80f06,DATARMNET2f67183a86,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb,NULL);hrtimer_cancel(&
DATARMNETecc0627c70.DATARMNET6fd692fc7a);}hrtimer_start(&DATARMNETecc0627c70.
DATARMNET6fd692fc7a,ns_to_ktime(DATARMNET4ac8af832c*DATARMNET68fc0be252),
HRTIMER_MODE_REL);DATARMNETda96251102(DATARMNET720469c0a9,DATARMNETdd870ee64c,
DATARMNET2f67183a86,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb
,NULL);}spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);if(
DATARMNETecc0627c70.DATARMNETa2e32cdd3a>DATARMNET7d18c0bcf8){if(
DATARMNET58b009b16b)DATARMNET14ed771dfb[DATARMNET802083239a]++;
DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET562b7d32a8,(0xd2d+202-0xdf7),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);
DATARMNETa4bf9fbf64(DATARMNET0acd775aa8,DATARMNET0b15fd8b54);}else if(
DATARMNETecc0627c70.DATARMNETc252a1f55d>DATARMNETea75c7b6f6){if(
DATARMNET58b009b16b)DATARMNET14ed771dfb[DATARMNETed69052342]++;
DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET99640d60f7,(0xd2d+202-0xdf7),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);
DATARMNETa4bf9fbf64(DATARMNET2217440c2e,DATARMNET0b15fd8b54);}else if(
DATARMNET7c5ef97eab){DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET562b7d32a8
,(0xd26+209-0xdf6),DATARMNETecc0627c70.DATARMNETa2e32cdd3a,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);if(DATARMNET58b009b16b)DATARMNET14ed771dfb[
DATARMNETdf6ecde77a]++;DATARMNETa4bf9fbf64(DATARMNET7c5ef97eab,
DATARMNET0b15fd8b54);}else if((DATARMNET0bf01e7c6f->config&RMNET_SHS_NO_DLMKR)&&
DATARMNETecc0627c70.DATARMNETa2e32cdd3a){if(DATARMNET58b009b16b)
DATARMNET14ed771dfb[DATARMNET04dac3a62b]++;DATARMNETa4bf9fbf64((0xd2d+202-0xdf7)
,DATARMNET0b15fd8b54);}else if(DATARMNETecc0627c70.DATARMNET34097703c8==
DATARMNETb3e3b2a799){DATARMNET14ed771dfb[DATARMNETcfb1764a91]++;
DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNETa2bd301af7,(0xd26+209-0xdf6),
DATARMNETecc0627c70.DATARMNETa2e32cdd3a,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
NULL,NULL);DATARMNETa4bf9fbf64((0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}else if(!
(DATARMNET0bf01e7c6f->config&RMNET_SHS_NO_DLMKR)&&DATARMNETecc0627c70.
DATARMNETa2e32cdd3a&&DATARMNETecc0627c70.DATARMNET6fe0db3a49!=
DATARMNET1c55e5fdb1){DATARMNET14ed771dfb[DATARMNET01bf75e27c]++;
DATARMNETa4bf9fbf64((0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}return
(0xd2d+202-0xdf7);}void DATARMNET9297340f58(unsigned int DATARMNET9f4bc49c6f){
DATARMNETdf74db7e38();DATARMNETecc0627c70.DATARMNET9c869c1ec2=(0xd2d+202-0xdf7);
unregister_oom_notifier(&DATARMNET105c85d84c);wakeup_source_unregister(
DATARMNETecc0627c70.ws);if(DATARMNETecc0627c70.DATARMNETf5ab31b9b0)
hrtimer_cancel(&DATARMNETecc0627c70.DATARMNET6fd692fc7a);hrtimer_cancel(&
DATARMNETecc0627c70.DATARMNET645fb3b468);hrtimer_cancel(&DATARMNETecc0627c70.
hrtimer_wake);memset(&DATARMNETecc0627c70,(0xd2d+202-0xdf7),sizeof(
DATARMNETecc0627c70));DATARMNETecc0627c70.port=NULL;DATARMNETecc0627c70.
DATARMNETfc89d842ae=(0xd2d+202-0xdf7);DATARMNET12565c8f98=DATARMNET9f4bc49c6f;}

View File

@@ -0,0 +1,216 @@
/* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include "rmnet_shs.h"
unsigned int DATARMNET1fc3ad67fd __read_mostly=DATARMNETe4c625a3a3;module_param(
DATARMNET1fc3ad67fd,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET1fc3ad67fd,
"\x49\x6e\x74\x65\x72\x76\x61\x6c\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x77\x71\x20\x72\x75\x6e\x73\x20\x28\x6d\x73\x29"
);unsigned long DATARMNETa804c0b904 __read_mostly=DATARMNET4899358462;
module_param(DATARMNETa804c0b904,ulong,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETa804c0b904,
"\x4d\x61\x78\x20\x66\x6c\x6f\x77\x20\x69\x6e\x61\x63\x74\x69\x76\x65\x20\x74\x69\x6d\x65\x20\x62\x65\x66\x6f\x72\x65\x20\x63\x6c\x65\x61\x6e\x20\x75\x70"
);unsigned int DATARMNETcab56af6d5 __read_mostly=(0xeb7+710-0x112d);module_param
(DATARMNETcab56af6d5,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETcab56af6d5,
"\x6d\x6f\x76\x69\x6e\x67\x20\x61\x76\x65\x72\x61\x67\x65\x20\x77\x65\x69\x67\x68\x74\x61\x67\x65"
);unsigned long long DATARMNET713717107f[DATARMNETc6782fed88]__read_mostly={
DATARMNETfbee9e182e,DATARMNETb38cb72105,DATARMNETb38cb72105,DATARMNETb38cb72105,
DATARMNET243c638e7d,DATARMNET243c638e7d,DATARMNET243c638e7d,DATARMNET243c638e7d}
;module_param_array(DATARMNET713717107f,ullong,NULL,(0xdb7+6665-0x261c));
MODULE_PARM_DESC(DATARMNET713717107f,
"\x4d\x61\x78\x20\x70\x6b\x74\x73\x20\x63\x6f\x72\x65\x20\x63\x61\x6e\x20\x68\x61\x6e\x64\x6c\x65"
);unsigned long long DATARMNET4793ed48af[DATARMNETc6782fed88]__read_mostly={
DATARMNET9bc9e0cac3,DATARMNET9bc9e0cac3,DATARMNET9bc9e0cac3,DATARMNET9bc9e0cac3,
DATARMNET22feab5726,DATARMNET22feab5726,DATARMNET22feab5726,DATARMNET22feab5726}
;module_param_array(DATARMNET4793ed48af,ullong,NULL,(0xdb7+6665-0x261c));
MODULE_PARM_DESC(DATARMNET4793ed48af,
"\x4d\x69\x6e\x20\x70\x6b\x74\x73\x20\x63\x6f\x72\x65\x20\x63\x61\x6e\x20\x68\x61\x6e\x64\x6c\x65"
);unsigned int DATARMNET18f2ba4444[DATARMNETc6782fed88];module_param_array(
DATARMNET18f2ba4444,uint,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET18f2ba4444,
"\x4e\x75\x6d\x20\x66\x6c\x6f\x77\x73\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x64\x20\x70\x65\x72\x20\x63\x6f\x72\x65"
);unsigned int DATARMNET2d482e7d9f[DATARMNETc6782fed88];module_param_array(
DATARMNET2d482e7d9f,uint,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET2d482e7d9f,
"\x4e\x75\x6d\x20\x66\x69\x6c\x74\x65\x72\x65\x64\x20\x66\x6c\x6f\x77\x73\x20\x70\x65\x72\x20\x63\x6f\x72\x65"
);unsigned long long DATARMNET77240d48ee[DATARMNETc6782fed88];module_param_array
(DATARMNET77240d48ee,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET77240d48ee,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x62\x79\x74\x65\x73\x20\x70\x65\x72\x20\x43\x50\x55"
);unsigned long long DATARMNET77189ab85c[DATARMNETc6782fed88];module_param_array
(DATARMNET77189ab85c,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET77189ab85c,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x74\x6f\x74\x61\x6c\x20\x70\x6b\x74\x73\x20\x70\x65\x72\x20\x43\x50\x55"
);unsigned long long DATARMNET79263b1183[DATARMNETc6782fed88];module_param_array
(DATARMNET79263b1183,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET79263b1183,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x65\x6e\x71\x20\x72\x61\x74\x65\x20\x70\x65\x72\x20\x43\x50\x55"
);unsigned long long DATARMNET229d52b629[DATARMNETc6782fed88];module_param_array
(DATARMNET229d52b629,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET229d52b629,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x70\x6b\x74\x20\x65\x6e\x71\x20\x72\x61\x74\x65\x20\x70\x65\x72\x20\x43\x50\x55"
);unsigned long long DATARMNETd27ed7efea[DATARMNETc6782fed88];module_param_array
(DATARMNETd27ed7efea,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNETd27ed7efea,
"\x53\x48\x53\x20\x6e\x77\x20\x73\x74\x61\x63\x6b\x20\x71\x75\x65\x75\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x64\x20\x64\x69\x66\x66"
);unsigned long long DATARMNET377ecf13ca[DATARMNETc6782fed88];module_param_array
(DATARMNET377ecf13ca,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET377ecf13ca,
"\x53\x48\x53\x20\x6e\x77\x20\x71\x75\x65\x75\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x64\x20\x74\x6f\x74\x61\x6c"
);unsigned long DATARMNETbf3b6fdfc8[DATARMNET2f9ea73326];module_param_array(
DATARMNETbf3b6fdfc8,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNETbf3b6fdfc8,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x68\x61\x73\x68\x20\x66\x6c\x6f\x77");
unsigned long DATARMNET0fec241216[DATARMNET2f9ea73326];module_param_array(
DATARMNET0fec241216,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET0fec241216,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x68\x61\x73\x68\x20\x74\x72\x61\x6e\x73\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c"
);unsigned long long DATARMNET9e5e8e4048[DATARMNET2f9ea73326];module_param_array
(DATARMNET9e5e8e4048,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET9e5e8e4048,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x69\x6e\x61\x63\x74\x69\x76\x65\x20\x66\x6c\x6f\x77\x20\x74\x69\x6d\x65"
);int DATARMNETdba344c809[DATARMNET2f9ea73326]={-(0xd26+209-0xdf6),-
(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-
(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-
(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-
(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6)};module_param_array(
DATARMNETdba344c809,int,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNETdba344c809,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x66\x6c\x6f\x77\x20\x70\x72\x6f\x63\x65\x73\x73\x69\x6e\x67\x20\x43\x50\x55"
);int DATARMNET99a934c43a[DATARMNET2f9ea73326]={-(0xd26+209-0xdf6),-
(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-
(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-
(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-
(0xd26+209-0xdf6),-(0xd26+209-0xdf6),-(0xd26+209-0xdf6)};module_param_array(
DATARMNET99a934c43a,int,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET99a934c43a,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x66\x6c\x6f\x77\x20\x70\x72\x6f\x63\x20\x43\x50\x55"
);unsigned long long DATARMNET47956cbb0f[DATARMNET2f9ea73326];module_param_array
(DATARMNET47956cbb0f,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET47956cbb0f,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x62\x79\x74\x65\x73\x20\x70\x65\x72\x20\x66\x6c\x6f\x77"
);unsigned long long DATARMNET338c8e7a2b[DATARMNET2f9ea73326];module_param_array
(DATARMNET338c8e7a2b,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET338c8e7a2b,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x74\x6f\x74\x61\x6c\x20\x70\x6b\x74\x73\x20\x70\x65\x72\x20\x66\x6c\x6f\x77"
);unsigned long long DATARMNET4b1ae621cd[DATARMNET2f9ea73326];module_param_array
(DATARMNET4b1ae621cd,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET4b1ae621cd,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x65\x6e\x71\x20\x72\x61\x74\x65\x20\x70\x65\x72\x20\x66\x6c\x6f\x77"
);unsigned long long DATARMNETf5133a99c6[DATARMNET2f9ea73326];module_param_array
(DATARMNETf5133a99c6,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNETf5133a99c6,
"\x53\x48\x53\x20\x73\x74\x61\x6d\x70\x20\x70\x6b\x74\x20\x65\x6e\x71\x20\x72\x61\x74\x65\x20\x70\x65\x72\x20\x66\x6c\x6f\x77"
);unsigned long long DATARMNETc5d73c43e6[DATARMNET2f9ea73326];module_param_array
(DATARMNETc5d73c43e6,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNETc5d73c43e6,
"\x53\x48\x53\x20\x53\x75\x67\x67\x65\x73\x74\x20\x53\x69\x6c\x76\x65\x72\x20\x74\x6f\x20\x47\x6f\x6c\x64"
);unsigned long long DATARMNETf4aa8ec23f[DATARMNET2f9ea73326];module_param_array
(DATARMNETf4aa8ec23f,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNETf4aa8ec23f,
"\x53\x48\x53\x20\x53\x75\x67\x67\x65\x73\x74\x20\x47\x6f\x6c\x64\x20\x74\x6f\x20\x53\x69\x6c\x76\x65\x72"
);unsigned long long DATARMNET6d75219ffb[DATARMNET2f9ea73326];module_param_array
(DATARMNET6d75219ffb,ullong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET6d75219ffb,
"\x53\x48\x53\x20\x53\x75\x67\x67\x65\x73\x74\x20\x47\x6f\x6c\x64\x20\x42\x61\x6c\x61\x6e\x63\x65"
);unsigned long DATARMNETb7ddf3c5dd[DATARMNETeccb61ebc3];module_param_array(
DATARMNETb7ddf3c5dd,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNETb7ddf3c5dd,
"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x73\x6b\x62\x20\x63\x6f\x72\x65\x20\x73\x77\x74\x69\x63\x68\x20\x74\x79\x70\x65"
);unsigned long DATARMNET14ed771dfb[DATARMNET3cef75f6cd];module_param_array(
DATARMNET14ed771dfb,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET14ed771dfb,
"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x73\x6b\x62\x20\x66\x6c\x75\x73\x68\x20\x74\x72\x69\x67\x67\x65\x72\x20\x74\x79\x70\x65"
);unsigned int DATARMNETea75c7b6f6 __read_mostly=30144000;module_param(
DATARMNETea75c7b6f6,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETea75c7b6f6,
"\x4d\x61\x78\x69\x6d\x75\x6d\x20\x62\x79\x74\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x77\x69\x6c\x6c\x20\x70\x61\x72\x6b"
);unsigned int DATARMNET7d18c0bcf8 __read_mostly=24000;module_param(
DATARMNET7d18c0bcf8,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET7d18c0bcf8,
"\x4d\x61\x78\x69\x6d\x75\x6d\x20\x70\x6b\x74\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x77\x69\x6c\x6c\x20\x70\x61\x72\x6b"
);unsigned int DATARMNET227d2ff866 __read_mostly=(0xf07+1573-0x14f5);
module_param(DATARMNET227d2ff866,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET227d2ff866,
"\x4d\x61\x78\x20\x77\x61\x69\x74\x20\x6d\x6f\x64\x75\x6c\x65\x20\x77\x69\x6c\x6c\x20\x77\x61\x69\x74\x20\x64\x75\x72\x69\x6e\x67\x20\x6d\x6f\x76\x65\x20\x74\x6f\x20\x70\x65\x72\x66\x20\x63\x6f\x72\x65\x20\x69\x6e\x20\x6d\x73"
);unsigned int DATARMNETa1ac2608b5 __read_mostly=(0xeb7+1130-0x130d);
module_param(DATARMNETa1ac2608b5,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETa1ac2608b5,
"\x4d\x61\x78\x20\x69\x6e\x74\x65\x72\x76\x61\x6c\x20\x77\x65\x20\x73\x61\x6d\x70\x6c\x65\x20\x66\x6f\x72\x20\x69\x6e\x73\x74\x61\x6e\x74\x20\x62\x75\x72\x73\x74\x20\x70\x72\x69\x6f\x72\x69\x74\x69\x7a\x69\x6e\x67"
);unsigned int DATARMNET12565c8f98 __read_mostly=(0xd26+209-0xdf6);module_param(
DATARMNET12565c8f98,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET12565c8f98,
"\x43\x6f\x6e\x66\x69\x67\x75\x72\x61\x62\x6c\x65\x20\x6f\x70\x74\x69\x6f\x6e\x20\x74\x6f\x20\x65\x6e\x61\x62\x6c\x65\x20\x72\x78\x20\x72\x61\x74\x65\x20\x63\x70\x75\x20\x73\x77\x69\x74\x63\x68\x69\x6e\x67"
);unsigned int DATARMNET365ddeca1c __read_mostly=(0xd26+209-0xdf6);module_param(
DATARMNET365ddeca1c,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET365ddeca1c,
"\x4f\x70\x74\x69\x6f\x6e\x20\x74\x6f\x20\x65\x6e\x61\x62\x6c\x65\x20\x66\x61\x6c\x6c\x20\x62\x61\x63\x6b\x20\x6c\x69\x6d\x69\x74\x20\x66\x6f\x72\x20\x70\x61\x72\x6b\x69\x6e\x67"
);unsigned int DATARMNETbc049ffc4c[DATARMNETc6782fed88]={(0xcf7+1705-0x101c),
(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c),
(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c),(0xf07+3937-0x1a1c)};module_param_array(
DATARMNETbc049ffc4c,uint,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETbc049ffc4c,
"\x4d\x61\x78\x20\x70\x6b\x74\x73\x20\x69\x6e\x20\x62\x61\x63\x6b\x6c\x6f\x67\x20\x70\x72\x69\x6f\x72\x69\x74\x69\x7a\x69\x6e\x67"
);unsigned int DATARMNET65393dea13[DATARMNETc6782fed88]={(0x17b8+5768-0x2224),
(0x17b8+5768-0x2224),(0x17b8+5768-0x2224),(0x17b8+5768-0x2224),
(0x17b8+5768-0x2224),(0x17b8+5768-0x2224),(0x17b8+5768-0x2224),
(0x17b8+5768-0x2224)};module_param_array(DATARMNET65393dea13,uint,NULL,
(0xdb7+6665-0x261c));MODULE_PARM_DESC(DATARMNET65393dea13,
"\x4d\x61\x78\x20\x70\x6b\x74\x73\x20\x69\x6e\x20\x61\x20\x62\x75\x72\x73\x74\x20\x62\x65\x66\x6f\x72\x65\x20\x70\x72\x69\x6f\x72\x69\x74\x69\x7a\x69\x6e\x67"
);unsigned int DATARMNET4ac8af832c __read_mostly=(0xd03+244-0xdf1);module_param(
DATARMNET4ac8af832c,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET4ac8af832c,
"\x4f\x70\x74\x69\x6f\x6e\x20\x74\x6f\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x65\x20\x66\x61\x6c\x6c\x20\x62\x61\x63\x6b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e"
);unsigned int DATARMNETa7909611da __read_mostly=(0xd26+209-0xdf6);module_param(
DATARMNETa7909611da,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETa7909611da,
"\x53\x77\x69\x74\x63\x68\x20\x63\x6f\x72\x65\x20\x75\x70\x6f\x6e\x20\x68\x69\x74\x74\x69\x6e\x67\x20\x74\x68\x72\x65\x73\x68\x6f\x6c\x64"
);unsigned int DATARMNET84413d1257[DATARMNETc6782fed88];module_param_array(
DATARMNET84413d1257,uint,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET84413d1257,
"\x4d\x61\x78\x20\x71\x75\x65\x75\x65\x20\x6c\x65\x6e\x67\x74\x68\x20\x73\x65\x65\x6e\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x63\x6f\x72\x65"
);unsigned int DATARMNET443cf5aaaf[DATARMNETc6782fed88];module_param_array(
DATARMNET443cf5aaaf,uint,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET443cf5aaaf,
"\x4f\x4f\x4f\x20\x63\x6f\x75\x6e\x74\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x63\x70\x75"
);unsigned int DATARMNETd75e474598[DATARMNETc6782fed88];module_param_array(
DATARMNETd75e474598,uint,NULL,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNETd75e474598,
"\x4d\x61\x78\x20\x63\x6f\x72\x65\x73\x75\x6d\x20\x73\x65\x65\x6e\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x63\x6f\x72\x65"
);unsigned int DATARMNET25c61a512c __read_mostly=(0xd18+223-0xdf4);module_param(
DATARMNET25c61a512c,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET25c61a512c,
"\x53\x74\x61\x79\x69\x6e\x67\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x20\x66\x6f\x72\x20\x6e\x65\x74\x72\x78\x20\x73\x77\x69\x74\x63\x68"
);unsigned int DATARMNET1ad396a890 __read_mostly=(0x25f8+1428-0x1804);
module_param(DATARMNET1ad396a890,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET1ad396a890,
"\x4d\x61\x78\x20\x72\x6d\x6e\x65\x74\x20\x70\x72\x65\x2d\x62\x61\x63\x6b\x6c\x6f\x67"
);unsigned int DATARMNET756bdd424a __read_mostly;module_param(
DATARMNET756bdd424a,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET756bdd424a,
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x64\x65\x62\x75\x67");unsigned int
DATARMNET58b009b16b __read_mostly=(0xd26+209-0xdf6);module_param(
DATARMNET58b009b16b,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
DATARMNET58b009b16b,
"\x45\x6e\x61\x62\x6c\x65\x20\x44\x69\x73\x61\x62\x6c\x65\x20\x73\x74\x61\x74\x73\x20\x63\x6f\x6c\x6c\x65\x63\x74\x69\x6f\x6e"
);unsigned long DATARMNET930a441406[DATARMNET0d61981934];module_param_array(
DATARMNET930a441406,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET930a441406,
"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x6d\x69\x64\x20\x65\x72\x72\x6f\x72\x20\x74\x79\x70\x65"
);unsigned long DATARMNET68d84e7b98[DATARMNETf3110711cb];module_param_array(
DATARMNET68d84e7b98,ulong,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
DATARMNET68d84e7b98,
"\x72\x6d\x6e\x65\x74\x20\x73\x68\x73\x20\x63\x72\x74\x69\x63\x61\x6c\x20\x65\x72\x72\x6f\x72\x20\x74\x79\x70\x65"
);

View File

@@ -0,0 +1,58 @@
/* Copyright (c) 2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include "rmnet_shs_wq.h"
#include "rmnet_shs_common.h"
#include "rmnet_shs.h"
#ifndef DATARMNET2883628e72
#define DATARMNET2883628e72
extern unsigned int DATARMNET1fc3ad67fd;extern unsigned long DATARMNETa804c0b904
;extern unsigned int DATARMNETcab56af6d5 __read_mostly;extern unsigned long long
DATARMNET713717107f[DATARMNETc6782fed88];extern unsigned long long
DATARMNET4793ed48af[DATARMNETc6782fed88];extern unsigned int DATARMNET18f2ba4444
[DATARMNETc6782fed88];extern unsigned int DATARMNET2d482e7d9f[
DATARMNETc6782fed88];extern unsigned long long DATARMNET77240d48ee[
DATARMNETc6782fed88];extern unsigned long long DATARMNET77189ab85c[
DATARMNETc6782fed88];extern unsigned long long DATARMNET79263b1183[
DATARMNETc6782fed88];extern unsigned long long DATARMNET229d52b629[
DATARMNETc6782fed88];extern unsigned long long DATARMNETd27ed7efea[
DATARMNETc6782fed88];extern unsigned long long DATARMNET377ecf13ca[
DATARMNETc6782fed88];extern unsigned long DATARMNETbf3b6fdfc8[
DATARMNET2f9ea73326];extern unsigned long DATARMNET0fec241216[
DATARMNET2f9ea73326];extern unsigned long long DATARMNET9e5e8e4048[
DATARMNET2f9ea73326];extern int DATARMNETdba344c809[DATARMNET2f9ea73326];extern
int DATARMNET99a934c43a[DATARMNET2f9ea73326];extern unsigned long long
DATARMNET47956cbb0f[DATARMNET2f9ea73326];extern unsigned long long
DATARMNET338c8e7a2b[DATARMNET2f9ea73326];extern unsigned long long
DATARMNET4b1ae621cd[DATARMNET2f9ea73326];extern unsigned long long
DATARMNETf5133a99c6[DATARMNET2f9ea73326];extern unsigned long long
DATARMNETc5d73c43e6[DATARMNET2f9ea73326];extern unsigned long long
DATARMNETf4aa8ec23f[DATARMNET2f9ea73326];extern unsigned long long
DATARMNET6d75219ffb[DATARMNET2f9ea73326];extern unsigned long
DATARMNETb7ddf3c5dd[DATARMNETeccb61ebc3];extern unsigned long
DATARMNET14ed771dfb[DATARMNET3cef75f6cd];extern unsigned int DATARMNETea75c7b6f6
;extern unsigned int DATARMNET7d18c0bcf8;extern unsigned int DATARMNET227d2ff866
;extern unsigned int DATARMNETa1ac2608b5;extern unsigned int DATARMNET12565c8f98
;extern unsigned int DATARMNET365ddeca1c;extern unsigned int DATARMNETbc049ffc4c
[DATARMNETc6782fed88];extern unsigned int DATARMNET65393dea13[
DATARMNETc6782fed88];extern unsigned int DATARMNET4ac8af832c;extern unsigned int
DATARMNETa7909611da;extern unsigned int DATARMNET84413d1257[DATARMNETc6782fed88
];extern unsigned int DATARMNET443cf5aaaf[DATARMNETc6782fed88];extern unsigned
int DATARMNETd75e474598[DATARMNETc6782fed88];extern unsigned int
DATARMNET25c61a512c;extern unsigned int DATARMNET1ad396a890;extern unsigned int
DATARMNET756bdd424a;extern unsigned int DATARMNET58b009b16b __read_mostly;extern
unsigned long DATARMNET68d84e7b98[DATARMNETf3110711cb];extern unsigned long
DATARMNET930a441406[DATARMNET0d61981934];
#endif

View File

@@ -0,0 +1,871 @@
/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include "rmnet_shs.h"
#include "rmnet_shs_wq_genl.h"
#include "rmnet_shs_wq_mem.h"
#include <linux/workqueue.h>
#include <linux/list_sort.h>
#include <net/sock.h>
#include <linux/skbuff.h>
#include "rmnet_shs_modules.h"
#include "rmnet_shs_common.h"
#include <linux/pm_wakeup.h>
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");
#define DATARMNET59f7cb903f (0xc07+4861-0x1e3c)
#define DATARMNET832dcfb5f8 (0xeb7+698-0x110d)
#define DATARMNET53bef3c026 (0xd2d+202-0xdf7)
#define DATARMNETc5db038c35 (0xd26+209-0xdf6)
#define DATARMNETbe271c415b ((!DATARMNET25c61a512c) ? (0xd1f+216-0xdf5) : \
DATARMNET25c61a512c)
#define DATARMNET2f8c32c8eb ((0xd1f+216-0xdf5))
DEFINE_SPINLOCK(DATARMNETfbdbab2ef6);DEFINE_SPINLOCK(DATARMNETec2a4f5211);static
ktime_t DATARMNETb3a4036d6d;struct workqueue_struct*DATARMNETf141197982;static
struct DATARMNETa144e2bd00*DATARMNET9dc7755be5;static struct DATARMNETc8fdbf9c85
DATARMNET6cdd58e74c;struct list_head DATARMNET9825511866=LIST_HEAD_INIT(
DATARMNET9825511866);static int DATARMNETe038d33545;struct list_head
DATARMNET30a3e83974=LIST_HEAD_INIT(DATARMNET30a3e83974);void DATARMNETa6e92c3315
(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a){DATARMNETd2a694d52a->
DATARMNETadd51beef4=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET68714ac92c=
(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET63b1a086d5=NULL;
DATARMNETd2a694d52a->DATARMNET42ceaf5cc2=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->
DATARMNET4b4a76b094=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNETa7352711af=
(0xd2d+202-0xdf7);DATARMNETd2a694d52a->rx_bytes=(0xd2d+202-0xdf7);
DATARMNETd2a694d52a->DATARMNET324c1a8f98=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->
DATARMNETbb80fccd97=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET0d682bcb29=
(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET20e8fc9db8=(0xd2d+202-0xdf7);
DATARMNETd2a694d52a->DATARMNETd34f4b12cd=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->
DATARMNET96e0dea53e=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET3ecedac168=
(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNETce5f56eab9=(0xd2d+202-0xdf7);
DATARMNETd2a694d52a->DATARMNET6edbc8b649=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->
DATARMNETde6a309f37=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET9fb369ce5f=
(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET17f2abdf03=(0xd2d+202-0xdf7);
DATARMNETd2a694d52a->DATARMNET399c840115=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->
DATARMNET1a1d89d417=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNETb932033f50=
(0xd2d+202-0xdf7);DATARMNETd2a694d52a->hash=(0xd2d+202-0xdf7);
DATARMNETd2a694d52a->DATARMNET6e1a4eaf09=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->
DATARMNET7c894c2f8f=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET87636d0152=
(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET1e9d25d9ff=(0xd2d+202-0xdf7);
DATARMNETd2a694d52a->DATARMNETb5f5519502=(-(0xd26+209-0xdf6));INIT_LIST_HEAD(&
DATARMNETd2a694d52a->DATARMNET742867e97a);DATARMNETd2a694d52a->
DATARMNET8a4e1d5aaa=(0xd2d+202-0xdf7);DATARMNETd2a694d52a->DATARMNET0dc393a345=
(0xd2d+202-0xdf7);trace_rmnet_shs_wq_low(DATARMNET238d08f0df,DATARMNETb43d929c3b
,DATARMNETd2a694d52a->DATARMNET0bfc2b2c85,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL);}void DATARMNETf5b8fce55d(u8
DATARMNETe9030b7691,u8 DATARMNET1f19f4b029){struct DATARMNET6c78e47d24*
DATARMNETd2a694d52a=NULL;while(DATARMNETe9030b7691>(0xd2d+202-0xdf7)){
DATARMNETd2a694d52a=kzalloc(sizeof(*DATARMNETd2a694d52a),GFP_ATOMIC);if(
DATARMNETd2a694d52a){DATARMNETd2a694d52a->DATARMNET0bfc2b2c85=
DATARMNET1f19f4b029;DATARMNETa6e92c3315(DATARMNETd2a694d52a);INIT_LIST_HEAD(&
DATARMNETd2a694d52a->DATARMNET6de26f0feb);INIT_LIST_HEAD(&DATARMNETd2a694d52a->
DATARMNET742867e97a);DATARMNET36e5e526fa(DATARMNETd2a694d52a);}else{
DATARMNET68d84e7b98[DATARMNET1828d69e96]++;}DATARMNETd2a694d52a=NULL;
DATARMNETe9030b7691--;}}struct DATARMNET6c78e47d24*DATARMNETb062995420(void){
struct DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;struct DATARMNET6c78e47d24*
DATARMNETe70783182f=NULL;unsigned long flags;spin_lock_irqsave(&
DATARMNETfbdbab2ef6,flags);list_for_each_entry(DATARMNETd2a694d52a,&
DATARMNET9825511866,DATARMNET6de26f0feb){if(DATARMNETd2a694d52a->
DATARMNET0dc393a345==(0xd2d+202-0xdf7)){DATARMNETe70783182f=DATARMNETd2a694d52a;
DATARMNETe70783182f->DATARMNET0dc393a345=(0xd26+209-0xdf6);DATARMNETe70783182f->
DATARMNET8a4e1d5aaa=(0xd26+209-0xdf6);break;}}spin_unlock_irqrestore(&
DATARMNETfbdbab2ef6,flags);if(DATARMNETe70783182f){trace_rmnet_shs_wq_low(
DATARMNET238d08f0df,DATARMNET8d783e2a07,DATARMNETd2a694d52a->DATARMNET0bfc2b2c85
,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a,
NULL);return DATARMNETe70783182f;}DATARMNETe70783182f=kzalloc(sizeof(*
DATARMNETd2a694d52a),GFP_ATOMIC);if(!DATARMNETe70783182f){DATARMNET68d84e7b98[
DATARMNET1828d69e96]++;return NULL;}DATARMNETa6e92c3315(DATARMNETe70783182f);
DATARMNETe70783182f->DATARMNET0bfc2b2c85=(0xd2d+202-0xdf7);DATARMNETe70783182f->
DATARMNET0dc393a345=(0xd26+209-0xdf6);DATARMNETe70783182f->DATARMNET8a4e1d5aaa=
(0xd26+209-0xdf6);INIT_LIST_HEAD(&DATARMNETe70783182f->DATARMNET6de26f0feb);
INIT_LIST_HEAD(&DATARMNETe70783182f->DATARMNET742867e97a);trace_rmnet_shs_wq_low
(DATARMNET238d08f0df,DATARMNET4b15fcda7c,DATARMNETe70783182f->
DATARMNET0bfc2b2c85,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
DATARMNETe70783182f,NULL);DATARMNET36e5e526fa(DATARMNETe70783182f);return
DATARMNETe70783182f;}void DATARMNET350f55bfca(struct DATARMNET63d7680df2*node_p)
{struct timespec64 time;if(!node_p){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;
return;}node_p->DATARMNET341ea38662=DATARMNETb062995420();if(node_p->
DATARMNET341ea38662!=NULL){(void)ktime_get_boottime_ts64(&time);node_p->
DATARMNET341ea38662->hash=node_p->hash;node_p->DATARMNET341ea38662->
DATARMNET1e9d25d9ff=node_p->DATARMNET1e9d25d9ff;node_p->DATARMNET341ea38662->
DATARMNET7c894c2f8f=node_p->map_cpu;node_p->DATARMNET341ea38662->
DATARMNET6e1a4eaf09=node_p->map_cpu;node_p->DATARMNET341ea38662->
DATARMNET87636d0152=(0xd2d+202-0xdf7);if(DATARMNETc252c204a8&&node_p->
DATARMNET341ea38662->DATARMNET1e9d25d9ff==IPPROTO_TCP)node_p->
DATARMNET341ea38662->DATARMNET87636d0152=DATARMNET2f8c32c8eb;node_p->
DATARMNET341ea38662->DATARMNET63b1a086d5=node_p;node_p->DATARMNET341ea38662->
DATARMNETadd51beef4=DATARMNETe6671dbf38(time.tv_sec)+time.tv_nsec;node_p->
DATARMNET341ea38662->DATARMNET68714ac92c=DATARMNETe6671dbf38(time.tv_sec)+time.
tv_nsec;}trace_rmnet_shs_wq_high(DATARMNET238d08f0df,DATARMNET31d8e00b80,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
node_p,node_p->DATARMNET341ea38662);}static u64 DATARMNETf553c2afd2(struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a){u64 DATARMNET253a9fc708,
DATARMNET950c035603;u16 DATARMNETab4cf0ad84,DATARMNET0c72af011b;if(!
DATARMNETd2a694d52a){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return
(0xd2d+202-0xdf7);}if(DATARMNET362b15f941(DATARMNETd2a694d52a->
DATARMNET7c894c2f8f)){DATARMNETab4cf0ad84=DATARMNETcab56af6d5;
DATARMNET0c72af011b=(0xeb7+698-0x110d)-DATARMNETcab56af6d5;}else{
DATARMNET0c72af011b=DATARMNETcab56af6d5;DATARMNETab4cf0ad84=(0xeb7+698-0x110d)-
DATARMNETcab56af6d5;}if(DATARMNETd2a694d52a->DATARMNET6c2816c16a==
(0xd2d+202-0xdf7)){DATARMNET253a9fc708=DATARMNETd2a694d52a->DATARMNET324c1a8f98;
}else{DATARMNET950c035603=(DATARMNETd2a694d52a->DATARMNET6c2816c16a+
DATARMNETd2a694d52a->DATARMNET253a9fc708)/(0xd1f+216-0xdf5);DATARMNET253a9fc708=
(((DATARMNETab4cf0ad84*DATARMNETd2a694d52a->DATARMNET324c1a8f98)+(
DATARMNET0c72af011b*DATARMNET950c035603))/(DATARMNETab4cf0ad84+
DATARMNET0c72af011b));}return DATARMNET253a9fc708;}static u64
DATARMNET183789850d(u16 DATARMNET42a992465f){u64 DATARMNET253a9fc708,
DATARMNET950c035603;u16 DATARMNETab4cf0ad84,DATARMNET0c72af011b;struct
DATARMNET228056d4b7*DATARMNETf632b170b1;struct DATARMNETc8fdbf9c85*
DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;if(DATARMNET42a992465f>=
DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return
(0xd2d+202-0xdf7);}DATARMNETf632b170b1=&DATARMNET7bea4a06a6->DATARMNET73464778dc
[DATARMNET42a992465f];if(DATARMNET362b15f941(DATARMNET42a992465f)){
DATARMNETab4cf0ad84=DATARMNETcab56af6d5;DATARMNET0c72af011b=(0xeb7+698-0x110d)-
DATARMNETcab56af6d5;}else{DATARMNET0c72af011b=DATARMNETcab56af6d5;
DATARMNETab4cf0ad84=(0xeb7+698-0x110d)-DATARMNETcab56af6d5;}if(
DATARMNETf632b170b1->DATARMNET27c3925eff==(0xd2d+202-0xdf7)){DATARMNET253a9fc708
=DATARMNETf632b170b1->DATARMNET253a9fc708;}else{DATARMNET950c035603=(
DATARMNETf632b170b1->DATARMNET27c3925eff+DATARMNETf632b170b1->
DATARMNET253a9fc708)/(0xd1f+216-0xdf5);DATARMNET253a9fc708=(((
DATARMNETab4cf0ad84*DATARMNETf632b170b1->DATARMNET324c1a8f98)+(
DATARMNET0c72af011b*DATARMNET950c035603))/(DATARMNETab4cf0ad84+
DATARMNET0c72af011b));}trace_rmnet_shs_wq_high(DATARMNET39a68a0eba,
DATARMNETde65aa00a6,DATARMNET42a992465f,DATARMNETf632b170b1->DATARMNET324c1a8f98
,DATARMNETf632b170b1->DATARMNET27c3925eff,DATARMNET253a9fc708,NULL,NULL);return
DATARMNET253a9fc708;}void DATARMNET0aa47ce397(struct DATARMNET6c78e47d24*
DATARMNET7b2c1bbf38){struct DATARMNET63d7680df2*node_p=NULL;struct
DATARMNET9b44b71ee9*ep=NULL;if(!DATARMNET7b2c1bbf38){DATARMNET68d84e7b98[
DATARMNETac729c3d29]++;return;}node_p=DATARMNET7b2c1bbf38->DATARMNET63b1a086d5;
list_for_each_entry(ep,&DATARMNET30a3e83974,DATARMNET0763436b8d){if(node_p->dev
==ep->ep){DATARMNET7b2c1bbf38->DATARMNET9fb369ce5f=ep->DATARMNET9fb369ce5f;
DATARMNET7b2c1bbf38->DATARMNET399c840115=ep->DATARMNET24a91635db;
DATARMNET7b2c1bbf38->DATARMNET1a1d89d417=ep->DATARMNET1a1d89d417;if(
DATARMNET7b2c1bbf38->DATARMNET1e9d25d9ff==IPPROTO_TCP){rm_err(
"\x53\x48\x53\x5f\x54\x43\x50\x3a\x20\x61\x64\x64\x69\x6e\x67\x20\x54\x43\x50\x20\x62\x70\x73\x20\x25\x6c\x75\x20\x74\x6f\x20\x65\x70\x5f\x74\x6f\x74\x61\x6c\x20\x25\x6c\x75\x20\x65\x70\x20\x6e\x61\x6d\x65\x20\x25\x73"
,DATARMNET7b2c1bbf38->DATARMNETbb80fccd97,ep->DATARMNET4eb77c78e6,node_p->dev->
name);ep->DATARMNET4eb77c78e6+=DATARMNET7b2c1bbf38->DATARMNETbb80fccd97;}else if
(DATARMNET7b2c1bbf38->DATARMNET1e9d25d9ff==IPPROTO_UDP){rm_err(
"\x53\x48\x53\x5f\x55\x44\x50\x3a\x20\x61\x64\x64\x69\x6e\x67\x20\x55\x44\x50\x20\x72\x78\x5f\x62\x70\x73\x20\x25\x6c\x75\x20\x74\x6f\x20\x65\x70\x5f\x74\x6f\x74\x61\x6c\x20\x25\x6c\x75\x20\x65\x70\x20\x6e\x61\x6d\x65\x20\x25\x73"
,DATARMNET7b2c1bbf38->DATARMNETbb80fccd97,ep->DATARMNET257fc4b2d4,node_p->dev->
name);ep->DATARMNET257fc4b2d4+=DATARMNET7b2c1bbf38->DATARMNETbb80fccd97;}break;}
}trace_rmnet_shs_wq_low(DATARMNET394831f22a,DATARMNET35902389b3,
DATARMNET7b2c1bbf38->DATARMNET9fb369ce5f,DATARMNET7b2c1bbf38->
DATARMNET399c840115,DATARMNET7b2c1bbf38->DATARMNET1a1d89d417,(0x16e8+787-0xc0c),
DATARMNET7b2c1bbf38,node_p);}void DATARMNETc55315279b(struct DATARMNET6c78e47d24
*DATARMNETdbe9f3dbe3,struct DATARMNET63d7680df2*node_p){int idx=
DATARMNETe038d33545;if(!DATARMNET58b009b16b)return;if(!DATARMNETdbe9f3dbe3||!
node_p){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}if(
DATARMNETdbe9f3dbe3->DATARMNETb5f5519502<(0xd2d+202-0xdf7)){idx=idx%
DATARMNET2f9ea73326;DATARMNETdbe9f3dbe3->DATARMNETb5f5519502=idx;
DATARMNETe038d33545++;}DATARMNETbf3b6fdfc8[DATARMNETdbe9f3dbe3->
DATARMNETb5f5519502]=DATARMNETdbe9f3dbe3->hash;DATARMNET0fec241216[
DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]=node_p->DATARMNET1e9d25d9ff;
DATARMNET9e5e8e4048[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]=
DATARMNET36cfa76181(DATARMNETdbe9f3dbe3->DATARMNET42ceaf5cc2);
DATARMNET4b1ae621cd[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]=
DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97;DATARMNETf5133a99c6[DATARMNETdbe9f3dbe3
->DATARMNETb5f5519502]=DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98;
DATARMNET47956cbb0f[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]=
DATARMNETdbe9f3dbe3->rx_bytes;DATARMNET338c8e7a2b[DATARMNETdbe9f3dbe3->
DATARMNETb5f5519502]=DATARMNETdbe9f3dbe3->DATARMNET4b4a76b094;
DATARMNETdba344c809[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]=
DATARMNETdbe9f3dbe3->DATARMNET7c894c2f8f;DATARMNET99a934c43a[DATARMNETdbe9f3dbe3
->DATARMNETb5f5519502]=DATARMNETdbe9f3dbe3->DATARMNET6e1a4eaf09;
DATARMNETc5d73c43e6[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]=
DATARMNETdbe9f3dbe3->DATARMNET61e1ee0e95[DATARMNETed5a873a00];
DATARMNETf4aa8ec23f[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]=
DATARMNETdbe9f3dbe3->DATARMNET61e1ee0e95[DATARMNETd7a3f55a51];
DATARMNET6d75219ffb[DATARMNETdbe9f3dbe3->DATARMNETb5f5519502]=
DATARMNETdbe9f3dbe3->DATARMNET61e1ee0e95[DATARMNETefe8657028];}u8
DATARMNETd245b71b63(struct DATARMNET6c78e47d24*DATARMNETdbe9f3dbe3,struct
DATARMNET63d7680df2*node_p){if(!DATARMNETdbe9f3dbe3||!node_p){
DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return(0xd2d+202-0xdf7);}if(node_p->
DATARMNET11930c5df8==DATARMNETdbe9f3dbe3->DATARMNET4b4a76b094)return
(0xd2d+202-0xdf7);return(0xd26+209-0xdf6);}void DATARMNETb49b4f6385(struct
DATARMNET6c78e47d24*DATARMNETdbe9f3dbe3,struct DATARMNET63d7680df2*node_p){
ktime_t DATARMNET96f21fddc1;if(!DATARMNETdbe9f3dbe3||!node_p){
DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}DATARMNET96f21fddc1=
DATARMNETb3a4036d6d-DATARMNETdbe9f3dbe3->DATARMNETadd51beef4;DATARMNETdbe9f3dbe3
->DATARMNET42ceaf5cc2=DATARMNET96f21fddc1;trace_rmnet_shs_wq_low(
DATARMNET394831f22a,DATARMNET08cee5b48c,DATARMNETdbe9f3dbe3->hash,
DATARMNET96f21fddc1,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETdbe9f3dbe3,
NULL);}void DATARMNET9a7769cf21(struct DATARMNET6c78e47d24*DATARMNETdbe9f3dbe3){
ktime_t DATARMNET96f21fddc1;u64 DATARMNETee9f72f13f,DATARMNET539a572f34,
DATARMNET33b006454e;struct DATARMNET63d7680df2*node_p;if(!DATARMNETdbe9f3dbe3){
DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}node_p=DATARMNETdbe9f3dbe3->
DATARMNET63b1a086d5;if(!DATARMNETd245b71b63(DATARMNETdbe9f3dbe3,node_p)){
DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98=(0xd2d+202-0xdf7);DATARMNETdbe9f3dbe3->
DATARMNET253a9fc708=(0xd2d+202-0xdf7);DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97=
(0xd2d+202-0xdf7);DATARMNETb49b4f6385(DATARMNETdbe9f3dbe3,node_p);
DATARMNETc55315279b(DATARMNETdbe9f3dbe3,node_p);return;}trace_rmnet_shs_wq_low(
DATARMNET394831f22a,DATARMNET91e905574d,DATARMNETdbe9f3dbe3->hash,
(0x16e8+787-0xc0c),DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98,DATARMNETdbe9f3dbe3
->DATARMNETbb80fccd97,DATARMNETdbe9f3dbe3,NULL);DATARMNET0aa47ce397(
DATARMNETdbe9f3dbe3);DATARMNETdbe9f3dbe3->DATARMNET42ceaf5cc2=(0xd2d+202-0xdf7);
DATARMNETdbe9f3dbe3->DATARMNET68714ac92c=node_p->DATARMNET341ea38662->
DATARMNETadd51beef4;DATARMNETdbe9f3dbe3->DATARMNET6edbc8b649=node_p->
DATARMNET341ea38662->DATARMNET4b4a76b094;DATARMNETdbe9f3dbe3->
DATARMNET4025a4ec90=node_p->DATARMNET341ea38662->DATARMNETa7352711af;
DATARMNETdbe9f3dbe3->DATARMNETd34f4b12cd=node_p->DATARMNET341ea38662->
DATARMNET3ecedac168;DATARMNETdbe9f3dbe3->DATARMNET96e0dea53e=node_p->
DATARMNET341ea38662->DATARMNETce5f56eab9;DATARMNETdbe9f3dbe3->
DATARMNETde6a309f37=node_p->DATARMNET341ea38662->rx_bytes;DATARMNETdbe9f3dbe3->
DATARMNETadd51beef4=DATARMNETb3a4036d6d;DATARMNETdbe9f3dbe3->DATARMNET4b4a76b094
=node_p->DATARMNET11930c5df8;DATARMNETdbe9f3dbe3->DATARMNETa7352711af=node_p->
DATARMNETa8940e4a7b;DATARMNETdbe9f3dbe3->DATARMNET3ecedac168=node_p->
DATARMNET3ecedac168;DATARMNETdbe9f3dbe3->DATARMNETce5f56eab9=node_p->
DATARMNETce5f56eab9;DATARMNETdbe9f3dbe3->rx_bytes=node_p->DATARMNET2594c418db;
DATARMNET96f21fddc1=(DATARMNETdbe9f3dbe3->DATARMNETadd51beef4-
DATARMNETdbe9f3dbe3->DATARMNET68714ac92c);DATARMNET96f21fddc1=(
DATARMNET96f21fddc1>DATARMNETac617c8dce(DATARMNET1fc3ad67fd)&&
DATARMNET1fc3ad67fd>(0xd2d+202-0xdf7))?DATARMNET96f21fddc1:DATARMNETac617c8dce(
(0xeb7+698-0x110d));DATARMNETee9f72f13f=DATARMNETdbe9f3dbe3->DATARMNET4b4a76b094
-DATARMNETdbe9f3dbe3->DATARMNET6edbc8b649;DATARMNET539a572f34=
DATARMNETdbe9f3dbe3->DATARMNETa7352711af-DATARMNETdbe9f3dbe3->
DATARMNET4025a4ec90;DATARMNET33b006454e=DATARMNETdbe9f3dbe3->rx_bytes-
DATARMNETdbe9f3dbe3->DATARMNETde6a309f37;DATARMNETd2da2e8466(
"\x53\x48\x53\x5f\x53\x45\x47\x53\x3a\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x63\x6f\x61\x6c\x20\x73\x6b\x62\x20\x3d\x20\x25\x6c\x75\x20\x7c\x20\x6c\x61\x73\x74\x20\x63\x6f\x61\x6c\x20\x73\x6b\x62\x20\x3d\x20\x25\x6c\x75\x20\x7c\x20\x72\x78\x20\x73\x6b\x62\x20\x3d\x20\x25\x6c\x75\x20\x7c\x20\x6c\x61\x73\x74\x20\x72\x78\x20\x73\x6b\x62\x20\x25\x6c\x75"
,DATARMNETdbe9f3dbe3->hash,DATARMNETdbe9f3dbe3->DATARMNETa7352711af,
DATARMNETdbe9f3dbe3->DATARMNET4025a4ec90,DATARMNETdbe9f3dbe3->
DATARMNET4b4a76b094,DATARMNETdbe9f3dbe3->DATARMNET6edbc8b649);
DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98=DATARMNET855e9d7062(DATARMNETee9f72f13f
)/(DATARMNET96f21fddc1);DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97=
DATARMNET855e9d7062(DATARMNET33b006454e)/(DATARMNET96f21fddc1);
DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97=DATARMNET64577537b7(DATARMNETdbe9f3dbe3
->DATARMNETbb80fccd97);DATARMNETdbe9f3dbe3->DATARMNET253a9fc708=
DATARMNETf553c2afd2(DATARMNETdbe9f3dbe3);if(DATARMNET539a572f34>
(0xd2d+202-0xdf7)){DATARMNETdbe9f3dbe3->DATARMNET95266642d1=DATARMNETee9f72f13f/
DATARMNET539a572f34;DATARMNETd2da2e8466(
"\x53\x48\x53\x5f\x53\x45\x47\x53\x3a\x20\x61\x76\x67\x20\x73\x65\x67\x73\x20\x3d\x20\x25\x6c\x75\x20\x73\x6b\x62\x5f\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75\x20\x63\x6f\x61\x6c\x5f\x73\x6b\x62\x5f\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75"
,DATARMNETdbe9f3dbe3->DATARMNET95266642d1,DATARMNETee9f72f13f,
DATARMNET539a572f34);}else{DATARMNETdbe9f3dbe3->DATARMNET95266642d1=
(0xd2d+202-0xdf7);}DATARMNETdbe9f3dbe3->DATARMNET0d682bcb29=DATARMNETdbe9f3dbe3
->DATARMNET3ecedac168-DATARMNETdbe9f3dbe3->DATARMNETd34f4b12cd;
DATARMNETdbe9f3dbe3->DATARMNET20e8fc9db8=DATARMNETdbe9f3dbe3->
DATARMNETce5f56eab9-DATARMNETdbe9f3dbe3->DATARMNET96e0dea53e;DATARMNETd2da2e8466
(
"\x53\x48\x53\x5f\x48\x57\x5f\x43\x4f\x41\x4c\x3a\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x79\x74\x65\x73\x20\x3d\x20\x25\x6c\x75\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x75\x66\x73\x69\x7a\x65\x20\x3d\x20\x25\x6c\x75"
,node_p->DATARMNET3ecedac168,node_p->DATARMNETce5f56eab9);DATARMNETd2da2e8466(
"\x53\x48\x53\x5f\x48\x57\x5f\x43\x4f\x41\x4c\x3a\x20\x4c\x41\x53\x54\x3a\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x79\x74\x65\x73\x20\x3d\x20\x25\x6c\x75\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x75\x66\x73\x69\x7a\x65\x20\x3d\x20\x25\x6c\x75"
,DATARMNETdbe9f3dbe3->DATARMNETd34f4b12cd,DATARMNETdbe9f3dbe3->
DATARMNET96e0dea53e);DATARMNETd2da2e8466(
"\x53\x48\x53\x5f\x48\x57\x5f\x43\x4f\x41\x4c\x3a\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x79\x74\x65\x73\x20\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x75\x66\x73\x69\x7a\x65\x20\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75"
,DATARMNETdbe9f3dbe3->DATARMNET0d682bcb29,DATARMNETdbe9f3dbe3->
DATARMNET20e8fc9db8);DATARMNETdbe9f3dbe3->DATARMNET6c2816c16a=
DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98;DATARMNETc55315279b(DATARMNETdbe9f3dbe3
,node_p);trace_rmnet_shs_wq_high(DATARMNET394831f22a,DATARMNETb0ed796e8c,
DATARMNETdbe9f3dbe3->hash,DATARMNETdbe9f3dbe3->DATARMNET324c1a8f98,
DATARMNETdbe9f3dbe3->DATARMNETbb80fccd97,(DATARMNET96f21fddc1/1000000),
DATARMNETdbe9f3dbe3,NULL);}static void DATARMNET33f47350f0(u16 cpu,struct
DATARMNET228056d4b7*DATARMNETcf7ef40ff9){if(!DATARMNET58b009b16b)return;if(cpu>=
DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return;}if(!
DATARMNETcf7ef40ff9){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}
DATARMNET79263b1183[cpu]=DATARMNETcf7ef40ff9->DATARMNETbb80fccd97;
DATARMNET229d52b629[cpu]=DATARMNETcf7ef40ff9->DATARMNET324c1a8f98;
DATARMNET18f2ba4444[cpu]=DATARMNETcf7ef40ff9->flows;DATARMNET77240d48ee[cpu]=
DATARMNETcf7ef40ff9->rx_bytes;DATARMNET77189ab85c[cpu]=DATARMNETcf7ef40ff9->
DATARMNET7fc41d655d;DATARMNETd27ed7efea[cpu]=DATARMNETcf7ef40ff9->
DATARMNET69770f8ef7;DATARMNET377ecf13ca[cpu]=DATARMNETcf7ef40ff9->
DATARMNET17380ba0f8;}static void DATARMNET8b2fb5dc3c(void){struct
DATARMNETc8fdbf9c85*DATARMNET3c48cbf7e4=&DATARMNET6cdd58e74c;struct rmnet_port*
port;u64 DATARMNETe3ed6089ca,byte_diff;ktime_t DATARMNET96f21fddc1;
DATARMNET3c48cbf7e4->DATARMNET601156672d=DATARMNET3c48cbf7e4->
DATARMNET4947607c52;DATARMNET3c48cbf7e4->DATARMNETbfe25a2160=DATARMNET3c48cbf7e4
->DATARMNET903a2cea81;port=DATARMNETecc0627c70.port;if(!port){
DATARMNET68d84e7b98[DATARMNET42b73d0f3f]++;return;}DATARMNET3c48cbf7e4->
DATARMNET903a2cea81=port->stats.dl_hdr_total_pkts;DATARMNET3c48cbf7e4->
DATARMNET4947607c52=port->stats.dl_hdr_total_bytes;DATARMNET96f21fddc1=
DATARMNETb3a4036d6d-DATARMNET3c48cbf7e4->DATARMNET68714ac92c;DATARMNET96f21fddc1
=(DATARMNET96f21fddc1>DATARMNETac617c8dce(DATARMNET1fc3ad67fd)&&
DATARMNET1fc3ad67fd>(0xd2d+202-0xdf7))?DATARMNET96f21fddc1:DATARMNETac617c8dce(
(0xeb7+698-0x110d));DATARMNETe3ed6089ca=DATARMNET3c48cbf7e4->DATARMNET903a2cea81
-DATARMNET3c48cbf7e4->DATARMNETbfe25a2160;byte_diff=DATARMNET3c48cbf7e4->
DATARMNET4947607c52-DATARMNET3c48cbf7e4->DATARMNET601156672d;DATARMNET3c48cbf7e4
->DATARMNET3067b3dafd=DATARMNET855e9d7062(DATARMNETe3ed6089ca)/
DATARMNET96f21fddc1;DATARMNET3c48cbf7e4->DATARMNET47334112aa=DATARMNET855e9d7062
(byte_diff)/DATARMNET96f21fddc1;DATARMNET3c48cbf7e4->DATARMNET47334112aa=
DATARMNET64577537b7(DATARMNET3c48cbf7e4->DATARMNET47334112aa);}static void
DATARMNET0ce3f33785(void){struct DATARMNETc8fdbf9c85*DATARMNET3c48cbf7e4=&
DATARMNET6cdd58e74c;u64 DATARMNETe3ed6089ca,byte_diff,DATARMNETccb5dc8a5c,
DATARMNET4df302dbd6;ktime_t DATARMNET96f21fddc1;DATARMNET96f21fddc1=
DATARMNETb3a4036d6d-DATARMNET3c48cbf7e4->DATARMNET68714ac92c;DATARMNET96f21fddc1
=(DATARMNET96f21fddc1>DATARMNETac617c8dce(DATARMNET1fc3ad67fd)&&
DATARMNET1fc3ad67fd>(0xd2d+202-0xdf7))?DATARMNET96f21fddc1:DATARMNETac617c8dce(
(0xeb7+698-0x110d));DATARMNETe3ed6089ca=(DATARMNET3c48cbf7e4->
DATARMNET7fc41d655d-DATARMNET3c48cbf7e4->DATARMNET9853a006ae);byte_diff=
DATARMNET3c48cbf7e4->rx_bytes-DATARMNET3c48cbf7e4->DATARMNETde6a309f37;
DATARMNETccb5dc8a5c=DATARMNET855e9d7062(DATARMNETe3ed6089ca)/DATARMNET96f21fddc1
;DATARMNET4df302dbd6=DATARMNET855e9d7062(byte_diff)/DATARMNET96f21fddc1;
DATARMNET3c48cbf7e4->DATARMNET8233cb4988=DATARMNET3c48cbf7e4->
DATARMNETbb80fccd97;DATARMNET3c48cbf7e4->DATARMNET27c3925eff=DATARMNET3c48cbf7e4
->DATARMNET324c1a8f98;DATARMNET3c48cbf7e4->DATARMNETbb80fccd97=
DATARMNET64577537b7(DATARMNET4df302dbd6);DATARMNET3c48cbf7e4->
DATARMNET324c1a8f98=DATARMNETccb5dc8a5c;DATARMNET3c48cbf7e4->DATARMNET68714ac92c
=DATARMNETb3a4036d6d;DATARMNET3c48cbf7e4->DATARMNETde6a309f37=
DATARMNET3c48cbf7e4->rx_bytes;DATARMNET3c48cbf7e4->DATARMNET9853a006ae=
DATARMNET3c48cbf7e4->DATARMNET7fc41d655d;trace_rmnet_shs_wq_high(
DATARMNET0dd7951b5e,DATARMNET709474066f,DATARMNET3c48cbf7e4->DATARMNET324c1a8f98
,DATARMNET3c48cbf7e4->DATARMNET3067b3dafd,DATARMNET3c48cbf7e4->
DATARMNETbb80fccd97,DATARMNET3c48cbf7e4->DATARMNET47334112aa,NULL,NULL);}static
void DATARMNET73d2153565(u16 cpu){struct DATARMNET228056d4b7*DATARMNETcf7ef40ff9
;ktime_t DATARMNET96f21fddc1;u64 DATARMNET55fffa9aa9,DATARMNETedf00aed6f;u64
DATARMNET8233cb4988,DATARMNET27c3925eff;u32 DATARMNET8f1cb43b32;if(cpu>=
DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return;}
DATARMNETcf7ef40ff9=&DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu];
DATARMNET55fffa9aa9=DATARMNETcf7ef40ff9->DATARMNET7fc41d655d-DATARMNETcf7ef40ff9
->DATARMNET9853a006ae;DATARMNET8f1cb43b32=DATARMNETadb0248bd4(cpu);if(
DATARMNETcf7ef40ff9->DATARMNET14b0d18481==(0xd2d+202-0xdf7))DATARMNETcf7ef40ff9
->DATARMNET14b0d18481=DATARMNET8f1cb43b32;DATARMNETcf7ef40ff9->
DATARMNET8b9956a3f9=DATARMNETcf7ef40ff9->DATARMNETae196235f2;DATARMNETcf7ef40ff9
->DATARMNETae196235f2=DATARMNET8f1cb43b32;DATARMNETcf7ef40ff9->
DATARMNET69770f8ef7=DATARMNETcf7ef40ff9->DATARMNETae196235f2-DATARMNETcf7ef40ff9
->DATARMNET8b9956a3f9;DATARMNETcf7ef40ff9->DATARMNET17380ba0f8=
DATARMNETcf7ef40ff9->DATARMNETae196235f2-DATARMNETcf7ef40ff9->
DATARMNET14b0d18481;if(DATARMNET0997c5650d[cpu].DATARMNET1e1f197118)
DATARMNET0997c5650d[cpu].DATARMNET1e1f197118=(DATARMNET0997c5650d[cpu].
DATARMNET1e1f197118+(0xd26+209-0xdf6))%(DATARMNETbe271c415b);if(
DATARMNET55fffa9aa9==(0xd2d+202-0xdf7)){DATARMNETcf7ef40ff9->DATARMNET68714ac92c
=DATARMNETb3a4036d6d;DATARMNETcf7ef40ff9->DATARMNETbb80fccd97=(0xd2d+202-0xdf7);
DATARMNETcf7ef40ff9->DATARMNET324c1a8f98=(0xd2d+202-0xdf7);DATARMNETcf7ef40ff9->
DATARMNET253a9fc708=(0xd2d+202-0xdf7);if(DATARMNETc252c204a8){
DATARMNETc6439e3d71(&DATARMNET6cdd58e74c,DATARMNETcf7ef40ff9,&
DATARMNETe46ae760db);}DATARMNET33f47350f0(cpu,DATARMNETcf7ef40ff9);return;}
DATARMNET96f21fddc1=DATARMNETb3a4036d6d-DATARMNETcf7ef40ff9->DATARMNET68714ac92c
;DATARMNETedf00aed6f=DATARMNETcf7ef40ff9->rx_bytes-DATARMNETcf7ef40ff9->
DATARMNETde6a309f37;DATARMNET96f21fddc1=(DATARMNET96f21fddc1>DATARMNETac617c8dce
(DATARMNET1fc3ad67fd)&&DATARMNET1fc3ad67fd>(0xd2d+202-0xdf7))?
DATARMNET96f21fddc1:DATARMNETac617c8dce((0xeb7+698-0x110d));DATARMNET8233cb4988=
DATARMNETcf7ef40ff9->DATARMNETbb80fccd97;DATARMNET27c3925eff=DATARMNETcf7ef40ff9
->DATARMNET324c1a8f98;DATARMNETcf7ef40ff9->DATARMNET324c1a8f98=
DATARMNET855e9d7062(DATARMNET55fffa9aa9)/DATARMNET96f21fddc1;DATARMNETcf7ef40ff9
->DATARMNETbb80fccd97=DATARMNET855e9d7062(DATARMNETedf00aed6f)/
DATARMNET96f21fddc1;DATARMNETcf7ef40ff9->DATARMNETbb80fccd97=DATARMNET64577537b7
(DATARMNETcf7ef40ff9->DATARMNETbb80fccd97);DATARMNETcf7ef40ff9->
DATARMNET253a9fc708=DATARMNET183789850d(cpu);DATARMNETcf7ef40ff9->
DATARMNET8233cb4988=DATARMNET8233cb4988;DATARMNETcf7ef40ff9->DATARMNET27c3925eff
=DATARMNET27c3925eff;DATARMNETcf7ef40ff9->DATARMNET68714ac92c=
DATARMNETb3a4036d6d;DATARMNETcf7ef40ff9->DATARMNET9853a006ae=DATARMNETcf7ef40ff9
->DATARMNET7fc41d655d;DATARMNETcf7ef40ff9->DATARMNETde6a309f37=
DATARMNETcf7ef40ff9->rx_bytes;DATARMNETcf7ef40ff9->DATARMNETc0b20e240a=
DATARMNETcf7ef40ff9->DATARMNETbb80fccd97;if(DATARMNETc252c204a8){
DATARMNETc6439e3d71(&DATARMNET6cdd58e74c,DATARMNETcf7ef40ff9,&
DATARMNETe46ae760db);}trace_rmnet_shs_wq_high(DATARMNET39a68a0eba,
DATARMNET95d1ddcb1a,cpu,DATARMNETcf7ef40ff9->flows,DATARMNETcf7ef40ff9->
DATARMNET324c1a8f98,DATARMNETcf7ef40ff9->DATARMNETbb80fccd97,NULL,NULL);
DATARMNET33f47350f0(cpu,DATARMNETcf7ef40ff9);}static void DATARMNET617b443145(
void){u16 cpu;trace_rmnet_shs_wq_high(DATARMNET39a68a0eba,DATARMNET6bde6a5171,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL
,NULL);for(cpu=(0xd2d+202-0xdf7);cpu<DATARMNETc6782fed88;cpu++)
DATARMNET73d2153565(cpu);trace_rmnet_shs_wq_high(DATARMNET39a68a0eba,
DATARMNET5c7c474d94,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNET5b2ed86112(struct
DATARMNET6c78e47d24*DATARMNET7b2c1bbf38){struct DATARMNETc8fdbf9c85*
DATARMNET3c48cbf7e4=&DATARMNET6cdd58e74c;struct DATARMNET63d7680df2*node_p;u64
DATARMNETee9f72f13f,byte_diff;u16 DATARMNET42a992465f;if(!DATARMNET7b2c1bbf38){
DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}node_p=DATARMNET7b2c1bbf38->
DATARMNET63b1a086d5;if(DATARMNET7b2c1bbf38->DATARMNET42ceaf5cc2>
(0xd2d+202-0xdf7))return;DATARMNET42a992465f=node_p->map_cpu;if(
DATARMNET42a992465f>=DATARMNETc6782fed88){DATARMNET68d84e7b98[
DATARMNET709b59b0e6]++;return;}DATARMNETee9f72f13f=DATARMNET7b2c1bbf38->
DATARMNET4b4a76b094-DATARMNET7b2c1bbf38->DATARMNET6edbc8b649;byte_diff=
DATARMNET7b2c1bbf38->rx_bytes-DATARMNET7b2c1bbf38->DATARMNETde6a309f37;if(
DATARMNET7b2c1bbf38->DATARMNET8a4e1d5aaa){DATARMNETd8a6375e9c(
DATARMNET7b2c1bbf38,&DATARMNET3c48cbf7e4->DATARMNET73464778dc[
DATARMNET42a992465f].DATARMNETab5c1e9ad5);rm_err(
"\x53\x48\x53\x5f\x46\x4c\x4f\x57\x3a\x20\x61\x64\x64\x69\x6e\x67\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d\x20"
"\x70\x70\x73\x3a\x20\x25\x6c\x6c\x75\x20\x7c\x20\x61\x76\x67\x5f\x70\x70\x73\x20\x25\x6c\x6c\x75"
,DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38->DATARMNET7c894c2f8f,
DATARMNET7b2c1bbf38->DATARMNET324c1a8f98,DATARMNET7b2c1bbf38->
DATARMNET253a9fc708);DATARMNET7b2c1bbf38->DATARMNET8a4e1d5aaa=(0xd2d+202-0xdf7);
}if(DATARMNET42a992465f!=DATARMNET7b2c1bbf38->DATARMNET7c894c2f8f){rm_err(
"\x53\x48\x53\x5f\x46\x4c\x4f\x57\x3a\x20\x6d\x6f\x76\x69\x6e\x67\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x74\x6f\x20\x63\x70\x75\x5b\x25\x64\x5d\x20"
"\x70\x70\x73\x3a\x20\x25\x6c\x6c\x75\x20\x7c\x20\x61\x76\x67\x5f\x70\x70\x73\x20\x25\x6c\x6c\x75"
,DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38->DATARMNET7c894c2f8f,
DATARMNET42a992465f,DATARMNET7b2c1bbf38->DATARMNET324c1a8f98,DATARMNET7b2c1bbf38
->DATARMNET253a9fc708);trace_rmnet_shs_wq_high(DATARMNET394831f22a,
DATARMNET29c0bc0151,DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38->
DATARMNET7c894c2f8f,DATARMNET42a992465f,(0x16e8+787-0xc0c),DATARMNET7b2c1bbf38,
NULL);DATARMNET9914e9761e(DATARMNET7b2c1bbf38,&DATARMNET3c48cbf7e4->
DATARMNET73464778dc[DATARMNET42a992465f].DATARMNETab5c1e9ad5);
DATARMNET0349051465(DATARMNET42a992465f);DATARMNET3669e7b703(DATARMNET7b2c1bbf38
->DATARMNET7c894c2f8f);DATARMNET7b2c1bbf38->DATARMNET7c894c2f8f=
DATARMNET42a992465f;}DATARMNET3c48cbf7e4->DATARMNET73464778dc[
DATARMNET42a992465f].DATARMNET7fc41d655d+=DATARMNETee9f72f13f;
DATARMNET3c48cbf7e4->DATARMNET73464778dc[DATARMNET42a992465f].rx_bytes+=
byte_diff;DATARMNET3c48cbf7e4->DATARMNET7fc41d655d+=DATARMNETee9f72f13f;
DATARMNET3c48cbf7e4->rx_bytes+=byte_diff;}void DATARMNETdfb8ee742f(u16
DATARMNET035f475d5c,u16 DATARMNETcfb5dc7296,struct DATARMNET9b44b71ee9*ep){
struct DATARMNET63d7680df2*node_p;struct DATARMNET6c78e47d24*DATARMNET7b2c1bbf38
;struct hlist_node*tmp;unsigned long ht_flags;u16 bkt;local_bh_disable();
spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);hash_for_each_safe(
DATARMNETe603c3a4b3,bkt,tmp,node_p,list){if(!node_p)continue;if(!node_p->
DATARMNET341ea38662)continue;DATARMNET7b2c1bbf38=node_p->DATARMNET341ea38662;if(
(DATARMNET7b2c1bbf38->DATARMNET6e1a4eaf09==DATARMNET035f475d5c)&&(node_p->dev==
ep->ep)){trace_rmnet_shs_wq_high(DATARMNET394831f22a,DATARMNET45edcec1e4,
DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38->DATARMNET6e1a4eaf09,
DATARMNETcfb5dc7296,(0x16e8+787-0xc0c),DATARMNET7b2c1bbf38,NULL);node_p->
DATARMNET341ea38662->DATARMNET6e1a4eaf09=DATARMNETcfb5dc7296;}}
spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);local_bh_enable();}static
void DATARMNETc2de347e4d(u32 DATARMNETa3f89581b5,struct DATARMNET6c78e47d24*
DATARMNET7b2c1bbf38){if(DATARMNETa3f89581b5>=DATARMNET3563036124||
DATARMNET7b2c1bbf38==NULL)return;DATARMNET7b2c1bbf38->DATARMNET61e1ee0e95[
DATARMNETa3f89581b5]+=(0xd26+209-0xdf6);}static int DATARMNET6f56fe7597(u16
DATARMNET035f475d5c,u16 DATARMNETcfb5dc7296,struct DATARMNET9b44b71ee9*ep,u32
DATARMNET4da4612f1e,u32 DATARMNETa3f89581b5){struct DATARMNET63d7680df2*node_p;
struct DATARMNET6c78e47d24*DATARMNET7b2c1bbf38;struct hlist_node*tmp;unsigned
long ht_flags;int rc=(0xd2d+202-0xdf7);u16 bkt;if(!ep){DATARMNET68d84e7b98[
DATARMNETb8fe2c0e64]++;return(0xd2d+202-0xdf7);}if(DATARMNET035f475d5c>=
DATARMNETc6782fed88||DATARMNETcfb5dc7296>=DATARMNETc6782fed88){
DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return(0xd2d+202-0xdf7);}
local_bh_disable();spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);
hash_for_each_safe(DATARMNETe603c3a4b3,bkt,tmp,node_p,list){if(!node_p)continue;
if(!node_p->DATARMNET341ea38662)continue;DATARMNET7b2c1bbf38=node_p->
DATARMNET341ea38662;if(DATARMNET4da4612f1e!=(0xd2d+202-0xdf7)){if(
DATARMNET7b2c1bbf38->hash!=DATARMNET4da4612f1e)continue;}rm_err(
"\x53\x48\x53\x5f\x48\x54\x3a\x20\x3e\x3e\x20\x20\x73\x75\x67\x67\x20\x63\x70\x75\x20\x25\x64\x20\x7c\x20\x6f\x6c\x64\x20\x63\x70\x75\x20\x25\x64\x20\x7c\x20\x6e\x65\x77\x5f\x63\x70\x75\x20\x25\x64\x20\x7c\x20"
"\x6d\x61\x70\x5f\x63\x70\x75\x20\x3d\x20\x25\x64\x20\x7c\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78"
,DATARMNET7b2c1bbf38->DATARMNET6e1a4eaf09,DATARMNET035f475d5c,
DATARMNETcfb5dc7296,node_p->map_cpu,DATARMNET4da4612f1e);if((DATARMNET7b2c1bbf38
->DATARMNET6e1a4eaf09==DATARMNET035f475d5c)&&(node_p->dev==ep->ep)){
trace_rmnet_shs_wq_high(DATARMNET394831f22a,DATARMNET45edcec1e4,
DATARMNET7b2c1bbf38->hash,DATARMNET7b2c1bbf38->DATARMNET6e1a4eaf09,
DATARMNETcfb5dc7296,(0x16e8+787-0xc0c),DATARMNET7b2c1bbf38,NULL);node_p->
DATARMNET341ea38662->DATARMNET6e1a4eaf09=DATARMNETcfb5dc7296;DATARMNETc2de347e4d
(DATARMNETa3f89581b5,DATARMNET7b2c1bbf38);if(DATARMNET4da4612f1e){rm_err(
"\x53\x48\x53\x5f\x43\x48\x4e\x47\x3a\x20\x6d\x6f\x76\x69\x6e\x67\x20\x73\x69\x6e\x67\x6c\x65\x20\x66\x6c\x6f\x77\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20"
"\x73\x75\x67\x67\x5f\x63\x70\x75\x20\x63\x68\x61\x6e\x67\x65\x64\x20\x66\x72\x6f\x6d\x20\x25\x64\x20\x74\x6f\x20\x25\x64"
,DATARMNET7b2c1bbf38->hash,DATARMNET035f475d5c,node_p->DATARMNET341ea38662->
DATARMNET6e1a4eaf09);rc=(0xd26+209-0xdf6);break;}rm_err(
"\x53\x48\x53\x5f\x43\x48\x4e\x47\x3a\x20\x6d\x6f\x76\x69\x6e\x67\x20\x61\x6c\x6c\x20\x66\x6c\x6f\x77\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20"
"\x73\x75\x67\x67\x5f\x63\x70\x75\x20\x63\x68\x61\x6e\x67\x65\x64\x20\x66\x72\x6f\x6d\x20\x25\x64\x20\x74\x6f\x20\x25\x64"
,DATARMNET7b2c1bbf38->hash,DATARMNET035f475d5c,node_p->DATARMNET341ea38662->
DATARMNET6e1a4eaf09);rc|=(0xd26+209-0xdf6);}}spin_unlock_irqrestore(&
DATARMNET3764d083f0,ht_flags);local_bh_enable();return rc;}u64
DATARMNETd406e89a85(u32 DATARMNETfaedbb66a9){int DATARMNET42a992465f;u64
DATARMNET5a8059a7ce=(0xd2d+202-0xdf7);struct DATARMNETc8fdbf9c85*
DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;for(DATARMNET42a992465f=
(0xd2d+202-0xdf7);DATARMNET42a992465f<DATARMNETc6782fed88;DATARMNET42a992465f++)
{if((((0xd26+209-0xdf6)<<DATARMNET42a992465f)&DATARMNETfaedbb66a9)&&(
DATARMNET7bea4a06a6->DATARMNET73464778dc[DATARMNET42a992465f].
DATARMNET324c1a8f98>DATARMNET5a8059a7ce)){DATARMNET5a8059a7ce=
DATARMNET7bea4a06a6->DATARMNET73464778dc[DATARMNET42a992465f].
DATARMNET324c1a8f98;}}return DATARMNET5a8059a7ce;}int DATARMNET362c14e98b(u16
DATARMNETfaedbb66a9){struct DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6=&
DATARMNET6cdd58e74c;struct DATARMNET228056d4b7*DATARMNET65385af8a0;u64
DATARMNET609049f7b7=U64_MAX;u32 DATARMNET84d36cfd28=U32_MAX;int
DATARMNETbd864aa442=-(0xd26+209-0xdf6);int DATARMNETd415a9f9bd=-
(0xd26+209-0xdf6);int DATARMNETb6773d2790=-(0xd26+209-0xdf6);int
DATARMNET42a992465f=(0xd2d+202-0xdf7);u16 DATARMNETdebcca6b26;for(
DATARMNET42a992465f=DATARMNETc6782fed88-(0xd26+209-0xdf6);DATARMNET42a992465f>=
(0xd2d+202-0xdf7);DATARMNET42a992465f--){DATARMNETdebcca6b26=(((0xd26+209-0xdf6)
<<DATARMNET42a992465f)&DATARMNETfaedbb66a9)&&cpu_online(DATARMNET42a992465f);if(
!DATARMNETdebcca6b26)continue;DATARMNET65385af8a0=&DATARMNET7bea4a06a6->
DATARMNET73464778dc[DATARMNET42a992465f];trace_rmnet_shs_wq_low(
DATARMNET39a68a0eba,DATARMNET55cd50e666,DATARMNET42a992465f,DATARMNET65385af8a0
->DATARMNET324c1a8f98,DATARMNET609049f7b7,(0xd2d+202-0xdf7),NULL,NULL);if(
DATARMNET65385af8a0->flows==(0xd2d+202-0xdf7)){DATARMNETb6773d2790=
DATARMNET42a992465f;break;}if(DATARMNET65385af8a0->DATARMNET324c1a8f98==
(0xd2d+202-0xdf7)&&DATARMNET65385af8a0->flows<DATARMNET84d36cfd28){
DATARMNET84d36cfd28=DATARMNET65385af8a0->flows;DATARMNETd415a9f9bd=
DATARMNET42a992465f;}if(DATARMNET65385af8a0->DATARMNET324c1a8f98<=
DATARMNET609049f7b7){DATARMNET609049f7b7=DATARMNET65385af8a0->
DATARMNET324c1a8f98;DATARMNETbd864aa442=DATARMNET42a992465f;}}if(
DATARMNETb6773d2790>=(0xd2d+202-0xdf7))DATARMNETbd864aa442=DATARMNETb6773d2790;
else if(DATARMNETd415a9f9bd>=(0xd2d+202-0xdf7))DATARMNETbd864aa442=
DATARMNETd415a9f9bd;return DATARMNETbd864aa442;}u16 DATARMNET3c1fc10379(u16
DATARMNET7c894c2f8f,struct DATARMNET9b44b71ee9*ep){struct DATARMNETc8fdbf9c85*
DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;struct DATARMNET228056d4b7*
DATARMNET373ff1422a,*DATARMNETd8755a1440;u64 DATARMNETf115ef7639,
DATARMNET64bef917cb,DATARMNET85bfb4b2ca;u64 DATARMNET264b01f4d5,
DATARMNET53ce143c7e=(0xd2d+202-0xdf7);u16 DATARMNETd668725d64=
DATARMNET7c894c2f8f;u16 DATARMNET42a992465f;u8 DATARMNETca535905d7;u32
DATARMNETa7176e3ad8=(0xd2d+202-0xdf7);if(!ep){DATARMNET68d84e7b98[
DATARMNETb8fe2c0e64]++;return DATARMNETd668725d64;}DATARMNETd8755a1440=&
DATARMNET7bea4a06a6->DATARMNET73464778dc[DATARMNET7c894c2f8f];
DATARMNET85bfb4b2ca=DATARMNETd8755a1440->DATARMNET324c1a8f98;DATARMNET264b01f4d5
=DATARMNET713717107f[DATARMNET7c894c2f8f];DATARMNET53ce143c7e=
DATARMNET4793ed48af[DATARMNET7c894c2f8f];if(!DATARMNET362b15f941(
DATARMNET7c894c2f8f)&&(DATARMNET85bfb4b2ca>DATARMNET53ce143c7e)){return
DATARMNETd668725d64;}if(DATARMNET0997c5650d[DATARMNET7c894c2f8f].
DATARMNET1e1f197118)return DATARMNET7c894c2f8f;for(DATARMNET42a992465f=
(0xd2d+202-0xdf7);DATARMNET42a992465f<DATARMNETc6782fed88;DATARMNET42a992465f++)
{DATARMNETca535905d7=(((0xd26+209-0xdf6)<<DATARMNET42a992465f)&(ep->
DATARMNET9fb369ce5f&~DATARMNETecc0627c70.DATARMNETba3f7a11ef));if((
DATARMNET42a992465f==DATARMNET7c894c2f8f)||(!DATARMNETca535905d7)||!cpu_online(
DATARMNET42a992465f))continue;DATARMNET264b01f4d5=DATARMNET713717107f[
DATARMNET42a992465f];DATARMNET53ce143c7e=DATARMNET4793ed48af[DATARMNET42a992465f
];DATARMNET373ff1422a=&DATARMNET7bea4a06a6->DATARMNET73464778dc[
DATARMNET42a992465f];DATARMNETf115ef7639=DATARMNET373ff1422a->
DATARMNET324c1a8f98;DATARMNET64bef917cb=DATARMNETf115ef7639+DATARMNET85bfb4b2ca;
trace_rmnet_shs_wq_low(DATARMNET39a68a0eba,DATARMNETcd209744bd,
DATARMNET7c894c2f8f,DATARMNET42a992465f,DATARMNET64bef917cb,DATARMNETf115ef7639,
NULL,NULL);if((DATARMNET64bef917cb>DATARMNET53ce143c7e)&&(DATARMNET64bef917cb<
DATARMNET264b01f4d5)&&DATARMNETf115ef7639<=DATARMNETa7176e3ad8){
DATARMNETd668725d64=DATARMNET42a992465f;DATARMNETa7176e3ad8=DATARMNETf115ef7639;
}}trace_rmnet_shs_wq_high(DATARMNET39a68a0eba,DATARMNETcd209744bd,
DATARMNET7c894c2f8f,DATARMNETd668725d64,DATARMNET85bfb4b2ca,DATARMNET7bea4a06a6
->DATARMNET73464778dc[DATARMNETd668725d64].DATARMNET324c1a8f98,NULL,NULL);return
DATARMNETd668725d64;}void DATARMNET466244e5d6(u16 DATARMNETc790ff30fc){struct
DATARMNET9b44b71ee9*ep=NULL;u16 DATARMNETcfb5dc7296;list_for_each_entry(ep,&
DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;
DATARMNETcfb5dc7296=DATARMNET3c1fc10379(DATARMNETc790ff30fc,ep);if(
DATARMNETcfb5dc7296!=DATARMNETc790ff30fc)DATARMNETdfb8ee742f(DATARMNETc790ff30fc
,DATARMNETcfb5dc7296,ep);}}int DATARMNET769bbe36c6(u16 DATARMNET7c894c2f8f,u16
DATARMNET208ea67e1d,struct DATARMNET9b44b71ee9*ep){u16 DATARMNET553df5e12a=
(0xd2d+202-0xdf7);if(!ep){DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;return
(0xd2d+202-0xdf7);}if(DATARMNET7c894c2f8f>=DATARMNETc6782fed88||
DATARMNET208ea67e1d>=DATARMNETc6782fed88){DATARMNET68d84e7b98[
DATARMNET54b67b8a75]++;return(0xd2d+202-0xdf7);}DATARMNET553df5e12a=(
(0xd26+209-0xdf6)<<DATARMNET208ea67e1d)&ep->DATARMNET9fb369ce5f&~
DATARMNETecc0627c70.DATARMNETba3f7a11ef;rm_err(
"\x53\x48\x53\x5f\x4d\x41\x53\x4b\x3a\x20\x20\x63\x75\x72\x20\x63\x70\x75\x20\x5b\x25\x64\x5d\x20\x7c\x20\x64\x65\x73\x74\x5f\x63\x70\x75\x20\x5b\x25\x64\x5d\x20\x7c\x20"
"\x65\x70\x5f\x72\x70\x73\x5f\x6d\x61\x73\x6b\x20\x3d\x20\x30\x78\x25\x78\x20\x7c\x20\x63\x70\x75\x5f\x6f\x6e\x6c\x69\x6e\x65\x28\x64\x65\x73\x74\x29\x20\x3d\x20\x25\x64"
"\x63\x70\x75\x5f\x69\x6e\x5f\x72\x70\x73\x5f\x6d\x61\x73\x6b\x20\x3d\x20\x25\x64"
,DATARMNET7c894c2f8f,DATARMNET208ea67e1d,ep->DATARMNET9fb369ce5f,cpu_online(
DATARMNET208ea67e1d),DATARMNET553df5e12a);if(DATARMNET7c894c2f8f==
DATARMNET208ea67e1d||!cpu_online(DATARMNET208ea67e1d)||!DATARMNET553df5e12a){
return(0xd2d+202-0xdf7);}return(0xd26+209-0xdf6);}int DATARMNET5f72606f6f(u16
DATARMNETc790ff30fc,u16 DATARMNET208ea67e1d,u32 DATARMNET4da4612f1e,u32
DATARMNETa3f89581b5){unsigned long flags;struct DATARMNET9b44b71ee9*ep;if(
DATARMNETc790ff30fc>=DATARMNETc6782fed88||DATARMNET208ea67e1d>=
DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return
(0xd2d+202-0xdf7);}local_bh_disable();spin_lock_irqsave(&DATARMNETec2a4f5211,
flags);list_for_each_entry(ep,&DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->
DATARMNET4a4e6f66b5)continue;if(!DATARMNET769bbe36c6(DATARMNETc790ff30fc,
DATARMNET208ea67e1d,ep)){rm_err(
"\x53\x48\x53\x5f\x46\x44\x45\x53\x43\x3a\x20\x3e\x3e\x20\x43\x61\x6e\x6e\x6f\x74\x20\x6d\x6f\x76\x65\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x6f\x6e\x20\x65\x70"
"\x20\x66\x72\x6f\x6d\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x74\x6f\x20\x63\x70\x75\x5b\x25\x64\x5d"
,DATARMNET4da4612f1e,DATARMNETc790ff30fc,DATARMNET208ea67e1d);continue;}if(
DATARMNET6f56fe7597(DATARMNETc790ff30fc,DATARMNET208ea67e1d,ep,
DATARMNET4da4612f1e,DATARMNETa3f89581b5)){rm_err(
"\x53\x48\x53\x5f\x46\x44\x45\x53\x43\x3a\x20\x3e\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x61\x73\x20\x73\x75\x67\x67\x65\x73\x74\x65\x64\x20\x74\x6f"
"\x20\x6d\x6f\x76\x65\x20\x66\x72\x6f\x6d\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x74\x6f\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x73\x75\x67\x67\x5f\x74\x79\x70\x65\x20\x5b\x25\x64\x5d"
,DATARMNET4da4612f1e,DATARMNETc790ff30fc,DATARMNET208ea67e1d,DATARMNETa3f89581b5
);spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);local_bh_enable();return
(0xd26+209-0xdf6);}}spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);
local_bh_enable();return(0xd2d+202-0xdf7);}int DATARMNETf85599b9d8(u32
DATARMNET8c11bd9466,u8 DATARMNET87636d0152){struct DATARMNET63d7680df2*node_p;
struct DATARMNET6c78e47d24*DATARMNET7b2c1bbf38;unsigned long ht_flags;u16 bkt;
spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);hash_for_each(
DATARMNETe603c3a4b3,bkt,node_p,list){if(!node_p)continue;if(!node_p->
DATARMNET341ea38662)continue;DATARMNET7b2c1bbf38=node_p->DATARMNET341ea38662;if(
DATARMNET7b2c1bbf38->hash!=DATARMNET8c11bd9466)continue;rm_err(
"\x53\x48\x53\x5f\x48\x54\x3a\x20\x3e\x3e\x20\x73\x65\x67\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x73\x65\x67\x73\x5f\x70\x65\x72\x5f\x73\x6b\x62\x20\x25\x75"
,DATARMNET8c11bd9466,DATARMNET87636d0152);trace_rmnet_shs_wq_high(
DATARMNET394831f22a,DATARMNET213a62da0d,DATARMNET7b2c1bbf38->hash,
DATARMNET87636d0152,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNET7b2c1bbf38,
NULL);node_p->DATARMNET341ea38662->DATARMNET87636d0152=DATARMNET87636d0152;
spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);return(0xd26+209-0xdf6);}
spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);rm_err(
"\x53\x48\x53\x5f\x48\x54\x3a\x20\x3e\x3e\x20\x73\x65\x67\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x73\x65\x67\x73\x5f\x70\x65\x72\x5f\x73\x6b\x62\x20\x25\x75\x20\x6e\x6f\x74\x20\x73\x65\x74\x20\x2d\x20\x68\x61\x73\x68\x20\x6e\x6f\x74\x20\x66\x6f\x75\x6e\x64"
,DATARMNET8c11bd9466,DATARMNET87636d0152);return(0xd2d+202-0xdf7);}void
DATARMNET5e1aaed12b(void){struct DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6=&
DATARMNET6cdd58e74c;struct DATARMNET228056d4b7*DATARMNETf632b170b1;struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a;int flows,i;u16 DATARMNET42a992465f=
(0xd2d+202-0xdf7);if(!DATARMNETdfb4d931bc)return;for(DATARMNET42a992465f=
(0xd2d+202-0xdf7);DATARMNET42a992465f<DATARMNETc6782fed88;DATARMNET42a992465f++)
{DATARMNETf632b170b1=&DATARMNET7bea4a06a6->DATARMNET73464778dc[
DATARMNET42a992465f];flows=DATARMNET7bea4a06a6->DATARMNET73464778dc[
DATARMNET42a992465f].flows;rm_err(
"\x53\x48\x53\x5f\x43\x50\x55\x3a\x20\x63\x70\x75\x5b\x25\x64\x5d\x3a\x20\x66\x6c\x6f\x77\x73\x3d\x25\x64\x20\x70\x70\x73\x3d\x25\x6c\x6c\x75\x20\x62\x70\x73\x3d\x25\x6c\x6c\x75\x20"
"\x71\x68\x65\x61\x64\x5f\x64\x69\x66\x66\x20\x25\x75\x20\x71\x68\x65\x61\x64\x5f\x74\x6f\x74\x61\x6c\x20\x3d\x20\x25\x75\x20\x71\x68\x65\x61\x64\x5f\x73\x74\x61\x72\x74\x20\x3d\x20\x25\x75\x20"
"\x71\x68\x65\x61\x64\x20\x3d\x20\x25\x75\x20\x71\x68\x65\x61\x64\x5f\x6c\x61\x73\x74\x20\x3d\x20\x25\x75\x20"
,DATARMNET42a992465f,flows,DATARMNETf632b170b1->DATARMNET324c1a8f98,
DATARMNETf632b170b1->DATARMNETbb80fccd97,DATARMNETf632b170b1->
DATARMNET69770f8ef7,DATARMNETf632b170b1->DATARMNET17380ba0f8,DATARMNETf632b170b1
->DATARMNET14b0d18481,DATARMNETf632b170b1->DATARMNETae196235f2,
DATARMNETf632b170b1->DATARMNET8b9956a3f9);list_for_each_entry(
DATARMNETd2a694d52a,&DATARMNET9825511866,DATARMNET6de26f0feb){if(
DATARMNETd2a694d52a->DATARMNET0dc393a345==(0xd2d+202-0xdf7))continue;if(
DATARMNETd2a694d52a->DATARMNET63b1a086d5){if(DATARMNETd2a694d52a->
DATARMNET7c894c2f8f==DATARMNET42a992465f)rm_err(
"\x53\x48\x53\x5f\x43\x50\x55\x3a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20"
"\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x61\x76\x67\x5f\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x72\x78\x5f\x62\x70\x73\x20\x25\x6c\x6c\x75\x20"
,DATARMNETd2a694d52a->hash,DATARMNETd2a694d52a->DATARMNET324c1a8f98,
DATARMNETd2a694d52a->DATARMNET253a9fc708,DATARMNETd2a694d52a->
DATARMNETbb80fccd97);}}for(i=(0xd2d+202-0xdf7);i<(0xd18+223-0xdf4)-flows;i++){
rm_err("\x25\x73",
"\x53\x48\x53\x5f\x43\x50\x55\x3a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3e\x20");
}}}void DATARMNET468586cca6(struct list_head*DATARMNETb436c3f30b){struct
DATARMNET09a412b1c6*DATARMNET4238158b2a;if(!DATARMNETdfb4d931bc)return;if(!
DATARMNETb436c3f30b){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x44\x4d\x41\x3a\x20\x47\x6f\x6c\x64\x20\x46\x6c\x6f\x77\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x44\x4d\x41\x3a\x20\x4c\x69\x73\x74\x20\x6f\x66\x20\x73\x6f\x72\x74\x65\x64\x20\x67\x6f\x6c\x64\x20\x66\x6c\x6f\x77\x73\x3a"
);list_for_each_entry(DATARMNET4238158b2a,DATARMNETb436c3f30b,
DATARMNETd502c0412a){rm_err(
"\x53\x48\x53\x5f\x47\x44\x4d\x41\x3a\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d"
,DATARMNET4238158b2a->hash,DATARMNET4238158b2a->DATARMNET324c1a8f98,
DATARMNET4238158b2a->DATARMNET42a992465f);}}void DATARMNET7792d4f4ad(struct
list_head*DATARMNETe46ae760db,struct list_head*DATARMNETb436c3f30b,struct
list_head*DATARMNETf0fb155a9c,struct list_head*DATARMNET3208cd0982){if(!
DATARMNETe46ae760db||!DATARMNETb436c3f30b||!DATARMNETf0fb155a9c||!
DATARMNET3208cd0982){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}
list_sort(NULL,DATARMNETe46ae760db,&DATARMNET85af86a36d);list_sort(NULL,
DATARMNETb436c3f30b,&DATARMNETd5c15f1ff3);list_sort(NULL,DATARMNET3208cd0982,&
DATARMNET3c489db64a);DATARMNET5157210c44(DATARMNETe46ae760db);
DATARMNET0e273eab79(DATARMNETb436c3f30b);DATARMNETe15af8eb6d(DATARMNETf0fb155a9c
);DATARMNET78f3a0ca4f(DATARMNET3208cd0982);DATARMNET78666f33a1();
DATARMNET5945236cd3(DATARMNET7afb49ee3f);trace_rmnet_shs_wq_high(
DATARMNETa0ecb9daac,DATARMNET1fc50aac59,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNET95736008d9(void)
{struct DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c;struct
DATARMNET228056d4b7*DATARMNET373ff1422a;u64 DATARMNETc7c10881f4,
DATARMNET4a7d30059b,DATARMNETed01f76643;u64 DATARMNET629c75e1fa,
DATARMNET253a9fc708;u64 DATARMNET264b01f4d5,DATARMNET53ce143c7e=
(0xd2d+202-0xdf7);u16 DATARMNET42a992465f,DATARMNETab4cf0ad84,
DATARMNET0c72af011b;int flows;for(DATARMNET42a992465f=(0xd2d+202-0xdf7);
DATARMNET42a992465f<DATARMNETc6782fed88;DATARMNET42a992465f++){flows=
DATARMNET7bea4a06a6->DATARMNET73464778dc[DATARMNET42a992465f].flows;if(flows<=
(0xd2d+202-0xdf7))continue;DATARMNET373ff1422a=&DATARMNET7bea4a06a6->
DATARMNET73464778dc[DATARMNET42a992465f];DATARMNETc7c10881f4=DATARMNET373ff1422a
->DATARMNET324c1a8f98;DATARMNET4a7d30059b=DATARMNET373ff1422a->
DATARMNET27c3925eff;DATARMNETed01f76643=DATARMNET373ff1422a->DATARMNET253a9fc708
;DATARMNET264b01f4d5=DATARMNET713717107f[DATARMNET42a992465f];
DATARMNET53ce143c7e=DATARMNET4793ed48af[DATARMNET42a992465f];if(
DATARMNET362b15f941(DATARMNET42a992465f)){DATARMNETab4cf0ad84=
DATARMNETcab56af6d5;DATARMNET0c72af011b=(0xeb7+698-0x110d)-DATARMNETcab56af6d5;}
else{DATARMNET0c72af011b=DATARMNETcab56af6d5;DATARMNETab4cf0ad84=
(0xeb7+698-0x110d)-DATARMNETcab56af6d5;}DATARMNET629c75e1fa=(DATARMNET4a7d30059b
+DATARMNETed01f76643)/(0xd1f+216-0xdf5);DATARMNET253a9fc708=((
DATARMNETab4cf0ad84*DATARMNETc7c10881f4)+(DATARMNET0c72af011b*
DATARMNET629c75e1fa))/(DATARMNETab4cf0ad84+DATARMNET0c72af011b);
DATARMNET373ff1422a->DATARMNET253a9fc708=DATARMNET253a9fc708;
trace_rmnet_shs_wq_high(DATARMNET39a68a0eba,DATARMNETde65aa00a6,
DATARMNET42a992465f,DATARMNETc7c10881f4,DATARMNET4a7d30059b,DATARMNET253a9fc708,
NULL,NULL);if((DATARMNET253a9fc708>DATARMNET264b01f4d5)||(((0xd26+209-0xdf6)<<
DATARMNET42a992465f)&DATARMNETecc0627c70.DATARMNETba3f7a11ef)||!cpu_online(
DATARMNET42a992465f)||((DATARMNET253a9fc708<DATARMNET53ce143c7e)&&(
DATARMNETc7c10881f4<DATARMNET53ce143c7e)))DATARMNET466244e5d6(
DATARMNET42a992465f);}}void DATARMNETe00453a3e4(struct DATARMNET9b44b71ee9*ep){
int DATARMNET9025861a27;int DATARMNETef87f9e251;u16 DATARMNETb773055ecd;u16
DATARMNETc312f6517d;u16 DATARMNETc35b40fa7b;u8 DATARMNETffd83bb362=
(0xd2d+202-0xdf7);u8 DATARMNET24f6ce5dc0=(0xd2d+202-0xdf7);if(!ep){
DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;return;}DATARMNETb773055ecd=ep->
DATARMNET9fb369ce5f;DATARMNETc312f6517d=ep->DATARMNET24a91635db;
DATARMNETc35b40fa7b=ep->DATARMNET1a1d89d417;memset(ep->DATARMNET5af04d0405,-
(0xd26+209-0xdf6),sizeof(*ep->DATARMNET5af04d0405)*DATARMNETc6782fed88);memset(
ep->DATARMNET7167e10d99,-(0xd26+209-0xdf6),sizeof(*ep->DATARMNET7167e10d99)*
DATARMNETc6782fed88);do{DATARMNET9025861a27=DATARMNET362c14e98b(
DATARMNETc312f6517d&~DATARMNETecc0627c70.DATARMNETba3f7a11ef);if(
DATARMNET9025861a27>=(0xd2d+202-0xdf7)){ep->DATARMNET5af04d0405[
DATARMNETffd83bb362]=DATARMNET9025861a27;DATARMNETc312f6517d=DATARMNETc312f6517d
&~((0xd26+209-0xdf6)<<DATARMNET9025861a27);DATARMNETffd83bb362++;}else{break;}}
while(DATARMNETc312f6517d!=(0xd2d+202-0xdf7));trace_rmnet_shs_wq_low(
DATARMNET39a68a0eba,DATARMNETb9205423e5,ep->DATARMNET5af04d0405[
(0xd2d+202-0xdf7)],ep->DATARMNET5af04d0405[(0xd26+209-0xdf6)],ep->
DATARMNET5af04d0405[(0xd1f+216-0xdf5)],ep->DATARMNETd7a83774f8,ep,NULL);do{
DATARMNETef87f9e251=DATARMNET362c14e98b(DATARMNETc35b40fa7b&~DATARMNETecc0627c70
.DATARMNETba3f7a11ef);if(DATARMNETef87f9e251>=(0xd2d+202-0xdf7)){ep->
DATARMNET7167e10d99[DATARMNET24f6ce5dc0]=DATARMNETef87f9e251;DATARMNETc35b40fa7b
=DATARMNETc35b40fa7b&~((0xd26+209-0xdf6)<<DATARMNETef87f9e251);
DATARMNET24f6ce5dc0++;}else break;}while(DATARMNETc35b40fa7b!=(0xd2d+202-0xdf7))
;ep->DATARMNETd7a83774f8=DATARMNETffd83bb362;ep->DATARMNET847276e5af=
DATARMNET24f6ce5dc0;ep->DATARMNET6bda8fe27e=(0xd2d+202-0xdf7);ep->
DATARMNET121a654efd=(0xd2d+202-0xdf7);trace_rmnet_shs_wq_low(DATARMNET39a68a0eba
,DATARMNETffec99a10f,ep->DATARMNET7167e10d99[(0xd2d+202-0xdf7)],ep->
DATARMNET7167e10d99[(0xd26+209-0xdf6)],ep->DATARMNET7167e10d99[(0xd1f+216-0xdf5)
],ep->DATARMNET847276e5af,ep,NULL);return;}void DATARMNET0a6fb12cb2(void){struct
DATARMNET9b44b71ee9*ep=NULL;list_for_each_entry(ep,&DATARMNET30a3e83974,
DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;DATARMNETe00453a3e4(ep
);}}static int DATARMNET1154e4fac6(ktime_t time,int DATARMNET64bb8a8f57){int ret
=false;if(time>DATARMNETa804c0b904)ret=true;else if(DATARMNET64bb8a8f57>
DATARMNET1c2d76f636&&time>DATARMNET2922c89d50)ret=true;else if(
DATARMNET64bb8a8f57>DATARMNET7a815512d3&&time>DATARMNET270b564b55)ret=true;
return ret;}void DATARMNET39391a8bc5(u8 DATARMNETcd94e0d3c7){struct
DATARMNET63d7680df2*node_p=NULL;ktime_t DATARMNETf48008e7b6;unsigned long
ht_flags;struct DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;struct list_head*
DATARMNET7b34b7b5be=NULL,*next=NULL;rcu_read_lock();local_bh_disable();
spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);list_for_each_safe(
DATARMNET7b34b7b5be,next,&DATARMNET9825511866){DATARMNETd2a694d52a=list_entry(
DATARMNET7b34b7b5be,struct DATARMNET6c78e47d24,DATARMNET6de26f0feb);if(
DATARMNETd2a694d52a->DATARMNET63b1a086d5==NULL)continue;node_p=
DATARMNETd2a694d52a->DATARMNET63b1a086d5;DATARMNETf48008e7b6=DATARMNET36cfa76181
(DATARMNETd2a694d52a->DATARMNET42ceaf5cc2);if((DATARMNET1154e4fac6(
DATARMNETf48008e7b6,DATARMNETecc0627c70.DATARMNET64bb8a8f57)&&((node_p->
DATARMNET85c698ec34&&!rcu_dereference(rmnet_shs_switch))||!node_p->
DATARMNET85c698ec34))||DATARMNETcd94e0d3c7){trace_rmnet_shs_wq_low(
DATARMNET394831f22a,DATARMNET5e2c5adaae,node_p->hash,DATARMNETf48008e7b6,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),node_p,DATARMNETd2a694d52a);
DATARMNET23c7ddd780(node_p,DATARMNET5b5927fd7e);DATARMNET3669e7b703(
DATARMNETd2a694d52a->DATARMNET7c894c2f8f);if(node_p){DATARMNETde8ee16f92(node_p)
;hash_del_rcu(&node_p->list);kfree(node_p);}rm_err(
"\x53\x48\x53\x5f\x46\x4c\x4f\x57\x3a\x20\x72\x65\x6d\x6f\x76\x69\x6e\x67\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d\x20"
"\x70\x70\x73\x3a\x20\x25\x6c\x6c\x75\x20\x61\x76\x67\x5f\x70\x70\x73\x3a\x20\x25\x6c\x6c\x75"
,DATARMNETd2a694d52a->hash,DATARMNETd2a694d52a->DATARMNET7c894c2f8f,
DATARMNETd2a694d52a->DATARMNET324c1a8f98,DATARMNETd2a694d52a->
DATARMNET253a9fc708);DATARMNETb4a6870b3b(DATARMNETd2a694d52a);if(
DATARMNETd2a694d52a->DATARMNET0bfc2b2c85==(0xd2d+202-0xdf7)||DATARMNETcd94e0d3c7
){DATARMNET2fe780019f(DATARMNETd2a694d52a);kfree(DATARMNETd2a694d52a);}else{
DATARMNETa6e92c3315(DATARMNETd2a694d52a);}DATARMNETecc0627c70.
DATARMNET64bb8a8f57--;}}spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);
local_bh_enable();rcu_read_unlock();}void DATARMNETe69c918dc8(struct
DATARMNET9b44b71ee9*ep){struct rps_map*map;u8 len=(0xd2d+202-0xdf7);if(!ep||!ep
->ep){DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;return;}rcu_read_lock();if(!ep
->ep){pr_info(
"\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x73\x74\x61\x74\x65\x20\x25\x70"
,ep->ep);DATARMNET68d84e7b98[DATARMNETb8fe2c0e64]++;return;}map=rcu_dereference(
ep->ep->_rx->rps_map);ep->DATARMNET9fb369ce5f=(0xd2d+202-0xdf7);if(map!=NULL){
for(len=(0xd2d+202-0xdf7);len<map->len;len++)ep->DATARMNET9fb369ce5f|=(
(0xd26+209-0xdf6)<<map->cpus[len]);}rcu_read_unlock();ep->DATARMNET24a91635db=ep
->DATARMNET9fb369ce5f&(0xeb7+1101-0x12f5);ep->DATARMNET1a1d89d417=ep->
DATARMNET9fb369ce5f&(0xbf7+4405-0x1c3c);}void DATARMNETd6ee05f1b4(struct
net_device*dev){struct DATARMNET9b44b71ee9*ep=NULL;struct DATARMNET9b44b71ee9*
tmp=NULL;unsigned long flags;if(!dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++
;return;}spin_lock_irqsave(&DATARMNETec2a4f5211,flags);list_for_each_entry_safe(
ep,tmp,&DATARMNET30a3e83974,DATARMNET0763436b8d){if(ep->ep==dev){ep->
DATARMNET4a4e6f66b5=(0xd2d+202-0xdf7);DATARMNETf7d317ed55(ep);kfree(ep);break;}}
spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);}void DATARMNET7492293980(
struct net_device*dev){struct DATARMNET9b44b71ee9*ep=NULL;unsigned long flags;if
(!dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;return;}spin_lock_irqsave(&
DATARMNETec2a4f5211,flags);ep=kzalloc(sizeof(*ep),GFP_ATOMIC);if(!ep){
DATARMNET68d84e7b98[DATARMNET40ceff078e]++;spin_unlock_irqrestore(&
DATARMNETec2a4f5211,flags);return;}ep->ep=dev;ep->DATARMNET4a4e6f66b5=
(0xd26+209-0xdf6);INIT_LIST_HEAD(&ep->DATARMNET0763436b8d);DATARMNETe69c918dc8(
ep);DATARMNET4095253347(ep);spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);}
void DATARMNET039ac6d55d(void){struct DATARMNET9b44b71ee9*ep=NULL;
list_for_each_entry(ep,&DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->
DATARMNET4a4e6f66b5)continue;DATARMNETe69c918dc8(ep);ep->DATARMNET257fc4b2d4=
(0xd2d+202-0xdf7);ep->DATARMNET4eb77c78e6=(0xd2d+202-0xdf7);}}noinline void
DATARMNETedc898218c(void){int cpu,DATARMNETc790ff30fc;int DATARMNET421230d879;
struct DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;for(cpu=(0xd2d+202-0xdf7);
cpu<DATARMNETc6782fed88;cpu++){DATARMNET2d482e7d9f[cpu]=(0xd2d+202-0xdf7);
DATARMNET0997c5650d[cpu].seg=(0xd2d+202-0xdf7);}list_for_each_entry(
DATARMNETd2a694d52a,&DATARMNET9825511866,DATARMNET6de26f0feb){if(
DATARMNETd2a694d52a->DATARMNET0dc393a345==(0xd2d+202-0xdf7))continue;if(
DATARMNETd2a694d52a->DATARMNET253a9fc708>DATARMNET832dcfb5f8&&
DATARMNETd2a694d52a->DATARMNET4b4a76b094>DATARMNET59f7cb903f)if(
DATARMNETd2a694d52a->DATARMNET7c894c2f8f<DATARMNETc6782fed88){
DATARMNET421230d879=DATARMNETd2a694d52a->DATARMNET7c894c2f8f;DATARMNET2d482e7d9f
[DATARMNET421230d879]++;}DATARMNETc790ff30fc=DATARMNETd2a694d52a->
DATARMNET7c894c2f8f;if(DATARMNETc790ff30fc>=DATARMNETc6782fed88||
DATARMNETc790ff30fc<(0xd2d+202-0xdf7)){continue;}if(DATARMNETd2a694d52a->
DATARMNET87636d0152>(0xd2d+202-0xdf7)){DATARMNET0997c5650d[DATARMNETc790ff30fc].
seg++;}}}void DATARMNETcd6e26f0ad(void){struct timespec64 time;struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a=NULL;(void)ktime_get_boottime_ts64(&time
);DATARMNETb3a4036d6d=DATARMNETe6671dbf38(time.tv_sec)+time.tv_nsec;
DATARMNET039ac6d55d();DATARMNETe46c480d71();list_for_each_entry(
DATARMNETd2a694d52a,&DATARMNET9825511866,DATARMNET6de26f0feb){if(
DATARMNETd2a694d52a->DATARMNET0dc393a345==(0xd2d+202-0xdf7))continue;if(
DATARMNETd2a694d52a->DATARMNET63b1a086d5){DATARMNET9a7769cf21(
DATARMNETd2a694d52a);DATARMNET5b2ed86112(DATARMNETd2a694d52a);if(
DATARMNETc252c204a8){if(DATARMNETd2a694d52a->DATARMNET63b1a086d5->
DATARMNETa1099c74fe==(0xd2d+202-0xdf7)){DATARMNET6f4b0915d3(DATARMNETd2a694d52a,
&DATARMNET3208cd0982);}if(!DATARMNET362b15f941(DATARMNETd2a694d52a->
DATARMNET7c894c2f8f)){DATARMNET24e4475345(DATARMNETd2a694d52a,&
DATARMNET6c23f11e81);}if(DATARMNETd2a694d52a->DATARMNET1e9d25d9ff==IPPROTO_TCP){
DATARMNET28a80d526e(DATARMNETd2a694d52a,&DATARMNETf91b305f4e);}}else{
DATARMNETd2a694d52a->DATARMNET63b1a086d5->DATARMNET341ea38662->
DATARMNET87636d0152=(0xd2d+202-0xdf7);}}}DATARMNET617b443145();
DATARMNET0ce3f33785();DATARMNET8b2fb5dc3c();if(DATARMNETc252c204a8){rm_err(
"\x25\x73",
"\x53\x48\x53\x5f\x55\x50\x44\x41\x54\x45\x3a\x20\x55\x73\x65\x72\x73\x70\x61\x63\x65\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64\x2c\x20\x72\x65\x6c\x79\x69\x6e\x67\x20\x6f\x6e\x20\x75\x73\x65\x72\x73\x70\x61\x63\x65\x20\x65\x76\x61\x6c\x75\x61\x74\x69\x6f\x6e"
);DATARMNET7792d4f4ad(&DATARMNETe46ae760db,&DATARMNET6c23f11e81,&
DATARMNETf91b305f4e,&DATARMNET3208cd0982);DATARMNETa1b141715b(&
DATARMNET6c23f11e81);DATARMNET3af54cd726(&DATARMNETf91b305f4e);
DATARMNETb177316a15(&DATARMNETe46ae760db);DATARMNETcc489fbbad(&
DATARMNET3208cd0982);}else{rm_err("\x25\x73",
"\x53\x48\x53\x5f\x55\x50\x44\x41\x54\x45\x3a\x20\x73\x68\x73\x20\x75\x73\x65\x72\x73\x70\x61\x63\x65\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64\x2c\x20\x75\x73\x69\x6e\x67\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x6c\x6f\x67\x69\x63"
);DATARMNET95736008d9();}DATARMNET0a6fb12cb2();DATARMNETedc898218c();}void
DATARMNETb4b5fc9686(struct work_struct*DATARMNET33110a3ff5){unsigned long flags;
unsigned long DATARMNET28085cfd14;trace_rmnet_shs_wq_high(DATARMNET4fe8e8c1a9,
DATARMNET5a417740cb,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);spin_lock_irqsave(&DATARMNETec2a4f5211,flags);
DATARMNETcd6e26f0ad();spin_unlock_irqrestore(&DATARMNETec2a4f5211,flags);
DATARMNET39391a8bc5(DATARMNET53bef3c026);DATARMNET5e1aaed12b();
DATARMNET28085cfd14=msecs_to_jiffies(DATARMNET1fc3ad67fd);queue_delayed_work(
DATARMNETf141197982,&DATARMNET9dc7755be5->DATARMNET1150269da2,
DATARMNET28085cfd14);trace_rmnet_shs_wq_high(DATARMNET4fe8e8c1a9,
DATARMNET848d2ddfa7,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNET5fb4151598(void){struct
DATARMNET9b44b71ee9*ep=NULL;struct list_head*DATARMNET7b34b7b5be=NULL,*next=NULL
;list_for_each_safe(DATARMNET7b34b7b5be,next,&DATARMNET30a3e83974){ep=list_entry
(DATARMNET7b34b7b5be,struct DATARMNET9b44b71ee9,DATARMNET0763436b8d);
trace_rmnet_shs_wq_high(DATARMNET5e796836fb,DATARMNET1ee5d0565d,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),ep,
NULL);DATARMNETf7d317ed55(ep);kfree(ep);}}void DATARMNETf7dcab9a9e(void){if(!
DATARMNETf141197982||!DATARMNET9dc7755be5)return;DATARMNET28d33bd09f();
DATARMNET5945236cd3(DATARMNET19092afcc2);trace_rmnet_shs_wq_high(
DATARMNETc1e19aa345,DATARMNET7cf840e991,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);cancel_delayed_work_sync(&
DATARMNET9dc7755be5->DATARMNET1150269da2);drain_workqueue(DATARMNETf141197982);
destroy_workqueue(DATARMNETf141197982);kfree(DATARMNET9dc7755be5);
DATARMNET9dc7755be5=NULL;DATARMNETf141197982=NULL;DATARMNET39391a8bc5(
DATARMNETc5db038c35);DATARMNET5fb4151598();trace_rmnet_shs_wq_high(
DATARMNETc1e19aa345,DATARMNETa5cdfd53b3,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNETd3d1d13f44(void)
{u8 DATARMNET42a992465f;struct DATARMNET228056d4b7*DATARMNET7bea4a06a6;for(
DATARMNET42a992465f=(0xd2d+202-0xdf7);DATARMNET42a992465f<DATARMNETc6782fed88;
DATARMNET42a992465f++){trace_rmnet_shs_wq_high(DATARMNET92b282b12c,
DATARMNET57cad43bb7,DATARMNET42a992465f,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);DATARMNET7bea4a06a6=&DATARMNET6cdd58e74c.
DATARMNET73464778dc[DATARMNET42a992465f];INIT_LIST_HEAD(&DATARMNET7bea4a06a6->
DATARMNETab5c1e9ad5);DATARMNET7bea4a06a6->DATARMNET42a992465f=
DATARMNET42a992465f;}}void DATARMNET4063c95208(void){int cpu;if(
DATARMNETf141197982&&DATARMNET9dc7755be5)cancel_delayed_work_sync(&
DATARMNET9dc7755be5->DATARMNET1150269da2);for(cpu=(0xd2d+202-0xdf7);cpu<
DATARMNETc6782fed88;cpu++)DATARMNET2d482e7d9f[cpu]=(0xd2d+202-0xdf7);
rcu_read_lock();if(((0xd26+209-0xdf6)<<DATARMNETecc0627c70.DATARMNET7d667e828e)&
DATARMNETbc3c416b77){DATARMNETecc0627c70.DATARMNET5c24e1df05=(0xd26+209-0xdf6);
RCU_INIT_POINTER(rmnet_shs_switch,DATARMNET756778f14f);DATARMNETb7ddf3c5dd[
DATARMNET6ea8a58f4e]++;}rcu_read_unlock();}void DATARMNET7b6c061b06(void){if(
DATARMNETf141197982&&DATARMNET9dc7755be5)queue_delayed_work(DATARMNETf141197982,
&DATARMNET9dc7755be5->DATARMNET1150269da2,(0xd2d+202-0xdf7));}void
DATARMNET3ae0d614d6(void){if(DATARMNETf141197982)return;DATARMNETf5f83b943f();
trace_rmnet_shs_wq_high(DATARMNET9104d544fa,DATARMNET1b421b0381,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL
,NULL);DATARMNETf141197982=alloc_workqueue(
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x77\x71",WQ_UNBOUND,(0xd26+209-0xdf6))
;if(!DATARMNETf141197982){DATARMNET68d84e7b98[DATARMNETecdf13872c]++;return;}
DATARMNET9dc7755be5=kmalloc(sizeof(struct DATARMNETa144e2bd00),GFP_ATOMIC);if(!
DATARMNET9dc7755be5){DATARMNET68d84e7b98[DATARMNETd1687e0776]++;
DATARMNETf7dcab9a9e();return;}DATARMNETf5b8fce55d(DATARMNET138a989ecb,
(0xd26+209-0xdf6));DATARMNETd3d1d13f44();INIT_DELAYED_WORK(&DATARMNET9dc7755be5
->DATARMNET1150269da2,DATARMNETb4b5fc9686);trace_rmnet_shs_wq_high(
DATARMNET9104d544fa,DATARMNETb196f64ee0,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}int DATARMNETb709a938b5(u16
cpu){int flows=-(0xd26+209-0xdf6);if(cpu>=DATARMNETc6782fed88){
DATARMNET68d84e7b98[DATARMNET709b59b0e6]++;return flows;}flows=
DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows;trace_rmnet_shs_wq_low(
DATARMNET39a68a0eba,DATARMNET0e287157de,cpu,flows,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);return flows;}int DATARMNET392890a12b(void){u16
cpu;int DATARMNET59bd820724=-(0xd26+209-0xdf6);int DATARMNET847bd62811;for(cpu=
(0xd2d+202-0xdf7);cpu<DATARMNETc6782fed88;cpu++){DATARMNET847bd62811=
DATARMNETb709a938b5(cpu);if(DATARMNET847bd62811>DATARMNET59bd820724)
DATARMNET59bd820724=DATARMNET847bd62811;trace_rmnet_shs_wq_low(
DATARMNET39a68a0eba,DATARMNETc2a28b3abe,cpu,DATARMNET847bd62811,
DATARMNET59bd820724,(0x16e8+787-0xc0c),NULL,NULL);}return DATARMNET59bd820724;}
int DATARMNETdd3b17f0c3(u16 cpu){u32 DATARMNET1802cc4803=(0xd26+209-0xdf6)<<
(0xd11+230-0xdf3);u32 DATARMNETb998398361=(0xd26+209-0xdf6);u16
DATARMNETaff7dd6611=(0xd2d+202-0xdf7);u16 DATARMNET2ab4b15bd2=(0xd11+230-0xdf3);
int DATARMNET59bd820724=-(0xd26+209-0xdf6);int DATARMNET847bd62811;if(cpu>
DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET709b59b0e6]++;return
DATARMNET59bd820724;}DATARMNETb998398361<<=cpu;if(DATARMNETb998398361>=
DATARMNET1802cc4803){DATARMNETaff7dd6611=(0xd11+230-0xdf3);DATARMNET2ab4b15bd2=
DATARMNETc6782fed88;}for(;DATARMNETaff7dd6611<DATARMNET2ab4b15bd2;
DATARMNETaff7dd6611++){DATARMNET847bd62811=DATARMNETb709a938b5(
DATARMNETaff7dd6611);if(DATARMNET847bd62811>DATARMNET59bd820724)
DATARMNET59bd820724=DATARMNET847bd62811;}trace_rmnet_shs_wq_low(
DATARMNET39a68a0eba,DATARMNET23906b61e9,DATARMNETaff7dd6611,DATARMNET2ab4b15bd2,
cpu,DATARMNET59bd820724,NULL,NULL);return DATARMNET59bd820724;}void
DATARMNET0349051465(u16 cpu){if(cpu>=DATARMNETc6782fed88){DATARMNET68d84e7b98[
DATARMNET54b67b8a75]++;return;}DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].
flows++;trace_rmnet_shs_wq_low(DATARMNET39a68a0eba,DATARMNET0832f93bf0,cpu,
DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);}void DATARMNET3669e7b703(u16 cpu){if(cpu>=
DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return;}if(
DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows>(0xd2d+202-0xdf7))
DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows--;trace_rmnet_shs_wq_low(
DATARMNET39a68a0eba,DATARMNETecb00bceb2,cpu,DATARMNET6cdd58e74c.
DATARMNET73464778dc[cpu].flows,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);
}

View File

@@ -0,0 +1,131 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef DATARMNETa58841a91d
#define DATARMNETa58841a91d
#include "rmnet_shs_config.h"
#include "rmnet_shs.h"
#include <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+1158-0x132d)
#define DATARMNET855e9d7062(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)*\
1000000000)
#define DATARMNETe6671dbf38(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)*\
1000000000)
#define DATARMNET36cfa76181(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)/\
1000000000)
#define DATARMNET64577537b7(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)*\
(0xd35+210-0xdff))
#define DATARMNETac617c8dce(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95)*1000000\
)
#define DATARMNET138a989ecb (0xeb7+1158-0x132d)
#define DATARMNETe4c625a3a3 (0xeb7+698-0x110d)
extern struct list_head DATARMNET30a3e83974;struct DATARMNET9b44b71ee9{u64
DATARMNET4eb77c78e6;u64 DATARMNET257fc4b2d4;struct list_head DATARMNET0763436b8d
;struct net_device*ep;int DATARMNET5af04d0405[DATARMNETc6782fed88];int
DATARMNET7167e10d99[DATARMNETc6782fed88];u16 DATARMNET24a91635db;u16
DATARMNET1a1d89d417;u16 DATARMNET9fb369ce5f;u8 DATARMNET4a4e6f66b5;int
DATARMNET6bda8fe27e;int DATARMNET121a654efd;int DATARMNETd7a83774f8;int
DATARMNET847276e5af;};struct DATARMNET0737a3aa12{struct list_head
DATARMNETd0c222566b;struct DATARMNET9b44b71ee9 ep;};enum DATARMNET0780ebfa33{
DATARMNET8866cd9e9a,DATARMNETed5a873a00,DATARMNETd7a3f55a51,DATARMNETefe8657028,
DATARMNET37da25c8e8,DATARMNET5dccc475d4,DATARMNET3563036124,};struct
DATARMNET6c78e47d24{unsigned long int DATARMNET61e1ee0e95[DATARMNET3563036124];
struct list_head DATARMNET742867e97a;struct list_head DATARMNET6de26f0feb;struct
DATARMNET63d7680df2*DATARMNET63b1a086d5;ktime_t DATARMNETadd51beef4;ktime_t
DATARMNET68714ac92c;ktime_t DATARMNET42ceaf5cc2;u64 DATARMNET4b4a76b094;u64
rx_bytes;u64 DATARMNETa7352711af;u64 DATARMNET324c1a8f98;u64 DATARMNETbb80fccd97
;u64 DATARMNET6c2816c16a;u64 DATARMNET253a9fc708;u64 DATARMNET95266642d1;u64
DATARMNET0d682bcb29;u64 DATARMNET20e8fc9db8;u64 DATARMNETd34f4b12cd;u64
DATARMNET96e0dea53e;u64 DATARMNET3ecedac168;u64 DATARMNETce5f56eab9;u64
DATARMNET6edbc8b649;u64 DATARMNET4025a4ec90;u64 DATARMNETde6a309f37;u32
DATARMNET9fb369ce5f;u32 DATARMNET17f2abdf03;u32 DATARMNET399c840115;u32
DATARMNET1a1d89d417;u32 DATARMNETb932033f50;u32 hash;int DATARMNETb5f5519502;u16
DATARMNET6e1a4eaf09;u16 DATARMNET7c894c2f8f;u16 DATARMNET1e9d25d9ff;u8 mux_id;
u8 DATARMNET0dc393a345;u8 DATARMNET0bfc2b2c85;u8 DATARMNET8a4e1d5aaa;u8
DATARMNET87636d0152;};struct DATARMNET228056d4b7{struct list_head
DATARMNETab5c1e9ad5;ktime_t DATARMNET68714ac92c;u64 DATARMNET9853a006ae;u64
DATARMNETde6a309f37;u64 DATARMNETc589c49a2e;u64 DATARMNET7fc41d655d;u64 rx_bytes
;u64 DATARMNET57f040bb2c;u64 DATARMNET324c1a8f98;u64 DATARMNETbb80fccd97;u64
DATARMNET27c3925eff;u64 DATARMNET8233cb4988;u64 DATARMNET253a9fc708;u64
DATARMNETc0b20e240a;u32 DATARMNETae196235f2;u32 DATARMNET8b9956a3f9;u32
DATARMNET69770f8ef7;u32 DATARMNET14b0d18481;u32 DATARMNET17380ba0f8;int flows;
u16 DATARMNET42a992465f;};struct DATARMNETc8fdbf9c85{struct DATARMNET228056d4b7
DATARMNET73464778dc[DATARMNETc6782fed88];ktime_t DATARMNET68714ac92c;u64
DATARMNET601156672d;u64 DATARMNETbfe25a2160;u64 DATARMNET4947607c52;u64
DATARMNET903a2cea81;u64 DATARMNET3067b3dafd;u64 DATARMNET47334112aa;u64
DATARMNET9853a006ae;u64 DATARMNETde6a309f37;u64 DATARMNETc589c49a2e;u64
DATARMNET27c3925eff;u64 DATARMNET8233cb4988;u64 DATARMNET7fc41d655d;u64 rx_bytes
;u64 DATARMNET57f040bb2c;u64 DATARMNET324c1a8f98;u64 DATARMNETbb80fccd97;u64
DATARMNET0d682bcb29;u64 DATARMNET20e8fc9db8;u32 DATARMNET9fb369ce5f;u32
DATARMNET399c840115;u32 DATARMNET1a1d89d417;u32 DATARMNETb932033f50;int
DATARMNET5af04d0405[DATARMNETc6782fed88];int DATARMNET7167e10d99[
DATARMNETc6782fed88];int DATARMNET6bda8fe27e;int DATARMNET121a654efd;int
DATARMNETd7a83774f8;int DATARMNET847276e5af;int flows;u8 cpus;};struct
DATARMNETa144e2bd00{struct delayed_work DATARMNET1150269da2;};struct
DATARMNET47a6995138{struct list_head DATARMNET02523bfb57;u64 DATARMNET18b7a5b761
;u64 DATARMNET4da6031170;u64 DATARMNET4df302dbd6;u16 DATARMNET42a992465f;};
struct DATARMNET09a412b1c6{struct list_head DATARMNETd502c0412a;u64
DATARMNET324c1a8f98;u64 DATARMNET253a9fc708;u32 hash;u16 DATARMNET42a992465f;};
struct DATARMNET13c47d154e{struct list_head DATARMNETec0e3cb8f0;union{struct
iphdr DATARMNETac9bbaad7c;struct ipv6hdr DATARMNET1688a97aa4;}ip_hdr;union{
struct tcphdr tp;struct udphdr up;}DATARMNETe33b41dad9;u64 DATARMNET324c1a8f98;
u64 DATARMNET253a9fc708;u64 DATARMNETbb80fccd97;u64 DATARMNET95266642d1;u64
DATARMNET0d682bcb29;u64 DATARMNET20e8fc9db8;u32 hash;u16 DATARMNET42a992465f;u16
trans_proto;u8 mux_id;};struct DATARMNETa52c09a590{struct list_head
DATARMNET6f898987df;u64 DATARMNET324c1a8f98;u64 DATARMNET253a9fc708;u64
DATARMNETbb80fccd97;u32 hash;u16 DATARMNET42a992465f;};enum DATARMNET8487fb1a16{
DATARMNET9104d544fa,DATARMNET4fe8e8c1a9,DATARMNETc1e19aa345,DATARMNET5e796836fb,
DATARMNET238d08f0df,DATARMNET92b282b12c,DATARMNET394831f22a,DATARMNET39a68a0eba,
DATARMNET0dd7951b5e,DATARMNETa0ecb9daac,};enum DATARMNETb2fa0397cc{
DATARMNET34ace72e7e,DATARMNET7fc202c4c1,DATARMNET7643ab0f49,DATARMNET1ee5d0565d,
DATARMNETfab7330394,DATARMNET72f22d7cf7,DATARMNETf81dcb955d,DATARMNET3f2d29c867,
DATARMNET5a3ea29c57,DATARMNETb43d929c3b,DATARMNET31d8e00b80,DATARMNET8d783e2a07,
DATARMNET4b15fcda7c,DATARMNET08284be63e,DATARMNET8ce5a018df,DATARMNET57cad43bb7,
DATARMNET4b58d51c6a,DATARMNETfd4d416388,DATARMNETdb9197631d,DATARMNET067f70ac85,
DATARMNET91e905574d,DATARMNET35902389b3,DATARMNET29c0bc0151,DATARMNET45edcec1e4,
DATARMNET5b2500c971,DATARMNET08cee5b48c,DATARMNET5e2c5adaae,DATARMNETb0ed796e8c,
DATARMNET6bde6a5171,DATARMNET55cd50e666,DATARMNET0832f93bf0,DATARMNETecb00bceb2,
DATARMNET0e287157de,DATARMNETc2a28b3abe,DATARMNET23906b61e9,DATARMNET95d1ddcb1a,
DATARMNETbdcc04c8d8,DATARMNETcd209744bd,DATARMNETde65aa00a6,DATARMNETf4dabe20e4,
DATARMNETb9205423e5,DATARMNETffec99a10f,DATARMNET5c7c474d94,DATARMNET4af220a9f9,
DATARMNET709474066f,DATARMNET9a286e7654,DATARMNET5a417740cb,DATARMNET848d2ddfa7,
DATARMNET59a1cb0962,DATARMNET1b421b0381,DATARMNETb196f64ee0,DATARMNET7cf840e991,
DATARMNETa5cdfd53b3,DATARMNETd7f7ade458,DATARMNET53e4a6b394,DATARMNETd1d3902361,
DATARMNET1fc50aac59,DATARMNET213a62da0d,DATARMNETf814701a94,DATARMNET166a43f3aa,
};extern struct DATARMNETe600c5b727 DATARMNET0997c5650d[DATARMNETc6782fed88];
extern struct list_head DATARMNET9825511866;extern struct workqueue_struct*
DATARMNETf141197982;void DATARMNET3ae0d614d6(void);void DATARMNETf7dcab9a9e(void
);void DATARMNET7b6c061b06(void);void DATARMNET4063c95208(void);void
DATARMNETe46c480d71(void);void DATARMNET039ac6d55d(void);u64 DATARMNETd406e89a85
(u32 DATARMNETfaedbb66a9);void DATARMNET350f55bfca(struct DATARMNET63d7680df2*
node_p);int DATARMNET362c14e98b(u16 DATARMNETfaedbb66a9);int DATARMNETf181a18009
(struct net_device*dev);int DATARMNET98b2a0ce62(struct net_device*dev);u64
DATARMNETfc888b4d3e(u16 cpu);void DATARMNET0349051465(u16 cpu);void
DATARMNET3669e7b703(u16 cpu);void DATARMNET54ebea1d15(void);void
DATARMNET7492293980(struct net_device*dev);void DATARMNETd6ee05f1b4(struct
net_device*dev);void DATARMNET0a6fb12cb2(void);int DATARMNET5f72606f6f(u16
DATARMNETc790ff30fc,u16 DATARMNET208ea67e1d,u32 DATARMNET4da4612f1e,u32
DATARMNETa3f89581b5);int DATARMNETf85599b9d8(u32 DATARMNET8c11bd9466,u8
DATARMNET87636d0152);void DATARMNET6bf538fa23(void);void DATARMNETaea4c85748(
void);void DATARMNETcd6e26f0ad(void);
#endif

View File

@@ -0,0 +1,261 @@
/* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include "rmnet_shs_modules.h"
#include "rmnet_shs_common.h"
#include "rmnet_shs_wq_genl.h"
#include <net/sock.h>
#include <linux/skbuff.h>
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static struct net*DATARMNETb01cbc5ec9
;static u32 DATARMNET373156e169;static struct net*DATARMNET77097baa98;static u32
DATARMNET990a29d492;uint32_t DATARMNET7c4038843f;uint32_t DATARMNETf1e47cb243;
int DATARMNETc252c204a8;
#define DATARMNETe429c5f3dd (0xbf7+4364-0x1c04)
#define DATARMNET6987463c5e(DATARMNET5f1b691e95) ((DATARMNET5f1b691e95) * \
1000000000)
static struct nla_policy DATARMNET23b45455b1[DATARMNETcecb35ee33+
(0xd26+209-0xdf6)]={[DATARMNET7d289a7bfa]={.type=NLA_S32},[DATARMNET813a742587]=
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNET6c41b886b2)),[DATARMNET50e1cd26c7]=
NLA_POLICY_EXACT_LEN(sizeof(struct DATARMNET837c876a22)),[DATARMNETaa0fe5a855]={
.type=NLA_NUL_STRING,.len=DATARMNETe429c5f3dd},};
#define DATARMNETcfe22ed4d3(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e) \
{ \
.cmd = DATARMNET5aeb0ef9bc, \
.doit = DATARMNETbd9859b58e, \
.dumpit = NULL, \
.flags = (0xd2d+202-0xdf7), \
}
static const struct genl_ops DATARMNETf2d168ff8d[]={DATARMNETcfe22ed4d3(
DATARMNETafd55f4acf,DATARMNET740f3b34b3),DATARMNETcfe22ed4d3(DATARMNET8e3adfc5dd
,DATARMNET29175fb5fc),DATARMNETcfe22ed4d3(DATARMNETffb2945689,
DATARMNETd81d2866ba),DATARMNETcfe22ed4d3(DATARMNET51b1ee5a68,DATARMNETc850634243
),};static struct nla_policy DATARMNETd7cd67c4a9[DATARMNETcecb35ee33+
(0xd26+209-0xdf6)]={[DATARMNETc08daf87d4]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNET25187800fe)),[DATARMNET8070cc0bdc]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNET177911299b)),};static const struct genl_ops DATARMNETffa9bcf3ed[]={
DATARMNETcfe22ed4d3(DATARMNETafee1e9070,DATARMNETd65d1351b9),};struct
genl_family DATARMNETecc643c219={.hdrsize=(0xd2d+202-0xdf7),.name=
DATARMNET0228d9f101,.version=DATARMNET0fa03ac25b,.maxattr=DATARMNETcecb35ee33,.
policy=DATARMNET23b45455b1,.ops=DATARMNETf2d168ff8d,.n_ops=ARRAY_SIZE(
DATARMNETf2d168ff8d),};struct genl_family rmnet_shs_genl_msg_family={.hdrsize=
(0xd2d+202-0xdf7),.name=DATARMNETa35687f809,.version=DATARMNET0fa03ac25b,.
maxattr=DATARMNETcecb35ee33,.policy=DATARMNETd7cd67c4a9,.ops=DATARMNETffa9bcf3ed
,.n_ops=ARRAY_SIZE(DATARMNETffa9bcf3ed),};int DATARMNET5d4ca1da1c(struct
genl_info*DATARMNET54338da2ff,int val){struct sk_buff*skb;void*msg_head;int rc;
skb=genlmsg_new(NLMSG_GOODSIZE,GFP_ATOMIC);if(skb==NULL)goto DATARMNETbf4095f79e
;msg_head=genlmsg_put(skb,(0xd2d+202-0xdf7),DATARMNET54338da2ff->snd_seq+
(0xd26+209-0xdf6),&DATARMNETecc643c219,(0xd2d+202-0xdf7),DATARMNETafd55f4acf);if
(msg_head==NULL){rc=-ENOMEM;rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x6d\x73\x67\x5f\x68\x65\x61\x64\x20\x25\x64" "\n"
,rc);kfree(skb);goto DATARMNETbf4095f79e;}rc=nla_put_u32(skb,DATARMNET7d289a7bfa
,val);if(rc!=(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x6e\x6c\x61\x5f\x70\x75\x74\x20\x25\x64" "\n"
,rc);kfree(skb);goto DATARMNETbf4095f79e;}genlmsg_end(skb,msg_head);rc=
genlmsg_unicast(genl_info_net(DATARMNET54338da2ff),skb,DATARMNET54338da2ff->
snd_portid);if(rc!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x73\x65\x6e\x74\x20\x69\x6e\x74\x20\x25\x64" "\n"
,val);return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x69\x6e\x74\x20\x25\x64" "\n"
,val);return-(0xd26+209-0xdf6);}int DATARMNET5945236cd3(int val){struct sk_buff*
skb;void*msg_head;int rc;if(DATARMNETb01cbc5ec9==NULL){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x69\x6e\x74\x20\x25\x64\x20\x2d\x20\x6c\x61\x73\x74\x5f\x6e\x65\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c" "\n"
,val);return-(0xd26+209-0xdf6);}skb=genlmsg_new(NLMSG_GOODSIZE,GFP_ATOMIC);if(
skb==NULL)goto DATARMNETbf4095f79e;msg_head=genlmsg_put(skb,(0xd2d+202-0xdf7),
DATARMNET7c4038843f++,&DATARMNETecc643c219,(0xd2d+202-0xdf7),DATARMNETafd55f4acf
);if(msg_head==NULL){rc=-ENOMEM;rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x6d\x73\x67\x5f\x68\x65\x61\x64\x20\x25\x64" "\n"
,rc);kfree(skb);goto DATARMNETbf4095f79e;}rc=nla_put_u32(skb,DATARMNET7d289a7bfa
,val);if(rc!=(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x6e\x6c\x61\x5f\x70\x75\x74\x20\x25\x64" "\n"
,rc);kfree(skb);goto DATARMNETbf4095f79e;}genlmsg_end(skb,msg_head);rc=
genlmsg_unicast(DATARMNETb01cbc5ec9,skb,DATARMNET373156e169);if(rc!=
(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x73\x65\x6e\x74\x20\x69\x6e\x74\x20\x25\x64" "\n"
,val);return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x69\x6e\x74\x20\x25\x64" "\n"
,val);DATARMNETc252c204a8=(0xd2d+202-0xdf7);return-(0xd26+209-0xdf6);}int
DATARMNETa9a7fa898c(void){struct sk_buff*skb;void*msg_head;int rc;int val=
DATARMNET7c4038843f++;rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x54\x72\x79\x69\x6e\x67\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x6d\x73\x67\x20\x25\x64" "\n"
,val);skb=genlmsg_new(NLMSG_GOODSIZE,GFP_ATOMIC);if(skb==NULL)goto
DATARMNETbf4095f79e;msg_head=genlmsg_put(skb,(0xd2d+202-0xdf7),
DATARMNET7c4038843f++,&DATARMNETecc643c219,(0xd2d+202-0xdf7),DATARMNETafd55f4acf
);if(msg_head==NULL){rc=-ENOMEM;rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x6d\x73\x67\x5f\x68\x65\x61\x64\x20\x25\x64" "\n"
,rc);kfree(skb);goto DATARMNETbf4095f79e;}rc=nla_put_u32(skb,DATARMNET7d289a7bfa
,val);if(rc!=(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x6e\x6c\x61\x5f\x70\x75\x74\x20\x25\x64" "\n"
,rc);kfree(skb);goto DATARMNETbf4095f79e;}genlmsg_end(skb,msg_head);
genlmsg_multicast(&DATARMNETecc643c219,skb,(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),
GFP_ATOMIC);rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x73\x65\x6e\x74\x20\x69\x6e\x74\x20\x25\x64" "\n"
,val);return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x69\x6e\x74\x20\x25\x64" "\n"
,val);DATARMNETc252c204a8=(0xd2d+202-0xdf7);return-(0xd26+209-0xdf6);}int
DATARMNET740f3b34b3(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
DATARMNET54338da2ff){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x67\x65\x6e\x6c\x5f\x64\x6d\x61\x5f\x69\x6e\x69\x74"
);if(DATARMNET54338da2ff==NULL){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x61\x6e\x20\x65\x72\x72\x6f\x72\x20\x6f\x63\x63\x75\x72\x65\x64\x20\x2d\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c"
);return-(0xd26+209-0xdf6);}return(0xd2d+202-0xdf7);}int DATARMNETd81d2866ba(
struct sk_buff*DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff){struct
nlattr*na;struct DATARMNET837c876a22 DATARMNET1317c6a4a2;int rc=
(0xd2d+202-0xdf7);rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x67\x65\x6e\x6c\x5f\x73\x65\x74\x5f\x66\x6c\x6f\x77\x5f\x73\x65\x67\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e"
);if(DATARMNET54338da2ff==NULL){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x61\x6e\x20\x65\x72\x72\x6f\x72\x20\x6f\x63\x63\x75\x72\x65\x64\x20\x2d\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c"
);return-(0xd26+209-0xdf6);}na=DATARMNET54338da2ff->attrs[DATARMNET50e1cd26c7];
if(na){if(nla_memcpy(&DATARMNET1317c6a4a2,na,sizeof(DATARMNET1317c6a4a2))>
(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x65\x63\x76\x20\x73\x65\x67\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x72\x65\x71\x20"
"\x68\x61\x73\x68\x5f\x74\x6f\x5f\x73\x65\x74\x20\x3d\x20\x30\x78\x25\x78\x20\x73\x65\x67\x73\x5f\x70\x65\x72\x5f\x73\x6b\x62\x20\x3d\x20\x25\x75"
,DATARMNET1317c6a4a2.DATARMNET8c11bd9466,DATARMNET1317c6a4a2.DATARMNET87636d0152
);rc=DATARMNETf85599b9d8(DATARMNET1317c6a4a2.DATARMNET8c11bd9466,
DATARMNET1317c6a4a2.DATARMNET87636d0152);if(rc==(0xd26+209-0xdf6)){
DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET0cb8735618);
trace_rmnet_shs_wq_high(DATARMNETa0ecb9daac,DATARMNETf814701a94,
DATARMNET1317c6a4a2.DATARMNET8c11bd9466,DATARMNET1317c6a4a2.DATARMNET87636d0152,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}else{DATARMNET5d4ca1da1c(
DATARMNET54338da2ff,DATARMNET00895c1601);trace_rmnet_shs_wq_high(
DATARMNETa0ecb9daac,DATARMNET166a43f3aa,DATARMNET1317c6a4a2.DATARMNET8c11bd9466,
DATARMNET1317c6a4a2.DATARMNET87636d0152,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
NULL,NULL);return(0xd2d+202-0xdf7);}}else{rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6c\x61\x5f\x6d\x65\x6d\x63\x70\x79\x20\x66\x61\x69\x6c\x65\x64\x20\x25\x64" "\n"
,DATARMNET50e1cd26c7);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET00895c1601);return(0xd2d+202-0xdf7);}}else{rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6f\x20\x69\x6e\x66\x6f\x2d\x3e\x61\x74\x74\x72\x73\x20\x25\x64" "\n"
,DATARMNET50e1cd26c7);DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET00895c1601);return(0xd2d+202-0xdf7);}return(0xd2d+202-0xdf7);}int
DATARMNET29175fb5fc(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
DATARMNET54338da2ff){struct nlattr*na;struct DATARMNET6c41b886b2
DATARMNET7f0ce2d6ad;int rc=(0xd2d+202-0xdf7);rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x67\x65\x6e\x6c\x5f\x74\x72\x79\x5f\x74\x6f\x5f\x6d\x6f\x76\x65\x5f\x66\x6c\x6f\x77"
);if(DATARMNET54338da2ff==NULL){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x61\x6e\x20\x65\x72\x72\x6f\x72\x20\x6f\x63\x63\x75\x72\x65\x64\x20\x2d\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c"
);return-(0xd26+209-0xdf6);}na=DATARMNET54338da2ff->attrs[DATARMNET813a742587];
if(na){if(nla_memcpy(&DATARMNET7f0ce2d6ad,na,sizeof(DATARMNET7f0ce2d6ad))>
(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x63\x75\x72\x5f\x63\x70\x75\x20\x3d\x25\x75\x20\x64\x65\x73\x74\x5f\x63\x70\x75\x20\x3d\x20\x25\x75\x20"
"\x68\x61\x73\x68\x5f\x74\x6f\x5f\x6d\x6f\x76\x65\x20\x3d\x20\x30\x78\x25\x78\x20\x73\x75\x67\x67\x5f\x74\x79\x70\x65\x20\x3d\x20\x25\x75"
,DATARMNET7f0ce2d6ad.DATARMNETc790ff30fc,DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d
,DATARMNET7f0ce2d6ad.DATARMNET4da4612f1e,DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5
);if(DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5==DATARMNET5dccc475d4){
DATARMNETb7ddf3c5dd[DATARMNETf13db5ace8]++;if(!(((0xd26+209-0xdf6)<<
DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d)&DATARMNET9273f84bf1)||((
(0xd26+209-0xdf6)<<DATARMNETecc0627c70.DATARMNET5c24e1df05)&DATARMNET9273f84bf1)
){DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET2d19c9b1ef);return-
(0xd26+209-0xdf6);}DATARMNETecc0627c70.DATARMNET5c24e1df05=DATARMNET7f0ce2d6ad.
DATARMNET208ea67e1d;rcu_read_lock();RCU_INIT_POINTER(rmnet_shs_switch,
DATARMNET756778f14f);rcu_read_unlock();DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET2d19c9b1ef);return(0xd2d+202-0xdf7);}if(DATARMNET7f0ce2d6ad.
DATARMNETa3f89581b5==DATARMNET37da25c8e8){DATARMNETb7ddf3c5dd[
DATARMNETb6eae1e097]++;if(!(((0xd26+209-0xdf6)<<DATARMNET7f0ce2d6ad.
DATARMNET208ea67e1d)&DATARMNETbc3c416b77)||(((0xd26+209-0xdf6)<<
DATARMNETecc0627c70.DATARMNET5c24e1df05)&DATARMNETbc3c416b77)){
DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET2d19c9b1ef);return-
(0xd26+209-0xdf6);}DATARMNETecc0627c70.DATARMNET5c24e1df05=DATARMNET7f0ce2d6ad.
DATARMNET208ea67e1d;rcu_read_lock();RCU_INIT_POINTER(rmnet_shs_switch,
DATARMNET756778f14f);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);}int DATARMNETb5d58adbe7(struct DATARMNET177911299b*msg_ptr){
struct sk_buff*skb;void*msg_head;int rc;if(DATARMNET77097baa98==NULL){rm_err(
"\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x6d\x73\x67\x5f\x6c\x61\x73\x74\x5f\x6e\x65\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c" "\n"
);return-(0xd26+209-0xdf6);}skb=genlmsg_new(NLMSG_GOODSIZE,GFP_ATOMIC);if(skb==
NULL)goto DATARMNETbf4095f79e;msg_head=genlmsg_put(skb,(0xd2d+202-0xdf7),
DATARMNETf1e47cb243++,&rmnet_shs_genl_msg_family,(0xd2d+202-0xdf7),
DATARMNETafee1e9070);if(msg_head==NULL){rc=-ENOMEM;rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x6d\x73\x67\x5f\x68\x65\x61\x64\x20\x25\x64" "\n"
,rc);kfree(skb);goto DATARMNETbf4095f79e;}rc=nla_put(skb,DATARMNET8070cc0bdc,
sizeof(struct DATARMNET177911299b),msg_ptr);if(rc!=(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x6e\x6c\x61\x5f\x70\x75\x74\x20\x25\x64" "\n"
,rc);kfree(skb);goto DATARMNETbf4095f79e;}genlmsg_end(skb,msg_head);rc=
genlmsg_unicast(DATARMNET77097baa98,skb,DATARMNET990a29d492);if(rc!=
(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;rm_err(
"\x53\x48\x53\x5f\x4d\x53\x47\x5f\x47\x4e\x4c\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x73\x65\x6e\x74\x20\x6d\x73\x67\x20\x25\x64" "\n"
,DATARMNETf1e47cb243);return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:rm_err(
"\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x74\x6f\x20\x6d\x73\x67\x20\x63\x68\x61\x6e\x6e\x65\x6c" "\n"
);return-(0xd26+209-0xdf6);}int DATARMNETd65d1351b9(struct sk_buff*
DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x5f\x4d\x53\x47\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x67\x65\x6e\x6c\x5f\x6d\x73\x67\x5f\x72\x65\x71"
);if(!DATARMNETc252c204a8){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x5f\x4d\x53\x47\x3a\x20\x65\x72\x72\x6f\x72\x3a\x20\x75\x73\x65\x72\x73\x70\x61\x63\x65\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64"
);return-(0xd26+209-0xdf6);}if(DATARMNET54338da2ff==NULL){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x47\x4e\x4c\x5f\x4d\x53\x47\x3a\x20\x65\x72\x72\x6f\x72\x3a\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c"
);return-(0xd26+209-0xdf6);}DATARMNET77097baa98=genl_info_net(
DATARMNET54338da2ff);DATARMNET990a29d492=DATARMNET54338da2ff->snd_portid;rm_err(
"\x6d\x73\x67\x5f\x70\x6f\x72\x74\x5f\x69\x64\x20\x3d\x20\x25\x75",
DATARMNET990a29d492);return(0xd2d+202-0xdf7);}int DATARMNET0dbc627e8f(void){int
ret;DATARMNETc252c204a8=(0xd2d+202-0xdf7);ret=genl_register_family(&
DATARMNETecc643c219);if(ret!=(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69"
,ret);genl_unregister_family(&DATARMNETecc643c219);return-(0xd26+209-0xdf6);}
rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x72\x65\x67\x69\x73\x74\x65\x72\x65\x64\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x6e\x65\x74\x6c\x69\x6e\x6b\x20\x66\x61\x6d\x69\x6c\x79\x3a\x20\x25\x73"
,DATARMNET0228d9f101);ret=genl_register_family(&rmnet_shs_genl_msg_family);if(
ret!=(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x4d\x53\x47\x5f\x47\x4e\x4c\x3a\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69"
,ret);genl_unregister_family(&rmnet_shs_genl_msg_family);}else{rm_err(
"\x53\x48\x53\x5f\x4d\x53\x47\x5f\x47\x4e\x4c\x3a\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x72\x65\x67\x69\x73\x74\x65\x72\x65\x64\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x6e\x65\x74\x6c\x69\x6e\x6b\x20\x66\x61\x6d\x69\x6c\x79\x3a\x20\x25\x73"
,DATARMNETa35687f809);}return(0xd2d+202-0xdf7);}int DATARMNETeabd69d1ab(void){
int ret;DATARMNET5945236cd3(DATARMNET19092afcc2);ret=genl_unregister_family(&
DATARMNETecc643c219);if(ret!=(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
,ret);}DATARMNETc252c204a8=(0xd2d+202-0xdf7);ret=genl_unregister_family(&
rmnet_shs_genl_msg_family);if(ret!=(0xd2d+202-0xdf7)){rm_err(
"\x53\x48\x53\x5f\x47\x4e\x4c\x3a\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
,ret);}return(0xd2d+202-0xdf7);}

View File

@@ -0,0 +1,65 @@
/* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef DATARMNETf34a2d1928
#define DATARMNETf34a2d1928
#include "rmnet_shs.h"
#include <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 DATARMNET00895c1601 (0xdc7+3085-0x163c)
#define DATARMNET0cb8735618 (0xdb7+3102-0x1634)
#define DATARMNET19092afcc2 (0xec7+1152-0x131d)
extern int DATARMNETc252c204a8;enum{DATARMNET9491b185b7,DATARMNETafd55f4acf,
DATARMNET8e3adfc5dd,DATARMNETffb2945689,DATARMNET51b1ee5a68,DATARMNET5b3796e25a,
};enum{DATARMNET603b776397,DATARMNETaa0fe5a855,DATARMNET7d289a7bfa,
DATARMNET813a742587,DATARMNET50e1cd26c7,DATARMNET0158bf4d2b,};
#define DATARMNETcecb35ee33 (DATARMNET0158bf4d2b - (0xd26+209-0xdf6))
struct DATARMNET6c41b886b2{uint32_t DATARMNET4da4612f1e;uint32_t
DATARMNETa3f89581b5;uint16_t DATARMNETc790ff30fc;uint16_t DATARMNET208ea67e1d;};
struct DATARMNET837c876a22{uint32_t DATARMNET8c11bd9466;uint32_t
DATARMNET87636d0152;};
#define DATARMNETa35687f809 "RMNET_SHS_MSG"
enum{DATARMNETeaa13301a0,DATARMNETafee1e9070,DATARMNET943966c53e,};enum{
DATARMNET5f0371060e,DATARMNETc08daf87d4,DATARMNET8070cc0bdc,DATARMNETc2be398ed4,
};
#define DATARMNET3b631aeccb ((0xeb7+712-0x111d))
#define DATARMNET8a917ef593 ((0xd26+209-0xdf6))
struct DATARMNETe5f1cf1a69{uint32_t DATARMNETaf3d356342;uint8_t
DATARMNET43a8300dfd;};enum{DATARMNET68b3f1699c=(0xd2d+202-0xdf7),
DATARMNETfce267cbe9=(0xd26+209-0xdf6),};struct DATARMNET4a3b3209dd{char
DATARMNETdf2dbc641f[DATARMNET3b631aeccb];uint16_t msg_type;};struct
DATARMNET25187800fe{int valid;};struct DATARMNET177911299b{struct
DATARMNET4a3b3209dd list[DATARMNET8a917ef593];uint64_t timestamp;uint16_t
list_len;uint8_t valid;};int DATARMNET740f3b34b3(struct sk_buff*
DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff);int
DATARMNET29175fb5fc(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
DATARMNET54338da2ff);int DATARMNETd81d2866ba(struct sk_buff*DATARMNETaafc1d9519,
struct genl_info*DATARMNET54338da2ff);int DATARMNETc850634243(struct sk_buff*
DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff);int
DATARMNET5d4ca1da1c(struct genl_info*DATARMNET54338da2ff,int val);int
DATARMNET5945236cd3(int val);int DATARMNETa9a7fa898c(void);void
DATARMNET8d0d510d45(uint32_t DATARMNETaf3d356342,struct DATARMNET177911299b*
DATARMNET60b6e12cfd);int DATARMNETb5d58adbe7(struct DATARMNET177911299b*msg_ptr)
;int DATARMNETd65d1351b9(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
DATARMNET54338da2ff);int DATARMNET0dbc627e8f(void);int DATARMNETeabd69d1ab(void)
;
#endif

View File

@@ -0,0 +1,530 @@
/* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include "rmnet_shs_modules.h"
#include "rmnet_shs_common.h"
#include "rmnet_shs_wq_mem.h"
#include <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 DATARMNET57ccbe14f3 DATARMNETf46265286b[
DATARMNETe4d15b9332];struct list_head DATARMNET6c23f11e81=LIST_HEAD_INIT(
DATARMNET6c23f11e81);struct list_head DATARMNETf91b305f4e=LIST_HEAD_INIT(
DATARMNETf91b305f4e);struct list_head DATARMNETe46ae760db=LIST_HEAD_INIT(
DATARMNETe46ae760db);struct list_head DATARMNET3208cd0982=LIST_HEAD_INIT(
DATARMNET3208cd0982);struct DATARMNETa41d4c4a12*DATARMNET410036d5ac;struct
DATARMNETa41d4c4a12*DATARMNET19c47a9f3a;struct DATARMNETa41d4c4a12*
DATARMNET22e796eff3;struct DATARMNETa41d4c4a12*DATARMNET9b8000d2a7;struct
DATARMNETa41d4c4a12*DATARMNET67d31dc40a;static void DATARMNET6069bf201a(struct
vm_area_struct*vma){return;}static void DATARMNET0f6b7f3f93(struct
vm_area_struct*vma){return;}static vm_fault_t DATARMNET9efe8a3d18(struct
vm_fault*DATARMNETca901b4e1f){struct page*page=NULL;struct DATARMNETa41d4c4a12*
DATARMNET54338da2ff;DATARMNET6bf538fa23();if(DATARMNET410036d5ac){
DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*)DATARMNETca901b4e1f->vma->
vm_private_data;if(DATARMNET54338da2ff->data){page=virt_to_page(
DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page=page;}else{
DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{DATARMNETaea4c85748();
return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return(0xd2d+202-0xdf7);}static
vm_fault_t DATARMNETd005aa7157(struct vm_fault*DATARMNETca901b4e1f){struct page*
page=NULL;struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;DATARMNET6bf538fa23();
if(DATARMNET19c47a9f3a){DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*)
DATARMNETca901b4e1f->vma->vm_private_data;if(DATARMNET54338da2ff->data){page=
virt_to_page(DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page
=page;}else{DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{
DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return
(0xd2d+202-0xdf7);}static vm_fault_t DATARMNETb3a7180954(struct vm_fault*
DATARMNETca901b4e1f){struct page*page=NULL;struct DATARMNETa41d4c4a12*
DATARMNET54338da2ff;DATARMNET6bf538fa23();if(DATARMNET22e796eff3){
DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*)DATARMNETca901b4e1f->vma->
vm_private_data;if(DATARMNET54338da2ff->data){page=virt_to_page(
DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page=page;}else{
DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{DATARMNETaea4c85748();
return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return(0xd2d+202-0xdf7);}static
vm_fault_t DATARMNETe35719979c(struct vm_fault*DATARMNETca901b4e1f){struct page*
page=NULL;struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;DATARMNET6bf538fa23();
if(DATARMNET9b8000d2a7){DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*)
DATARMNETca901b4e1f->vma->vm_private_data;if(DATARMNET54338da2ff->data){page=
virt_to_page(DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page
=page;}else{DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{
DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return
(0xd2d+202-0xdf7);}static vm_fault_t DATARMNETe421c4e1db(struct vm_fault*
DATARMNETca901b4e1f){struct page*page=NULL;struct DATARMNETa41d4c4a12*
DATARMNET54338da2ff;DATARMNET6bf538fa23();if(DATARMNET67d31dc40a){
DATARMNET54338da2ff=(struct DATARMNETa41d4c4a12*)DATARMNETca901b4e1f->vma->
vm_private_data;if(DATARMNET54338da2ff->data){page=virt_to_page(
DATARMNET54338da2ff->data);get_page(page);DATARMNETca901b4e1f->page=page;}else{
DATARMNETaea4c85748();return VM_FAULT_SIGSEGV;}}else{DATARMNETaea4c85748();
return VM_FAULT_SIGSEGV;}DATARMNETaea4c85748();return(0xd2d+202-0xdf7);}static
const struct vm_operations_struct DATARMNETfa4e968e7d={.close=
DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNET9efe8a3d18,};
static const struct vm_operations_struct DATARMNETe9c0626068={.close=
DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNETd005aa7157,};
static const struct vm_operations_struct DATARMNET9a89317a86={.close=
DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNETb3a7180954,};
static const struct vm_operations_struct DATARMNET5462c2ce60={.close=
DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNETe35719979c,};
static const struct vm_operations_struct DATARMNET41944cc550={.close=
DATARMNET0f6b7f3f93,.open=DATARMNET6069bf201a,.fault=DATARMNETe421c4e1db,};
static int DATARMNET54418f934d(struct file*DATARMNET3cc114dce0,struct
vm_area_struct*vma){vma->vm_ops=&DATARMNETfa4e968e7d;vma->vm_flags|=
VM_DONTEXPAND|VM_DONTDUMP;vma->vm_private_data=DATARMNET3cc114dce0->private_data
;return(0xd2d+202-0xdf7);}static int DATARMNETc55748448d(struct file*
DATARMNET3cc114dce0,struct vm_area_struct*vma){vma->vm_ops=&DATARMNETe9c0626068;
vma->vm_flags|=VM_DONTEXPAND|VM_DONTDUMP;vma->vm_private_data=
DATARMNET3cc114dce0->private_data;return(0xd2d+202-0xdf7);}static int
DATARMNET43c6d751a2(struct file*DATARMNET3cc114dce0,struct vm_area_struct*vma){
vma->vm_ops=&DATARMNET9a89317a86;vma->vm_flags|=VM_DONTEXPAND|VM_DONTDUMP;vma->
vm_private_data=DATARMNET3cc114dce0->private_data;return(0xd2d+202-0xdf7);}
static int DATARMNET7cc042bdf3(struct file*DATARMNET3cc114dce0,struct
vm_area_struct*vma){vma->vm_ops=&DATARMNET5462c2ce60;vma->vm_flags|=
VM_DONTEXPAND|VM_DONTDUMP;vma->vm_private_data=DATARMNET3cc114dce0->private_data
;return(0xd2d+202-0xdf7);}static int DATARMNET444e2eb654(struct file*
DATARMNET3cc114dce0,struct vm_area_struct*vma){vma->vm_ops=&DATARMNET41944cc550;
vma->vm_flags|=VM_DONTEXPAND|VM_DONTDUMP;vma->vm_private_data=
DATARMNET3cc114dce0->private_data;return(0xd2d+202-0xdf7);}static int
DATARMNET33a80d3bf7(struct inode*inode,struct file*DATARMNET3cc114dce0){struct
DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(!DATARMNET410036d5ac){DATARMNET54338da2ff=kzalloc(
sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto
DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC)
;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto
DATARMNET1d7e728ddf;}DATARMNET410036d5ac=DATARMNET54338da2ff;refcount_set(&
DATARMNET410036d5ac->refcnt,(0xd26+209-0xdf6));rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x63\x61\x70\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long
long)virt_to_phys((void*)DATARMNET410036d5ac));}else{refcount_inc(&
DATARMNET410036d5ac->refcnt);}DATARMNET3cc114dce0->private_data=
DATARMNET410036d5ac;DATARMNETaea4c85748();rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x4f\x4b" "\n"
);return(0xd2d+202-0xdf7);DATARMNET1d7e728ddf:DATARMNETaea4c85748();rm_err(
"\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x46\x41\x49\x4c\x45\x44" "\n"
);return-ENOMEM;}static int DATARMNET0935e3beb9(struct inode*inode,struct file*
DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err(
"\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x67\x5f\x66\x6c\x6f\x77\x73\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(!DATARMNET19c47a9f3a){DATARMNET54338da2ff=kzalloc(
sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto
DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC)
;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto
DATARMNET1d7e728ddf;}DATARMNET19c47a9f3a=DATARMNET54338da2ff;refcount_set(&
DATARMNET19c47a9f3a->refcnt,(0xd26+209-0xdf6));rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x67\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long
long)virt_to_phys((void*)DATARMNET19c47a9f3a));}else{refcount_inc(&
DATARMNET19c47a9f3a->refcnt);}DATARMNET3cc114dce0->private_data=
DATARMNET19c47a9f3a;DATARMNETaea4c85748();return(0xd2d+202-0xdf7);
DATARMNET1d7e728ddf:DATARMNETaea4c85748();rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x46\x41\x49\x4c\x45\x44" "\n"
);return-ENOMEM;}static int DATARMNETfbd34e70a2(struct inode*inode,struct file*
DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err(
"\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x73\x73\x5f\x66\x6c\x6f\x77\x73\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(!DATARMNET22e796eff3){DATARMNET54338da2ff=kzalloc(
sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto
DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC)
;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto
DATARMNET1d7e728ddf;}DATARMNET22e796eff3=DATARMNET54338da2ff;refcount_set(&
DATARMNET22e796eff3->refcnt,(0xd26+209-0xdf6));rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x73\x73\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long
long)virt_to_phys((void*)DATARMNET22e796eff3));}else{refcount_inc(&
DATARMNET22e796eff3->refcnt);}DATARMNET3cc114dce0->private_data=
DATARMNET22e796eff3;DATARMNETaea4c85748();return(0xd2d+202-0xdf7);
DATARMNET1d7e728ddf:DATARMNETaea4c85748();rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x46\x41\x49\x4c\x45\x44" "\n"
);return-ENOMEM;}static int DATARMNET57bcb932f3(struct inode*inode,struct file*
DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err(
"\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x66\x66\x6c\x6f\x77\x73\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(!DATARMNET9b8000d2a7){DATARMNET54338da2ff=kzalloc(
sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto
DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC)
;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto
DATARMNET1d7e728ddf;}DATARMNET9b8000d2a7=DATARMNET54338da2ff;refcount_set(&
DATARMNET9b8000d2a7->refcnt,(0xd26+209-0xdf6));rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x66\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long
long)virt_to_phys((void*)DATARMNET9b8000d2a7));}else{refcount_inc(&
DATARMNET9b8000d2a7->refcnt);}DATARMNET3cc114dce0->private_data=
DATARMNET9b8000d2a7;DATARMNETaea4c85748();return(0xd2d+202-0xdf7);
DATARMNET1d7e728ddf:DATARMNETaea4c85748();rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x2d\x20\x46\x41\x49\x4c\x45\x44" "\n"
);return-ENOMEM;}static int DATARMNETb9d10d8cc0(struct inode*inode,struct file*
DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;rm_err(
"\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6f\x70\x65\x6e\x20\x6e\x65\x74\x64\x65\x76\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(!DATARMNET67d31dc40a){DATARMNET54338da2ff=kzalloc(
sizeof(struct DATARMNETa41d4c4a12),GFP_ATOMIC);if(!DATARMNET54338da2ff)goto
DATARMNET1d7e728ddf;DATARMNET54338da2ff->data=(char*)get_zeroed_page(GFP_ATOMIC)
;if(!DATARMNET54338da2ff->data){kfree(DATARMNET54338da2ff);goto
DATARMNET1d7e728ddf;}DATARMNET67d31dc40a=DATARMNET54338da2ff;refcount_set(&
DATARMNET67d31dc40a->refcnt,(0xd26+209-0xdf6));rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x76\x69\x72\x74\x5f\x74\x6f\x5f\x70\x68\x79\x73\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x6e\x65\x74\x64\x65\x76\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET54338da2ff),(unsigned long
long)virt_to_phys((void*)DATARMNET67d31dc40a));}else{refcount_inc(&
DATARMNET67d31dc40a->refcnt);}DATARMNET3cc114dce0->private_data=
DATARMNET67d31dc40a;DATARMNETaea4c85748();return(0xd2d+202-0xdf7);
DATARMNET1d7e728ddf:DATARMNETaea4c85748();return-ENOMEM;}static ssize_t
DATARMNETaf2aa1d70f(struct file*DATARMNET3cc114dce0,char __user*buf,size_t len,
loff_t*DATARMNET6396f657b3){return DATARMNET29d29f44cf;}static ssize_t
DATARMNET4761dcd3fd(struct file*DATARMNET3cc114dce0,const char __user*buf,size_t
len,loff_t*DATARMNET6396f657b3){return len;}static int DATARMNETcfbc4f0c39(
struct inode*inode,struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*
DATARMNET54338da2ff;rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(DATARMNET410036d5ac){DATARMNET54338da2ff=
DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt)
<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree(
DATARMNET54338da2ff);DATARMNET410036d5ac=NULL;DATARMNET3cc114dce0->private_data=
NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748();
return(0xd2d+202-0xdf7);}static int DATARMNET2a9f67714f(struct inode*inode,
struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;
rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(DATARMNET19c47a9f3a){DATARMNET54338da2ff=
DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt)
<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree(
DATARMNET54338da2ff);DATARMNET19c47a9f3a=NULL;DATARMNET3cc114dce0->private_data=
NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748();
return(0xd2d+202-0xdf7);}static int DATARMNET968bc5b80d(struct inode*inode,
struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;
rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(DATARMNET22e796eff3){DATARMNET54338da2ff=
DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt)
<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree(
DATARMNET54338da2ff);DATARMNET22e796eff3=NULL;DATARMNET3cc114dce0->private_data=
NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748();
return(0xd2d+202-0xdf7);}static int DATARMNET59b415aded(struct inode*inode,
struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;
rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(DATARMNET9b8000d2a7){DATARMNET54338da2ff=
DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt)
<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree(
DATARMNET54338da2ff);DATARMNET9b8000d2a7=NULL;DATARMNET3cc114dce0->private_data=
NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748();
return(0xd2d+202-0xdf7);}static int DATARMNET18464ea5e3(struct inode*inode,
struct file*DATARMNET3cc114dce0){struct DATARMNETa41d4c4a12*DATARMNET54338da2ff;
rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x6e\x65\x74\x64\x65\x76\x20\x2d\x20\x65\x6e\x74\x72\x79" "\n"
);DATARMNET6bf538fa23();if(DATARMNET67d31dc40a){DATARMNET54338da2ff=
DATARMNET3cc114dce0->private_data;if(refcount_read(&DATARMNET54338da2ff->refcnt)
<=(0xd26+209-0xdf6)){free_page((unsigned long)DATARMNET54338da2ff->data);kfree(
DATARMNET54338da2ff);DATARMNET67d31dc40a=NULL;DATARMNET3cc114dce0->private_data=
NULL;}else{refcount_dec(&DATARMNET54338da2ff->refcnt);}}DATARMNETaea4c85748();
return(0xd2d+202-0xdf7);}static const struct proc_ops DATARMNET668485bd14={.
proc_mmap=DATARMNET54418f934d,.proc_open=DATARMNET33a80d3bf7,.proc_release=
DATARMNETcfbc4f0c39,.proc_read=DATARMNETaf2aa1d70f,.proc_write=
DATARMNET4761dcd3fd,};static const struct proc_ops DATARMNETe84fbaa6af={.
proc_mmap=DATARMNETc55748448d,.proc_open=DATARMNET0935e3beb9,.proc_release=
DATARMNET2a9f67714f,.proc_read=DATARMNETaf2aa1d70f,.proc_write=
DATARMNET4761dcd3fd,};static const struct proc_ops DATARMNET8fe5f892a8={.
proc_mmap=DATARMNET43c6d751a2,.proc_open=DATARMNETfbd34e70a2,.proc_release=
DATARMNET968bc5b80d,.proc_read=DATARMNETaf2aa1d70f,.proc_write=
DATARMNET4761dcd3fd,};static const struct proc_ops DATARMNET0104d40d4b={.
proc_mmap=DATARMNET7cc042bdf3,.proc_open=DATARMNET57bcb932f3,.proc_release=
DATARMNET59b415aded,.proc_read=DATARMNETaf2aa1d70f,.proc_write=
DATARMNET4761dcd3fd,};static const struct proc_ops DATARMNET6eb63d9ad0={.
proc_mmap=DATARMNET444e2eb654,.proc_open=DATARMNETb9d10d8cc0,.proc_release=
DATARMNET18464ea5e3,.proc_read=DATARMNETaf2aa1d70f,.proc_write=
DATARMNET4761dcd3fd,};void DATARMNET28a80d526e(struct DATARMNET6c78e47d24*
DATARMNETd2a694d52a,struct list_head*DATARMNETf0fb155a9c){struct
DATARMNETa52c09a590*DATARMNET0f551e8a47;if(!DATARMNETd2a694d52a||!
DATARMNETf0fb155a9c){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}
DATARMNET0f551e8a47=kzalloc(sizeof(*DATARMNET0f551e8a47),GFP_ATOMIC);if(
DATARMNET0f551e8a47!=NULL){DATARMNET0f551e8a47->DATARMNET253a9fc708=
DATARMNETd2a694d52a->DATARMNET253a9fc708;DATARMNET0f551e8a47->
DATARMNET42a992465f=DATARMNETd2a694d52a->DATARMNET7c894c2f8f;DATARMNET0f551e8a47
->hash=DATARMNETd2a694d52a->hash;DATARMNET0f551e8a47->DATARMNET324c1a8f98=
DATARMNETd2a694d52a->DATARMNET324c1a8f98;DATARMNET0f551e8a47->
DATARMNETbb80fccd97=DATARMNETd2a694d52a->DATARMNETbb80fccd97;list_add(&
DATARMNET0f551e8a47->DATARMNET6f898987df,DATARMNETf0fb155a9c);}else{
DATARMNET68d84e7b98[DATARMNET6533f70c87]++;}}void DATARMNET3af54cd726(struct
list_head*DATARMNETf0fb155a9c){struct DATARMNETa52c09a590*DATARMNET0f551e8a47;
struct list_head*DATARMNET7b34b7b5be,*next;if(!DATARMNETf0fb155a9c){
DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}list_for_each_safe(
DATARMNET7b34b7b5be,next,DATARMNETf0fb155a9c){DATARMNET0f551e8a47=list_entry(
DATARMNET7b34b7b5be,struct DATARMNETa52c09a590,DATARMNET6f898987df);
list_del_init(&DATARMNET0f551e8a47->DATARMNET6f898987df);kfree(
DATARMNET0f551e8a47);}}void DATARMNET24e4475345(struct DATARMNET6c78e47d24*
DATARMNETd2a694d52a,struct list_head*DATARMNETb436c3f30b){struct
DATARMNET09a412b1c6*DATARMNET4238158b2a;if(!DATARMNETd2a694d52a||!
DATARMNETb436c3f30b){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}if(!
DATARMNET362b15f941(DATARMNETd2a694d52a->DATARMNET7c894c2f8f)){
DATARMNET4238158b2a=kzalloc(sizeof(*DATARMNET4238158b2a),GFP_ATOMIC);if(
DATARMNET4238158b2a!=NULL){DATARMNET4238158b2a->DATARMNET253a9fc708=
DATARMNETd2a694d52a->DATARMNET253a9fc708;DATARMNET4238158b2a->
DATARMNET42a992465f=DATARMNETd2a694d52a->DATARMNET7c894c2f8f;DATARMNET4238158b2a
->hash=DATARMNETd2a694d52a->hash;DATARMNET4238158b2a->DATARMNET324c1a8f98=
DATARMNETd2a694d52a->DATARMNET324c1a8f98;list_add(&DATARMNET4238158b2a->
DATARMNETd502c0412a,DATARMNETb436c3f30b);}else{DATARMNET68d84e7b98[
DATARMNET6533f70c87]++;}}}void DATARMNETa1b141715b(struct list_head*
DATARMNETb436c3f30b){struct DATARMNET09a412b1c6*DATARMNET4238158b2a;struct
list_head*DATARMNET7b34b7b5be,*next;if(!DATARMNETb436c3f30b){DATARMNET68d84e7b98
[DATARMNETac729c3d29]++;return;}list_for_each_safe(DATARMNET7b34b7b5be,next,
DATARMNETb436c3f30b){DATARMNET4238158b2a=list_entry(DATARMNET7b34b7b5be,struct
DATARMNET09a412b1c6,DATARMNETd502c0412a);list_del_init(&DATARMNET4238158b2a->
DATARMNETd502c0412a);kfree(DATARMNET4238158b2a);}}void DATARMNETc6439e3d71(
struct DATARMNETc8fdbf9c85*DATARMNET7bea4a06a6,struct DATARMNET228056d4b7*
DATARMNETf632b170b1,struct list_head*DATARMNETe46ae760db){u64
DATARMNET264b01f4d5,DATARMNET53ce143c7e=(0xd2d+202-0xdf7);struct
DATARMNET47a6995138*DATARMNETace28a2c7f;int flows=(0xd2d+202-0xdf7);if(!
DATARMNETf632b170b1||!DATARMNETe46ae760db){DATARMNET68d84e7b98[
DATARMNETac729c3d29]++;return;}flows=DATARMNET7bea4a06a6->DATARMNET73464778dc[
DATARMNETf632b170b1->DATARMNET42a992465f].flows;DATARMNET264b01f4d5=
DATARMNET713717107f[DATARMNETf632b170b1->DATARMNET42a992465f];
DATARMNET53ce143c7e=DATARMNET4793ed48af[DATARMNETf632b170b1->DATARMNET42a992465f
];DATARMNETace28a2c7f=kzalloc(sizeof(*DATARMNETace28a2c7f),GFP_ATOMIC);if(
DATARMNETace28a2c7f==NULL){DATARMNET68d84e7b98[DATARMNET6533f70c87]++;return;}
DATARMNETace28a2c7f->DATARMNET42a992465f=DATARMNETf632b170b1->
DATARMNET42a992465f;if(flows<=(0xd2d+202-0xdf7)){DATARMNETace28a2c7f->
DATARMNET18b7a5b761=DATARMNET264b01f4d5;DATARMNETace28a2c7f->DATARMNET4da6031170
=DATARMNET264b01f4d5;DATARMNETace28a2c7f->DATARMNET4df302dbd6=(0xd2d+202-0xdf7);
list_add(&DATARMNETace28a2c7f->DATARMNET02523bfb57,DATARMNETe46ae760db);return;}
if(DATARMNETf632b170b1->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 DATARMNET6f4b0915d3(struct DATARMNET6c78e47d24
*DATARMNETd2a694d52a,struct list_head*DATARMNET3208cd0982){struct
DATARMNET13c47d154e*DATARMNETf02b2a5be7;if(!DATARMNETd2a694d52a||!
DATARMNET3208cd0982){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;}
DATARMNETf02b2a5be7=kzalloc(sizeof(*DATARMNETf02b2a5be7),GFP_ATOMIC);if(
DATARMNETf02b2a5be7!=NULL&&DATARMNETd2a694d52a->DATARMNET63b1a086d5!=NULL){
DATARMNETf02b2a5be7->DATARMNET253a9fc708=DATARMNETd2a694d52a->
DATARMNET253a9fc708;DATARMNETf02b2a5be7->DATARMNET42a992465f=DATARMNETd2a694d52a
->DATARMNET7c894c2f8f;DATARMNETf02b2a5be7->hash=DATARMNETd2a694d52a->hash;
DATARMNETf02b2a5be7->DATARMNET324c1a8f98=DATARMNETd2a694d52a->
DATARMNET324c1a8f98;DATARMNETf02b2a5be7->DATARMNETbb80fccd97=DATARMNETd2a694d52a
->DATARMNETbb80fccd97;DATARMNETf02b2a5be7->trans_proto=DATARMNETd2a694d52a->
DATARMNET1e9d25d9ff;DATARMNETf02b2a5be7->mux_id=DATARMNETd2a694d52a->mux_id;
DATARMNETf02b2a5be7->DATARMNET95266642d1=DATARMNETd2a694d52a->
DATARMNET95266642d1;DATARMNETf02b2a5be7->DATARMNET0d682bcb29=DATARMNETd2a694d52a
->DATARMNET0d682bcb29;DATARMNETf02b2a5be7->DATARMNET20e8fc9db8=
DATARMNETd2a694d52a->DATARMNET20e8fc9db8;DATARMNETd2da2e8466(
"\x53\x48\x53\x5f\x48\x57\x5f\x43\x4f\x41\x4c\x5f\x4d\x45\x4d\x3a\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x79\x74\x65\x73\x20\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75\x20\x68\x77\x20\x63\x6f\x61\x6c\x20\x62\x75\x66\x73\x69\x7a\x65\x20\x64\x69\x66\x66\x20\x3d\x20\x25\x6c\x75"
,DATARMNETf02b2a5be7->DATARMNET0d682bcb29,DATARMNETf02b2a5be7->
DATARMNET20e8fc9db8);rm_err(
"\x53\x48\x53\x5f\x46\x4d\x55\x58\x3a\x20\x6d\x75\x78\x20\x69\x64\x20\x66\x6f\x72\x20\x66\x66\x20\x68\x61\x73\x68\x20\x30\x78\x25\x78\x20\x69\x73\x20\x25\x64\x20\x74\x70\x20\x25\x64"
,DATARMNETf02b2a5be7->hash,DATARMNETf02b2a5be7->mux_id,DATARMNETf02b2a5be7->
trans_proto);memcpy(&DATARMNETf02b2a5be7->ip_hdr,&DATARMNETd2a694d52a->
DATARMNET63b1a086d5->ip_hdr,sizeof(DATARMNETf02b2a5be7->ip_hdr));memcpy(&
DATARMNETf02b2a5be7->DATARMNETe33b41dad9,&DATARMNETd2a694d52a->
DATARMNET63b1a086d5->DATARMNETe33b41dad9,sizeof(DATARMNETf02b2a5be7->
DATARMNETe33b41dad9));list_add(&DATARMNETf02b2a5be7->DATARMNETec0e3cb8f0,
DATARMNET3208cd0982);}else{DATARMNET68d84e7b98[DATARMNET6533f70c87]++;}}void
DATARMNETcc489fbbad(struct list_head*DATARMNET3208cd0982){struct
DATARMNET13c47d154e*DATARMNETf02b2a5be7;struct list_head*DATARMNET7b34b7b5be,*
next;if(!DATARMNET3208cd0982){DATARMNET68d84e7b98[DATARMNETac729c3d29]++;return;
}list_for_each_safe(DATARMNET7b34b7b5be,next,DATARMNET3208cd0982){
DATARMNETf02b2a5be7=list_entry(DATARMNET7b34b7b5be,struct DATARMNET13c47d154e,
DATARMNETec0e3cb8f0);list_del_init(&DATARMNETf02b2a5be7->DATARMNETec0e3cb8f0);
kfree(DATARMNETf02b2a5be7);}}void DATARMNET5157210c44(struct list_head*
DATARMNETe46ae760db){struct DATARMNET47a6995138*DATARMNETace28a2c7f;uint16_t idx
=(0xd2d+202-0xdf7);if(!DATARMNETe46ae760db){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x53\x43\x41\x50\x53\x3a\x20\x43\x50\x55\x20\x43\x61\x70\x61\x63\x69\x74\x69\x65\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}rm_err("\x25\x73",
"\x53\x48\x53\x5f\x53\x43\x41\x50\x53\x3a\x20\x53\x6f\x72\x74\x65\x64\x20\x43\x50\x55\x20\x43\x61\x70\x61\x63\x69\x74\x69\x65\x73\x3a"
);list_for_each_entry(DATARMNETace28a2c7f,DATARMNETe46ae760db,
DATARMNET02523bfb57){if(idx>=DATARMNETc6782fed88)break;rm_err(
"\x53\x48\x53\x5f\x53\x43\x41\x50\x53\x3a\x20\x3e\x20\x63\x70\x75\x5b\x25\x64\x5d\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x63\x61\x70\x61\x63\x69\x74\x79\x20\x3d\x20\x25\x6c\x6c\x75\x20\x7c\x20"
"\x61\x76\x67\x20\x70\x70\x73\x20\x63\x61\x70\x20\x3d\x20\x25\x6c\x6c\x75\x20\x62\x70\x73\x20\x3d\x20\x25\x6c\x6c\x75"
,DATARMNETace28a2c7f->DATARMNET42a992465f,DATARMNETace28a2c7f->
DATARMNET18b7a5b761,DATARMNETace28a2c7f->DATARMNET4da6031170,DATARMNETace28a2c7f
->DATARMNET4df302dbd6);DATARMNET63c47f3c37[idx].DATARMNET4da6031170=
DATARMNETace28a2c7f->DATARMNET4da6031170;DATARMNET63c47f3c37[idx].
DATARMNET18b7a5b761=DATARMNETace28a2c7f->DATARMNET18b7a5b761;DATARMNET63c47f3c37
[idx].DATARMNET4df302dbd6=DATARMNETace28a2c7f->DATARMNET4df302dbd6;
DATARMNET63c47f3c37[idx].DATARMNET42a992465f=DATARMNETace28a2c7f->
DATARMNET42a992465f;idx+=(0xd26+209-0xdf6);}rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x63\x61\x70\x5f\x64\x6d\x61\x5f\x70\x74\x72\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET410036d5ac),
DATARMNET410036d5ac);if(!DATARMNET410036d5ac){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x63\x61\x70\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}memcpy((char*)DATARMNET410036d5ac->data,(void*)&DATARMNET63c47f3c37[
(0xd2d+202-0xdf7)],sizeof(DATARMNET63c47f3c37));}void DATARMNET0e273eab79(struct
list_head*DATARMNETb436c3f30b){struct DATARMNET09a412b1c6*DATARMNET4238158b2a;
uint16_t idx=(0xd2d+202-0xdf7);int DATARMNETcde08f6e7d=(0xd2d+202-0xdf7);if(!
DATARMNETb436c3f30b){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x53\x47\x4f\x4c\x44\x3a\x20\x47\x6f\x6c\x64\x20\x46\x6c\x6f\x77\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}rm_err("\x25\x73",
"\x53\x48\x53\x5f\x53\x47\x4f\x4c\x44\x3a\x20\x4c\x69\x73\x74\x20\x6f\x66\x20\x73\x6f\x72\x74\x65\x64\x20\x67\x6f\x6c\x64\x20\x66\x6c\x6f\x77\x73\x3a"
);list_for_each_entry(DATARMNET4238158b2a,DATARMNETb436c3f30b,
DATARMNETd502c0412a){if(DATARMNET4238158b2a->DATARMNET324c1a8f98==
(0xd2d+202-0xdf7)){continue;}if(idx>=DATARMNET75c69edb82){break;}rm_err(
"\x53\x48\x53\x5f\x53\x47\x4f\x4c\x44\x3a\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d"
,DATARMNET4238158b2a->hash,DATARMNET4238158b2a->DATARMNET324c1a8f98,
DATARMNET4238158b2a->DATARMNET42a992465f);DATARMNETcde08f6e7d+=(0xd26+209-0xdf6)
;DATARMNET22b4032799[idx].DATARMNET42a992465f=DATARMNET4238158b2a->
DATARMNET42a992465f;DATARMNET22b4032799[idx].hash=DATARMNET4238158b2a->hash;
DATARMNET22b4032799[idx].DATARMNET253a9fc708=DATARMNET4238158b2a->
DATARMNET253a9fc708;DATARMNET22b4032799[idx].DATARMNET324c1a8f98=
DATARMNET4238158b2a->DATARMNET324c1a8f98;idx+=(0xd26+209-0xdf6);}rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x67\x66\x6c\x6f\x77\x5f\x64\x6d\x61\x5f\x70\x74\x72\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET19c47a9f3a),
DATARMNET19c47a9f3a);if(!DATARMNET19c47a9f3a){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x67\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}rm_err(
"\x53\x48\x53\x5f\x53\x47\x4f\x4c\x44\x3a\x20\x6e\x75\x6d\x20\x67\x6f\x6c\x64\x20\x66\x6c\x6f\x77\x73\x20\x3d\x20\x25\x75" "\n"
,idx);memcpy(((char*)DATARMNET19c47a9f3a->data),&idx,sizeof(idx));memcpy(((char*
)DATARMNET19c47a9f3a->data+sizeof(uint16_t)),(void*)&DATARMNET22b4032799[
(0xd2d+202-0xdf7)],sizeof(DATARMNET22b4032799));}void DATARMNETe15af8eb6d(struct
list_head*DATARMNETf0fb155a9c){struct DATARMNETa52c09a590*DATARMNET0f551e8a47;
uint16_t idx=(0xd2d+202-0xdf7);int DATARMNET6d96003717=(0xd2d+202-0xdf7);if(!
DATARMNETf0fb155a9c){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x53\x53\x20\x46\x6c\x6f\x77\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}rm_err("\x25\x73",
"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x4c\x69\x73\x74\x20\x6f\x66\x20\x73\x6f\x72\x74\x65\x64\x20\x73\x73\x20\x66\x6c\x6f\x77\x73\x3a"
);list_for_each_entry(DATARMNET0f551e8a47,DATARMNETf0fb155a9c,
DATARMNET6f898987df){if(DATARMNET0f551e8a47->DATARMNET324c1a8f98==
(0xd2d+202-0xdf7)){continue;}if(idx>=DATARMNET75c69edb82){break;}rm_err(
"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d"
,DATARMNET0f551e8a47->hash,DATARMNET0f551e8a47->DATARMNET324c1a8f98,
DATARMNET0f551e8a47->DATARMNET42a992465f);DATARMNET6d96003717+=(0xd26+209-0xdf6)
;DATARMNETb0d78d576f[idx].DATARMNET42a992465f=DATARMNET0f551e8a47->
DATARMNET42a992465f;DATARMNETb0d78d576f[idx].hash=DATARMNET0f551e8a47->hash;
DATARMNETb0d78d576f[idx].DATARMNET253a9fc708=DATARMNET0f551e8a47->
DATARMNET253a9fc708;DATARMNETb0d78d576f[idx].DATARMNET324c1a8f98=
DATARMNET0f551e8a47->DATARMNET324c1a8f98;DATARMNETb0d78d576f[idx].
DATARMNETbb80fccd97=DATARMNET0f551e8a47->DATARMNETbb80fccd97;idx+=
(0xd26+209-0xdf6);}rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x73\x73\x66\x6c\x6f\x77\x5f\x64\x6d\x61\x5f\x70\x74\x72\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET22e796eff3),
DATARMNET22e796eff3);if(!DATARMNET22e796eff3){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x73\x73\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}rm_err(
"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x6e\x75\x6d\x20\x73\x73\x20\x66\x6c\x6f\x77\x73\x20\x3d\x20\x25\x75" "\n"
,idx);memcpy(((char*)DATARMNET22e796eff3->data),&idx,sizeof(idx));memcpy(((char*
)DATARMNET22e796eff3->data+sizeof(uint16_t)),(void*)&DATARMNETb0d78d576f[
(0xd2d+202-0xdf7)],sizeof(DATARMNETb0d78d576f));}void DATARMNET78f3a0ca4f(struct
list_head*DATARMNET3208cd0982){struct DATARMNET13c47d154e*DATARMNETf02b2a5be7;
uint16_t idx=(0xd2d+202-0xdf7);int DATARMNETd31ee74d2e=(0xd2d+202-0xdf7);if(!
DATARMNET3208cd0982){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x54\x4f\x50\x3a\x20\x46\x69\x6c\x74\x65\x72\x20\x46\x6c\x6f\x77\x73\x20\x4c\x69\x73\x74\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}rm_err("\x25\x73",
"\x53\x48\x53\x5f\x54\x4f\x50\x3a\x20\x4c\x69\x73\x74\x20\x6f\x66\x20\x54\x4f\x50\x20\x66\x69\x6c\x74\x65\x72\x20\x66\x6c\x6f\x77\x73\x3a"
);list_for_each_entry(DATARMNETf02b2a5be7,DATARMNET3208cd0982,
DATARMNETec0e3cb8f0){if(DATARMNETf02b2a5be7->DATARMNET324c1a8f98==
(0xd2d+202-0xdf7)){continue;}if(idx>=DATARMNET67578af78f){break;}rm_err(
"\x53\x48\x53\x5f\x54\x4f\x50\x3a\x20\x3e\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x77\x69\x74\x68\x20\x70\x70\x73\x20\x25\x6c\x6c\x75\x20\x6f\x6e\x20\x63\x70\x75\x5b\x25\x64\x5d"
,DATARMNETf02b2a5be7->hash,DATARMNETf02b2a5be7->DATARMNET324c1a8f98,
DATARMNETf02b2a5be7->DATARMNET42a992465f);DATARMNETd31ee74d2e+=(0xd26+209-0xdf6)
;memcpy(&(DATARMNET3d25ff4ef4[idx].ip_hdr),&(DATARMNETf02b2a5be7->ip_hdr),sizeof
(DATARMNET3d25ff4ef4[idx].ip_hdr));memcpy(&(DATARMNET3d25ff4ef4[idx].
DATARMNETe33b41dad9),&(DATARMNETf02b2a5be7->DATARMNETe33b41dad9),sizeof(
DATARMNET3d25ff4ef4[idx].DATARMNETe33b41dad9));DATARMNET3d25ff4ef4[idx].
DATARMNET42a992465f=DATARMNETf02b2a5be7->DATARMNET42a992465f;DATARMNET3d25ff4ef4
[idx].hash=DATARMNETf02b2a5be7->hash;DATARMNET3d25ff4ef4[idx].
DATARMNET253a9fc708=DATARMNETf02b2a5be7->DATARMNET253a9fc708;DATARMNET3d25ff4ef4
[idx].DATARMNET324c1a8f98=DATARMNETf02b2a5be7->DATARMNET324c1a8f98;
DATARMNET3d25ff4ef4[idx].DATARMNETbb80fccd97=DATARMNETf02b2a5be7->
DATARMNETbb80fccd97;DATARMNET3d25ff4ef4[idx].trans_proto=DATARMNETf02b2a5be7->
trans_proto;DATARMNET3d25ff4ef4[idx].mux_id=DATARMNETf02b2a5be7->mux_id;
DATARMNET3d25ff4ef4[idx].DATARMNET95266642d1=DATARMNETf02b2a5be7->
DATARMNET95266642d1;DATARMNET3d25ff4ef4[idx].DATARMNET0d682bcb29=
DATARMNETf02b2a5be7->DATARMNET0d682bcb29;DATARMNET3d25ff4ef4[idx].
DATARMNET20e8fc9db8=DATARMNETf02b2a5be7->DATARMNET20e8fc9db8;idx+=
(0xd26+209-0xdf6);}rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x66\x66\x6c\x6f\x77\x5f\x64\x6d\x61\x5f\x70\x74\x72\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET9b8000d2a7),
DATARMNET9b8000d2a7);if(!DATARMNET9b8000d2a7){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x66\x66\x6c\x6f\x77\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}rm_err(
"\x53\x48\x53\x5f\x53\x4c\x4f\x57\x3a\x20\x6e\x75\x6d\x20\x66\x66\x6c\x6f\x77\x73\x20\x3d\x20\x25\x75" "\n"
,idx);memcpy(((char*)DATARMNET9b8000d2a7->data),&idx,sizeof(idx));memcpy(((char*
)DATARMNET9b8000d2a7->data+sizeof(uint16_t)),(void*)&DATARMNET3d25ff4ef4[
(0xd2d+202-0xdf7)],sizeof(DATARMNET3d25ff4ef4));}void DATARMNET78666f33a1(void){
struct rmnet_priv*priv;struct DATARMNET9b44b71ee9*ep=NULL;u16 idx=
(0xd2d+202-0xdf7);u16 count=(0xd2d+202-0xdf7);rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x65\x6e\x74\x65\x72\x20\x25\x75" "\n"
,idx);list_for_each_entry(ep,&DATARMNET30a3e83974,DATARMNET0763436b8d){count+=
(0xd26+209-0xdf6);rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x65\x6e\x74\x65\x72\x20\x65\x70\x20\x25\x75" "\n"
,count);if(!ep->DATARMNET4a4e6f66b5){rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x69\x73\x20\x4e\x4f\x54\x20\x61\x63\x74\x69\x76\x65" "\n"
,count);continue;}rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x69\x73\x20\x61\x63\x74\x69\x76\x65\x20\x61\x6e\x64\x20\x6e\x6f\x74\x20\x6e\x75\x6c\x6c" "\n"
,count);if(idx>=DATARMNETe4d15b9332){break;}priv=netdev_priv(ep->ep);if(!priv){
rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x70\x72\x69\x76\x20\x66\x6f\x72\x20\x65\x70\x20\x25\x75\x20\x69\x73\x20\x6e\x75\x6c\x6c" "\n"
,count);continue;}rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x6e\x61\x6d\x65\x20\x3d\x20\x25\x73\x20" "\n"
,count,ep->ep->name);rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x6d\x75\x78\x5f\x69\x64\x20\x3d\x20\x25\x75\x20" "\n"
,count,priv->mux_id);rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x69\x70\x5f\x6d\x69\x73\x73\x20\x3d\x20\x25\x6c\x75\x20" "\n"
,count,priv->stats.coal.close.ip_miss);rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x63\x6f\x61\x6c\x5f\x72\x78\x5f\x70\x6b\x74\x73\x20\x3d\x20\x25\x6c\x75\x20" "\n"
,count,priv->stats.coal.coal_pkts);rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x75\x64\x70\x5f\x72\x78\x5f\x62\x70\x73\x20\x3d\x20\x25\x6c\x75\x20" "\n"
,count,ep->DATARMNET257fc4b2d4);rm_err(
"\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x65\x70\x20\x25\x75\x20\x68\x61\x73\x20\x74\x63\x70\x5f\x72\x78\x5f\x62\x70\x73\x20\x3d\x20\x25\x6c\x75\x20" "\n"
,count,ep->DATARMNET4eb77c78e6);DATARMNETf46265286b[idx].DATARMNET77de6e34f2=
priv->stats.coal.close.ip_miss;DATARMNETf46265286b[idx].hw_evict=priv->stats.
coal.close.hw_evict;DATARMNETf46265286b[idx].coal_tcp=priv->stats.coal.coal_tcp;
DATARMNETf46265286b[idx].coal_tcp_bytes=priv->stats.coal.coal_tcp_bytes;
DATARMNETf46265286b[idx].coal_udp=priv->stats.coal.coal_udp;DATARMNETf46265286b[
idx].coal_udp_bytes=priv->stats.coal.coal_udp_bytes;DATARMNETf46265286b[idx].
mux_id=priv->mux_id;strlcpy(DATARMNETf46265286b[idx].name,ep->ep->name,sizeof(
DATARMNETf46265286b[idx].name));DATARMNETf46265286b[idx].DATARMNET870c3dafcb=
priv->stats.coal.coal_pkts;DATARMNETf46265286b[idx].DATARMNET4eb77c78e6=ep->
DATARMNET4eb77c78e6;DATARMNETf46265286b[idx].DATARMNET257fc4b2d4=ep->
DATARMNET257fc4b2d4;idx+=(0xd26+209-0xdf6);}rm_err(
"\x53\x48\x53\x5f\x4d\x45\x4d\x3a\x20\x6e\x65\x74\x64\x65\x76\x5f\x73\x68\x61\x72\x65\x64\x20\x3d\x20\x30\x78\x25\x6c\x6c\x78\x20\x61\x64\x64\x72\x20\x3d\x20\x30\x78\x25\x70\x4b" "\n"
,(unsigned long long)virt_to_phys((void*)DATARMNET67d31dc40a),
DATARMNET67d31dc40a);if(!DATARMNET67d31dc40a){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x57\x52\x49\x54\x45\x3a\x20\x6e\x65\x74\x64\x65\x76\x5f\x73\x68\x61\x72\x65\x64\x20\x69\x73\x20\x4e\x55\x4c\x4c"
);return;}memcpy(((char*)DATARMNET67d31dc40a->data),&idx,sizeof(idx));memcpy(((
char*)DATARMNET67d31dc40a->data+sizeof(uint16_t)),(void*)&DATARMNETf46265286b[
(0xd2d+202-0xdf7)],sizeof(DATARMNETf46265286b));}void DATARMNETf5f83b943f(void){
kuid_t DATARMNETdaca088404;kgid_t DATARMNET254aa091f2;DATARMNETe4c5563cdb=
proc_mkdir("\x73\x68\x73",NULL);if(!DATARMNETe4c5563cdb){rm_err("\x25\x73",
"\x53\x48\x53\x5f\x4d\x45\x4d\x5f\x49\x4e\x49\x54\x3a\x20\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x72\x65\x61\x74\x65\x20\x70\x72\x6f\x63\x20\x64\x69\x72"
);return;}DATARMNETdaca088404=make_kuid(&init_user_ns,(0xdc7+2646-0x1434));
DATARMNET254aa091f2=make_kgid(&init_user_ns,(0xdc7+2646-0x1434));if(uid_valid(
DATARMNETdaca088404)&&gid_valid(DATARMNET254aa091f2))proc_set_user(
DATARMNETe4c5563cdb,DATARMNETdaca088404,DATARMNET254aa091f2);proc_create(
DATARMNET41be983a65,(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,&DATARMNET668485bd14
);proc_create(DATARMNET5ddc91451c,(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,&
DATARMNETe84fbaa6af);proc_create(DATARMNETeb2a21dd7c,(0xdb7+6665-0x261c),
DATARMNETe4c5563cdb,&DATARMNET8fe5f892a8);proc_create(DATARMNET1c4ea23858,
(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,&DATARMNET0104d40d4b);proc_create(
DATARMNETe98d39b779,(0xdb7+6665-0x261c),DATARMNETe4c5563cdb,&DATARMNET6eb63d9ad0
);DATARMNET6bf538fa23();DATARMNET410036d5ac=NULL;DATARMNET19c47a9f3a=NULL;
DATARMNET22e796eff3=NULL;DATARMNET9b8000d2a7=NULL;DATARMNET67d31dc40a=NULL;
DATARMNETaea4c85748();}void DATARMNET28d33bd09f(void){remove_proc_entry(
DATARMNET41be983a65,DATARMNETe4c5563cdb);remove_proc_entry(DATARMNET5ddc91451c,
DATARMNETe4c5563cdb);remove_proc_entry(DATARMNETeb2a21dd7c,DATARMNETe4c5563cdb);
remove_proc_entry(DATARMNET1c4ea23858,DATARMNETe4c5563cdb);remove_proc_entry(
DATARMNETe98d39b779,DATARMNETe4c5563cdb);remove_proc_entry(DATARMNET6517f07a36,
NULL);DATARMNET6bf538fa23();DATARMNET410036d5ac=NULL;DATARMNET19c47a9f3a=NULL;
DATARMNET22e796eff3=NULL;DATARMNET9b8000d2a7=NULL;DATARMNET67d31dc40a=NULL;
DATARMNETaea4c85748();}

View File

@@ -0,0 +1,69 @@
/* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef DATARMNETe10fe0b1e0
#define DATARMNETe10fe0b1e0
#include "rmnet_shs.h"
#define DATARMNET6517f07a36 "\x73\x68\x73"
#define DATARMNET41be983a65 \
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x63\x61\x70\x73"
#define DATARMNET5ddc91451c \
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x66\x6c\x6f\x77\x73"
#define DATARMNETeb2a21dd7c \
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x73\x73\x5f\x66\x6c\x6f\x77\x73"
#define DATARMNET1c4ea23858 \
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x66\x66\x6c\x6f\x77\x73"
#define DATARMNETe98d39b779 \
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x6e\x65\x74\x64\x65\x76"
#define DATARMNET67578af78f ((0xd11+230-0xdf3))
#define DATARMNET75c69edb82 ((0xef7+694-0x112d))
#define DATARMNETe4d15b9332 ((0xec7+1166-0x132d))
#define DATARMNET9ae5f81f71 ((0xeb7+1158-0x132d))
#define DATARMNET29d29f44cf ((0xd2d+202-0xdf7))
struct __attribute__((__packed__))DATARMNET33582f7450{u64 DATARMNET18b7a5b761;
u64 DATARMNET4da6031170;u64 DATARMNET4df302dbd6;u16 DATARMNET42a992465f;};struct
__attribute__((__packed__))DATARMNETf44cda1bf2{u64 DATARMNET324c1a8f98;u64
DATARMNET253a9fc708;u64 DATARMNETbb80fccd97;u32 hash;u16 DATARMNET42a992465f;};
struct __attribute__((__packed__))DATARMNET3a84fbfeae{u64 DATARMNET324c1a8f98;
u64 DATARMNET253a9fc708;u64 DATARMNETbb80fccd97;u32 hash;u16 DATARMNET42a992465f
;};struct __attribute__((__packed__))DATARMNETc13d990bf1{union{struct iphdr
DATARMNETac9bbaad7c;struct ipv6hdr DATARMNET1688a97aa4;}ip_hdr;union{struct
tcphdr tp;struct udphdr up;}DATARMNETe33b41dad9;u64 DATARMNET324c1a8f98;u64
DATARMNET253a9fc708;u64 DATARMNETbb80fccd97;u64 DATARMNET95266642d1;u64
DATARMNET0d682bcb29;u64 DATARMNET20e8fc9db8;u32 hash;u16 DATARMNET42a992465f;u16
trans_proto;u8 mux_id;};struct __attribute__((__packed__))DATARMNET57ccbe14f3{
char name[DATARMNET9ae5f81f71];u64 DATARMNET77de6e34f2;u64 hw_evict;u64
DATARMNET870c3dafcb;u64 coal_tcp;u64 coal_tcp_bytes;u64 coal_udp;u64
coal_udp_bytes;u64 DATARMNET257fc4b2d4;u64 DATARMNET4eb77c78e6;u8 mux_id;};
extern struct list_head DATARMNET6c23f11e81;extern struct list_head
DATARMNETf91b305f4e;extern struct list_head DATARMNET3208cd0982;extern struct
list_head DATARMNETe46ae760db;enum{DATARMNETbd4083a6a4=(0x24f5+499-0x16e8)};
struct DATARMNETa41d4c4a12{char*data;refcount_t refcnt;};void
DATARMNET28a80d526e(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct
list_head*DATARMNETf0fb155a9c);void DATARMNET24e4475345(struct
DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct list_head*DATARMNETb436c3f30b);
void DATARMNET6f4b0915d3(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct
list_head*DATARMNET3208cd0982);void DATARMNETa1b141715b(struct list_head*
DATARMNETb436c3f30b);void DATARMNET3af54cd726(struct list_head*
DATARMNETf0fb155a9c);void DATARMNETcc489fbbad(struct list_head*
DATARMNET3208cd0982);void DATARMNETc6439e3d71(struct DATARMNETc8fdbf9c85*
DATARMNET7bea4a06a6,struct DATARMNET228056d4b7*DATARMNETf632b170b1,struct
list_head*DATARMNETe46ae760db);void DATARMNETb177316a15(struct list_head*
DATARMNETe46ae760db);void DATARMNET5157210c44(struct list_head*
DATARMNETe46ae760db);void DATARMNET0e273eab79(struct list_head*
DATARMNETb436c3f30b);void DATARMNETe15af8eb6d(struct list_head*
DATARMNETf0fb155a9c);void DATARMNET78f3a0ca4f(struct list_head*
DATARMNET3208cd0982);void DATARMNET78666f33a1(void);void DATARMNETf5f83b943f(
void);void DATARMNET28d33bd09f(void);
#endif

View File

@@ -0,0 +1,24 @@
ifneq ($(TARGET_BOARD_AUTO),true)
ifneq ($(TARGET_BOARD_PLATFORM),qssi)
RMNET_WLAN_DLKM_PLATFORMS_LIST := lahaina
RMNET_WLAN_DLKM_PLATFORMS_LIST += holi
RMNET_WLAN_DLKM_PLATFORMS_LIST += taro
RMNET_WLAN_DLKM_PLATFORMS_LIST += parrot
ifeq ($(call is-board-platform-in-list, $(RMNET_WLAN_DLKM_PLATFORMS_LIST)),true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_MODULE := rmnet_wlan.ko
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
include $(DLKM_DIR)/Build_external_kernelmodule.mk
endif #End of check for target
endif #End of Check for qssi target
endif #End of check for AUTO Target

View File

@@ -0,0 +1,8 @@
obj-m += rmnet_wlan.o
ccflags-y := $(call cc-option,-Wno-misleading-indentation)
rmnet_wlan-y := \
rmnet_wlan_main.o \
rmnet_wlan_genl.o \
rmnet_wlan_stats.o \
rmnet_wlan_fragment.o \
rmnet_wlan_connection.o

View File

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

View File

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

View File

@@ -0,0 +1,54 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET WLAN handler framework
*
*/
#ifndef DATARMNETc7bc459123
#define DATARMNETc7bc459123
#include <linux/types.h>
#include <net/genetlink.h>
#include <linux/netdevice.h>
#include <linux/in6.h>
struct DATARMNETb89ecedefc{union{__be16 DATARMNETf0d9de7e2f;__be32
DATARMNET906b2ee561;};u8 DATARMNET0d956cc77a;u8 DATARMNET4924e79411;};struct
DATARMNET8d3c2559ca{struct net_device*DATARMNET57656f6f2f;union{__be32
DATARMNET0dc14167a1;struct in6_addr DATARMNET5700daac01;};u8 DATARMNET0d956cc77a
;u8 DATARMNET9954a624ac;};struct DATARMNET41b426061d{struct hlist_node
DATARMNETe8608dd267;struct rcu_head DATARMNET28bfe9e6ad;struct notifier_block
DATARMNET272c159b3c;char DATARMNET852d4d00e2[IFNAMSIZ];struct
DATARMNET8d3c2559ca DATARMNET7ed5754a5c;};enum{DATARMNET356f2a237e,
DATARMNET45ee632553,DATARMNET9bfbc31cd6,DATARMNETdcafdec32a,};void
DATARMNET7ca470d54b(struct sk_buff*DATARMNET543491eb0f,u32 DATARMNET1464100e7a);
int DATARMNET4899053671(struct sk_buff*DATARMNET543491eb0f,struct
DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e);bool DATARMNET4eafcdee07(struct
DATARMNETb89ecedefc*DATARMNET3396919a68);int DATARMNET53f12a0f7d(struct
DATARMNETb89ecedefc*DATARMNETcadc2ef9aa,u32 DATARMNETef77661260,struct genl_info
*DATARMNET54338da2ff);int DATARMNET07f6485c9b(struct DATARMNETb89ecedefc*
DATARMNETcadc2ef9aa,u32 DATARMNETef77661260,struct genl_info*DATARMNET54338da2ff
);int DATARMNETe14c875532(struct sk_buff**DATARMNET89946cec52,struct genl_family
*DATARMNET4a4aca7220,struct genl_info*DATARMNET54338da2ff);int
DATARMNET97b2388e63(char*DATARMNET852d4d00e2,struct genl_info*
DATARMNET54338da2ff);int DATARMNETa903cd5994(char*DATARMNET852d4d00e2,struct
genl_info*DATARMNET54338da2ff);int DATARMNET92e5468fc5(char*DATARMNET852d4d00e2,
struct genl_info*DATARMNET54338da2ff);int DATARMNET9d7bb9a63d(char*
DATARMNET852d4d00e2,struct genl_info*DATARMNET54338da2ff);int
DATARMNET947eb110d2(struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e,struct
genl_info*DATARMNET54338da2ff);int DATARMNETb8b35fdc18(struct
DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e,struct genl_info*DATARMNET54338da2ff);
int DATARMNET8d5a5a7047(__be16 DATARMNETf0d9de7e2f,struct genl_info*
DATARMNET54338da2ff);int DATARMNETc97c6a4265(__be16 DATARMNETf0d9de7e2f,struct
genl_info*DATARMNET54338da2ff);bool DATARMNETa8b2566e6a(struct sk_buff*
DATARMNET543491eb0f,struct DATARMNETb89ecedefc*DATARMNET3396919a68,int
DATARMNET611d08d671);int DATARMNET59b8376224(__be16 DATARMNETf0d9de7e2f,struct
genl_info*DATARMNET54338da2ff);int DATARMNET0b12e969c5(__be16
DATARMNETf0d9de7e2f,struct genl_info*DATARMNET54338da2ff);bool
DATARMNET0a4704e5e0(struct DATARMNETb89ecedefc*DATARMNET3396919a68);int
DATARMNET078f6bd384(void);void DATARMNETfae36afa03(void);char*
DATARMNET934406764d(void);char*DATARMNETe447822105(void);struct
DATARMNET41b426061d*DATARMNETcc0a01df2a(struct DATARMNET8d3c2559ca*
DATARMNET54338da2ff);
#endif

View File

@@ -0,0 +1,317 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET WLAN connection management framework
*
*/
#include <linux/types.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/spinlock.h>
#include <linux/rcupdate.h>
#include <linux/hashtable.h>
#include <linux/if_ether.h>
#include <linux/hrtimer.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include <net/dst.h>
#include <net/netfilter/nf_conntrack.h>
#include "rmnet_wlan.h"
#include "rmnet_wlan_connection.h"
#include "rmnet_wlan_stats.h"
#define DATARMNET5da8c68c19 (2000000000)
#define DATARMNET8fc07fbb24 ((0xeb7+1158-0x132d))
#define DATARMNETeaf0945284 \
(const_ilog2(DATARMNET8fc07fbb24))
struct DATARMNET4f49486833{struct hlist_node DATARMNETe8608dd267;struct rcu_head
DATARMNET28bfe9e6ad;struct hrtimer DATARMNET9f31ce5d2d;struct
DATARMNET0ca9d8ead7 DATARMNET54338da2ff;struct DATARMNET8d3c2559ca
DATARMNET7ed5754a5c;};static DEFINE_SPINLOCK(DATARMNET820642743b);static
DEFINE_HASHTABLE(DATARMNET5413d6f8ec,DATARMNETeaf0945284);static bool
DATARMNET5f3c9ed4da(struct DATARMNET0ca9d8ead7*DATARMNET75decd6f60,struct
DATARMNET0ca9d8ead7*DATARMNET6745cad668){if(DATARMNET75decd6f60->
DATARMNET0d956cc77a!=DATARMNET6745cad668->DATARMNET0d956cc77a)return false;if(
DATARMNET75decd6f60->DATARMNET0d956cc77a==(0xd11+230-0xdf3))return
DATARMNET75decd6f60->DATARMNETdfe430c2d6==DATARMNET6745cad668->
DATARMNETdfe430c2d6&&DATARMNET75decd6f60->DATARMNET2cb607d686==
DATARMNET6745cad668->DATARMNET2cb607d686;return!ipv6_addr_cmp(&
DATARMNET75decd6f60->DATARMNET815cbb4bf5,&DATARMNET6745cad668->
DATARMNET815cbb4bf5)&&!ipv6_addr_cmp(&DATARMNET75decd6f60->DATARMNETc3f31215b7,&
DATARMNET6745cad668->DATARMNETc3f31215b7);}static enum hrtimer_restart
DATARMNET299a8a08b5(struct hrtimer*DATARMNET6e4292679f){struct
DATARMNET4f49486833*DATARMNET63b1a086d5;unsigned long DATARMNETfb0677cc3c;
spin_lock_irqsave(&DATARMNET820642743b,DATARMNETfb0677cc3c);DATARMNET63b1a086d5=
container_of(DATARMNET6e4292679f,struct DATARMNET4f49486833,DATARMNET9f31ce5d2d)
;hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(
DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);spin_unlock_irqrestore(&
DATARMNET820642743b,DATARMNETfb0677cc3c);return HRTIMER_NORESTART;}static
rx_handler_result_t DATARMNETc9ed97754a(struct sk_buff*DATARMNET543491eb0f,
uint8_t DATARMNET1a901c3d09){if(DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->
protocol==htons(ETH_P_IP))&&DATARMNET1a901c3d09==DATARMNET9bfbc31cd6){struct
iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;struct net_device*
DATARMNET813ca18d06=NULL;struct flowi4 DATARMNET099aa93adc={};struct rtable*
DATARMNET066b8bd537;struct neighbour*DATARMNET3f85732c70;int DATARMNET268a8314cf
=(0xd2d+202-0xdf7);DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,
(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!
DATARMNET86f1f2cdc9){DATARMNET17f6bc1be5(DATARMNET15454f969d);goto
DATARMNETc1174a0f45;}DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,
DATARMNET934406764d());if(!DATARMNET813ca18d06){DATARMNET17f6bc1be5(
DATARMNETfa4b3dd44a);goto DATARMNETc1174a0f45;}DATARMNET543491eb0f->dev=
DATARMNET813ca18d06;memcpy(&DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9->
saddr,sizeof(__be32));memcpy(&DATARMNET099aa93adc.daddr,&DATARMNET86f1f2cdc9->
daddr,sizeof(__be32));DATARMNET099aa93adc.flowi4_oif=DATARMNET813ca18d06->
ifindex;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537
=ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR(
DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET72ab5e86d8);goto
DATARMNETc1174a0f45;}DATARMNET3f85732c70=dst_neigh_lookup(&DATARMNET066b8bd537->
dst,&DATARMNET099aa93adc.daddr);ip_rt_put(DATARMNET066b8bd537);if(!
DATARMNET3f85732c70){DATARMNET17f6bc1be5(DATARMNET0e6bd55b8b);goto
DATARMNETc1174a0f45;}if(DATARMNET3f85732c70->dev!=DATARMNET543491eb0f->dev||!
DATARMNET3f85732c70->dev->header_ops){DATARMNET17f6bc1be5(DATARMNET64aecaa865);
neigh_release(DATARMNET3f85732c70);goto DATARMNETc1174a0f45;}DATARMNET268a8314cf
=neigh_resolve_output(DATARMNET3f85732c70,DATARMNET543491eb0f);neigh_release(
DATARMNET3f85732c70);if(likely(DATARMNET268a8314cf==NET_XMIT_SUCCESS||
DATARMNET268a8314cf==NET_XMIT_CN)){DATARMNET17f6bc1be5(DATARMNETc1b437465b);}
else{DATARMNET17f6bc1be5(DATARMNET43a65c0be7);}return RX_HANDLER_CONSUMED;}else
if(DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6))
&&DATARMNET1a901c3d09==DATARMNET9bfbc31cd6){struct ipv6hdr*DATARMNETbf55123e5b,
DATARMNETcf1d9e2c1e;struct net_device*DATARMNET813ca18d06=NULL;struct flowi6
DATARMNET8fbe36a2fa={};struct neighbour*DATARMNET3f85732c70;struct dst_entry*dst
;int DATARMNET268a8314cf=(0xd2d+202-0xdf7);DATARMNETbf55123e5b=
skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*
DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b){
DATARMNET17f6bc1be5(DATARMNET72f4fdd48a);goto DATARMNETc1174a0f45;}
DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,DATARMNET934406764d());if(!
DATARMNET813ca18d06){DATARMNET17f6bc1be5(DATARMNET9cff15f94d);goto
DATARMNETc1174a0f45;}DATARMNET543491eb0f->dev=DATARMNET813ca18d06;memcpy(&
DATARMNET8fbe36a2fa.saddr,&DATARMNETbf55123e5b->saddr,sizeof(struct in6_addr));
memcpy(&DATARMNET8fbe36a2fa.daddr,&DATARMNETbf55123e5b->daddr,sizeof(struct
in6_addr));DATARMNET8fbe36a2fa.flowi6_oif=DATARMNET813ca18d06->ifindex;
DATARMNET8fbe36a2fa.flowi6_flags=FLOWI_FLAG_KNOWN_NH;dst=ipv6_stub->
ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if(IS_ERR(dst)){
DATARMNET17f6bc1be5(DATARMNETbf6e6853f9);goto DATARMNETc1174a0f45;}
DATARMNET3f85732c70=dst_neigh_lookup(dst,&DATARMNET8fbe36a2fa.daddr);dst_release
(dst);if(!DATARMNET3f85732c70){DATARMNET17f6bc1be5(DATARMNETa0da722329);goto
DATARMNETc1174a0f45;}if(DATARMNET3f85732c70->dev!=DATARMNET543491eb0f->dev||!
DATARMNET3f85732c70->dev->header_ops){DATARMNET17f6bc1be5(DATARMNET729e252fb9);
neigh_release(DATARMNET3f85732c70);goto DATARMNETc1174a0f45;}DATARMNET268a8314cf
=neigh_resolve_output(DATARMNET3f85732c70,DATARMNET543491eb0f);neigh_release(
DATARMNET3f85732c70);if(likely(DATARMNET268a8314cf==NET_XMIT_SUCCESS||
DATARMNET268a8314cf==NET_XMIT_CN)){DATARMNET17f6bc1be5(DATARMNET04311361a2);}
else{DATARMNET17f6bc1be5(DATARMNET13bbe5f5c5);}return RX_HANDLER_CONSUMED;}else
if(DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IP))&&
DATARMNET1a901c3d09==DATARMNET45ee632553){struct iphdr*DATARMNET86f1f2cdc9,
DATARMNETbf6548198e;struct net_device*DATARMNET813ca18d06=NULL;struct flowi4
DATARMNET099aa93adc={};struct dst_entry*DATARMNETb5af46179c;struct rtable*
DATARMNET066b8bd537;struct net_device*DATARMNET39542b437e=NULL;
DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9){
DATARMNET17f6bc1be5(DATARMNET7803c877c0);goto DATARMNETc1174a0f45;}
DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,DATARMNETe447822105());if(!
DATARMNET813ca18d06){DATARMNET17f6bc1be5(DATARMNET0978ff973f);goto
DATARMNETc1174a0f45;}memcpy(&DATARMNET099aa93adc.daddr,&DATARMNET86f1f2cdc9->
daddr,sizeof(__be32));DATARMNET099aa93adc.flowi4_oif=DATARMNET813ca18d06->
ifindex;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537
=ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR(
DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET666fc9a664);
DATARMNET39542b437e=dev_get_by_name_rcu(&init_net,"\x64\x75\x6d\x6d\x79\x30");if
(!DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNET521b065310);goto
DATARMNETc1174a0f45;}DATARMNET099aa93adc.flowi4_oif=DATARMNET39542b437e->ifindex
;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537=
ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR(
DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET8a15bcdcc7);goto
DATARMNET74b365f6cc;}}memcpy(&DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9->
saddr,sizeof(__be32));DATARMNETb5af46179c=xfrm_lookup(&init_net,&
DATARMNET066b8bd537->dst,flowi4_to_flowi(&DATARMNET099aa93adc),NULL,
(0xd2d+202-0xdf7));DATARMNET066b8bd537=(struct rtable*)DATARMNETb5af46179c;if(
IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNETddb1bc27cb);goto
DATARMNETc1174a0f45;}skb_dst_set(DATARMNET543491eb0f,DATARMNETb5af46179c);
dst_output(&init_net,NULL,DATARMNET543491eb0f);DATARMNET17f6bc1be5(
DATARMNETc730640bf7);return RX_HANDLER_CONSUMED;}else if(DATARMNET543491eb0f->
dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6))&&DATARMNET1a901c3d09==
DATARMNET45ee632553){struct ipv6hdr*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;
struct flowi6 DATARMNET8fbe36a2fa={};struct dst_entry*dst=NULL,*
DATARMNETb5af46179c;struct rtable*DATARMNET066b8bd537;struct net_device*
DATARMNET39542b437e=NULL;DATARMNETbf55123e5b=skb_header_pointer(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),&
DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b){DATARMNET17f6bc1be5(
DATARMNET0b9541c9b3);goto DATARMNETc1174a0f45;}memcpy(&DATARMNET8fbe36a2fa.saddr
,&DATARMNETbf55123e5b->saddr,sizeof(struct in6_addr));memcpy(&
DATARMNET8fbe36a2fa.daddr,&DATARMNETbf55123e5b->daddr,sizeof(struct in6_addr));
dst=ipv6_stub->ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if
(IS_ERR(dst)){DATARMNET17f6bc1be5(DATARMNET0078f1d36d);DATARMNET39542b437e=
dev_get_by_name_rcu(&init_net,"\x64\x75\x6d\x6d\x79\x30");if(!
DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNET7c6c30b7d2);goto
DATARMNETc1174a0f45;}DATARMNET8fbe36a2fa.flowi6_oif=DATARMNET39542b437e->ifindex
;DATARMNET8fbe36a2fa.flowi6_flags=FLOWI_FLAG_KNOWN_NH;dst=ipv6_stub->
ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if(IS_ERR(dst)){
DATARMNET17f6bc1be5(DATARMNET39d80cc483);goto DATARMNET74b365f6cc;}}
DATARMNETb5af46179c=xfrm_lookup(&init_net,dst,flowi6_to_flowi(&
DATARMNET8fbe36a2fa),NULL,(0xd2d+202-0xdf7));DATARMNET066b8bd537=(struct rtable*
)DATARMNETb5af46179c;if(IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5(
DATARMNET661bdeccd4);goto DATARMNETc1174a0f45;}skb_dst_set(DATARMNET543491eb0f,
DATARMNETb5af46179c);dst_output(&init_net,NULL,DATARMNET543491eb0f);
DATARMNET17f6bc1be5(DATARMNET28e7704d13);return RX_HANDLER_CONSUMED;}else if(
DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IP))&&
DATARMNET1a901c3d09==DATARMNET356f2a237e){struct iphdr*DATARMNET86f1f2cdc9,
DATARMNETbf6548198e;struct flowi4 DATARMNET099aa93adc={};struct net_device*
DATARMNET813ca18d06=NULL;struct dst_entry*DATARMNETb5af46179c;struct net_device*
DATARMNET39542b437e=NULL;struct rtable*DATARMNET066b8bd537;DATARMNET86f1f2cdc9=
skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*
DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9){
DATARMNET17f6bc1be5(DATARMNET15454f969d);goto DATARMNETc1174a0f45;}
DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,DATARMNET934406764d());if(!
DATARMNET813ca18d06){DATARMNET17f6bc1be5(DATARMNET4c5aeeb476);goto
DATARMNETc1174a0f45;}memcpy(&DATARMNET099aa93adc.daddr,&DATARMNET86f1f2cdc9->
daddr,sizeof(__be32));DATARMNET099aa93adc.flowi4_oif=DATARMNET813ca18d06->
ifindex;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537
=ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR(
DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET9bdb1c4072);
DATARMNET39542b437e=dev_get_by_name_rcu(&init_net,"\x64\x75\x6d\x6d\x79\x30");if
(!DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNET5abdc89190);goto
DATARMNETc1174a0f45;}DATARMNET099aa93adc.flowi4_oif=DATARMNET39542b437e->ifindex
;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537=
ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR(
DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET101af46c1c);goto
DATARMNET74b365f6cc;}}memcpy(&DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9->
saddr,sizeof(__be32));DATARMNETb5af46179c=xfrm_lookup(&init_net,&
DATARMNET066b8bd537->dst,flowi4_to_flowi(&DATARMNET099aa93adc),NULL,
(0xd2d+202-0xdf7));DATARMNET066b8bd537=(struct rtable*)DATARMNETb5af46179c;if(
IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET9a57ef32d3);goto
DATARMNETc1174a0f45;}skb_dst_set(DATARMNET543491eb0f,DATARMNETb5af46179c);
dst_output(&init_net,NULL,DATARMNET543491eb0f);DATARMNET17f6bc1be5(
DATARMNET9a940d93dc);return RX_HANDLER_CONSUMED;}else if(DATARMNET543491eb0f->
dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6))&&DATARMNET1a901c3d09==
DATARMNET356f2a237e){struct ipv6hdr*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;
struct flowi6 DATARMNET8fbe36a2fa={};struct dst_entry*dst=NULL,*
DATARMNETb5af46179c;struct rtable*DATARMNET066b8bd537;struct net_device*
DATARMNET39542b437e=NULL;DATARMNETbf55123e5b=skb_header_pointer(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),&
DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b){DATARMNET17f6bc1be5(
DATARMNET6b0ed53aab);goto DATARMNETc1174a0f45;}memcpy(&DATARMNET8fbe36a2fa.saddr
,&DATARMNETbf55123e5b->saddr,sizeof(struct in6_addr));memcpy(&
DATARMNET8fbe36a2fa.daddr,&DATARMNETbf55123e5b->daddr,sizeof(struct in6_addr));
dst=ipv6_stub->ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if
(IS_ERR(dst)){DATARMNET17f6bc1be5(DATARMNET22ac945cae);DATARMNET39542b437e=
dev_get_by_name_rcu(&init_net,"\x64\x75\x6d\x6d\x79\x30");if(!
DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNETf326b7c906);goto
DATARMNETc1174a0f45;}DATARMNET8fbe36a2fa.flowi6_oif=DATARMNET39542b437e->ifindex
;DATARMNET8fbe36a2fa.flowi6_flags=FLOWI_FLAG_KNOWN_NH;dst=ipv6_stub->
ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if(IS_ERR(dst)){
DATARMNET17f6bc1be5(DATARMNET544d78ede7);goto DATARMNET74b365f6cc;}}
DATARMNETb5af46179c=xfrm_lookup(&init_net,dst,flowi6_to_flowi(&
DATARMNET8fbe36a2fa),NULL,(0xd2d+202-0xdf7));DATARMNET066b8bd537=(struct rtable*
)DATARMNETb5af46179c;if(IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5(
DATARMNET97b44d0c09);goto DATARMNETc1174a0f45;}skb_dst_set(DATARMNET543491eb0f,
DATARMNETb5af46179c);dst_output(&init_net,NULL,DATARMNET543491eb0f);
DATARMNET17f6bc1be5(DATARMNETf954265acb);return RX_HANDLER_CONSUMED;}
DATARMNET74b365f6cc:return RX_HANDLER_PASS;DATARMNETc1174a0f45:kfree_skb(
DATARMNET543491eb0f);return RX_HANDLER_CONSUMED;}static rx_handler_result_t
DATARMNET68fe094884(struct sk_buff**DATARMNET89946cec52){struct
DATARMNET0ca9d8ead7 DATARMNETa76763310b={};struct DATARMNET4f49486833*
DATARMNET63b1a086d5;struct sk_buff*DATARMNET543491eb0f=*DATARMNET89946cec52;
unsigned long DATARMNETfb0677cc3c;struct DATARMNET8d3c2559ca DATARMNET2d4b4cfc9e
;struct DATARMNET41b426061d*DATARMNET8184934307;uint8_t DATARMNET1a901c3d09=
DATARMNETdcafdec32a;if(!DATARMNET543491eb0f||DATARMNET543491eb0f->pkt_type==
PACKET_LOOPBACK)return RX_HANDLER_PASS;if(DATARMNET543491eb0f->protocol==htons(
ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;
DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto
DATARMNETbf4095f79e;DATARMNET2d4b4cfc9e.DATARMNET0dc14167a1=DATARMNET86f1f2cdc9
->saddr;DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;DATARMNETbf55123e5b=skb_header_pointer(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),&
DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto DATARMNETbf4095f79e;memcpy(&
DATARMNET2d4b4cfc9e.DATARMNET5700daac01,&DATARMNETbf55123e5b->saddr,sizeof(
DATARMNET2d4b4cfc9e.DATARMNET5700daac01));DATARMNET2d4b4cfc9e.
DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else{goto DATARMNETbf4095f79e;}
rcu_read_lock();DATARMNET8184934307=DATARMNETcc0a01df2a(&DATARMNET2d4b4cfc9e);
rcu_read_unlock();if(!DATARMNET8184934307)goto DATARMNETbf4095f79e;
DATARMNET1a901c3d09=DATARMNET8184934307->DATARMNET7ed5754a5c.DATARMNET9954a624ac
;if(DATARMNET1a901c3d09==DATARMNETdcafdec32a)goto DATARMNETbf4095f79e;if(
DATARMNET543491eb0f->dev&&DATARMNET1a901c3d09==DATARMNET9bfbc31cd6)nf_ct_set(
DATARMNET543491eb0f,NULL,IP_CT_UNTRACKED);if(DATARMNET543491eb0f->protocol==
htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;
DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto
DATARMNETbf4095f79e;if(DATARMNET86f1f2cdc9->protocol==IPPROTO_TCP)goto
DATARMNET9b3d23a43b;if(DATARMNET86f1f2cdc9->protocol!=IPPROTO_ICMP)goto
DATARMNETbf4095f79e;DATARMNETa76763310b.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9
->saddr;DATARMNETa76763310b.DATARMNET2cb607d686=DATARMNET86f1f2cdc9->daddr;
DATARMNETa76763310b.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;__be16 frag_off;u8 DATARMNET65293f17c4;
DATARMNETbf55123e5b=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
sizeof(*DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto
DATARMNETbf4095f79e;DATARMNET65293f17c4=DATARMNETbf55123e5b->nexthdr;if(
ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*DATARMNETbf55123e5b),&
DATARMNET65293f17c4,&frag_off)<(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;if(
frag_off&&DATARMNET65293f17c4==NEXTHDR_FRAGMENT)goto DATARMNETbf4095f79e;if(
DATARMNET65293f17c4==IPPROTO_TCP)goto DATARMNET9b3d23a43b;if(DATARMNET65293f17c4
!=IPPROTO_ICMPV6)goto DATARMNETbf4095f79e;memcpy(&DATARMNETa76763310b.
DATARMNET815cbb4bf5,&DATARMNETbf55123e5b->saddr,sizeof(DATARMNETa76763310b.
DATARMNET815cbb4bf5));memcpy(&DATARMNETa76763310b.DATARMNETc3f31215b7,&
DATARMNETbf55123e5b->daddr,sizeof(DATARMNETa76763310b.DATARMNETc3f31215b7));
DATARMNETa76763310b.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else{goto
DATARMNETbf4095f79e;}rcu_read_lock();hash_for_each_possible_rcu(
DATARMNET5413d6f8ec,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNETa76763310b.
DATARMNET2cb607d686){if(!DATARMNET5f3c9ed4da(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,&DATARMNETa76763310b))continue;if(likely(hrtimer_is_queued(&
DATARMNET63b1a086d5->DATARMNET9f31ce5d2d)))hrtimer_start(&DATARMNET63b1a086d5->
DATARMNET9f31ce5d2d,DATARMNET5da8c68c19,HRTIMER_MODE_REL);rcu_read_unlock();goto
DATARMNETbf4095f79e;}rcu_read_unlock();spin_lock_irqsave(&DATARMNET820642743b,
DATARMNETfb0677cc3c);DATARMNET63b1a086d5=kzalloc(sizeof(*DATARMNET63b1a086d5),
GFP_ATOMIC);if(!DATARMNET63b1a086d5){spin_unlock_irqrestore(&DATARMNET820642743b
,DATARMNETfb0677cc3c);goto DATARMNETbf4095f79e;}INIT_HLIST_NODE(&
DATARMNET63b1a086d5->DATARMNETe8608dd267);memcpy(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,&DATARMNETa76763310b,sizeof(DATARMNETa76763310b));
DATARMNET63b1a086d5->DATARMNET7ed5754a5c.DATARMNET57656f6f2f=DATARMNET543491eb0f
->dev;hrtimer_init(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,CLOCK_MONOTONIC,
HRTIMER_MODE_REL);DATARMNET63b1a086d5->DATARMNET9f31ce5d2d.function=
DATARMNET299a8a08b5;hrtimer_start(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,
DATARMNET5da8c68c19,HRTIMER_MODE_REL);hash_add_rcu(DATARMNET5413d6f8ec,&
DATARMNET63b1a086d5->DATARMNETe8608dd267,DATARMNETa76763310b.DATARMNET2cb607d686
);spin_unlock_irqrestore(&DATARMNET820642743b,DATARMNETfb0677cc3c);
DATARMNETbf4095f79e:return DATARMNETc9ed97754a(DATARMNET543491eb0f,
DATARMNET1a901c3d09);DATARMNET9b3d23a43b:DATARMNET7ca470d54b(DATARMNET543491eb0f
,TCP_FLAG_SYN);return DATARMNETc9ed97754a(DATARMNET543491eb0f,
DATARMNET1a901c3d09);}static void DATARMNETbc6bd11f47(struct net_device*
DATARMNET00dcb79bc4){struct DATARMNET4f49486833*DATARMNET63b1a086d5;int
DATARMNET5c2fd31d7b;rcu_read_lock();hash_for_each_rcu(DATARMNET5413d6f8ec,
DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,DATARMNETe8608dd267){if(
DATARMNET63b1a086d5->DATARMNET7ed5754a5c.DATARMNET57656f6f2f==
DATARMNET00dcb79bc4)hrtimer_cancel(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d);}
rcu_read_unlock();}static int DATARMNET81ab4de243(struct notifier_block*
DATARMNET272c159b3c,unsigned long DATARMNET7f045a1e6e,void*data){struct
net_device*DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(data);if(!
DATARMNET00dcb79bc4||strncmp(DATARMNET00dcb79bc4->name,
"\x72\x5f\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd19+238-0xdfb)))return
NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER:
netdev_rx_handler_unregister(DATARMNET00dcb79bc4);DATARMNETbc6bd11f47(
DATARMNET00dcb79bc4);break;case NETDEV_REGISTER:if(netdev_rx_handler_register(
DATARMNET00dcb79bc4,DATARMNET68fe094884,NULL))pr_err(
"\x25\x73\x28\x29\x3a\x20\x52\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x6f\x6e\x20\x25\x73\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__,DATARMNET00dcb79bc4->name);break;default:break;}return NOTIFY_DONE;}
static struct notifier_block DATARMNET61d0113123={.notifier_call=
DATARMNET81ab4de243,};struct DATARMNET8d3c2559ca*DATARMNET07f0e0f286(struct
DATARMNET0ca9d8ead7*DATARMNET54338da2ff)__must_hold(RCU){struct
DATARMNET4f49486833*DATARMNET63b1a086d5;hash_for_each_possible_rcu(
DATARMNET5413d6f8ec,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET54338da2ff
->DATARMNET2cb607d686){if(!DATARMNET5f3c9ed4da(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,DATARMNET54338da2ff))continue;return&DATARMNET63b1a086d5->
DATARMNET7ed5754a5c;}return NULL;}void DATARMNETf4e1a29dbc(void){struct
DATARMNET4f49486833*DATARMNET63b1a086d5;int DATARMNET5c2fd31d7b;rcu_read_lock();
hash_for_each_rcu(DATARMNET5413d6f8ec,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,
DATARMNETe8608dd267)hrtimer_cancel(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d);
rcu_read_unlock();}int DATARMNET9f106ed933(void){int DATARMNET268a8314cf;
DATARMNET268a8314cf=register_netdevice_notifier(&DATARMNET61d0113123);if(
DATARMNET268a8314cf)pr_err(
"\x25\x73\x28\x29\x3a\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);return DATARMNET268a8314cf;}int DATARMNETf56cbaa2b1(void){int
DATARMNET268a8314cf;DATARMNET268a8314cf=unregister_netdevice_notifier(&
DATARMNET61d0113123);if(DATARMNET268a8314cf)pr_err(
"\x25\x73\x28\x29\x3a\x20\x6e\x6f\x74\x69\x66\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);return DATARMNET268a8314cf;}

View File

@@ -0,0 +1,20 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
*
* RMNET WLAN connection management framework
*
*/
#ifndef DATARMNET8e473f1d7e
#define DATARMNET8e473f1d7e
#include <linux/types.h>
#include <linux/in6.h>
#include "rmnet_wlan.h"
struct DATARMNET0ca9d8ead7{union{__be32 DATARMNETdfe430c2d6;struct in6_addr
DATARMNET815cbb4bf5;};union{__be32 DATARMNET2cb607d686;struct in6_addr
DATARMNETc3f31215b7;};u8 DATARMNET0d956cc77a;};struct DATARMNET8d3c2559ca*
DATARMNET07f0e0f286(struct DATARMNET0ca9d8ead7*DATARMNET54338da2ff);void
DATARMNETf4e1a29dbc(void);int DATARMNET9f106ed933(void);int DATARMNETf56cbaa2b1(
void);
#endif

View File

@@ -0,0 +1,215 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET WLAN fragment handler framework
*
*/
#include <linux/types.h>
#include <linux/skbuff.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include <linux/rcupdate.h>
#include <linux/list.h>
#include <linux/rculist.h>
#include <linux/hashtable.h>
#include <linux/hrtimer.h>
#include "rmnet_wlan.h"
#include "rmnet_wlan_stats.h"
#include "rmnet_wlan_fragment.h"
#define DATARMNET598d70a086 ((0xeb7+1158-0x132d))
#define DATARMNETeaee3af609 (const_ilog2(DATARMNET598d70a086))
#define DATARMNET63a285d479 (110000000)
#define DATARMNETb7cc384fbe (10000000)
struct DATARMNETdadb4e2c65{union{__be32 DATARMNETdfe430c2d6;struct in6_addr
DATARMNET815cbb4bf5;};union{__be32 DATARMNET2cb607d686;struct in6_addr
DATARMNETc3f31215b7;};__be32 id;u16 DATARMNET611d08d671;u16 DATARMNETb65c469a15;
u8 DATARMNET0d956cc77a;};struct DATARMNET6f3b954709{struct hlist_node
DATARMNETe8608dd267;spinlock_t DATARMNET94b1f9ee09;struct list_head
DATARMNET0f34bf3ea9;struct rcu_head DATARMNET28bfe9e6ad;struct hrtimer
DATARMNET9f31ce5d2d;struct DATARMNETdadb4e2c65 DATARMNET54338da2ff;struct
DATARMNET8d3c2559ca*DATARMNET7ed5754a5c;};static DEFINE_SPINLOCK(
DATARMNET531b038fcd);static DEFINE_HASHTABLE(DATARMNET6e79f38051,
DATARMNETeaee3af609);static int DATARMNET24669a931d(const struct sk_buff*
DATARMNET543491eb0f,unsigned int*DATARMNETb65c469a15,int DATARMNETbfd7eb99fe,
unsigned short*DATARMNET0823b5e89c,int*DATARMNETfb0677cc3c){unsigned int
DATARMNETab6f68a65c=skb_network_offset(DATARMNET543491eb0f)+sizeof(struct
ipv6hdr);u8 nexthdr=ipv6_hdr(DATARMNET543491eb0f)->nexthdr;bool
DATARMNET1034358542;if(DATARMNET0823b5e89c)*DATARMNET0823b5e89c=
(0xd2d+202-0xdf7);if(*DATARMNETb65c469a15){struct ipv6hdr DATARMNET982faca395,*
DATARMNETc46d75f0b8;DATARMNETc46d75f0b8=skb_header_pointer(DATARMNET543491eb0f,*
DATARMNETb65c469a15,sizeof(DATARMNET982faca395),&DATARMNET982faca395);if(!
DATARMNETc46d75f0b8||(DATARMNETc46d75f0b8->version!=(0xd03+244-0xdf1)))return-
EBADMSG;DATARMNETab6f68a65c=*DATARMNETb65c469a15+sizeof(struct ipv6hdr);nexthdr=
DATARMNETc46d75f0b8->nexthdr;}do{struct ipv6_opt_hdr DATARMNETb18a0d17a5,*
DATARMNET7c56b76ea0;unsigned int DATARMNET4593c3f2c2;DATARMNET1034358542=(
nexthdr==DATARMNETbfd7eb99fe);if((!ipv6_ext_hdr(nexthdr))||nexthdr==NEXTHDR_NONE
){if(DATARMNETbfd7eb99fe<(0xd2d+202-0xdf7)||DATARMNET1034358542)break;return-
ENOENT;}DATARMNET7c56b76ea0=skb_header_pointer(DATARMNET543491eb0f,
DATARMNETab6f68a65c,sizeof(DATARMNETb18a0d17a5),&DATARMNETb18a0d17a5);if(!
DATARMNET7c56b76ea0)return-EBADMSG;if(nexthdr==NEXTHDR_ROUTING){struct
ipv6_rt_hdr DATARMNET942c8f7153,*DATARMNETb2650cb3cb;DATARMNETb2650cb3cb=
skb_header_pointer(DATARMNET543491eb0f,DATARMNETab6f68a65c,sizeof(
DATARMNET942c8f7153),&DATARMNET942c8f7153);if(!DATARMNETb2650cb3cb)return-
EBADMSG;if(DATARMNETfb0677cc3c&&(*DATARMNETfb0677cc3c&IP6_FH_F_SKIP_RH)&&
DATARMNETb2650cb3cb->segments_left==(0xd2d+202-0xdf7))DATARMNET1034358542=false;
}if(nexthdr==NEXTHDR_FRAGMENT){unsigned short DATARMNET3ed4d6b164;__be16*
DATARMNET748d4c9015;if(DATARMNETfb0677cc3c)*DATARMNETfb0677cc3c|=IP6_FH_F_FRAG;
DATARMNET748d4c9015=skb_header_pointer(DATARMNET543491eb0f,DATARMNETab6f68a65c+
offsetof(struct frag_hdr,frag_off),sizeof(DATARMNET3ed4d6b164),&
DATARMNET3ed4d6b164);if(!DATARMNET748d4c9015)return-EBADMSG;DATARMNET3ed4d6b164=
ntohs(*DATARMNET748d4c9015)&~(0xcfc+267-0xe00);if(DATARMNET3ed4d6b164){if(
DATARMNETbfd7eb99fe<(0xd2d+202-0xdf7)&&((!ipv6_ext_hdr(DATARMNET7c56b76ea0->
nexthdr))||DATARMNET7c56b76ea0->nexthdr==NEXTHDR_NONE)){if(DATARMNET0823b5e89c)*
DATARMNET0823b5e89c=DATARMNET3ed4d6b164;return DATARMNET7c56b76ea0->nexthdr;}if(
!DATARMNET1034358542)return-ENOENT;if(DATARMNET0823b5e89c)*DATARMNET0823b5e89c=
DATARMNET3ed4d6b164;break;}DATARMNET4593c3f2c2=(0xd35+210-0xdff);}else if(
nexthdr==NEXTHDR_AUTH){if(DATARMNETfb0677cc3c&&(*DATARMNETfb0677cc3c&
IP6_FH_F_AUTH)&&(DATARMNETbfd7eb99fe<(0xd2d+202-0xdf7)))break;
DATARMNET4593c3f2c2=ipv6_authlen(DATARMNET7c56b76ea0);}else DATARMNET4593c3f2c2=
ipv6_optlen(DATARMNET7c56b76ea0);if(!DATARMNET1034358542){nexthdr=
DATARMNET7c56b76ea0->nexthdr;DATARMNETab6f68a65c+=DATARMNET4593c3f2c2;}}while(!
DATARMNET1034358542);*DATARMNETb65c469a15=DATARMNETab6f68a65c;return nexthdr;}
static void DATARMNETc7c83f614f(struct DATARMNET6f3b954709*DATARMNET63b1a086d5,
bool DATARMNET7a9bcaf1a3){struct DATARMNET8d3c2559ca*DATARMNET54338da2ff;int(*
DATARMNET456ac0e8eb)(struct sk_buff*DATARMNET543491eb0f);struct sk_buff*
DATARMNET543491eb0f,*DATARMNET0386f6f82a;unsigned long DATARMNETfb0677cc3c;
DATARMNET456ac0e8eb=(DATARMNET7a9bcaf1a3)?netif_receive_skb:netif_rx;
DATARMNET54338da2ff=DATARMNET63b1a086d5->DATARMNET7ed5754a5c;spin_lock_irqsave(&
DATARMNET63b1a086d5->DATARMNET94b1f9ee09,DATARMNETfb0677cc3c);
list_for_each_entry_safe(DATARMNET543491eb0f,DATARMNET0386f6f82a,&
DATARMNET63b1a086d5->DATARMNET0f34bf3ea9,list){u32 DATARMNET248f120dd5;list_del(
&DATARMNET543491eb0f->list);DATARMNET543491eb0f->next=NULL;DATARMNET543491eb0f->
prev=NULL;if(IS_ERR_OR_NULL(DATARMNET54338da2ff)){DATARMNET456ac0e8eb(
DATARMNET543491eb0f);continue;}if(DATARMNET4899053671(DATARMNET543491eb0f,
DATARMNET54338da2ff)){DATARMNET248f120dd5=DATARMNETba232077da;
DATARMNET456ac0e8eb(DATARMNET543491eb0f);}else{DATARMNET248f120dd5=
DATARMNET7a58a5c1fc;}DATARMNET5ca94dbc3c(DATARMNET248f120dd5);}
spin_unlock_irqrestore(&DATARMNET63b1a086d5->DATARMNET94b1f9ee09,
DATARMNETfb0677cc3c);}static enum hrtimer_restart DATARMNETef43eced5f(struct
hrtimer*DATARMNET6e4292679f){struct DATARMNET6f3b954709*DATARMNET63b1a086d5;
unsigned long DATARMNETfb0677cc3c;spin_lock_irqsave(&DATARMNET531b038fcd,
DATARMNETfb0677cc3c);DATARMNET63b1a086d5=container_of(DATARMNET6e4292679f,struct
DATARMNET6f3b954709,DATARMNET9f31ce5d2d);hash_del_rcu(&DATARMNET63b1a086d5->
DATARMNETe8608dd267);DATARMNETc7c83f614f(DATARMNET63b1a086d5,false);kfree_rcu(
DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);spin_unlock_irqrestore(&
DATARMNET531b038fcd,DATARMNETfb0677cc3c);DATARMNET5ca94dbc3c(DATARMNETd691057b85
);return HRTIMER_NORESTART;}static bool DATARMNETc529ac78b2(struct
DATARMNETdadb4e2c65*DATARMNET75decd6f60,struct DATARMNETdadb4e2c65*
DATARMNET6745cad668){if(DATARMNET75decd6f60->DATARMNET0d956cc77a!=
DATARMNET6745cad668->DATARMNET0d956cc77a||DATARMNET75decd6f60->id!=
DATARMNET6745cad668->id)return false;if(DATARMNET75decd6f60->DATARMNET0d956cc77a
==(0xd11+230-0xdf3))return DATARMNET75decd6f60->DATARMNETdfe430c2d6==
DATARMNET6745cad668->DATARMNETdfe430c2d6&&DATARMNET75decd6f60->
DATARMNET2cb607d686==DATARMNET6745cad668->DATARMNET2cb607d686;return!
ipv6_addr_cmp(&DATARMNET75decd6f60->DATARMNET815cbb4bf5,&DATARMNET6745cad668->
DATARMNET815cbb4bf5)&&!ipv6_addr_cmp(&DATARMNET75decd6f60->DATARMNETc3f31215b7,&
DATARMNET6745cad668->DATARMNETc3f31215b7);}static struct DATARMNET6f3b954709*
DATARMNET52b387f6cd(struct DATARMNETdadb4e2c65*DATARMNET54338da2ff){struct
DATARMNET6f3b954709*DATARMNET63b1a086d5;unsigned long DATARMNETfb0677cc3c;
spin_lock_irqsave(&DATARMNET531b038fcd,DATARMNETfb0677cc3c);
hash_for_each_possible_rcu(DATARMNET6e79f38051,DATARMNET63b1a086d5,
DATARMNETe8608dd267,DATARMNET54338da2ff->id){if(DATARMNETc529ac78b2(
DATARMNET54338da2ff,&DATARMNET63b1a086d5->DATARMNET54338da2ff))goto
DATARMNETbf4095f79e;}DATARMNET63b1a086d5=kzalloc(sizeof(*DATARMNET63b1a086d5),
GFP_ATOMIC);if(!DATARMNET63b1a086d5)goto DATARMNETbf4095f79e;spin_lock_init(&
DATARMNET63b1a086d5->DATARMNET94b1f9ee09);INIT_LIST_HEAD(&DATARMNET63b1a086d5->
DATARMNET0f34bf3ea9);memcpy(&DATARMNET63b1a086d5->DATARMNET54338da2ff,
DATARMNET54338da2ff,sizeof(*DATARMNET54338da2ff));hrtimer_init(&
DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,CLOCK_MONOTONIC,HRTIMER_MODE_REL);
DATARMNET63b1a086d5->DATARMNET9f31ce5d2d.function=DATARMNETef43eced5f;
hrtimer_start(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,DATARMNET63a285d479,
HRTIMER_MODE_REL);INIT_HLIST_NODE(&DATARMNET63b1a086d5->DATARMNETe8608dd267);
hash_add_rcu(DATARMNET6e79f38051,&DATARMNET63b1a086d5->DATARMNETe8608dd267,
DATARMNET54338da2ff->id);DATARMNETbf4095f79e:spin_unlock_irqrestore(&
DATARMNET531b038fcd,DATARMNETfb0677cc3c);return DATARMNET63b1a086d5;}static int
DATARMNET9d6ad3b16f(struct sk_buff*DATARMNET543491eb0f,struct
DATARMNETb89ecedefc*DATARMNET3396919a68,struct DATARMNETdadb4e2c65*
DATARMNET54338da2ff,struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e)__must_hold(
RCU){struct DATARMNET6f3b954709*DATARMNET63b1a086d5;int DATARMNET61c2303133=
(0xd26+209-0xdf6);DATARMNET5ca94dbc3c(DATARMNETd8273aa7e1);DATARMNET63b1a086d5=
DATARMNET52b387f6cd(DATARMNET54338da2ff);if(!DATARMNET63b1a086d5){
DATARMNET61c2303133=(-(0xd26+209-0xdf6));goto DATARMNETbf4095f79e;}if(unlikely(!
hrtimer_is_queued(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d))){goto
DATARMNETbf4095f79e;}else if(hrtimer_get_remaining(&DATARMNET63b1a086d5->
DATARMNET9f31ce5d2d)<=DATARMNETb7cc384fbe){goto DATARMNETbf4095f79e;}
hrtimer_start(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,DATARMNET63a285d479,
HRTIMER_MODE_REL);if(DATARMNET63b1a086d5->DATARMNET7ed5754a5c){if(IS_ERR(
DATARMNET63b1a086d5->DATARMNET7ed5754a5c))goto DATARMNETbf4095f79e;if(!
DATARMNET4899053671(DATARMNET543491eb0f,DATARMNET63b1a086d5->DATARMNET7ed5754a5c
)){DATARMNET5ca94dbc3c(DATARMNET7a58a5c1fc);DATARMNET61c2303133=
(0xd2d+202-0xdf7);goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c(
DATARMNETba232077da);goto DATARMNETbf4095f79e;}if(DATARMNET54338da2ff->
DATARMNETb65c469a15){unsigned long DATARMNETfb0677cc3c;spin_lock_irqsave(&
DATARMNET63b1a086d5->DATARMNET94b1f9ee09,DATARMNETfb0677cc3c);list_add_tail(&
DATARMNET543491eb0f->list,&DATARMNET63b1a086d5->DATARMNET0f34bf3ea9);
spin_unlock_irqrestore(&DATARMNET63b1a086d5->DATARMNET94b1f9ee09,
DATARMNETfb0677cc3c);DATARMNET61c2303133=(0xd2d+202-0xdf7);DATARMNET5ca94dbc3c(
DATARMNETe75ad1a949);goto DATARMNETbf4095f79e;}if(DATARMNET3396919a68->
DATARMNET4924e79411==IPPROTO_TCP||DATARMNET3396919a68->DATARMNET4924e79411==
IPPROTO_UDP){struct udphdr*DATARMNET75be5f3406=(struct udphdr*)(
DATARMNET543491eb0f->data+DATARMNET54338da2ff->DATARMNET611d08d671);
DATARMNET3396919a68->DATARMNETf0d9de7e2f=DATARMNET75be5f3406->dest;if(
DATARMNETa8b2566e6a(DATARMNET543491eb0f,DATARMNET3396919a68,DATARMNET54338da2ff
->DATARMNET611d08d671)){if(DATARMNET0a4704e5e0(DATARMNET3396919a68)){kfree_skb(
DATARMNET543491eb0f);DATARMNET61c2303133=(0xd2d+202-0xdf7);DATARMNET5ca94dbc3c(
DATARMNET0981317411);goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c(
DATARMNETd1ad664d00);goto DATARMNET07fc49caf2;}}else if(DATARMNET3396919a68->
DATARMNET4924e79411==IPPROTO_ESP){struct ip_esp_hdr*DATARMNET73ee6a7020=(struct
ip_esp_hdr*)(DATARMNET543491eb0f->data+DATARMNET54338da2ff->DATARMNET611d08d671)
;DATARMNET3396919a68->DATARMNET906b2ee561=DATARMNET73ee6a7020->spi;}if(
DATARMNET4eafcdee07(DATARMNET3396919a68)){u32 DATARMNET248f120dd5;
DATARMNET63b1a086d5->DATARMNET7ed5754a5c=DATARMNET2d4b4cfc9e;if(!
DATARMNET4899053671(DATARMNET543491eb0f,DATARMNET2d4b4cfc9e)){
DATARMNET248f120dd5=DATARMNET7a58a5c1fc;DATARMNET61c2303133=(0xd2d+202-0xdf7);}
else{DATARMNET248f120dd5=DATARMNETba232077da;}DATARMNET5ca94dbc3c(
DATARMNET248f120dd5);DATARMNETc7c83f614f(DATARMNET63b1a086d5,true);goto
DATARMNETbf4095f79e;}DATARMNET07fc49caf2:DATARMNET63b1a086d5->
DATARMNET7ed5754a5c=ERR_PTR(-EINVAL);DATARMNETc7c83f614f(DATARMNET63b1a086d5,
true);DATARMNETbf4095f79e:return DATARMNET61c2303133;}int DATARMNET579f75aa50(
struct sk_buff*DATARMNET543491eb0f,int DATARMNET611d08d671,struct
DATARMNETb89ecedefc*DATARMNET3396919a68,struct DATARMNET8d3c2559ca*
DATARMNET2d4b4cfc9e)__must_hold(RCU){struct DATARMNETdadb4e2c65
DATARMNET54338da2ff={};struct iphdr*DATARMNET86f1f2cdc9=ip_hdr(
DATARMNET543491eb0f);if(DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_TCP&&
DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_UDP&&DATARMNET3396919a68->
DATARMNET4924e79411!=IPPROTO_ESP)return-(0xd26+209-0xdf6);DATARMNET54338da2ff.
DATARMNET0d956cc77a=(0xd11+230-0xdf3);DATARMNET54338da2ff.DATARMNETdfe430c2d6=
DATARMNET86f1f2cdc9->saddr;DATARMNET54338da2ff.DATARMNET2cb607d686=
DATARMNET86f1f2cdc9->daddr;DATARMNET54338da2ff.id=htonl((u32)ntohs(
DATARMNET86f1f2cdc9->id));DATARMNET54338da2ff.DATARMNETb65c469a15=htons(
DATARMNET86f1f2cdc9->frag_off)&IP_OFFSET;DATARMNET54338da2ff.DATARMNET611d08d671
=(u16)DATARMNET611d08d671;return DATARMNET9d6ad3b16f(DATARMNET543491eb0f,
DATARMNET3396919a68,&DATARMNET54338da2ff,DATARMNET2d4b4cfc9e);}int
DATARMNETaca8ca54ed(struct sk_buff*DATARMNET543491eb0f,int DATARMNET611d08d671,
struct DATARMNETb89ecedefc*DATARMNET3396919a68,struct DATARMNET8d3c2559ca*
DATARMNET2d4b4cfc9e)__must_hold(RCU){struct DATARMNETdadb4e2c65
DATARMNET54338da2ff={};struct ipv6hdr*DATARMNETbf55123e5b=ipv6_hdr(
DATARMNET543491eb0f);struct frag_hdr*frag_hdr;unsigned int DATARMNET7b34b7b5be;
if(DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_TCP&&DATARMNET3396919a68->
DATARMNET4924e79411!=IPPROTO_UDP&&DATARMNET3396919a68->DATARMNET4924e79411!=
IPPROTO_ESP&&DATARMNET3396919a68->DATARMNET4924e79411!=NEXTHDR_FRAGMENT)return-
(0xd26+209-0xdf6);if(DATARMNET24669a931d(DATARMNET543491eb0f,&
DATARMNET7b34b7b5be,NEXTHDR_FRAGMENT,NULL,NULL)<(0xd2d+202-0xdf7))return-
(0xd26+209-0xdf6);frag_hdr=(struct frag_hdr*)(DATARMNET543491eb0f->data+
DATARMNET7b34b7b5be);DATARMNET54338da2ff.DATARMNET0d956cc77a=(0xd03+244-0xdf1);
memcpy(&DATARMNET54338da2ff.DATARMNET815cbb4bf5,&DATARMNETbf55123e5b->saddr,
sizeof(DATARMNETbf55123e5b->saddr));memcpy(&DATARMNET54338da2ff.
DATARMNETc3f31215b7,&DATARMNETbf55123e5b->daddr,sizeof(DATARMNETbf55123e5b->
daddr));DATARMNET54338da2ff.id=frag_hdr->identification;DATARMNET54338da2ff.
DATARMNETb65c469a15=htons(frag_hdr->frag_off)&IP6_OFFSET;DATARMNET54338da2ff.
DATARMNET611d08d671=(u16)DATARMNET611d08d671;if(DATARMNET3396919a68->
DATARMNET4924e79411==NEXTHDR_FRAGMENT)DATARMNET54338da2ff.DATARMNET611d08d671+=
sizeof(*frag_hdr);return DATARMNET9d6ad3b16f(DATARMNET543491eb0f,
DATARMNET3396919a68,&DATARMNET54338da2ff,DATARMNET2d4b4cfc9e);}void
DATARMNET8c0e010dfb(void){struct DATARMNET6f3b954709*DATARMNET63b1a086d5;int
DATARMNET5c2fd31d7b;rcu_read_lock();hash_for_each_rcu(DATARMNET6e79f38051,
DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,DATARMNETe8608dd267)hrtimer_cancel(&
DATARMNET63b1a086d5->DATARMNET9f31ce5d2d);rcu_read_unlock();}void
DATARMNETedae8262e1(struct DATARMNET8d3c2559ca*DATARMNET54338da2ff){struct
DATARMNET6f3b954709*DATARMNET63b1a086d5;int DATARMNET5c2fd31d7b;rcu_read_lock();
hash_for_each_rcu(DATARMNET6e79f38051,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,
DATARMNETe8608dd267){if(DATARMNET63b1a086d5->DATARMNET7ed5754a5c==
DATARMNET54338da2ff)DATARMNET63b1a086d5->DATARMNET7ed5754a5c=ERR_PTR(-EINVAL);}
rcu_read_unlock();}

View File

@@ -0,0 +1,20 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
*
* RMNET WLAN fragment handler framework
*
*/
#ifndef DATARMNET836e6c471b
#define DATARMNET836e6c471b
#include <linux/skbuff.h>
#include "rmnet_wlan.h"
int DATARMNET579f75aa50(struct sk_buff*DATARMNET543491eb0f,int
DATARMNET611d08d671,struct DATARMNETb89ecedefc*DATARMNET3396919a68,struct
DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e);int DATARMNETaca8ca54ed(struct sk_buff*
DATARMNET543491eb0f,int DATARMNET611d08d671,struct DATARMNETb89ecedefc*
DATARMNET3396919a68,struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e);void
DATARMNET8c0e010dfb(void);void DATARMNETedae8262e1(struct DATARMNET8d3c2559ca*
DATARMNET54338da2ff);
#endif

View File

@@ -0,0 +1,258 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET WLAN Generic Netlink
*
*/
#include <net/genetlink.h>
#include <net/netlink.h>
#include <linux/module.h>
#include <linux/if.h>
#include <linux/inet.h>
#include <linux/netdevice.h>
#include "rmnet_wlan_genl.h"
#include "rmnet_wlan.h"
#include "rmnet_wlan_connection.h"
#define DATARMNET5fe2c6571f (0xf07+1104-0x131d)
static struct nla_policy DATARMNET19c5fce390[DATARMNETf6bbad94a5+
(0xd26+209-0xdf6)]={[DATARMNET8c062d7709]=NLA_POLICY_EXACT_LEN(sizeof(struct
DATARMNETb89ecedefc)),};static struct nla_policy DATARMNET0381a65e93[
DATARMNETebcc30fe04+(0xd26+209-0xdf6)]={[DATARMNET4e9cd7b8bf]=
NLA_POLICY_NESTED_ARRAY(DATARMNET19c5fce390),[DATARMNETb8afde4a5a]={.type=
NLA_NUL_STRING,.len=IFNAMSIZ-(0xd26+209-0xdf6),},[DATARMNETea4b56dc2b]={.type=
NLA_NUL_STRING,.len=INET6_ADDRSTRLEN,},[DATARMNET8bf80e4b66]={.type=
NLA_NUL_STRING,.len=IFNAMSIZ-(0xd26+209-0xdf6),},[DATARMNET44a9a789aa]={.type=
NLA_U16,},[DATARMNET149cafb1b7]={.type=NLA_U8,},};
#define DATARMNET58eca5265b(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e) \
{ \
.cmd = DATARMNET5aeb0ef9bc, \
.doit = DATARMNETbd9859b58e, \
}
static struct genl_family DATARMNET61e8f41aae;static int DATARMNET72501635c8(
struct sk_buff*DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct
nlattr*DATARMNET759bcdbf61[DATARMNETf6bbad94a5+(0xd26+209-0xdf6)];struct
DATARMNETb89ecedefc*DATARMNETcadc2ef9aa;struct nlattr*DATARMNETef7cdd7b6b;u32
DATARMNETef77661260=(0xd2d+202-0xdf7);int DATARMNET4b119c4ff3;int
DATARMNETb14e52a504=(0xd2d+202-0xdf7);if(!DATARMNET54338da2ff->attrs[
DATARMNET4e9cd7b8bf]){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x75\x70\x70\x6c\x79\x20\x74\x75\x70\x6c\x65\x20\x69\x6e\x66\x6f"
);return-EINVAL;}nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff->
attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3)DATARMNETef77661260++;
DATARMNETcadc2ef9aa=kcalloc(DATARMNETef77661260,sizeof(*DATARMNETcadc2ef9aa),
GFP_KERNEL);if(!DATARMNETcadc2ef9aa){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4b\x65\x72\x6e\x65\x6c\x20\x4f\x4f\x4d");return-ENOMEM;}DATARMNETef77661260=
(0xd2d+202-0xdf7);nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff->
attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3){struct DATARMNETb89ecedefc*
DATARMNET3396919a68;DATARMNETb14e52a504=nla_parse_nested(DATARMNET759bcdbf61,
DATARMNETf6bbad94a5,DATARMNETef7cdd7b6b,DATARMNET19c5fce390,DATARMNET54338da2ff
->extack);if(DATARMNETb14e52a504)goto DATARMNETbf4095f79e;if(!
DATARMNET759bcdbf61[DATARMNET8c062d7709]){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x74\x75\x70\x6c\x65\x20\x65\x6e\x74\x72\x79"
);goto DATARMNETbf4095f79e;}DATARMNET3396919a68=nla_data(DATARMNET759bcdbf61[
DATARMNET8c062d7709]);if(DATARMNET3396919a68->DATARMNET0d956cc77a!=
(0xd11+230-0xdf3)&&DATARMNET3396919a68->DATARMNET0d956cc77a!=(0xd03+244-0xdf1)){
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x49\x6e\x76\x61\x6c\x69\x64\x20\x49\x50\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c");
goto DATARMNETbf4095f79e;}if(DATARMNET3396919a68->DATARMNET4924e79411!=
IPPROTO_TCP&&DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_UDP&&
DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_ESP){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x49\x6e\x76\x61\x6c\x69\x64\x20\x74\x72\x61\x6e\x73\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c"
);goto DATARMNETbf4095f79e;}memcpy(&DATARMNETcadc2ef9aa[DATARMNETef77661260],
DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));DATARMNETef77661260++;}
DATARMNETb14e52a504=DATARMNET53f12a0f7d(DATARMNETcadc2ef9aa,DATARMNETef77661260,
DATARMNET54338da2ff);DATARMNETbf4095f79e:kfree(DATARMNETcadc2ef9aa);return
DATARMNETb14e52a504;}static int DATARMNET41dd9b14ab(struct sk_buff*
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
DATARMNET759bcdbf61[DATARMNETf6bbad94a5+(0xd26+209-0xdf6)];struct
DATARMNETb89ecedefc*DATARMNETcadc2ef9aa;struct nlattr*DATARMNETef7cdd7b6b;u32
DATARMNETef77661260=(0xd2d+202-0xdf7);int DATARMNET4b119c4ff3;int
DATARMNETb14e52a504;if(!DATARMNET54338da2ff->attrs[DATARMNET4e9cd7b8bf]){
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x75\x70\x70\x6c\x79\x20\x74\x75\x70\x6c\x65\x20\x69\x6e\x66\x6f"
);return-EINVAL;}nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff->
attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3)DATARMNETef77661260++;
DATARMNETcadc2ef9aa=kcalloc(DATARMNETef77661260,sizeof(*DATARMNETcadc2ef9aa),
GFP_KERNEL);if(!DATARMNETcadc2ef9aa){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4b\x65\x72\x6e\x65\x6c\x20\x4f\x4f\x4d");return-ENOMEM;}DATARMNETef77661260=
(0xd2d+202-0xdf7);nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff->
attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3){struct DATARMNETb89ecedefc*
DATARMNET3396919a68;DATARMNETb14e52a504=nla_parse_nested(DATARMNET759bcdbf61,
DATARMNETf6bbad94a5,DATARMNETef7cdd7b6b,DATARMNET19c5fce390,DATARMNET54338da2ff
->extack);if(DATARMNETb14e52a504)goto DATARMNETbf4095f79e;if(!
DATARMNET759bcdbf61[DATARMNET8c062d7709]){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x74\x75\x70\x6c\x65\x20\x65\x6e\x74\x72\x79"
);DATARMNETb14e52a504=-EINVAL;goto DATARMNETbf4095f79e;}DATARMNET3396919a68=
nla_data(DATARMNET759bcdbf61[DATARMNET8c062d7709]);memcpy(&DATARMNETcadc2ef9aa[
DATARMNETef77661260],DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));
DATARMNETef77661260++;}DATARMNETb14e52a504=DATARMNET07f6485c9b(
DATARMNETcadc2ef9aa,DATARMNETef77661260,DATARMNET54338da2ff);DATARMNETbf4095f79e
:kfree(DATARMNETcadc2ef9aa);return DATARMNETb14e52a504;}static int
DATARMNETf1fa473089(struct sk_buff*DATARMNET543491eb0f,struct genl_info*
DATARMNET54338da2ff){struct nlattr*DATARMNETef7cdd7b6b;int DATARMNET9954a624ac;
int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[DATARMNETb8afde4a5a]||!
DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x64\x65\x76\x69\x63\x65\x20\x61\x6e\x64\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x69\x6e\x66\x6f"
);return-EINVAL;}DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
DATARMNETb8afde4a5a];DATARMNET9954a624ac=nla_get_u8(DATARMNET54338da2ff->attrs[
DATARMNET149cafb1b7]);if(DATARMNET9954a624ac!=DATARMNET356f2a237e&&
DATARMNET9954a624ac!=DATARMNET45ee632553&&DATARMNET9954a624ac!=
DATARMNET9bfbc31cd6){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4e\x65\x74\x77\x6f\x72\x6b\x20\x74\x79\x70\x65\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x21"
);return-EINVAL;}if(DATARMNET9954a624ac==DATARMNET45ee632553){
DATARMNET268a8314cf=DATARMNET92e5468fc5(nla_data(DATARMNETef7cdd7b6b),
DATARMNET54338da2ff);}else{DATARMNET268a8314cf=DATARMNET97b2388e63(nla_data(
DATARMNETef7cdd7b6b),DATARMNET54338da2ff);}return DATARMNET268a8314cf;}static
int DATARMNETcd9478470c(struct sk_buff*DATARMNET543491eb0f,struct genl_info*
DATARMNET54338da2ff){struct nlattr*DATARMNETef7cdd7b6b;int DATARMNET9954a624ac;
int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[DATARMNETb8afde4a5a]||!
DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
);return-EINVAL;}DATARMNET9954a624ac=nla_get_u8(DATARMNET54338da2ff->attrs[
DATARMNET149cafb1b7]);DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
DATARMNETb8afde4a5a];if(DATARMNET9954a624ac!=DATARMNET356f2a237e&&
DATARMNET9954a624ac!=DATARMNET45ee632553&&DATARMNET9954a624ac!=
DATARMNET9bfbc31cd6){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4e\x65\x74\x77\x6f\x72\x6b\x20\x74\x79\x70\x65\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x21"
);return-EINVAL;}if(DATARMNET9954a624ac==DATARMNET45ee632553){
DATARMNET268a8314cf=DATARMNET9d7bb9a63d(nla_data(DATARMNETef7cdd7b6b),
DATARMNET54338da2ff);}else{DATARMNET268a8314cf=DATARMNETa903cd5994(nla_data(
DATARMNETef7cdd7b6b),DATARMNET54338da2ff);}if(DATARMNET268a8314cf)
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
);return DATARMNET268a8314cf;}static int DATARMNETb86993aefb(struct sk_buff*
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct
DATARMNET8d3c2559ca DATARMNET2d4b4cfc9e={};struct nlattr*DATARMNETef7cdd7b6b;
char*DATARMNETd7f4d7c495;int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[
DATARMNETea4b56dc2b]||!DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66]||!
DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x2c\x20\x61\x64\x64\x72\x65\x73\x73\x2c\x20\x61\x6e\x64\x20\x6e\x65\x74\x77\x6f\x72\x6b"
);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET9954a624ac=nla_get_u8(
DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]);DATARMNETef7cdd7b6b=
DATARMNET54338da2ff->attrs[DATARMNETea4b56dc2b];DATARMNETd7f4d7c495=nla_data(
DATARMNETef7cdd7b6b);if(strchr(DATARMNETd7f4d7c495,DATARMNET5fe2c6571f)){if(
in6_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),DATARMNET2d4b4cfc9e.
DATARMNET5700daac01.s6_addr,-(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x36"
);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else
{if(in4_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),(u8*)&
DATARMNET2d4b4cfc9e.DATARMNET0dc14167a1,-(0xd26+209-0xdf6),NULL)!=
(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x34"
);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}
DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66];
DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f=dev_get_by_name(genl_info_net(
DATARMNET54338da2ff),nla_data(DATARMNETef7cdd7b6b));if(!DATARMNET2d4b4cfc9e.
DATARMNET57656f6f2f){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x49\x6e\x76\x61\x6c\x69\x64\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x61\x6d\x65"
);return-EINVAL;}DATARMNET268a8314cf=DATARMNET947eb110d2(&DATARMNET2d4b4cfc9e,
DATARMNET54338da2ff);dev_put(DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f);return
DATARMNET268a8314cf;}static int DATARMNETc175a08219(struct sk_buff*
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct
DATARMNET8d3c2559ca DATARMNET2d4b4cfc9e={};struct nlattr*DATARMNETef7cdd7b6b;
char*DATARMNETd7f4d7c495;int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[
DATARMNETea4b56dc2b]||!DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66]||!
DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x61\x6e\x64\x20\x61\x64\x64\x72\x65\x73\x73"
);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET9954a624ac=nla_get_u8(
DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]);DATARMNETef7cdd7b6b=
DATARMNET54338da2ff->attrs[DATARMNETea4b56dc2b];DATARMNETd7f4d7c495=nla_data(
DATARMNETef7cdd7b6b);if(strchr(DATARMNETd7f4d7c495,DATARMNET5fe2c6571f)){if(
in6_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),DATARMNET2d4b4cfc9e.
DATARMNET5700daac01.s6_addr,-(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x36"
);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else
{if(in4_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),(u8*)&
DATARMNET2d4b4cfc9e.DATARMNET0dc14167a1,-(0xd26+209-0xdf6),NULL)!=
(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x34"
);return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}
DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66];
DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f=dev_get_by_name(genl_info_net(
DATARMNET54338da2ff),nla_data(DATARMNETef7cdd7b6b));if(!DATARMNET2d4b4cfc9e.
DATARMNET57656f6f2f){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x49\x6e\x76\x61\x6c\x69\x64\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x61\x6d\x65"
);return-EINVAL;}DATARMNET268a8314cf=DATARMNETb8b35fdc18(&DATARMNET2d4b4cfc9e,
DATARMNET54338da2ff);dev_put(DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f);return
DATARMNET268a8314cf;}static int DATARMNETc5f6c112ec(struct sk_buff*
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74"
);return-EINVAL;}return DATARMNET8d5a5a7047(nla_get_be16(DATARMNETef7cdd7b6b),
DATARMNET54338da2ff);}static int DATARMNETa6aec23397(struct sk_buff*
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74"
);return-EINVAL;}return DATARMNETc97c6a4265(nla_get_be16(DATARMNETef7cdd7b6b),
DATARMNET54338da2ff);}static int DATARMNET16add73734(struct sk_buff*
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74"
);return-EINVAL;}return DATARMNET59b8376224(nla_get_be16(DATARMNETef7cdd7b6b),
DATARMNET54338da2ff);}static int DATARMNETb318ed4796(struct sk_buff*
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74"
);return-EINVAL;}return DATARMNET0b12e969c5(nla_get_be16(DATARMNETef7cdd7b6b),
DATARMNET54338da2ff);}static int DATARMNETa4773cb837(struct sk_buff*
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){(void)
DATARMNET543491eb0f;(void)DATARMNET54338da2ff;DATARMNET078f6bd384();return
(0xd2d+202-0xdf7);}static int DATARMNETc0cc5d08ba(struct sk_buff*
DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct sk_buff*
DATARMNET49b2094b56=NULL;int DATARMNET268a8314cf=(0xd2d+202-0xdf7);
DATARMNET268a8314cf=DATARMNETe14c875532(&DATARMNET49b2094b56,&
DATARMNET61e8f41aae,DATARMNET54338da2ff);if(DATARMNET268a8314cf)goto
DATARMNETbf4095f79e;if(!DATARMNET49b2094b56){DATARMNET268a8314cf=-EINVAL;goto
DATARMNETbf4095f79e;}genlmsg_reply(DATARMNET49b2094b56,DATARMNET54338da2ff);
DATARMNETbf4095f79e:return DATARMNET268a8314cf;}static const struct genl_ops
DATARMNETf9df19988d[]={DATARMNET58eca5265b(DATARMNET0604500302,
DATARMNET72501635c8),DATARMNET58eca5265b(DATARMNET91becfb9ac,DATARMNET41dd9b14ab
),DATARMNET58eca5265b(DATARMNET14a3625b43,DATARMNETf1fa473089),
DATARMNET58eca5265b(DATARMNET4478d3511b,DATARMNETcd9478470c),DATARMNET58eca5265b
(DATARMNETc2d5a4e103,DATARMNETb86993aefb),DATARMNET58eca5265b(
DATARMNET18145b00f6,DATARMNETc175a08219),DATARMNET58eca5265b(DATARMNETb8857fe6d9
,DATARMNETc5f6c112ec),DATARMNET58eca5265b(DATARMNET6d50a30ec2,
DATARMNETa6aec23397),DATARMNET58eca5265b(DATARMNET2e5d7ed755,DATARMNETa4773cb837
),DATARMNET58eca5265b(DATARMNETd37aaf8b58,DATARMNET16add73734),
DATARMNET58eca5265b(DATARMNET3626d362d4,DATARMNETb318ed4796),DATARMNET58eca5265b
(DATARMNET7c479706fb,DATARMNETc0cc5d08ba),};static struct genl_family
DATARMNET61e8f41aae={.name=DATARMNET040266f460,.version=DATARMNET7c442b83bb,.
maxattr=DATARMNETebcc30fe04,.policy=DATARMNET0381a65e93,.ops=DATARMNETf9df19988d
,.n_ops=ARRAY_SIZE(DATARMNETf9df19988d),};static int __init DATARMNET7eb0fa5c8f(
void){int DATARMNET61c2303133=(0xd2d+202-0xdf7);pr_info(
"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67" "\n"
,__func__);DATARMNET61c2303133=genl_register_family(&DATARMNET61e8f41aae);if(
DATARMNET61c2303133){pr_err(
"\x25\x73\x28\x29\x3a\x20\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
,__func__,DATARMNET61c2303133);goto DATARMNET27d4697979;}DATARMNET61c2303133=
DATARMNET9f106ed933();if(DATARMNET61c2303133){pr_err(
"\x25\x73\x28\x29\x3a\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x6d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x20\x69\x6e\x69\x74\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
,__func__,DATARMNET61c2303133);goto DATARMNETb042feb7e2;}return(0xd2d+202-0xdf7)
;DATARMNETb042feb7e2:genl_unregister_family(&DATARMNET61e8f41aae);
DATARMNET27d4697979:return DATARMNET61c2303133;}static void __exit
DATARMNET7a381832d5(void){int DATARMNET61c2303133;pr_info(
"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x20\x65\x78\x69\x74\x69\x6e\x67" "\n"
,__func__);DATARMNET61c2303133=DATARMNETf56cbaa2b1();if(DATARMNET61c2303133)
pr_err(
"\x25\x73\x28\x29\x3a\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x6d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x20\x64\x65\x2d\x69\x6e\x69\x74\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
,__func__,DATARMNET61c2303133);DATARMNETfae36afa03();DATARMNET61c2303133=
genl_unregister_family(&DATARMNET61e8f41aae);if(DATARMNET61c2303133)pr_err(
"\x25\x73\x28\x29\x3a\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
,__func__,DATARMNET61c2303133);}MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");
module_init(DATARMNET7eb0fa5c8f);module_exit(DATARMNET7a381832d5);

View File

@@ -0,0 +1,25 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET WLAN Generic netlink
*
*/
#ifndef DATARMNET3819523922
#define DATARMNET3819523922
#define DATARMNET7c442b83bb (0xd26+209-0xdf6)
#define DATARMNET040266f460 "\x52\x4d\x4e\x45\x54\x5f\x57\x4c\x41\x4e"
enum{DATARMNET6ea2b7cfbe,DATARMNET0604500302,DATARMNET91becfb9ac,
DATARMNET14a3625b43,DATARMNET4478d3511b,DATARMNETc2d5a4e103,DATARMNET18145b00f6,
DATARMNETb8857fe6d9,DATARMNET6d50a30ec2,DATARMNET2e5d7ed755,DATARMNETd37aaf8b58,
DATARMNET3626d362d4,DATARMNET7c479706fb,DATARMNETce1982dccc,};enum{
DATARMNET09a5930cdf,DATARMNET4e9cd7b8bf,DATARMNETb8afde4a5a,DATARMNETea4b56dc2b,
DATARMNET8bf80e4b66,DATARMNET44a9a789aa,DATARMNET149cafb1b7,DATARMNET0bfbea52c0,
};
#define DATARMNETebcc30fe04 (DATARMNET0bfbea52c0 - (0xd26+209-0xdf6))
enum{DATARMNET0dcb7acdac,DATARMNET8c062d7709,DATARMNET93b5e3666d,};
#define DATARMNETf6bbad94a5 (DATARMNET93b5e3666d - (0xd26+209-0xdf6))
#define DATARMNET99ac48d88b (DATARMNETdcafdec32a - (0xd26+209-0xdf6))
#endif

View File

@@ -0,0 +1,537 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET WLAN handler framework
*
*/
#include <linux/types.h>
#include <linux/skbuff.h>
#include <net/genetlink.h>
#include <net/netlink.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include <net/tcp.h>
#include <linux/rcupdate.h>
#include <linux/list.h>
#include <linux/rculist.h>
#include <linux/mutex.h>
#include <linux/hashtable.h>
#include <linux/log2.h>
#include <linux/netdevice.h>
#include "rmnet_wlan_genl.h"
#include "rmnet_wlan.h"
#include "rmnet_wlan_stats.h"
#include "rmnet_wlan_fragment.h"
#include "rmnet_wlan_connection.h"
static char*verinfo[]={"\x61\x33\x31\x34\x63\x62\x32\x35",
"\x34\x36\x35\x36\x30\x62\x31\x34","\x30\x65\x33\x34\x62\x31\x39\x31",
"\x62\x31\x62\x63\x64\x66\x66\x61","\x61\x33\x33\x33\x36\x37\x61\x31",
"\x64\x35\x39\x30\x61\x33\x33\x63","\x33\x35\x36\x63\x34\x39\x31\x63",
"\x34\x33\x62\x62\x38\x34\x39\x39","\x32\x66\x33\x36\x30\x30\x31\x34",
"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x64\x32\x32\x34\x33\x36\x33",
"\x61\x34\x31\x63\x39\x64\x37\x62","\x38\x66\x32\x66\x65\x64\x32\x66",
"\x63\x30\x32\x62\x61\x39\x30\x65"};module_param_array(verinfo,charp,NULL,
(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
);
#define DATARMNETaf49b04806 ((0xeb7+1158-0x132d))
#define DATARMNET6b4ac8224c (const_ilog2(DATARMNETaf49b04806))
struct DATARMNET745f724205{struct hlist_node DATARMNETe8608dd267;struct rcu_head
DATARMNET28bfe9e6ad;struct DATARMNETb89ecedefc DATARMNET54338da2ff;};struct
DATARMNETda06413d0d{struct hlist_node DATARMNETe8608dd267;struct rcu_head
DATARMNET28bfe9e6ad;__be16 DATARMNETf0d9de7e2f;};static DEFINE_MUTEX(
DATARMNET63a2b7773e);static DEFINE_HASHTABLE(DATARMNET1903907456,
DATARMNET6b4ac8224c);static DEFINE_MUTEX(DATARMNETf46fb02ac6);static
DEFINE_HASHTABLE(DATARMNET78ed39f13b,DATARMNET6b4ac8224c);static DEFINE_MUTEX(
DATARMNET954bef55d0);static DEFINE_HASHTABLE(DATARMNET133502ca0e,
DATARMNET6b4ac8224c);static DEFINE_HASHTABLE(DATARMNET665d2f133f,
DATARMNET6b4ac8224c);static char DATARMNET30500ba48c[IFNAMSIZ];static char
DATARMNET755f0f0df8[IFNAMSIZ];static u32 DATARMNET7c77d83017;static bool
DATARMNET1e31b22eff(struct DATARMNETb89ecedefc*DATARMNETae0905b0b3,struct
DATARMNETb89ecedefc*DATARMNETdb49f21565){if(DATARMNETae0905b0b3->
DATARMNET0d956cc77a!=DATARMNETdb49f21565->DATARMNET0d956cc77a||
DATARMNETae0905b0b3->DATARMNET4924e79411!=DATARMNETdb49f21565->
DATARMNET4924e79411)return false;if(DATARMNETae0905b0b3->DATARMNET0d956cc77a==
IPPROTO_ESP)return DATARMNETae0905b0b3->DATARMNET906b2ee561==DATARMNETdb49f21565
->DATARMNET906b2ee561;return DATARMNETae0905b0b3->DATARMNETf0d9de7e2f==
DATARMNETdb49f21565->DATARMNETf0d9de7e2f;}static int DATARMNET0b72d312f9(struct
DATARMNETb89ecedefc*DATARMNET3396919a68,struct genl_info*DATARMNET54338da2ff)
__must_hold(&DATARMNET63a2b7773e){struct DATARMNET745f724205*DATARMNET63b1a086d5
;rcu_read_lock();if(DATARMNET4eafcdee07(DATARMNET3396919a68)){rcu_read_unlock();
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x54\x75\x70\x6c\x65\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74"
);return-EEXIST;}rcu_read_unlock();DATARMNET63b1a086d5=kzalloc(sizeof(*
DATARMNET63b1a086d5),GFP_KERNEL);if(!DATARMNET63b1a086d5){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x43\x61\x6e\x6e\x6f\x74\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x74\x75\x70\x6c\x65\x20\x6d\x65\x6d\x6f\x72\x79"
);return-ENOMEM;}memcpy(&DATARMNET63b1a086d5->DATARMNET54338da2ff,
DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));INIT_HLIST_NODE(&
DATARMNET63b1a086d5->DATARMNETe8608dd267);hash_add_rcu(DATARMNET1903907456,&
DATARMNET63b1a086d5->DATARMNETe8608dd267,DATARMNET3396919a68->
DATARMNETf0d9de7e2f);DATARMNET5ca94dbc3c(DATARMNET12d881921a);return
(0xd2d+202-0xdf7);}static int DATARMNET79343e3135(struct DATARMNETb89ecedefc*
DATARMNET3396919a68,struct genl_info*DATARMNET54338da2ff)__must_hold(&
DATARMNET63a2b7773e){struct DATARMNET745f724205*DATARMNET63b1a086d5;struct
hlist_node*DATARMNET0386f6f82a;hash_for_each_possible_safe(DATARMNET1903907456,
DATARMNET63b1a086d5,DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNET3396919a68
->DATARMNETf0d9de7e2f){if(DATARMNET1e31b22eff(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,DATARMNET3396919a68)){hash_del_rcu(&DATARMNET63b1a086d5->
DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);
DATARMNET5ca94dbc3c(DATARMNET9f24b86462);return(0xd2d+202-0xdf7);}}
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4e\x6f\x20\x73\x75\x63\x68\x20\x74\x75\x70\x6c\x65");return-ESRCH;}static
void DATARMNETad43e44c7e(void){struct DATARMNET745f724205*DATARMNET63b1a086d5;
struct hlist_node*DATARMNET0386f6f82a;int DATARMNET5c2fd31d7b;mutex_lock(&
DATARMNET63a2b7773e);DATARMNET7c77d83017=(0xd2d+202-0xdf7);hash_for_each_safe(
DATARMNET1903907456,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,DATARMNET63b1a086d5,
DATARMNETe8608dd267){hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267);
kfree_rcu(DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);}mutex_unlock(&
DATARMNET63a2b7773e);}static bool DATARMNET55aac1386b(struct DATARMNET8d3c2559ca
*DATARMNET1476c48228,struct DATARMNET8d3c2559ca*DATARMNET57a0f36a25){struct
in6_addr DATARMNET4c8c2ca74e={.s6_addr32={4294967295,4294967295,
(0xd2d+202-0xdf7),(0xd2d+202-0xdf7)},};if(DATARMNET1476c48228->
DATARMNET0d956cc77a!=DATARMNET57a0f36a25->DATARMNET0d956cc77a)return false;if(
DATARMNET1476c48228->DATARMNET0d956cc77a==(0xd11+230-0xdf3))return
DATARMNET1476c48228->DATARMNET0dc14167a1==DATARMNET57a0f36a25->
DATARMNET0dc14167a1;return!ipv6_masked_addr_cmp(&DATARMNET1476c48228->
DATARMNET5700daac01,&DATARMNET4c8c2ca74e,&DATARMNET57a0f36a25->
DATARMNET5700daac01);}struct DATARMNET41b426061d*DATARMNETcc0a01df2a(struct
DATARMNET8d3c2559ca*DATARMNET54338da2ff)__must_hold(RCU){struct
DATARMNET41b426061d*DATARMNET63b1a086d5;hash_for_each_possible_rcu(
DATARMNET78ed39f13b,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET54338da2ff
->DATARMNET0dc14167a1){if(DATARMNET55aac1386b(&DATARMNET63b1a086d5->
DATARMNET7ed5754a5c,DATARMNET54338da2ff))return DATARMNET63b1a086d5;}return NULL
;}static int DATARMNETe98553a8fc(struct notifier_block*DATARMNET272c159b3c,
unsigned long DATARMNET7f045a1e6e,void*data){struct net_device*
DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(data);struct DATARMNET41b426061d
*DATARMNET2d4b4cfc9e;DATARMNET2d4b4cfc9e=container_of(DATARMNET272c159b3c,struct
DATARMNET41b426061d,DATARMNET272c159b3c);if(!DATARMNET00dcb79bc4||strncmp(
DATARMNET00dcb79bc4->name,DATARMNET2d4b4cfc9e->DATARMNET852d4d00e2,IFNAMSIZ))
return NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER:if(
DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f){dev_put(
DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f);WRITE_ONCE(
DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f,NULL);}break;case
NETDEV_REGISTER:if(!DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f
){dev_hold(DATARMNET00dcb79bc4);WRITE_ONCE(DATARMNET2d4b4cfc9e->
DATARMNET7ed5754a5c.DATARMNET57656f6f2f,DATARMNET00dcb79bc4);}break;default:
break;}return NOTIFY_DONE;}static int DATARMNET1ac13d5a2a(struct
DATARMNET8d3c2559ca*DATARMNET7ed5754a5c,struct genl_info*DATARMNET54338da2ff)
__must_hold(&DATARMNETf46fb02ac6){struct DATARMNET41b426061d*DATARMNET2d4b4cfc9e
;int DATARMNET268a8314cf;rcu_read_lock();DATARMNET2d4b4cfc9e=DATARMNETcc0a01df2a
(DATARMNET7ed5754a5c);if(DATARMNET2d4b4cfc9e){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x46\x57\x44\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74"
);rcu_read_unlock();return-EEXIST;}rcu_read_unlock();DATARMNET2d4b4cfc9e=kzalloc
(sizeof(*DATARMNET2d4b4cfc9e),GFP_KERNEL);if(!DATARMNET2d4b4cfc9e){
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x43\x61\x6e\x6e\x6f\x74\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x46\x57\x44\x20\x63\x6f\x6e\x74\x65\x78\x74"
);return-ENOMEM;}memcpy(&DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c,
DATARMNET7ed5754a5c,sizeof(*DATARMNET7ed5754a5c));DATARMNET2d4b4cfc9e->
DATARMNET7ed5754a5c.DATARMNET57656f6f2f=NULL;strlcpy(DATARMNET2d4b4cfc9e->
DATARMNET852d4d00e2,DATARMNET7ed5754a5c->DATARMNET57656f6f2f->name,IFNAMSIZ);
DATARMNET2d4b4cfc9e->DATARMNET272c159b3c.notifier_call=DATARMNETe98553a8fc;
DATARMNET268a8314cf=register_netdevice_notifier(&DATARMNET2d4b4cfc9e->
DATARMNET272c159b3c);if(DATARMNET268a8314cf){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x52\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x46\x57\x44\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
);kfree(DATARMNET2d4b4cfc9e);return DATARMNET268a8314cf;}INIT_HLIST_NODE(&
DATARMNET2d4b4cfc9e->DATARMNETe8608dd267);hash_add_rcu(DATARMNET78ed39f13b,&
DATARMNET2d4b4cfc9e->DATARMNETe8608dd267,DATARMNET7ed5754a5c->
DATARMNET0dc14167a1);return(0xd2d+202-0xdf7);}static int DATARMNET6518a28641(
struct DATARMNET41b426061d*DATARMNET2d4b4cfc9e)__must_hold(&DATARMNETf46fb02ac6)
{int DATARMNET268a8314cf;DATARMNET268a8314cf=unregister_netdevice_notifier(&
DATARMNET2d4b4cfc9e->DATARMNET272c159b3c);if(DATARMNET268a8314cf)return
DATARMNET268a8314cf;hash_del_rcu(&DATARMNET2d4b4cfc9e->DATARMNETe8608dd267);
DATARMNETedae8262e1(&DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c);kfree_rcu(
DATARMNET2d4b4cfc9e,DATARMNET28bfe9e6ad);return DATARMNET268a8314cf;}static int
DATARMNET6b6be8e27f(struct DATARMNET8d3c2559ca*DATARMNET7ed5754a5c,struct
genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNETf46fb02ac6){struct
DATARMNET41b426061d*DATARMNET2d4b4cfc9e;int DATARMNET268a8314cf;rcu_read_lock();
DATARMNET2d4b4cfc9e=DATARMNETcc0a01df2a(DATARMNET7ed5754a5c);rcu_read_unlock();
if(!DATARMNET2d4b4cfc9e){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4e\x6f\x20\x73\x75\x63\x68\x20\x46\x57\x44\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e"
);return-ESRCH;}if(strncmp(DATARMNET2d4b4cfc9e->DATARMNET852d4d00e2,
DATARMNET7ed5754a5c->DATARMNET57656f6f2f->name,IFNAMSIZ)){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x49\x6e\x63\x6f\x72\x72\x65\x63\x74\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65"
);return-ENODEV;}DATARMNET268a8314cf=DATARMNET6518a28641(DATARMNET2d4b4cfc9e);if
(DATARMNET268a8314cf){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x55\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
);return DATARMNET268a8314cf;}return DATARMNET268a8314cf;}static void
DATARMNETe5b03fe375(void){struct DATARMNET41b426061d*DATARMNET54338da2ff;struct
hlist_node*DATARMNET0386f6f82a;int DATARMNET5c2fd31d7b;mutex_lock(&
DATARMNETf46fb02ac6);hash_for_each_safe(DATARMNET78ed39f13b,DATARMNET5c2fd31d7b,
DATARMNET0386f6f82a,DATARMNET54338da2ff,DATARMNETe8608dd267)DATARMNET6518a28641(
DATARMNET54338da2ff);mutex_unlock(&DATARMNETf46fb02ac6);}static bool
DATARMNET7490934ea9(__be16 DATARMNETf0d9de7e2f)__must_hold(RCU){struct
DATARMNETda06413d0d*DATARMNET63b1a086d5;hash_for_each_possible_rcu(
DATARMNET133502ca0e,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNETf0d9de7e2f)
{if(DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f)return true;}
return false;}static int DATARMNET3b10d1c14b(__be16 DATARMNETf0d9de7e2f,struct
genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNET954bef55d0){struct
DATARMNETda06413d0d*DATARMNET63b1a086d5;rcu_read_lock();if(DATARMNET7490934ea9(
DATARMNETf0d9de7e2f)){rcu_read_unlock();GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x45\x6e\x63\x61\x70\x20\x70\x6f\x72\x74\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74"
);return-EEXIST;}rcu_read_unlock();DATARMNET63b1a086d5=kzalloc(sizeof(*
DATARMNET63b1a086d5),GFP_KERNEL);if(!DATARMNET63b1a086d5){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x43\x61\x6e\x6e\x6f\x74\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74\x20\x6d\x65\x6d\x6f\x72\x79"
);return-ENOMEM;}DATARMNET63b1a086d5->DATARMNETf0d9de7e2f=DATARMNETf0d9de7e2f;
INIT_HLIST_NODE(&DATARMNET63b1a086d5->DATARMNETe8608dd267);hash_add_rcu(
DATARMNET133502ca0e,&DATARMNET63b1a086d5->DATARMNETe8608dd267,
DATARMNETf0d9de7e2f);DATARMNET5ca94dbc3c(DATARMNET90782e08cf);return
(0xd2d+202-0xdf7);}static int DATARMNETc023021120(__be16 DATARMNETf0d9de7e2f,
struct genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNET954bef55d0){struct
DATARMNETda06413d0d*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;
hash_for_each_possible_safe(DATARMNET133502ca0e,DATARMNET63b1a086d5,
DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if(
DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f){hash_del_rcu(&
DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,
DATARMNET28bfe9e6ad);DATARMNET5ca94dbc3c(DATARMNETb7c9f010b2);return
(0xd2d+202-0xdf7);}}GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4e\x6f\x20\x73\x75\x63\x68\x20\x70\x6f\x72\x74\x20\x76\x61\x6c\x75\x65");
return-ESRCH;}static bool DATARMNETa96214b53c(__be16 DATARMNETf0d9de7e2f)
__must_hold(RCU){struct DATARMNETda06413d0d*DATARMNET63b1a086d5;
hash_for_each_possible_rcu(DATARMNET665d2f133f,DATARMNET63b1a086d5,
DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if(DATARMNET63b1a086d5->
DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f)return true;}return false;}int
DATARMNET59b8376224(__be16 DATARMNETf0d9de7e2f,struct genl_info*
DATARMNET54338da2ff)__must_hold(&DATARMNET954bef55d0){struct DATARMNETda06413d0d
*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;
hash_for_each_possible_safe(DATARMNET665d2f133f,DATARMNET63b1a086d5,
DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if(
DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f){hash_del_rcu(&
DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,
DATARMNET28bfe9e6ad);DATARMNET5ca94dbc3c(DATARMNETa726eebea4);return
(0xd2d+202-0xdf7);}}return(0xd2d+202-0xdf7);}int DATARMNET0b12e969c5(__be16
DATARMNETf0d9de7e2f,struct genl_info*DATARMNET54338da2ff)__must_hold(&
DATARMNET954bef55d0){struct DATARMNETda06413d0d*DATARMNET63b1a086d5;
rcu_read_lock();if(DATARMNETa96214b53c(DATARMNETf0d9de7e2f)){rcu_read_unlock();
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x45\x6e\x63\x61\x70\x20\x70\x6f\x72\x74\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74"
);return-EEXIST;}rcu_read_unlock();DATARMNET63b1a086d5=kzalloc(sizeof(*
DATARMNET63b1a086d5),GFP_KERNEL);if(!DATARMNET63b1a086d5){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x43\x61\x6e\x6e\x6f\x74\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74\x20\x6d\x65\x6d\x6f\x72\x79"
);return-ENOMEM;}DATARMNET63b1a086d5->DATARMNETf0d9de7e2f=DATARMNETf0d9de7e2f;
INIT_HLIST_NODE(&DATARMNET63b1a086d5->DATARMNETe8608dd267);hash_add_rcu(
DATARMNET665d2f133f,&DATARMNET63b1a086d5->DATARMNETe8608dd267,
DATARMNETf0d9de7e2f);DATARMNET5ca94dbc3c(DATARMNET990edaea89);return
(0xd2d+202-0xdf7);}static void DATARMNET1f36d4813c(void){struct
DATARMNETda06413d0d*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;
int DATARMNET5c2fd31d7b;mutex_lock(&DATARMNET954bef55d0);hash_for_each_safe(
DATARMNET133502ca0e,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,DATARMNET63b1a086d5,
DATARMNETe8608dd267){hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267);
kfree_rcu(DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);}mutex_unlock(&
DATARMNET954bef55d0);}static rx_handler_result_t DATARMNET37a92021f9(struct
sk_buff**DATARMNET89946cec52){struct DATARMNET0ca9d8ead7 DATARMNETa76763310b={};
struct DATARMNETb89ecedefc DATARMNET3396919a68={};struct DATARMNET41b426061d*
DATARMNET72f0eefdce;struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e,
DATARMNET54338da2ff;struct sk_buff*DATARMNET543491eb0f=*DATARMNET89946cec52;
rx_handler_result_t DATARMNET1dec89a127=RX_HANDLER_PASS;int DATARMNET611d08d671;
if(!DATARMNET543491eb0f||DATARMNET543491eb0f->pkt_type==PACKET_LOOPBACK)return
DATARMNET1dec89a127;rcu_read_lock();DATARMNET5ca94dbc3c(DATARMNET735bb8578c);if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9
=ip_hdr(DATARMNET543491eb0f);if(DATARMNET86f1f2cdc9->protocol==IPPROTO_ICMP){
DATARMNETa76763310b.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9->daddr;
DATARMNETa76763310b.DATARMNET2cb607d686=DATARMNET86f1f2cdc9->saddr;
DATARMNETa76763310b.DATARMNET0d956cc77a=(0xd11+230-0xdf3);DATARMNET2d4b4cfc9e=
DATARMNET07f0e0f286(&DATARMNETa76763310b);if(DATARMNET2d4b4cfc9e)goto
DATARMNET1e5291b369;}DATARMNET54338da2ff.DATARMNET0dc14167a1=DATARMNET86f1f2cdc9
->daddr;DATARMNET54338da2ff.DATARMNET0d956cc77a=(0xd11+230-0xdf3);
DATARMNET72f0eefdce=DATARMNETcc0a01df2a(&DATARMNET54338da2ff);if(!
DATARMNET72f0eefdce)goto DATARMNETbf4095f79e;DATARMNET2d4b4cfc9e=&
DATARMNET72f0eefdce->DATARMNET7ed5754a5c;DATARMNET3396919a68.DATARMNET0d956cc77a
=(0xd11+230-0xdf3);DATARMNET3396919a68.DATARMNET4924e79411=DATARMNET86f1f2cdc9->
protocol;DATARMNET611d08d671=DATARMNET86f1f2cdc9->ihl*(0xd11+230-0xdf3);if(
ip_is_fragment(DATARMNET86f1f2cdc9)){if(!DATARMNET579f75aa50(DATARMNET543491eb0f
,DATARMNET611d08d671,&DATARMNET3396919a68,DATARMNET2d4b4cfc9e))
DATARMNET1dec89a127=RX_HANDLER_CONSUMED;goto DATARMNETbf4095f79e;}}else if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
DATARMNETbf55123e5b=ipv6_hdr(DATARMNET543491eb0f);__be16 frag_off;u8
DATARMNET65293f17c4;DATARMNET65293f17c4=DATARMNETbf55123e5b->nexthdr;
DATARMNET611d08d671=ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*
DATARMNETbf55123e5b),&DATARMNET65293f17c4,&frag_off);if(DATARMNET611d08d671<
(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;if(DATARMNET65293f17c4==
IPPROTO_ICMPV6){memcpy(&DATARMNETa76763310b.DATARMNET815cbb4bf5,&
DATARMNETbf55123e5b->daddr,sizeof(DATARMNETa76763310b.DATARMNET815cbb4bf5));
memcpy(&DATARMNETa76763310b.DATARMNETc3f31215b7,&DATARMNETbf55123e5b->saddr,
sizeof(DATARMNETa76763310b.DATARMNETc3f31215b7));DATARMNETa76763310b.
DATARMNET0d956cc77a=(0xd03+244-0xdf1);DATARMNET2d4b4cfc9e=DATARMNET07f0e0f286(&
DATARMNETa76763310b);if(DATARMNET2d4b4cfc9e)goto DATARMNET1e5291b369;}memcpy(&
DATARMNET54338da2ff.DATARMNET5700daac01,&DATARMNETbf55123e5b->daddr,sizeof(
DATARMNET54338da2ff.DATARMNET5700daac01));DATARMNET54338da2ff.
DATARMNET0d956cc77a=(0xd03+244-0xdf1);DATARMNET72f0eefdce=DATARMNETcc0a01df2a(&
DATARMNET54338da2ff);if(!DATARMNET72f0eefdce)goto DATARMNETbf4095f79e;
DATARMNET2d4b4cfc9e=&DATARMNET72f0eefdce->DATARMNET7ed5754a5c;
DATARMNET3396919a68.DATARMNET0d956cc77a=(0xd03+244-0xdf1);DATARMNET3396919a68.
DATARMNET4924e79411=DATARMNET65293f17c4;if(frag_off){if(!DATARMNETaca8ca54ed(
DATARMNET543491eb0f,DATARMNET611d08d671,&DATARMNET3396919a68,DATARMNET2d4b4cfc9e
))DATARMNET1dec89a127=RX_HANDLER_CONSUMED;goto DATARMNETbf4095f79e;}}else{goto
DATARMNETbf4095f79e;}if(DATARMNET3396919a68.DATARMNET4924e79411==IPPROTO_TCP||
DATARMNET3396919a68.DATARMNET4924e79411==IPPROTO_UDP){struct udphdr*
DATARMNET75be5f3406=(struct udphdr*)(DATARMNET543491eb0f->data+
DATARMNET611d08d671);DATARMNET3396919a68.DATARMNETf0d9de7e2f=DATARMNET75be5f3406
->dest;if(DATARMNETa8b2566e6a(DATARMNET543491eb0f,&DATARMNET3396919a68,
DATARMNET611d08d671)){if(DATARMNET0a4704e5e0(&DATARMNET3396919a68)){kfree_skb(
DATARMNET543491eb0f);DATARMNET1dec89a127=RX_HANDLER_CONSUMED;DATARMNET5ca94dbc3c
(DATARMNET0981317411);goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c(
DATARMNETd1ad664d00);goto DATARMNETbf4095f79e;}}else if(DATARMNET3396919a68.
DATARMNET4924e79411==IPPROTO_ESP){struct ip_esp_hdr*DATARMNET568b3d4b19,
DATARMNET3f4e206745;DATARMNET568b3d4b19=skb_header_pointer(DATARMNET543491eb0f,
DATARMNET611d08d671,sizeof(*DATARMNET568b3d4b19),&DATARMNET3f4e206745);if(!
DATARMNET568b3d4b19){DATARMNET5ca94dbc3c(DATARMNETf1f7e2c408);goto
DATARMNETbf4095f79e;}DATARMNET3396919a68.DATARMNET906b2ee561=DATARMNET568b3d4b19
->spi;}else{goto DATARMNETbf4095f79e;}if(DATARMNET4eafcdee07(&
DATARMNET3396919a68))goto DATARMNET1e5291b369;if(DATARMNET543491eb0f->mark==
131074){struct net_device*DATARMNET39542b437e=dev_get_by_name_rcu(&init_net,
"\x64\x75\x6d\x6d\x79\x30");if(DATARMNET39542b437e){DATARMNET543491eb0f->dev=
DATARMNET39542b437e;DATARMNET543491eb0f->mark=(0xd2d+202-0xdf7);}else{
DATARMNET5ca94dbc3c(DATARMNET5c603ca4b0);}}goto DATARMNETbf4095f79e;
DATARMNET1e5291b369:if(!DATARMNET4899053671(DATARMNET543491eb0f,
DATARMNET2d4b4cfc9e))DATARMNET1dec89a127=RX_HANDLER_CONSUMED;DATARMNETbf4095f79e
:rcu_read_unlock();return DATARMNET1dec89a127;}static int DATARMNET0ed065ddb7(
struct notifier_block*DATARMNET272c159b3c,unsigned long DATARMNET7f045a1e6e,void
*data){struct net_device*DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(data);
if(!DATARMNET00dcb79bc4||strncmp(DATARMNET00dcb79bc4->name,DATARMNET30500ba48c,
IFNAMSIZ))return NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER:
netdev_rx_handler_unregister(DATARMNET00dcb79bc4);break;case NETDEV_REGISTER:if(
netdev_rx_handler_register(DATARMNET00dcb79bc4,DATARMNET37a92021f9,NULL))pr_err(
"\x25\x73\x28\x29\x3a\x20\x52\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);break;default:break;}return NOTIFY_DONE;}static int
DATARMNET6512527d9c(struct notifier_block*DATARMNET272c159b3c,unsigned long
DATARMNET7f045a1e6e,void*data){struct net_device*DATARMNET00dcb79bc4=
netdev_notifier_info_to_dev(data);if(!DATARMNET00dcb79bc4||strncmp(
DATARMNET00dcb79bc4->name,DATARMNET755f0f0df8,IFNAMSIZ))return NOTIFY_DONE;
switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER:netdev_rx_handler_unregister(
DATARMNET00dcb79bc4);break;case NETDEV_REGISTER:if(netdev_rx_handler_register(
DATARMNET00dcb79bc4,DATARMNET37a92021f9,NULL))pr_err(
"\x25\x73\x28\x29\x3a\x20\x52\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);break;default:break;}return NOTIFY_DONE;}static struct notifier_block
DATARMNETa1726000d8={.notifier_call=DATARMNET0ed065ddb7,};static struct
notifier_block DATARMNET2c4484aef5={.notifier_call=DATARMNET6512527d9c,};static
int DATARMNET116f9a46aa(void){int DATARMNET268a8314cf;if(!DATARMNET30500ba48c[
(0xd2d+202-0xdf7)])return(0xd2d+202-0xdf7);DATARMNET268a8314cf=
unregister_netdevice_notifier(&DATARMNETa1726000d8);if(!DATARMNET268a8314cf)
DATARMNET30500ba48c[(0xd2d+202-0xdf7)]=(0xd2d+202-0xdf7);return
DATARMNET268a8314cf;}static int DATARMNET56777c5470(void){int
DATARMNET268a8314cf;if(!DATARMNET755f0f0df8[(0xd2d+202-0xdf7)])return
(0xd2d+202-0xdf7);DATARMNET268a8314cf=unregister_netdevice_notifier(&
DATARMNET2c4484aef5);if(!DATARMNET268a8314cf)DATARMNET755f0f0df8[
(0xd2d+202-0xdf7)]=(0xd2d+202-0xdf7);return DATARMNET268a8314cf;}static void
DATARMNETbb4efa5b3d(void){DATARMNET116f9a46aa();DATARMNET1f36d4813c();
DATARMNET8c0e010dfb();DATARMNETe5b03fe375();DATARMNETad43e44c7e();}static int
DATARMNET38ebe8f319(struct sk_buff*DATARMNET543491eb0f,int DATARMNET1faf88208b){
if(!pskb_may_pull(DATARMNET543491eb0f,DATARMNET1faf88208b))return-ENOMEM;if(!
skb_cloned(DATARMNET543491eb0f)||skb_clone_writable(DATARMNET543491eb0f,
DATARMNET1faf88208b))return(0xd2d+202-0xdf7);return pskb_expand_head(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),GFP_ATOMIC);}static void
DATARMNET9a8d756527(__sum16*DATARMNETc2284e5688,struct sk_buff*
DATARMNET543491eb0f,__be32 DATARMNET9080427d4e,__be32 DATARMNETc0e620c987,bool
DATARMNETcb0345b337){if(DATARMNET543491eb0f->ip_summed!=CHECKSUM_PARTIAL){
csum_replace4(DATARMNETc2284e5688,DATARMNET9080427d4e,DATARMNETc0e620c987);if(
DATARMNET543491eb0f->ip_summed==CHECKSUM_COMPLETE&&DATARMNETcb0345b337){
DATARMNET543491eb0f->csum=csum_sub(~(DATARMNET543491eb0f->csum),(__wsum)
DATARMNET9080427d4e);DATARMNET543491eb0f->csum=~csum_add(DATARMNET543491eb0f->
csum,(__wsum)DATARMNETc0e620c987);}}else if(DATARMNETcb0345b337){__wsum
DATARMNET0386f6f82a=csum_unfold(*DATARMNETc2284e5688);DATARMNET0386f6f82a=
csum_sub(DATARMNET0386f6f82a,(__wsum)DATARMNET9080427d4e);DATARMNET0386f6f82a=
csum_add(DATARMNET0386f6f82a,(__wsum)DATARMNETc0e620c987);*DATARMNETc2284e5688=~
csum_fold(DATARMNET0386f6f82a);}}static void DATARMNETc03853e26d(__sum16*
DATARMNETc2284e5688,struct sk_buff*DATARMNET543491eb0f,__be16
DATARMNET9080427d4e,__be16 DATARMNETc0e620c987,bool DATARMNETcb0345b337){
DATARMNET9a8d756527(DATARMNETc2284e5688,DATARMNET543491eb0f,(__be32)
DATARMNET9080427d4e,(__be32)DATARMNETc0e620c987,DATARMNETcb0345b337);}static
unsigned int DATARMNET7060ca9a47(u8*DATARMNET54fdee4fda,unsigned int
DATARMNET6396f657b3){if(DATARMNET54fdee4fda[DATARMNET6396f657b3]==TCPOPT_EOL||
DATARMNET54fdee4fda[DATARMNET6396f657b3]==TCPOPT_NOP||!DATARMNET54fdee4fda[
DATARMNET6396f657b3+(0xd26+209-0xdf6)])return(0xd26+209-0xdf6);return
DATARMNET54fdee4fda[DATARMNET6396f657b3+(0xd26+209-0xdf6)];}void
DATARMNET7ca470d54b(struct sk_buff*DATARMNET543491eb0f,u32 DATARMNET1464100e7a){
struct tcphdr*DATARMNET668416551c;u8 DATARMNET630b15102e[(0xf07+1090-0x130d)];u8
*DATARMNET54fdee4fda;__be16 DATARMNETdda9f3dd51=htons((0xef7+3481-0x181c));u16
DATARMNET611d08d671;u16 DATARMNET7fa3427233;unsigned int DATARMNETefc9df3df2;
__be32 DATARMNET572f0d1999;u8 DATARMNET0d956cc77a;if(DATARMNET543491eb0f->
protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;
DATARMNET0d956cc77a=(0xd11+230-0xdf3);DATARMNET86f1f2cdc9=skb_header_pointer(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&
DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto DATARMNET268a8314cf;if(
DATARMNET86f1f2cdc9->protocol!=IPPROTO_TCP)goto DATARMNETed6aa0a77f;
DATARMNET611d08d671=DATARMNET86f1f2cdc9->ihl*(0xd11+230-0xdf3);}else if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;__be16 frag_off;u8 DATARMNETa8d8445982;
DATARMNET0d956cc77a=(0xd03+244-0xdf1);DATARMNETbf55123e5b=skb_header_pointer(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),&
DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto DATARMNET268a8314cf;
DATARMNETa8d8445982=DATARMNETbf55123e5b->nexthdr;DATARMNET611d08d671=
ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*DATARMNETbf55123e5b),&
DATARMNETa8d8445982,&frag_off);if(DATARMNET611d08d671<(0xd2d+202-0xdf7))goto
DATARMNET268a8314cf;if(DATARMNETa8d8445982!=IPPROTO_TCP)goto DATARMNETed6aa0a77f
;}else{goto DATARMNET268a8314cf;}DATARMNET668416551c=skb_header_pointer(
DATARMNET543491eb0f,DATARMNET611d08d671,sizeof(*DATARMNET668416551c),&
DATARMNET630b15102e);if(!DATARMNET668416551c)goto DATARMNET268a8314cf;if(!(
tcp_flag_word(DATARMNET668416551c)&DATARMNET1464100e7a))goto DATARMNETed6aa0a77f
;DATARMNET7fa3427233=DATARMNET668416551c->doff*(0xd11+230-0xdf3);if(
DATARMNET38ebe8f319(DATARMNET543491eb0f,DATARMNET611d08d671+DATARMNET7fa3427233)
)goto DATARMNET268a8314cf;DATARMNET668416551c=skb_header_pointer(
DATARMNET543491eb0f,DATARMNET611d08d671,DATARMNET7fa3427233,&DATARMNET630b15102e
);if(!DATARMNET668416551c)goto DATARMNET268a8314cf;DATARMNET54fdee4fda=(u8*)
DATARMNET668416551c;for(DATARMNETefc9df3df2=sizeof(*DATARMNET668416551c);
DATARMNETefc9df3df2<DATARMNET7fa3427233;DATARMNETefc9df3df2+=DATARMNET7060ca9a47
(DATARMNET54fdee4fda,DATARMNETefc9df3df2)){__be16*DATARMNETb3032fac16;if(
DATARMNET54fdee4fda[DATARMNETefc9df3df2]!=TCPOPT_MSS||DATARMNET54fdee4fda[
DATARMNETefc9df3df2+(0xd26+209-0xdf6)]!=TCPOLEN_MSS)continue;DATARMNETb3032fac16
=(__be16*)(&DATARMNET54fdee4fda[DATARMNETefc9df3df2+(0xd1f+216-0xdf5)]);if(*
DATARMNETb3032fac16<=DATARMNETdda9f3dd51)goto DATARMNETed6aa0a77f;
DATARMNETc03853e26d(&DATARMNET668416551c->check,DATARMNET543491eb0f,*
DATARMNETb3032fac16,DATARMNETdda9f3dd51,false);*DATARMNETb3032fac16=
DATARMNETdda9f3dd51;DATARMNET5ca94dbc3c(DATARMNETef2af4f071);return;}if(
DATARMNET543491eb0f->len>DATARMNET611d08d671+DATARMNET7fa3427233||
DATARMNET7fa3427233>=(0xf07+1090-0x130d))goto DATARMNETed6aa0a77f;if(
skb_tailroom(DATARMNET543491eb0f)<TCPOLEN_MSS){if(pskb_expand_head(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),TCPOLEN_MSS-skb_tailroom(
DATARMNET543491eb0f),GFP_ATOMIC))goto DATARMNET268a8314cf;DATARMNET668416551c=
skb_header_pointer(DATARMNET543491eb0f,DATARMNET611d08d671,DATARMNET7fa3427233,&
DATARMNET630b15102e);if(!DATARMNET668416551c)goto DATARMNET268a8314cf;}
DATARMNETc03853e26d(&DATARMNET668416551c->check,DATARMNET543491eb0f,htons(
DATARMNET543491eb0f->len-DATARMNET611d08d671),htons(DATARMNET543491eb0f->len-
DATARMNET611d08d671+TCPOLEN_MSS),true);DATARMNET54fdee4fda=skb_put(
DATARMNET543491eb0f,TCPOLEN_MSS);if(DATARMNET0d956cc77a==(0xd11+230-0xdf3))
DATARMNETdda9f3dd51=htons(min_t(u16,ntohs(DATARMNETdda9f3dd51),
(0x545+2434-0xcaf)));else DATARMNETdda9f3dd51=htons(min_t(u16,ntohs(
DATARMNETdda9f3dd51),(0xbf7+4058-0x170d)));DATARMNET54fdee4fda[(0xd2d+202-0xdf7)
]=TCPOPT_MSS;DATARMNET54fdee4fda[(0xd26+209-0xdf6)]=TCPOLEN_MSS;*((__be16*)(
DATARMNET54fdee4fda+(0xd1f+216-0xdf5)))=DATARMNETdda9f3dd51;DATARMNET9a8d756527(
&DATARMNET668416551c->check,DATARMNET543491eb0f,(0xd2d+202-0xdf7),*((__be32*)
DATARMNET54fdee4fda),false);DATARMNET572f0d1999=tcp_flag_word(
DATARMNET668416551c);DATARMNET668416551c->doff++;DATARMNET9a8d756527(&
DATARMNET668416551c->check,DATARMNET543491eb0f,DATARMNET572f0d1999,tcp_flag_word
(DATARMNET668416551c),false);if(DATARMNET0d956cc77a==(0xd11+230-0xdf3)){struct
iphdr*DATARMNET86f1f2cdc9=ip_hdr(DATARMNET543491eb0f);csum_replace2(&
DATARMNET86f1f2cdc9->check,DATARMNET86f1f2cdc9->tot_len,htons(
DATARMNET543491eb0f->len));DATARMNET86f1f2cdc9->tot_len=htons(
DATARMNET543491eb0f->len);}else{struct ipv6hdr*DATARMNETbf55123e5b=ipv6_hdr(
DATARMNET543491eb0f);DATARMNETbf55123e5b->payload_len=htons(ntohs(
DATARMNETbf55123e5b->payload_len)+TCPOLEN_MSS);}DATARMNET5ca94dbc3c(
DATARMNETef2af4f071);return;DATARMNETed6aa0a77f:DATARMNET5ca94dbc3c(
DATARMNETebc1b87b7d);return;DATARMNET268a8314cf:DATARMNET5ca94dbc3c(
DATARMNET21bdbe6a27);return;}int DATARMNET4899053671(struct sk_buff*
DATARMNET543491eb0f,struct DATARMNET8d3c2559ca*DATARMNET54338da2ff){struct
net_device*DATARMNET00dcb79bc4;DATARMNET00dcb79bc4=READ_ONCE(DATARMNET54338da2ff
->DATARMNET57656f6f2f);if(!DATARMNET00dcb79bc4){DATARMNET5ca94dbc3c(
DATARMNET591885a019);return-ENODEV;}DATARMNET7ca470d54b(DATARMNET543491eb0f,
TCP_FLAG_SYN|TCP_FLAG_ACK);DATARMNET543491eb0f->dev=DATARMNET00dcb79bc4;
dev_queue_xmit(DATARMNET543491eb0f);DATARMNET5ca94dbc3c(DATARMNETf4c2a83526);
return(0xd2d+202-0xdf7);}bool DATARMNET4eafcdee07(struct DATARMNETb89ecedefc*
DATARMNET3396919a68)__must_hold(RCU){struct DATARMNET745f724205*
DATARMNET63b1a086d5;hash_for_each_possible_rcu(DATARMNET1903907456,
DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET3396919a68->DATARMNETf0d9de7e2f
){if(DATARMNET1e31b22eff(&DATARMNET63b1a086d5->DATARMNET54338da2ff,
DATARMNET3396919a68))return true;}return false;}int DATARMNET53f12a0f7d(struct
DATARMNETb89ecedefc*DATARMNETcadc2ef9aa,u32 DATARMNETef77661260,struct genl_info
*DATARMNET54338da2ff){int DATARMNET268a8314cf=(0xd2d+202-0xdf7);u32
DATARMNETefc9df3df2;mutex_lock(&DATARMNET63a2b7773e);for(DATARMNETefc9df3df2=
(0xd2d+202-0xdf7);DATARMNETefc9df3df2<DATARMNETef77661260;DATARMNETefc9df3df2++)
{DATARMNET268a8314cf=DATARMNET0b72d312f9(&DATARMNETcadc2ef9aa[
DATARMNETefc9df3df2],DATARMNET54338da2ff);if(DATARMNET268a8314cf){if(
DATARMNET268a8314cf==-EEXIST)DATARMNET268a8314cf=(0xd2d+202-0xdf7);else break;}
else{DATARMNET7c77d83017++;}}mutex_unlock(&DATARMNET63a2b7773e);return
DATARMNET268a8314cf;}int DATARMNET07f6485c9b(struct DATARMNETb89ecedefc*
DATARMNETcadc2ef9aa,u32 DATARMNETef77661260,struct genl_info*DATARMNET54338da2ff
){int DATARMNET268a8314cf=(0xd2d+202-0xdf7);u32 DATARMNETefc9df3df2;mutex_lock(&
DATARMNET63a2b7773e);for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);
DATARMNETefc9df3df2<DATARMNETef77661260;DATARMNETefc9df3df2++){
DATARMNET268a8314cf=DATARMNET79343e3135(&DATARMNETcadc2ef9aa[DATARMNETefc9df3df2
],DATARMNET54338da2ff);if(DATARMNET268a8314cf){if(DATARMNET268a8314cf==-ESRCH)
DATARMNET268a8314cf=(0xd2d+202-0xdf7);else break;}else{DATARMNET7c77d83017--;}}
mutex_unlock(&DATARMNET63a2b7773e);return DATARMNET268a8314cf;}int
DATARMNET97b2388e63(char*DATARMNET852d4d00e2,struct genl_info*
DATARMNET54338da2ff){int DATARMNET268a8314cf;if(!strncmp(DATARMNET30500ba48c,
DATARMNET852d4d00e2,IFNAMSIZ)){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x44\x65\x76\x69\x63\x65\x20\x69\x73\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x73\x65\x74"
);return(0xd2d+202-0xdf7);}DATARMNET268a8314cf=DATARMNET116f9a46aa();if(
DATARMNET268a8314cf){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
);return DATARMNET268a8314cf;}strlcpy(DATARMNET30500ba48c,DATARMNET852d4d00e2,
IFNAMSIZ);DATARMNET268a8314cf=register_netdevice_notifier(&DATARMNETa1726000d8);
if(DATARMNET268a8314cf){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
);DATARMNET30500ba48c[(0xd2d+202-0xdf7)]=(0xd2d+202-0xdf7);}return
DATARMNET268a8314cf;}int DATARMNET92e5468fc5(char*DATARMNET852d4d00e2,struct
genl_info*DATARMNET54338da2ff){int DATARMNET268a8314cf;if(!strncmp(
DATARMNET755f0f0df8,DATARMNET852d4d00e2,IFNAMSIZ)){GENL_SET_ERR_MSG(
DATARMNET54338da2ff,
"\x44\x65\x76\x69\x63\x65\x20\x69\x73\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x73\x65\x74"
);return(0xd2d+202-0xdf7);}DATARMNET268a8314cf=DATARMNET56777c5470();if(
DATARMNET268a8314cf){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
);return DATARMNET268a8314cf;}strlcpy(DATARMNET755f0f0df8,DATARMNET852d4d00e2,
IFNAMSIZ);DATARMNET268a8314cf=register_netdevice_notifier(&DATARMNET2c4484aef5);
if(DATARMNET268a8314cf){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
"\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
);DATARMNET755f0f0df8[(0xd2d+202-0xdf7)]=(0xd2d+202-0xdf7);}return
DATARMNET268a8314cf;}int DATARMNETa903cd5994(char*DATARMNET852d4d00e2,struct
genl_info*DATARMNET54338da2ff){return DATARMNET116f9a46aa();}int
DATARMNET9d7bb9a63d(char*DATARMNET852d4d00e2,struct genl_info*
DATARMNET54338da2ff){return DATARMNET56777c5470();}int DATARMNET947eb110d2(
struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e,struct genl_info*
DATARMNET54338da2ff){int DATARMNET268a8314cf;mutex_lock(&DATARMNETf46fb02ac6);
DATARMNET268a8314cf=DATARMNET1ac13d5a2a(DATARMNET2d4b4cfc9e,DATARMNET54338da2ff)
;mutex_unlock(&DATARMNETf46fb02ac6);return DATARMNET268a8314cf;}int
DATARMNETb8b35fdc18(struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e,struct
genl_info*DATARMNET54338da2ff){int DATARMNET268a8314cf;mutex_lock(&
DATARMNETf46fb02ac6);DATARMNET268a8314cf=DATARMNET6b6be8e27f(DATARMNET2d4b4cfc9e
,DATARMNET54338da2ff);mutex_unlock(&DATARMNETf46fb02ac6);return
DATARMNET268a8314cf;}int DATARMNET8d5a5a7047(__be16 DATARMNETf0d9de7e2f,struct
genl_info*DATARMNET54338da2ff){int DATARMNET268a8314cf;mutex_lock(&
DATARMNET954bef55d0);DATARMNET268a8314cf=DATARMNET3b10d1c14b(DATARMNETf0d9de7e2f
,DATARMNET54338da2ff);mutex_unlock(&DATARMNET954bef55d0);return
DATARMNET268a8314cf;}int DATARMNETc97c6a4265(__be16 DATARMNETf0d9de7e2f,struct
genl_info*DATARMNET54338da2ff){int DATARMNET268a8314cf;mutex_lock(&
DATARMNET954bef55d0);DATARMNET268a8314cf=DATARMNETc023021120(DATARMNETf0d9de7e2f
,DATARMNET54338da2ff);mutex_unlock(&DATARMNET954bef55d0);return
DATARMNET268a8314cf;}bool DATARMNETa8b2566e6a(struct sk_buff*DATARMNET543491eb0f
,struct DATARMNETb89ecedefc*DATARMNET3396919a68,int DATARMNET611d08d671){struct
udphdr*DATARMNET75be5f3406,DATARMNETc82d2f4e16;__be32*DATARMNETdf2dbc641f,
DATARMNET6c56902362;if(DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_UDP||!
DATARMNET7490934ea9(DATARMNET3396919a68->DATARMNETf0d9de7e2f))return false;
DATARMNET75be5f3406=skb_header_pointer(DATARMNET543491eb0f,DATARMNET611d08d671,
sizeof(*DATARMNET75be5f3406),&DATARMNETc82d2f4e16);if(!DATARMNET75be5f3406)
return false;if(DATARMNET75be5f3406->source==htons((0xdf7+6169-0x241c)))return
false;DATARMNETdf2dbc641f=skb_header_pointer(DATARMNET543491eb0f,
DATARMNET611d08d671+sizeof(*DATARMNET75be5f3406),sizeof(*DATARMNETdf2dbc641f),&
DATARMNET6c56902362);if(!DATARMNETdf2dbc641f)return false;return!!(*
DATARMNETdf2dbc641f);}bool DATARMNET0a4704e5e0(struct DATARMNETb89ecedefc*
DATARMNET3396919a68){return DATARMNETa96214b53c(DATARMNET3396919a68->
DATARMNETf0d9de7e2f);}static int DATARMNETed41dd2d3f(struct sk_buff*
DATARMNET543491eb0f,struct DATARMNETb89ecedefc*DATARMNET3396919a68){struct
nlattr*DATARMNET4186ba2d8f;DATARMNET4186ba2d8f=nla_nest_start(
DATARMNET543491eb0f,DATARMNET4e9cd7b8bf);if(!DATARMNET4186ba2d8f)return-EINVAL;
if(nla_put(DATARMNET543491eb0f,DATARMNET8c062d7709,sizeof(*DATARMNET3396919a68),
DATARMNET3396919a68)){nla_nest_cancel(DATARMNET543491eb0f,DATARMNET4186ba2d8f);
return-EINVAL;}nla_nest_end(DATARMNET543491eb0f,DATARMNET4186ba2d8f);return
(0xd2d+202-0xdf7);}int DATARMNETe14c875532(struct sk_buff**DATARMNET89946cec52,
struct genl_family*DATARMNET4a4aca7220,struct genl_info*DATARMNET54338da2ff){
struct DATARMNET745f724205*DATARMNET63b1a086d5;struct sk_buff*
DATARMNET49b2094b56=NULL;struct nlattr*DATARMNETa5d4001a4a;int
DATARMNETd6c25fe6b5;int DATARMNET268a8314cf=(0xd2d+202-0xdf7);void*
DATARMNET9eab1e957c;int DATARMNET5c2fd31d7b;mutex_lock(&DATARMNET63a2b7773e);
DATARMNETd6c25fe6b5=nla_total_size(nla_total_size(sizeof(DATARMNET63b1a086d5->
DATARMNET54338da2ff))*DATARMNET7c77d83017);DATARMNET49b2094b56=genlmsg_new(
DATARMNETd6c25fe6b5,GFP_KERNEL);if(!DATARMNET49b2094b56)return-ENOMEM;
DATARMNET9eab1e957c=genlmsg_put_reply(DATARMNET49b2094b56,DATARMNET54338da2ff,
DATARMNET4a4aca7220,(0xd2d+202-0xdf7),DATARMNET7c479706fb);if(!
DATARMNET9eab1e957c){kfree(DATARMNET49b2094b56);return-EINVAL;}
DATARMNETa5d4001a4a=nla_nest_start(DATARMNET49b2094b56,DATARMNET4e9cd7b8bf);if(!
DATARMNETa5d4001a4a){kfree(DATARMNET49b2094b56);return-EINVAL;}hash_for_each(
DATARMNET1903907456,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,DATARMNETe8608dd267)
DATARMNETed41dd2d3f(DATARMNET49b2094b56,&DATARMNET63b1a086d5->
DATARMNET54338da2ff);nla_nest_end(DATARMNET49b2094b56,DATARMNETa5d4001a4a);
genlmsg_end(DATARMNET49b2094b56,DATARMNET9eab1e957c);*DATARMNET89946cec52=
DATARMNET49b2094b56;mutex_unlock(&DATARMNET63a2b7773e);return
DATARMNET268a8314cf;}int DATARMNET078f6bd384(void){DATARMNETbb4efa5b3d();return
(0xd2d+202-0xdf7);}void DATARMNETfae36afa03(void){DATARMNETbb4efa5b3d();}char*
DATARMNET934406764d(void){return DATARMNET30500ba48c;}char*DATARMNETe447822105(
void){return DATARMNET755f0f0df8;}

View File

@@ -0,0 +1,18 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
*
* RMNET WLAN stats framework
*
*/
#include <linux/moduleparam.h>
#include "rmnet_wlan_stats.h"
static u64 DATARMNET24d235c444[DATARMNETc6bf075f65];module_param_array_named(
rmnet_wlan_stat,DATARMNET24d235c444,ullong,NULL,(0xcb7+5769-0x221c));static u64
DATARMNET9f5801b25f[DATARMNETfe1714cc0e];module_param_array_named(
rmnet_wlan_forward_stat,DATARMNET9f5801b25f,ullong,NULL,(0xcb7+5769-0x221c));
void DATARMNET5ca94dbc3c(u32 DATARMNET248f120dd5){if(DATARMNET248f120dd5<
DATARMNETc6bf075f65)DATARMNET24d235c444[DATARMNET248f120dd5]+=(0xd26+209-0xdf6);
}void DATARMNET17f6bc1be5(u32 DATARMNET248f120dd5){if(DATARMNET248f120dd5<
DATARMNETfe1714cc0e)DATARMNET9f5801b25f[DATARMNET248f120dd5]+=(0xd26+209-0xdf6);
}

View File

@@ -0,0 +1,32 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* RMNET WLAN stats framework
*
*/
#ifndef DATARMNETb0d32a80bc
#define DATARMNETb0d32a80bc
#include <linux/types.h>
enum{DATARMNET12d881921a,DATARMNET9f24b86462,DATARMNET735bb8578c,
DATARMNETf4c2a83526,DATARMNET591885a019,DATARMNETd8273aa7e1,DATARMNET7a58a5c1fc,
DATARMNETba232077da,DATARMNETe75ad1a949,DATARMNETd691057b85,DATARMNETd1ad664d00,
DATARMNETef2af4f071,DATARMNETebc1b87b7d,DATARMNET21bdbe6a27,DATARMNET90782e08cf,
DATARMNETb7c9f010b2,DATARMNET990edaea89,DATARMNETa726eebea4,DATARMNET0981317411,
DATARMNETb59245fef4,DATARMNETf1f7e2c408,DATARMNET5c603ca4b0,DATARMNETc6bf075f65,
};enum{DATARMNETc1b437465b,DATARMNET04311361a2,DATARMNET43a65c0be7,
DATARMNET13bbe5f5c5,DATARMNETd1c349b9fc,DATARMNETfa4b3dd44a,DATARMNET72ab5e86d8,
DATARMNET0e6bd55b8b,DATARMNET64aecaa865,DATARMNET72f4fdd48a,DATARMNET9cff15f94d,
DATARMNETbf6e6853f9,DATARMNETa0da722329,DATARMNET729e252fb9,DATARMNET6b0ed53aab,
DATARMNET22ac945cae,DATARMNET97b44d0c09,DATARMNETf954265acb,DATARMNET15454f969d,
DATARMNET9bdb1c4072,DATARMNET9a57ef32d3,DATARMNET9a940d93dc,DATARMNETf326b7c906,
DATARMNET544d78ede7,DATARMNET5abdc89190,DATARMNET101af46c1c,DATARMNET0b9541c9b3,
DATARMNET0078f1d36d,DATARMNET661bdeccd4,DATARMNET28e7704d13,DATARMNET7c6c30b7d2,
DATARMNET39d80cc483,DATARMNET1be480319c,DATARMNET15d1a78b15,DATARMNETddb1bc27cb,
DATARMNETc730640bf7,DATARMNET521b065310,DATARMNET8a15bcdcc7,DATARMNET0978ff973f,
DATARMNETc52168a41e,DATARMNET666fc9a664,DATARMNET7803c877c0,DATARMNET4c5aeeb476,
DATARMNETfe1714cc0e,};void DATARMNET5ca94dbc3c(u32 DATARMNET248f120dd5);void
DATARMNET17f6bc1be5(u32 DATARMNET248f120dd5);
#endif