kernel: bump 5.4 to 5.4.105
Ran update_kernel.sh in a fresh clone without any existing toolchains. Removed upstreamed generic-backports: 830-v5.12-0001-net-usb-qmi_wwan-support-ZTE-P685M-modem.patch 831-v5.9-usbip-tools-fix-build-error-for-multiple-definition.patch 755-v5.8-net-dsa-add-GRO-support-via-gro_cells.patch Build system: x86_64 Build-tested: ipq806x/R7800 Run-tested: ipq806x/R7800 No dmesg regressions, everything functional Signed-off-by: John Audia <graysky@archlinux.us> Tested-by: Curtis Deptuck <curtdept@me.com> [x86/64] [squash patches] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
		
				
					committed by
					
						
						Adrian Schmutzler
					
				
			
			
				
	
			
			
			
						parent
						
							1a7ef2c3cf
						
					
				
				
					commit
					e7fa97b326
				
			@@ -6,10 +6,10 @@ ifdef CONFIG_TESTING_KERNEL
 | 
				
			|||||||
  KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
 | 
					  KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LINUX_VERSION-5.4 = .102
 | 
					LINUX_VERSION-5.4 = .105
 | 
				
			||||||
LINUX_VERSION-5.10 = .20
 | 
					LINUX_VERSION-5.10 = .20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LINUX_KERNEL_HASH-5.4.102 = fd697ce1c3f6024d4ae77d4eb5a1552199407b60cb8e90bc621e23cbce639aed
 | 
					LINUX_KERNEL_HASH-5.4.105 = 244e4cd16184285df55ec5a9501daba011aa8b85c5527ee05eab4592e70fb8b6
 | 
				
			||||||
LINUX_KERNEL_HASH-5.10.20 = 9be37146feba42be05137cf900a7d9012990b5a1d5e59bc0c8da1f86952930a3
 | 
					LINUX_KERNEL_HASH-5.10.20 = 9be37146feba42be05137cf900a7d9012990b5a1d5e59bc0c8da1f86952930a3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 | 
					remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
 | 
				
			|||||||
 #define USB_VENDOR_ID_BELKIN		0x050d
 | 
					 #define USB_VENDOR_ID_BELKIN		0x050d
 | 
				
			||||||
 #define USB_DEVICE_ID_FLIP_KVM		0x3201
 | 
					 #define USB_DEVICE_ID_FLIP_KVM		0x3201
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -1254,6 +1257,9 @@
 | 
					@@ -1257,6 +1260,9 @@
 | 
				
			||||||
 #define USB_VENDOR_ID_XAT	0x2505
 | 
					 #define USB_VENDOR_ID_XAT	0x2505
 | 
				
			||||||
 #define USB_DEVICE_ID_XAT_CSR	0x0220
 | 
					 #define USB_DEVICE_ID_XAT_CSR	0x0220
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
 | 
				
			|||||||
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
 | 
					 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
 | 
				
			||||||
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
 | 
					 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
 | 
				
			||||||
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
 | 
					 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
 | 
				
			||||||
@@ -189,6 +190,7 @@ static const struct hid_device_id hid_qu
 | 
					@@ -190,6 +191,7 @@ static const struct hid_device_id hid_qu
 | 
				
			||||||
 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
 | 
					 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
 | 
				
			||||||
 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
 | 
					 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
 | 
				
			||||||
 	{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
 | 
					 	{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
 | 
				
			|||||||
 	default:
 | 
					 	default:
 | 
				
			||||||
 		return -EINVAL;
 | 
					 		return -EINVAL;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -2422,6 +2428,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(s
 | 
					@@ -2423,6 +2429,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(s
 | 
				
			||||||
 	case V4L2_CTRL_TYPE_VP8_FRAME_HEADER:
 | 
					 	case V4L2_CTRL_TYPE_VP8_FRAME_HEADER:
 | 
				
			||||||
 		elem_size = sizeof(struct v4l2_ctrl_vp8_frame_header);
 | 
					 		elem_size = sizeof(struct v4l2_ctrl_vp8_frame_header);
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
@@ -49,7 +49,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
 | 
				
			|||||||
 	default:
 | 
					 	default:
 | 
				
			||||||
 		if (type < V4L2_CTRL_COMPOUND_TYPES)
 | 
					 		if (type < V4L2_CTRL_COMPOUND_TYPES)
 | 
				
			||||||
 			elem_size = sizeof(s32);
 | 
					 			elem_size = sizeof(s32);
 | 
				
			||||||
@@ -4086,6 +4095,18 @@ int __v4l2_ctrl_s_ctrl_string(struct v4l
 | 
					@@ -4087,6 +4096,18 @@ int __v4l2_ctrl_s_ctrl_string(struct v4l
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 EXPORT_SYMBOL(__v4l2_ctrl_s_ctrl_string);
 | 
					 EXPORT_SYMBOL(__v4l2_ctrl_s_ctrl_string);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -820,7 +820,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
 | 
				
			|||||||
 	default:
 | 
					 	default:
 | 
				
			||||||
 		return -EINVAL;
 | 
					 		return -EINVAL;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -2433,6 +2531,15 @@ static struct v4l2_ctrl *v4l2_ctrl_new(s
 | 
					@@ -2434,6 +2532,15 @@ static struct v4l2_ctrl *v4l2_ctrl_new(s
 | 
				
			||||||
 	case V4L2_CTRL_TYPE_VP8_FRAME_HEADER:
 | 
					 	case V4L2_CTRL_TYPE_VP8_FRAME_HEADER:
 | 
				
			||||||
 		elem_size = sizeof(struct v4l2_ctrl_vp8_frame_header);
 | 
					 		elem_size = sizeof(struct v4l2_ctrl_vp8_frame_header);
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -106,7 +106,7 @@ Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
 | 
				
			|||||||
 	case V4L2_CTRL_TYPE_AREA:
 | 
					 	case V4L2_CTRL_TYPE_AREA:
 | 
				
			||||||
 		area = p;
 | 
					 		area = p;
 | 
				
			||||||
 		if (!area->width || !area->height)
 | 
					 		if (!area->width || !area->height)
 | 
				
			||||||
@@ -2540,6 +2547,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(s
 | 
					@@ -2541,6 +2548,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(s
 | 
				
			||||||
 	case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS:
 | 
					 	case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS:
 | 
				
			||||||
 		elem_size = sizeof(struct v4l2_ctrl_hevc_slice_params);
 | 
					 		elem_size = sizeof(struct v4l2_ctrl_hevc_slice_params);
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 #define dprintk(vdev, fmt, arg...) do {					\
 | 
					 #define dprintk(vdev, fmt, arg...) do {					\
 | 
				
			||||||
 	if (!WARN_ON(!(vdev)) && ((vdev)->dev_debug & V4L2_DEV_DEBUG_CTRL)) \
 | 
					 	if (!WARN_ON(!(vdev)) && ((vdev)->dev_debug & V4L2_DEV_DEBUG_CTRL)) \
 | 
				
			||||||
@@ -4577,3 +4578,42 @@ __poll_t v4l2_ctrl_poll(struct file *fil
 | 
					@@ -4578,3 +4579,42 @@ __poll_t v4l2_ctrl_poll(struct file *fil
 | 
				
			||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 EXPORT_SYMBOL(v4l2_ctrl_poll);
 | 
					 EXPORT_SYMBOL(v4l2_ctrl_poll);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,7 @@ Cc: richard.purdie@linuxfoundation.org
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/arch/mips/vdso/Makefile
 | 
					--- a/arch/mips/vdso/Makefile
 | 
				
			||||||
+++ b/arch/mips/vdso/Makefile
 | 
					+++ b/arch/mips/vdso/Makefile
 | 
				
			||||||
@@ -29,6 +29,7 @@ endif
 | 
					@@ -26,6 +26,7 @@ ccflags-vdso := \
 | 
				
			||||||
 cflags-vdso := $(ccflags-vdso) \
 | 
					 cflags-vdso := $(ccflags-vdso) \
 | 
				
			||||||
 	$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
 | 
					 	$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
 | 
				
			||||||
 	-O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \
 | 
					 	-O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
				
			|||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
--- a/net/dsa/dsa_priv.h
 | 
					--- a/net/dsa/dsa_priv.h
 | 
				
			||||||
+++ b/net/dsa/dsa_priv.h
 | 
					+++ b/net/dsa/dsa_priv.h
 | 
				
			||||||
@@ -136,6 +136,7 @@ int dsa_port_bridge_join(struct dsa_port
 | 
					@@ -139,6 +139,7 @@ int dsa_port_bridge_join(struct dsa_port
 | 
				
			||||||
 void dsa_port_bridge_leave(struct dsa_port *dp, struct net_device *br);
 | 
					 void dsa_port_bridge_leave(struct dsa_port *dp, struct net_device *br);
 | 
				
			||||||
 int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering,
 | 
					 int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering,
 | 
				
			||||||
 			    struct switchdev_trans *trans);
 | 
					 			    struct switchdev_trans *trans);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,143 +0,0 @@
 | 
				
			|||||||
From: Alexander Lobakin <bloodyreaper@yandex.ru>
 | 
					 | 
				
			||||||
Date: Tue, 21 Apr 2020 16:41:08 +0300
 | 
					 | 
				
			||||||
Subject: [PATCH] net: dsa: add GRO support via gro_cells
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
gro_cells lib is used by different encapsulating netdevices, such as
 | 
					 | 
				
			||||||
geneve, macsec, vxlan etc. to speed up decapsulated traffic processing.
 | 
					 | 
				
			||||||
CPU tag is a sort of "encapsulation", and we can use the same mechs to
 | 
					 | 
				
			||||||
greatly improve overall DSA performance.
 | 
					 | 
				
			||||||
skbs are passed to the GRO layer after removing CPU tags, so we don't
 | 
					 | 
				
			||||||
need any new packet offload types as it was firstly proposed by me in
 | 
					 | 
				
			||||||
the first GRO-over-DSA variant [1].
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The size of struct gro_cells is sizeof(void *), so hot struct
 | 
					 | 
				
			||||||
dsa_slave_priv becomes only 4/8 bytes bigger, and all critical fields
 | 
					 | 
				
			||||||
remain in one 32-byte cacheline.
 | 
					 | 
				
			||||||
The other positive side effect is that drivers for network devices
 | 
					 | 
				
			||||||
that can be shipped as CPU ports of DSA-driven switches can now use
 | 
					 | 
				
			||||||
napi_gro_frags() to pass skbs to kernel. Packets built that way are
 | 
					 | 
				
			||||||
completely non-linear and are likely being dropped without GRO.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This was tested on to-be-mainlined-soon Ethernet driver that uses
 | 
					 | 
				
			||||||
napi_gro_frags(), and the overall performance was on par with the
 | 
					 | 
				
			||||||
variant from [1], sometimes even better due to minimal overhead.
 | 
					 | 
				
			||||||
net.core.gro_normal_batch tuning may help to push it to the limit
 | 
					 | 
				
			||||||
on particular setups and platforms.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
iperf3 IPoE VLAN NAT TCP forwarding (port1.218 -> port0) setup
 | 
					 | 
				
			||||||
on 1.2 GHz MIPS board:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
5.7-rc2 baseline:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[ID]  Interval         Transfer     Bitrate        Retr
 | 
					 | 
				
			||||||
[ 5]  0.00-120.01 sec  9.00 GBytes  644 Mbits/sec  413  sender
 | 
					 | 
				
			||||||
[ 5]  0.00-120.00 sec  8.99 GBytes  644 Mbits/sec       receiver
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Iface      RX packets  TX packets
 | 
					 | 
				
			||||||
eth0       7097731     7097702
 | 
					 | 
				
			||||||
port0      426050      6671829
 | 
					 | 
				
			||||||
port1      6671681     425862
 | 
					 | 
				
			||||||
port1.218  6671677     425851
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
With this patch:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[ID]  Interval         Transfer     Bitrate        Retr
 | 
					 | 
				
			||||||
[ 5]  0.00-120.01 sec  12.2 GBytes  870 Mbits/sec  122  sender
 | 
					 | 
				
			||||||
[ 5]  0.00-120.00 sec  12.2 GBytes  870 Mbits/sec       receiver
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Iface      RX packets  TX packets
 | 
					 | 
				
			||||||
eth0       9474792     9474777
 | 
					 | 
				
			||||||
port0      455200      353288
 | 
					 | 
				
			||||||
port1      9019592     455035
 | 
					 | 
				
			||||||
port1.218  353144      455024
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
v2:
 | 
					 | 
				
			||||||
 - Add some performance examples in the commit message;
 | 
					 | 
				
			||||||
 - No functional changes.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1] https://lore.kernel.org/netdev/20191230143028.27313-1-alobakin@dlink.ru/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Alexander Lobakin <bloodyreaper@yandex.ru>
 | 
					 | 
				
			||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/net/dsa/Kconfig
 | 
					 | 
				
			||||||
+++ b/net/dsa/Kconfig
 | 
					 | 
				
			||||||
@@ -9,6 +9,7 @@ menuconfig NET_DSA
 | 
					 | 
				
			||||||
 	tristate "Distributed Switch Architecture"
 | 
					 | 
				
			||||||
 	depends on HAVE_NET_DSA
 | 
					 | 
				
			||||||
 	depends on BRIDGE || BRIDGE=n
 | 
					 | 
				
			||||||
+	select GRO_CELLS
 | 
					 | 
				
			||||||
 	select NET_SWITCHDEV
 | 
					 | 
				
			||||||
 	select PHYLINK
 | 
					 | 
				
			||||||
 	select NET_DEVLINK
 | 
					 | 
				
			||||||
--- a/net/dsa/dsa.c
 | 
					 | 
				
			||||||
+++ b/net/dsa/dsa.c
 | 
					 | 
				
			||||||
@@ -238,7 +238,7 @@ static int dsa_switch_rcv(struct sk_buff
 | 
					 | 
				
			||||||
 	if (dsa_skb_defer_rx_timestamp(p, skb))
 | 
					 | 
				
			||||||
 		return 0;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-	netif_receive_skb(skb);
 | 
					 | 
				
			||||||
+	gro_cells_receive(&p->gcells, skb);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	return 0;
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
--- a/net/dsa/dsa_priv.h
 | 
					 | 
				
			||||||
+++ b/net/dsa/dsa_priv.h
 | 
					 | 
				
			||||||
@@ -11,6 +11,7 @@
 | 
					 | 
				
			||||||
 #include <linux/netdevice.h>
 | 
					 | 
				
			||||||
 #include <linux/netpoll.h>
 | 
					 | 
				
			||||||
 #include <net/dsa.h>
 | 
					 | 
				
			||||||
+#include <net/gro_cells.h>
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 enum {
 | 
					 | 
				
			||||||
 	DSA_NOTIFIER_AGEING_TIME,
 | 
					 | 
				
			||||||
@@ -68,6 +69,8 @@ struct dsa_slave_priv {
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	struct pcpu_sw_netstats	*stats64;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+	struct gro_cells	gcells;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 	/* DSA port data, such as switch, port index, etc. */
 | 
					 | 
				
			||||||
 	struct dsa_port		*dp;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
--- a/net/dsa/slave.c
 | 
					 | 
				
			||||||
+++ b/net/dsa/slave.c
 | 
					 | 
				
			||||||
@@ -1431,6 +1431,11 @@ int dsa_slave_create(struct dsa_port *po
 | 
					 | 
				
			||||||
 		free_netdev(slave_dev);
 | 
					 | 
				
			||||||
 		return -ENOMEM;
 | 
					 | 
				
			||||||
 	}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	ret = gro_cells_init(&p->gcells, slave_dev);
 | 
					 | 
				
			||||||
+	if (ret)
 | 
					 | 
				
			||||||
+		goto out_free;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 	p->dp = port;
 | 
					 | 
				
			||||||
 	INIT_LIST_HEAD(&p->mall_tc_list);
 | 
					 | 
				
			||||||
 	INIT_WORK(&port->xmit_work, dsa_port_xmit_work);
 | 
					 | 
				
			||||||
@@ -1443,7 +1448,7 @@ int dsa_slave_create(struct dsa_port *po
 | 
					 | 
				
			||||||
 	ret = dsa_slave_phy_setup(slave_dev);
 | 
					 | 
				
			||||||
 	if (ret) {
 | 
					 | 
				
			||||||
 		netdev_err(master, "error %d setting up slave phy\n", ret);
 | 
					 | 
				
			||||||
-		goto out_free;
 | 
					 | 
				
			||||||
+		goto out_gcells;
 | 
					 | 
				
			||||||
 	}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	dsa_slave_notify(slave_dev, DSA_PORT_REGISTER);
 | 
					 | 
				
			||||||
@@ -1462,6 +1467,8 @@ out_phy:
 | 
					 | 
				
			||||||
 	phylink_disconnect_phy(p->dp->pl);
 | 
					 | 
				
			||||||
 	rtnl_unlock();
 | 
					 | 
				
			||||||
 	phylink_destroy(p->dp->pl);
 | 
					 | 
				
			||||||
+out_gcells:
 | 
					 | 
				
			||||||
+	gro_cells_destroy(&p->gcells);
 | 
					 | 
				
			||||||
 out_free:
 | 
					 | 
				
			||||||
 	free_percpu(p->stats64);
 | 
					 | 
				
			||||||
 	free_netdev(slave_dev);
 | 
					 | 
				
			||||||
@@ -1482,6 +1489,7 @@ void dsa_slave_destroy(struct net_device
 | 
					 | 
				
			||||||
 	dsa_slave_notify(slave_dev, DSA_PORT_UNREGISTER);
 | 
					 | 
				
			||||||
 	unregister_netdev(slave_dev);
 | 
					 | 
				
			||||||
 	phylink_destroy(dp->pl);
 | 
					 | 
				
			||||||
+	gro_cells_destroy(&p->gcells);
 | 
					 | 
				
			||||||
 	free_percpu(p->stats64);
 | 
					 | 
				
			||||||
 	free_netdev(slave_dev);
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
@@ -1,60 +0,0 @@
 | 
				
			|||||||
From 88eee9b7b42e69fb622ddb3ff6f37e8e4347f5b2 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Lech Perczak <lech.perczak@gmail.com>
 | 
					 | 
				
			||||||
Date: Tue, 23 Feb 2021 19:34:56 +0100
 | 
					 | 
				
			||||||
Subject: net: usb: qmi_wwan: support ZTE P685M modem
 | 
					 | 
				
			||||||
MIME-Version: 1.0
 | 
					 | 
				
			||||||
Content-Type: text/plain; charset=UTF-8
 | 
					 | 
				
			||||||
Content-Transfer-Encoding: 8bit
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Now that interface 3 in "option" driver is no longer mapped, add device
 | 
					 | 
				
			||||||
ID matching it to qmi_wwan.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The modem is used inside ZTE MF283+ router and carriers identify it as
 | 
					 | 
				
			||||||
such.
 | 
					 | 
				
			||||||
Interface mapping is:
 | 
					 | 
				
			||||||
0: QCDM, 1: AT (PCUI), 2: AT (Modem), 3: QMI, 4: ADB
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
T:  Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
 | 
					 | 
				
			||||||
D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
 | 
					 | 
				
			||||||
P:  Vendor=19d2 ProdID=1275 Rev=f0.00
 | 
					 | 
				
			||||||
S:  Manufacturer=ZTE,Incorporated
 | 
					 | 
				
			||||||
S:  Product=ZTE Technologies MSM
 | 
					 | 
				
			||||||
S:  SerialNumber=P685M510ZTED0000CP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0
 | 
					 | 
				
			||||||
C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
 | 
					 | 
				
			||||||
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
 | 
					 | 
				
			||||||
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
 | 
					 | 
				
			||||||
E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
 | 
					 | 
				
			||||||
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
 | 
					 | 
				
			||||||
E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
 | 
					 | 
				
			||||||
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
 | 
					 | 
				
			||||||
E:  Ad=87(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
 | 
					 | 
				
			||||||
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
 | 
					 | 
				
			||||||
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Acked-by: Bjørn Mork <bjorn@mork.no>
 | 
					 | 
				
			||||||
Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
 | 
					 | 
				
			||||||
Link: https://lore.kernel.org/r/20210223183456.6377-1-lech.perczak@gmail.com
 | 
					 | 
				
			||||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 drivers/net/usb/qmi_wwan.c | 1 +
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/drivers/net/usb/qmi_wwan.c
 | 
					 | 
				
			||||||
+++ b/drivers/net/usb/qmi_wwan.c
 | 
					 | 
				
			||||||
@@ -1280,6 +1280,7 @@ static const struct usb_device_id produc
 | 
					 | 
				
			||||||
 	{QMI_FIXED_INTF(0x19d2, 0x1255, 4)},
 | 
					 | 
				
			||||||
 	{QMI_FIXED_INTF(0x19d2, 0x1256, 4)},
 | 
					 | 
				
			||||||
 	{QMI_FIXED_INTF(0x19d2, 0x1270, 5)},	/* ZTE MF667 */
 | 
					 | 
				
			||||||
+	{QMI_FIXED_INTF(0x19d2, 0x1275, 3)},	/* ZTE P685M */
 | 
					 | 
				
			||||||
 	{QMI_FIXED_INTF(0x19d2, 0x1401, 2)},
 | 
					 | 
				
			||||||
 	{QMI_FIXED_INTF(0x19d2, 0x1402, 2)},	/* ZTE MF60 */
 | 
					 | 
				
			||||||
 	{QMI_FIXED_INTF(0x19d2, 0x1424, 2)},
 | 
					 | 
				
			||||||
@@ -1,33 +0,0 @@
 | 
				
			|||||||
From d5efc2e6b98fe661dbd8dd0d5d5bfb961728e57a Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Antonio Borneo <borneo.antonio@gmail.com>
 | 
					 | 
				
			||||||
Date: Thu, 18 Jun 2020 02:08:44 +0200
 | 
					 | 
				
			||||||
Subject: usbip: tools: fix build error for multiple definition
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
With GCC 10, building usbip triggers error for multiple definition
 | 
					 | 
				
			||||||
of 'udev_context', in:
 | 
					 | 
				
			||||||
- libsrc/vhci_driver.c:18 and
 | 
					 | 
				
			||||||
- libsrc/usbip_host_common.c:27.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Declare as extern the definition in libsrc/usbip_host_common.c.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
 | 
					 | 
				
			||||||
Acked-by: Shuah Khan <skhan@linuxfoundation.org>
 | 
					 | 
				
			||||||
Link: https://lore.kernel.org/r/20200618000844.1048309-1-borneo.antonio@gmail.com
 | 
					 | 
				
			||||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 tools/usb/usbip/libsrc/usbip_host_common.c | 2 +-
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(limited to 'tools/usb/usbip')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/tools/usb/usbip/libsrc/usbip_host_common.c
 | 
					 | 
				
			||||||
+++ b/tools/usb/usbip/libsrc/usbip_host_common.c
 | 
					 | 
				
			||||||
@@ -23,7 +23,7 @@
 | 
					 | 
				
			||||||
 #include "list.h"
 | 
					 | 
				
			||||||
 #include "sysfs_utils.h"
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-struct udev *udev_context;
 | 
					 | 
				
			||||||
+extern struct udev *udev_context;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 static int32_t read_attr_usbip_status(struct usbip_usb_device *udev)
 | 
					 | 
				
			||||||
 {
 | 
					 | 
				
			||||||
@@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
+MODULE_LICENSE("GPL");
 | 
					+MODULE_LICENSE("GPL");
 | 
				
			||||||
--- a/kernel/sched/core.c
 | 
					--- a/kernel/sched/core.c
 | 
				
			||||||
+++ b/kernel/sched/core.c
 | 
					+++ b/kernel/sched/core.c
 | 
				
			||||||
@@ -2756,6 +2756,7 @@ int wake_up_state(struct task_struct *p,
 | 
					@@ -2754,6 +2754,7 @@ int wake_up_state(struct task_struct *p,
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	return try_to_wake_up(p, state, 0);
 | 
					 	return try_to_wake_up(p, state, 0);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \
 | 
					 	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \
 | 
				
			||||||
--- a/arch/mips/include/asm/string.h
 | 
					--- a/arch/mips/include/asm/string.h
 | 
				
			||||||
+++ b/arch/mips/include/asm/string.h
 | 
					+++ b/arch/mips/include/asm/string.h
 | 
				
			||||||
@@ -140,4 +140,42 @@ extern void *memcpy(void *__to, __const_
 | 
					@@ -19,4 +19,42 @@ extern void *memcpy(void *__to, __const_
 | 
				
			||||||
 #define __HAVE_ARCH_MEMMOVE
 | 
					 #define __HAVE_ARCH_MEMMOVE
 | 
				
			||||||
 extern void *memmove(void *__dest, __const__ void *__src, size_t __n);
 | 
					 extern void *memmove(void *__dest, __const__ void *__src, size_t __n);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -280,7 +280,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	/* Some drivers may have called napi_schedule
 | 
					 	/* Some drivers may have called napi_schedule
 | 
				
			||||||
 	 * prior to exhausting their budget.
 | 
					 	 * prior to exhausting their budget.
 | 
				
			||||||
@@ -10271,6 +10332,10 @@ static int __init net_dev_init(void)
 | 
					@@ -10313,6 +10374,10 @@ static int __init net_dev_init(void)
 | 
				
			||||||
 		sd->backlog.weight = weight_p;
 | 
					 		sd->backlog.weight = weight_p;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
 | 
				
			|||||||
 #include <linux/platform_data/x86/apple.h>
 | 
					 #include <linux/platform_data/x86/apple.h>
 | 
				
			||||||
 #include <linux/pm_runtime.h>
 | 
					 #include <linux/pm_runtime.h>
 | 
				
			||||||
 #include <linux/switchtec.h>
 | 
					 #include <linux/switchtec.h>
 | 
				
			||||||
@@ -5622,3 +5623,34 @@ static void apex_pci_fixup_class(struct
 | 
					@@ -5625,3 +5626,34 @@ static void apex_pci_fixup_class(struct
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
 | 
					 DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
 | 
				
			||||||
 			       PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);
 | 
					 			       PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/media/usb/uvc/uvc_driver.c
 | 
					--- a/drivers/media/usb/uvc/uvc_driver.c
 | 
				
			||||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
 | 
					+++ b/drivers/media/usb/uvc/uvc_driver.c
 | 
				
			||||||
@@ -2908,6 +2908,18 @@ static const struct usb_device_id uvc_id
 | 
					@@ -2911,6 +2911,18 @@ static const struct usb_device_id uvc_id
 | 
				
			||||||
 	  .bInterfaceSubClass	= 1,
 | 
					 	  .bInterfaceSubClass	= 1,
 | 
				
			||||||
 	  .bInterfaceProtocol	= 0,
 | 
					 	  .bInterfaceProtocol	= 0,
 | 
				
			||||||
 	  .driver_info		= UVC_INFO_META(V4L2_META_FMT_D4XX) },
 | 
					 	  .driver_info		= UVC_INFO_META(V4L2_META_FMT_D4XX) },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/arch/x86/kernel/reboot.c
 | 
					--- a/arch/x86/kernel/reboot.c
 | 
				
			||||||
+++ b/arch/x86/kernel/reboot.c
 | 
					+++ b/arch/x86/kernel/reboot.c
 | 
				
			||||||
@@ -477,6 +477,16 @@ static const struct dmi_system_id reboot
 | 
					@@ -486,6 +486,16 @@ static const struct dmi_system_id reboot
 | 
				
			||||||
 		},
 | 
					 		},
 | 
				
			||||||
 	},
 | 
					 	},
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user