mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-22 20:38:29 +00:00
kernel: bump 6.1 to 6.1.69
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.69 Removed upstreamed: generic/backport-6.1/795-v6.3-01-r8152-add-USB-device-driver-for-config-selection.patch[1] generic/backport-6.1/795-v6.3-03-r8152-avoid-to-change-cfg-for-all-devices.patch[2] generic/backport-6.1/795-v6.3-04-r8152-remove-rtl_vendor_mode-function.patch[3] generic/backport-6.1/795-v6.4-07-r8152-fix-the-autosuspend-doesn-t-work.patch[4] generic/backport-6.1/795-v6.6-11-r8152-add-vendor-device-ID-pair-for-D-Link-DUB-E250.patch[5] All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.69&id=893597cbabfbc00ee51fd5f73e2028994f49ded6 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.69&id=1d82735f4bae954d5ba004994b96baec791f874f 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.69&id=4c2ad8e39c62c5288ca31ebf5c30e34f3bd9d044 4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.69&id=325556d46bfd13a2fa0d304d0625be86821fd683 5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.69&id=cac1218b32d7b56832dd36f7baf82f123f305a2a Build system: x86/64 Build-tested: x86/64/AMD Cezanne Run-tested: x86/64/AMD Cezanne Signed-off-by: John Audia <therealgraysky@proton.me>
This commit is contained in:
parent
3866cf6e47
commit
4a2ff73177
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.1 = .68
|
||||
LINUX_KERNEL_HASH-6.1.68 = 365ff26a30e206de9b18489f45d38582a0a61b7c5919f8ab89295a47316784e1
|
||||
LINUX_VERSION-6.1 = .69
|
||||
LINUX_KERNEL_HASH-6.1.69 = 7e3d2694d18ce502068cc88a430da809abbd17d0773268524ebece442612b541
|
||||
|
@ -181,7 +181,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
dpaa2_switch_port_disconnect_mac(port_priv);
|
||||
else
|
||||
dpaa2_switch_port_connect_mac(port_priv);
|
||||
@@ -3256,6 +3279,8 @@ static int dpaa2_switch_probe_port(struc
|
||||
@@ -3249,6 +3272,8 @@ static int dpaa2_switch_probe_port(struc
|
||||
port_priv->netdev = port_netdev;
|
||||
port_priv->ethsw_data = ethsw;
|
||||
|
||||
|
@ -101,7 +101,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
}
|
||||
|
||||
out:
|
||||
@@ -2958,9 +2956,7 @@ static void dpaa2_switch_remove_port(str
|
||||
@@ -2951,9 +2949,7 @@ static void dpaa2_switch_remove_port(str
|
||||
{
|
||||
struct ethsw_port_priv *port_priv = ethsw->ports[port_idx];
|
||||
|
||||
|
@ -589,15 +589,15 @@ SVN-Revision: 35130
|
||||
* XXX skbs on the gro_list have all been parsed and pulled
|
||||
--- a/include/net/addrconf.h
|
||||
+++ b/include/net/addrconf.h
|
||||
@@ -47,7 +47,7 @@ struct prefix_info {
|
||||
@@ -52,7 +52,7 @@ struct prefix_info {
|
||||
__be32 reserved2;
|
||||
|
||||
struct in6_addr prefix;
|
||||
-};
|
||||
+} __attribute__((packed, aligned(2)));
|
||||
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/netdevice.h>
|
||||
/* rfc4861 4.6.2: IPv6 PIO is 32 bytes in size */
|
||||
static_assert(sizeof(struct prefix_info) == 32);
|
||||
--- a/include/net/inet_ecn.h
|
||||
+++ b/include/net/inet_ecn.h
|
||||
@@ -138,9 +138,9 @@ static inline int IP6_ECN_set_ce(struct
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||
|
||||
@@ -1369,6 +1372,9 @@
|
||||
@@ -1372,6 +1375,9 @@
|
||||
#define USB_VENDOR_ID_XIAOMI 0x2717
|
||||
#define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014
|
||||
|
||||
@ -45,7 +45,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
#define USB_DEVICE_ID_THT_2P_ARCADE 0x75e1
|
||||
--- a/drivers/hid/hid-quirks.c
|
||||
+++ b/drivers/hid/hid-quirks.c
|
||||
@@ -41,6 +41,7 @@ static const struct hid_device_id hid_qu
|
||||
@@ -42,6 +42,7 @@ static const struct hid_device_id hid_qu
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK_NOGET },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK_NOGET },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },
|
||||
@ -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_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 },
|
||||
@@ -199,6 +200,7 @@ static const struct hid_device_id hid_qu
|
||||
@@ -200,6 +201,7 @@ static const struct hid_device_id hid_qu
|
||||
{ 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_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET },
|
||||
|
@ -121,7 +121,7 @@ Signed-off-by: T.J. Mercier <tjmercier@google.com>
|
||||
static inline int lru_gen_from_seq(unsigned long seq)
|
||||
{
|
||||
return seq % MAX_NR_GENS;
|
||||
@@ -297,6 +309,11 @@ static inline bool lru_gen_in_fault(void
|
||||
@@ -302,6 +314,11 @@ static inline bool lru_gen_in_fault(void
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ Signed-off-by: T.J. Mercier <tjmercier@google.com>
|
||||
|
||||
--- a/include/linux/mm_inline.h
|
||||
+++ b/include/linux/mm_inline.h
|
||||
@@ -595,4 +595,12 @@ pte_install_uffd_wp_if_needed(struct vm_
|
||||
@@ -600,4 +600,12 @@ pte_install_uffd_wp_if_needed(struct vm_
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -96,7 +96,7 @@ Signed-off-by: T.J. Mercier <tjmercier@google.com>
|
||||
|
||||
--- a/include/linux/mm_inline.h
|
||||
+++ b/include/linux/mm_inline.h
|
||||
@@ -600,6 +600,9 @@ static inline bool vma_has_recency(struc
|
||||
@@ -605,6 +605,9 @@ static inline bool vma_has_recency(struc
|
||||
if (vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ))
|
||||
return false;
|
||||
|
||||
|
@ -87,7 +87,7 @@ Signed-off-by: T.J. Mercier <tjmercier@google.com>
|
||||
static inline int lru_gen_from_seq(unsigned long seq)
|
||||
{
|
||||
return seq % MAX_NR_GENS;
|
||||
@@ -309,11 +297,6 @@ static inline bool lru_gen_in_fault(void
|
||||
@@ -314,11 +302,6 @@ static inline bool lru_gen_in_fault(void
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1,229 +0,0 @@
|
||||
From ec51fbd1b8a2bca2948dede99c14ec63dc57ff6b Mon Sep 17 00:00:00 2001
|
||||
From: Bjørn Mork <bjorn@mork.no>
|
||||
Date: Fri, 6 Jan 2023 17:07:38 +0100
|
||||
Subject: [PATCH] r8152: add USB device driver for config selection
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Subclassing the generic USB device driver to override the
|
||||
default configuration selection regardless of matching interface
|
||||
drivers.
|
||||
|
||||
The r815x family devices expose a vendor specific function which
|
||||
the r8152 interface driver wants to handle. This is the preferred
|
||||
device mode. Additionally one or more USB class functions are
|
||||
usually supported for hosts lacking a vendor specific driver. The
|
||||
choice is USB configuration based, with one alternate function per
|
||||
configuration.
|
||||
|
||||
Example device with both NCM and ECM alternate cfgs:
|
||||
|
||||
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=5000 MxCh= 0
|
||||
D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 3
|
||||
P: Vendor=0bda ProdID=8156 Rev=31.00
|
||||
S: Manufacturer=Realtek
|
||||
S: Product=USB 10/100/1G/2.5G LAN
|
||||
S: SerialNumber=001000001
|
||||
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=256mA
|
||||
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=00 Driver=r8152
|
||||
E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
|
||||
E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
|
||||
E: Ad=83(I) Atr=03(Int.) MxPS= 2 Ivl=128ms
|
||||
C: #Ifs= 2 Cfg#= 2 Atr=a0 MxPwr=256mA
|
||||
I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0d Prot=00 Driver=
|
||||
E: Ad=83(I) Atr=03(Int.) MxPS= 16 Ivl=128ms
|
||||
I: If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=01 Driver=
|
||||
I: If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=01 Driver=
|
||||
E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
|
||||
E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
|
||||
C: #Ifs= 2 Cfg#= 3 Atr=a0 MxPwr=256mA
|
||||
I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=
|
||||
E: Ad=83(I) Atr=03(Int.) MxPS= 16 Ivl=128ms
|
||||
I: If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=
|
||||
I: If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=
|
||||
E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
|
||||
E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
|
||||
|
||||
A problem with this is that Linux will prefer class functions over
|
||||
vendor specific functions. Using the above example, Linux defaults
|
||||
to cfg #2, running the device in a sub-optimal NCM mode.
|
||||
|
||||
Previously we've attempted to work around the problem by
|
||||
blacklisting the devices in the ECM class driver "cdc_ether", and
|
||||
matching on the ECM class function in the vendor specific interface
|
||||
driver. The latter has been used to switch back to the vendor
|
||||
specific configuration when the driver is probed for a class
|
||||
function.
|
||||
|
||||
This workaround has several issues;
|
||||
- class driver blacklists is additional maintanence cruft in an
|
||||
unrelated driver
|
||||
- class driver blacklists prevents users from optionally running
|
||||
the devices in class mode
|
||||
- each device needs double match entries in the vendor driver
|
||||
- the initial probing as a class function slows down device
|
||||
discovery
|
||||
|
||||
Now these issues have become even worse with the introduction of
|
||||
firmware supporting both NCM and ECM, where NCM ends up as the
|
||||
default mode in Linux. To use the same workaround, we now have
|
||||
to blacklist the devices in to two different class drivers and
|
||||
add yet another match entry to the vendor specific driver.
|
||||
|
||||
This patch implements an alternative workaround strategy -
|
||||
independent of the interface drivers. It avoids adding a
|
||||
blacklist to the cdc_ncm driver and will let us remove the
|
||||
existing blacklist from the cdc_ether driver.
|
||||
|
||||
As an additional bonus, removing the blacklists allow users to
|
||||
select one of the other device modes if wanted.
|
||||
|
||||
Signed-off-by: Bjørn Mork <bjorn@mork.no>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/usb/r8152.c | 113 ++++++++++++++++++++++++++++------------
|
||||
1 file changed, 81 insertions(+), 32 deletions(-)
|
||||
|
||||
--- a/drivers/net/usb/r8152.c
|
||||
+++ b/drivers/net/usb/r8152.c
|
||||
@@ -9675,6 +9675,9 @@ static int rtl8152_probe(struct usb_inte
|
||||
if (version == RTL_VER_UNKNOWN)
|
||||
return -ENODEV;
|
||||
|
||||
+ if (intf->cur_altsetting->desc.bInterfaceClass != USB_CLASS_VENDOR_SPEC)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
if (!rtl_vendor_mode(intf))
|
||||
return -ENODEV;
|
||||
|
||||
@@ -9875,43 +9878,35 @@ static void rtl8152_disconnect(struct us
|
||||
}
|
||||
}
|
||||
|
||||
-#define REALTEK_USB_DEVICE(vend, prod) { \
|
||||
- USB_DEVICE_INTERFACE_CLASS(vend, prod, USB_CLASS_VENDOR_SPEC), \
|
||||
-}, \
|
||||
-{ \
|
||||
- USB_DEVICE_AND_INTERFACE_INFO(vend, prod, USB_CLASS_COMM, \
|
||||
- USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), \
|
||||
-}
|
||||
|
||||
/* table of devices that work with this driver */
|
||||
static const struct usb_device_id rtl8152_table[] = {
|
||||
/* Realtek */
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8050),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8053),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8152),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8153),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8155),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8156),
|
||||
+ { USB_DEVICE(VENDOR_ID_REALTEK, 0x8050) },
|
||||
+ { USB_DEVICE(VENDOR_ID_REALTEK, 0x8053) },
|
||||
+ { USB_DEVICE(VENDOR_ID_REALTEK, 0x8152) },
|
||||
+ { USB_DEVICE(VENDOR_ID_REALTEK, 0x8153) },
|
||||
+ { USB_DEVICE(VENDOR_ID_REALTEK, 0x8155) },
|
||||
+ { USB_DEVICE(VENDOR_ID_REALTEK, 0x8156) },
|
||||
|
||||
/* Microsoft */
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07ab),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07c6),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x0927),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x0c5e),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_SAMSUNG, 0xa101),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x304f),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3054),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3062),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3069),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3082),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7205),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x720c),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7214),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x721e),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0xa387),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA, 0x09ff),
|
||||
- REALTEK_USB_DEVICE(VENDOR_ID_TPLINK, 0x0601),
|
||||
+ { USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07ab) },
|
||||
+ { USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07c6) },
|
||||
+ { USB_DEVICE(VENDOR_ID_MICROSOFT, 0x0927) },
|
||||
+ { USB_DEVICE(VENDOR_ID_SAMSUNG, 0xa101) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0x304f) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0x3054) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0x3062) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0x3069) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0x3082) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0x7205) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0x720c) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0x7214) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0x721e) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LENOVO, 0xa387) },
|
||||
+ { USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041) },
|
||||
+ { USB_DEVICE(VENDOR_ID_NVIDIA, 0x09ff) },
|
||||
+ { USB_DEVICE(VENDOR_ID_TPLINK, 0x0601) },
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -9931,7 +9926,61 @@ static struct usb_driver rtl8152_driver
|
||||
.disable_hub_initiated_lpm = 1,
|
||||
};
|
||||
|
||||
-module_usb_driver(rtl8152_driver);
|
||||
+static int rtl8152_cfgselector_probe(struct usb_device *udev)
|
||||
+{
|
||||
+ struct usb_host_config *c;
|
||||
+ int i, num_configs;
|
||||
+
|
||||
+ /* The vendor mode is not always config #1, so to find it out. */
|
||||
+ c = udev->config;
|
||||
+ num_configs = udev->descriptor.bNumConfigurations;
|
||||
+ for (i = 0; i < num_configs; (i++, c++)) {
|
||||
+ struct usb_interface_descriptor *desc = NULL;
|
||||
+
|
||||
+ if (!c->desc.bNumInterfaces)
|
||||
+ continue;
|
||||
+ desc = &c->intf_cache[0]->altsetting->desc;
|
||||
+ if (desc->bInterfaceClass == USB_CLASS_VENDOR_SPEC)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (i == num_configs)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ if (usb_set_configuration(udev, c->desc.bConfigurationValue)) {
|
||||
+ dev_err(&udev->dev, "Failed to set configuration %d\n",
|
||||
+ c->desc.bConfigurationValue);
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct usb_device_driver rtl8152_cfgselector_driver = {
|
||||
+ .name = MODULENAME "-cfgselector",
|
||||
+ .probe = rtl8152_cfgselector_probe,
|
||||
+ .id_table = rtl8152_table,
|
||||
+ .generic_subclass = 1,
|
||||
+};
|
||||
+
|
||||
+static int __init rtl8152_driver_init(void)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = usb_register_device_driver(&rtl8152_cfgselector_driver, THIS_MODULE);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ return usb_register(&rtl8152_driver);
|
||||
+}
|
||||
+
|
||||
+static void __exit rtl8152_driver_exit(void)
|
||||
+{
|
||||
+ usb_deregister(&rtl8152_driver);
|
||||
+ usb_deregister_device_driver(&rtl8152_cfgselector_driver);
|
||||
+}
|
||||
+
|
||||
+module_init(rtl8152_driver_init);
|
||||
+module_exit(rtl8152_driver_exit);
|
||||
|
||||
MODULE_AUTHOR(DRIVER_AUTHOR);
|
||||
MODULE_DESCRIPTION(DRIVER_DESC);
|
@ -1,64 +0,0 @@
|
||||
From 0d4cda805a183bbe523f2407edb5c14ade50b841 Mon Sep 17 00:00:00 2001
|
||||
From: Hayes Wang <hayeswang@realtek.com>
|
||||
Date: Tue, 17 Jan 2023 11:03:44 +0800
|
||||
Subject: [PATCH] r8152: avoid to change cfg for all devices
|
||||
|
||||
The rtl8152_cfgselector_probe() should set the USB configuration to the
|
||||
vendor mode only for the devices which the driver (r8152) supports.
|
||||
Otherwise, no driver would be used for such devices.
|
||||
|
||||
Fixes: ec51fbd1b8a2 ("r8152: add USB device driver for config selection")
|
||||
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
|
||||
Reviewed-by: Simon Horman <simon.horman@corigine.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/usb/r8152.c | 20 +++++++++++++++++---
|
||||
1 file changed, 17 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/usb/r8152.c
|
||||
+++ b/drivers/net/usb/r8152.c
|
||||
@@ -9556,9 +9556,8 @@ static int rtl_fw_init(struct r8152 *tp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-u8 rtl8152_get_version(struct usb_interface *intf)
|
||||
+static u8 __rtl_get_hw_ver(struct usb_device *udev)
|
||||
{
|
||||
- struct usb_device *udev = interface_to_usbdev(intf);
|
||||
u32 ocp_data = 0;
|
||||
__le32 *tmp;
|
||||
u8 version;
|
||||
@@ -9628,10 +9627,19 @@ u8 rtl8152_get_version(struct usb_interf
|
||||
break;
|
||||
default:
|
||||
version = RTL_VER_UNKNOWN;
|
||||
- dev_info(&intf->dev, "Unknown version 0x%04x\n", ocp_data);
|
||||
+ dev_info(&udev->dev, "Unknown version 0x%04x\n", ocp_data);
|
||||
break;
|
||||
}
|
||||
|
||||
+ return version;
|
||||
+}
|
||||
+
|
||||
+u8 rtl8152_get_version(struct usb_interface *intf)
|
||||
+{
|
||||
+ u8 version;
|
||||
+
|
||||
+ version = __rtl_get_hw_ver(interface_to_usbdev(intf));
|
||||
+
|
||||
dev_dbg(&intf->dev, "Detected version 0x%04x\n", version);
|
||||
|
||||
return version;
|
||||
@@ -9931,6 +9939,12 @@ static int rtl8152_cfgselector_probe(str
|
||||
struct usb_host_config *c;
|
||||
int i, num_configs;
|
||||
|
||||
+ /* Switch the device to vendor mode, if and only if the vendor mode
|
||||
+ * driver supports it.
|
||||
+ */
|
||||
+ if (__rtl_get_hw_ver(udev) == RTL_VER_UNKNOWN)
|
||||
+ return 0;
|
||||
+
|
||||
/* The vendor mode is not always config #1, so to find it out. */
|
||||
c = udev->config;
|
||||
num_configs = udev->descriptor.bNumConfigurations;
|
@ -1,71 +0,0 @@
|
||||
From 95a4c1d617b92cdc4522297741b56e8f6cd01a1e Mon Sep 17 00:00:00 2001
|
||||
From: Hayes Wang <hayeswang@realtek.com>
|
||||
Date: Thu, 19 Jan 2023 15:40:42 +0800
|
||||
Subject: [PATCH] r8152: remove rtl_vendor_mode function
|
||||
|
||||
After commit ec51fbd1b8a2 ("r8152: add USB device driver for
|
||||
config selection"), the code about changing USB configuration
|
||||
in rtl_vendor_mode() wouldn't be run anymore. Therefore, the
|
||||
function could be removed.
|
||||
|
||||
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/usb/r8152.c | 39 +--------------------------------------
|
||||
1 file changed, 1 insertion(+), 38 deletions(-)
|
||||
|
||||
--- a/drivers/net/usb/r8152.c
|
||||
+++ b/drivers/net/usb/r8152.c
|
||||
@@ -8288,43 +8288,6 @@ static bool rtl_check_vendor_ok(struct u
|
||||
return true;
|
||||
}
|
||||
|
||||
-static bool rtl_vendor_mode(struct usb_interface *intf)
|
||||
-{
|
||||
- struct usb_host_interface *alt = intf->cur_altsetting;
|
||||
- struct usb_device *udev;
|
||||
- struct usb_host_config *c;
|
||||
- int i, num_configs;
|
||||
-
|
||||
- if (alt->desc.bInterfaceClass == USB_CLASS_VENDOR_SPEC)
|
||||
- return rtl_check_vendor_ok(intf);
|
||||
-
|
||||
- /* The vendor mode is not always config #1, so to find it out. */
|
||||
- udev = interface_to_usbdev(intf);
|
||||
- c = udev->config;
|
||||
- num_configs = udev->descriptor.bNumConfigurations;
|
||||
- if (num_configs < 2)
|
||||
- return false;
|
||||
-
|
||||
- for (i = 0; i < num_configs; (i++, c++)) {
|
||||
- struct usb_interface_descriptor *desc = NULL;
|
||||
-
|
||||
- if (c->desc.bNumInterfaces > 0)
|
||||
- desc = &c->intf_cache[0]->altsetting->desc;
|
||||
- else
|
||||
- continue;
|
||||
-
|
||||
- if (desc->bInterfaceClass == USB_CLASS_VENDOR_SPEC) {
|
||||
- usb_driver_set_configuration(udev, c->desc.bConfigurationValue);
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- if (i == num_configs)
|
||||
- dev_err(&intf->dev, "Unexpected Device\n");
|
||||
-
|
||||
- return false;
|
||||
-}
|
||||
-
|
||||
static int rtl8152_pre_reset(struct usb_interface *intf)
|
||||
{
|
||||
struct r8152 *tp = usb_get_intfdata(intf);
|
||||
@@ -9686,7 +9649,7 @@ static int rtl8152_probe(struct usb_inte
|
||||
if (intf->cur_altsetting->desc.bInterfaceClass != USB_CLASS_VENDOR_SPEC)
|
||||
return -ENODEV;
|
||||
|
||||
- if (!rtl_vendor_mode(intf))
|
||||
+ if (!rtl_check_vendor_ok(intf))
|
||||
return -ENODEV;
|
||||
|
||||
usb_reset_device(udev);
|
@ -1,24 +0,0 @@
|
||||
From 0fbd79c01a9a657348f7032df70c57a406468c86 Mon Sep 17 00:00:00 2001
|
||||
From: Hayes Wang <hayeswang@realtek.com>
|
||||
Date: Tue, 2 May 2023 11:36:27 +0800
|
||||
Subject: [PATCH] r8152: fix the autosuspend doesn't work
|
||||
|
||||
Set supports_autosuspend = 1 for the rtl8152_cfgselector_driver.
|
||||
|
||||
Fixes: ec51fbd1b8a2 ("r8152: add USB device driver for config selection")
|
||||
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/usb/r8152.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/net/usb/r8152.c
|
||||
+++ b/drivers/net/usb/r8152.c
|
||||
@@ -9939,6 +9939,7 @@ static struct usb_device_driver rtl8152_
|
||||
.probe = rtl8152_cfgselector_probe,
|
||||
.id_table = rtl8152_table,
|
||||
.generic_subclass = 1,
|
||||
+ .supports_autosuspend = 1,
|
||||
};
|
||||
|
||||
static int __init rtl8152_driver_init(void)
|
@ -1,39 +0,0 @@
|
||||
From 72f93a3136ee18fd59fa6579f84c07e93424681e Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Napolitano <anton@polit.no>
|
||||
Date: Sat, 26 Aug 2023 01:05:50 +0200
|
||||
Subject: [PATCH] r8152: add vendor/device ID pair for D-Link DUB-E250
|
||||
|
||||
The D-Link DUB-E250 is an RTL8156 based 2.5G Ethernet controller.
|
||||
|
||||
Add the vendor and product ID values to the driver. This makes Ethernet
|
||||
work with the adapter.
|
||||
|
||||
Signed-off-by: Antonio Napolitano <anton@polit.no>
|
||||
Link: https://lore.kernel.org/r/CV200KJEEUPC.WPKAHXCQJ05I@mercurius
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/usb/r8152.c | 1 +
|
||||
include/linux/usb/r8152.h | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
|
||||
--- a/include/linux/usb/r8152.h
|
||||
+++ b/include/linux/usb/r8152.h
|
||||
@@ -29,6 +29,7 @@
|
||||
#define VENDOR_ID_LINKSYS 0x13b1
|
||||
#define VENDOR_ID_NVIDIA 0x0955
|
||||
#define VENDOR_ID_TPLINK 0x2357
|
||||
+#define VENDOR_ID_DLINK 0x2001
|
||||
|
||||
#if IS_REACHABLE(CONFIG_USB_RTL8152)
|
||||
extern u8 rtl8152_get_version(struct usb_interface *intf);
|
||||
--- a/drivers/net/usb/r8152.c
|
||||
+++ b/drivers/net/usb/r8152.c
|
||||
@@ -9860,6 +9860,7 @@ static const struct usb_device_id rtl815
|
||||
{ USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041) },
|
||||
{ USB_DEVICE(VENDOR_ID_NVIDIA, 0x09ff) },
|
||||
{ USB_DEVICE(VENDOR_ID_TPLINK, 0x0601) },
|
||||
+ { USB_DEVICE(VENDOR_ID_DLINK, 0xb301) },
|
||||
{}
|
||||
};
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
__netif_tx_unlock_bh(netdev_get_tx_queue(priv->dev, queue));
|
||||
|
||||
@@ -5476,12 +5477,13 @@ static int stmmac_napi_poll_tx(struct na
|
||||
@@ -5473,12 +5474,13 @@ static int stmmac_napi_poll_tx(struct na
|
||||
struct stmmac_channel *ch =
|
||||
container_of(napi, struct stmmac_channel, tx_napi);
|
||||
struct stmmac_priv *priv = ch->priv_data;
|
||||
@ -51,7 +51,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
work_done = min(work_done, budget);
|
||||
|
||||
if (work_done < budget && napi_complete_done(napi, work_done)) {
|
||||
@@ -5492,6 +5494,10 @@ static int stmmac_napi_poll_tx(struct na
|
||||
@@ -5489,6 +5491,10 @@ static int stmmac_napi_poll_tx(struct na
|
||||
spin_unlock_irqrestore(&ch->lock, flags);
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
return work_done;
|
||||
}
|
||||
|
||||
@@ -5501,11 +5507,12 @@ static int stmmac_napi_poll_rxtx(struct
|
||||
@@ -5498,11 +5504,12 @@ static int stmmac_napi_poll_rxtx(struct
|
||||
container_of(napi, struct stmmac_channel, rxtx_napi);
|
||||
struct stmmac_priv *priv = ch->priv_data;
|
||||
int rx_done, tx_done, rxtx_done;
|
||||
@ -76,7 +76,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
tx_done = min(tx_done, budget);
|
||||
|
||||
rx_done = stmmac_rx_zc(priv, budget, chan);
|
||||
@@ -5530,6 +5537,10 @@ static int stmmac_napi_poll_rxtx(struct
|
||||
@@ -5527,6 +5534,10 @@ static int stmmac_napi_poll_rxtx(struct
|
||||
spin_unlock_irqrestore(&ch->lock, flags);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user