Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2400815pxj; Sun, 13 Jun 2021 19:44:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyYYJvHPFCXpTvBiOHVWwmGdQZnOcsUKwkHJ2BwoAsFli/tBze4rClFI4o/1YqQtjKna7uO X-Received: by 2002:a17:906:56ca:: with SMTP id an10mr13195609ejc.328.1623638650932; Sun, 13 Jun 2021 19:44:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623638650; cv=none; d=google.com; s=arc-20160816; b=lDXVCeGvwvF9QX74zFh9twPiCLS9paMIz7Ctiz3aFTZb4x7J9C32lwUzbo7QVCI4wo 5vnzbOuFDhVzpkuBeL2M4OB6zxhvbO9VIkP7bBU/AXjVT3dyZ+w/77HhI/xrvq0VZdye 2N38AQqXJ1FTzZqeEMwmT/cLjM9ryzv/kj3xRqjYbGyOWz8pmyrJaDxmZ1RCR2OCwqXM OgZCv3zwxGTF3YAiew43n9F2t6nTpJkZsqE+/hZVX9ew5PLDcDxZnbCiVps6WOA2vJ03 aqKtm8wCCbj+fbdhjBp/KpX2oiSV46axn9eEkHZ//ph2OSHPRbNvSayL/V15RydEJPdO SjuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=eYvGHjDCuADljb2rO2hqe2W6UV06jWEIjTXex3m2bhA=; b=yLUuWQnTV+TFwUKUCo48B6Uc2IBOWuqGdUWfZz0B1li2y7Ed4yL7BOb0tygV8b+3bo MgyDaqrF1O53qBIeVgdSIhT+eJHg7ogSgTeICGnwr+vvwjauK1TalVJ97rSxEWXLXppE /JC/q92BF1qxddDDmdj2ZjY2ujTAqpc9XbI0O5FefRGeQ/e96r3HYq58sBteUZA6XB+H zgxbCWJwVgrmzFn9+WmmubA9ot3oPNsvZUtNeZ1m5k33Foyt9xfbboumT0HPfufSDQTu NGCKn0egim4Jx5xSMtBEshAaabEFv9139ff/s6nT5YuH+zv+d7Hro55io1Pq5RiTXoWK ZtwA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l5si10657482ejx.554.2021.06.13.19.43.47; Sun, 13 Jun 2021 19:44:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232339AbhFNC13 (ORCPT + 99 others); Sun, 13 Jun 2021 22:27:29 -0400 Received: from mail-ed1-f49.google.com ([209.85.208.49]:37740 "EHLO mail-ed1-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232269AbhFNC11 (ORCPT ); Sun, 13 Jun 2021 22:27:27 -0400 Received: by mail-ed1-f49.google.com with SMTP id b11so44416758edy.4; Sun, 13 Jun 2021 19:25:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=eYvGHjDCuADljb2rO2hqe2W6UV06jWEIjTXex3m2bhA=; b=PQX9yYVQvnz5dq179dkPQmpGdFd3ItqDA1jcKzBU8MIvy0EtETm0nrNvjbz4rZ7PGe cqOdt6U/gefLe41c0KzC94UOoiB7/yItRgYwvTE8d3K55OMoWONRX6tuxDgNkLSQM8ws d2pWjUF7JiZT6acwXgAPIDYDHvBgBKqNaaBdQhhmYT2IL1zyRXiQFS0Tbtlfa/XP0YyS ZJZ3PWC1WnwChA1solrT6nTuXwd1Z/Cyb5anzrBaIq2SV61+1nd9jE/DC8GuaolPjnvO e30x6+qEtQHTDFvXI4MFFqLW+RaBcXnKKX3FNfAhhNe3SUK13eSxMNoj2gZRd7ncNpkB PCvg== X-Gm-Message-State: AOAM533yMk/P5APA/pvDkcEcKX/l33DO5d7jv+KT47gGxZQC/GhWXLyi wiG/00x/YvhDCtMOIdQAa+WDSIKj4QI= X-Received: by 2002:aa7:ce03:: with SMTP id d3mr14552830edv.360.1623637512333; Sun, 13 Jun 2021 19:25:12 -0700 (PDT) Received: from msft-t490s.teknoraver.net (net-37-119-128-179.cust.vodafonedsl.it. [37.119.128.179]) by smtp.gmail.com with ESMTPSA id f18sm2768255edu.5.2021.06.13.19.25.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Jun 2021 19:25:11 -0700 (PDT) From: Matteo Croce To: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Giuseppe Cavallaro , Alexandre Torgue , "David S. Miller" , Jakub Kicinski , Palmer Dabbelt , Paul Walmsley , Drew Fustini , Emil Renner Berthing Subject: [PATCH net-next] stmmac: align RX buffers Date: Mon, 14 Jun 2021 04:25:04 +0200 Message-Id: <20210614022504.24458-1-mcroce@linux.microsoft.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matteo Croce On RX an SKB is allocated and the received buffer is copied into it. But on some architectures, the memcpy() needs the source and destination buffers to have the same alignment to be efficient. This is not our case, because SKB data pointer is misaligned by two bytes to compensate the ethernet header. Align the RX buffer the same way as the SKB one, so the copy is faster. An iperf3 RX test gives a decent improvement on a RISC-V machine: before: [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 733 MBytes 615 Mbits/sec 88 sender [ 5] 0.00-10.01 sec 730 MBytes 612 Mbits/sec receiver after: [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.10 GBytes 942 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 1.09 GBytes 940 Mbits/sec receiver And the memcpy() overhead during the RX drops dramatically. before: Overhead Shared O Symbol 43.35% [kernel] [k] memcpy 33.77% [kernel] [k] __asm_copy_to_user 3.64% [kernel] [k] sifive_l2_flush64_range after: Overhead Shared O Symbol 45.40% [kernel] [k] __asm_copy_to_user 28.09% [kernel] [k] memcpy 4.27% [kernel] [k] sifive_l2_flush64_range Signed-off-by: Matteo Croce --- drivers/net/ethernet/stmicro/stmmac/stmmac.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h index b6cd43eda7ac..04bdb3950d63 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h @@ -338,9 +338,9 @@ static inline bool stmmac_xdp_is_enabled(struct stmmac_priv *priv) static inline unsigned int stmmac_rx_offset(struct stmmac_priv *priv) { if (stmmac_xdp_is_enabled(priv)) - return XDP_PACKET_HEADROOM; + return XDP_PACKET_HEADROOM + NET_IP_ALIGN; - return 0; + return NET_SKB_PAD + NET_IP_ALIGN; } void stmmac_disable_rx_queue(struct stmmac_priv *priv, u32 queue); -- 2.31.1