Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp695660ybc; Tue, 19 Nov 2019 07:50:38 -0800 (PST) X-Google-Smtp-Source: APXvYqwnVQ/9vYPfi72bxPqOoeA63KsVhq3ltJq/QiTdsGKrqfngu7FegBONW3EQz8MNqN/3mkEu X-Received: by 2002:a17:906:938c:: with SMTP id l12mr35416452ejx.135.1574178638543; Tue, 19 Nov 2019 07:50:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574178638; cv=none; d=google.com; s=arc-20160816; b=wzpVbGZNtdzGzejZ3/i6ofZrcQhHuLiem9v3Z9ZxKLh5rIgzUCNMKuf8Oo3sYyy+T6 HQbDSb01x3GptkYABMnNnwdgXYpsLlRQLdCBTkjRRU+ImavhOfTFpHrmzQYIHYtWBcbq 4LT/DNJg9dkKQ45z3o4OnTNusb1rnDLPU6NV6La0QG/BLud8kCQvI92YHLkLW55H1pan nq95kbOBZilCj2NCOyGnHC5dwrZmliwcww3AVnqnFHsOiGWLwJwuwaHPst3H6G55uldR 0Im6oGVfQS2Xjmau1+Sp67bMvDzxpJsRhr6O21x5K/gyKWW6zbolI/h4JTFN4quEB5+q +aHg== 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:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=7kFuBbmKKbEgN6xMfZq6NSJl/L6OamooT8c34i5nNN0=; b=OcQ9O/X3vVwlkRTeTdwoUiufpFA5xfdQGqeWjhAFTW7NjQts1cBowx//9+vJqgnl5R reh8FvrMvPikPOagiqdKYMjWEVLsbgE48F/81WwoqM7ObOiSlzd7DPAUjr9PKItsyCe8 4OY6GkGzx+KOer++SG59POIHM3Jv0c0wmEKBvj/JkwjE4T/4ftnVpNWO+NiJISJR2zoq j+OOvoQutcUa8FySgwlDVI1DeJBAt8Aq156LZzCC8ynZlnZLjUCbfFL/nDPdHtmKLguw SoXz/lx5BHPbe+8Sazjqe9bsy1xnlgaMBJiHCxrol0oddYuLc53VvJZOSgmfcGuqSAEs ej1g== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j20si14065492ejm.348.2019.11.19.07.50.13; Tue, 19 Nov 2019 07:50:38 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728559AbfKSPsD (ORCPT + 99 others); Tue, 19 Nov 2019 10:48:03 -0500 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]:43691 "EHLO smail.rz.tu-ilmenau.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728187AbfKSPsD (ORCPT ); Tue, 19 Nov 2019 10:48:03 -0500 Received: from localhost.localdomain (unknown [141.24.207.101]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id F0D3C58007E; Tue, 19 Nov 2019 16:48:00 +0100 (CET) From: Markus Theil To: nbd@nbd.name Cc: linux-wireless@vger.kernel.org, lorenzo.bianconi@redhat.com, Stanislaw Gruszka , Markus Theil Subject: [PATCH v6 3/5] mt76: mt76x02: remove a copy call for usb speedup Date: Tue, 19 Nov 2019 16:47:44 +0100 Message-Id: <20191119154746.20821-4-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191119154746.20821-1-markus.theil@tu-ilmenau.de> References: <20191119154746.20821-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org This patch removes a mt76_wr_copy call from the beacon path to hw. The skb which is used in this place gets therefore build with txwi inside its data. For mt76 usb drivers, this saves one synchronuous copy call over usb, which lets the beacon work complete faster. In mmio case, there is not enough headroom to put the txwi into the skb, it is therefore using an additional mt76_wr_copy, which is fast over mmio. Thanks Stanislaw for pointing this out. Signed-off-by: Markus Theil --- .../wireless/mediatek/mt76/mt76x02_beacon.c | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c b/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c index 09013adae854..422d53111229 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c @@ -26,15 +26,27 @@ static int mt76x02_write_beacon(struct mt76x02_dev *dev, int offset, struct sk_buff *skb) { int beacon_len = dev->beacon_ops->slot_size; - struct mt76x02_txwi txwi; if (WARN_ON_ONCE(beacon_len < skb->len + sizeof(struct mt76x02_txwi))) return -ENOSPC; - mt76x02_mac_write_txwi(dev, &txwi, skb, NULL, NULL, skb->len); + /* USB devices already reserve enough skb headroom for txwi's. This + * helps to save slow copies over USB. + */ + if (mt76_is_usb(dev)) { + struct mt76x02_txwi *txwi; + + mt76_insert_hdr_pad(skb); + txwi = (struct mt76x02_txwi *)(skb->data - sizeof(*txwi)); + mt76x02_mac_write_txwi(dev, txwi, skb, NULL, NULL, skb->len); + skb_push(skb, sizeof(*txwi)); + } else { + struct mt76x02_txwi txwi; - mt76_wr_copy(dev, offset, &txwi, sizeof(txwi)); - offset += sizeof(txwi); + mt76x02_mac_write_txwi(dev, &txwi, skb, NULL, NULL, skb->len); + mt76_wr_copy(dev, offset, &txwi, sizeof(txwi)); + offset += sizeof(txwi); + } mt76_wr_copy(dev, offset, skb->data, skb->len); return 0; -- 2.24.0