Просмотр исходного кода

rmnet_wlan: I92b7224d3982c2aee0bb97464a8ba5768c31e3c7

Updates the module to version I92b7224d3982c2aee0bb97464a8ba5768c31e3c7

Change-Id: I54c0ea9da7ec38a03e11a9c5889eef617ae70585
Signed-off-by: Elmer Melendez <[email protected]>
Elmer Melendez 3 лет назад
Родитель
Сommit
ad211dd2c5

+ 16 - 0
wlan/Android.mk

@@ -15,7 +15,23 @@ LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
 LOCAL_MODULE := rmnet_wlan.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
+
+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
 

+ 2 - 1
wlan/Kbuild

@@ -1,5 +1,6 @@
 obj-m += rmnet_wlan.o
-ccflags-y := $(call cc-option,-Wno-misleading-indentation)
+ccflags-y := -I$(RMNET_CORE_INC_DIR) \
+	$(call cc-option,-Wno-misleading-indentation)
 rmnet_wlan-y := \
 	rmnet_wlan_main.o \
 	rmnet_wlan_genl.o \

+ 1 - 0
wlan/Kconfig

@@ -5,5 +5,6 @@
 menuconfig RMNET_WLAN
     tristate "Rmnet WLAN support"
     default m
+    depends on RMNET_CORE
     ---help---
         WLAN processing module for RmNet driver

+ 2 - 1
wlan/Makefile

@@ -2,11 +2,12 @@
 RMNET_WLAN_SELECT := CONFIG_RMNET_WLAN=m
 KBUILD_OPTIONS += $(RMNET_WLAN_SELECT)
 KBUILD_OPTIONS += $(KBUILD_EXTRA) # Extra config if any
+KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_PATH)/Module.symvers
 
 M ?= $(shell pwd)
 
 all:
-	$(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS)
+	$(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

+ 11 - 6
wlan/rmnet_wlan.h

@@ -19,11 +19,14 @@ 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 
+DATARMNET8d3c2559ca DATARMNET7ed5754a5c;};struct DATARMNETe117226f58{union{
+__be32 DATARMNETdfe430c2d6;struct in6_addr DATARMNET815cbb4bf5;};union{__be32 
+DATARMNET2cb607d686;struct in6_addr DATARMNETc3f31215b7;};__be16 
+DATARMNET08e913477e;__be16 DATARMNETda7f7fa492;u8 DATARMNET0d956cc77a;};enum{
+DATARMNET356f2a237e,DATARMNET45ee632553,DATARMNET9bfbc31cd6,DATARMNETdcafdec32a,
+};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*
@@ -47,6 +50,8 @@ DATARMNET0a4704e5e0(struct DATARMNETb89ecedefc*DATARMNET3396919a68);int
 DATARMNET078f6bd384(void);void DATARMNETfae36afa03(void);char*
 DATARMNET934406764d(void);char*DATARMNETe447822105(void);struct 
 DATARMNET41b426061d*DATARMNETcc0a01df2a(struct DATARMNET8d3c2559ca*
-DATARMNET54338da2ff);
+DATARMNET54338da2ff);int DATARMNET4c1c11d8a5(struct DATARMNETe117226f58*
+DATARMNET3396919a68);int DATARMNET56fde5181e(void);extern struct 
+DATARMNETe117226f58*DATARMNETcde6e442f5;
 #endif
 

+ 30 - 5
wlan/rmnet_wlan_connection.c

@@ -25,6 +25,7 @@
 #define DATARMNET8fc07fbb24 ((0xeb7+1158-0x132d))
 #define DATARMNETeaf0945284 \
 	(const_ilog2(DATARMNET8fc07fbb24))
+extern void(*rmnet_wlan_ll_tuple_hook)(struct sk_buff*DATARMNET543491eb0f);
 struct DATARMNET4f49486833{struct hlist_node DATARMNETe8608dd267;struct rcu_head
  DATARMNET28bfe9e6ad;struct hrtimer DATARMNET9f31ce5d2d;struct 
 DATARMNET0ca9d8ead7 DATARMNET54338da2ff;struct DATARMNET8d3c2559ca 
@@ -116,8 +117,8 @@ 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 
+DATARMNET39542b437e=dev_get_by_name_rcu(&init_net,"dummy0");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(
@@ -306,9 +307,33 @@ 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(
+rcu_read_unlock();}void DATARMNET6f73df41cd(struct sk_buff*DATARMNET543491eb0f){
+int protocol=-(0xd26+209-0xdf6);struct DATARMNETe117226f58*DATARMNET3396919a68=
+rcu_dereference(DATARMNETcde6e442f5);if(!DATARMNET3396919a68)return;if(
+DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9
+,DATARMNETbf6548198e;DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,
+(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!
+DATARMNET86f1f2cdc9)return;if(DATARMNET86f1f2cdc9->version!=DATARMNET3396919a68
+->DATARMNET0d956cc77a&&DATARMNET86f1f2cdc9->saddr!=DATARMNET3396919a68->
+DATARMNETdfe430c2d6&&DATARMNET86f1f2cdc9->daddr!=DATARMNET3396919a68->
+DATARMNET2cb607d686)return;protocol=DATARMNET86f1f2cdc9->protocol;}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)return;if(DATARMNETbf55123e5b->
+version!=DATARMNET3396919a68->DATARMNET0d956cc77a&&ipv6_addr_cmp(&
+DATARMNETbf55123e5b->saddr,&DATARMNET3396919a68->DATARMNET815cbb4bf5)&&
+ipv6_addr_cmp(&DATARMNETbf55123e5b->daddr,&DATARMNET3396919a68->
+DATARMNETc3f31215b7))return;protocol=DATARMNETbf55123e5b->nexthdr;}if(protocol==
+IPPROTO_UDP){if(udp_hdr(DATARMNET543491eb0f)->source==DATARMNET3396919a68->
+DATARMNET08e913477e&&udp_hdr(DATARMNET543491eb0f)->dest==DATARMNET3396919a68->
+DATARMNETda7f7fa492)goto DATARMNET9573fcc9c6;}return;DATARMNET9573fcc9c6:
+DATARMNET543491eb0f->priority=2607612160;DATARMNET5ca94dbc3c(DATARMNETc2cade1d75
+);}void DATARMNET333c107558(void){rcu_assign_pointer(rmnet_wlan_ll_tuple_hook,
+DATARMNET6f73df41cd);}void DATARMNET4c08c7210c(void){rcu_assign_pointer(
+rmnet_wlan_ll_tuple_hook,NULL);synchronize_rcu();}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(&

+ 3 - 1
wlan/rmnet_wlan_connection.h

@@ -1,5 +1,6 @@
 /* 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
  *
@@ -14,7 +15,8 @@ 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(
+DATARMNETf4e1a29dbc(void);void DATARMNET333c107558(void);void 
+DATARMNET4c08c7210c(void);int DATARMNET9f106ed933(void);int DATARMNETf56cbaa2b1(
 void);
 #endif
 

+ 62 - 12
wlan/rmnet_wlan_genl.c

@@ -24,7 +24,10 @@ 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,},};
+NLA_U16,},[DATARMNET149cafb1b7]={.type=NLA_U8,},[DATARMNET185fd3de68]={.type=
+NLA_NUL_STRING,.len=INET6_ADDRSTRLEN,},[DATARMNETd996a18fa6]={.type=
+NLA_NUL_STRING,.len=INET6_ADDRSTRLEN,},[DATARMNETd3dacf7559]={.type=NLA_U16,},[
+DATARMNETeaebe95912]={.type=NLA_U16,},};
 #define DATARMNET58eca5265b(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e) \
 	{ \
 		.cmd = DATARMNET5aeb0ef9bc, \
@@ -213,6 +216,47 @@ DATARMNET54338da2ff,
 DATARMNET54338da2ff);}static int DATARMNETa4773cb837(struct sk_buff*
 DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){(void)
 DATARMNET543491eb0f;(void)DATARMNET54338da2ff;DATARMNET078f6bd384();return
+(0xd2d+202-0xdf7);}static int DATARMNET6a53c4576d(struct sk_buff*
+DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct 
+DATARMNETe117226f58 DATARMNET3396919a68={};struct nlattr*DATARMNETef7cdd7b6b;
+char*DATARMNETd7f4d7c495;if(!DATARMNET54338da2ff->attrs[DATARMNET185fd3de68]||!
+DATARMNET54338da2ff->attrs[DATARMNETd996a18fa6]||!DATARMNET54338da2ff->attrs[
+DATARMNETd3dacf7559]||!DATARMNET54338da2ff->attrs[DATARMNETeaebe95912]){
+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;}DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
+DATARMNET185fd3de68];DATARMNETd7f4d7c495=nla_data(DATARMNETef7cdd7b6b);if(strchr
+(DATARMNETd7f4d7c495,DATARMNET5fe2c6571f)){if(in6_pton(DATARMNETd7f4d7c495,
+nla_len(DATARMNETef7cdd7b6b),DATARMNET3396919a68.DATARMNET815cbb4bf5.s6_addr,-
+(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff
+,
+"\x53\x52\x43\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;}DATARMNET3396919a68.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else
+{if(in4_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),(u8*)&
+DATARMNET3396919a68.DATARMNETdfe430c2d6,-(0xd26+209-0xdf6),NULL)!=
+(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
+"\x53\x52\x43\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;}DATARMNET3396919a68.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}
+DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[DATARMNETd996a18fa6];
+DATARMNETd7f4d7c495=nla_data(DATARMNETef7cdd7b6b);if(strchr(DATARMNETd7f4d7c495,
+DATARMNET5fe2c6571f)){if(in6_pton(DATARMNETd7f4d7c495,nla_len(
+DATARMNETef7cdd7b6b),DATARMNET3396919a68.DATARMNETc3f31215b7.s6_addr,-
+(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff
+,
+"\x44\x53\x54\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;}}else{if(in4_pton(DATARMNETd7f4d7c495,nla_len(
+DATARMNETef7cdd7b6b),(u8*)&DATARMNET3396919a68.DATARMNET2cb607d686,-
+(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff
+,
+"\x44\x53\x54\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;}}DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
+DATARMNETd3dacf7559];DATARMNET3396919a68.DATARMNET08e913477e=nla_get_be16(
+DATARMNETef7cdd7b6b);DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
+DATARMNETeaebe95912];DATARMNET3396919a68.DATARMNETda7f7fa492=nla_get_be16(
+DATARMNETef7cdd7b6b);DATARMNET4c1c11d8a5(&DATARMNET3396919a68);return
+(0xd2d+202-0xdf7);}static int DATARMNET425149b729(struct sk_buff*
+DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){(void)
+DATARMNET543491eb0f;(void)DATARMNET54338da2ff;DATARMNET56fde5181e();return
 (0xd2d+202-0xdf7);}static const struct genl_ops DATARMNETf9df19988d[]={
 DATARMNET58eca5265b(DATARMNET0604500302,DATARMNET72501635c8),DATARMNET58eca5265b
 (DATARMNET91becfb9ac,DATARMNET41dd9b14ab),DATARMNET58eca5265b(
@@ -223,11 +267,13 @@ DATARMNETb86993aefb),DATARMNET58eca5265b(DATARMNET18145b00f6,DATARMNETc175a08219
 DATARMNET58eca5265b(DATARMNET6d50a30ec2,DATARMNETa6aec23397),DATARMNET58eca5265b
 (DATARMNET2e5d7ed755,DATARMNETa4773cb837),DATARMNET58eca5265b(
 DATARMNETd37aaf8b58,DATARMNET16add73734),DATARMNET58eca5265b(DATARMNET3626d362d4
-,DATARMNETb318ed4796),};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(
+,DATARMNETb318ed4796),DATARMNET58eca5265b(DATARMNET433fe7da93,
+DATARMNET6a53c4576d),DATARMNET58eca5265b(DATARMNET77d31b75a3,DATARMNET425149b729
+),};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(
@@ -235,10 +281,12 @@ DATARMNET61c2303133){pr_err(
 ,__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(
+,__func__,DATARMNET61c2303133);goto DATARMNETb042feb7e2;}DATARMNET333c107558();
+pr_info(
+"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x5f\x73\x65\x74\x5f\x68\x6f\x6f\x6b\x73\x20\x73\x65\x74" "\n"
+,__func__);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(
@@ -246,5 +294,7 @@ pr_err(
 ,__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);
+,__func__,DATARMNET61c2303133);DATARMNET4c08c7210c();pr_info(
+"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x5f\x75\x6e\x73\x65\x74\x5f\x68\x6f\x6f\x6b\x73\x20\x75\x6e\x73\x65\x74" "\n"
+,__func__);}MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");module_init(
+DATARMNET7eb0fa5c8f);module_exit(DATARMNET7a381832d5);

+ 5 - 3
wlan/rmnet_wlan_genl.h

@@ -13,9 +13,11 @@
 enum{DATARMNET6ea2b7cfbe,DATARMNET0604500302,DATARMNET91becfb9ac,
 DATARMNET14a3625b43,DATARMNET4478d3511b,DATARMNETc2d5a4e103,DATARMNET18145b00f6,
 DATARMNETb8857fe6d9,DATARMNET6d50a30ec2,DATARMNET2e5d7ed755,DATARMNETd37aaf8b58,
-DATARMNET3626d362d4,DATARMNETce1982dccc,};enum{DATARMNET09a5930cdf,
-DATARMNET4e9cd7b8bf,DATARMNETb8afde4a5a,DATARMNETea4b56dc2b,DATARMNET8bf80e4b66,
-DATARMNET44a9a789aa,DATARMNET149cafb1b7,DATARMNET0bfbea52c0,};
+DATARMNET3626d362d4,DATARMNET433fe7da93,DATARMNET77d31b75a3,DATARMNETce1982dccc,
+};enum{DATARMNET09a5930cdf,DATARMNET4e9cd7b8bf,DATARMNETb8afde4a5a,
+DATARMNETea4b56dc2b,DATARMNET8bf80e4b66,DATARMNET44a9a789aa,DATARMNET149cafb1b7,
+DATARMNET185fd3de68,DATARMNETd996a18fa6,DATARMNETd3dacf7559,DATARMNETeaebe95912,
+DATARMNET0bfbea52c0,};
 #define DATARMNETebcc30fe04 (DATARMNET0bfbea52c0 - (0xd26+209-0xdf6))
 enum{DATARMNET0dcb7acdac,DATARMNET8c062d7709,DATARMNET93b5e3666d,};
 #define DATARMNETf6bbad94a5 (DATARMNET93b5e3666d - (0xd26+209-0xdf6))

+ 66 - 39
wlan/rmnet_wlan_main.c

@@ -25,12 +25,13 @@
 #include "rmnet_wlan_stats.h"
 #include "rmnet_wlan_fragment.h"
 #include "rmnet_wlan_connection.h"
-static char*verinfo[]={"\x62\x31\x62\x63\x64\x66\x66\x61",
-"\x61\x33\x33\x33\x36\x37\x61\x31","\x37\x34\x31\x35\x39\x32\x31\x63",
-"\x33\x35\x36\x63\x34\x39\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,
+static char*verinfo[]={"\x39\x66\x33\x66\x31\x31\x33\x30",
+"\x62\x31\x62\x63\x64\x66\x66\x61","\x61\x33\x33\x33\x36\x37\x61\x31",
+"\x37\x34\x31\x35\x39\x32\x31\x63","\x33\x35\x36\x63\x34\x39\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))
@@ -44,20 +45,21 @@ 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 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,
+DATARMNET6b4ac8224c);static DEFINE_MUTEX(DATARMNET38726379d1);static 
+DEFINE_SPINLOCK(DATARMNETe6ee7c273e);static char DATARMNET30500ba48c[IFNAMSIZ];
+static char DATARMNET755f0f0df8[IFNAMSIZ];struct DATARMNETe117226f58*
+DATARMNETcde6e442f5;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(
@@ -192,14 +194,32 @@ 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,
+DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f)return true;}return false;}static int 
+DATARMNET51f60f2fd3(struct DATARMNETe117226f58*DATARMNET3396919a68)__must_hold(&
+DATARMNET38726379d1){struct DATARMNETe117226f58*DATARMNET28d35f5346;struct 
+DATARMNETe117226f58*DATARMNETe302a1b49b;unsigned long DATARMNET0861dd728f;
+DATARMNET28d35f5346=kzalloc(sizeof(*DATARMNET28d35f5346),GFP_KERNEL);if(!
+DATARMNET28d35f5346){return-ENOMEM;}memcpy(DATARMNET28d35f5346,
+DATARMNET3396919a68,sizeof(*DATARMNET28d35f5346));spin_lock_irqsave(&
+DATARMNETe6ee7c273e,DATARMNET0861dd728f);DATARMNETe302a1b49b=
+rcu_dereference_protected(DATARMNETcde6e442f5,lockdep_is_held(&
+DATARMNETe6ee7c273e));rcu_assign_pointer(DATARMNETcde6e442f5,DATARMNET28d35f5346
+);spin_unlock_irqrestore(&DATARMNETe6ee7c273e,DATARMNET0861dd728f);
+synchronize_rcu();if(DATARMNETe302a1b49b)kfree(DATARMNETe302a1b49b);return
+(0xd2d+202-0xdf7);}static int DATARMNETb9c7621157(void)__must_hold(&
+DATARMNET38726379d1){struct DATARMNETe117226f58*DATARMNETe302a1b49b;unsigned 
+long DATARMNET0861dd728f;spin_lock_irqsave(&DATARMNETe6ee7c273e,
+DATARMNET0861dd728f);DATARMNETe302a1b49b=rcu_dereference_protected(
+DATARMNETcde6e442f5,lockdep_is_held(&DATARMNETe6ee7c273e));rcu_assign_pointer(
+DATARMNETcde6e442f5,NULL);spin_unlock_irqrestore(&DATARMNETe6ee7c273e,
+DATARMNET0861dd728f);synchronize_rcu();if(DATARMNETe302a1b49b)kfree(
+DATARMNETe302a1b49b);return(0xd2d+202-0xdf7);}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(&
@@ -314,16 +334,17 @@ DATARMNET268a8314cf;if(!DATARMNET755f0f0df8[(0xd2d+202-0xdf7)])return
 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(
+DATARMNET8c0e010dfb();DATARMNETe5b03fe375();DATARMNETad43e44c7e();
+DATARMNET56fde5181e();}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->
@@ -497,7 +518,13 @@ DATARMNET611d08d671+sizeof(*DATARMNET75be5f3406),sizeof(*DATARMNETdf2dbc641f),&
 DATARMNET6c56902362);if(!DATARMNETdf2dbc641f)return false;return!!(*
 DATARMNETdf2dbc641f);}bool DATARMNET0a4704e5e0(struct DATARMNETb89ecedefc*
 DATARMNET3396919a68){return DATARMNETa96214b53c(DATARMNET3396919a68->
-DATARMNETf0d9de7e2f);}int DATARMNET078f6bd384(void){DATARMNETbb4efa5b3d();return
+DATARMNETf0d9de7e2f);}int DATARMNET4c1c11d8a5(struct DATARMNETe117226f58*
+DATARMNET3396919a68){int DATARMNET268a8314cf;mutex_lock(&DATARMNET38726379d1);
+DATARMNET268a8314cf=DATARMNET51f60f2fd3(DATARMNET3396919a68);mutex_unlock(&
+DATARMNET38726379d1);return DATARMNET268a8314cf;}int DATARMNET56fde5181e(void){
+int DATARMNET268a8314cf;mutex_lock(&DATARMNET38726379d1);DATARMNET268a8314cf=
+DATARMNETb9c7621157();mutex_unlock(&DATARMNET38726379d1);return 
+DATARMNET268a8314cf;}int DATARMNET078f6bd384(void){DATARMNETbb4efa5b3d();return
 (0xd2d+202-0xdf7);}void DATARMNETfae36afa03(void){DATARMNETbb4efa5b3d();}char*
 DATARMNET934406764d(void){return DATARMNET30500ba48c;}char*DATARMNETe447822105(
 void){return DATARMNET755f0f0df8;}

+ 14 - 14
wlan/rmnet_wlan_stats.h

@@ -14,19 +14,19 @@ DATARMNETf4c2a83526,DATARMNET591885a019,DATARMNETd8273aa7e1,DATARMNET7a58a5c1fc,
 DATARMNETba232077da,DATARMNETe75ad1a949,DATARMNETd691057b85,DATARMNETd1ad664d00,
 DATARMNETef2af4f071,DATARMNETebc1b87b7d,DATARMNET21bdbe6a27,DATARMNET90782e08cf,
 DATARMNETb7c9f010b2,DATARMNET990edaea89,DATARMNETa726eebea4,DATARMNET0981317411,
-DATARMNETb59245fef4,DATARMNETf1f7e2c408,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);
+DATARMNETb59245fef4,DATARMNETf1f7e2c408,DATARMNETc2cade1d75,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