From patchwork Sat Mar 23 15:23:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Russkikh X-Patchwork-Id: 1062310 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=aquantia.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=AQUANTIA1COM.onmicrosoft.com header.i=@AQUANTIA1COM.onmicrosoft.com header.b="PZzXW3LY"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44RPSK31c4z9sSW for ; Sun, 24 Mar 2019 02:23:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727671AbfCWPXj (ORCPT ); Sat, 23 Mar 2019 11:23:39 -0400 Received: from mail-eopbgr760045.outbound.protection.outlook.com ([40.107.76.45]:15874 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727494AbfCWPXi (ORCPT ); Sat, 23 Mar 2019 11:23:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RWbuegG4bqkoABY/F0q1Qgl7lmKTwhIizPuVewPu7YU=; b=PZzXW3LYMN0EukhAbG/QaFjpszynSV9wR7mdmvt5UMiGGD88Fu+wfQVwayBlDLDzFi5i3QvqkIUJ5LeZx6fX8lQUFB6X9Dl7QGQIdVbrjyA/4yMjzdsJFJ/byIZXdBZIcdYnhag6N5oiJ4Uj0Jj8c01RQE1a8IZc2Y38v64wbs8= Received: from DM6PR11MB3625.namprd11.prod.outlook.com (20.178.230.149) by DM6PR11MB3659.namprd11.prod.outlook.com (20.178.231.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1730.15; Sat, 23 Mar 2019 15:23:34 +0000 Received: from DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::d145:a1f4:ed34:e31b]) by DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::d145:a1f4:ed34:e31b%3]) with mapi id 15.20.1730.017; Sat, 23 Mar 2019 15:23:34 +0000 From: Igor Russkikh To: "David S . Miller" CC: "netdev@vger.kernel.org" , Igor Russkikh Subject: [PATCH net-next 3/7] net: aquantia: Introduce rx refill threshold value Thread-Topic: [PATCH net-next 3/7] net: aquantia: Introduce rx refill threshold value Thread-Index: AQHU4YxhYqaY9YsJGkqEjdExbxadfw== Date: Sat, 23 Mar 2019 15:23:34 +0000 Message-ID: <61fab9293b89737afcdd8b848f1685ce8cb6eb8f.1553353914.git.igor.russkikh@aquantia.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BY5PR13CA0013.namprd13.prod.outlook.com (2603:10b6:a03:180::26) To DM6PR11MB3625.namprd11.prod.outlook.com (2603:10b6:5:13a::21) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Igor.Russkikh@aquantia.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [95.79.108.179] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ebbcc6b3-1c44-4dae-53b6-08d6afa383c2 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(2017052603328)(7153060)(7193020); SRVR:DM6PR11MB3659; x-ms-traffictypediagnostic: DM6PR11MB3659: x-microsoft-antispam-prvs: x-forefront-prvs: 0985DA2459 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(136003)(396003)(376002)(39840400004)(346002)(199004)(189003)(14454004)(97736004)(25786009)(5660300002)(86362001)(81166006)(81156014)(8676002)(2906002)(4326008)(7736002)(305945005)(3846002)(6116002)(316002)(11346002)(476003)(2616005)(446003)(54906003)(44832011)(486006)(52116002)(72206003)(6916009)(6486002)(68736007)(386003)(6506007)(6512007)(76176011)(256004)(99286004)(53936002)(71190400001)(71200400001)(6436002)(478600001)(118296001)(186003)(8936002)(107886003)(105586002)(50226002)(106356001)(66066001)(102836004)(36756003)(26005)(181463001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR11MB3659; H:DM6PR11MB3625.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: O7TG83IkIGFSEDUJXEfqfYvzcsrmeStIJlaSeqI25Gb10juU5vaFnhXy+F5RnolABPPlqePII9WAf8PcTWEo2/1vhXi7XkKhDBcNItDqASDBH/L3fwgflWrzkIV7Dg15hsEBgDHlmFrtpnR9A2bo0jCkR1jit5oiXrSZB+owzumrOOkfBIk/6atcCW3eEVMNiYjTjrvR2NKfH/CeqEztBzWUO9gAYlBxHmuLnQ6f9/RHpGAxN281vxfb9fZg7uk+KAqcxFNvR5pvp0IcVdMC6ymEqLxfzSh3aKDcUNbicm4V2JrabGtwUak6wbv+edzNycsCvFOxivJlERoZKpPfs260ZN8+eIVERlrghymnA6wZ70JLhLlDNY8yzHrgIsh4Bsev1G7je/fR23569FAkkekwI4ucAJ7pSVoXYhMWXf0= MIME-Version: 1.0 X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ebbcc6b3-1c44-4dae-53b6-08d6afa383c2 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Mar 2019 15:23:34.7977 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 83e2e134-991c-4ede-8ced-34d47e38e6b1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3659 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Before that, we've refilled ring even on single descriptor move. Under high packet load that caused page allocation logic to be triggered too often. That made overall ring processing slower. Moreover, with page buffer reuse implemented, we should give a chance higher networking levels to process received packets faster, release the pages they consumed and therefore give a higher chance for these pages to be reused. RX ring is now refilled only when AQ_CFG_RX_REFILL_THRES or more descriptors were processed (32 by default). Under regular traffic this gives quite enough time for packet to be consumed and page to be reused. Signed-off-by: Igor Russkikh --- drivers/net/ethernet/aquantia/atlantic/aq_cfg.h | 2 ++ drivers/net/ethernet/aquantia/atlantic/aq_ring.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h b/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h index 80c16ab87771..551c5cc1714b 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h +++ b/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h @@ -38,6 +38,8 @@ #define AQ_CFG_TX_CLEAN_BUDGET 256U +#define AQ_CFG_RX_REFILL_THRES 32U + #define AQ_CFG_RX_HDR_SIZE 256U #define AQ_CFG_RX_PAGEORDER 0U diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ring.c b/drivers/net/ethernet/aquantia/atlantic/aq_ring.c index 1b258694144c..21c486cecbad 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_ring.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_ring.c @@ -418,6 +418,10 @@ int aq_ring_rx_fill(struct aq_ring_s *self) int err = 0; int i = 0; + if (aq_ring_avail_dx(self) < min_t(unsigned int, AQ_CFG_RX_REFILL_THRES, + self->size / 2)) + return err; + for (i = aq_ring_avail_dx(self); i--; self->sw_tail = aq_ring_next_dx(self, self->sw_tail)) { buff = &self->buff_ring[self->sw_tail];