From patchwork Wed Apr 26 10:17:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Konrad_Gr=C3=A4fe?= X-Patchwork-Id: 13224361 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A3B21C7618E for ; Wed, 26 Apr 2023 10:18:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231341AbjDZKSA (ORCPT ); Wed, 26 Apr 2023 06:18:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229937AbjDZKR6 (ORCPT ); Wed, 26 Apr 2023 06:17:58 -0400 Received: from www484.your-server.de (www484.your-server.de [78.47.237.138]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C99A35AD for ; Wed, 26 Apr 2023 03:17:56 -0700 (PDT) Received: from sslproxy04.your-server.de ([78.46.152.42]) by www484.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1prcDh-0001QV-Lh; Wed, 26 Apr 2023 12:17:53 +0200 Received: from [2003:ca:6730:e8f8:9f6:94bc:5149:da49] by sslproxy04.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1prcDh-000TAb-CI; Wed, 26 Apr 2023 12:17:53 +0200 Message-ID: Date: Wed, 26 Apr 2023 12:17:53 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 From: =?utf-8?q?Konrad_Gr=C3=A4fe?= Subject: [PATCH] usb: gadget: u_ether: Fix host MAC address case To: gregkh@linuxfoundation.org Cc: linux-usb@vger.kernel.org, quentin.schulz@theobroma-systems.com References: <2023042534-thing-shamrock-88c1@gregkh> Content-Language: en-US In-Reply-To: <2023042534-thing-shamrock-88c1@gregkh> X-Authenticated-Sender: k.graefe@gateware.de X-Virus-Scanned: Clear (ClamAV 0.103.8/26888/Wed Apr 26 09:32:41 2023) Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org As the CDC-ECM specification states the host MAC address must be sent to the host as an uppercase hexadecimal string: The Unicode character is chosen from the set of values 30h through 39h and 41h through 46h (0-9 and A-F). However, snprintf(.., "%pm", ..) generates a lowercase MAC address string. While most host drivers are tolerant to this, UsbNcm.sys on Windows 10 is not. Instead it uses a different MAC address with all bytes set to zero including and after the first byte containing a lowercase letter. On Windows 11 Microsoft fixed it, but apparently they did not backport the fix. This change fixes the issue by upper-casing the MAC to comply with the specification. Signed-off-by: Konrad Gräfe --- V1 -> V2: Fixed checkpatch.pl warnings drivers/usb/gadget/function/u_ether.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/usb/gadget/function/u_ether.c b/drivers/usb/gadget/function/u_ether.c index 6956ad8ba8dd..250734e090fc 100644 --- a/drivers/usb/gadget/function/u_ether.c +++ b/drivers/usb/gadget/function/u_ether.c @@ -958,6 +958,7 @@ EXPORT_SYMBOL_GPL(gether_get_host_addr); int gether_get_host_addr_cdc(struct net_device *net, char *host_addr, int len) { struct eth_dev *dev; + int i, slen; if (len < 13) return -EINVAL; @@ -965,7 +966,13 @@ int gether_get_host_addr_cdc(struct net_device *net, char *host_addr, int len) dev = netdev_priv(net); snprintf(host_addr, len, "%pm", dev->host_mac); - return strlen(host_addr); + + slen = strlen(host_addr); + + for (i = 0; i < slen; i++) + host_addr[i] = toupper(host_addr[i]); + + return slen; } EXPORT_SYMBOL_GPL(gether_get_host_addr_cdc);