/* 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 #include #include #include #include #include #include #include static char*verinfo[]={"\x62\x31\x30\x66\x32\x65\x61\x32", "\x65\x36\x33\x37\x31\x64\x34\x30","\x37\x34\x31\x35\x39\x32\x31\x63", "\x61\x65\x32\x34\x34\x61\x39\x64"};module_param_array(verinfo,charp,NULL, (0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo, "\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72" );static const char*DATARMNETf1bb41174a="\x31\x2e\x32"; #define DATARMNETe632b2e0b0 (0xd11+230-0xdf3) static const u8 DATARMNET93bdeed8cb[TC_PRIO_MAX+(0xd26+209-0xdf6)]={ (0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4), (0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd2d+202-0xdf7),(0xd26+209-0xdf6), (0xd1f+216-0xdf5),(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4), (0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4)};static const int DATARMNET91bbdde74c[DATARMNETe632b2e0b0]={(0xbf7+4421-0x1c3c)* (0xdf7+2629-0x143c),(0xef7+694-0x112d)*(0xdf7+2629-0x143c),(0xef7+1142-0x132d)* (0xdf7+2629-0x143c),(0xeb7+1174-0x132d)*(0xdf7+2629-0x143c)};static const int DATARMNET9dd1382d86[DATARMNETe632b2e0b0]={(0xd35+210-0xdff),(0xd03+244-0xdf1), (0xd11+230-0xdf3),(0xd1f+216-0xdf5)};static const int DATARMNET14ed95ab67[ DATARMNETe632b2e0b0]={(0xd11+230-0xdf3),(0xd18+223-0xdf4),(0xd1f+216-0xdf5), (0xd26+209-0xdf6)};struct DATARMNET93da852cc2{struct qdisc_skb_head q;int DATARMNET1de7b3d891;int DATARMNETf9afebb887;unsigned int DATARMNETb93c9b44d9; unsigned int DATARMNET04fa439380;};struct DATARMNET74e95d25df{struct DATARMNET93da852cc2 DATARMNETb4180393e4[DATARMNETe632b2e0b0];};static int DATARMNETdaae0b9ea8(struct DATARMNET74e95d25df*DATARMNETe823dcf978){int DATARMNET70fa801d65=DATARMNETe632b2e0b0;int DATARMNET3c5d4329d8= DATARMNETe632b2e0b0;int DATARMNET2372d14a3d,DATARMNET713b43476b, DATARMNETdc41089b89=-(0xd26+209-0xdf6);for(DATARMNET2372d14a3d=(0xd2d+202-0xdf7) ;DATARMNET2372d14a3dDATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen> DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d]. DATARMNET04fa439380){DATARMNET713b43476b=DATARMNETe823dcf978-> DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen-DATARMNETe823dcf978-> DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNET04fa439380;if( DATARMNET713b43476b>=DATARMNETdc41089b89){DATARMNETdc41089b89= DATARMNET713b43476b;DATARMNET70fa801d65=DATARMNET2372d14a3d;}}if( DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen> DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d]. DATARMNETb93c9b44d9)DATARMNET3c5d4329d8=DATARMNET2372d14a3d;}if( DATARMNET70fa801d65DATARMNETb4180393e4[DATARMNET2372d14a3d]. DATARMNET1de7b3d891=DATARMNET9dd1382d86[DATARMNET2372d14a3d];DATARMNETe823dcf978 ->DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNETf9afebb887= DATARMNET91bbdde74c[DATARMNET2372d14a3d];}static inline void DATARMNET60cff0042c (struct DATARMNET74e95d25df*DATARMNETe823dcf978,int DATARMNET2372d14a3d,unsigned int DATARMNETf9d25d31ff){DATARMNETe823dcf978->DATARMNETb4180393e4[ DATARMNET2372d14a3d].DATARMNETb93c9b44d9=DATARMNETf9d25d31ff/(0xd27+224-0xdfd)* DATARMNET14ed95ab67[DATARMNET2372d14a3d];DATARMNETe823dcf978-> DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNET04fa439380=DATARMNETe823dcf978 ->DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNETb93c9b44d9<< (0xd26+209-0xdf6);}static int DATARMNET3a797cc4e9(struct sk_buff* DATARMNET543491eb0f,struct Qdisc*DATARMNET9b0193c8c4,struct sk_buff** DATARMNET6af05df5b3){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv( DATARMNET9b0193c8c4);unsigned int DATARMNET5affe290b8=qdisc_pkt_len( DATARMNET543491eb0f);int DATARMNETba251b7c9f;int DATARMNETa9b7aedc43;struct sk_buff*DATARMNET7495e55ca2;DATARMNETba251b7c9f=DATARMNET93bdeed8cb[ DATARMNET543491eb0f->priority&TC_PRIO_MAX];if(unlikely(DATARMNET9b0193c8c4->q. qlen>=qdisc_dev(DATARMNET9b0193c8c4)->tx_queue_len)){DATARMNETa9b7aedc43= DATARMNETdaae0b9ea8(DATARMNETe823dcf978);if(DATARMNETa9b7aedc43< DATARMNETe632b2e0b0&&DATARMNETa9b7aedc43!=DATARMNETba251b7c9f){ DATARMNET7495e55ca2=__qdisc_dequeue_head(&DATARMNETe823dcf978-> DATARMNETb4180393e4[DATARMNETa9b7aedc43].q);if(likely(DATARMNET7495e55ca2)){ DATARMNET9b0193c8c4->qstats.backlog-=qdisc_pkt_len(DATARMNET7495e55ca2); DATARMNET9b0193c8c4->q.qlen--;qdisc_drop(DATARMNET7495e55ca2,DATARMNET9b0193c8c4 ,DATARMNET6af05df5b3);}}else{return qdisc_drop(DATARMNET543491eb0f, DATARMNET9b0193c8c4,DATARMNET6af05df5b3);}}__qdisc_enqueue_tail( DATARMNET543491eb0f,&DATARMNETe823dcf978->DATARMNETb4180393e4[ DATARMNETba251b7c9f].q);qdisc_update_stats_at_enqueue(DATARMNET9b0193c8c4, DATARMNET5affe290b8);return NET_XMIT_SUCCESS;}static u8 DATARMNETf9ac3daa83( struct DATARMNET74e95d25df*DATARMNETe823dcf978){int DATARMNET2372d14a3d, DATARMNET70fa801d65=DATARMNETe632b2e0b0;for(DATARMNET2372d14a3d= (0xd2d+202-0xdf7);DATARMNET2372d14a3dDATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen) continue;if(DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d]. DATARMNET1de7b3d891<=(0xd2d+202-0xdf7)||DATARMNETe823dcf978->DATARMNETb4180393e4 [DATARMNET2372d14a3d].DATARMNETf9afebb887<=(0xd2d+202-0xdf7)){if( DATARMNET2372d14a3dDATARMNETb4180393e4[ DATARMNET2372d14a3d].q);if(likely(DATARMNET543491eb0f)){DATARMNETe823dcf978-> DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNET1de7b3d891--; DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d]. DATARMNETf9afebb887-=qdisc_pkt_len(DATARMNET543491eb0f); qdisc_update_stats_at_dequeue(DATARMNET9b0193c8c4,DATARMNET543491eb0f);}}return DATARMNET543491eb0f;}static struct sk_buff*DATARMNET5842e6aac7(struct Qdisc* DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv( DATARMNET9b0193c8c4);struct sk_buff*DATARMNET543491eb0f=NULL;u8 DATARMNET2372d14a3d;DATARMNET2372d14a3d=DATARMNETf9ac3daa83(DATARMNETe823dcf978) ;if(DATARMNET2372d14a3dDATARMNETb4180393e4[DATARMNET2372d14a3d].q.head;return DATARMNET543491eb0f;}static int DATARMNET757a7de682(struct Qdisc* DATARMNET9b0193c8c4,struct nlattr*DATARMNET8bdeb8bf5c,struct netlink_ext_ack* DATARMNET79a1f177ed){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv( DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(DATARMNET2372d14a3d= (0xd2d+202-0xdf7);DATARMNET2372d14a3dtx_queue_len);}DATARMNET9b0193c8c4->flags|= TCQ_F_CAN_BYPASS;return(0xd2d+202-0xdf7);}static void DATARMNET9593ab9587(struct Qdisc*DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978= qdisc_priv(DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(DATARMNET2372d14a3d= (0xd2d+202-0xdf7);DATARMNET2372d14a3dDATARMNETb4180393e4[DATARMNET2372d14a3d].q. head);DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.head=NULL; DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.tail=NULL; DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen= (0xd2d+202-0xdf7);DATARMNET8c1d8c9f65(DATARMNETe823dcf978,DATARMNET2372d14a3d); DATARMNET60cff0042c(DATARMNETe823dcf978,DATARMNET2372d14a3d,qdisc_dev( DATARMNET9b0193c8c4)->tx_queue_len);}}static int DATARMNET6647342968(struct Qdisc*DATARMNET9b0193c8c4,unsigned int qlen){struct DATARMNET74e95d25df* DATARMNETe823dcf978=qdisc_priv(DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for( DATARMNET2372d14a3d=(0xd2d+202-0xdf7);DATARMNET2372d14a3d