Re: [PATCH net-next 2/4] net: usb: centralize usbnet_cdc_zte_rx_fixup in usbnet
From: Manuel Ebner <hidden>
Date: 2026-07-02 18:27:06
Also in:
linux-usb, lkml
On Thu, 2026-07-02 at 16:25 +0200, Oliver Neukum wrote:
quoted hunk ↗ jump to hunk
This helper is used by multiple drivers using usbnet. It is better to be provided by usbnet than one of them. Signed-off-by: Oliver Neukum <oneukum@suse.com> --- drivers/net/usb/cdc_ether.c | 19 ------------------- drivers/net/usb/usbnet.c | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 19 deletions(-) ...diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index 5544af1f4aa5..7beea6d0e731 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c@@ -2347,6 +2347,25 @@ void usbnet_cdc_status(struct usbnet *dev, struct urb *urb)} } EXPORT_SYMBOL_GPL(usbnet_cdc_status); + +/* Make sure packets have correct destination MAC address
/*
* Make sure packets have the correct destination MAC address+ * + * A firmware bug observed on some devices (ZTE MF823/831/910) is that the + * device sends packets with a static, bogus, random MAC address (event if
(even if the device ...
+ * device MAC address has been updated). Always set MAC address to that of the + * device.
Always set the MAC address to the one of your device. Thanks Manuel
+ * device.
+ */
+int usbnet_cdc_zte_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
+{
+ if (skb->len < ETH_HLEN || !(skb->data[0] & 0x02))
+ return 1;
+
+ skb_reset_mac_header(skb);
+ ether_addr_copy(eth_hdr(skb)->h_dest, dev->net->dev_addr);
+
+ return 1;
+}
+EXPORT_SYMBOL_GPL(usbnet_cdc_zte_rx_fixup);
/*-------------------------------------------------------------------------*/
static int __init usbnet_init(void)