/* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 */

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