Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp8039128ybc; Fri, 29 Nov 2019 04:49:20 -0800 (PST) X-Google-Smtp-Source: APXvYqybT7LhHlfWzjKNZA69nNGMPg36hvRs6Md1QzdVHK+eQzwOMcz94c6OpNV9c2JLBS9ChZvq X-Received: by 2002:a7b:cb97:: with SMTP id m23mr14002094wmi.69.1575031760401; Fri, 29 Nov 2019 04:49:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575031760; cv=none; d=google.com; s=arc-20160816; b=DvLRIsZEbZNWB7VVdD2Wd+kTkU3k7ERFZFwxHippWI6H39WjNAQsT7k31PA6QNIuef P5T1gRHz+n6Ty5yyUxyU/RoUfZnoPQHxjN7+77CuCWfrv180klUTlc9CuuMFtBcS3IxU OTc038Pe/3V6fdJmrRV9nL8SCFIF8V38veBOBOZ8GPd6TnWUoxYa34ntFg3RcA2Z7qBX /5Sr9ppSxVsSYCF5M5G8BW3Tc9SydVW4IuNlD5rFpVPj2+c10gCh2zBsU1nCix1iEcDU O6NvOAF1nttcIwFkKqZ64fwLt7MvqomZTlFLkHN2VeDX25LqJT30GFgiuZ/df9iEEvWO Fv8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=zsArufA2ExLaAZrrkr8Q2jj08XweFqO1f75mwseM9jc=; b=P8C1GPN59Frc7JHb09shX6yxkfLBxiOjkAEVw+WFhbEBRnQXlGKX/aBK9k1wkMUvZJ hhh6bS3dX7HDGK6hp/ANT9XBa+XkxOgTujNGMmQY3BBIF84vdc98Nal247dy0erBx2PV z4WVk1z/CwED09ivkW3RFHuZ7pJ/CkphqC6moeNGy3bvNpmC3PIH6hiE8WeDOAMmeqCP hgnqwfmACN2U5KzSV1W48G2uZTcZcld/jJSa5v2BVP57p6NzNtYpfHF1JJli7MxDgbE2 pTAnSpdnz98MnB2VkleqFG4U0DGgW1iRLj//vZIczh7M7H1j2rOqPTAvUDblhNtTP6oz BWww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wMyMmqXp; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 3si17754721wrh.247.2019.11.29.04.48.45; Fri, 29 Nov 2019 04:49:20 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wMyMmqXp; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726785AbfK2Mry (ORCPT + 99 others); Fri, 29 Nov 2019 07:47:54 -0500 Received: from mail.kernel.org ([198.145.29.99]:60156 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726360AbfK2Mrx (ORCPT ); Fri, 29 Nov 2019 07:47:53 -0500 Received: from localhost.localdomain (unknown [77.139.212.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D686B20869; Fri, 29 Nov 2019 12:47:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1575031673; bh=8mpzu7dSpAW3zgsLY5HpFRbSi5uXYsx8cRW9lxPm208=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=wMyMmqXpyIUeftc/wN04bBCgUHyTfX1d4gxz02XkYEqEKgmnXME13Wnkjpfk16qVh kV8008Q4B7zZAwySZbzlmTNeVHl5BWS3LxfOjiJibL0awC3SZIu9nUVa4pPbZiDAzW YfYnghIgLDhpZnOGTMKWgjlrhgWWyAlJPtm0vpRk= Date: Fri, 29 Nov 2019 14:47:44 +0200 From: Lorenzo Bianconi To: Stanislaw Gruszka Cc: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Roy Luo , Markus Theil Subject: Re: [PATCH 1/3] mt76: usb: use max packet length for m76u_copy Message-ID: <20191129124744.GE32696@localhost.localdomain> References: <1575030748-2218-1-git-send-email-sgruszka@redhat.com> <1575030748-2218-2-git-send-email-sgruszka@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="so9zsI5B81VjUb/o" Content-Disposition: inline In-Reply-To: <1575030748-2218-2-git-send-email-sgruszka@redhat.com> User-Agent: Mutt/1.12.1 (2019-06-15) Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org --so9zsI5B81VjUb/o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable > For transferring data over USB the optimal size is endpoint maxpacket. > For my hardware maxpaket for control endpoint is 64 bytes and changing > to this value from 128 bytes further shorten TBTT work time from > 3ms to 1ms. >=20 > Signed-off-by: Stanislaw Gruszka > --- > drivers/net/wireless/mediatek/mt76/mt76.h | 7 +++---- > drivers/net/wireless/mediatek/mt76/usb.c | 29 +++++++++++++++++++------= ---- > 2 files changed, 22 insertions(+), 14 deletions(-) >=20 > diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wire= less/mediatek/mt76/mt76.h > index 1981912de1f9..c268c3d76b3d 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt76.h > +++ b/drivers/net/wireless/mediatek/mt76/mt76.h > @@ -381,10 +381,9 @@ enum mt76u_out_ep { > #define MCU_RESP_URB_SIZE 1024 > struct mt76_usb { > struct mutex usb_ctrl_mtx; > - union { > - u8 data[128]; > - __le32 reg_val; > - }; > + __le32 reg_val; > + u8 *data; > + u16 data_len; > =20 > struct tasklet_struct rx_tasklet; > struct workqueue_struct *stat_wq; > diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wirel= ess/mediatek/mt76/usb.c > index 97b263ce3872..a9ff2bd62fc9 100644 > --- a/drivers/net/wireless/mediatek/mt76/usb.c > +++ b/drivers/net/wireless/mediatek/mt76/usb.c > @@ -163,7 +163,7 @@ static void mt76u_copy(struct mt76_dev *dev, u32 offs= et, > =20 > mutex_lock(&usb->usb_ctrl_mtx); > while (i < len) { > - current_batch_size =3D min_t(int, sizeof(usb->data), len - i); > + current_batch_size =3D min_t(int, usb->data_len, len - i); > memcpy(usb->data, val + i, current_batch_size); > ret =3D __mt76u_vendor_request(dev, MT_VEND_MULTI_WRITE, > USB_DIR_OUT | USB_TYPE_VENDOR, > @@ -950,6 +950,15 @@ int mt76u_alloc_queues(struct mt76_dev *dev) > .kick =3D mt76u_tx_kick, > }; > =20 > +void mt76u_deinit(struct mt76_dev *dev) > +{ > + if (dev->usb.stat_wq) { > + destroy_workqueue(dev->usb.stat_wq); > + dev->usb.stat_wq =3D NULL; > + } > +} > +EXPORT_SYMBOL_GPL(mt76u_deinit); > + > int mt76u_init(struct mt76_dev *dev, > struct usb_interface *intf) > { > @@ -974,6 +983,15 @@ int mt76u_init(struct mt76_dev *dev, > if (!usb->stat_wq) > return -ENOMEM; > =20 > + usb->data_len =3D usb_maxpacket(udev, usb_sndctrlpipe(udev, 0), 1); > + if (usb->data_len < 32) > + usb->data_len =3D 32; Hi Stanislaw, usb->data_len =3D max_t(u16, 32, usb_maxpacket(udev, usb_sndctrlpipe(udev, 0), 1)); Moreover are you sure using ctrl endpoint 0 is fine for all devices? Regards, Lorenzo > + usb->data =3D devm_kmalloc(dev->dev, usb->data_len, GFP_KERNEL); > + if (!usb->data) { > + mt76u_deinit(dev); > + return -ENOMEM; > + } > + > mutex_init(&usb->mcu.mutex); > =20 > mutex_init(&usb->usb_ctrl_mtx); > @@ -988,14 +1006,5 @@ int mt76u_init(struct mt76_dev *dev, > } > EXPORT_SYMBOL_GPL(mt76u_init); > =20 > -void mt76u_deinit(struct mt76_dev *dev) > -{ > - if (dev->usb.stat_wq) { > - destroy_workqueue(dev->usb.stat_wq); > - dev->usb.stat_wq =3D NULL; > - } > -} > -EXPORT_SYMBOL_GPL(mt76u_deinit); > - > MODULE_AUTHOR("Lorenzo Bianconi "); > MODULE_LICENSE("Dual BSD/GPL"); > --=20 > 1.9.3 >=20 --so9zsI5B81VjUb/o Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQTquNwa3Txd3rGGn7Y6cBh0uS2trAUCXeETbgAKCRA6cBh0uS2t rBBOAQDNnArWFYTSEu65q/Zotlox8Wshke+eMwDAvZX4jyUo0wEA33SXpGwe0pn4 Nyw6f2d8XhhewZTatTDC2U//vPDEYQw= =VGtx -----END PGP SIGNATURE----- --so9zsI5B81VjUb/o--