forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-09 244b2c5ca8b14627e4a17755e5922221e121c771
kernel/drivers/net/usb/qmi_wwan.c
....@@ -1,13 +1,10 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Copyright (c) 2012 Bjørn Mork <bjorn@mork.no>
34 *
45 * The probing code is heavily inspired by cdc_ether, which is:
56 * Copyright (C) 2003-2005 by David Brownell
67 * Copyright (C) 2006 by Ole Andre Vadla Ravnas (ActiveSync)
7
- *
8
- * This program is free software; you can redistribute it and/or
9
- * modify it under the terms of the GNU General Public License
10
- * version 2 as published by the Free Software Foundation.
118 */
129
1310 #include <linux/module.h>
....@@ -129,31 +126,9 @@
129126 struct rtnl_link_stats64 *stats)
130127 {
131128 struct qmimux_priv *priv = netdev_priv(net);
132
- unsigned int start;
133
- int cpu;
134129
135130 netdev_stats_to_stats64(stats, &net->stats);
136
-
137
- for_each_possible_cpu(cpu) {
138
- struct pcpu_sw_netstats *stats64;
139
- u64 rx_packets, rx_bytes;
140
- u64 tx_packets, tx_bytes;
141
-
142
- stats64 = per_cpu_ptr(priv->stats64, cpu);
143
-
144
- do {
145
- start = u64_stats_fetch_begin_irq(&stats64->syncp);
146
- rx_packets = stats64->rx_packets;
147
- rx_bytes = stats64->rx_bytes;
148
- tx_packets = stats64->tx_packets;
149
- tx_bytes = stats64->tx_bytes;
150
- } while (u64_stats_fetch_retry_irq(&stats64->syncp, start));
151
-
152
- stats->rx_packets += rx_packets;
153
- stats->rx_bytes += rx_bytes;
154
- stats->tx_packets += tx_packets;
155
- stats->tx_bytes += tx_bytes;
156
- }
131
+ dev_fetch_sw_netstats(stats, priv->stats64);
157132 }
158133
159134 static const struct net_device_ops qmimux_netdev_ops = {
....@@ -708,7 +683,7 @@
708683
709684 static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
710685 {
711
- int status = -1;
686
+ int status;
712687 u8 *buf = intf->cur_altsetting->extra;
713688 int len = intf->cur_altsetting->extralen;
714689 struct usb_interface_descriptor *desc = &intf->cur_altsetting->desc;
....@@ -1049,6 +1024,7 @@
10491024 {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0512)}, /* Quectel EG12/EM12 */
10501025 {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */
10511026 {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */
1027
+ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)}, /* Quectel RM520N */
10521028
10531029 /* 3. Combined interface devices matching on interface number */
10541030 {QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */
....@@ -1180,7 +1156,9 @@
11801156 {QMI_FIXED_INTF(0x05c6, 0x9080, 8)},
11811157 {QMI_FIXED_INTF(0x05c6, 0x9083, 3)},
11821158 {QMI_FIXED_INTF(0x05c6, 0x9084, 4)},
1159
+ {QMI_QUIRK_SET_DTR(0x05c6, 0x9091, 2)}, /* Compal RXM-G1 */
11831160 {QMI_FIXED_INTF(0x05c6, 0x90b2, 3)}, /* ublox R410M */
1161
+ {QMI_QUIRK_SET_DTR(0x05c6, 0x90db, 2)}, /* Compal RXM-G1 */
11841162 {QMI_FIXED_INTF(0x05c6, 0x920d, 0)},
11851163 {QMI_FIXED_INTF(0x05c6, 0x920d, 5)},
11861164 {QMI_QUIRK_SET_DTR(0x05c6, 0x9625, 4)}, /* YUGA CLM920-NC5 */
....@@ -1284,7 +1262,7 @@
12841262 {QMI_FIXED_INTF(0x2001, 0x7e3d, 4)}, /* D-Link DWM-222 A2 */
12851263 {QMI_FIXED_INTF(0x2020, 0x2031, 4)}, /* Olicard 600 */
12861264 {QMI_FIXED_INTF(0x2020, 0x2033, 4)}, /* BroadMobi BM806U */
1287
- {QMI_FIXED_INTF(0x2020, 0x2060, 4)}, /* BroadMobi BM818 */
1265
+ {QMI_QUIRK_SET_DTR(0x2020, 0x2060, 4)}, /* BroadMobi BM818 */
12881266 {QMI_FIXED_INTF(0x0f3d, 0x68a2, 8)}, /* Sierra Wireless MC7700 */
12891267 {QMI_FIXED_INTF(0x114f, 0x68a2, 8)}, /* Sierra Wireless MC7750 */
12901268 {QMI_FIXED_INTF(0x1199, 0x68a2, 8)}, /* Sierra Wireless MC7710 in QMI mode */
....@@ -1316,8 +1294,12 @@
13161294 {QMI_FIXED_INTF(0x2357, 0x0201, 4)}, /* TP-LINK HSUPA Modem MA180 */
13171295 {QMI_FIXED_INTF(0x2357, 0x9000, 4)}, /* TP-LINK MA260 */
13181296 {QMI_QUIRK_SET_DTR(0x1bc7, 0x1031, 3)}, /* Telit LE910C1-EUX */
1297
+ {QMI_QUIRK_SET_DTR(0x1bc7, 0x103a, 0)}, /* Telit LE910C4-WWX */
13191298 {QMI_QUIRK_SET_DTR(0x1bc7, 0x1040, 2)}, /* Telit LE922A */
13201299 {QMI_QUIRK_SET_DTR(0x1bc7, 0x1050, 2)}, /* Telit FN980 */
1300
+ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1060, 2)}, /* Telit LN920 */
1301
+ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1070, 2)}, /* Telit FN990 */
1302
+ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1080, 2)}, /* Telit FE990 */
13211303 {QMI_FIXED_INTF(0x1bc7, 0x1100, 3)}, /* Telit ME910 */
13221304 {QMI_FIXED_INTF(0x1bc7, 0x1101, 3)}, /* Telit ME910 dual modem */
13231305 {QMI_FIXED_INTF(0x1bc7, 0x1200, 5)}, /* Telit LE920 */
....@@ -1354,6 +1336,7 @@
13541336 {QMI_FIXED_INTF(0x413c, 0x81b3, 8)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */
13551337 {QMI_FIXED_INTF(0x413c, 0x81b6, 8)}, /* Dell Wireless 5811e */
13561338 {QMI_FIXED_INTF(0x413c, 0x81b6, 10)}, /* Dell Wireless 5811e */
1339
+ {QMI_FIXED_INTF(0x413c, 0x81c2, 8)}, /* Dell Wireless 5811e */
13571340 {QMI_FIXED_INTF(0x413c, 0x81cc, 8)}, /* Dell Wireless 5816e */
13581341 {QMI_FIXED_INTF(0x413c, 0x81d7, 0)}, /* Dell Wireless 5821e */
13591342 {QMI_FIXED_INTF(0x413c, 0x81d7, 1)}, /* Dell Wireless 5821e preproduction config */
....@@ -1368,10 +1351,12 @@
13681351 {QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)}, /* Quectel EG91 */
13691352 {QMI_QUIRK_SET_DTR(0x2c7c, 0x0195, 4)}, /* Quectel EG95 */
13701353 {QMI_FIXED_INTF(0x2c7c, 0x0296, 4)}, /* Quectel BG96 */
1354
+ {QMI_QUIRK_SET_DTR(0x2c7c, 0x030e, 4)}, /* Quectel EM05GV2 */
13711355 {QMI_QUIRK_SET_DTR(0x2cb7, 0x0104, 4)}, /* Fibocom NL678 series */
13721356 {QMI_FIXED_INTF(0x0489, 0xe0b4, 0)}, /* Foxconn T77W968 LTE */
13731357 {QMI_FIXED_INTF(0x0489, 0xe0b5, 0)}, /* Foxconn T77W968 LTE with eSIM support*/
13741358 {QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */
1359
+ {QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 */
13751360
13761361 /* 4. Gobi 1000 devices */
13771362 {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */