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