Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp8020761ybc; Fri, 29 Nov 2019 04:33:28 -0800 (PST) X-Google-Smtp-Source: APXvYqwTAKAsTPOsJ6UBMXF+xaR8iLQVir4I0h0H72MncuBHMGkBUrhylK5nG/T8YFigZYt0bWGP X-Received: by 2002:a50:d756:: with SMTP id i22mr45001499edj.24.1575030808725; Fri, 29 Nov 2019 04:33:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575030808; cv=none; d=google.com; s=arc-20160816; b=NigJGafOVBcXTMEqmuAbtPsXlvBnbAu962wgLZG0o6XPuI3IaWIo+6OP4/tnGmoAY4 QkGXgAi2Hr4rjVkSWJ7l8hVevjNGWbtjyxZaSsoABFFzvUxvkkgCgmmkJcZddLRoLQv8 wuobAi1aba72Qx3BG3GVCM2/tD/fHp+vRVo3dsicSxlhyYuMXHfHPkuWQ7SkyveDqRxO ECwjSkxduZ6KvgVwWvKNhXlz6BBPmXaMWEPLMHFLoBSKs9RRrFF450fk30lwPmWApURV pNXG24e/LPPDC+3qBkCPT0SW9t5IbMAd5L140KmR/oZt1o/P5bhU6/JxKziN4+k/YrM2 uH7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=x2fAuEBBSRpY/CSNwJra01Bn9YnaOkh9MtKcG5tFe0E=; b=KiVHUdTbNPqWTBSzN/CKrT4mBZ9iTANbaHfrOfgmQ3XE0PQwK3WPHlu28Vi/r2exNM /uho538nCvr5szZoSfSEDrwrtbS7EN4jxxytpuqTkOIcdv/qCyax+AO2UnSmUV9WTcWp fd4ILkFxTdsm2p4eOIlAO5nRt/D2xhJu2TI5d65VKO8VvdROd3YjbuEQ11qodJuULdxq iAmFhYaRwG6FE0Hha2KKWs1ppdkeNT303F2HI15nsIiZzRr3x0rnfCi0U8OYD0u7g05i FcrXWtBcAX3sP2OqtVFpd8M3cWZI5vuRjvCV94/xTjxZbkLUyguvkMtqCxZnB4GckPJg w5dg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=GwKbmN2N; 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c15si14040769ejd.74.2019.11.29.04.32.46; Fri, 29 Nov 2019 04:33:28 -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=@redhat.com header.s=mimecast20190719 header.b=GwKbmN2N; 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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726778AbfK2Mcn (ORCPT + 99 others); Fri, 29 Nov 2019 07:32:43 -0500 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:41346 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726360AbfK2Mcn (ORCPT ); Fri, 29 Nov 2019 07:32:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1575030761; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=x2fAuEBBSRpY/CSNwJra01Bn9YnaOkh9MtKcG5tFe0E=; b=GwKbmN2Nwwcw8CXZ1hTIcm1cj/h68n4Cca6jKjcHPndY/8skIEqXIEVyfD0Ah7U2BcEU43 earDUd9OG307gO14ZumJPmHxCrms1UlYJIe5CuqBtgSm6yaRWQ7Gue2a8erc9cgXIAlB0X rpJcg9KiSMowujXYbZiMmEbWW4DQ7jA= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-369-Z0aioIREN7OjDpgUYbMl6A-1; Fri, 29 Nov 2019 07:32:38 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 38275184CAAA; Fri, 29 Nov 2019 12:32:37 +0000 (UTC) Received: from localhost (unknown [10.43.2.71]) by smtp.corp.redhat.com (Postfix) with ESMTP id A4E2D60BE2; Fri, 29 Nov 2019 12:32:36 +0000 (UTC) From: Stanislaw Gruszka To: linux-wireless@vger.kernel.org Cc: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Roy Luo , Markus Theil Subject: [PATCH 1/3] mt76: usb: use max packet length for m76u_copy Date: Fri, 29 Nov 2019 13:32:26 +0100 Message-Id: <1575030748-2218-2-git-send-email-sgruszka@redhat.com> In-Reply-To: <1575030748-2218-1-git-send-email-sgruszka@redhat.com> References: <1575030748-2218-1-git-send-email-sgruszka@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-MC-Unique: Z0aioIREN7OjDpgUYbMl6A-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org 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. 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(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wirele= ss/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=091024 struct mt76_usb { =09struct mutex usb_ctrl_mtx; -=09union { -=09=09u8 data[128]; -=09=09__le32 reg_val; -=09}; +=09__le32 reg_val; +=09u8 *data; +=09u16 data_len; =20 =09struct tasklet_struct rx_tasklet; =09struct workqueue_struct *stat_wq; diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireles= s/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 offset= , =20 =09mutex_lock(&usb->usb_ctrl_mtx); =09while (i < len) { -=09=09current_batch_size =3D min_t(int, sizeof(usb->data), len - i); +=09=09current_batch_size =3D min_t(int, usb->data_len, len - i); =09=09memcpy(usb->data, val + i, current_batch_size); =09=09ret =3D __mt76u_vendor_request(dev, MT_VEND_MULTI_WRITE, =09=09=09=09=09 USB_DIR_OUT | USB_TYPE_VENDOR, @@ -950,6 +950,15 @@ int mt76u_alloc_queues(struct mt76_dev *dev) =09.kick =3D mt76u_tx_kick, }; =20 +void mt76u_deinit(struct mt76_dev *dev) +{ +=09if (dev->usb.stat_wq) { +=09=09destroy_workqueue(dev->usb.stat_wq); +=09=09dev->usb.stat_wq =3D NULL; +=09} +} +EXPORT_SYMBOL_GPL(mt76u_deinit); + int mt76u_init(struct mt76_dev *dev, =09 struct usb_interface *intf) { @@ -974,6 +983,15 @@ int mt76u_init(struct mt76_dev *dev, =09if (!usb->stat_wq) =09=09return -ENOMEM; =20 +=09usb->data_len =3D usb_maxpacket(udev, usb_sndctrlpipe(udev, 0), 1); +=09if (usb->data_len < 32) +=09=09usb->data_len =3D 32; +=09usb->data =3D devm_kmalloc(dev->dev, usb->data_len, GFP_KERNEL); +=09if (!usb->data) { +=09=09mt76u_deinit(dev); +=09=09return -ENOMEM; +=09} + =09mutex_init(&usb->mcu.mutex); =20 =09mutex_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) -{ -=09if (dev->usb.stat_wq) { -=09=09destroy_workqueue(dev->usb.stat_wq); -=09=09dev->usb.stat_wq =3D NULL; -=09} -} -EXPORT_SYMBOL_GPL(mt76u_deinit); - MODULE_AUTHOR("Lorenzo Bianconi "); MODULE_LICENSE("Dual BSD/GPL"); --=20 1.9.3