From patchwork Fri Oct 7 17:43:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117581 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C083AA04FD; Fri, 7 Oct 2022 19:44:21 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B600440E5A; Fri, 7 Oct 2022 19:44:21 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) by mails.dpdk.org (Postfix) with ESMTP id B01BE40DFB; Fri, 7 Oct 2022 19:44:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F9NplryJZQLlt1OZ85c5akyiUxidxt7xH1k+g7DslFp6Qypt5eQT0yVnYH0aEHvPtrM7h0KjvDMzLKLJJYgZ4uBAxi/4PbFMBNqDH7tBWySDu6leJFLpwxT+COIATWwL8d2I13wufxtygXOA3vXWeGrgnjckIjHXJ2YEKlT49mxL4DQeIsBEDDs0UPye7dcl3Z+q3FHqAKpYvoN54yoJPJTVwLhdfRXXjpqwhx0pFz98dqd/NrnoeJrLTrRTZYVgBD4qMMcDwU/B+EkTMGCnY4cSeGut86l7ASAZBJpmK+2J//wSK99s4CzJxeLT4erVpvYahr6Ah6gqfoZcmgm06g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=l6qPoordwLRytVvYf+Iggpb+OHA3MOzk2RfVK5FpKVk=; b=WndBut2S8f3KFPBiqNi52JAs80tYC49Qf7XaSmI4O55+qALv0FS2a2XhZhFv1XxG6zP1CJmzHGI9BKbe+EAfebjVWbWfdStlWjvkulJpoBALrPBVvrlR28dG0nfHnkgKDDgvVQjdvoCYED4BrvmnqZqvgnkoBEYza7ViBuM1J5YdzXkw78Rj+dJ5neU6LbvFi4eEQbm0cL/CzdNcyhX4iCyfh/5xWoBiC42/wGFQRkSfcznGhduSbz5hdKYws3SxLie9ZsY4SwWMb3v4mYDRrg9T6+gmuxV3zpiu5ljCgYMK+ma69aVVR3Gyo1sNg7GATjXqxxsxnGL5YbKqCZ+CSg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l6qPoordwLRytVvYf+Iggpb+OHA3MOzk2RfVK5FpKVk=; b=w9hHy1CcvJ/i4j5iI2388OiRpTKgqphQbDhK+8WxAT2V9Tz3vJQQ8yuVVnKzdw/z/WwUc1tQ41RrxxAz4+uvHXMuwkJzSinH2997O4atu5+vKqBCtYiJYdX2yPkfzI3SunB8wGIN5VnqwQKqx/S1NfvKurN3mkPb0GYU4y0qgOQ= Received: from MW4PR03CA0188.namprd03.prod.outlook.com (2603:10b6:303:b8::13) by DS7PR12MB5768.namprd12.prod.outlook.com (2603:10b6:8:77::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.33; Fri, 7 Oct 2022 17:44:18 +0000 Received: from CO1NAM11FT039.eop-nam11.prod.protection.outlook.com (2603:10b6:303:b8:cafe::4d) by MW4PR03CA0188.outlook.office365.com (2603:10b6:303:b8::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT039.mail.protection.outlook.com (10.13.174.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:17 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:16 -0500 From: Andrew Boyer To: CC: Andrew Boyer , , Subject: [PATCH 01/35] net/ionic: fix up endianness for Rx and Tx handling Date: Fri, 7 Oct 2022 10:43:02 -0700 Message-ID: <20221007174336.54354-2-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT039:EE_|DS7PR12MB5768:EE_ X-MS-Office365-Filtering-Correlation-Id: c861cf36-e8e4-4a4c-75ba-08daa88b8ef3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Krb6EPxAO6d5mzDpvSiJlqB/rAgcCxUIhNs9hF15KRANQ+cHj5qhLe6t3IAjk0bBzEmmxyV8vvShBeZeDW/ra37G0xOlA3agvh8yuO/snKMKcNDTtUZ15DaRHaQ1gZ7/A3Q0SuPNTzdkL4t3/zE7amyIq556i774RMapvnFZnYkvGCfuB0DMT2ne2fLiiGdsvLvcFMVwB8c3cpvlivDMoVdfhNMsvRv5pdpqfDlNXk3j0cH/5geiusOQiWdbny4KENhPZkvVSP7H0J9KFcjyT5f9M9n/DepNlfZvPbQ8n3uYQt7IuRnt152voQ9hkXj/nZylfTTx6RFVboJU7H1CqHXI8om9wTQCfotlB5JY4Z7girmSdJ04UT35Uh3rtF3GTvQENcNuPeiexMSn3H6eA9QBIuf+AeELfo4vpHzp1e1pSLEscZh52A/meLKpV/Qv5StxRBdwm+U2GeYGsJRw2P9UJc4XNRE6cw/VZxsQKPAxtQ8MIh0pBfXvmsgux6slN1OOUszoiOSmjEgbbZDjOlIbM89+FSUm2L8GFg+XCRSyP1wD9Z5TpIimDD2ILi9T4W8CrhPjCpKvooQRQdmbUB40R8OOVdrpIVURfB2ydMOsKrx9olbMg5SRHDi3PCzU8yk/4WaH6fVBuIZ0yPujU3/hJzBup0JgNJaimD9npy0d4YS4U8vo/VKSfEIQhzbyKljDAiedddShYDJfnuPXgx0CrzjSee7SOY6Gmt+oFcLp9ZIHJbraRkXluh64oVVRX7nlH4ru/+jM+JJRlcXyctdRX42HaHZ5oUhoFf7n1n0= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(346002)(376002)(136003)(39860400002)(396003)(451199015)(46966006)(36840700001)(40470700004)(426003)(8676002)(83380400001)(47076005)(4326008)(82310400005)(336012)(26005)(40480700001)(36756003)(54906003)(8936002)(70206006)(478600001)(70586007)(186003)(2906002)(41300700001)(36860700001)(6666004)(1076003)(6916009)(86362001)(356005)(44832011)(5660300002)(2616005)(82740400003)(16526019)(316002)(40460700003)(81166007)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:17.6867 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c861cf36-e8e4-4a4c-75ba-08daa88b8ef3 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT039.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5768 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org These fields all need to be LE when talking to the FW. Fixes: a27d901331da ("net/ionic: add Rx and Tx handling") Cc: cardigliano@ntop.org Cc: stable@dpdk.org Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_rxtx.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 9f602de6a9..af2d89f9fa 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -300,18 +300,20 @@ ionic_tx_tso_post(struct ionic_queue *q, struct ionic_txq_desc *desc, bool start, bool done) { void **info; + uint64_t cmd; uint8_t flags = 0; flags |= has_vlan ? IONIC_TXQ_DESC_FLAG_VLAN : 0; flags |= encap ? IONIC_TXQ_DESC_FLAG_ENCAP : 0; flags |= start ? IONIC_TXQ_DESC_FLAG_TSO_SOT : 0; flags |= done ? IONIC_TXQ_DESC_FLAG_TSO_EOT : 0; - desc->cmd = encode_txq_desc_cmd(IONIC_TXQ_DESC_OPCODE_TSO, + cmd = encode_txq_desc_cmd(IONIC_TXQ_DESC_OPCODE_TSO, flags, nsge, addr); - desc->len = len; - desc->vlan_tci = vlan_tci; - desc->hdr_len = hdrlen; - desc->mss = mss; + desc->cmd = rte_cpu_to_le_64(cmd); + desc->len = rte_cpu_to_le_16(len); + desc->vlan_tci = rte_cpu_to_le_16(vlan_tci); + desc->hdr_len = rte_cpu_to_le_16(hdrlen); + desc->mss = rte_cpu_to_le_16(mss); if (done) { info = IONIC_INFO_PTR(q, q->head_idx); @@ -423,7 +425,7 @@ ionic_tx_tso(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) len = RTE_MIN(frag_left, left); frag_left -= len; elem->addr = next_addr; - elem->len = len; + elem->len = rte_cpu_to_le_16(len); elem++; desc_nsge++; } else { @@ -470,7 +472,7 @@ ionic_tx(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) bool encap; bool has_vlan; uint64_t ol_flags = txm->ol_flags; - uint64_t addr; + uint64_t addr, cmd; uint8_t opcode = IONIC_TXQ_DESC_OPCODE_CSUM_NONE; uint8_t flags = 0; @@ -505,9 +507,10 @@ ionic_tx(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) addr = rte_cpu_to_le_64(rte_mbuf_data_iova(txm)); - desc->cmd = encode_txq_desc_cmd(opcode, flags, txm->nb_segs - 1, addr); - desc->len = txm->data_len; - desc->vlan_tci = txm->vlan_tci; + cmd = encode_txq_desc_cmd(opcode, flags, txm->nb_segs - 1, addr); + desc->cmd = rte_cpu_to_le_64(cmd); + desc->len = rte_cpu_to_le_16(txm->data_len); + desc->vlan_tci = rte_cpu_to_le_16(txm->vlan_tci); info[0] = txm; @@ -515,7 +518,7 @@ ionic_tx(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) txm_seg = txm->next; while (txm_seg != NULL) { - elem->len = txm_seg->data_len; + elem->len = rte_cpu_to_le_16(txm_seg->data_len); elem->addr = rte_cpu_to_le_64(rte_mbuf_data_iova(txm_seg)); elem++; txm_seg = txm_seg->next; @@ -845,7 +848,7 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, /* Vlan Strip */ if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_VLAN) { pkt_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; - rxm->vlan_tci = cq_desc->vlan_tci; + rxm->vlan_tci = rte_le_to_cpu_16(cq_desc->vlan_tci); } /* Checksum */ From patchwork Fri Oct 7 17:43:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117582 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5D4C3A04FD; Fri, 7 Oct 2022 19:44:29 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 10D26427F2; Fri, 7 Oct 2022 19:44:24 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2074.outbound.protection.outlook.com [40.107.94.74]) by mails.dpdk.org (Postfix) with ESMTP id B0231427F4; Fri, 7 Oct 2022 19:44:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IAFzTll8/FrEndhLyrf04Xzafo5JHz1KtPR5Vvx6URSuFwbUlzWi/KtN962gKeIAs3HaEFcpSXd+Krrhe0Egs2x0KakjhxkVkKYU3vuwfdfHcGfueoa8rL76qGj4a39zRxNHkfv7oAiKwFibDhIleeWbhz6cZGKqJ9eFGvEzjkIaso50T3IDDsEV43jPAjR9BJ8TDaNYc9XLnmQXDuE6dlr/6dR9J/9H8SXMmZAk9wvNn0hqzPPFFXZUeq9TPG/w/bW6K9UWzsJDZLpm2QW5cfQr0Bw4jBluGJxFADaJzyrdbu1kaJOjTFtxLKG8Pe6EepNk+MOxID9bm1yDkxccOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wv+SJFHZtoF0cbL6kOsGC6q4yIamc00xvELMlpsSuVw=; b=AkdBbk+rInMl8SLkfNxzJdvdoSq+HsbWaKHtoC1ynwmOmzEPUfEXU/GRjMB4iBd75jqobEvER8Wtdhv9LnVWAje9O2WrADN35JzILHHbKM9DcszYZmafZuF/6bRiq/U5busxtWuSI8z0qEWouSOsAXIUGdaVmfnnSWOwoiTbXuHN8tg4wxxgFSSm9nNUzh1zm30IiPAz66gP5zjID/eTkgMpTGnACne0xbyjtyJT4ecm593SZYD27gZsZQt44RnjcUoAbg0oifQfhL5WKGsg8Q5YymJMmC/15Der3Jw9I1iLQoHD4lixHAZZGXVp3Wgi8VJL+ZNXFZpv3JVmDpNoFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wv+SJFHZtoF0cbL6kOsGC6q4yIamc00xvELMlpsSuVw=; b=Wyx23LIrdxcXe2kpnVrdkv3UPYhaYR/7mwlS1b8x5wcEtCMpuaBkPXRBQmhDVcrvgg/+0I+AHXkoRX5kz9sXcyc02Hb28vEoHj0PlDGAVCnpXmEEOqmIuvI1EURkbqguAdXYZQHLy+hzG/MA4HJ5zv/qvnkHFmhvQOIinBfS+oQ= Received: from MW4PR03CA0315.namprd03.prod.outlook.com (2603:10b6:303:dd::20) by CY5PR12MB6299.namprd12.prod.outlook.com (2603:10b6:930:20::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Fri, 7 Oct 2022 17:44:21 +0000 Received: from CO1NAM11FT101.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dd:cafe::c3) by MW4PR03CA0315.outlook.office365.com (2603:10b6:303:dd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:44:20 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT101.mail.protection.outlook.com (10.13.175.164) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:20 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:19 -0500 From: Andrew Boyer To: CC: Andrew Boyer , , Subject: [PATCH 02/35] net/ionic: fix up endianness for RSS Date: Fri, 7 Oct 2022 10:43:03 -0700 Message-ID: <20221007174336.54354-3-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT101:EE_|CY5PR12MB6299:EE_ X-MS-Office365-Filtering-Correlation-Id: 6f0f7627-fa15-4543-d367-08daa88b90b6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: q3Tz04Cw07JYrTMWNBA32mt6Ni+vnpFcniYGlTa+Z4nS6blnyLJKpHygmUBnI4sjCd3SmtTrLWVUmp7JHRrmTj/n0TvKwOhnLgMohopmjQ9wKKxGAZ8+FXGG7LEzPRBLWYo3E3sOXOtpl5QY7EZUpb3JP8svOTvoi8AMTrHyRCEIjEZPjq7KT0/rzj5LXKpzn/t4e/a4SC6pz+9PHs6CmmvB2ussDlZFDjAoVZM02eB+xel74N/Y07++m8iHBvSXyFb+49qk30SCI2Gw586fJhtRJsZB6JqJaEkjQI8lniPjSkyg75m1PuFG1Dv9hxKUIJqx/e+i3F5YcBouqQJM88bJYXlaQwf/GucNVKwpY9sxeEJ6P3aIkO1GAhRZYg4YNQdYfApQfsYr45L5Fgwa1eciasMpT9c80DptKdlLFP4XYnhjym1CL+0oPuZaD3j/LslUsRMhoO+6Yr0lADpOsycDc9NSPJ+wpSuvNdfOrTdp9QcVWGF+scJAapTXXEeEGQYE6RWkxrs1GuLyPqfH57USc9SDWZ1ITFb+6fY1INMslhk7VmJ4GrvUDYMPvYu9fq9knbbWH/u2eHAtr43gNj1sdIzX2FUm5gbFgZD/YEuB1OptZDHRce+3NPJGg/5palKVXdefO/Esqkt6OPgtu3K+FyOn0Li048uU2PjniK1dnRvgiPDWSLRhukl+9efiNOzcX68rH7j5SNHKkpai2kmVMXfQB2vo+BZPl+DuVrZbTYCtbighm6w4oEefW9YrwgtBD40hG98E3Nfh+BNrDptsQUltzJleZXFM6yzXLQ4= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(396003)(136003)(376002)(346002)(39860400002)(451199015)(46966006)(36840700001)(40470700004)(2906002)(316002)(5660300002)(70586007)(36860700001)(478600001)(8676002)(4744005)(70206006)(4326008)(6666004)(41300700001)(86362001)(6916009)(36756003)(336012)(54906003)(82310400005)(8936002)(186003)(44832011)(356005)(83380400001)(426003)(1076003)(47076005)(26005)(82740400003)(2616005)(16526019)(40480700001)(81166007)(40460700003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:20.6449 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6f0f7627-fa15-4543-d367-08daa88b90b6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT101.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6299 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This field needs to be LE when talking to the FW. Fixes: 22e7171bc63b ("net/ionic: support RSS") Cc: cardigliano@ntop.org Cc: stable@dpdk.org Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_rxtx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index af2d89f9fa..665d085823 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -843,7 +843,7 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, /* RSS */ pkt_flags |= RTE_MBUF_F_RX_RSS_HASH; - rxm->hash.rss = cq_desc->rss_hash; + rxm->hash.rss = rte_le_to_cpu_32(cq_desc->rss_hash); /* Vlan Strip */ if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_VLAN) { From patchwork Fri Oct 7 17:43:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117583 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B4C1DA04FD; Fri, 7 Oct 2022 19:44:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 02B6142802; Fri, 7 Oct 2022 19:44:27 +0200 (CEST) Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2079.outbound.protection.outlook.com [40.107.100.79]) by mails.dpdk.org (Postfix) with ESMTP id D447D42802; Fri, 7 Oct 2022 19:44:25 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n16kh+UmZlUOMllenpu+lh7tjJaZv0dgKiDUSd8U5LuCxxDdyEhvqd6T403MpFvvNd8Dc9URQVh3usIlhfDdWK9G+AceqLC/rYtJfLNY99X3EDJcgk64pBR8guCxvUVC6eZZcR0yYmEQbjbjG/nk8vV5l6lIpefgS0bwSEUzvRBONvJPxKTgCanu+ivNtyJknXQUBWY3oPZ564cR0j2UzMZkdLzFz3jCUq6pa8rw1333BioCMYB0PAJFakwPiG2ODQuTJ+C9spTJXDvEkrrUMDQtxBJJh+Zuyru/DVOYsDLfbjl/+pBXEdBVSSg2Rp6EPn0fIKTXqsjkg2q2HlTR3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2CXwDgXKQExNPERJKMEc7MExWRkKVvmTzBk353Hx568=; b=C9X7k/7vofZOwA1brdMfAeZaqQE42ythJRTMJ7kNhkLDp1U5fLFZ/p1bYxYTu5BdfUYqG0R/oDQJJTnPLBdw262x0bpuiBm1nfxlPDXwfXhD5vixOUg+cB/aOKoIXVlAhFFyfeUEZsUzqnFY92f9dpib3HMUscr0jxbaD3B3TGV1u7oJBNt8omh+1FkOwYP9iq+Po4buRd79FQFpmD4UglC+f9X1QphkGI87PC/trNw1ar2kSailTuQWee76x6f4c3+f3oBxgTwFFXGjsLUSjwjsVyerk79a9MALbYeBri1kMMme+ePb/anNIYP+zq/N4mPmTXM09rr9Odadtgn2Iw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2CXwDgXKQExNPERJKMEc7MExWRkKVvmTzBk353Hx568=; b=Qnpww+56s2At65HbzUbB7TDdfkxdDTL+0JPDJHMyL6ADXfMrX2C8KGCrJ1AW1SvEuwEuWzU6P26pHJslEm4jEAiZXBtQivOC//x/MtkAgkj+v9ffnXHf4QH3vaEOC9wqrzAN6SaHaWlkFiFC3fYkHFUxvwHLdBRTqcVmO7SGvqg= Received: from MW4PR03CA0315.namprd03.prod.outlook.com (2603:10b6:303:dd::20) by BY5PR12MB4323.namprd12.prod.outlook.com (2603:10b6:a03:211::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Fri, 7 Oct 2022 17:44:22 +0000 Received: from CO1NAM11FT101.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dd:cafe::e7) by MW4PR03CA0315.outlook.office365.com (2603:10b6:303:dd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:44:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT101.mail.protection.outlook.com (10.13.175.164) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:22 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:21 -0500 From: Andrew Boyer To: CC: Andrew Boyer , Subject: [PATCH 03/35] net/ionic: fix to set the adapter name for logging Date: Fri, 7 Oct 2022 10:43:04 -0700 Message-ID: <20221007174336.54354-4-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT101:EE_|BY5PR12MB4323:EE_ X-MS-Office365-Filtering-Correlation-Id: 01e74cea-abe1-453c-7723-08daa88b91a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Bm80TsoJe/vlnlYYxxwj1CHxP1IIiQSITB20F3rSly0HVoYXgHBgZ9hbYQGIJM+O0e9a6SsallQWTbCQYBIsZQzIwYQq7J86gLWaIgE/DsgF0et5tUz9LVAdMlUUcgXXBmsMte/yjXaP2Vg9FX/aCIJm67t+m9qMAEcLS7JbBvAa9i8iQrNn3Lk6+XEPkHm0FhTbQRPTQjbAo+lBrhNORRBCfUj8g28qDkjDm9z2RurCuVAsgc7e2wCLz+l41aBH8dhSqmxqXz/IqMtAc5PxcCE7mNW7f4j5MBrGgrtLKZ4+fgtwCgcZFO2Gn1HLqWBJVSj8DdxQyi7E6fepEEViHqddn37aW3Y1SVjWh6DQXe9DVHVV4yp/chqekP/jaPwl88SqaMXOtSNx23q48q3wlhj+stnB3XaVR0bJ7lVtB/meuYpBbgNDDpKCTZ6yFXOJn+wmu0xnQWrL0jvXM0JLXU5XMidd7V2Q8sSUFwek5OrjlaYk51NYOB+rvMHPVRYGh8Ho+MLzSxZm/9BhBlb6gwX0N2xYExheFant9CqRKxiyflz/xoG9J+eBvYBJTsm2jyUdpujxnyWJybE3dC8v/TF6s3zPBSwqjJacW4pAVpEscinJETYyS2JK5bpQQ4xmK4kcmsEaXFpVtmoJ3V5URbjsDN+rMaQidfaLt03fopY2DnkdxmWKXWU+7C30uWINhEU8Qj+XkLiHQuMRdC45CEQBAL2YTAERTzCDReRVDgzomwPEDadvALcWEyJ/GGBVE7TH0fUoIrGDZIurpOkCGeAuuxBUL1xq8GVqfCRVMJOHcj7eF2TsKcgAAaSYYpRP X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(396003)(346002)(376002)(136003)(451199015)(46966006)(36840700001)(40470700004)(426003)(83380400001)(6666004)(36860700001)(186003)(16526019)(47076005)(86362001)(82310400005)(336012)(81166007)(82740400003)(356005)(6916009)(44832011)(316002)(70586007)(41300700001)(40480700001)(8676002)(70206006)(450100002)(8936002)(4326008)(26005)(1076003)(2616005)(40460700003)(5660300002)(54906003)(4744005)(2906002)(478600001)(36756003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:22.1760 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 01e74cea-abe1-453c-7723-08daa88b91a0 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT101.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4323 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Otherwise the log messages will be garbled. Fixes: 4ae96cb88fa0 ("net/ionic: do minor logging fixups") Cc: stable@dpdk.org Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_dev.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ionic/ionic_dev.c b/drivers/net/ionic/ionic_dev.c index 43e9ca3de3..5439b99b2d 100644 --- a/drivers/net/ionic/ionic_dev.c +++ b/drivers/net/ionic/ionic_dev.c @@ -55,7 +55,10 @@ ionic_dev_setup(struct ionic_adapter *adapter) ioread8(&idev->dev_info->fw_version[i]); adapter->fw_version[IONIC_DEVINFO_FWVERS_BUFLEN - 1] = '\0'; - IONIC_PRINT(DEBUG, "Firmware version: %s", adapter->fw_version); + adapter->name = adapter->pci_dev->device.name; + + IONIC_PRINT(DEBUG, "%s firmware version: %s", + adapter->name, adapter->fw_version); /* BAR1: doorbells */ bar++; From patchwork Fri Oct 7 17:43:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117584 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BCFDDA04FD; Fri, 7 Oct 2022 19:44:42 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0C38F42B70; Fri, 7 Oct 2022 19:44:30 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2046.outbound.protection.outlook.com [40.107.93.46]) by mails.dpdk.org (Postfix) with ESMTP id 55A2A4281C; Fri, 7 Oct 2022 19:44:28 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NuYy7csKoigPtXbMT9zBcv+n2XEf2E1ts2e1rfgb0wvyssva/HyDdP7028AyTWcXr1rkGcu5acy/+ZyRrCMGwOYz5T+u/8oGqtVcAtrtxMuB4Nl/DZcmqLYur9PjjRsOP0mQdFG5uuKtO2T9AgjYQMETqVGo4l2qGby05ELYZQ4Fb+suqFL8YJ2Elf76HKK51yf/FyfrW58ZSUbVGg79tYopErdFmlP6UPo+B//FZdnAZ2jZgnx1PBTA0/ybVk66RqNBA/s66gBtKH6KO1it7eshxrIOHsB5MIKgLDTu1zhJgkH0A4UUCDhCo5Iq5tWg7syNr+T++pp2vY1UrDMizw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2D9kgK+HW6LulQg52lNcgajhCK4gktTz9uKrqFgyWmA=; b=jnPfkerz+dklFi/WjPIQT6/Fl0uJ1iRTK7CZBe05f5tmdX9tBueS4UDz2G7MlxAscsTOKqm/FhcxYDYGgDIhWn5pZFwqUkRsjaVD8nbo2bkHLPRYGvscvixwjtJgF5NH3EVPCWi5UXMhFPs/5rwFcc0xoAXAmtAZaJ4nCafUNVPDleIcjn+oKI+CRvlG6aUhLQgylpRZuBy2YpRdts2GxpR/SssmnytiQmdhUeHI3Ypx7qJF2yq/czU1IhmE5CjPPayOCBvjKpyAMA4Yv8WZhx9by+AAotWi34XVb/W6i3Buw/UUg3OzzrTvw+HDbeZU2RIuPcT1GGdz5orX7Ao8qg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2D9kgK+HW6LulQg52lNcgajhCK4gktTz9uKrqFgyWmA=; b=LLj9SdJj+ZybPzkU2hNIN7n56vZtnBVnMEhc2zR8cN9iC7f0j3W/HshGreEjKwTmnSOez51ojlB+Ropl9p+gBpWnznUY4O9/9MweArEJpfVu1gvNv9lQ3DBRWThkz2J62ZHw0IvYGpg2PIra9FUxR9g0bWNzqbr4zLFzBeRSxnc= Received: from MW4PR03CA0005.namprd03.prod.outlook.com (2603:10b6:303:8f::10) by BL1PR12MB5224.namprd12.prod.outlook.com (2603:10b6:208:319::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Fri, 7 Oct 2022 17:44:26 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::6e) by MW4PR03CA0005.outlook.office365.com (2603:10b6:303:8f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:25 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:23 -0500 From: Andrew Boyer To: CC: Andrew Boyer , Subject: [PATCH 04/35] net/ionic: fix up the Rx filter save API Date: Fri, 7 Oct 2022 10:43:05 -0700 Message-ID: <20221007174336.54354-5-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|BL1PR12MB5224:EE_ X-MS-Office365-Filtering-Correlation-Id: c860a688-4c65-45e9-2d65-08daa88b939b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ared/WTBTXN37w1yC+gIiB/+Kq5q3MXyK2DpTTzAkD3T14hcyfx92jwV1AW3Y9GaWn/wpfR8ItWUaiivGhLDA8mKAlF9AyIMoKrT5eC5Zg5FedwJ5CEPgljNTQtle5CUb3tK8vauSdfim5o8gXpMT+2An2SQs8lewKZRu50UMgYV/ps5d26POzCIi0QxlKw67yQFztCn+w2bgtKCqjiT7kSkm45NC7L9Cz5XD5fK4U+BkSc9IWUo5ODDfFqx/nRfnC5vucOs6tBZl0I0TCeirQg9h284JjAlUx/rOuJTnFYcuM7uviBzGObLhx/9OGLt6n31FpJTPGxG42keif9LvBYftQUMncA645N9gMMzBJmfV8puuTYikhJHNetaHFxIuBO/tJsMlxcCWUdB7jQ01GrPCSlkQlMTN4uxeequxkPrTqkJD62WIJ+1MMrVPtaBPHzQQPWgUJUWiwy3f5hFGmryyKp0t8eAN1fbZ/kvnlv/Yb7jbWBOz68UuyLClf9ag8d112mLw6QIwcdsi14thRzFa7yQ8Qutsu5TxJuds4kqzAPxp1zdQzavVqqvPkN40UM1kWIqUNWt4ZVRCEHGHGEpt7ZPdc2jLio6NT8/Ak0iM5DUKGLVHr8KH8U9r2/b34VCoXrjl1HvcMGSU1yi3dJjX6liLodPQinagcalgIgRPuRPye+PgwTN2sV98AAFmfCTRWbmmLaU9Ep4nxpXQ6Mou3hDh2YJZex+9Kag/Kdhv8T4DWUcbfak6hcZzDJie+DH1/FP4esH0DBM8eTKmLxuwK6F/t/97pBn1xwczkbec6W1bFfKtlmLr3Zdshgm X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(396003)(376002)(136003)(346002)(451199015)(40470700004)(46966006)(36840700001)(40460700003)(478600001)(356005)(316002)(8936002)(4744005)(5660300002)(47076005)(44832011)(40480700001)(426003)(1076003)(336012)(16526019)(86362001)(83380400001)(82740400003)(2616005)(36756003)(6666004)(41300700001)(2906002)(26005)(36860700001)(81166007)(82310400005)(186003)(8676002)(4326008)(6916009)(70586007)(54906003)(70206006)(450100002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:25.4968 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c860a688-4c65-45e9-2d65-08daa88b939b X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5224 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Check the match variable after copying cmd info, or else there can be unexpected results. Fixes: a27e0e96ab77 ("net/ionic: observe endianness in Rx filter") Cc: andrew.boyer@amd.com Cc: stable@dpdk.org Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_rx_filter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ionic/ionic_rx_filter.c b/drivers/net/ionic/ionic_rx_filter.c index bf57a9fa52..4b2e907f9f 100644 --- a/drivers/net/ionic/ionic_rx_filter.c +++ b/drivers/net/ionic/ionic_rx_filter.c @@ -63,8 +63,8 @@ ionic_rx_filter_save(struct ionic_lif *lif, uint32_t flow_id, f->flow_id = flow_id; f->filter_id = rte_le_to_cpu_32(ctx->comp.rx_filter_add.filter_id); f->rxq_index = rxq_index; - f->match = rte_le_to_cpu_16(f->cmd.match); memcpy(&f->cmd, &ctx->cmd, sizeof(f->cmd)); + f->match = rte_le_to_cpu_16(f->cmd.match); switch (f->match) { case IONIC_RX_FILTER_MATCH_VLAN: From patchwork Fri Oct 7 17:43:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117585 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3B7DFA04FD; Fri, 7 Oct 2022 19:44:49 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E024D42B72; Fri, 7 Oct 2022 19:44:31 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2053.outbound.protection.outlook.com [40.107.94.53]) by mails.dpdk.org (Postfix) with ESMTP id F21C342B6C; Fri, 7 Oct 2022 19:44:29 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TMQHxcKfIqXgTUQ18YgiBx41G4GtdHpajxahGGKDZgJ4GdNYUPdCykcwAnLeXqorcQ6dlKCdej8DWIKwEoR9WdTi9iiQ86GDZhmnuVQlTpEJuaemGBa6ht1OHg5efAn0ClztJ7FHGEIV1R62O2IegWO6yOqt9+4Sy3pJXzZTocJMrC+WLU6WqgDnwxrGKnV8644yoPe0SWv6Ue9Tfry+kG9KiOiD77Teo/POrNeMNFiXZ2GRcuyR14MgrAUA1n4AT4vVxaQU5z+L1LcOPf/wptecPIXhGmRFwVYWSoPcl8wHN9Aqf+bnuiprZwPmFQFJghsupQDZtTawC7aZQ37KFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=40fjOdsZ9XMkJ08cFZgreKod3g1ObzNW5j5dhZ+1Rc4=; b=T6O36NYOjCx4MktetDFmHBsDHXiHg+OTsXhVrV25kHfPGjOddATwQI2/jEV/WF3aXf8w7sjKvBQXKEEvOodf7F76WaDap6WRyoTEF7KoGc5AWaiNV4Sa1AAskRR+1D/reDWkJE3l8ko/FvuwGZa+qqVOyj+sHlED6YIA4bzH3aHMLum0fsXgrLo9848xc7mKCiVwl6NXPwI5mamvof0dJXNNN5fr90++7pAeXUJ0tcgb45KqrPA9PI1UsbQNd15/md9Q2JwwVztvFlzmoF5SMusqmJgnTvh1Q7TyqmfiJ+rwAFBhHkdg/rURQi4aA89INCDz78pttKRmFhMAcqFGPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=40fjOdsZ9XMkJ08cFZgreKod3g1ObzNW5j5dhZ+1Rc4=; b=Ccui8HZLlZlIVuv8AOncgV4iUij0bIJwAG6xMcHgmGhoU7YnHVhMmVbHSXy+SqsVA3sYQp5eoG9gHCAWwvg+S7Ve14MDYRk7SI5e2YXOHAIp2F5p3QABc31KWca72g2vZYUqXni1hcVENnE6tq+Qrtxe4Rcrx0huUublLurISgg= Received: from MW4PR03CA0026.namprd03.prod.outlook.com (2603:10b6:303:8f::31) by DM8PR12MB5430.namprd12.prod.outlook.com (2603:10b6:8:28::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Fri, 7 Oct 2022 17:44:27 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::27) by MW4PR03CA0026.outlook.office365.com (2603:10b6:303:8f::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15 via Frontend Transport; Fri, 7 Oct 2022 17:44:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:26 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:25 -0500 From: Andrew Boyer To: CC: Andrew Boyer , , Subject: [PATCH 05/35] net/ionic: fix up reported error stats Date: Fri, 7 Oct 2022 10:43:06 -0700 Message-ID: <20221007174336.54354-6-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|DM8PR12MB5430:EE_ X-MS-Office365-Filtering-Correlation-Id: 6abfbbca-385b-4ec2-982f-08daa88b944b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: d4KdtCExfKv0zBYk3tVagq4EmU6Dd9CK4bvQV0JvazhLhMCTO8oXePsHF36rEv0f2Xj9mlm58XdDQu2sheZJlElWs9WELipzBkfNqs6/oTXQjArssoo4hcW5Tvr/1G3f7AM7OIpU1F8KLUS89xn49XL/Xv+X1uo6A5RAw8J5xk0R5xY0pP3+H7FzxVl1veGcKyjs+M/7wkQHCe88ai1IYLpmlvD8IzCorrfm1/wf0ExgwD5RIx7+iZgztnvJU0j5uuYgNV7tDAMmUOW5X6IyEXH/8s4C04zzzNB/kI8zB4P2FNelQxc0rBPmXaUUG53O+Wi0lyBiEzt+00LdLBitrO/PGkxC9FqJ37lwKdOD4aUh3dN50dI1nDPA4FxnvxcMprV1fbKCL1vZPIBomI3ba3Tk1kaKV+uAd/Yv66/076DparRhaWNP11kNbJgqms8+HzV4JTruOsR5WN9VJnrVbVwN3ODBHJbphwSleqVEnEDxa2rJ6bpw0gRijN6t1OZXVUmy7T5MexGyIHvjuhEdwJ/Z5kKzXP6rMhZMNoL+mPRtKr3Skhf0EF327sBhOuPdapPX5VA0vWxb6B3n97fIex6k3y3yaS7Uuwe/ge27rL6yAltTJqoUj1o2Yi/AhEDi3A832gEAiVpUomP9elblC/zWV2LgTfc+4yi7XxH7GnFA+nfVAMcForvCd6Ei35/k4aDbD/pQK5RdzHWKa/5Ug9WYUr8Oa33UsKnUH7O91CzB2DbUaWkp6Gm83vrJ+Qm/UboOa26z5XHWc50R7kupofnL3++ESHFbo0XgiMG0b/geb3Lt5P1Eg3e5rWYzyQ8A X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(136003)(39860400002)(376002)(346002)(396003)(451199015)(40470700004)(46966006)(36840700001)(82310400005)(186003)(336012)(1076003)(16526019)(47076005)(86362001)(83380400001)(36860700001)(426003)(81166007)(82740400003)(356005)(41300700001)(8936002)(40480700001)(316002)(2906002)(6916009)(8676002)(70586007)(70206006)(4326008)(5660300002)(26005)(54906003)(6666004)(2616005)(44832011)(40460700003)(478600001)(36756003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:26.6686 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6abfbbca-385b-4ec2-982f-08daa88b944b X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR12MB5430 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Report descriptor errors in ierrors instead of imissed. Don't report rx_queue_empty or rx_queue_disabled in imissed, since those packet errors are already included in the rx_*_drop_packets counters. This makes the reported stats correct. Fixes: 3cdfd90579e7 ("net/ionic: add stats") Cc: cardigliano@ntop.org Cc: stable@dpdk.org Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_lif.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 5e8fdf3893..799530f7f5 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -132,7 +132,7 @@ ionic_lif_get_abs_stats(const struct ionic_lif *lif, struct rte_eth_stats *stats for (i = 0; i < lif->nrxqcqs; i++) { struct ionic_rx_stats *rx_stats = &lif->rxqcqs[i]->stats; - stats->imissed += + stats->ierrors += rx_stats->no_cb_arg + rx_stats->bad_cq_status + rx_stats->no_room + @@ -144,10 +144,8 @@ ionic_lif_get_abs_stats(const struct ionic_lif *lif, struct rte_eth_stats *stats ls->rx_mcast_drop_packets + ls->rx_bcast_drop_packets; - stats->imissed += - ls->rx_queue_empty + + stats->ierrors += ls->rx_dma_error + - ls->rx_queue_disabled + ls->rx_desc_fetch_error + ls->rx_desc_data_error; From patchwork Fri Oct 7 17:43:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117586 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 67A5CA04FD; Fri, 7 Oct 2022 19:44:58 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 18C3742B81; Fri, 7 Oct 2022 19:44:33 +0200 (CEST) Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2084.outbound.protection.outlook.com [40.107.100.84]) by mails.dpdk.org (Postfix) with ESMTP id 684D142B72 for ; Fri, 7 Oct 2022 19:44:31 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IrO/V4LvbTuOaiRHnQzrn5Pvhak7M9WaeCtB5gIXZCe2nYcd4R04fEAQ8ww+VOLWM2Wy2kIAhMz0BRegn1eJ04+LgEVClKoJo67SDLXvkotFLg7c7zBuYN80Tpy5Dum0+dg8x42CBeQVgaSkMhxclY1w1lA+vxDKKxF6dFN5bzoJI/zwf/YQXnd49UZd9E5MhdUXsF/cftzJr25Im30smD50GwpNQ/hPCDJYpAL01bbpXBoUGZ55vEfOhzxGF3lwRYrWd9DGAQMbl+XocUjbLqDksVLkK9i4fv0uqO11unltdX3lEk9RG+HDyqSzvFoztEFaYzn/7Y/FPh6bMri8ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Yv+bqgCpgm8zmck25SXdBsAKgdBNwZM5cd9crzC2d5I=; b=amVwaA/BNAH+By9KSUQVqHdisFP0sXfQ9uvaPhRGYGbMlXhqJeT3KMIpW1S6IOur4aN14AafjJ/xsy7dmKhoxVEFsENyJJs/2tsLElMz63rPTP+m1vsWzJdV6lX6A4WcnMwubudqo0SB8BIRB0RvAjFrddbI+iJQY9QyDQ7fyaqx97RJVwoJ8vM+/bH88j9LvfJARK+w5LbOP7YSBAR/q3cPou177+MBQTNAEid87iAeBfq9pSKx/tkcXhnuAF9B1qifmo/udMgMUdA/aIjSeCltLwSFbkiEA+xb3ZC23UixzUm37FQo3llYJn3rjmdruLH0Bd/AjKbFEGq1Qs9XfQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Yv+bqgCpgm8zmck25SXdBsAKgdBNwZM5cd9crzC2d5I=; b=ms/GWmu2HtIRzLWgcBKyeCjZcXpv8y1ndCAt9EULzwDyq5J5O+8NIr8Z3DrY3Nf6yJCQc9EnmkTHJwseadCoiIp8ijNIR/8OW0T/KyYx01OGOvbHDTi10P4XGAt+BQl0yaP70xmN+BJaIdnYbJGZA4JQubNUTJWJ5AoC/aoYec0= Received: from MW4PR03CA0005.namprd03.prod.outlook.com (2603:10b6:303:8f::10) by DS0PR12MB6560.namprd12.prod.outlook.com (2603:10b6:8:d0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.38; Fri, 7 Oct 2022 17:44:29 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::de) by MW4PR03CA0005.outlook.office365.com (2603:10b6:303:8f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:28 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:27 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 06/35] net/ionic: update documentation and copyrights Date: Fri, 7 Oct 2022 10:43:07 -0700 Message-ID: <20221007174336.54354-7-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|DS0PR12MB6560:EE_ X-MS-Office365-Filtering-Correlation-Id: 78182ef0-4a20-4f8c-8230-08daa88b95a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bhinSZ/HW3nbx063HuSiRaGKLLh3Ia7mz5yvn73gc9LCNUmzTtSJ+p3ZXvV6irZ+hCbG9MWqBqPW3yvf9sV8EVsStMwQ9PVeHkZw8UAs79AnzymZ7Z2R5GqgypTYBY2WRgoEGiBclZfG1YCSDhpIzMr9lLcVbteXnsgGIONcULyan8ASTCxHjFMPYRAK+31CCUPD+kY0ki5ZuESP18ze25Ta6I1CQPjlzwgNToWfQgwhLb6PhKMtMFjA75vl3c8dDuIgImF7ZCoRB4BXP9w8H/i6tuTYe3H3pb4ZKoB01RPcKCunLBd0zOZqy6Xh75DmBawLfSLb0b6nGje1XDFsSBrs2J476LKkSE1neVm2Brfy1Vp+C7bgNh7vMxwghWPqR8O818zjKrd+bWZ+3a/178pisBVIyLLMfa7f5VuM0U0Yg8WJGJavYyYBbOPbuIG7C8I60ME6HscQSnNFSesgL8v2hZfNuNJpO1HOu/xW5YbuWLWgvxS9eg8wnMAKHuxZq8QtHNau6D4U3VUy+g6P91hF54x26uf6wrBqB4GNo2Huy+QbY43xxRcXe4ZOl6U+DfKmm6b6jayQ5inbkCpaPDZmIry0Z+B4w6mQ6uEQr65ljTfA5pI2hHmN2khrj/fVbx5L+Q0xucm9TjnObPKax1BOE78R/5se6LAl/5IqUegjUUB9B+kLt5KKsvRm4ZWuwtmEz34WPXpuPkLdUM7WSUNZG5Z1zY96vqxr+9/968D70XBWZZ9GVM3PQe9LFp1J7O/JMd7CXq61+TFXLQkAL0O1D9SZ0VzRYBrhPoXTKbd4TeUbADD2ZivIU9f1rZ8KTdOuKiGxI6sYAuGyILozGugwvm4rA5M8el0bsc+6BHfbjegimW/IuDmyPbWSM2w1yP7wYdUj+TMHcinJZ3NcCw== X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(346002)(396003)(376002)(136003)(39860400002)(451199015)(36840700001)(40470700004)(46966006)(316002)(8676002)(6916009)(70586007)(70206006)(4326008)(40480700001)(186003)(36860700001)(6666004)(426003)(81166007)(16526019)(82740400003)(47076005)(1076003)(478600001)(36756003)(2616005)(26005)(83380400001)(82310400005)(966005)(2906002)(336012)(356005)(8936002)(44832011)(41300700001)(40460700003)(5660300002)(86362001)(30864003)(15650500001)(15398625002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:28.8872 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 78182ef0-4a20-4f8c-8230-08daa88b95a0 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6560 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Pensando Systems has been acquired by AMD. Update all copyright strings and email addresses. Signed-off-by: Andrew Boyer --- MAINTAINERS | 4 ++-- doc/guides/nics/ionic.rst | 16 ++++++++-------- doc/guides/rel_notes/release_22_11.rst | 5 +++++ drivers/net/ionic/ionic.h | 6 +++--- drivers/net/ionic/ionic_dev.c | 2 +- drivers/net/ionic/ionic_dev.h | 2 +- drivers/net/ionic/ionic_ethdev.c | 2 +- drivers/net/ionic/ionic_ethdev.h | 2 +- drivers/net/ionic/ionic_if.h | 2 +- drivers/net/ionic/ionic_lif.c | 2 +- drivers/net/ionic/ionic_lif.h | 2 +- drivers/net/ionic/ionic_logs.h | 2 +- drivers/net/ionic/ionic_mac_api.c | 2 +- drivers/net/ionic/ionic_mac_api.h | 2 +- drivers/net/ionic/ionic_main.c | 2 +- drivers/net/ionic/ionic_osdep.h | 2 +- drivers/net/ionic/ionic_regs.h | 2 +- drivers/net/ionic/ionic_rx_filter.c | 2 +- drivers/net/ionic/ionic_rx_filter.h | 2 +- drivers/net/ionic/ionic_rxtx.c | 2 +- drivers/net/ionic/ionic_rxtx.h | 2 +- drivers/net/ionic/meson.build | 2 +- 22 files changed, 36 insertions(+), 31 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 08e575faac..f2f7f33d1f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -895,8 +895,8 @@ F: doc/guides/nics/pfe.rst F: drivers/net/pfe/ F: doc/guides/nics/features/pfe.ini -Pensando ionic -M: Andrew Boyer +AMD Pensando ionic +M: Andrew Boyer F: drivers/net/ionic/ F: doc/guides/nics/ionic.rst F: doc/guides/nics/features/ionic.ini diff --git a/doc/guides/nics/ionic.rst b/doc/guides/nics/ionic.rst index 673700d6ce..24b57fc0f5 100644 --- a/doc/guides/nics/ionic.rst +++ b/doc/guides/nics/ionic.rst @@ -1,22 +1,22 @@ .. SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - Copyright(c) 2018-2020 Pensando Systems, Inc. All rights reserved. + Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. IONIC Driver ============ -The ionic driver provides support for Pensando server adapters. +The ionic driver provides support for AMD Pensando server adapters. It currently supports the below models: -- DSC-25 dual-port 25G Distributed Services Card `(pdf) `__ -- DSC-100 dual-port 100G Distributed Services Card `(pdf) `__ +- DSC-25 dual-port 25G Distributed Services Card +- DSC-100 dual-port 100G Distributed Services Card +- DSC-200 dual-port 200G Distributed Services Card `(pdf) `__ -Please visit the Pensando web site at https://pensando.io for more information. -The `Documents `_ page contains Product Briefs and other product information. +Please visit the AMD Pensando web site at https://www.amd.com/en/accelerators/pensando for more information. Identifying the Adapter ----------------------- -To determine if one or more Pensando DSC Ethernet devices are installed +To determine if one or more AMD Pensando DSC Ethernet devices are installed on the host, check for the PCI devices: .. code-block:: console @@ -30,7 +30,7 @@ Firmware Support The ionic PMD requires firmware which supports 16 segment transmit SGLs. This support was added prior to version 1.0. For help upgrading older versions, -please contact Pensando support. +please contact AMD Pensando support. Building DPDK ------------- diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 980c91d5d8..552cc5b62c 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -78,6 +78,11 @@ New Features * Added support to set device link down/up. +* **Updated AMD Pensando ionic driver.** + + Updated the ionic PMD with new features and improvements, including: + + * Updated to reflect that Pensando has been acquired by AMD. Removed Items ------------- diff --git a/drivers/net/ionic/ionic.h b/drivers/net/ionic/ionic.h index a55202b178..31837f050d 100644 --- a/drivers/net/ionic/ionic.h +++ b/drivers/net/ionic/ionic.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_H_ @@ -15,8 +15,8 @@ #include "ionic_osdep.h" #define IONIC_DRV_NAME "ionic" -#define IONIC_DRV_DESCRIPTION "Pensando Ethernet NIC Driver" -#define IONIC_DRV_VERSION "0.11.0-49" +#define IONIC_DRV_DESCRIPTION "AMD Pensando Ethernet NIC Driver" +#define IONIC_DRV_VERSION "1.17.0-65" /* Vendor ID */ #define IONIC_PENSANDO_VENDOR_ID 0x1dd8 diff --git a/drivers/net/ionic/ionic_dev.c b/drivers/net/ionic/ionic_dev.c index 5439b99b2d..a266ea7ddf 100644 --- a/drivers/net/ionic/ionic_dev.c +++ b/drivers/net/ionic/ionic_dev.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #include diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 38c078efdf..42d192026b 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_DEV_H_ diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index d72033c32c..c696311a18 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #include diff --git a/drivers/net/ionic/ionic_ethdev.h b/drivers/net/ionic/ionic_ethdev.h index 9304e170de..afe4a67743 100644 --- a/drivers/net/ionic/ionic_ethdev.h +++ b/drivers/net/ionic/ionic_ethdev.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_ETHDEV_H_ diff --git a/drivers/net/ionic/ionic_if.h b/drivers/net/ionic/ionic_if.h index 45bad9b040..696ca9806e 100644 --- a/drivers/net/ionic/ionic_if.h +++ b/drivers/net/ionic/ionic_if.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB OR BSD-3-Clause */ -/* Copyright (c) 2017-2020 Pensando Systems, Inc. All rights reserved. */ +/* Copyright 2017-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_IF_H_ #define _IONIC_IF_H_ diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 799530f7f5..f0c774c1cb 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #include diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index 9f00ba2973..bb65184f96 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_LIF_H_ diff --git a/drivers/net/ionic/ionic_logs.h b/drivers/net/ionic/ionic_logs.h index bc10ad1744..9c96112b9d 100644 --- a/drivers/net/ionic/ionic_logs.h +++ b/drivers/net/ionic/ionic_logs.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_LOGS_H_ diff --git a/drivers/net/ionic/ionic_mac_api.c b/drivers/net/ionic/ionic_mac_api.c index 411d84b578..6b48a311ec 100644 --- a/drivers/net/ionic/ionic_mac_api.c +++ b/drivers/net/ionic/ionic_mac_api.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #include diff --git a/drivers/net/ionic/ionic_mac_api.h b/drivers/net/ionic/ionic_mac_api.h index ed9e059a63..7db788fd01 100644 --- a/drivers/net/ionic/ionic_mac_api.h +++ b/drivers/net/ionic/ionic_mac_api.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_API_H_ diff --git a/drivers/net/ionic/ionic_main.c b/drivers/net/ionic/ionic_main.c index 7301f53342..3f85a155e0 100644 --- a/drivers/net/ionic/ionic_main.c +++ b/drivers/net/ionic/ionic_main.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #include diff --git a/drivers/net/ionic/ionic_osdep.h b/drivers/net/ionic/ionic_osdep.h index 89ed106d11..9ea90b8edd 100644 --- a/drivers/net/ionic/ionic_osdep.h +++ b/drivers/net/ionic/ionic_osdep.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_OSDEP_ diff --git a/drivers/net/ionic/ionic_regs.h b/drivers/net/ionic/ionic_regs.h index 3bdec34242..da7b1614a1 100644 --- a/drivers/net/ionic/ionic_regs.h +++ b/drivers/net/ionic/ionic_regs.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_REGS_H_ diff --git a/drivers/net/ionic/ionic_rx_filter.c b/drivers/net/ionic/ionic_rx_filter.c index 4b2e907f9f..6d3b0362c8 100644 --- a/drivers/net/ionic/ionic_rx_filter.c +++ b/drivers/net/ionic/ionic_rx_filter.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #include diff --git a/drivers/net/ionic/ionic_rx_filter.h b/drivers/net/ionic/ionic_rx_filter.h index 773042fcb2..cd176c9f52 100644 --- a/drivers/net/ionic/ionic_rx_filter.h +++ b/drivers/net/ionic/ionic_rx_filter.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_RX_FILTER_H_ diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 665d085823..82e333ea13 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #include diff --git a/drivers/net/ionic/ionic_rxtx.h b/drivers/net/ionic/ionic_rxtx.h index befbe61cef..ff49d52fff 100644 --- a/drivers/net/ionic/ionic_rxtx.h +++ b/drivers/net/ionic/ionic_rxtx.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) - * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #ifndef _IONIC_RXTX_H_ diff --git a/drivers/net/ionic/meson.build b/drivers/net/ionic/meson.build index 487fef1882..c338515e27 100644 --- a/drivers/net/ionic/meson.build +++ b/drivers/net/ionic/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) -# Copyright(c) 2019 Pensando +# Copyright 2019-2022 Advanced Micro Devices, Inc. All Rights Reserved. if is_windows build = false From patchwork Fri Oct 7 17:43:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117587 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 89BC9A04FD; Fri, 7 Oct 2022 19:45:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id ECADE42B78; Fri, 7 Oct 2022 19:44:35 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2079.outbound.protection.outlook.com [40.107.94.79]) by mails.dpdk.org (Postfix) with ESMTP id D377642B77 for ; Fri, 7 Oct 2022 19:44:34 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MQhGZCcomV8fSmY44ADPp6462DLlesVP5kMGO1TvD9WImYLU82lpKRV6ssSJgKlMtMwdzJKBNMYGrAbRaWEnj05pYMRUNz/DX0eyhUCAYEKK1NM8DPPvuWQHXmTyGmpVNNd0A4utW6rXp6btVJxSCbvuENXs+iiKqn9kTMDWjs/+aQKA81k6nJab0uKz2Yi6UDTu8455IIdvTAjQL7xeNmla+rt1W8PPlkLhxmG9ryNbKDQCkzUcYGUUQGlWeHxjkhALF6fbbacE0mDz2aoJ+HSoWv0hDQkZ627stKPeYUixO/HPPQUjbrTaHI2OlfX4x2InNozxFjhPV9GiA5n5Fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zHFeIawtHqF2+fSVfcUWB1u5Y9vV3kRRrALWK/Q2rOw=; b=oRufEAtN9Umk0hsdhDtUAJBkyo7TYAsd4rTY7mLFkXDtxTKz89rcaTPahwkx1asne9liF80z5395Q0KQgKaVF9iKiLOf15KF545t9wALygYxiNIxEMk16dAY5IO+WQitvPci7fjnWT41PGu5LyqxoZZrlaOqmubC8f+NnOn0CFfMVXUVb9KMtc+ACOrDrODJU5oezDXN81ipX6wNR8J3L7aGuR65Mv0dZTiFkHtqmQaYlR+0cs/R4so4R/JpoXFKk1JPeOMMPAFEZFRbJv8WotiKvsfPJWCMOOSb+/+ArvV1FYXG5qEi/qp6UM/mJgAdnZdMRhhgc2okXTnLGKOx2g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zHFeIawtHqF2+fSVfcUWB1u5Y9vV3kRRrALWK/Q2rOw=; b=JpJ2Pn7efFoDH6dxj+rYA1sdx15d2SLpEoMXFE63IFfGus482L2l9WseP+fOp/Q52uHYiItmRmxqvI+QWG9XRSmXTa6gorMZebAcvVsxtvRUf1mhuvA67EWJ0400vyVap0qOcIIs+tznRZ2b4/3cZpoWlWAA+4XwVd8J4zwpTuw= Received: from MW4PR03CA0015.namprd03.prod.outlook.com (2603:10b6:303:8f::20) by PH7PR12MB6881.namprd12.prod.outlook.com (2603:10b6:510:1b7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.17; Fri, 7 Oct 2022 17:44:30 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::8c) by MW4PR03CA0015.outlook.office365.com (2603:10b6:303:8f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:44:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:29 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:28 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 07/35] net/ionic: update license terms to remove GPL Date: Fri, 7 Oct 2022 10:43:08 -0700 Message-ID: <20221007174336.54354-8-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|PH7PR12MB6881:EE_ X-MS-Office365-Filtering-Correlation-Id: 4ad96555-3aa2-46dc-8caa-08daa88b962f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nu5b0QQx3FRvPPd4QcLXIwbYPnRQGIdWfgr0hHdlg2Z+SS/M9BqK2jK2jgtWD6fsOzY1GJkrttzlZ1bAnPAEKh5UzsnVNKvqd8yFLBubeghKRrBzbAO3M89at1GoJdVqBTW8GavCEborb/lA/+ayY06nKapHylqMAqOjzhBz3a6lslVPQaQBYsLT+gMU+ac0HK8ToOUQX4wYdDig3VvzR4q38/zkkSbI8Kj5Z44cRRy74lj7pjcbmufO6n7LXibHkG5GXj69dg9F4q4HVrnV/DgSVDMgS+xZP0F2Z/dwV43n6IzCkxWMh5mskN0Lk3yLQ2umAGFsJ5BgJp76H9bgjcws7EZ7Plppj61tGLP90r90Oz2syFVZWy0kmyeuLybtSnhy3iU5Tdki5flqe5Mpv6WLhfS2UZBok4nGRSWgkRLEDfulp9BWu3CcTs8ic+l8yrVplpTA1ZzVlQmpzHewp2MdB5bnSsKb2NDJFwiDZ/e2WCpKOnDoPpElSo27bKSGMQP/QQN3qFtlGM97OZrGYWqMRuSspKJQMv8wO3s4EWBD5Qt6bZTfQ+kcKKWGg89y3rWkAcbRMNPeR2p2s1Ch95Zv6PK82HX2oVN9pKKbE1tJPiZywtoj4UqSow9KVC9hY96XZJz14iGl4cOpAnZ/4l8454qm/F1BlQsA2Lspe2hrTwqbQz/9mqa0ZsDMYxBRDK1oUPaGYcgVLE0kxFxJAtgYNPfQspL6+kv+SD+JApS0usC465k3BLBxL02diDbCYKgngK7C3aZoDW9MY1z1Jx6SXOkq8No+cRZnWicOIGY= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(376002)(346002)(136003)(39860400002)(396003)(451199015)(46966006)(40470700004)(36840700001)(82310400005)(356005)(6916009)(81166007)(316002)(36756003)(82740400003)(5660300002)(2906002)(40480700001)(8936002)(41300700001)(44832011)(70206006)(70586007)(86362001)(6666004)(8676002)(36860700001)(4326008)(426003)(83380400001)(2616005)(47076005)(16526019)(40460700003)(1076003)(186003)(26005)(478600001)(336012)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:29.8246 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4ad96555-3aa2-46dc-8caa-08daa88b962f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6881 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Remove GPL2 and leave only BSD-3-Clause. This is more in line with the norms of the DPDK community. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic.h | 2 +- drivers/net/ionic/ionic_dev.c | 2 +- drivers/net/ionic/ionic_dev.h | 2 +- drivers/net/ionic/ionic_ethdev.c | 2 +- drivers/net/ionic/ionic_ethdev.h | 2 +- drivers/net/ionic/ionic_if.h | 5 +++-- drivers/net/ionic/ionic_lif.c | 2 +- drivers/net/ionic/ionic_lif.h | 2 +- drivers/net/ionic/ionic_logs.h | 2 +- drivers/net/ionic/ionic_mac_api.c | 2 +- drivers/net/ionic/ionic_mac_api.h | 2 +- drivers/net/ionic/ionic_main.c | 2 +- drivers/net/ionic/ionic_osdep.h | 2 +- drivers/net/ionic/ionic_regs.h | 2 +- drivers/net/ionic/ionic_rx_filter.c | 2 +- drivers/net/ionic/ionic_rx_filter.h | 2 +- drivers/net/ionic/ionic_rxtx.c | 2 +- drivers/net/ionic/ionic_rxtx.h | 2 +- drivers/net/ionic/meson.build | 2 +- 19 files changed, 21 insertions(+), 20 deletions(-) diff --git a/drivers/net/ionic/ionic.h b/drivers/net/ionic/ionic.h index 31837f050d..7578cd31bf 100644 --- a/drivers/net/ionic/ionic.h +++ b/drivers/net/ionic/ionic.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_dev.c b/drivers/net/ionic/ionic_dev.c index a266ea7ddf..a631523e59 100644 --- a/drivers/net/ionic/ionic_dev.c +++ b/drivers/net/ionic/ionic_dev.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 42d192026b..3b902554b8 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index c696311a18..387042c080 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_ethdev.h b/drivers/net/ionic/ionic_ethdev.h index afe4a67743..d1ed293604 100644 --- a/drivers/net/ionic/ionic_ethdev.h +++ b/drivers/net/ionic/ionic_ethdev.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_if.h b/drivers/net/ionic/ionic_if.h index 696ca9806e..761d366c71 100644 --- a/drivers/net/ionic/ionic_if.h +++ b/drivers/net/ionic/ionic_if.h @@ -1,5 +1,6 @@ -/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB OR BSD-3-Clause */ -/* Copyright 2017-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2017-2022 Advanced Micro Devices, Inc. All Rights Reserved. + */ #ifndef _IONIC_IF_H_ #define _IONIC_IF_H_ diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index f0c774c1cb..dc21387cd8 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index bb65184f96..4aebfe20d0 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_logs.h b/drivers/net/ionic/ionic_logs.h index 9c96112b9d..9b17303e42 100644 --- a/drivers/net/ionic/ionic_logs.h +++ b/drivers/net/ionic/ionic_logs.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_mac_api.c b/drivers/net/ionic/ionic_mac_api.c index 6b48a311ec..0464a7b13c 100644 --- a/drivers/net/ionic/ionic_mac_api.c +++ b/drivers/net/ionic/ionic_mac_api.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_mac_api.h b/drivers/net/ionic/ionic_mac_api.h index 7db788fd01..766c7733c8 100644 --- a/drivers/net/ionic/ionic_mac_api.h +++ b/drivers/net/ionic/ionic_mac_api.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_main.c b/drivers/net/ionic/ionic_main.c index 3f85a155e0..b42430713c 100644 --- a/drivers/net/ionic/ionic_main.c +++ b/drivers/net/ionic/ionic_main.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_osdep.h b/drivers/net/ionic/ionic_osdep.h index 9ea90b8edd..c6d77c0fae 100644 --- a/drivers/net/ionic/ionic_osdep.h +++ b/drivers/net/ionic/ionic_osdep.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_regs.h b/drivers/net/ionic/ionic_regs.h index da7b1614a1..dbf5388268 100644 --- a/drivers/net/ionic/ionic_regs.h +++ b/drivers/net/ionic/ionic_regs.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_rx_filter.c b/drivers/net/ionic/ionic_rx_filter.c index 6d3b0362c8..fdedb9e288 100644 --- a/drivers/net/ionic/ionic_rx_filter.c +++ b/drivers/net/ionic/ionic_rx_filter.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_rx_filter.h b/drivers/net/ionic/ionic_rx_filter.h index cd176c9f52..e6cd06f002 100644 --- a/drivers/net/ionic/ionic_rx_filter.h +++ b/drivers/net/ionic/ionic_rx_filter.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 82e333ea13..acdfda9312 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/ionic_rxtx.h b/drivers/net/ionic/ionic_rxtx.h index ff49d52fff..91a9073803 100644 --- a/drivers/net/ionic/ionic_rxtx.h +++ b/drivers/net/ionic/ionic_rxtx.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ diff --git a/drivers/net/ionic/meson.build b/drivers/net/ionic/meson.build index c338515e27..e251e7cbe0 100644 --- a/drivers/net/ionic/meson.build +++ b/drivers/net/ionic/meson.build @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) +# SPDX-License-Identifier: BSD-3-Clause # Copyright 2019-2022 Advanced Micro Devices, Inc. All Rights Reserved. if is_windows From patchwork Fri Oct 7 17:43:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117588 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 02AAEA04FD; Fri, 7 Oct 2022 19:45:15 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1FCAA42B86; Fri, 7 Oct 2022 19:44:37 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) by mails.dpdk.org (Postfix) with ESMTP id 7D3D842B6F for ; Fri, 7 Oct 2022 19:44:35 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jp1MyhnPGVh3luRUBRkdbrHjPExITyr0WrwfY3Hb4Ar0LcfcdTUTMQVHVCobTvjZ7bB2h78/xzkhqTeqSwtVjczf4b3rs9xPW2wV0aFPRDPm7c2/1cl2tVDzhiKpM9Ht/eWPD07Teks4Dz0i1hgQE9hkcHzb4nwfsKPTdqfFWanVCdJBw6J1oLa2Kxd67gRO45WcEqEaXYo1SU7gTA1ZLiQ7taOfJlEMkN9aWgB6eZUhfeBd9U7rN2HwCbcGwdyK4kz5vDw1hfiERhX1dVxmhdjvyAH+nld/xk/Yev5wMJo8YwWHKuqCMGGs7/O4sC8qbHdP/m2kW6F/bJ9JWaVgsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0aiaduj3yXX4U5reNkGSdjZjV4GXOMygUgSgICY3qG0=; b=KiE9+NZXlzZIRehEYDtjqUxvqFF+pe66kXzaDS1kTjJrIsq6LzJRY5wMnnr/g6hd6nu5LLhMPX/ec7ZPT1gmez+eYDY4KfGBM6vGETQxbXw9GKTYxT5AX3IHUNkDC5QgpYTYi2thp4bOsAOf9FEj5V9CTvIeaReBSgfMCExfEY7JRf3s3jla7FsLT6nTdWFIS/d1wpCHKFMjVTdt3qU5yWcu3aIPbUbHpe20RL+i+I8CWhdRLTSqYRFH58BQk7vsJszN1SwOfAnJ/8y5WfLrk5fvU3YPuI+wSm3BybNUbPbmzL+CrUUli/avsr3oMSoqhRmh7faLpA+aK/6Kf5ozpg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0aiaduj3yXX4U5reNkGSdjZjV4GXOMygUgSgICY3qG0=; b=Jbu3i+m2uYvfR6Uo6zsphIFaAQ4evCFaLZn/h5QD4nKJPpOLIF+NYh2D65ZWfpYZNVAbvX5ajwvRCSLusVLOfWg707xUYvdErVTzVTFOPR78mNntB4SAjQ0KNTFHWEuXa9srnN5akYHAmwgfbu6oHFsnXTzyszGm2V/01CFf7/E= Received: from MW4PR03CA0024.namprd03.prod.outlook.com (2603:10b6:303:8f::29) by SN7PR12MB7107.namprd12.prod.outlook.com (2603:10b6:806:2a2::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.19; Fri, 7 Oct 2022 17:44:33 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::1d) by MW4PR03CA0024.outlook.office365.com (2603:10b6:303:8f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:44:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:32 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:29 -0500 From: Andrew Boyer To: CC: Andrew Boyer , R Mohamed Shah Subject: [PATCH 08/35] net/ionic: update MTU calculations Date: Fri, 7 Oct 2022 10:43:09 -0700 Message-ID: <20221007174336.54354-9-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|SN7PR12MB7107:EE_ X-MS-Office365-Filtering-Correlation-Id: e35325f7-10a3-4794-20d1-08daa88b97f2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tZIIHZl3OIE7HsVC0gLx20olhBzag9MLt8UjPeEXd2ZqaiuOHrL4ZY5fWpiYxvdlXpHxSJqlKFcEVjNVwX85EK8Dc6alIGw/uPrHGzkjNEQmF7Phd486+8VcP4Xo0YE+5r+cekKCVo9IwquYmFhJ4iYqDgabsnEKSbP4n7M6XBTLrQigx9nEVJzU+jLnEnG1Xw27YkZ7iDa52OGupsw1ZwcxKXy0KMiY00Kcmn1U1EDnAkb8dX2ew3nznNg5bowPSkedNTmOs8JOasuV0M1k6XAOzfZofClyiwmRptKQD7/JD62boOYutqlO4+2clgUX0apogLShzWpPIbZWeZ0Ar5WtKl3RcrM3DtngNRTOOdyADEjqlRaZ6Z5br6FPze3+iLQXTVM/TSmG01z5AdhUdrwCAAQQADQxzA15+E+bxRG8tGO1kAOeiqFL+QpAMGsBNwCE+djLuf3unkor6cWvxOMw5nQdH5U/pl4P7tI5D1aqfr+cHm10JZu8oCyVz312+NzTfSQ5TEX5cxuKP9wkCIYPlHzI+CRAknqR0zqVGIESN8ekyi/V+QKIytZ6yMNBz4UNw8wWIIUfFU97lJZdXGn25cg2leYzXTXXFSeKVSQHT2pEaaU7IhSLlUJygPMIRgVNl8Xb0lgZlJ5VOy6WSW7tITuTj5vBNBoHfyYXjBQX6XxJVjDlwFkjcGxVl4YsN6zPox/LP8Sn1aPoGdYmH4pxEsA2ScDnFSG7zNPdSwkC20yFz04F5Q28uV9kBb3OtsbZfQKUao+pv4mSqpLS+GSvZqGrO4GBN1oDABHHw2O6uwm3dGBI0OB3TAqXcMvk X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(136003)(39860400002)(376002)(396003)(346002)(451199015)(46966006)(40470700004)(36840700001)(5660300002)(86362001)(36756003)(41300700001)(15650500001)(44832011)(8936002)(81166007)(4326008)(356005)(40460700003)(2906002)(40480700001)(186003)(70206006)(6666004)(70586007)(478600001)(6916009)(54906003)(36860700001)(8676002)(26005)(47076005)(426003)(82740400003)(16526019)(83380400001)(316002)(1076003)(2616005)(82310400005)(336012)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:32.7932 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e35325f7-10a3-4794-20d1-08daa88b97f2 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7107 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Test min and max MTU against values read from firmware, for correctness. Update the firmware field name, for clarity. The device must be stopped before changing MTU, for correctness. Store the calculated frame size in the queue, for performance. Signed-off-by: Andrew Boyer Signed-off-by: R Mohamed Shah --- drivers/net/ionic/ionic_dev.h | 5 +++- drivers/net/ionic/ionic_ethdev.c | 40 +++++++++++++++++++++----------- drivers/net/ionic/ionic_if.h | 8 +++---- drivers/net/ionic/ionic_lif.c | 10 +++----- drivers/net/ionic/ionic_lif.h | 4 +++- drivers/net/ionic/ionic_rxtx.c | 26 +++++++++------------ 6 files changed, 51 insertions(+), 42 deletions(-) diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 3b902554b8..42ba9ef5aa 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -11,8 +11,11 @@ #include "ionic_if.h" #include "ionic_regs.h" +#define VLAN_TAG_SIZE 4 + #define IONIC_MIN_MTU RTE_ETHER_MIN_MTU -#define IONIC_MAX_MTU 9194 +#define IONIC_MAX_MTU 9378 +#define IONIC_ETH_OVERHEAD (RTE_ETHER_HDR_LEN + VLAN_TAG_SIZE) #define IONIC_MAX_RING_DESC 32768 #define IONIC_MIN_RING_DESC 16 diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 387042c080..815b7e3c9e 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -343,18 +343,17 @@ static int ionic_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) { struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); - int err; - IONIC_PRINT_CALL(); + if (lif->state & IONIC_LIF_F_UP) { + IONIC_PRINT(ERR, "Stop %s before setting mtu", lif->name); + return -EBUSY; + } - /* - * Note: mtu check against IONIC_MIN_MTU, IONIC_MAX_MTU - * is done by the API. - */ + /* Note: mtu check against min/max is done by the API */ + IONIC_PRINT(INFO, "Setting mtu %u", mtu); - err = ionic_lif_change_mtu(lif, mtu); - if (err) - return err; + /* Update the frame size used by the Rx path */ + lif->frame_size = mtu + IONIC_ETH_OVERHEAD; return 0; } @@ -376,12 +375,16 @@ ionic_dev_info_get(struct rte_eth_dev *eth_dev, rte_le_to_cpu_32(cfg->queue_count[IONIC_QTYPE_TXQ]); /* Also add ETHER_CRC_LEN if the adapter is able to keep CRC */ - dev_info->min_rx_bufsize = IONIC_MIN_MTU + RTE_ETHER_HDR_LEN; - dev_info->max_rx_pktlen = IONIC_MAX_MTU + RTE_ETHER_HDR_LEN; - dev_info->max_mac_addrs = adapter->max_mac_addrs; - dev_info->min_mtu = IONIC_MIN_MTU; - dev_info->max_mtu = IONIC_MAX_MTU; + dev_info->min_mtu = RTE_MAX((uint32_t)IONIC_MIN_MTU, + rte_le_to_cpu_32(ident->lif.eth.min_mtu)); + dev_info->max_mtu = RTE_MIN((uint32_t)IONIC_MAX_MTU, + rte_le_to_cpu_32(ident->lif.eth.max_mtu)); + dev_info->min_rx_bufsize = dev_info->min_mtu + IONIC_ETH_OVERHEAD; + dev_info->max_rx_pktlen = dev_info->max_mtu + IONIC_ETH_OVERHEAD; + dev_info->max_lro_pkt_size = + eth_dev->data->dev_conf.rxmode.max_lro_pkt_size; + dev_info->max_mac_addrs = adapter->max_mac_addrs; dev_info->hash_key_size = IONIC_RSS_HASH_KEY_SIZE; dev_info->reta_size = rte_le_to_cpu_16(ident->lif.eth.rss_ind_tbl_sz); dev_info->flow_type_rss_offloads = IONIC_ETH_RSS_OFFLOAD_ALL; @@ -889,6 +892,15 @@ ionic_dev_start(struct rte_eth_dev *eth_dev) if (dev_conf->lpbk_mode) IONIC_PRINT(WARNING, "Loopback mode not supported"); + lif->frame_size = eth_dev->data->mtu + IONIC_ETH_OVERHEAD; + + err = ionic_lif_change_mtu(lif, eth_dev->data->mtu); + if (err) { + IONIC_PRINT(ERR, "Cannot set LIF frame size %u: %d", + lif->frame_size, err); + return err; + } + err = ionic_lif_start(lif); if (err) { IONIC_PRINT(ERR, "Cannot start LIF: %d", err); diff --git a/drivers/net/ionic/ionic_if.h b/drivers/net/ionic/ionic_if.h index 761d366c71..05ab620167 100644 --- a/drivers/net/ionic/ionic_if.h +++ b/drivers/net/ionic/ionic_if.h @@ -401,8 +401,8 @@ union ionic_lif_config { * @version: Ethernet identify structure version * @max_ucast_filters: Number of perfect unicast addresses supported * @max_mcast_filters: Number of perfect multicast addresses supported - * @min_frame_size: Minimum size of frames to be sent - * @max_frame_size: Maximum size of frames to be sent + * @min_mtu: Minimum MTU of frames to be sent + * @max_mtu: Maximum MTU of frames to be sent * @config: LIF config struct with features, mtu, mac, q counts * * @rdma: RDMA identify structure @@ -434,8 +434,8 @@ union ionic_lif_identity { __le32 max_ucast_filters; __le32 max_mcast_filters; __le16 rss_ind_tbl_sz; - __le32 min_frame_size; - __le32 max_frame_size; + __le32 min_mtu; + __le32 max_mtu; u8 rsvd2[106]; union ionic_lif_config config; } __rte_packed eth; diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index dc21387cd8..2c6f7f7f4e 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -536,7 +536,7 @@ ionic_dev_allmulticast_disable(struct rte_eth_dev *eth_dev) } int -ionic_lif_change_mtu(struct ionic_lif *lif, int new_mtu) +ionic_lif_change_mtu(struct ionic_lif *lif, uint32_t new_mtu) { struct ionic_admin_ctx ctx = { .pending_work = true, @@ -546,13 +546,8 @@ ionic_lif_change_mtu(struct ionic_lif *lif, int new_mtu) .mtu = rte_cpu_to_le_32(new_mtu), }, }; - int err; - - err = ionic_adminq_post_wait(lif, &ctx); - if (err) - return err; - return 0; + return ionic_adminq_post_wait(lif, &ctx); } int @@ -730,6 +725,7 @@ ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, int err; flags = IONIC_QCQ_F_SG; + err = ionic_qcq_alloc(lif, IONIC_QTYPE_RXQ, sizeof(struct ionic_rx_qcq), diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index 4aebfe20d0..c3ae96d25b 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -81,6 +81,7 @@ struct ionic_rx_qcq { /* cacheline2 */ struct rte_mempool *mb_pool; + uint16_t frame_size; /* Based on configured MTU */ uint16_t flags; /* cacheline3 (inside stats) */ @@ -123,6 +124,7 @@ struct ionic_lif { struct ionic_adapter *adapter; struct rte_eth_dev *eth_dev; uint16_t port_id; /**< Device port identifier */ + uint16_t frame_size; uint32_t hw_index; uint32_t state; uint32_t ntxqcqs; @@ -181,7 +183,7 @@ int ionic_intr_alloc(struct ionic_lif *lif, struct ionic_intr_info *intr); int ionic_qcq_service(struct ionic_qcq *qcq, int budget, ionic_cq_cb cb, void *cb_arg); -int ionic_lif_change_mtu(struct ionic_lif *lif, int new_mtu); +int ionic_lif_change_mtu(struct ionic_lif *lif, uint32_t new_mtu); int ionic_dev_add_mac(struct rte_eth_dev *eth_dev, struct rte_ether_addr *mac_addr, diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index acdfda9312..d77f06c022 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -772,8 +772,6 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, struct ionic_rxq_comp *cq_desc_base = cq->base; struct ionic_rxq_comp *cq_desc = &cq_desc_base[cq_desc_index]; struct rte_mbuf *rxm, *rxm_seg; - uint32_t max_frame_size = - rxq->qcq.lif->eth_dev->data->mtu + RTE_ETHER_HDR_LEN; uint64_t pkt_flags = 0; uint32_t pkt_type; struct ionic_rx_stats *stats = &rxq->stats; @@ -814,8 +812,7 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, return; } - if (cq_desc->len > max_frame_size || - cq_desc->len == 0) { + if (cq_desc->len > rxq->frame_size || cq_desc->len == 0) { stats->bad_len++; ionic_rx_recycle(q, q_desc_index, rxm); return; @@ -936,7 +933,7 @@ ionic_rx_recycle(struct ionic_queue *q, uint32_t q_desc_index, } static __rte_always_inline int -ionic_rx_fill(struct ionic_rx_qcq *rxq, uint32_t len) +ionic_rx_fill(struct ionic_rx_qcq *rxq) { struct ionic_queue *q = &rxq->qcq.q; struct ionic_rxq_desc *desc, *desc_base = q->base; @@ -961,7 +958,7 @@ ionic_rx_fill(struct ionic_rx_qcq *rxq, uint32_t len) info = IONIC_INFO_PTR(q, q->head_idx); - nsegs = (len + buf_size - 1) / buf_size; + nsegs = (rxq->frame_size + buf_size - 1) / buf_size; desc = &desc_base[q->head_idx]; dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(rxm)); @@ -996,9 +993,9 @@ ionic_rx_fill(struct ionic_rx_qcq *rxq, uint32_t len) prev_rxm_seg = rxm_seg; } - if (size < len) + if (size < rxq->frame_size) IONIC_PRINT(ERR, "Rx SG size is not sufficient (%d < %d)", - size, len); + size, rxq->frame_size); info[0] = rxm; @@ -1016,7 +1013,6 @@ ionic_rx_fill(struct ionic_rx_qcq *rxq, uint32_t len) int __rte_cold ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) { - uint32_t frame_size = eth_dev->data->mtu + RTE_ETHER_HDR_LEN; uint8_t *rx_queue_state = eth_dev->data->rx_queue_state; struct ionic_rx_qcq *rxq; int err; @@ -1029,8 +1025,10 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) rxq = eth_dev->data->rx_queues[rx_queue_id]; - IONIC_PRINT(DEBUG, "Starting RX queue %u, %u descs (size: %u)", - rx_queue_id, rxq->qcq.q.num_descs, frame_size); + rxq->frame_size = rxq->qcq.lif->frame_size - RTE_ETHER_CRC_LEN; + + IONIC_PRINT(DEBUG, "Starting RX queue %u, %u descs, size %u", + rx_queue_id, rxq->qcq.q.num_descs, rxq->frame_size); if (!(rxq->flags & IONIC_QCQ_F_INITED)) { err = ionic_lif_rxq_init(rxq); @@ -1041,7 +1039,7 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) } /* Allocate buffers for descriptor rings */ - if (ionic_rx_fill(rxq, frame_size) != 0) { + if (ionic_rx_fill(rxq) != 0) { IONIC_PRINT(ERR, "Could not alloc mbuf for queue:%d", rx_queue_id); return -1; @@ -1129,8 +1127,6 @@ ionic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { struct ionic_rx_qcq *rxq = rx_queue; - uint32_t frame_size = - rxq->qcq.lif->eth_dev->data->mtu + RTE_ETHER_HDR_LEN; struct ionic_rx_service service_cb_arg; service_cb_arg.rx_pkts = rx_pkts; @@ -1139,7 +1135,7 @@ ionic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, ionic_rxq_service(rxq, nb_pkts, &service_cb_arg); - ionic_rx_fill(rxq, frame_size); + ionic_rx_fill(rxq); return service_cb_arg.nb_rx; } From patchwork Fri Oct 7 17:43:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117589 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8642FA04FD; Fri, 7 Oct 2022 19:45:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F38E3427FF; Fri, 7 Oct 2022 19:44:39 +0200 (CEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2042.outbound.protection.outlook.com [40.107.101.42]) by mails.dpdk.org (Postfix) with ESMTP id A171A42B86 for ; Fri, 7 Oct 2022 19:44:36 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XXnksKdH1RA8iODgM1TZvX3sqs0fe6odT9eanxxc7RCddCcl0lYKOPtjLeB7HZ4ZpYSQFwaxSWBoYLc9yZoZBlcto41oIdKh+2vfmYHMLxn7MDl7NoYjlRX1ZM4xG99fpNMfebUEwLSlfQj6ke+lJNvM0kQ4W7bbltpm2nuCnSOmxjFoFVAdOGNyAt7nqMUQwpu8oEw6zMvRz2SqNVTD9qgYF6m/dvoDrKpE/l82uoi3DPvIowAN8ozgl23UBjnmR6M7OPRMh5WktB49u4J4EMPILn5ST3pUWIAuE5hIUsjrNFJqpu6sZOrgGIFxjmRBl83d+R5tcoAcXz3nQqzLKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Xpe7rAgn0p6HBIttnAnosBrj0GdNJBay+S3oYUvH1wY=; b=eCP+TchDZWX0VwqhWvI2qZno+06a1Zbzhyt3sKR38HrgFkM6AOSAssN02XCRpJNffKA8bS+yFImGWBzv3NJvmJAt7eiKr/M1+nwgujF29P9uZvshRNY3mjSC6E9LeEJyNv8bvXuMUZYkjltnppJ0NUkL5lSE6S3qP0DOqOliPv4vAOXtGOW2jzk3kGxZI6WlT7P16mFkI2Cp0v4qnwbJW6raL+lksk+UZpbehN5FkyfCl/vV0N7DlJOTvgznEwkjsgaVYzPTwX9DWLsLN+rpe4qtzN/Q7F4VP2F28MkZJHlguQe/fadYu4iUn60KLOKs4rOdpc4pLXQxJK7cpa/5RQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xpe7rAgn0p6HBIttnAnosBrj0GdNJBay+S3oYUvH1wY=; b=nsmrQW3AcoJerBuKdMbwjjVzXwuOlQ3TVlwHmwB/giLzhDBzr4hRYBKA2cOvweWz6aRi/0XMoO7mm+u/3GChskVH7dTtBljZoU2QvuooojAfvdvgRlax7B9t04ZWtSDKp2g0KB8N67Z97vS9pZ2nUAxG7CjXws/CfE2SHesXoss= Received: from MW4PR03CA0005.namprd03.prod.outlook.com (2603:10b6:303:8f::10) by SA1PR12MB6800.namprd12.prod.outlook.com (2603:10b6:806:25c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.15; Fri, 7 Oct 2022 17:44:34 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::6e) by MW4PR03CA0005.outlook.office365.com (2603:10b6:303:8f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:34 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:31 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 09/35] net/ionic: simplify code by removing doorbell map helper Date: Fri, 7 Oct 2022 10:43:10 -0700 Message-ID: <20221007174336.54354-10-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|SA1PR12MB6800:EE_ X-MS-Office365-Filtering-Correlation-Id: 2bbb7794-cf1f-4f54-7734-08daa88b98ae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JGJW/4P8zIfIDEXLzgofA/I9cLqLYb95hVX0FiyG+nDbJpYZGDYDLWDBlL5nqfJgTKtnz1lwZm4XyQc41FbJVj3hnovah1gkJ29qQgX11umY8MkHdmcu8B/0jjrMRnxC/uDuDQrZrsUZvkwZauiN3APtFhCsf2KTddfTS2dlHXWjGwFtPBcB47H8TrgHUYP1GjsRWuUnv7xfgULHkc8ZCqFgarMpmgQcD+8Eyzak1KyiDUr7lGktJ8XsA2JaldALViH8Hy3glN6p9dQGKw9b69nCazPujfrkjcQzA2hHaKjZ1E29KlnJsi1b4rCqV3uqedK/lfw32U0SlASA0etPtPYSKx8CPW4lBMUG8Gefi7uEiNLl+FrLuq0gehP27d5GowO7AxkK1cfY2qeFauMDR3nBoxzGDDF/HAVvhwbS7Z0gDQ17FAF8kBKFoo5K/3alLiieV1Shh5tbZYb/Lza/XIkqLPzOIgdAaGllAICztxke8iM87zpMFXSA278bdKiJcrAr8UCoie4d0u9hjM49njPCaK2Sp8txMub52OELpDUMbe5i7Nihkx26oV5H57yphZii3Eyvw0qGol6rQvODEAg9hKgeT4JIMQcrcwr4XWAu89MJsu387okany+XXoEH5cATGbPOq1n/oGlV8rmUqj3+q8Lt5dRoQFLgytJfG0PrByzwkqtRW61evkYd7CYafaPSpFCQ6RGvdJhw44/mBV4A6V2mIN5ApaJ0OIK2jRH5+fo4U5gZYDVlbWUA4ZpwaabH5eZdq2lK0b12x9X+uv2Zs73CdIh9BKWmGIXkAWEB50nuY13zcH5FQMgU0HIq X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(396003)(346002)(376002)(136003)(451199015)(36840700001)(40470700004)(46966006)(426003)(16526019)(47076005)(356005)(336012)(1076003)(83380400001)(186003)(81166007)(86362001)(82310400005)(36860700001)(82740400003)(70206006)(5660300002)(8936002)(41300700001)(4326008)(316002)(44832011)(6916009)(8676002)(40480700001)(6666004)(70586007)(2616005)(26005)(478600001)(40460700003)(2906002)(36756003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:34.0118 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2bbb7794-cf1f-4f54-7734-08daa88b98ae X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6800 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org There is only one doorbell page in DPDK configurations, so no helper function is needed. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_lif.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 2c6f7f7f4e..4cc44a6a2f 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -846,17 +846,6 @@ ionic_notify_qcq_alloc(struct ionic_lif *lif) return 0; } -static void * -ionic_bus_map_dbpage(struct ionic_adapter *adapter, int page_num) -{ - char *vaddr = adapter->bars[IONIC_PCI_BAR_DBELL].vaddr; - - if (adapter->num_bars <= IONIC_PCI_BAR_DBELL) - return NULL; - - return (void *)&vaddr[page_num << PAGE_SHIFT]; -} - static void ionic_lif_queue_identify(struct ionic_lif *lif) { @@ -959,7 +948,7 @@ ionic_lif_alloc(struct ionic_lif *lif) rte_spinlock_init(&lif->adminq_lock); rte_spinlock_init(&lif->adminq_service_lock); - lif->kern_dbpage = ionic_bus_map_dbpage(adapter, 0); + lif->kern_dbpage = adapter->idev.db_pages; if (!lif->kern_dbpage) { IONIC_PRINT(ERR, "Cannot map dbpage, aborting"); return -ENOMEM; From patchwork Fri Oct 7 17:43:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117590 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 509E3A04FD; Fri, 7 Oct 2022 19:45:29 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B664742B8F; Fri, 7 Oct 2022 19:44:40 +0200 (CEST) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2081.outbound.protection.outlook.com [40.107.212.81]) by mails.dpdk.org (Postfix) with ESMTP id A2051427FF for ; Fri, 7 Oct 2022 19:44:37 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bQXrUZjm5ej8FYVcGS3G3o36eb05J18wAWXKmcJWZhQ4Zkqmx8LWfV37cYkXyRumVcCTEGSqzS+odd0CHClOxQnKdN0pgF6WebsDY/SIl9ZeLsFc2etBsIUzYeZbd86l4P+8lvxpAnVN5DonXFQoPyabAEPWZD1e1TcVQjgGneS5Tcz/YRPfkiKbZueRpVufKGdYf4AyVJZ6wzaP2j6uDLKMMn6Mo5e4IW9vaWH5R/gt2WSbEJdL+tjje2BUW4/yLyLHh7i5SH/XOI6DGbxPfsF3XUo+bqNs70TWqfATctoFHeyIraZD4WZuLCujFJWzcjslWMWmNfhRa1mq/rqdhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XM6edsU4lyoPjR7z+0UwNLwx/z4kVJ7EYMBeqqj5xjI=; b=asqM+MTOSs1wfy5x0OdtsaS2EEtfQvZWulDz7iNryC/8P/6YlY1RaAH13uVrS4cKV6tIZRJgH557H/EhiBzYstcIl+TzRZtfDjGMePmJx0hiQ85vt80e1G1EzkHipsZEhxfMtL5mxwkKbf75YB590nFFDQjbuyKyQ443xMZ6bcCNipfgN15GdpIIbocbr7+rzOmeHxzYPN4kHjAvOYdJdiejh/PIu8y/S6gzFotNk+ycuuB3v7/teToG8eSYagwh54CvjpJb41Wi70355EPw4OOKxSayMLSu0jNry7aqoGkJlX+T9VMwbinYcri0m3AGnryKDkOBripHI3VhJtTzhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XM6edsU4lyoPjR7z+0UwNLwx/z4kVJ7EYMBeqqj5xjI=; b=yFUJL7Ny70K1xIxxjDgoZlz4Fzc755yjmfqoenFEyx4RckmrXcDUrbfYcML27nqV0VqI4cRU500G/ijjqG8w6g7aYGYug5gHqTjT/8MKXyIcRQYwj6bD6XnUbJEhK0LvAq86DGsgMBnd09qi3XDbprYYJJVzfVsZXrOZGAaNAz4= Received: from MW4PR03CA0006.namprd03.prod.outlook.com (2603:10b6:303:8f::11) by SA1PR12MB7224.namprd12.prod.outlook.com (2603:10b6:806:2bb::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Fri, 7 Oct 2022 17:44:36 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::7e) by MW4PR03CA0006.outlook.office365.com (2603:10b6:303:8f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:35 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:32 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 10/35] net/ionic: remove unused identifiers Date: Fri, 7 Oct 2022 10:43:11 -0700 Message-ID: <20221007174336.54354-11-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|SA1PR12MB7224:EE_ X-MS-Office365-Filtering-Correlation-Id: 293924cc-aff0-4b8d-f062-08daa88b99af X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z4ds1l/XieuxiJD+/FiSJWjOZaupNWQncO6op2EA0+kseIuuNbDek7MFes6pV68AzGCLIhuuzC1I5s3dTSasdvH7OSNOLeqS43jl7qj2okKjatVd0fZy/+uWkB2fAOBWOApZnHiYjyJluuPu7HN+LYOQotQ4bhCpP76DVNts7gtGG+GkHGUyPvDpsYudHsve1aznktWO6vjhpeo62qyHZU6MWQaD7pnPqcnAdboqUqy/cDfhfHKuIPHOnDjC7yWtUo/zQxfOKOCOmUo0eiicQqxW/qDrAirJkpnOJ/m8yR+PvYcqtqCY4jALlMNVE7f6+CGg2G66n5M43Ko0up4/URV9IPjBHNMP1Sz9dCbSqn2CVmRxKrmbyo2nWr2KuTgYvlgaY+sadsIkKzrJ6eLuK3Kxkv+DEMYcZrUWBVndNcrSCu/pvxvKwweZ4ugmZvUbfO1P9saS4GpRkNkkmg3LFbH+8V4zMom571p/YgrcJiKLIeijuAB9xZe0lK9GcFE8E97k5d+sbQATzPR4+NNIk6qP4iW7NGl/+Q8lttwvkZmAe1mOQ/i6ne6KCsnjZQIn4BJsdW6U0zAUw1GKs4+KQOkCBT+u//AesZ/n3Zc57Ri9ViQP2nmVM0d2ItLZPEbKkCw7ubtU+C31sDzNXAGuCsmXsM5IGlakdDgZpUbWVDyXCabPWaKSG/LFPvhOhtVA0yB3d77mCOzJ5t8QsJT64oKFNex+WXq8hgzjRcB38YRBbE9gizdgK5k/RRjRY5UQueaxW+Z3PrlwuptKtRFemlOgVECM8pagK7DnnBf1gUU= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(346002)(136003)(396003)(376002)(39860400002)(451199015)(46966006)(40470700004)(36840700001)(426003)(70586007)(36756003)(81166007)(83380400001)(47076005)(5660300002)(6916009)(16526019)(336012)(356005)(36860700001)(6666004)(478600001)(2906002)(70206006)(316002)(8676002)(4326008)(40460700003)(2616005)(186003)(86362001)(1076003)(82740400003)(26005)(82310400005)(44832011)(40480700001)(41300700001)(8936002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:35.6992 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 293924cc-aff0-4b8d-f062-08daa88b99af X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7224 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org These bits are not used. Remove them to simplify the code. Fix the spacing on the IONIC_ALIGN #define. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic.h | 1 - drivers/net/ionic/ionic_dev.h | 4 +--- drivers/net/ionic/ionic_ethdev.h | 2 -- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/net/ionic/ionic.h b/drivers/net/ionic/ionic.h index 7578cd31bf..ebe23ad4e6 100644 --- a/drivers/net/ionic/ionic.h +++ b/drivers/net/ionic/ionic.h @@ -62,7 +62,6 @@ struct ionic_adapter { bool link_up; char fw_version[IONIC_DEVINFO_FWVERS_BUFLEN]; struct rte_pci_device *pci_dev; - LIST_ENTRY(ionic_adapter) pci_adapters; }; /** ionic_admin_ctx - Admin command context. diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 42ba9ef5aa..600d8f4abd 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -21,12 +21,10 @@ #define IONIC_MIN_RING_DESC 16 #define IONIC_DEF_TXRX_DESC 4096 -#define IONIC_LIFS_MAX 1024 - #define IONIC_DEVCMD_TIMEOUT 5 /* devcmd_timeout */ #define IONIC_DEVCMD_CHECK_PERIOD_US 10 /* devcmd status chk period */ -#define IONIC_ALIGN 4096 +#define IONIC_ALIGN 4096 struct ionic_adapter; diff --git a/drivers/net/ionic/ionic_ethdev.h b/drivers/net/ionic/ionic_ethdev.h index d1ed293604..f4a4276d33 100644 --- a/drivers/net/ionic/ionic_ethdev.h +++ b/drivers/net/ionic/ionic_ethdev.h @@ -17,8 +17,6 @@ #define IONIC_ETH_DEV_TO_LIF(eth_dev) ((struct ionic_lif *) \ (eth_dev)->data->dev_private) -#define IONIC_ETH_DEV_TO_ADAPTER(eth_dev) \ - (IONIC_ETH_DEV_TO_LIF(eth_dev)->adapter) int ionic_dev_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete); From patchwork Fri Oct 7 17:43:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117591 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1E3CAA04FD; Fri, 7 Oct 2022 19:45:38 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DD26542BA3; Fri, 7 Oct 2022 19:44:41 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2040.outbound.protection.outlook.com [40.107.243.40]) by mails.dpdk.org (Postfix) with ESMTP id 20B3342B8F for ; Fri, 7 Oct 2022 19:44:40 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JAAGXOOSq+2OBKpMob2zsldHXwCL3vbu5BdsuEfGib9zORTvyvQTi7hdAFg7nHXmKYAc5bb7GmDayjHPKN9TdWGhPw/ohV4t6rF7fuDyPBK8El7KiL+n6YZ/Z+1S7/BNj2E4EIOEhNxrUGYc57PXKBPuoVrhmGiF2gr3+K4kn4/Qha+pMSN8kolrprHCEhs239s/4YFfeAgzkFDKVQpUHwWc/5k2YkVho/89ik1APqbAIoK1z2kPuR0Fxa3HA6qQ44RVOM6ici80rDXF/bl6z13o4TcyyAtwbSoitn7+Q5egKPlEwKqr/8QlquBZ4ahUQx3wT2CTIXR9djw1S4cA+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RLe6yyZeOH698h+zMAsLn/wA0AHFzOS542/Bfa7PLqk=; b=fL8mwSvjFIgV9Uy3wkB3O1B3PFe+GP8B5dmfM6IeOISXXraJLfS3fzjXmDT6vcp7o1uMygljfmk7Fsff3W1khtUqpBAU1jj85CFJmi94HU+kN3wfguGaPnkkHVxebKmpSi0URDwgAohDY3fBtVBkzCr+2Ar3/7mzrmtwPCGuEyv/n+5UcPCYrILSjyxeld0cTq/VOhBj60zGqsxI4FxP+GbQV9rEKBUQRTDNvsc4NccdXiL8TYIT/5CzjhmnCOd+ybliOpm17pppI1dWCmfyCoObT5/v+dadEAgcCTtcBwBbTbgmKlzW48FwPwLB0o7OpIHy9ANwhRFBxCt6sF7qOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RLe6yyZeOH698h+zMAsLn/wA0AHFzOS542/Bfa7PLqk=; b=mRidBh2/pD9k5TuQSXGXd69XheCoKq25wHw0eLUP/gV99m4DwtwBUiTPUKJqshitDG54R0Ownc/3UuhS6NTf0DBByIgPc8dyknoenkcaTNiPWW5VmhOfo+1gC+7svb4rHa4V17odOf5Y9SgcanRLuYDKEIu8CxRWeIBrLoxKZvM= Received: from MW4PR03CA0003.namprd03.prod.outlook.com (2603:10b6:303:8f::8) by MW4PR12MB6731.namprd12.prod.outlook.com (2603:10b6:303:1eb::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.30; Fri, 7 Oct 2022 17:44:36 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::e) by MW4PR03CA0003.outlook.office365.com (2603:10b6:303:8f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:36 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:33 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 11/35] net/ionic: only allocate interrupts if required Date: Fri, 7 Oct 2022 10:43:12 -0700 Message-ID: <20221007174336.54354-12-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|MW4PR12MB6731:EE_ X-MS-Office365-Filtering-Correlation-Id: 058bcc63-f283-4791-114d-08daa88b9a14 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KLYYukDSW1EsVR79t85fNtimaRbznyXBH/5jP+G56cCZ/hg9Er/Me3kebAKaonVR35jJtoCszjlUZ/S9xvicQ31MS+RhZkEHoLLVrmO3AolnLdDPJ9RfsjTX46v45F8FLxUS0gZ0vBCPdq7iKb2xOzx4yD0p6D4+GqRohwT0twt/IIs44uVn36kD+cKbLhRVh/vghY0CV1CMSn2v+Q88rJb8+pzojfvIAtlyHtWO21x/YUrkwTgpFw/3MoLZKeVj3QOXumhoeLdrgNy6UQoZjjn018XarMDJgT6L65lJvUNDXqzF6DQ3GgjexpIvBJh4oaHz52VnS0InsA41A9gUYVSc95d2QSBL18ZGwaOsjXlmLu7LOJLiL72k9/4W5ZQCx/xPgBb/sALojO0F9Bn3+8IUehb+M3gWJykDkL9U/4F1bzQJhrXYqkOOJt/UUFNDztR11ZGdpS6noA9HJyrzD8CxIwsPwdm9waFXpyg1vkI8UAe/TIRjdS6gD6USMgIQdh2QRxi9t1BE0ioPL8HrasbsBD6RI6O8nM1nx992slx5SrIM75Ic5T0+vruxyCUyKOGcp+9Ek3EizvaYwhp1toO5mTq2eWEgr4qfjLNfFzFmZQ5b9pG7shOCHpSpmBtASz3ZD4fz+4oNqrulThJMRHKh1CRrBvOxagdSShgiSVHF5PgtcWGzMsJO22DHM5vXJFWbvmEdPMq/NrBol16b2j63sTsS6UItTbK7mqjhDhCLB0tGIe4lcVGRVq3IGgAiDGoKRYklBvN8/OPQ9EzTf7/w9j96BLvZnRWL0HI3wQ/UhtgD4ZsK+B2dkHCffFGj X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(136003)(39860400002)(396003)(376002)(346002)(451199015)(40470700004)(46966006)(36840700001)(40480700001)(426003)(6916009)(81166007)(82740400003)(316002)(8676002)(356005)(478600001)(82310400005)(1076003)(40460700003)(5660300002)(70206006)(70586007)(4326008)(186003)(41300700001)(26005)(44832011)(36860700001)(36756003)(8936002)(2906002)(336012)(2616005)(47076005)(16526019)(86362001)(6666004)(83380400001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:36.3554 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 058bcc63-f283-4791-114d-08daa88b9a14 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6731 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org There is no need to allocate the interrupt vector list if datapath packet interrupts are not enabled. This conserves resources. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_ethdev.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 815b7e3c9e..efea691b8f 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -1082,14 +1082,16 @@ ionic_configure_intr(struct ionic_adapter *adapter) return -1; } - if (rte_intr_dp_is_en(intr_handle)) + if (rte_intr_dp_is_en(intr_handle)) { IONIC_PRINT(DEBUG, "Packet I/O interrupt on datapath is enabled"); - if (rte_intr_vec_list_alloc(intr_handle, "intr_vec", adapter->nintrs)) { - IONIC_PRINT(ERR, "Failed to allocate %u vectors", - adapter->nintrs); - return -ENOMEM; + if (rte_intr_vec_list_alloc(intr_handle, "intr_vec", + adapter->nintrs)) { + IONIC_PRINT(ERR, "Failed to allocate %u vectors", + adapter->nintrs); + return -ENOMEM; + } } err = rte_intr_callback_register(intr_handle, From patchwork Fri Oct 7 17:43:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117593 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 46B8CA04FD; Fri, 7 Oct 2022 19:45:51 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9F1C7427F7; Fri, 7 Oct 2022 19:44:44 +0200 (CEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2051.outbound.protection.outlook.com [40.107.101.51]) by mails.dpdk.org (Postfix) with ESMTP id F280142B93 for ; Fri, 7 Oct 2022 19:44:40 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mDGvIbPdfpMpFBy2kTR9Q1T3qnhhUuFZty68F0TxtE77m5i1RQYgNzYr4ke5Ew/1oZDTGtttsZpXH3bAqG5dDZzRiegMHcUc9bUc3bIKsjHLKSGz7FUGC+rT1YhxrxjQ7rijiv6UILS+mnxiKp6RKeDOPF9RfKtkFpCtODOPKJWftiJh86vPRBg6stED6KnG5wqDf19g6cLMbUowXS/XoHe5e6GXPkRPgv7HyGoHYlfv89OfwGHWB9OWgjQh0xPaa5izQ1JKml9CchXUwDMW4H3kFhvZUJGYzB5tTyLk7XikmmS2LhcxFLwSlpw3PJG/nP8j6BFKGomr8y50NmzGnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hWE7I8qgxoToYDQT8j6pVt6TGWqbaJh8yr7CudC5aug=; b=Fs54WT6eIR5rH4wLyOlyAy2Zn0bp50vfUMRo5j0OIvBqH2bbYoTmN6fAdoMcTauxkcGrl3XxIvhr4Whg8oR0zi4oDDp7KLjQsUopqnSYznvby7Qz9t7Y2tnyZD7z/e83/rAjPtXwBvyo2lkzLizk2KfZ12ln4lN2xxMT4owz+RRz06tOl9XECYYTURZD+XcsJB+Zg3yDBFFEfzwxKxziXO3uECu2ING0YjsWpYlgSmlTKFisdLVdJAWhxC80TeG97yhbU0j+nGPCbS3l1u43fDcNs9xSJzbXW2sWONRLQ+dfN5GjHMhrWBe1tYJ2y/bbsQSboOSNUY1LuhtsfZUkjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hWE7I8qgxoToYDQT8j6pVt6TGWqbaJh8yr7CudC5aug=; b=WIeeGP+GT6HJqembxrECYDTM+h/rIHS9XNo87WxkLZfWQ5J3/PcEuflRtRjDdMoGpTCO16gUPAM8PYsDtjfe5rd7RKDBL43oL8j/OLjhHH2Gm820Vi6VwqCrdBK9rs32ifLiJdjX9zqjw1mZc52Fp5k3OT6IsUC3owH8SJ97Z5w= Received: from MW3PR05CA0026.namprd05.prod.outlook.com (2603:10b6:303:2b::31) by DM4PR12MB5102.namprd12.prod.outlook.com (2603:10b6:5:391::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Fri, 7 Oct 2022 17:44:38 +0000 Received: from CO1NAM11FT015.eop-nam11.prod.protection.outlook.com (2603:10b6:303:2b:cafe::e8) by MW3PR05CA0026.outlook.office365.com (2603:10b6:303:2b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.13 via Frontend Transport; Fri, 7 Oct 2022 17:44:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT015.mail.protection.outlook.com (10.13.175.130) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:37 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:35 -0500 From: Andrew Boyer To: CC: Andrew Boyer , Neel Patel , "R Mohamed Shah" Subject: [PATCH 12/35] net/ionic: move PCI-specific code to a separate file Date: Fri, 7 Oct 2022 10:43:13 -0700 Message-ID: <20221007174336.54354-13-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT015:EE_|DM4PR12MB5102:EE_ X-MS-Office365-Filtering-Correlation-Id: 71623af8-f1d9-47ba-6729-08daa88b9ac1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wq/0ljY41SIO0YjmU+qXO38hPurpxeOVDNyEZ4XrdKQUpjUWsTkSe6LuvjhnvGA18n4VPXqyvQFCi3RqgSHfTJC4E1a9hJxE1eEDHGtWVfbEszYlLgbAHxUi85jxxVskBKSYEHON/5lrKR5HoZpy9WM/1epXzXKQbRVUV5OqSM3I/q1UOCeAInPtu5+gBMAV+AR/hKXK37mOPWeyxb9R28iC4Aq+lQxWu7muRv7RFkKIcFVxiVDSL4jKX1JACvVK8Im8Qq721HJY8A4N/6agkdKYR7rEv6hP1T0VF7C1V/y72N3v4CA90OV8hJnxzvQrvpLdgBg7kY5cp0C8XV+eMh5+VfVhA491z7dZWB6+dKRqCC42Fzkmr3F0fLUtykM26Q/wzBo+l9C/939qiYu+gWc7abrZpTGtG9kaFEjK+QrDbJZw1o+ol2R83LXq/SACaElle+V9IQsLPvemhhQX9uhEdhCtVefnwKi/VEo/e05GqQ9fyHvnxgchHkoNlKqHdKmze8Im5DQjWSW/Uv7LyLrLt0fyX5kP4LaEoSlulX/pNwvNJzcWXG/K748XDiNPJhUXPPNiQEIsMTNhYE0QKiWyRTehmgniSj+qxFCtPkneJ/w3Y/MxuFGY7XXL0H1gmQW2FE6DjECwjxSpRi74mrLTU/RUBJzb8cX1gBfZQ7gxbz+oI5xqfUUyAZz+i/eh22JVmmZM1RsAjEsdLfJnZ5tSUOiUDarJEoCMbySMYqmxpp5kKsGMM+uhEUB1VT1xDWyO//3ezLeyMfWM9cjzenvLnW3tz1qVtVqNAbzGrK0/6k2IdZ6cJvbhathYfhZ/ X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(346002)(376002)(136003)(39860400002)(396003)(451199015)(36840700001)(40470700004)(46966006)(44832011)(30864003)(5660300002)(2906002)(41300700001)(8936002)(70206006)(6916009)(36860700001)(316002)(54906003)(6666004)(4326008)(36756003)(8676002)(70586007)(478600001)(40460700003)(86362001)(26005)(83380400001)(82740400003)(82310400005)(2616005)(426003)(81166007)(40480700001)(356005)(16526019)(336012)(186003)(1076003)(47076005)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:37.4914 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 71623af8-f1d9-47ba-6729-08daa88b9ac1 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT015.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5102 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org For future support of virtual devices, move the PCI code to its own file. Create a new device interface, struct ionic_dev_intf, to plug in to common code. Signed-off-by: Andrew Boyer Signed-off-by: Neel Patel Signed-off-by: R Mohamed Shah --- drivers/net/ionic/ionic.h | 13 +- drivers/net/ionic/ionic_dev.c | 62 --------- drivers/net/ionic/ionic_dev.h | 13 +- drivers/net/ionic/ionic_dev_pci.c | 216 ++++++++++++++++++++++++++++++ drivers/net/ionic/ionic_ethdev.c | 161 ++++++---------------- drivers/net/ionic/ionic_ethdev.h | 9 ++ drivers/net/ionic/ionic_main.c | 2 +- drivers/net/ionic/meson.build | 1 + 8 files changed, 286 insertions(+), 191 deletions(-) create mode 100644 drivers/net/ionic/ionic_dev_pci.c diff --git a/drivers/net/ionic/ionic.h b/drivers/net/ionic/ionic.h index ebe23ad4e6..6bfab623f7 100644 --- a/drivers/net/ionic/ionic.h +++ b/drivers/net/ionic/ionic.h @@ -8,8 +8,6 @@ #include #include -#include - #include "ionic_dev.h" #include "ionic_if.h" #include "ionic_osdep.h" @@ -42,6 +40,11 @@ struct ionic_hw { uint16_t vendor_id; }; +struct ionic_bars { + struct ionic_dev_bar bar[IONIC_BARS_MAX]; + uint32_t num_bars; +}; + /* * Structure to store private data for each driver instance (for each adapter). */ @@ -49,10 +52,10 @@ struct ionic_adapter { struct ionic_hw hw; struct ionic_dev idev; const char *name; - struct ionic_dev_bar bars[IONIC_BARS_MAX]; + struct ionic_bars bars; + const struct ionic_dev_intf *intf; struct ionic_identity ident; struct ionic_lif *lif; - uint32_t num_bars; uint32_t max_ntxqs_per_lif; uint32_t max_nrxqs_per_lif; uint32_t max_mac_addrs; @@ -61,7 +64,7 @@ struct ionic_adapter { bool intrs[IONIC_INTR_CTRL_REGS_MAX]; bool link_up; char fw_version[IONIC_DEVINFO_FWVERS_BUFLEN]; - struct rte_pci_device *pci_dev; + void *bus_dev; }; /** ionic_admin_ctx - Admin command context. diff --git a/drivers/net/ionic/ionic_dev.c b/drivers/net/ionic/ionic_dev.c index a631523e59..d0d2ab1b17 100644 --- a/drivers/net/ionic/ionic_dev.c +++ b/drivers/net/ionic/ionic_dev.c @@ -10,68 +10,6 @@ #include "ionic_lif.h" #include "ionic.h" -int -ionic_dev_setup(struct ionic_adapter *adapter) -{ - struct ionic_dev_bar *bar = adapter->bars; - unsigned int num_bars = adapter->num_bars; - struct ionic_dev *idev = &adapter->idev; - uint32_t sig; - u_char *bar0_base; - unsigned int i; - - /* BAR0: dev_cmd and interrupts */ - if (num_bars < 1) { - IONIC_PRINT(ERR, "No bars found, aborting"); - return -EFAULT; - } - - if (bar->len < IONIC_BAR0_SIZE) { - IONIC_PRINT(ERR, - "Resource bar size %lu too small, aborting", - bar->len); - return -EFAULT; - } - - bar0_base = bar->vaddr; - idev->dev_info = (union ionic_dev_info_regs *) - &bar0_base[IONIC_BAR0_DEV_INFO_REGS_OFFSET]; - idev->dev_cmd = (union ionic_dev_cmd_regs *) - &bar0_base[IONIC_BAR0_DEV_CMD_REGS_OFFSET]; - idev->intr_status = (struct ionic_intr_status *) - &bar0_base[IONIC_BAR0_INTR_STATUS_OFFSET]; - idev->intr_ctrl = (struct ionic_intr *) - &bar0_base[IONIC_BAR0_INTR_CTRL_OFFSET]; - - sig = ioread32(&idev->dev_info->signature); - if (sig != IONIC_DEV_INFO_SIGNATURE) { - IONIC_PRINT(ERR, "Incompatible firmware signature %" PRIx32 "", - sig); - return -EFAULT; - } - - for (i = 0; i < IONIC_DEVINFO_FWVERS_BUFLEN; i++) - adapter->fw_version[i] = - ioread8(&idev->dev_info->fw_version[i]); - adapter->fw_version[IONIC_DEVINFO_FWVERS_BUFLEN - 1] = '\0'; - - adapter->name = adapter->pci_dev->device.name; - - IONIC_PRINT(DEBUG, "%s firmware version: %s", - adapter->name, adapter->fw_version); - - /* BAR1: doorbells */ - bar++; - if (num_bars < 2) { - IONIC_PRINT(ERR, "Doorbell bar missing, aborting"); - return -EFAULT; - } - - idev->db_pages = bar->vaddr; - - return 0; -} - /* Devcmd Interface */ uint8_t diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 600d8f4abd..3b8e9fc3c2 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -173,14 +173,23 @@ struct ionic_cq { struct ionic_lif; struct ionic_adapter; struct ionic_qcq; +struct rte_mempool; +struct rte_eth_dev; + +struct ionic_dev_intf { + int (*setup)(struct ionic_adapter *adapter); + void (*copy_bus_info)(struct ionic_adapter *adapter, + struct rte_eth_dev *eth_dev); + int (*configure_intr)(struct ionic_adapter *adapter); + void (*unconfigure_intr)(struct ionic_adapter *adapter); + void (*unmap_bars)(struct ionic_adapter *adapter); +}; void ionic_intr_init(struct ionic_dev *idev, struct ionic_intr_info *intr, unsigned long index); const char *ionic_opcode_to_str(enum ionic_cmd_opcode opcode); -int ionic_dev_setup(struct ionic_adapter *adapter); - void ionic_dev_cmd_go(struct ionic_dev *idev, union ionic_dev_cmd *cmd); uint8_t ionic_dev_cmd_status(struct ionic_dev *idev); bool ionic_dev_cmd_done(struct ionic_dev *idev); diff --git a/drivers/net/ionic/ionic_dev_pci.c b/drivers/net/ionic/ionic_dev_pci.c new file mode 100644 index 0000000000..1735fa9b17 --- /dev/null +++ b/drivers/net/ionic/ionic_dev_pci.c @@ -0,0 +1,216 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ionic.h" +#include "ionic_if.h" +#include "ionic_dev.h" +#include "ionic_ethdev.h" +#include "ionic_logs.h" + +static const struct rte_pci_id pci_id_ionic_map[] = { + { RTE_PCI_DEVICE(IONIC_PENSANDO_VENDOR_ID, IONIC_DEV_ID_ETH_PF) }, + { RTE_PCI_DEVICE(IONIC_PENSANDO_VENDOR_ID, IONIC_DEV_ID_ETH_VF) }, + { RTE_PCI_DEVICE(IONIC_PENSANDO_VENDOR_ID, IONIC_DEV_ID_ETH_MGMT) }, + { .vendor_id = 0, /* sentinel */ }, +}; + +static int +ionic_pci_setup(struct ionic_adapter *adapter) +{ + struct ionic_dev_bar *bar = adapter->bars.bar; + unsigned int num_bars = adapter->bars.num_bars; + struct ionic_dev *idev = &adapter->idev; + struct rte_pci_device *bus_dev = adapter->bus_dev; + uint32_t sig; + u_char *bar0_base; + unsigned int i; + + /* BAR0: dev_cmd and interrupts */ + if (num_bars < 1) { + IONIC_PRINT(ERR, "No bars found, aborting\n"); + return -EFAULT; + } + + if (bar->len < IONIC_BAR0_SIZE) { + IONIC_PRINT(ERR, + "Resource bar size %lu too small, aborting\n", + bar->len); + return -EFAULT; + } + + bar0_base = bar->vaddr; + idev->dev_info = (union ionic_dev_info_regs *) + &bar0_base[IONIC_BAR0_DEV_INFO_REGS_OFFSET]; + idev->dev_cmd = (union ionic_dev_cmd_regs *) + &bar0_base[IONIC_BAR0_DEV_CMD_REGS_OFFSET]; + idev->intr_status = (struct ionic_intr_status *) + &bar0_base[IONIC_BAR0_INTR_STATUS_OFFSET]; + idev->intr_ctrl = (struct ionic_intr *) + &bar0_base[IONIC_BAR0_INTR_CTRL_OFFSET]; + + sig = ioread32(&idev->dev_info->signature); + if (sig != IONIC_DEV_INFO_SIGNATURE) { + IONIC_PRINT(ERR, "Incompatible firmware signature %#x", + sig); + return -EFAULT; + } + + for (i = 0; i < IONIC_DEVINFO_FWVERS_BUFLEN; i++) + adapter->fw_version[i] = + ioread8(&idev->dev_info->fw_version[i]); + adapter->fw_version[IONIC_DEVINFO_FWVERS_BUFLEN - 1] = '\0'; + + adapter->name = bus_dev->device.name; + + IONIC_PRINT(DEBUG, "%s firmware version: %s", + adapter->name, adapter->fw_version); + + /* BAR1: doorbells */ + bar++; + if (num_bars < 2) { + IONIC_PRINT(ERR, "Doorbell bar missing, aborting\n"); + return -EFAULT; + } + + idev->db_pages = bar->vaddr; + + return 0; +} + +static void +ionic_pci_copy_bus_info(struct ionic_adapter *adapter, + struct rte_eth_dev *eth_dev) +{ + rte_eth_copy_pci_info(eth_dev, adapter->bus_dev); +} + +static int +ionic_pci_configure_intr(struct ionic_adapter *adapter) +{ + struct rte_pci_device *pci_dev = + (struct rte_pci_device *)(adapter->bus_dev); + struct rte_intr_handle *intr_handle = pci_dev->intr_handle; + int err; + + IONIC_PRINT(ERR, "Configuring %u intrs", adapter->nintrs); + + if (rte_intr_efd_enable(intr_handle, adapter->nintrs)) { + IONIC_PRINT(ERR, "Fail to create eventfd"); + return -1; + } + + if (rte_intr_dp_is_en(intr_handle)) { + IONIC_PRINT(NOTICE, + "Packet I/O interrupt on datapath is enabled"); + if (rte_intr_vec_list_alloc(intr_handle, "intr_vec", + adapter->nintrs)) { + IONIC_PRINT(ERR, "Failed to allocate %u vectors", + adapter->nintrs); + return -ENOMEM; + } + } + + err = rte_intr_callback_register(intr_handle, + ionic_dev_interrupt_handler, + adapter); + if (err) { + IONIC_PRINT(ERR, + "Failure registering interrupts handler (%d)", err); + return err; + } + + /* enable intr mapping */ + err = rte_intr_enable(intr_handle); + if (err) { + IONIC_PRINT(ERR, "Failure enabling interrupts (%d)", err); + return err; + } + + return 0; +} + +static void +ionic_pci_unconfigure_intr(struct ionic_adapter *adapter) +{ + struct rte_pci_device *pci_dev = + (struct rte_pci_device *)(adapter->bus_dev); + struct rte_intr_handle *intr_handle = pci_dev->intr_handle; + + rte_intr_disable(intr_handle); + + rte_intr_callback_unregister(intr_handle, + ionic_dev_interrupt_handler, + adapter); +} + +static const struct ionic_dev_intf ionic_pci_intf = { + .setup = ionic_pci_setup, + .copy_bus_info = ionic_pci_copy_bus_info, + .configure_intr = ionic_pci_configure_intr, + .unconfigure_intr = ionic_pci_unconfigure_intr, +}; + +static int +eth_ionic_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, + struct rte_pci_device *pci_dev) +{ + struct rte_mem_resource *resource; + struct ionic_bars bars; + unsigned long i; + + IONIC_PRINT(NOTICE, "Initializing device %s %s", + pci_dev->device.name, + rte_eal_process_type() == RTE_PROC_SECONDARY ? + "[SECONDARY]" : ""); + + bars.num_bars = 0; + for (i = 0; i < PCI_MAX_RESOURCE && i < IONIC_BARS_MAX; i++) { + resource = &pci_dev->mem_resource[i]; + if (resource->phys_addr == 0 || resource->len == 0) + continue; + + bars.bar[bars.num_bars].vaddr = resource->addr; + bars.bar[bars.num_bars].bus_addr = resource->phys_addr; + bars.bar[bars.num_bars].len = resource->len; + bars.num_bars++; + } + + return eth_ionic_dev_probe((void *)pci_dev, + &pci_dev->device, + &bars, + &ionic_pci_intf, + pci_dev->id.device_id, + pci_dev->id.vendor_id); +} + +static int +eth_ionic_pci_remove(struct rte_pci_device *pci_dev) +{ + return eth_ionic_dev_remove(&pci_dev->device); +} + +static struct rte_pci_driver rte_pci_ionic_pmd = { + .id_table = pci_id_ionic_map, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, + .probe = eth_ionic_pci_probe, + .remove = eth_ionic_pci_remove, +}; + +RTE_PMD_REGISTER_PCI(net_ionic_pci, rte_pci_ionic_pmd); +RTE_PMD_REGISTER_PCI_TABLE(net_ionic_pci, pci_id_ionic_map); +RTE_PMD_REGISTER_KMOD_DEP(net_ionic_pci, "* igb_uio | uio_pci_generic | vfio-pci"); diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index efea691b8f..186cde8330 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -2,12 +2,9 @@ * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ -#include -#include #include #include #include -#include #include "ionic_logs.h" #include "ionic.h" @@ -57,13 +54,6 @@ static int ionic_dev_xstats_get_names_by_id(struct rte_eth_dev *dev, static int ionic_dev_fw_version_get(struct rte_eth_dev *eth_dev, char *fw_version, size_t fw_size); -static const struct rte_pci_id pci_id_ionic_map[] = { - { RTE_PCI_DEVICE(IONIC_PENSANDO_VENDOR_ID, IONIC_DEV_ID_ETH_PF) }, - { RTE_PCI_DEVICE(IONIC_PENSANDO_VENDOR_ID, IONIC_DEV_ID_ETH_VF) }, - { RTE_PCI_DEVICE(IONIC_PENSANDO_VENDOR_ID, IONIC_DEV_ID_ETH_MGMT) }, - { .vendor_id = 0, /* sentinel */ }, -}; - static const struct rte_eth_desc_lim rx_desc_lim = { .nb_max = IONIC_MAX_RING_DESC, .nb_min = IONIC_MIN_RING_DESC, @@ -328,7 +318,7 @@ ionic_dev_link_update(struct rte_eth_dev *eth_dev, * @return * void */ -static void +void ionic_dev_interrupt_handler(void *param) { struct ionic_adapter *adapter = (struct ionic_adapter *)param; @@ -946,8 +936,6 @@ ionic_dev_stop(struct rte_eth_dev *eth_dev) return 0; } -static void ionic_unconfigure_intr(struct ionic_adapter *adapter); - /* * Reset and stop device. */ @@ -966,22 +954,24 @@ ionic_dev_close(struct rte_eth_dev *eth_dev) ionic_lif_free_queues(lif); IONIC_PRINT(NOTICE, "Removing device %s", eth_dev->device->name); - ionic_unconfigure_intr(adapter); + if (adapter->intf->unconfigure_intr) + (*adapter->intf->unconfigure_intr)(adapter); rte_eth_dev_destroy(eth_dev, eth_ionic_dev_uninit); ionic_port_reset(adapter); ionic_reset(adapter); + if (adapter->intf->unmap_bars) + (*adapter->intf->unmap_bars)(adapter); rte_free(adapter); return 0; } -static int +int eth_ionic_dev_init(struct rte_eth_dev *eth_dev, void *init_params) { - struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); struct ionic_adapter *adapter = (struct ionic_adapter *)init_params; int err; @@ -997,7 +987,8 @@ eth_ionic_dev_init(struct rte_eth_dev *eth_dev, void *init_params) if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - rte_eth_copy_pci_info(eth_dev, pci_dev); + if (adapter->intf->copy_bus_info) + (*adapter->intf->copy_bus_info)(adapter, eth_dev); eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; lif->eth_dev = eth_dev; @@ -1068,73 +1059,12 @@ eth_ionic_dev_uninit(struct rte_eth_dev *eth_dev) return 0; } -static int -ionic_configure_intr(struct ionic_adapter *adapter) -{ - struct rte_pci_device *pci_dev = adapter->pci_dev; - struct rte_intr_handle *intr_handle = pci_dev->intr_handle; - int err; - - IONIC_PRINT(DEBUG, "Configuring %u intrs", adapter->nintrs); - - if (rte_intr_efd_enable(intr_handle, adapter->nintrs)) { - IONIC_PRINT(ERR, "Fail to create eventfd"); - return -1; - } - - if (rte_intr_dp_is_en(intr_handle)) { - IONIC_PRINT(DEBUG, - "Packet I/O interrupt on datapath is enabled"); - - if (rte_intr_vec_list_alloc(intr_handle, "intr_vec", - adapter->nintrs)) { - IONIC_PRINT(ERR, "Failed to allocate %u vectors", - adapter->nintrs); - return -ENOMEM; - } - } - - err = rte_intr_callback_register(intr_handle, - ionic_dev_interrupt_handler, - adapter); - - if (err) { - IONIC_PRINT(ERR, - "Failure registering interrupts handler (%d)", - err); - return err; - } - - /* enable intr mapping */ - err = rte_intr_enable(intr_handle); - - if (err) { - IONIC_PRINT(ERR, "Failure enabling interrupts (%d)", err); - return err; - } - - return 0; -} - -static void -ionic_unconfigure_intr(struct ionic_adapter *adapter) -{ - struct rte_pci_device *pci_dev = adapter->pci_dev; - struct rte_intr_handle *intr_handle = pci_dev->intr_handle; - - rte_intr_disable(intr_handle); - - rte_intr_callback_unregister(intr_handle, - ionic_dev_interrupt_handler, - adapter); -} - -static int -eth_ionic_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, - struct rte_pci_device *pci_dev) +int +eth_ionic_dev_probe(void *bus_dev, struct rte_device *rte_dev, + struct ionic_bars *bars, const struct ionic_dev_intf *intf, + uint16_t device_id, uint16_t vendor_id) { char name[RTE_ETH_NAME_MAX_LEN]; - struct rte_mem_resource *resource; struct ionic_adapter *adapter; struct ionic_hw *hw; unsigned long i; @@ -1149,9 +1079,6 @@ eth_ionic_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, goto err; } - IONIC_PRINT(DEBUG, "Initializing device %s", - pci_dev->device.name); - adapter = rte_zmalloc("ionic", sizeof(*adapter), 0); if (!adapter) { IONIC_PRINT(ERR, "OOM"); @@ -1159,11 +1086,12 @@ eth_ionic_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, goto err; } - adapter->pci_dev = pci_dev; + adapter->bus_dev = bus_dev; hw = &adapter->hw; - hw->device_id = pci_dev->id.device_id; - hw->vendor_id = pci_dev->id.vendor_id; + /* Vendor and Device ID need to be set before init of shared code */ + hw->device_id = device_id; + hw->vendor_id = vendor_id; err = ionic_init_mac(hw); if (err != 0) { @@ -1172,19 +1100,21 @@ eth_ionic_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, goto err_free_adapter; } - adapter->num_bars = 0; - for (i = 0; i < PCI_MAX_RESOURCE && i < IONIC_BARS_MAX; i++) { - resource = &pci_dev->mem_resource[i]; - if (resource->phys_addr == 0 || resource->len == 0) - continue; - adapter->bars[adapter->num_bars].vaddr = resource->addr; - adapter->bars[adapter->num_bars].bus_addr = resource->phys_addr; - adapter->bars[adapter->num_bars].len = resource->len; - adapter->num_bars++; + adapter->bars.num_bars = bars->num_bars; + for (i = 0; i < bars->num_bars; i++) { + adapter->bars.bar[i].vaddr = bars->bar[i].vaddr; + adapter->bars.bar[i].bus_addr = bars->bar[i].bus_addr; + adapter->bars.bar[i].len = bars->bar[i].len; } - /* Discover ionic dev resources */ + if (intf->setup == NULL) { + IONIC_PRINT(ERR, "Device setup function is mandatory"); + goto err_free_adapter; + } + + adapter->intf = intf; + /* Discover ionic dev resources */ err = ionic_setup(adapter); if (err) { IONIC_PRINT(ERR, "Cannot setup device: %d, aborting", err); @@ -1241,20 +1171,20 @@ eth_ionic_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, goto err_free_adapter; } - snprintf(name, sizeof(name), "%s_lif", pci_dev->device.name); - err = rte_eth_dev_create(&pci_dev->device, - name, sizeof(struct ionic_lif), + snprintf(name, sizeof(name), "%s_lif", rte_dev->name); + err = rte_eth_dev_create(rte_dev, name, sizeof(struct ionic_lif), NULL, NULL, eth_ionic_dev_init, adapter); if (err) { IONIC_PRINT(ERR, "Cannot create eth device for %s", name); goto err_free_adapter; } - err = ionic_configure_intr(adapter); - - if (err) { - IONIC_PRINT(ERR, "Failed to configure interrupts"); - goto err_free_adapter; + if (adapter->intf->configure_intr) { + err = (*adapter->intf->configure_intr)(adapter); + if (err) { + IONIC_PRINT(ERR, "Failed to configure interrupts"); + goto err_free_adapter; + } } return 0; @@ -1265,33 +1195,22 @@ eth_ionic_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, return err; } -static int -eth_ionic_pci_remove(struct rte_pci_device *pci_dev) +int +eth_ionic_dev_remove(struct rte_device *rte_dev) { char name[RTE_ETH_NAME_MAX_LEN]; struct rte_eth_dev *eth_dev; /* Adapter lookup is using the eth_dev name */ - snprintf(name, sizeof(name), "%s_lif", pci_dev->device.name); + snprintf(name, sizeof(name), "%s_lif", rte_dev->name); eth_dev = rte_eth_dev_allocated(name); if (eth_dev) ionic_dev_close(eth_dev); else - IONIC_PRINT(DEBUG, "Cannot find device %s", - pci_dev->device.name); + IONIC_PRINT(DEBUG, "Cannot find device %s", rte_dev->name); return 0; } -static struct rte_pci_driver rte_ionic_pmd = { - .id_table = pci_id_ionic_map, - .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, - .probe = eth_ionic_pci_probe, - .remove = eth_ionic_pci_remove, -}; - -RTE_PMD_REGISTER_PCI(net_ionic, rte_ionic_pmd); -RTE_PMD_REGISTER_PCI_TABLE(net_ionic, pci_id_ionic_map); -RTE_PMD_REGISTER_KMOD_DEP(net_ionic, "* igb_uio | uio_pci_generic | vfio-pci"); RTE_LOG_REGISTER_DEFAULT(ionic_logtype, NOTICE); diff --git a/drivers/net/ionic/ionic_ethdev.h b/drivers/net/ionic/ionic_ethdev.h index f4a4276d33..c5726408de 100644 --- a/drivers/net/ionic/ionic_ethdev.h +++ b/drivers/net/ionic/ionic_ethdev.h @@ -18,6 +18,15 @@ #define IONIC_ETH_DEV_TO_LIF(eth_dev) ((struct ionic_lif *) \ (eth_dev)->data->dev_private) +struct ionic_bars; +struct ionic_dev_intf; + +int eth_ionic_dev_probe(void *bus_dev, struct rte_device *rte_dev, + struct ionic_bars *bars, const struct ionic_dev_intf *intf, + uint16_t device_id, uint16_t vendor_id); +int eth_ionic_dev_remove(struct rte_device *rte_dev); + +void ionic_dev_interrupt_handler(void *param); int ionic_dev_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete); #endif /* _IONIC_ETHDEV_H_ */ diff --git a/drivers/net/ionic/ionic_main.c b/drivers/net/ionic/ionic_main.c index b42430713c..996af0a51f 100644 --- a/drivers/net/ionic/ionic_main.c +++ b/drivers/net/ionic/ionic_main.c @@ -336,7 +336,7 @@ ionic_dev_cmd_wait_check(struct ionic_dev *idev, unsigned long max_wait) int ionic_setup(struct ionic_adapter *adapter) { - return ionic_dev_setup(adapter); + return (*adapter->intf->setup)(adapter); } int diff --git a/drivers/net/ionic/meson.build b/drivers/net/ionic/meson.build index e251e7cbe0..2869e0027c 100644 --- a/drivers/net/ionic/meson.build +++ b/drivers/net/ionic/meson.build @@ -9,6 +9,7 @@ endif sources = files( 'ionic_dev.c', + 'ionic_dev_pci.c', 'ionic_ethdev.c', 'ionic_lif.c', 'ionic_mac_api.c', From patchwork Fri Oct 7 17:43:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117592 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AFC2CA04FD; Fri, 7 Oct 2022 19:45:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B387C42BA8; Fri, 7 Oct 2022 19:44:42 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2065.outbound.protection.outlook.com [40.107.244.65]) by mails.dpdk.org (Postfix) with ESMTP id A3DF642B8B for ; Fri, 7 Oct 2022 19:44:40 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gTTUmysboOF+ZfjJ54g88/kok34xlgyH06552nFUFC9eby8lXwYjbS9hPoKex2Jvykqan8ip/doIB27qHJ2gA/gypr4eq7nlBYY6IkoTTmFLeNKYfEihmHoHcUKUz1WcptINmlV2o1XpenY2EhA7nc2cOtg5ODac3114jfNETTSkGAYPJXIpAEZmhnoscuN/dYqvp66oHQdVjDX3LnYst6t3ZDy+tl8U34AoKMV/6hpUbxolKyctOWPguBlSd5rQP3EVcw2T3evP+y/ystVBX4V8tcT5zwJRBbuRWe+asvnak3RsnFaO8bE4sMteSfbH9rdUjlktBUgely7Dmd9N5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=AHUVFmyX1exniapbwQ+S9eFz1qsjq+kZz31gPp92TQ8=; b=hoeWOLo4HfY/c6Zf3csKCOtskuKgqRmZea10vT8mJgO/HX5RpEAyB2GbZs+xc0K2TrJprWjOFc5RHyWSEYG6qFtSjHiZUVvejxyd6yk2I8h9QevJtD1BPknh7CE5l1O1jUxFF426+GkdruVeNqCCpbN9G550McFEiL0wnXaHZl7PthIBSvk5VWaHkvdAIHskTaANejpSIjGumG+CrA66UtGGzqxw+T6o0p2EVgjHcidYKM12DiI6LeUROyllpLIMvAFdvUfZuIRZfLtMck/UDiB1NGfIMGfro50/rLrZLUluJln/BcWo/udX9k7yGlJPuzby52AXaGvnR5esbQXAHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AHUVFmyX1exniapbwQ+S9eFz1qsjq+kZz31gPp92TQ8=; b=lXuDyKGLysHlWUsBlv9kH/bpqDHfQHRSRoeXwzL5rMxocqJFgeT9nrrnBhKhTcAKp8zFnNzM6D0sfroBchr9EAjJqttuiPPsddC+cks37/l/4QaKJlnJTyA1xg4o+yTapvY0nrAQYjzgvsOTIuk+fHu6hz3tY4ix8suu5L80lF0= Received: from MW4PR03CA0019.namprd03.prod.outlook.com (2603:10b6:303:8f::24) by CH3PR12MB7642.namprd12.prod.outlook.com (2603:10b6:610:14a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.17; Fri, 7 Oct 2022 17:44:38 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::17) by MW4PR03CA0019.outlook.office365.com (2603:10b6:303:8f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:44:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:37 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:36 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 13/35] net/ionic: only request notifyq interrupt if supported Date: Fri, 7 Oct 2022 10:43:14 -0700 Message-ID: <20221007174336.54354-14-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|CH3PR12MB7642:EE_ X-MS-Office365-Filtering-Correlation-Id: 265e2ccb-c526-4656-659f-08daa88b9aef X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PA3xW3DCsSM0D3I+3GktjE3JDhok4cO2lSNW0G0OPPVAFVOS1UiISDiHeST5UBVgRTwZtKW3ycZRDr9k/nUnqLR2I6KOdYe1Fch1bbDLnXkrDS9DtzEjLVJc2HbRtTx3/8bxkfe19fSQ0PfFmmN0H1xHrbSzEvcYSdUrrU7owsNRtaGHRS+fRRfOvl+eoASpsoQJpbV9aZLwgiDV7mebXJ307kOY/CAWPi4vpDqlZPocbn5n2E+IdgHidySB5JoE2+28q60PO8YyrUfvACre3omTDqe88I+sZDjtTdZZJblS+W90lFde/RKiiciSyjoOoGKteoRdG26/ls+sbEerqWIoC3/ZUK0wkBMS/VOicvsxwOZh+ivv9f1yg5QnNrsm8rahgbvUpCyt5jxPl9x9wm61EJHAlxPLRiGlb5yBBE4Cmscxzsf3HB287CMnquerSqxaV9JGUqA2RIs0fitFpEZdb4Fru9zI6CuWycQQxd7eDO192h3ybXPWB2uvv8y3cyU6MC1fImisQt9ui2vGRTqGaBX4zeAFzqCmf4rkHd5aq+2W8KSrqYxMKfoqYmSMw8fMKh0gSNnVMcZ6cbtI2AV7jSh6J1frx6Y/hMEQtSBxob3Hr5W/WCw7dgJ2hbwhU19JyoL4ynaBWUB2SCV3jeJU16rAhBMUN9hJBwkRYpKwjqylNSJk/TGDP3rwy9S6uyylohLac3kwl3QL5Q3og91Yq4BSJYQH6MTdeDN7aJPAoznFqKnYpG8yFyNCWSvzdzPFW4BADbNOuqjMC7ZX70BZNUOA4XSMbuu/QySphE8X+0WHj7jKTJu58UdKfo86 X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(376002)(39860400002)(136003)(396003)(346002)(451199015)(46966006)(36840700001)(40470700004)(2906002)(4326008)(44832011)(8676002)(41300700001)(5660300002)(70206006)(8936002)(70586007)(82740400003)(6916009)(316002)(6666004)(40480700001)(86362001)(2616005)(478600001)(82310400005)(26005)(36756003)(356005)(40460700003)(81166007)(36860700001)(426003)(47076005)(83380400001)(186003)(1076003)(16526019)(336012)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:37.7928 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 265e2ccb-c526-4656-659f-08daa88b9aef X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7642 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Enable the interrupt if the platform & device support it. This prevents spurious interrupts on virtual platforms. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_lif.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 4cc44a6a2f..220a4fdacb 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -1350,6 +1350,7 @@ ionic_lif_notifyq_init(struct ionic_lif *lif) struct ionic_dev *idev = &lif->adapter->idev; struct ionic_notify_qcq *nqcq = lif->notifyqcq; struct ionic_queue *q = &nqcq->qcq.q; + uint16_t flags = IONIC_QINIT_F_ENA; int err; struct ionic_admin_ctx ctx = { @@ -1359,14 +1360,19 @@ ionic_lif_notifyq_init(struct ionic_lif *lif) .type = q->type, .ver = lif->qtype_info[q->type].version, .index = rte_cpu_to_le_32(q->index), - .intr_index = rte_cpu_to_le_16(nqcq->intr.index), - .flags = rte_cpu_to_le_16(IONIC_QINIT_F_IRQ | - IONIC_QINIT_F_ENA), + .intr_index = rte_cpu_to_le_16(IONIC_INTR_NONE), .ring_size = rte_log2_u32(q->num_descs), .ring_base = rte_cpu_to_le_64(q->base_pa), } }; + /* Only enable an interrupt if the device supports them */ + if (lif->adapter->intf->configure_intr != NULL) { + flags |= IONIC_QINIT_F_IRQ; + ctx.cmd.q_init.intr_index = rte_cpu_to_le_16(nqcq->intr.index); + } + ctx.cmd.q_init.flags = rte_cpu_to_le_16(flags); + IONIC_PRINT(DEBUG, "notifyq_init.index %d", q->index); IONIC_PRINT(DEBUG, "notifyq_init.ring_base 0x%" PRIx64 "", q->base_pa); IONIC_PRINT(DEBUG, "notifyq_init.ring_size %d", From patchwork Fri Oct 7 17:43:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117594 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C21A9A04FD; Fri, 7 Oct 2022 19:45:57 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 86C8B42BB2; Fri, 7 Oct 2022 19:44:45 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2047.outbound.protection.outlook.com [40.107.220.47]) by mails.dpdk.org (Postfix) with ESMTP id 9065D42B93 for ; Fri, 7 Oct 2022 19:44:41 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jN69QajAUyLeyPCm7wi1/zH4xkXwaUd2mQ6XVJY9YjjcOXumMC161S/AOqRJsFy+oIsEaf6Hj5Dr0yfAbW/rn3aE01nSut6QD/L+SpYUs0atJmYbT1rW9bbYnYAZ3MiVtH0iSm66EH4OI/jz0tXFWtkOlFTsMgpeNEf71DR9E0zZL9xvjMpL6w/d8jsBfjoElTvj8qLhMgAMLx1GZ/XVgVZsESUwR0/BRyvgP30viouXydayQKYd7kl1Qp7t5BoAQwGsGf5uFrD/FvLtiM+1YThYarRl4GYadG1/YblAe/CnH+/NstbylBlLtG/ZuQ2mRGDhdgcswgvpG757iW2HUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=h9guIeGpOFUsOeRCE7bcwkYVvsNY0CE3jeezWZYWi1Q=; b=k3SLRhI9DdmDKqOykpgkn1AkjHwlctLo119a98TK4MJ2RK9Bznr4zrZUGEmUNGCiifxzwPlVeED7JQfkPgbO8/O0R5oc6CGqKhLEgLFOni5FLJFlImnViJEi2ulu+jL5VwGiYZbZkR+QOnY3LIQTj6socxHtvEz3Z0sffsDAjMngjgtEALEcyzYp0ICmHlFLuD9rMPfmAFQVQQi6rCcHgg+nA3x7KaWUVdBTKbSsQAS5ErWj2liL/V+elRFLdifkZx7GB2Sov0fsASOM1Fn1jE05vclg+p9dDZMaCRMePtIFLUhRJIedcI5zhIeloj2F7CF30thyWU+J+zaEyopslA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h9guIeGpOFUsOeRCE7bcwkYVvsNY0CE3jeezWZYWi1Q=; b=brYwaWx9qvkvQTZuJb3sZvjb+wnIrnk2DlEdHrNIywELkQ4E1uLShkwnRU9zkuKIhxPdTZlFzUZW7aJPtOWLgqAqk+mHJb6Q9yKHO+lkmdMkaGx00GzardtYSaVFAzoVC6HZ+m0iAr/QhKxdnNpl0fixM9zDoiSe/V4yF/yazMM= Received: from MW3PR05CA0003.namprd05.prod.outlook.com (2603:10b6:303:2b::8) by CH3PR12MB7668.namprd12.prod.outlook.com (2603:10b6:610:14d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.17; Fri, 7 Oct 2022 17:44:39 +0000 Received: from CO1NAM11FT015.eop-nam11.prod.protection.outlook.com (2603:10b6:303:2b:cafe::25) by MW3PR05CA0003.outlook.office365.com (2603:10b6:303:2b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT015.mail.protection.outlook.com (10.13.175.130) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:38 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:38 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 14/35] net/ionic: replace void pointer with actual type Date: Fri, 7 Oct 2022 10:43:15 -0700 Message-ID: <20221007174336.54354-15-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT015:EE_|CH3PR12MB7668:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f8c0d7d-0bd7-4483-5c5a-08daa88b9b7b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mHlsNFp1BHtkriQkrIpY4TjkHg1WaE3nk424uuRJMAgGUK7Bji8ShTOV2Ds1fJLf9QMLC0W047fIRg4fE1qEA9QYogd8H1+Q2YRwhwv/GUfisJZJ7m/MsNW1RCt10Q4wSKjeKTS9AbrTGmfQQw2jMwbItsva4rZ+B/AdmjhJTUhsstA7B7yL2HQZEDdT33AAnYUjZGE/aTaUz8PE6T1lQVU6oUt+3Wkw71RTr7Y5YzyzA8jjhPjHtsr4UQ3m7vVh6/X6bh+VOuPhQX0+xz5YuEaZVmiy4Hw2kA/3eskUyIbApDt4sofMUyJtHqfPhxvIjWzOzguQjn4sgXUap5iYI1V28WUafv5sKUSAKjPUuvxBruqTgebkxaxO9rqJvFn7VQTRTavVI28K6gUr4huChpcGCAt/yXC00xj9SSLdow+OW218y4eBbbditOxddHp0ZennAarqiLcpH+JIDAg4V3XXSCxg+/dUDFM5Uq5CgUSoVEk5bEwdfeycsB0RAKM9LudzHyPefeAOMwalDe5ww5MlrMrrbZ4trCG8yZ/lcZ67hG9HgVdw6nKpEA9xmv8oT2HzL7TyozOC0YUwTEPJxqWc4Mq4n/LcIiAvNT9odVgPAfkBqxcemU+WmFqltvE2YPcfLbj2lZ6TAbAPQxsiDkFqUFbdBvbx7mvOGOonBqwPWoRYQEoIUIK/Q+Js//s7ub/jtVvAgORy5ATqErm8y1lXzYQcDbQ0Qmw5zR1ZrcPhnQQ1L+TPrxs9jK+Z7oFgidE0PZ1aTniaXNFS/t83HgcwB6ndgvI0TCEg5R96x70= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(346002)(136003)(396003)(376002)(451199015)(46966006)(40470700004)(36840700001)(356005)(16526019)(336012)(82310400005)(2906002)(186003)(1076003)(2616005)(40460700003)(4326008)(6916009)(6666004)(8676002)(41300700001)(36756003)(316002)(70586007)(70206006)(5660300002)(44832011)(40480700001)(478600001)(26005)(8936002)(86362001)(36860700001)(47076005)(426003)(81166007)(82740400003)(83380400001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:38.7257 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5f8c0d7d-0bd7-4483-5c5a-08daa88b9b7b X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT015.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7668 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This makes the code safer by helping the compiler catch errors. Rename the variables, too; they're not callbacks anymore. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_rxtx.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index d77f06c022..440e655e63 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -765,7 +765,7 @@ ionic_dev_rx_queue_setup(struct rte_eth_dev *eth_dev, static __rte_always_inline void ionic_rx_clean(struct ionic_rx_qcq *rxq, uint32_t q_desc_index, uint32_t cq_desc_index, - void *service_cb_arg) + struct ionic_rx_service *rx_svc) { struct ionic_queue *q = &rxq->qcq.q; struct ionic_cq *cq = &rxq->qcq.cq; @@ -775,8 +775,6 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, uint64_t pkt_flags = 0; uint32_t pkt_type; struct ionic_rx_stats *stats = &rxq->stats; - struct ionic_rx_service *recv_args = (struct ionic_rx_service *) - service_cb_arg; uint32_t buf_size = (uint16_t) (rte_pktmbuf_data_room_size(rxq->mb_pool) - RTE_PKTMBUF_HEADROOM); @@ -789,7 +787,7 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, rxm = info[0]; - if (!recv_args) { + if (!rx_svc) { stats->no_cb_arg++; /* Flush */ rte_pktmbuf_free(rxm); @@ -806,7 +804,7 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, return; } - if (recv_args->nb_rx >= recv_args->nb_pkts) { + if (rx_svc->nb_rx >= rx_svc->nb_pkts) { stats->no_room++; ionic_rx_recycle(q, q_desc_index, rxm); return; @@ -907,8 +905,8 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, rxm->packet_type = pkt_type; - recv_args->rx_pkts[recv_args->nb_rx] = rxm; - recv_args->nb_rx++; + rx_svc->rx_pkts[rx_svc->nb_rx] = rxm; + rx_svc->nb_rx++; stats->packets++; stats->bytes += rxm->pkt_len; @@ -1052,7 +1050,7 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) static __rte_always_inline void ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, - void *service_cb_arg) + struct ionic_rx_service *rx_svc) { struct ionic_cq *cq = &rxq->qcq.cq; struct ionic_queue *q = &rxq->qcq.q; @@ -1088,7 +1086,7 @@ ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, rte_prefetch0(&q->info[q->tail_idx]); ionic_rx_clean(rxq, curr_q_tail_idx, curr_cq_tail_idx, - service_cb_arg); + rx_svc); } while (more); @@ -1127,15 +1125,15 @@ ionic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { struct ionic_rx_qcq *rxq = rx_queue; - struct ionic_rx_service service_cb_arg; + struct ionic_rx_service rx_svc; - service_cb_arg.rx_pkts = rx_pkts; - service_cb_arg.nb_pkts = nb_pkts; - service_cb_arg.nb_rx = 0; + rx_svc.rx_pkts = rx_pkts; + rx_svc.nb_pkts = nb_pkts; + rx_svc.nb_rx = 0; - ionic_rxq_service(rxq, nb_pkts, &service_cb_arg); + ionic_rxq_service(rxq, nb_pkts, &rx_svc); ionic_rx_fill(rxq); - return service_cb_arg.nb_rx; + return rx_svc.nb_rx; } From patchwork Fri Oct 7 17:43:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117595 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 03BE8A04FD; Fri, 7 Oct 2022 19:46:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1008A42BB9; Fri, 7 Oct 2022 19:44:47 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2078.outbound.protection.outlook.com [40.107.95.78]) by mails.dpdk.org (Postfix) with ESMTP id 7C64A42BAD for ; Fri, 7 Oct 2022 19:44:43 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AWbKlKXb1XanufCELeOkBPw/gfJn5FmOSrByAqjjih6BllAO9Ubdw+W0ZDaV6KmGk0Ne9PAZSFR9dWYtHy3eXYXXd5AUXYAj/SUVh537afOLeezQhxNrm/aJMdrumW1gUW8Aknmz+wlQwQIyMQgRMmcoe9yUTI2rBR+/TBrMrM/Y11on9x6lQuPuHiWSAkqGJkf4Dm8LbTZ9wZnBMFHXl8eUl8UfUG6jIqKN/Ouxrzd/erJOqKbqnscSSek1jSNx0AY3bCRWcdfnUF7VuD7c9wwEAvdnDbghcEKXq+7TYB9sQY6/1PiCayJa3hxUkIPgS8imVPn7Pj34LX5MIDED9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7RhvggWNLzhmXCqos9vjFZxKP84MIXmmsJ55mHfxVG0=; b=J7tbXNoqsIzUEsHV58U69WIWMJNBMDgPW2EwpCtQHN8cNojkEk2oIISpwdR5Gois1dEzvDgc9j4vgTzhuFyfhnwB4c0p1+XpnmqkbmHLWmTq5qY8fhzT3o9FXozIPzV/iMIyJGr+5hVCR2z3DM75vuP8oFk6jdZWBMu+N21qLYZNhzN2C6BmnEO/GtpPaLA+mGIIp+5SAB3U7ttG5JP+diSjOf7snzHQNABr7Gsp8gr596iW29JGaI1dTCmCEWpE2QD6uQKaM6lSbjPLZMkoLTHa0T4tuyD8NA6tbBAwHRTRLImuxQ4Xmv/ofj2csMGlvqC2c7ft14voMsV3KUmH8w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7RhvggWNLzhmXCqos9vjFZxKP84MIXmmsJ55mHfxVG0=; b=4t5tUfTLnD3mjhWA09fdTG7M5QhkaKuKv+BrgO87CjD8U7QU6we35+q0FZPWYebXnR3yuAtmP84bygksKoACMX7BBHC2U9wQ6AgFLMCsqrb12mv2QnCOGJN+V/XXJODCFRqhuhHxsRJhAoeQ/61v/VoAgX6n40D2U9rsdpDDIyU= Received: from MW4PR03CA0005.namprd03.prod.outlook.com (2603:10b6:303:8f::10) by SN7PR12MB6864.namprd12.prod.outlook.com (2603:10b6:806:263::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Fri, 7 Oct 2022 17:44:41 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8f:cafe::8c) by MW4PR03CA0005.outlook.office365.com (2603:10b6:303:8f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:41 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:40 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:39 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 15/35] net/ionic: free all buffers during Rx queue stop Date: Fri, 7 Oct 2022 10:43:16 -0700 Message-ID: <20221007174336.54354-16-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT055:EE_|SN7PR12MB6864:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f48798a-dc68-4cbe-3335-08daa88b9ccc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XIk0nswQ5wphB5OlfZkN5SRRQRJ1RXRf7bFw3KoeU5kY4O502g/2TpNYpZaKZ3wCGAA+0LViHgH+vmaecK21Dl+v9o7neuNSWp1ylnoK4lIgjEfgkzKXrJLtqXMzzNedk1LYguIMtpcFELzxnGdrYsovQUzkSyBvwDJ/2UHbkto1i5bTw+hgTFEzwW4ht4tP6D4kA4aDp3m/pBFzFspKtOQg5pNq4vBCjV0Gd/VlJuhBmQkfPggelxolVdA8faRequJZFP7uSjn5x4ASMJ8i5wr/tXXkX0w3tsAmZNVMOXhrY/Uh8oTsV/HQBhvSMvExIQPfIuYSJsYbkX5vd9yiyin3iFmpWFyhwcq+DYLTKrsKjLUHgpeGmZpBR6O0GJ42Fns6mCuAI8uGKvpOUREcGpO/BJFYpFyg8SPap5oZ+wc89flwa+paN75G3hWr6uvPL/J2u84rwjVInXbji033DnS57oAriFQ4E1U5aL9riZ6Fu/0U9pSd98pcp6TGZvp5dvnwOC2uFMVBVm0xCOXSpkpkyu7cZHm0H39gPVBXHA+LtdDRF9nYaOtaO/UWYyHOAr7wQJlkwDX3UKeTgAJ5bl3259QosMNI2zZi9ypuG2T42zmZAxNx/COBJtdIEM6N+KzeTQNm+J9DcEEa2hb/FyAZG7Ke4xJf6acl+32st8a3End8vy5u5H3w9ps+xm2l7AFTfiDBTrsTYlhXTGsUfu8c7iJrfUn7UFFyW2KwG29BKVEjerEjVthrLDUyCSzgv8/YSt6raETLPvRE+756+u0EbrAfRVcnRTd6ye49Qn2TTZID4sqhPu6EseTfL5J+ X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(346002)(396003)(136003)(376002)(451199015)(40470700004)(46966006)(36840700001)(70206006)(1076003)(356005)(336012)(81166007)(2616005)(82740400003)(186003)(47076005)(36860700001)(426003)(83380400001)(44832011)(26005)(5660300002)(82310400005)(16526019)(40480700001)(8936002)(478600001)(2906002)(40460700003)(41300700001)(6666004)(8676002)(70586007)(316002)(4326008)(30864003)(6916009)(36756003)(86362001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:40.9176 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8f48798a-dc68-4cbe-3335-08daa88b9ccc X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6864 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Free all of the mbufs in the receive queue when the queue is stopped. This will allow them to be resized when the MTU is changed. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_dev.c | 16 +++++ drivers/net/ionic/ionic_dev.h | 2 + drivers/net/ionic/ionic_lif.c | 32 ++++----- drivers/net/ionic/ionic_lif.h | 4 -- drivers/net/ionic/ionic_rxtx.c | 116 +++++++++++++++------------------ 5 files changed, 81 insertions(+), 89 deletions(-) diff --git a/drivers/net/ionic/ionic_dev.c b/drivers/net/ionic/ionic_dev.c index d0d2ab1b17..e31ce4b2ef 100644 --- a/drivers/net/ionic/ionic_dev.c +++ b/drivers/net/ionic/ionic_dev.c @@ -317,6 +317,15 @@ ionic_cq_init(struct ionic_cq *cq, uint16_t num_descs) return 0; } +void +ionic_cq_reset(struct ionic_cq *cq) +{ + cq->tail_idx = 0; + cq->done_color = 1; + + memset(cq->base, 0, sizeof(struct ionic_nop_comp) * cq->num_descs); +} + void ionic_cq_map(struct ionic_cq *cq, void *base, rte_iova_t base_pa) { @@ -379,3 +388,10 @@ ionic_q_sg_map(struct ionic_queue *q, void *base, rte_iova_t base_pa) q->sg_base = base; q->sg_base_pa = base_pa; } + +void +ionic_q_reset(struct ionic_queue *q) +{ + q->head_idx = 0; + q->tail_idx = 0; +} diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 3b8e9fc3c2..f72c05342c 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -225,6 +225,7 @@ struct ionic_doorbell __iomem *ionic_db_map(struct ionic_lif *lif, struct ionic_queue *q); int ionic_cq_init(struct ionic_cq *cq, uint16_t num_descs); +void ionic_cq_reset(struct ionic_cq *cq); void ionic_cq_map(struct ionic_cq *cq, void *base, rte_iova_t base_pa); typedef bool (*ionic_cq_cb)(struct ionic_cq *cq, uint16_t cq_desc_index, void *cb_arg); @@ -232,6 +233,7 @@ uint32_t ionic_cq_service(struct ionic_cq *cq, uint32_t work_to_do, ionic_cq_cb cb, void *cb_arg); int ionic_q_init(struct ionic_queue *q, uint32_t index, uint16_t num_descs); +void ionic_q_reset(struct ionic_queue *q); void ionic_q_map(struct ionic_queue *q, void *base, rte_iova_t base_pa); void ionic_q_sg_map(struct ionic_queue *q, void *base, rte_iova_t base_pa); diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 220a4fdacb..578e36e60c 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -30,25 +30,7 @@ static const uint8_t ionic_qtype_vers[IONIC_QTYPE_MAX] = { static int ionic_lif_addr_add(struct ionic_lif *lif, const uint8_t *addr); static int ionic_lif_addr_del(struct ionic_lif *lif, const uint8_t *addr); -int -ionic_qcq_enable(struct ionic_qcq *qcq) -{ - struct ionic_queue *q = &qcq->q; - struct ionic_lif *lif = qcq->lif; - struct ionic_admin_ctx ctx = { - .pending_work = true, - .cmd.q_control = { - .opcode = IONIC_CMD_Q_CONTROL, - .type = q->type, - .index = rte_cpu_to_le_32(q->index), - .oper = IONIC_Q_ENABLE, - }, - }; - - return ionic_adminq_post_wait(lif, &ctx); -} - -int +static int ionic_qcq_disable(struct ionic_qcq *qcq) { struct ionic_queue *q = &qcq->q; @@ -133,7 +115,6 @@ ionic_lif_get_abs_stats(const struct ionic_lif *lif, struct rte_eth_stats *stats for (i = 0; i < lif->nrxqcqs; i++) { struct ionic_rx_stats *rx_stats = &lif->rxqcqs[i]->stats; stats->ierrors += - rx_stats->no_cb_arg + rx_stats->bad_cq_status + rx_stats->no_room + rx_stats->bad_len; @@ -154,7 +135,6 @@ ionic_lif_get_abs_stats(const struct ionic_lif *lif, struct rte_eth_stats *stats stats->q_ipackets[i] = rx_stats->packets; stats->q_ibytes[i] = rx_stats->bytes; stats->q_errors[i] = - rx_stats->no_cb_arg + rx_stats->bad_cq_status + rx_stats->no_room + rx_stats->bad_len; @@ -1146,12 +1126,16 @@ ionic_lif_rss_teardown(struct ionic_lif *lif) void ionic_lif_txq_deinit(struct ionic_tx_qcq *txq) { + ionic_qcq_disable(&txq->qcq); + txq->flags &= ~IONIC_QCQ_F_INITED; } void ionic_lif_rxq_deinit(struct ionic_rx_qcq *rxq) { + ionic_qcq_disable(&rxq->qcq); + rxq->flags &= ~IONIC_QCQ_F_INITED; } @@ -1488,6 +1472,9 @@ ionic_lif_txq_init(struct ionic_tx_qcq *txq) ctx.cmd.q_init.ring_size); IONIC_PRINT(DEBUG, "txq_init.ver %u", ctx.cmd.q_init.ver); + ionic_q_reset(q); + ionic_cq_reset(cq); + err = ionic_adminq_post_wait(lif, &ctx); if (err) return err; @@ -1536,6 +1523,9 @@ ionic_lif_rxq_init(struct ionic_rx_qcq *rxq) ctx.cmd.q_init.ring_size); IONIC_PRINT(DEBUG, "rxq_init.ver %u", ctx.cmd.q_init.ver); + ionic_q_reset(q); + ionic_cq_reset(cq); + err = ionic_adminq_post_wait(lif, &ctx); if (err) return err; diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index c3ae96d25b..b3f0ce720b 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -39,7 +39,6 @@ struct ionic_tx_stats { struct ionic_rx_stats { uint64_t packets; uint64_t bytes; - uint64_t no_cb_arg; uint64_t bad_cq_status; uint64_t no_room; uint64_t bad_len; @@ -207,9 +206,6 @@ int ionic_tx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, struct ionic_tx_qcq **qcq_out); void ionic_qcq_free(struct ionic_qcq *qcq); -int ionic_qcq_enable(struct ionic_qcq *qcq); -int ionic_qcq_disable(struct ionic_qcq *qcq); - int ionic_lif_rxq_init(struct ionic_rx_qcq *rxq); void ionic_lif_rxq_deinit(struct ionic_rx_qcq *rxq); diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 440e655e63..17ffaf6aac 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -47,6 +47,34 @@ #include "ionic_lif.h" #include "ionic_rxtx.h" +static void +ionic_empty_array(void **array, uint32_t cnt, uint16_t idx) +{ + uint32_t i; + + for (i = idx; i < cnt; i++) + if (array[i]) + rte_pktmbuf_free_seg(array[i]); + + memset(array, 0, sizeof(void *) * cnt); +} + +static void __rte_cold +ionic_tx_empty(struct ionic_tx_qcq *txq) +{ + struct ionic_queue *q = &txq->qcq.q; + + ionic_empty_array(q->info, q->num_descs, 0); +} + +static void __rte_cold +ionic_rx_empty(struct ionic_rx_qcq *rxq) +{ + struct ionic_queue *q = &rxq->qcq.q; + + ionic_empty_array(q->info, q->num_descs, 0); +} + /********************************************************************* * * TX functions @@ -121,21 +149,16 @@ void __rte_cold ionic_dev_tx_queue_release(struct rte_eth_dev *dev, uint16_t qid) { struct ionic_tx_qcq *txq = dev->data->tx_queues[qid]; - struct ionic_tx_stats *stats = &txq->stats; IONIC_PRINT_CALL(); - IONIC_PRINT(DEBUG, "TX queue %u pkts %ju tso %ju", - txq->qcq.q.index, stats->packets, stats->tso); - - ionic_lif_txq_deinit(txq); - ionic_qcq_free(&txq->qcq); } int __rte_cold ionic_dev_tx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id) { + struct ionic_tx_stats *stats; struct ionic_tx_qcq *txq; IONIC_PRINT(DEBUG, "Stopping TX queue %u", tx_queue_id); @@ -150,9 +173,14 @@ ionic_dev_tx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id) * before disabling Tx queue */ - ionic_qcq_disable(&txq->qcq); + ionic_lif_txq_deinit(txq); - ionic_tx_flush(txq); + /* Free all buffers from descriptor ring */ + ionic_tx_empty(txq); + + stats = &txq->stats; + IONIC_PRINT(DEBUG, "TX queue %u pkts %ju tso %ju", + txq->qcq.q.index, stats->packets, stats->tso); return 0; } @@ -236,13 +264,9 @@ ionic_dev_tx_queue_start(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id) IONIC_PRINT(DEBUG, "Starting TX queue %u, %u descs", tx_queue_id, txq->qcq.q.num_descs); - if (!(txq->flags & IONIC_QCQ_F_INITED)) { - err = ionic_lif_txq_init(txq); - if (err) - return err; - } else { - ionic_qcq_enable(&txq->qcq); - } + err = ionic_lif_txq_init(txq); + if (err) + return err; tx_queue_state[tx_queue_id] = RTE_ETH_QUEUE_STATE_STARTED; @@ -648,42 +672,16 @@ ionic_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, qinfo->conf.offloads = dev->data->dev_conf.rxmode.offloads; } -static void __rte_cold -ionic_rx_empty(struct ionic_rx_qcq *rxq) -{ - struct ionic_queue *q = &rxq->qcq.q; - struct rte_mbuf *mbuf; - void **info; - - while (q->tail_idx != q->head_idx) { - info = IONIC_INFO_PTR(q, q->tail_idx); - mbuf = info[0]; - rte_mempool_put(rxq->mb_pool, mbuf); - - q->tail_idx = Q_NEXT_TO_SRVC(q, 1); - } -} - void __rte_cold ionic_dev_rx_queue_release(struct rte_eth_dev *dev, uint16_t qid) { struct ionic_rx_qcq *rxq = dev->data->rx_queues[qid]; - struct ionic_rx_stats *stats; if (!rxq) return; IONIC_PRINT_CALL(); - stats = &rxq->stats; - - IONIC_PRINT(DEBUG, "RX queue %u pkts %ju mtod %ju", - rxq->qcq.q.index, stats->packets, stats->mtods); - - ionic_rx_empty(rxq); - - ionic_lif_rxq_deinit(rxq); - ionic_qcq_free(&rxq->qcq); } @@ -787,17 +785,6 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, rxm = info[0]; - if (!rx_svc) { - stats->no_cb_arg++; - /* Flush */ - rte_pktmbuf_free(rxm); - /* - * Note: rte_mempool_put is faster with no segs - * rte_mempool_put(rxq->mb_pool, rxm); - */ - return; - } - if (cq_desc->status) { stats->bad_cq_status++; ionic_rx_recycle(q, q_desc_index, rxm); @@ -1028,13 +1015,9 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) IONIC_PRINT(DEBUG, "Starting RX queue %u, %u descs, size %u", rx_queue_id, rxq->qcq.q.num_descs, rxq->frame_size); - if (!(rxq->flags & IONIC_QCQ_F_INITED)) { - err = ionic_lif_rxq_init(rxq); - if (err) - return err; - } else { - ionic_qcq_enable(&rxq->qcq); - } + err = ionic_lif_rxq_init(rxq); + if (err) + return err; /* Allocate buffers for descriptor rings */ if (ionic_rx_fill(rxq) != 0) { @@ -1103,19 +1086,24 @@ ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, int __rte_cold ionic_dev_rx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) { + uint8_t *rx_queue_state = eth_dev->data->rx_queue_state; + struct ionic_rx_stats *stats; struct ionic_rx_qcq *rxq; IONIC_PRINT(DEBUG, "Stopping RX queue %u", rx_queue_id); rxq = eth_dev->data->rx_queues[rx_queue_id]; - eth_dev->data->rx_queue_state[rx_queue_id] = - RTE_ETH_QUEUE_STATE_STOPPED; + rx_queue_state[rx_queue_id] = RTE_ETH_QUEUE_STATE_STOPPED; + + ionic_lif_rxq_deinit(rxq); - ionic_qcq_disable(&rxq->qcq); + /* Free all buffers from descriptor ring */ + ionic_rx_empty(rxq); - /* Flush */ - ionic_rxq_service(rxq, -1, NULL); + stats = &rxq->stats; + IONIC_PRINT(DEBUG, "RX queue %u pkts %ju mtod %ju", + rxq->qcq.q.index, stats->packets, stats->mtods); return 0; } From patchwork Fri Oct 7 17:43:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117596 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8AAB7A04FD; Fri, 7 Oct 2022 19:46:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 242EC42BC1; Fri, 7 Oct 2022 19:44:48 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2043.outbound.protection.outlook.com [40.107.223.43]) by mails.dpdk.org (Postfix) with ESMTP id 6570B42BB4 for ; Fri, 7 Oct 2022 19:44:46 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=izz7VUhTv+6HXwvMuTWAC62U9JdtTuKgz4L1OkxoG/HntEwM9y2Uv3G+6Ic3Ink5n2s70fpuKvXTYFjHCQfQ81yMbmeo4XH56UlqfGjE9G+UpL79+QfGpoOoQETDrKvzq0JWwyVTqeVsjzVbqFOTuZSswSpjfVcLb476S7NrmYbkEo8dPi0WlS2mq2Xi7bvZBcB4A5d/M83HHCj8BYMjGnu22Jj2vHquberMDYCkmQKbKbz3X+px7xlzMqP/3AuzaOKMJxQYu1e2hjI4nB5BOBbEB3R+yVW7tpgWreifY9CZH5DymqqLNrFB04tNJtwif2otbfc51K9Pb37iur5uFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GhKG75DTC37Vh1bgRxkbiIpikUYFO8pH7j9Vk0UVWNI=; b=dNutOgHoUK8ioQayzWYkKEZyTrR3abiJ+Grh6pVZw7AGvo14p4KUqtP+ARNRaoXf5XjdFP9xiAt/AZeBAIugRV2ALsmyXu/I/+PecLtuJsAVSl3Vv3DQ/q+Mzu3kBHbqNJNJCqqgtFccWtJsPdEvB6wIzpF8f4Byfp96jiOkHibH2e8qt3SNO65tXrUwo20LXA8osJScmL0Xt3g6qLJdIA6Re36kS69OOUlCmutba/PIZfrvmZi2Lcdt/euWp6wBBvl67RDaD0ovu05LqMps9f0P3JY3/OV2JwlaxS2bRDzrOsWJkE9AfzsO32Gnv7xYAkZ5oObZZNOfYMnvnYX5Yg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GhKG75DTC37Vh1bgRxkbiIpikUYFO8pH7j9Vk0UVWNI=; b=reUQlKa0FkvIU6g7RPC96DqvFqYasWeuTukIj8i94frcMZVwig4qUL/e0Rcvh4RTFkpkvhuktQk1EVFSQAUTNrcLgef/p2QK5x19oqfHIrccstupU17zDFFQBHQeUEbbhakCmfVaxtfSbGAlTmBBmaFOMxfZEqs0kjNr31PJG4Y= Received: from MW3PR05CA0009.namprd05.prod.outlook.com (2603:10b6:303:2b::14) by MN2PR12MB4421.namprd12.prod.outlook.com (2603:10b6:208:26c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.20; Fri, 7 Oct 2022 17:44:43 +0000 Received: from CO1NAM11FT015.eop-nam11.prod.protection.outlook.com (2603:10b6:303:2b:cafe::8e) by MW3PR05CA0009.outlook.office365.com (2603:10b6:303:2b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.13 via Frontend Transport; Fri, 7 Oct 2022 17:44:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT015.mail.protection.outlook.com (10.13.175.130) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:43 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:42 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 16/35] net/ionic: precalculate segment lengths on receive side Date: Fri, 7 Oct 2022 10:43:17 -0700 Message-ID: <20221007174336.54354-17-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT015:EE_|MN2PR12MB4421:EE_ X-MS-Office365-Filtering-Correlation-Id: 63f3747d-0dac-479e-2062-08daa88b9e31 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VveTSwIzPHRVWLF9+T5a819V8hJGXoAqTPujhsoFSuLYg5ezaRXAwXrst7d2QuGx0D0FJTua7fMACxER2MXNMYX6gQgoh50SD4t045OKX9RjPajEljbdevBm3UH9UfVphSRbcazYM0YD80Bdll345qAfMMyfBn+RwpKqkeDoRRs8UhfVbHjQQTJ4I0dQHdTaLg5891tvOX1hYm2sWqHl2eim45Z/UkOdmBE2vBirjPPWyZrYDv5+YelWgmSyhFLipUb31lDXOmlRjdzS1r8q8/CLAbTHlsOnMrmOf2gBTsJmitdthkzMWWN4cOP4m5M4hy4w4ifhs8mQZHgTjP9Y7Rn25MXJpU6Yxi0dErWg2JmFlXZv+y6ubdVN6j9i5evFF9FaV4PJU8D2fFMr0434CrP6eIorQqwCD5CyWR3j1iA/vyIib/BS/hKMOUXWlxdk73HRyaR8RygWhdfjpuwDJqgnB8azIxQpE63L73AFI6aiic+CW7An0q9Mtvy3yFkFONqukZ267e/tfIcd1wNtuvR69iAc13CRhLjRlH9nR7c005ReoTHNDRZYDmdqclC22FiWrwY7q6db0nzkVg0874zPivZEG5S1A0X7P0U2q3IXeyXNkly6wdFcaImwhgiK8Z8iSW5bYn3wGtdgsifLsOjJIrgx0dE4R7KqyuhRBrPI6oF6racfT4ELSESO26w7zDGFd96g/KMJ4YB7oiAoOhF7QS2sKyhEceSJuJaYJibDxkumj8Ngc/XmUfcpqOJ0GJ0XdSvOjHeNIi/qvD+KInkr3uZlc62KDqkUXd3E0gg= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(396003)(376002)(136003)(346002)(451199015)(46966006)(40470700004)(36840700001)(86362001)(83380400001)(82740400003)(40480700001)(5660300002)(8936002)(36756003)(40460700003)(81166007)(478600001)(44832011)(6666004)(8676002)(70586007)(4326008)(70206006)(316002)(1076003)(36860700001)(16526019)(336012)(26005)(426003)(2906002)(186003)(2616005)(356005)(41300700001)(47076005)(82310400005)(6916009)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:43.2568 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 63f3747d-0dac-479e-2062-08daa88b9e31 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT015.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4421 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The first (header) segment includes the standard headroom. Subsequent segments do not. Store the fragment counts in the queue structure. Precalculating improves performance by reducing how much work must be done in the hot path. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_dev.h | 1 + drivers/net/ionic/ionic_lif.c | 36 ++++++++++++++++++++++++-- drivers/net/ionic/ionic_lif.h | 4 ++- drivers/net/ionic/ionic_rxtx.c | 46 ++++++++++++++-------------------- 4 files changed, 57 insertions(+), 30 deletions(-) diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index f72c05342c..55a9485bff 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -137,6 +137,7 @@ struct ionic_dev { struct ionic_queue { uint16_t num_descs; + uint16_t num_segs; uint16_t head_idx; uint16_t tail_idx; uint16_t size_mask; diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 578e36e60c..cc64aedaa1 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -566,6 +566,7 @@ ionic_qcq_alloc(struct ionic_lif *lif, const char *type_name, uint16_t flags, uint16_t num_descs, + uint16_t num_segs, uint16_t desc_size, uint16_t cq_desc_size, uint16_t sg_desc_size, @@ -616,6 +617,7 @@ ionic_qcq_alloc(struct ionic_lif *lif, goto err_out_free_qcq; } + new->q.num_segs = num_segs; new->q.type = type; err = ionic_q_init(&new->q, index, num_descs); @@ -698,14 +700,38 @@ ionic_qcq_free(struct ionic_qcq *qcq) int ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, - uint16_t nrxq_descs, struct ionic_rx_qcq **rxq_out) + uint16_t nrxq_descs, struct rte_mempool *mb_pool, + struct ionic_rx_qcq **rxq_out) { struct ionic_rx_qcq *rxq; - uint16_t flags; + uint16_t flags, seg_size, hdr_seg_size, max_segs, max_segs_fw; + uint32_t max_mtu; int err; flags = IONIC_QCQ_F_SG; + seg_size = rte_pktmbuf_data_room_size(mb_pool); + + /* The first mbuf needs to leave headroom */ + hdr_seg_size = seg_size - RTE_PKTMBUF_HEADROOM; + + max_mtu = rte_le_to_cpu_32(lif->adapter->ident.lif.eth.max_mtu); + + max_segs_fw = IONIC_RX_MAX_SG_ELEMS + 1; + + /* + * Calculate how many fragment pointers might be stored in queue. + */ + max_segs = 1 + (max_mtu + RTE_PKTMBUF_HEADROOM - 1) / seg_size; + + IONIC_PRINT(DEBUG, "rxq %u frame_size %u seg_size %u max_segs %u", + index, lif->frame_size, seg_size, max_segs); + if (max_segs > max_segs_fw) { + IONIC_PRINT(ERR, "Rx mbuf size insufficient (%d > %d avail)", + max_segs, max_segs_fw); + return -EINVAL; + } + err = ionic_qcq_alloc(lif, IONIC_QTYPE_RXQ, sizeof(struct ionic_rx_qcq), @@ -714,6 +740,7 @@ ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, "rx", flags, nrxq_descs, + max_segs, sizeof(struct ionic_rxq_desc), sizeof(struct ionic_rxq_comp), sizeof(struct ionic_rxq_sg_desc), @@ -722,6 +749,8 @@ ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, return err; rxq->flags = flags; + rxq->seg_size = seg_size; + rxq->hdr_seg_size = hdr_seg_size; lif->rxqcqs[index] = rxq; *rxq_out = rxq; @@ -749,6 +778,7 @@ ionic_tx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, "tx", flags, ntxq_descs, + 1, sizeof(struct ionic_txq_desc), sizeof(struct ionic_txq_comp), sizeof(struct ionic_txq_sg_desc_v1), @@ -779,6 +809,7 @@ ionic_admin_qcq_alloc(struct ionic_lif *lif) "admin", flags, IONIC_ADMINQ_LENGTH, + 1, sizeof(struct ionic_admin_cmd), sizeof(struct ionic_admin_comp), 0, @@ -805,6 +836,7 @@ ionic_notify_qcq_alloc(struct ionic_lif *lif) "notify", flags, IONIC_NOTIFYQ_LENGTH, + 1, sizeof(struct ionic_notifyq_cmd), sizeof(union ionic_notifyq_comp), 0, diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index b3f0ce720b..237fd0a2ef 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -81,6 +81,8 @@ struct ionic_rx_qcq { /* cacheline2 */ struct rte_mempool *mb_pool; uint16_t frame_size; /* Based on configured MTU */ + uint16_t hdr_seg_size; /* Length of first segment of RX chain */ + uint16_t seg_size; /* Length of all subsequent segments */ uint16_t flags; /* cacheline3 (inside stats) */ @@ -199,7 +201,7 @@ int ionic_dev_allmulticast_enable(struct rte_eth_dev *dev); int ionic_dev_allmulticast_disable(struct rte_eth_dev *dev); int ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, - uint32_t index, uint16_t nrxq_descs, + uint32_t index, uint16_t nrxq_descs, struct rte_mempool *mp, struct ionic_rx_qcq **qcq_out); int ionic_tx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, uint16_t ntxq_descs, diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 17ffaf6aac..0f251eca13 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -732,7 +732,7 @@ ionic_dev_rx_queue_setup(struct rte_eth_dev *eth_dev, eth_dev->data->rx_queue_state[rx_queue_id] = RTE_ETH_QUEUE_STATE_STOPPED; - err = ionic_rx_qcq_alloc(lif, socket_id, rx_queue_id, nb_desc, + err = ionic_rx_qcq_alloc(lif, socket_id, rx_queue_id, nb_desc, mp, &rxq); if (err) { IONIC_PRINT(ERR, "Queue %d allocation failure", rx_queue_id); @@ -773,9 +773,6 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, uint64_t pkt_flags = 0; uint32_t pkt_type; struct ionic_rx_stats *stats = &rxq->stats; - uint32_t buf_size = (uint16_t) - (rte_pktmbuf_data_room_size(rxq->mb_pool) - - RTE_PKTMBUF_HEADROOM); uint32_t left; void **info; @@ -809,14 +806,12 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, rxm->pkt_len = cq_desc->len; rxm->port = rxq->qcq.lif->port_id; - left = cq_desc->len; - - rxm->data_len = RTE_MIN(buf_size, left); - left -= rxm->data_len; + rxm->data_len = RTE_MIN(rxq->hdr_seg_size, cq_desc->len); + left = cq_desc->len - rxm->data_len; rxm_seg = rxm->next; while (rxm_seg && left) { - rxm_seg->data_len = RTE_MIN(buf_size, left); + rxm_seg->data_len = RTE_MIN(rxq->seg_size, left); left -= rxm_seg->data_len; rxm_seg = rxm_seg->next; @@ -926,10 +921,7 @@ ionic_rx_fill(struct ionic_rx_qcq *rxq) struct ionic_rxq_sg_elem *elem; void **info; rte_iova_t dma_addr; - uint32_t i, j, nsegs, buf_size, size; - - buf_size = (uint16_t)(rte_pktmbuf_data_room_size(rxq->mb_pool) - - RTE_PKTMBUF_HEADROOM); + uint32_t i, j; /* Initialize software ring entries */ for (i = ionic_q_space_avail(q); i; i--) { @@ -943,21 +935,18 @@ ionic_rx_fill(struct ionic_rx_qcq *rxq) info = IONIC_INFO_PTR(q, q->head_idx); - nsegs = (rxq->frame_size + buf_size - 1) / buf_size; - desc = &desc_base[q->head_idx]; dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(rxm)); desc->addr = dma_addr; - desc->len = buf_size; - size = buf_size; - desc->opcode = (nsegs > 1) ? IONIC_RXQ_DESC_OPCODE_SG : + desc->len = rxq->hdr_seg_size; + desc->opcode = (q->num_segs > 1) ? IONIC_RXQ_DESC_OPCODE_SG : IONIC_RXQ_DESC_OPCODE_SIMPLE; rxm->next = NULL; prev_rxm_seg = rxm; sg_desc = &sg_desc_base[q->head_idx]; elem = sg_desc->elems; - for (j = 0; j < nsegs - 1 && j < IONIC_RX_MAX_SG_ELEMS; j++) { + for (j = 0; j < q->num_segs - 1u; j++) { struct rte_mbuf *rxm_seg; rte_iova_t data_iova; @@ -967,21 +956,18 @@ ionic_rx_fill(struct ionic_rx_qcq *rxq) return -ENOMEM; } + rxm_seg->data_off = 0; data_iova = rte_mbuf_data_iova(rxm_seg); dma_addr = rte_cpu_to_le_64(data_iova); elem->addr = dma_addr; - elem->len = buf_size; - size += buf_size; + elem->len = rxq->seg_size; elem++; + rxm_seg->next = NULL; prev_rxm_seg->next = rxm_seg; prev_rxm_seg = rxm_seg; } - if (size < rxq->frame_size) - IONIC_PRINT(ERR, "Rx SG size is not sufficient (%d < %d)", - size, rxq->frame_size); - info[0] = rxm; q->head_idx = Q_NEXT_TO_POST(q, 1); @@ -1000,6 +986,7 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) { uint8_t *rx_queue_state = eth_dev->data->rx_queue_state; struct ionic_rx_qcq *rxq; + struct ionic_queue *q; int err; if (rx_queue_state[rx_queue_id] == RTE_ETH_QUEUE_STATE_STARTED) { @@ -1009,11 +996,16 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) } rxq = eth_dev->data->rx_queues[rx_queue_id]; + q = &rxq->qcq.q; rxq->frame_size = rxq->qcq.lif->frame_size - RTE_ETHER_CRC_LEN; - IONIC_PRINT(DEBUG, "Starting RX queue %u, %u descs, size %u", - rx_queue_id, rxq->qcq.q.num_descs, rxq->frame_size); + /* Recalculate segment count based on MTU */ + q->num_segs = 1 + + (rxq->frame_size + RTE_PKTMBUF_HEADROOM - 1) / rxq->seg_size; + + IONIC_PRINT(DEBUG, "Starting RX queue %u, %u descs, size %u segs %u", + rx_queue_id, q->num_descs, rxq->frame_size, q->num_segs); err = ionic_lif_rxq_init(rxq); if (err) From patchwork Fri Oct 7 17:43:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117597 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 79778A04FD; Fri, 7 Oct 2022 19:46:20 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 42D5342BCA; Fri, 7 Oct 2022 19:44:49 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2062.outbound.protection.outlook.com [40.107.93.62]) by mails.dpdk.org (Postfix) with ESMTP id 8380F42B85 for ; Fri, 7 Oct 2022 19:44:48 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f89BCVDb2L9aZFzjIvORcsJ/dp0LMn+MsSV8H3o+Lxps9Zm6cr44QcZUwj/7JH0pHeiXmYjGgYuUjkOSSB731qdECPEDIDALLbXb5Wi3+PqqoMFtXH/Z5YMFHO7cFk/njRGbMc90A2hqXXBwHiuJNZ3HOTtjM5HTMkuqxmknHW8HF+B8Ab/VYboIyrgXnXt/BlrowvQhlxjklwTPCibD8Y8hZJNYo+RmDOQu5sQdRBZCYZDIcFOvGPAkNade1OGO/LIPc7Awgpk4td3zed8qtkoz70baQh9ug8Xu9ZaVerbx4y/8AdAgSSHL1gWKixlbh8LYqpGIEQM8nzpE4RLzOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lFbOKfWEzeY8mso/8cAHlkU+W7UJoRECDbuqZRi3pTs=; b=IBei3l5lIaf/0wHqGarHLdNlIeuXhsvyOZ89ss19hVk9U4snaNZtuF1S2egi8nExwqocIt8y7k+cTgsKPBWu7C5u4507GTWACcc8eNtQqhYWGBRJD2KktmpPKZgLUTJIb8+z2ZU/4YUNlJyKIzUtaayDZnhI+7WoI9ua9V1kps/YGVfOv2nogS+ffYqx/wL42lESt75qyDhIk+eylgLGgwevIZ8qgQr3grmW2AtTdBPJJYDyc6ZkBaW2ZYacTBjPD9b++eN6goaBpove5uMKuWrEVR/Gp/o46BI5eTuOQDXDqteyfp0K0n5fvxxaY98fP600+7Dx9sqgcK9XQISbxw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lFbOKfWEzeY8mso/8cAHlkU+W7UJoRECDbuqZRi3pTs=; b=cfS2IAlOuLebMwrpR/RLfO7sykA/y8mOxJh32H7MhX+E5RCzn0E0AEnTPswz0YB9RMGkLh6UGtnBefUIM//aV3+85/nZHp6e1pSdFYi4by39YeieTvMrnb2G7uOb43ZRyV+qnwmj+44OCBtwd0I8dTmqAO2B57BMwluRjmyPmPY= Received: from MW4PR04CA0364.namprd04.prod.outlook.com (2603:10b6:303:81::9) by DS0PR12MB6581.namprd12.prod.outlook.com (2603:10b6:8:d3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Fri, 7 Oct 2022 17:44:46 +0000 Received: from CO1NAM11FT050.eop-nam11.prod.protection.outlook.com (2603:10b6:303:81:cafe::49) by MW4PR04CA0364.outlook.office365.com (2603:10b6:303:81::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT050.mail.protection.outlook.com (10.13.174.79) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:46 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:45 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 17/35] net/ionic: use a helper variable in packet Tx function Date: Fri, 7 Oct 2022 10:43:18 -0700 Message-ID: <20221007174336.54354-18-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT050:EE_|DS0PR12MB6581:EE_ X-MS-Office365-Filtering-Correlation-Id: 89c22df9-67a2-4a32-9c34-08daa88ba024 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CHealSoeprNWS4uxs8ZHovfAOGUAYtgrDVRMUC3eOTFx2Oh0Wn5lr/6ZwFSSzoQxzV+Zf1m+M5tAUpP5U6vY50W7XLUsEk7MW6RwSBv3pRtpfbl5XQZUE/M0ZiGgXydaD1QrWzpUWZ1qgq4RtpygCV1tlMztVSXHh23eNHNL35qXRlQKa0xFKSs37wPGzi+QfQ29r6rocMUM3SS3Lk6nPLmh8DoUz2a31yiBA/v2vTTVYHNs2IhZz+PbjIcIznz0cZ/yey1az+xY3mzCIovkHbUDMdHpXB03nWOFsHhkU1LlXO2wuZY6sohlO2ib8UwrpQIldeX5ZOyvLqfQJc9x7DnKBVgqhFV+wyfVJpQg4a4J1OzaspzF7seDzhHhAigRJO1id62Ipf5ljvcXk+KEGugqT0xO+kmIUNWUKmjnnUi/e98bx9DX0oSdoBkt4naCxLLIQyFgxI6BQB3nZvyb9FXV1GeZ0Uwwl8rBFzs38oKPbG2D0OcBSTpq2wUcMOd3B2W8SM9H3qcRi+LCLqrOfWX/GHOhlkJaXadt8pwHMipyniLGrO8ooFoGSkCUecG6jYG1CjfMrTGCjSoIc7yn6XVC+DibeQDsUKchi/IeWKzw7lXCyuP0ue4CSXcgIPxVVED1IfWoHKeJs2zw19sqe0W6Sgk1PA7X53/z/fNCL8WxwxOPlXfP4eBq6P6AiIikBMS5hyvjtxlu/D/rZ35AV9u/pCcNfjJQfY7KzVLq46xtRg+WEmAhZ41kqKfojnMs8HBTzdwKILbs1oiBoiAoKnnMpLqO30zWM4bwG6TPyhVFpiWk9ECuyz1Pr+QH61Ie X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(396003)(136003)(39860400002)(376002)(346002)(451199015)(40470700004)(46966006)(36840700001)(82310400005)(81166007)(186003)(6916009)(8936002)(2906002)(478600001)(1076003)(40460700003)(86362001)(70206006)(2616005)(6666004)(36756003)(26005)(8676002)(70586007)(83380400001)(47076005)(16526019)(316002)(82740400003)(44832011)(336012)(4326008)(426003)(5660300002)(36860700001)(40480700001)(41300700001)(356005)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:46.5302 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 89c22df9-67a2-4a32-9c34-08daa88ba024 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT050.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6581 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This improves readability. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_rxtx.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 0f251eca13..0c1cc842cf 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -560,6 +560,7 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, struct ionic_tx_qcq *txq = tx_queue; struct ionic_queue *q = &txq->qcq.q; struct ionic_tx_stats *stats = &txq->stats; + struct rte_mbuf *mbuf; uint32_t next_q_head_idx; uint32_t bytes_tx = 0; uint16_t nb_avail, nb_tx = 0; @@ -582,16 +583,18 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, rte_prefetch0(&q->info[next_q_head_idx]); } - if (tx_pkts[nb_tx]->ol_flags & RTE_MBUF_F_TX_TCP_SEG) - err = ionic_tx_tso(txq, tx_pkts[nb_tx]); + mbuf = tx_pkts[nb_tx]; + + if (mbuf->ol_flags & RTE_MBUF_F_TX_TCP_SEG) + err = ionic_tx_tso(txq, mbuf); else - err = ionic_tx(txq, tx_pkts[nb_tx]); + err = ionic_tx(txq, mbuf); if (err) { stats->drop += nb_pkts - nb_tx; break; } - bytes_tx += tx_pkts[nb_tx]->pkt_len; + bytes_tx += mbuf->pkt_len; nb_tx++; } From patchwork Fri Oct 7 17:43:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117598 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 792F8A04FD; Fri, 7 Oct 2022 19:46:26 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 559CA42BC8; Fri, 7 Oct 2022 19:44:53 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2045.outbound.protection.outlook.com [40.107.93.45]) by mails.dpdk.org (Postfix) with ESMTP id D283642684 for ; Fri, 7 Oct 2022 19:44:51 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O2T+F4SiZydozfxvCZ+fiOWQ0gK2Fnva72DSqSJiqnO2IYVe0/SCGlRBxdrlDZoL0T4Dd3tni02X5X4WZSxOESu7sfheS0glT73BWBuy2jpmnWktaBGzntqZYsN4msEgEwTCJ5odRiZU5eaz5NyD2bw7S5rvEuzQmaaMRxCQcxc1bVttDYMOoZdXoenl+RGo8VloEK6VmLHCbZPXhFLV3wEfpjUjKV8zJzQADphKy9+tHTXHWFlx/qS2HRWs9RFL6j2miWzKvizEULBRBiHd5AA0KRH7ohJXI6LKyKLn9IkC9ZNBA3acN0EBEaDjKX4tfcf+AuluLfiVzYTGqoAEdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0zbJ8OETcZL2YXjMs2URjDHyEnQijTUyw/o964mXprU=; b=d0Edp13veUHuGWn4Ps6ovs+h2MUKtFrB5qcdALM4Day8IWKnxEcZqKuIjLZN8tDY0FdVMJx3tRlQ7t6KcWKFpGmZMQJj5hKbNC3LVn5TmksqhlUk7qMAq5sNchzGBjiPdtagOiVu6BNB1qXMNRqakLlUZTmBTzxXFQrAFo9j0Nf/6BBZAWbnfNYVduMXiXOrqbP34JwpYTTGYAQt2M+uoO0R2G6lwnTKYr2LI83ldmanvaBSXRELY6h46PvJH9pFAdVueFfgMk+6qm/vJhAgu/sOVAssponjJZVrgYVxIVrUVC7byih/VADr+ToF3cWBZ4uFCre1wiqhbBo7UgSekQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0zbJ8OETcZL2YXjMs2URjDHyEnQijTUyw/o964mXprU=; b=LeArII9ds20C83kdgGiJiNteAWqhj0STnS3IvFJ2MaPCGiyd2y8gjm/ibvlTvBQ+VAghx9+5YusYcxhkBynaDN7xu3/l4JJNmtk8ll3ZOpDcUA7tsp+YB2mWbIXdy0mObaPtrtFzbfkj6BQhbcPxbIsCYqvf9E5DI68ckW3q+qE= Received: from MW4PR04CA0379.namprd04.prod.outlook.com (2603:10b6:303:81::24) by DM6PR12MB4387.namprd12.prod.outlook.com (2603:10b6:5:2ac::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Fri, 7 Oct 2022 17:44:48 +0000 Received: from CO1NAM11FT050.eop-nam11.prod.protection.outlook.com (2603:10b6:303:81:cafe::a6) by MW4PR04CA0379.outlook.office365.com (2603:10b6:303:81::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT050.mail.protection.outlook.com (10.13.174.79) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:48 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:47 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 18/35] net/ionic: do one-time init of receive descriptors Date: Fri, 7 Oct 2022 10:43:19 -0700 Message-ID: <20221007174336.54354-19-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT050:EE_|DM6PR12MB4387:EE_ X-MS-Office365-Filtering-Correlation-Id: 1f8269bc-dcb4-4734-3e5e-08daa88ba10e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +cFHuLJ+Sje7gXl0sSBB+Gzk5C6jGfAPXgickZI8Lc6wPO7TWsWfrb5q/gVOVVeneuNK7CIbWD2JQKg/XSIqG580K89hu/OpAPe/UGcPY4TpeMQLqc7IrNe/dR38igCvese+iW3EvOEonxFzoZlMd3qO/js6UxYxvHIDC8DoctlMuGlfiyh7S7e7ZWag+R0u2JTRcTJOzy1b0JdnhhRj9upRe0bpvXbwnsjDXKMIejswp/FC8RoJ5SZmV5CSfynMWck/47e4E66lB3hQY1WhNmkriHRG43/oI8gwu6bvfL0XaY1fh8yV9gFFR+63MRo/6H+Z5dLuFrA8N7ivnz7CZGnHTcY9JUG0JfC0KKwwDekgf82tDmGGqVP9HOxog22nVs5thEf+aiROsr9xq14By/0Xkp7cGtqS+OLi7wG6DraQNW6fmEJTIN92qm5OqigjSu6478pQBmXTlmRmNh3NDDLfNQuj5hPK/DurWc1n/eoAe8He4DV7KYS2y9N8YT5R2JMfBRMGxTdcCj1GpwTIuZWG+R1ylSLPkPa7WAwIzYIu0SLLnWqB3Kd3r4BFx3HNzfHV6ecm+47cx3IKK59iWiQAFnp8rKWJmHr0M9I3wOehQl6vHfEz6uNFO1hHO/UbLrCeD/KhWwdThMcdRavKEm6IzKJW9up2lJug78/aWcaOuRzg7vqzTZ95xGelR1eYaqCqTe0f6mqYJjhuBTi1L4GBuyJ6jACUhPh08lbpMAWQwgedIkyVOv5q/YWvsIBAk5Bh0EAvB5Jm2Oy9yhpdeqsygNi/2UJzZ+situenIAM= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(136003)(376002)(396003)(346002)(39860400002)(451199015)(46966006)(40470700004)(36840700001)(8936002)(44832011)(5660300002)(2906002)(41300700001)(81166007)(40480700001)(356005)(70206006)(2616005)(70586007)(6666004)(426003)(86362001)(26005)(4326008)(8676002)(82310400005)(40460700003)(82740400003)(1076003)(336012)(36860700001)(83380400001)(47076005)(478600001)(186003)(16526019)(316002)(6916009)(36756003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:48.0769 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1f8269bc-dcb4-4734-3e5e-08daa88ba10e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT050.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4387 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org These fields don't need to be set in the hot path. This improves performance. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_rxtx.c | 38 ++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 0c1cc842cf..2a34465e46 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -941,9 +941,6 @@ ionic_rx_fill(struct ionic_rx_qcq *rxq) desc = &desc_base[q->head_idx]; dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(rxm)); desc->addr = dma_addr; - desc->len = rxq->hdr_seg_size; - desc->opcode = (q->num_segs > 1) ? IONIC_RXQ_DESC_OPCODE_SG : - IONIC_RXQ_DESC_OPCODE_SIMPLE; rxm->next = NULL; prev_rxm_seg = rxm; @@ -963,7 +960,6 @@ ionic_rx_fill(struct ionic_rx_qcq *rxq) data_iova = rte_mbuf_data_iova(rxm_seg); dma_addr = rte_cpu_to_le_64(data_iova); elem->addr = dma_addr; - elem->len = rxq->seg_size; elem++; rxm_seg->next = NULL; @@ -981,6 +977,38 @@ ionic_rx_fill(struct ionic_rx_qcq *rxq) return 0; } +/* + * Perform one-time initialization of descriptor fields + * which will not change for the life of the queue. + */ +static void __rte_cold +ionic_rx_init_descriptors(struct ionic_rx_qcq *rxq) +{ + struct ionic_queue *q = &rxq->qcq.q; + struct ionic_rxq_desc *desc, *desc_base = q->base; + struct ionic_rxq_sg_desc *sg_desc, *sg_desc_base = q->sg_base; + uint32_t i, j; + uint8_t opcode; + + opcode = (q->num_segs > 1) ? + IONIC_RXQ_DESC_OPCODE_SG : IONIC_RXQ_DESC_OPCODE_SIMPLE; + + /* + * NB: Only the first segment needs to leave headroom (hdr_seg_size). + * Later segments (seg_size) do not. + */ + for (i = 0; i < q->num_descs; i++) { + desc = &desc_base[i]; + desc->len = rte_cpu_to_le_16(rxq->hdr_seg_size); + desc->opcode = opcode; + + sg_desc = &sg_desc_base[i]; + for (j = 0; j < q->num_segs - 1u; j++) + sg_desc->elems[j].len = + rte_cpu_to_le_16(rxq->seg_size); + } +} + /* * Start Receive Units for specified queue. */ @@ -1010,6 +1038,8 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) IONIC_PRINT(DEBUG, "Starting RX queue %u, %u descs, size %u segs %u", rx_queue_id, q->num_descs, rxq->frame_size, q->num_segs); + ionic_rx_init_descriptors(rxq); + err = ionic_lif_rxq_init(rxq); if (err) return err; From patchwork Fri Oct 7 17:43:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117600 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A2F2FA04FD; Fri, 7 Oct 2022 19:46:37 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D67CF42BD0; Fri, 7 Oct 2022 19:44:54 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1anam02on2067.outbound.protection.outlook.com [40.107.96.67]) by mails.dpdk.org (Postfix) with ESMTP id 6C87F42BB5 for ; Fri, 7 Oct 2022 19:44:52 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RtKmmQVdnz4HigaD2lnpsVze78OQ6vfkIhUhBP7QszWjA89cHgJ+4n9LYAGpWtDX45KUOpUUhrsELXXuRundMJmB3SaFUdO5vc+hZL4XDzD74USgwHmlq8QLisaAbZcFp0mqabxG5aHlCUlDaArZiDT9obaYXKpmnFGwu28X+5FqDGNWQlEerxlU4t3SpYBmWrYQaThGcULdgEKl9Od3Td40EkCL3MIx9vXYWukgt+l9cAJEK082if7dhndZA6Vik7LVprcdQz4p32EkNpB1niXIQXhFurdQoKvArHGFVG+c7gdwMSTFK0hxgNBpb9ETzxq0j0pgTwW3NPi0mSYO+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Jwo8lXAAq1UQT1AYjXudvz8kLhFXvZVDdRJU/gGTu0w=; b=klq077eiOxfqmWnh1AMDE/B9W9y4CNZTUM/YWSQ7j7dBcydp6rO9u2ZYx9TGXrCGISD/sQDCl5OjnBISuuWh5t+Gi2H3ThV/4aXe1my0GZe5eQGNY1cgU1U5GE5yvxqDwKdzX2W1vZky2BKjtjxInWMsvV2JtIvhKe7aidM8dyX6AiFUtMxJLRhJTD/XlrWYEH4tA05zEehvshcxEFM6f4+PWYx0WU1YxI3Yt4fpw1+1PDApIUgEleWp4vZwE9QQRBMfS0+RofA10fq/Ea1BmgVe7EBFgXxJae8NTXEWtfFGegv+jr9FIqTLyfEpf8X7r8QGQIrjZM7/u6wUbW958g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Jwo8lXAAq1UQT1AYjXudvz8kLhFXvZVDdRJU/gGTu0w=; b=M6xfDuYseSvPpQX1gFTPgGnDkZrdopdbchyR2c4HeHAbfc2f5RJgc7kh97FJOz0kyLFzAAaDafpTG2cewvoig1GnhBwvMKEe3SAZ4mmhnBQeYWZeh5pzgLz6kn1gHfMxBNj2+VpC7kSSXuaxyD38YGoMezKf1RwODDVGhqHEgN4= Received: from MW4PR04CA0265.namprd04.prod.outlook.com (2603:10b6:303:88::30) by DM8PR12MB5479.namprd12.prod.outlook.com (2603:10b6:8:38::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.20; Fri, 7 Oct 2022 17:44:50 +0000 Received: from CO1NAM11FT003.eop-nam11.prod.protection.outlook.com (2603:10b6:303:88:cafe::6c) by MW4PR04CA0265.outlook.office365.com (2603:10b6:303:88::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:44:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT003.mail.protection.outlook.com (10.13.175.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:49 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:48 -0500 From: Andrew Boyer To: CC: Andrew Boyer , Neel Patel Subject: [PATCH 19/35] net/ionic: overhaul receive side for performance Date: Fri, 7 Oct 2022 10:43:20 -0700 Message-ID: <20221007174336.54354-20-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT003:EE_|DM8PR12MB5479:EE_ X-MS-Office365-Filtering-Correlation-Id: ba62d562-6e16-4925-179c-08daa88ba211 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: upNXFNTPLQfMvU1jtrLPh+jTfEJULtvtz5+0Gs5OBKyL64NEuPspVssdnHtb9R5l3y3YvoAeMtbandbvcUI3rUGNhEPUif4+xBAROthUBu5OZP8fhUw2sewDZVaZZsocg/LTNQ0nt6gvsIfjJucycZwhgMd7yqyUlFgA/WgYI1b+/gZLOanIVbIqxe/S8Be/fBOWoLtKkxKlemBRF4m2X73JZHTufBzwUzYexJ6vPzB238tQwtaW1zqf0+fjuvRHh9SG+bQZRrMnUPhsWR1sd4EY6w3ymm/m2jKsuKdtIutwnG8WFm2FFVKzRJOZ9EPJqoZYtccf09eyiqFxqFOpcqP6lVel3rfv9mI6HMnIMVMrGqRKfpJX+pRhmB66xb7HcUW/2rKpwfLn4vDzd03wnWDa7Ndyp2jm98JcjQ+jEqfKCSbueg9fz7f3jw28/rJOohjnbR/cJb9BqjJb3yGp4AHZMh0Ws1xTQshvp6P+ltanC0b8ynrq1CxjaHEYD24UvcneBktFkvvX/hiXG7sEsDOgMasLDRr5nV4PftITXfqVzIhPm7i7qiXjyTCFtM6OCKyprfQhsaUFr86P8cGp7zI6HG9PxFl+xUp0clBm1pqFFSByv0xegk4aQ9R9jfErsgksYztjzxi5hvJQPcigWFuvvz6gZHULOQHr4KoOsTPrnwdR4J7vbHpTQOBJQVGOINmuOFJOar5QPZU4RedWgb2mYiX8fi1/HjnoJ8BZUKU9A9J+kH/bH3wfd8EC6GhQBWQC1GySgZA60XfsgC2wNVSJfQwq1v+2oHw/i9mhK7lfmrAvPdmfAci9CVGWIDbH X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(376002)(396003)(346002)(136003)(451199015)(46966006)(40470700004)(36840700001)(86362001)(356005)(478600001)(44832011)(81166007)(54906003)(30864003)(2906002)(82310400005)(6916009)(2616005)(336012)(36756003)(186003)(1076003)(5660300002)(82740400003)(70586007)(26005)(4326008)(70206006)(8936002)(316002)(8676002)(426003)(47076005)(16526019)(41300700001)(6666004)(40460700003)(40480700001)(83380400001)(36860700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:49.7733 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ba62d562-6e16-4925-179c-08daa88ba211 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT003.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR12MB5479 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Linearize RX mbuf chains in the expanded info array. Clean one and fill one per CQE (completions are not coalesced). Touch the mbufs as little as possible in the fill stage. When touching the mbuf in the clean stage, use the rearm_data unions. Ring the doorbell once at the end of the bulk clean/fill. Signed-off-by: Neel Patel Signed-off-by: Andrew Boyer --- doc/guides/rel_notes/release_22_11.rst | 1 + drivers/net/ionic/ionic_dev.h | 2 +- drivers/net/ionic/ionic_lif.c | 49 +++++- drivers/net/ionic/ionic_lif.h | 3 +- drivers/net/ionic/ionic_rxtx.c | 225 ++++++++++++------------- drivers/net/ionic/ionic_rxtx.h | 1 - 6 files changed, 159 insertions(+), 122 deletions(-) diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 552cc5b62c..d7eced510e 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -83,6 +83,7 @@ New Features Updated the ionic PMD with new features and improvements, including: * Updated to reflect that Pensando has been acquired by AMD. + * Enhanced data path to provide substantial performance improvements. Removed Items ------------- diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 55a9485bff..6a80ebc71b 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -132,7 +132,7 @@ struct ionic_dev { #define Q_NEXT_TO_POST(_q, _n) (((_q)->head_idx + (_n)) & ((_q)->size_mask)) #define Q_NEXT_TO_SRVC(_q, _n) (((_q)->tail_idx + (_n)) & ((_q)->size_mask)) -#define IONIC_INFO_IDX(_q, _i) (_i) +#define IONIC_INFO_IDX(_q, _i) ((_i) * (_q)->num_segs) #define IONIC_INFO_PTR(_q, _i) (&(_q)->info[IONIC_INFO_IDX((_q), _i)]) struct ionic_queue { diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index cc64aedaa1..db5d42dda6 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -116,7 +116,6 @@ ionic_lif_get_abs_stats(const struct ionic_lif *lif, struct rte_eth_stats *stats struct ionic_rx_stats *rx_stats = &lif->rxqcqs[i]->stats; stats->ierrors += rx_stats->bad_cq_status + - rx_stats->no_room + rx_stats->bad_len; } @@ -136,7 +135,6 @@ ionic_lif_get_abs_stats(const struct ionic_lif *lif, struct rte_eth_stats *stats stats->q_ibytes[i] = rx_stats->bytes; stats->q_errors[i] = rx_stats->bad_cq_status + - rx_stats->no_room + rx_stats->bad_len; } @@ -608,8 +606,9 @@ ionic_qcq_alloc(struct ionic_lif *lif, new->lif = lif; + /* Most queue types will store 1 ptr per descriptor */ new->q.info = rte_calloc_socket("ionic", - num_descs, sizeof(void *), + num_descs * num_segs, sizeof(void *), rte_mem_page_size(), socket_id); if (!new->q.info) { IONIC_PRINT(ERR, "Cannot allocate queue info"); @@ -698,6 +697,42 @@ ionic_qcq_free(struct ionic_qcq *qcq) rte_free(qcq); } +static uint64_t +ionic_rx_rearm_data(struct ionic_lif *lif) +{ + struct rte_mbuf rxm; + + memset(&rxm, 0, sizeof(rxm)); + + rte_mbuf_refcnt_set(&rxm, 1); + rxm.data_off = RTE_PKTMBUF_HEADROOM; + rxm.nb_segs = 1; + rxm.port = lif->port_id; + + rte_compiler_barrier(); + + RTE_BUILD_BUG_ON(sizeof(rxm.rearm_data[0]) != sizeof(uint64_t)); + return rxm.rearm_data[0]; +} + +static uint64_t +ionic_rx_seg_rearm_data(struct ionic_lif *lif) +{ + struct rte_mbuf rxm; + + memset(&rxm, 0, sizeof(rxm)); + + rte_mbuf_refcnt_set(&rxm, 1); + rxm.data_off = 0; /* no headroom */ + rxm.nb_segs = 1; + rxm.port = lif->port_id; + + rte_compiler_barrier(); + + RTE_BUILD_BUG_ON(sizeof(rxm.rearm_data[0]) != sizeof(uint64_t)); + return rxm.rearm_data[0]; +} + int ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, uint16_t nrxq_descs, struct rte_mempool *mb_pool, @@ -721,11 +756,13 @@ ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, /* * Calculate how many fragment pointers might be stored in queue. + * This is the worst-case number, so that there's enough room in + * the info array. */ max_segs = 1 + (max_mtu + RTE_PKTMBUF_HEADROOM - 1) / seg_size; - IONIC_PRINT(DEBUG, "rxq %u frame_size %u seg_size %u max_segs %u", - index, lif->frame_size, seg_size, max_segs); + IONIC_PRINT(DEBUG, "rxq %u max_mtu %u seg_size %u max_segs %u", + index, max_mtu, seg_size, max_segs); if (max_segs > max_segs_fw) { IONIC_PRINT(ERR, "Rx mbuf size insufficient (%d > %d avail)", max_segs, max_segs_fw); @@ -751,6 +788,8 @@ ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, rxq->flags = flags; rxq->seg_size = seg_size; rxq->hdr_seg_size = hdr_seg_size; + rxq->rearm_data = ionic_rx_rearm_data(lif); + rxq->rearm_seg_data = ionic_rx_seg_rearm_data(lif); lif->rxqcqs[index] = rxq; *rxq_out = rxq; diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index 237fd0a2ef..b0bd721b06 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -40,7 +40,6 @@ struct ionic_rx_stats { uint64_t packets; uint64_t bytes; uint64_t bad_cq_status; - uint64_t no_room; uint64_t bad_len; uint64_t mtods; }; @@ -80,6 +79,8 @@ struct ionic_rx_qcq { /* cacheline2 */ struct rte_mempool *mb_pool; + uint64_t rearm_data; + uint64_t rearm_seg_data; uint16_t frame_size; /* Based on configured MTU */ uint16_t hdr_seg_size; /* Length of first segment of RX chain */ uint16_t seg_size; /* Length of all subsequent segments */ diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 2a34465e46..bb6ca019d9 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -72,7 +72,11 @@ ionic_rx_empty(struct ionic_rx_qcq *rxq) { struct ionic_queue *q = &rxq->qcq.q; - ionic_empty_array(q->info, q->num_descs, 0); + /* + * Walk the full info array so that the clean up includes any + * fragments that were left dangling for later reuse + */ + ionic_empty_array(q->info, q->num_descs * q->num_segs, 0); } /********************************************************************* @@ -658,9 +662,6 @@ ionic_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) * **********************************************************************/ -static void ionic_rx_recycle(struct ionic_queue *q, uint32_t q_desc_index, - struct rte_mbuf *mbuf); - void ionic_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, struct rte_eth_rxq_info *qinfo) @@ -763,64 +764,67 @@ ionic_dev_rx_queue_setup(struct rte_eth_dev *eth_dev, return 0; } +/* + * Cleans one descriptor. Connects the filled mbufs into a chain. + * Does not advance the tail index. + */ static __rte_always_inline void -ionic_rx_clean(struct ionic_rx_qcq *rxq, - uint32_t q_desc_index, uint32_t cq_desc_index, +ionic_rx_clean_one(struct ionic_rx_qcq *rxq, + struct ionic_rxq_comp *cq_desc, struct ionic_rx_service *rx_svc) { struct ionic_queue *q = &rxq->qcq.q; - struct ionic_cq *cq = &rxq->qcq.cq; - struct ionic_rxq_comp *cq_desc_base = cq->base; - struct ionic_rxq_comp *cq_desc = &cq_desc_base[cq_desc_index]; - struct rte_mbuf *rxm, *rxm_seg; + struct rte_mbuf *rxm, *rxm_seg, *prev_rxm; + struct ionic_rx_stats *stats = &rxq->stats; uint64_t pkt_flags = 0; uint32_t pkt_type; - struct ionic_rx_stats *stats = &rxq->stats; - uint32_t left; + uint32_t left, i; + uint16_t cq_desc_len; void **info; - assert(q_desc_index == cq_desc->comp_index); + cq_desc_len = rte_le_to_cpu_16(cq_desc->len); - info = IONIC_INFO_PTR(q, cq_desc->comp_index); + info = IONIC_INFO_PTR(q, q->tail_idx); rxm = info[0]; if (cq_desc->status) { stats->bad_cq_status++; - ionic_rx_recycle(q, q_desc_index, rxm); - return; - } - - if (rx_svc->nb_rx >= rx_svc->nb_pkts) { - stats->no_room++; - ionic_rx_recycle(q, q_desc_index, rxm); return; } - if (cq_desc->len > rxq->frame_size || cq_desc->len == 0) { + if (cq_desc_len > rxq->frame_size || cq_desc_len == 0) { stats->bad_len++; - ionic_rx_recycle(q, q_desc_index, rxm); return; } - rxm->data_off = RTE_PKTMBUF_HEADROOM; - rte_prefetch1((char *)rxm->buf_addr + rxm->data_off); - rxm->nb_segs = 1; /* cq_desc->num_sg_elems */ - rxm->pkt_len = cq_desc->len; - rxm->port = rxq->qcq.lif->port_id; + info[0] = NULL; - rxm->data_len = RTE_MIN(rxq->hdr_seg_size, cq_desc->len); - left = cq_desc->len - rxm->data_len; + /* Set the mbuf metadata based on the cq entry */ + rxm->rearm_data[0] = rxq->rearm_data; + rxm->pkt_len = cq_desc_len; + rxm->data_len = RTE_MIN(rxq->hdr_seg_size, cq_desc_len); + left = cq_desc_len - rxm->data_len; + rxm->nb_segs = cq_desc->num_sg_elems + 1; + prev_rxm = rxm; - rxm_seg = rxm->next; - while (rxm_seg && left) { + for (i = 1; i < rxm->nb_segs && left; i++) { + rxm_seg = info[i]; + info[i] = NULL; + + /* Set the chained mbuf metadata */ + rxm_seg->rearm_data[0] = rxq->rearm_seg_data; rxm_seg->data_len = RTE_MIN(rxq->seg_size, left); left -= rxm_seg->data_len; - rxm_seg = rxm_seg->next; - rxm->nb_segs++; + /* Link the mbuf */ + prev_rxm->next = rxm_seg; + prev_rxm = rxm_seg; } + /* Terminate the mbuf chain */ + prev_rxm->next = NULL; + /* RSS */ pkt_flags |= RTE_MBUF_F_RX_RSS_HASH; rxm->hash.rss = rte_le_to_cpu_32(cq_desc->rss_hash); @@ -897,77 +901,74 @@ ionic_rx_clean(struct ionic_rx_qcq *rxq, stats->bytes += rxm->pkt_len; } -static void -ionic_rx_recycle(struct ionic_queue *q, uint32_t q_desc_index, - struct rte_mbuf *mbuf) -{ - struct ionic_rxq_desc *desc_base = q->base; - struct ionic_rxq_desc *old = &desc_base[q_desc_index]; - struct ionic_rxq_desc *new = &desc_base[q->head_idx]; - - new->addr = old->addr; - new->len = old->len; - - q->info[q->head_idx] = mbuf; - - q->head_idx = Q_NEXT_TO_POST(q, 1); - - ionic_q_flush(q); -} - +/* + * Fills one descriptor with mbufs. Does not advance the head index. + */ static __rte_always_inline int -ionic_rx_fill(struct ionic_rx_qcq *rxq) +ionic_rx_fill_one(struct ionic_rx_qcq *rxq) { struct ionic_queue *q = &rxq->qcq.q; + struct rte_mbuf *rxm, *rxm_seg; struct ionic_rxq_desc *desc, *desc_base = q->base; struct ionic_rxq_sg_desc *sg_desc, *sg_desc_base = q->sg_base; - struct ionic_rxq_sg_elem *elem; + rte_iova_t data_iova; + uint32_t i; void **info; - rte_iova_t dma_addr; - uint32_t i, j; - /* Initialize software ring entries */ - for (i = ionic_q_space_avail(q); i; i--) { - struct rte_mbuf *rxm = rte_mbuf_raw_alloc(rxq->mb_pool); - struct rte_mbuf *prev_rxm_seg; + info = IONIC_INFO_PTR(q, q->head_idx); + desc = &desc_base[q->head_idx]; + sg_desc = &sg_desc_base[q->head_idx]; + + /* mbuf is unused => whole chain is unused */ + if (unlikely(info[0])) + return 0; + + rxm = rte_mbuf_raw_alloc(rxq->mb_pool); + if (unlikely(rxm == NULL)) { + assert(0); + return -ENOMEM; + } + + info[0] = rxm; + + data_iova = rte_mbuf_data_iova_default(rxm); + desc->addr = rte_cpu_to_le_64(data_iova); - if (rxm == NULL) { - IONIC_PRINT(ERR, "RX mbuf alloc failed"); + for (i = 1; i < q->num_segs; i++) { + /* mbuf is unused => rest of the chain is unused */ + if (info[i]) + return 0; + + rxm_seg = rte_mbuf_raw_alloc(rxq->mb_pool); + if (rxm_seg == NULL) { + assert(0); return -ENOMEM; } - info = IONIC_INFO_PTR(q, q->head_idx); + info[i] = rxm_seg; - desc = &desc_base[q->head_idx]; - dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(rxm)); - desc->addr = dma_addr; - rxm->next = NULL; - - prev_rxm_seg = rxm; - sg_desc = &sg_desc_base[q->head_idx]; - elem = sg_desc->elems; - for (j = 0; j < q->num_segs - 1u; j++) { - struct rte_mbuf *rxm_seg; - rte_iova_t data_iova; - - rxm_seg = rte_mbuf_raw_alloc(rxq->mb_pool); - if (rxm_seg == NULL) { - IONIC_PRINT(ERR, "RX mbuf alloc failed"); - return -ENOMEM; - } + /* The data_off does not get set to 0 until later */ + data_iova = rxm_seg->buf_iova; + sg_desc->elems[i - 1].addr = rte_cpu_to_le_64(data_iova); + } - rxm_seg->data_off = 0; - data_iova = rte_mbuf_data_iova(rxm_seg); - dma_addr = rte_cpu_to_le_64(data_iova); - elem->addr = dma_addr; - elem++; + return 0; +} - rxm_seg->next = NULL; - prev_rxm_seg->next = rxm_seg; - prev_rxm_seg = rxm_seg; - } +/* + * Fills all descriptors with mbufs. + */ +static int __rte_cold +ionic_rx_fill(struct ionic_rx_qcq *rxq) +{ + struct ionic_queue *q = &rxq->qcq.q; + uint32_t i; + int err; - info[0] = rxm; + for (i = 1; i < q->num_descs; i++) { + err = ionic_rx_fill_one(rxq); + if (err) + return err; q->head_idx = Q_NEXT_TO_POST(q, 1); } @@ -1056,53 +1057,52 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) return 0; } +/* + * Walk the CQ to find completed receive descriptors. + * Any completed descriptor found is refilled. + */ static __rte_always_inline void ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, struct ionic_rx_service *rx_svc) { struct ionic_cq *cq = &rxq->qcq.cq; struct ionic_queue *q = &rxq->qcq.q; + struct ionic_rxq_desc *q_desc_base = q->base; struct ionic_rxq_comp *cq_desc, *cq_desc_base = cq->base; - bool more; - uint32_t curr_q_tail_idx, curr_cq_tail_idx; uint32_t work_done = 0; - if (work_to_do == 0) - return; - cq_desc = &cq_desc_base[cq->tail_idx]; + while (color_match(cq_desc->pkt_type_color, cq->done_color)) { - curr_cq_tail_idx = cq->tail_idx; cq->tail_idx = Q_NEXT_TO_SRVC(cq, 1); if (cq->tail_idx == 0) cq->done_color = !cq->done_color; - /* Prefetch the next 4 descriptors */ - if ((cq->tail_idx & 0x3) == 0) - rte_prefetch0(&cq_desc_base[cq->tail_idx]); - - do { - more = (q->tail_idx != cq_desc->comp_index); + /* Prefetch 8 x 8B bufinfo */ + rte_prefetch0(IONIC_INFO_PTR(q, Q_NEXT_TO_SRVC(q, 8))); + /* Prefetch 4 x 16B comp */ + rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); + /* Prefetch 4 x 16B descriptors */ + rte_prefetch0(&q_desc_base[Q_NEXT_TO_POST(q, 4)]); - curr_q_tail_idx = q->tail_idx; - q->tail_idx = Q_NEXT_TO_SRVC(q, 1); + ionic_rx_clean_one(rxq, cq_desc, rx_svc); - /* Prefetch the next 4 descriptors */ - if ((q->tail_idx & 0x3) == 0) - /* q desc info */ - rte_prefetch0(&q->info[q->tail_idx]); + q->tail_idx = Q_NEXT_TO_SRVC(q, 1); - ionic_rx_clean(rxq, curr_q_tail_idx, curr_cq_tail_idx, - rx_svc); + (void)ionic_rx_fill_one(rxq); - } while (more); + q->head_idx = Q_NEXT_TO_POST(q, 1); if (++work_done == work_to_do) break; cq_desc = &cq_desc_base[cq->tail_idx]; } + + /* Update the queue indices and ring the doorbell */ + if (work_done) + ionic_q_flush(q); } /* @@ -1141,12 +1141,9 @@ ionic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, struct ionic_rx_service rx_svc; rx_svc.rx_pkts = rx_pkts; - rx_svc.nb_pkts = nb_pkts; rx_svc.nb_rx = 0; ionic_rxq_service(rxq, nb_pkts, &rx_svc); - ionic_rx_fill(rxq); - return rx_svc.nb_rx; } diff --git a/drivers/net/ionic/ionic_rxtx.h b/drivers/net/ionic/ionic_rxtx.h index 91a9073803..79ec1112de 100644 --- a/drivers/net/ionic/ionic_rxtx.h +++ b/drivers/net/ionic/ionic_rxtx.h @@ -10,7 +10,6 @@ struct ionic_rx_service { /* cb in */ struct rte_mbuf **rx_pkts; - uint16_t nb_pkts; /* cb out */ uint16_t nb_rx; }; From patchwork Fri Oct 7 17:43:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117599 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 11A7CA04FD; Fri, 7 Oct 2022 19:46:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 13DA142BCE; Fri, 7 Oct 2022 19:44:54 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2040.outbound.protection.outlook.com [40.107.236.40]) by mails.dpdk.org (Postfix) with ESMTP id 8D23542BBC for ; Fri, 7 Oct 2022 19:44:52 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g3it3hvGXzU3yMgN97cfy0iUfSg/uWxyB0zmEiTl7xcSrXIDYkklVDyfZfnPnL+B2MtvttYbwmdFuOuix/ZAvICYLl9rEHcRA2VXVGwykUluPQV8dl0GCGAKNph41ALMe7KTUhcDUy/zPFwPBrYQ41ecHlbUp3wOM1xSqnnBb/3ZEfeniERPHafH47prJdAx4SGrFdRGGlG5VnA6pwn3jaj7uuc0VQ8n3oz4/QNr4iRW5Kqhb0Z/timc4ykUPA/xxfnfJmT6mSgB8MbRIhmn19UXlWv1i2A2K8ZFt2Hsr8Wn9ukpPRAvMn72Q1aPU5aD2knFtFuSWNk4AMXdow6QtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=B2voeoinhL6qsZSiV0HfmqxW43C1Y7lHSF8Ka1DPvpA=; b=RfXsy0RptsnPNLl5cDTUs0Z8mADaYZEKXbFf8P/2s7m0qRm7Jw91A55HZn7gARlrWU8SdANK5ORQc5csbe8yTJ7GrPvDvD+GpxNz9MH4TxeVsEoDxeESz5R1zwcYGiB7fCZN79O557K2KR2OtEqD8xf/pw/x2Nv4UssxRdbby/wlOuhTQMrm19CG3gN5Rym1H4udq2D3K29QfoHON+zSOEM3PgpcIXv6ZLcwf0AjucpOqvhF97ZwiAoZiHbXobL6XP28WY8/B/MnRqmOHNzXvGg+bSmOR7avRg7Ez+YP5tyNwXX9HxLd5mlY+cZ3Yi+/G8HgtAFIRbBa459NnMD52g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B2voeoinhL6qsZSiV0HfmqxW43C1Y7lHSF8Ka1DPvpA=; b=22mfowOf166E9ynVHudM/yuO2A3QpYt2ZAJTIE1bFLkluAvXVjAioVO+SdIOISFZtsyAxyvlEY6me59kpo9NVVkKZBc06wX2Ybi8BwR8LauV0LFLnMCNQXnG1T+8bc4J9s52hY3kaH1lGzF6ul65mnOf3hZ14/nH7JWlxnULcIA= Received: from MW4PR04CA0257.namprd04.prod.outlook.com (2603:10b6:303:88::22) by SJ0PR12MB6781.namprd12.prod.outlook.com (2603:10b6:a03:44b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.23; Fri, 7 Oct 2022 17:44:50 +0000 Received: from CO1NAM11FT003.eop-nam11.prod.protection.outlook.com (2603:10b6:303:88:cafe::e3) by MW4PR04CA0257.outlook.office365.com (2603:10b6:303:88::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:44:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT003.mail.protection.outlook.com (10.13.175.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:50 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:49 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 20/35] net/ionic: overhaul transmit side for performance Date: Fri, 7 Oct 2022 10:43:21 -0700 Message-ID: <20221007174336.54354-21-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT003:EE_|SJ0PR12MB6781:EE_ X-MS-Office365-Filtering-Correlation-Id: 6adca26e-9212-43c9-8656-08daa88ba283 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ShdaMs+vcZJd0H64coLzlaYciTk6CPwr2U1s/KrSAjoPh0QL5qaoIPCRfupHqo1ArrkU5w/kY7sNI8snGP185KC2+O1ST6rh2Jh9x5c1eClYDDoYJuR/D1ILgaOS3Zr7NeW3Mb+nwfHL1bmjnWhabxmRlE5nxYwsdMOYCF7u3Q6H4KyC1raP2JJdM4qvH0An17RvwB3TnUyHWGKe39bZWHdfb92FfqWJ8UokwwLjCovFrM9eutecDmn/B2634Fu8yrYM7Zi0G6w0KRUo7qj4I5F0q0BQsTfhy6PSYz+YAMk6dLjTXD7t6eN2eP5fCXRGW2/rkBWYHP+2o9Vhik11+Jl0aRZzJrP+d/dlwMua6yYQzfcUyuNwW0hI/i9gcMDfDgbKtjcftM31X6wa5wSptWEtf+X6nh3JrbG3rvWBIU8mMZE8O2fEEtVNTIRCKNhggpZoWNUK1fGL5iS/TEsh08uWVpHA0c8tFpFBTa0z+UzyY59j6e+NwKN7xHIiif26NBelmrMwav+w9DEqUV+IkdEr9tU2dEuM1hiW2/HNBd4w/CAkCcKVpTDyx/B08kTXw4JH7+6/+xg0SBcVBY52iXNSkE1toDAm1swOieC7VKhcSMP3YBj+6sYrsi8t4tJsmLskTjplMekgugEf45gyvIo63fN8A7vYkyDFwKCh0EYS9yWeYbPgRIIuq2KY8Pe3IfCsjN8dnuOOSLQpkI+z65GjLBeaeps1KwWPeGfFELC2z1BiwVSgMCmpvPPrk3T6hxlgg689ykluA2InB8x9ce4iZcFX5qFKmKkYsGD//UIn3WJycegXnPrD3+QKk4uS X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(396003)(39860400002)(346002)(376002)(136003)(451199015)(46966006)(36840700001)(40470700004)(8936002)(478600001)(6916009)(316002)(8676002)(70586007)(4326008)(6666004)(70206006)(82310400005)(2906002)(5660300002)(26005)(41300700001)(82740400003)(16526019)(186003)(1076003)(2616005)(336012)(40460700003)(44832011)(36860700001)(426003)(47076005)(36756003)(356005)(86362001)(81166007)(83380400001)(40480700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:50.5076 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6adca26e-9212-43c9-8656-08daa88ba283 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT003.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6781 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Linearize Tx mbuf chains in the info array. This avoids walking the mbuf chain during flush. Move a few branches out of the hot path. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_lif.c | 2 +- drivers/net/ionic/ionic_rxtx.c | 143 ++++++++++++++++++++------------- 2 files changed, 87 insertions(+), 58 deletions(-) diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index db5d42dda6..ac9b69fc70 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -817,7 +817,7 @@ ionic_tx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, "tx", flags, ntxq_descs, - 1, + num_segs_fw, sizeof(struct ionic_txq_desc), sizeof(struct ionic_txq_comp), sizeof(struct ionic_txq_sg_desc_v1), diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index bb6ca019d9..53b0add228 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -64,7 +64,7 @@ ionic_tx_empty(struct ionic_tx_qcq *txq) { struct ionic_queue *q = &txq->qcq.q; - ionic_empty_array(q->info, q->num_descs, 0); + ionic_empty_array(q->info, q->num_descs * q->num_segs, 0); } static void __rte_cold @@ -102,50 +102,49 @@ ionic_tx_flush(struct ionic_tx_qcq *txq) { struct ionic_cq *cq = &txq->qcq.cq; struct ionic_queue *q = &txq->qcq.q; - struct rte_mbuf *txm, *next; - struct ionic_txq_comp *cq_desc_base = cq->base; - struct ionic_txq_comp *cq_desc; + struct rte_mbuf *txm; + struct ionic_txq_comp *cq_desc, *cq_desc_base = cq->base; void **info; - u_int32_t comp_index = (u_int32_t)-1; + uint32_t i; cq_desc = &cq_desc_base[cq->tail_idx]; + while (color_match(cq_desc->color, cq->done_color)) { cq->tail_idx = Q_NEXT_TO_SRVC(cq, 1); - - /* Prefetch the next 4 descriptors (not really useful here) */ - if ((cq->tail_idx & 0x3) == 0) - rte_prefetch0(&cq_desc_base[cq->tail_idx]); - if (cq->tail_idx == 0) cq->done_color = !cq->done_color; - comp_index = cq_desc->comp_index; + /* Prefetch 4 x 16B comp at cq->tail_idx + 4 */ + if ((cq->tail_idx & 0x3) == 0) + rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); - cq_desc = &cq_desc_base[cq->tail_idx]; - } + while (q->tail_idx != rte_le_to_cpu_16(cq_desc->comp_index)) { + /* Prefetch 8 mbuf ptrs at q->tail_idx + 2 */ + rte_prefetch0(IONIC_INFO_PTR(q, Q_NEXT_TO_SRVC(q, 2))); - if (comp_index != (u_int32_t)-1) { - while (q->tail_idx != comp_index) { - info = IONIC_INFO_PTR(q, q->tail_idx); + /* Prefetch next mbuf */ + void **next_info = + IONIC_INFO_PTR(q, Q_NEXT_TO_SRVC(q, 1)); + if (next_info[0]) + rte_mbuf_prefetch_part2(next_info[0]); + if (next_info[1]) + rte_mbuf_prefetch_part2(next_info[1]); - q->tail_idx = Q_NEXT_TO_SRVC(q, 1); + info = IONIC_INFO_PTR(q, q->tail_idx); + for (i = 0; i < q->num_segs; i++) { + txm = info[i]; + if (!txm) + break; - /* Prefetch the next 4 descriptors */ - if ((q->tail_idx & 0x3) == 0) - /* q desc info */ - rte_prefetch0(&q->info[q->tail_idx]); - - /* - * Note: you can just use rte_pktmbuf_free, - * but this loop is faster - */ - txm = info[0]; - while (txm != NULL) { - next = txm->next; rte_pktmbuf_free_seg(txm); - txm = next; + + info[i] = NULL; } + + q->tail_idx = Q_NEXT_TO_SRVC(q, 1); } + + cq_desc = &cq_desc_base[cq->tail_idx]; } } @@ -327,9 +326,12 @@ ionic_tx_tso_post(struct ionic_queue *q, struct ionic_txq_desc *desc, uint16_t vlan_tci, bool has_vlan, bool start, bool done) { + struct rte_mbuf *txm_seg; void **info; uint64_t cmd; uint8_t flags = 0; + int i; + flags |= has_vlan ? IONIC_TXQ_DESC_FLAG_VLAN : 0; flags |= encap ? IONIC_TXQ_DESC_FLAG_ENCAP : 0; flags |= start ? IONIC_TXQ_DESC_FLAG_TSO_SOT : 0; @@ -345,7 +347,13 @@ ionic_tx_tso_post(struct ionic_queue *q, struct ionic_txq_desc *desc, if (done) { info = IONIC_INFO_PTR(q, q->head_idx); - info[0] = txm; + + /* Walk the mbuf chain to stash pointers in the array */ + txm_seg = txm; + for (i = 0; i < txm->nb_segs; i++) { + info[i] = txm_seg; + txm_seg = txm_seg->next; + } } q->head_idx = Q_NEXT_TO_POST(q, 1); @@ -497,8 +505,7 @@ ionic_tx(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) struct ionic_tx_stats *stats = &txq->stats; struct rte_mbuf *txm_seg; void **info; - bool encap; - bool has_vlan; + rte_iova_t data_iova; uint64_t ol_flags = txm->ol_flags; uint64_t addr, cmd; uint8_t opcode = IONIC_TXQ_DESC_OPCODE_CSUM_NONE; @@ -524,32 +531,44 @@ ionic_tx(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) if (opcode == IONIC_TXQ_DESC_OPCODE_CSUM_NONE) stats->no_csum++; - has_vlan = (ol_flags & RTE_MBUF_F_TX_VLAN); - encap = ((ol_flags & RTE_MBUF_F_TX_OUTER_IP_CKSUM) || - (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM)) && - ((ol_flags & RTE_MBUF_F_TX_OUTER_IPV4) || - (ol_flags & RTE_MBUF_F_TX_OUTER_IPV6)); + if (((ol_flags & RTE_MBUF_F_TX_OUTER_IP_CKSUM) || + (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM)) && + ((ol_flags & RTE_MBUF_F_TX_OUTER_IPV4) || + (ol_flags & RTE_MBUF_F_TX_OUTER_IPV6))) { + flags |= IONIC_TXQ_DESC_FLAG_ENCAP; + } - flags |= has_vlan ? IONIC_TXQ_DESC_FLAG_VLAN : 0; - flags |= encap ? IONIC_TXQ_DESC_FLAG_ENCAP : 0; + if (ol_flags & RTE_MBUF_F_TX_VLAN) { + flags |= IONIC_TXQ_DESC_FLAG_VLAN; + desc->vlan_tci = rte_cpu_to_le_16(txm->vlan_tci); + } addr = rte_cpu_to_le_64(rte_mbuf_data_iova(txm)); cmd = encode_txq_desc_cmd(opcode, flags, txm->nb_segs - 1, addr); desc->cmd = rte_cpu_to_le_64(cmd); desc->len = rte_cpu_to_le_16(txm->data_len); - desc->vlan_tci = rte_cpu_to_le_16(txm->vlan_tci); info[0] = txm; - elem = sg_desc_base[q->head_idx].elems; + if (txm->nb_segs > 1) { + txm_seg = txm->next; - txm_seg = txm->next; - while (txm_seg != NULL) { - elem->len = rte_cpu_to_le_16(txm_seg->data_len); - elem->addr = rte_cpu_to_le_64(rte_mbuf_data_iova(txm_seg)); - elem++; - txm_seg = txm_seg->next; + elem = sg_desc_base[q->head_idx].elems; + + while (txm_seg != NULL) { + /* Stash the mbuf ptr in the array */ + info++; + *info = txm_seg; + + /* Configure the SGE */ + data_iova = rte_mbuf_data_iova(txm_seg); + elem->len = rte_cpu_to_le_16(txm_seg->data_len); + elem->addr = rte_cpu_to_le_64(data_iova); + elem++; + + txm_seg = txm_seg->next; + } } q->head_idx = Q_NEXT_TO_POST(q, 1); @@ -565,11 +584,19 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, struct ionic_queue *q = &txq->qcq.q; struct ionic_tx_stats *stats = &txq->stats; struct rte_mbuf *mbuf; - uint32_t next_q_head_idx; uint32_t bytes_tx = 0; uint16_t nb_avail, nb_tx = 0; int err; + struct ionic_txq_desc *desc_base = q->base; + rte_prefetch0(&desc_base[q->head_idx]); + rte_prefetch0(IONIC_INFO_PTR(q, q->head_idx)); + + if (tx_pkts) { + rte_mbuf_prefetch_part1(tx_pkts[0]); + rte_mbuf_prefetch_part2(tx_pkts[0]); + } + /* Cleaning old buffers */ ionic_tx_flush(txq); @@ -580,11 +607,13 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, } while (nb_tx < nb_pkts) { - next_q_head_idx = Q_NEXT_TO_POST(q, 1); - if ((next_q_head_idx & 0x3) == 0) { - struct ionic_txq_desc *desc_base = q->base; - rte_prefetch0(&desc_base[next_q_head_idx]); - rte_prefetch0(&q->info[next_q_head_idx]); + uint16_t next_idx = Q_NEXT_TO_POST(q, 1); + rte_prefetch0(&desc_base[next_idx]); + rte_prefetch0(IONIC_INFO_PTR(q, next_idx)); + + if (nb_tx + 1 < nb_pkts) { + rte_mbuf_prefetch_part1(tx_pkts[nb_tx + 1]); + rte_mbuf_prefetch_part2(tx_pkts[nb_tx + 1]); } mbuf = tx_pkts[nb_tx]; @@ -605,10 +634,10 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, if (nb_tx > 0) { rte_wmb(); ionic_q_flush(q); - } - stats->packets += nb_tx; - stats->bytes += bytes_tx; + stats->packets += nb_tx; + stats->bytes += bytes_tx; + } return nb_tx; } From patchwork Fri Oct 7 17:43:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117601 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BD010A04FD; Fri, 7 Oct 2022 19:46:45 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 06EF442BA0; Fri, 7 Oct 2022 19:44:58 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2081.outbound.protection.outlook.com [40.107.223.81]) by mails.dpdk.org (Postfix) with ESMTP id 4635042BC3 for ; Fri, 7 Oct 2022 19:44:56 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fiIKm+AZqH7ywv45iFcu9sIfIb3eox/r7Vmc32RBzv/RL+6aoQeaBpgL9UqjYGMKXmdC/irWiruEe0AaftakTtyVuIcQImukGekZAt+8qvfHLo9j77WcP7xFUSV4ZgwVombCiB9hspmjLDV3DltiGDDukJrQAIqzjNYrNh2IanhA/APgSbeDDdiWyA2tkcqWmm3Bgo7c14fa2qahRPOAswfUZvd7PWDrv6GV5Cc3MaFpb3iy9LtPKuldPokbjsGrghJkXsogfiolGZTAkY5EdJV7hBtE+Gg7xNBtSZM31ot1T6w8gPkVz8UCrr3FIFySEvo4AOK0J5SddA9DRi2Ovg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+b1E+uDUsWGI/Q6G2fa4WQmHCcxh6U2YHL0jzWNhS4Y=; b=DXNLmAxlqYKFND7UCocfWbg/kwT7uME1hrwcuYGoEptqqEV9w5IOP+ZFSjO8G0V60DBgC10L9/FwDPvmFbjG2RxQQs8nWSYc8qJ3dbFVh8fp4jY52+YbnyBcTwJX+8HIfvgUIhLLkGS+AJSMeT/xDDr5bxMru+ubzNTUChKxN+lsDOJIkugD/zKmtChtwH+8hd+NM0dLwPiI+BBLBljxHD0ygGKcbm/BHoPI5bN3VieDQvN1FA/nHuuOw0bCfvdJ8vOZ7/02Skb5i+9egtQ7BJQS6+ro7QD2+MZCHbnBGk+I4YuAXO5/EkmsaX56As12t53vTCwooYaHYPOFdW/6EQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+b1E+uDUsWGI/Q6G2fa4WQmHCcxh6U2YHL0jzWNhS4Y=; b=uW+EacYzIxDqiNu2gmBS9mMivLUDcluQDxBFuAmItMMBqLaMkUAI9AMmLu8YYc0G/P2q0LDIu1GHJXVmqVsk+66GRPaahSFiU5UcfdUsDFGfhUyY4OPuIEsQ9+KjEjMZTIqKQAzP7CBvEfljoVdzCJKfg5qpJHFFr5BWdiJfezY= Received: from MW4PR03CA0339.namprd03.prod.outlook.com (2603:10b6:303:dc::14) by MN0PR12MB6318.namprd12.prod.outlook.com (2603:10b6:208:3c1::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Fri, 7 Oct 2022 17:44:54 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::46) by MW4PR03CA0339.outlook.office365.com (2603:10b6:303:dc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28 via Frontend Transport; Fri, 7 Oct 2022 17:44:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:53 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:51 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 21/35] net/ionic: add support for mbuf fast free Date: Fri, 7 Oct 2022 10:43:22 -0700 Message-ID: <20221007174336.54354-22-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|MN0PR12MB6318:EE_ X-MS-Office365-Filtering-Correlation-Id: fb5a63c0-6ec1-44aa-8912-08daa88ba411 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wXEDeuO/6auzLnCCfdq9TpvsLsrp/yEIZ6nxhEqW224ANz7bWrZIMdQKqr445miFCe6R+Og6bkN1KgHGfFur1cBPPbgDl6GFVH3I2jQq3CvAo8y+SP/OtAzjsI0Jj2x8Bedo5cc5epUvxjZ8B+ITcq0dPoZWdHcvU/GQ5tGOoMqIneqM20gyEIPIYRtSyAAZfCda1yFTaGMXH4vtj5fdjf5U5eFUL1p6dFul21VTA9mMyWKjgSQ6FCtHS0F4TDW4s67njMpZpqS2+wH9KqRzFZ6i0+tqvyPDoH2zGTiKq5KW/TI/VWDEzYaRlPZD83xhdkmCOc5DHGvQBwSFXCanT7X1b0tyMAiZnHxrlScPhV7NSR3QHcJbMmGjfS4q7Ej3/4zT4m3N+9mSzzd8ckm85cEjtmR9c80/CwRit1WgL+Gs946mHwF/sghpVb9eyCq0thyIeMFiFSiGZe2hpbcNdV65x2Y8v1qRNKVZRdamor3GOOZ7VwXjWXbRLO0GakgV1NIceXEEcQBpzSvz+UCrPBRqhJxmFNbKvS5+GBkyQHJfrUIy1OOM8Ue84IbkL7KO4GsMkW8bb1m+/tB4jxBuwfc4esNczRNAyLPbppFPF0kKcjh59wvkioLxUuIlOJVHY5jqSbRQwuWiU1yuW6DVuvgCjW7tLSF4dUV/8hDBLdUvAsUHuZSh8gr07TMg4/IyKPkX4Gq1aTfVqaaewbQvzUXf21sBCBRRI/g2vPR/o0emN6A6FYyM+Z1+9HmA5NCA8A60wS0lwrmGFfwsO9gu22bwVTNF04jRt0SlSb71Z3040xUEWFskajX1nymw4W5I X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(396003)(376002)(136003)(39860400002)(346002)(451199015)(40470700004)(46966006)(36840700001)(186003)(40480700001)(36860700001)(356005)(40460700003)(36756003)(70206006)(83380400001)(86362001)(82740400003)(8676002)(6916009)(4326008)(82310400005)(2906002)(26005)(41300700001)(44832011)(316002)(2616005)(8936002)(16526019)(478600001)(426003)(47076005)(81166007)(1076003)(336012)(6666004)(70586007)(5660300002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:53.1161 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fb5a63c0-6ec1-44aa-8912-08daa88ba411 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6318 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Use a put() rather than a free() in the optimized case. Signed-off-by: Andrew Boyer --- doc/guides/nics/features/ionic.ini | 1 + doc/guides/rel_notes/release_22_11.rst | 1 + drivers/net/ionic/ionic_ethdev.c | 2 +- drivers/net/ionic/ionic_lif.h | 1 + drivers/net/ionic/ionic_rxtx.c | 9 ++++++++- 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/features/ionic.ini b/doc/guides/nics/features/ionic.ini index 5bd18e39e9..77947bfd22 100644 --- a/doc/guides/nics/features/ionic.ini +++ b/doc/guides/nics/features/ionic.ini @@ -7,6 +7,7 @@ Speed capabilities = Y Link status = Y Link status event = Y +Fast mbuf free = Y Queue start/stop = Y MTU update = Y Scattered Rx = Y diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index d7eced510e..0c962f9637 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -84,6 +84,7 @@ New Features * Updated to reflect that Pensando has been acquired by AMD. * Enhanced data path to provide substantial performance improvements. + * Added support for mbuf fast free. Removed Items ------------- diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 186cde8330..38241d41ec 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -396,7 +396,7 @@ ionic_dev_info_get(struct rte_eth_dev *eth_dev, */ dev_info->rx_queue_offload_capa = 0; - dev_info->tx_queue_offload_capa = 0; + dev_info->tx_queue_offload_capa = RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE; /* * Per-port capabilities diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index b0bd721b06..4fb1f213ff 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -50,6 +50,7 @@ struct ionic_rx_stats { #define IONIC_QCQ_F_CSUM_L3 BIT(7) #define IONIC_QCQ_F_CSUM_UDP BIT(8) #define IONIC_QCQ_F_CSUM_TCP BIT(9) +#define IONIC_QCQ_F_FAST_FREE BIT(10) /* Queue / Completion Queue */ struct ionic_qcq { diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 53b0add228..30f7ce9fc6 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -94,6 +94,8 @@ ionic_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, qinfo->nb_desc = q->num_descs; qinfo->conf.offloads = dev->data->dev_conf.txmode.offloads; + if (txq->flags & IONIC_QCQ_F_FAST_FREE) + qinfo->conf.offloads |= RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE; qinfo->conf.tx_deferred_start = txq->flags & IONIC_QCQ_F_DEFERRED; } @@ -136,7 +138,10 @@ ionic_tx_flush(struct ionic_tx_qcq *txq) if (!txm) break; - rte_pktmbuf_free_seg(txm); + if (txq->flags & IONIC_QCQ_F_FAST_FREE) + rte_mempool_put(txm->pool, txm); + else + rte_pktmbuf_free_seg(txm); info[i] = NULL; } @@ -240,6 +245,8 @@ ionic_dev_tx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id, txq->flags |= IONIC_QCQ_F_CSUM_TCP; if (offloads & RTE_ETH_TX_OFFLOAD_UDP_CKSUM) txq->flags |= IONIC_QCQ_F_CSUM_UDP; + if (offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) + txq->flags |= IONIC_QCQ_F_FAST_FREE; eth_dev->data->tx_queues[tx_queue_id] = txq; From patchwork Fri Oct 7 17:43:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117602 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9A0C6A04FD; Fri, 7 Oct 2022 19:46:53 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 18E0F42BDE; Fri, 7 Oct 2022 19:44:59 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2087.outbound.protection.outlook.com [40.107.94.87]) by mails.dpdk.org (Postfix) with ESMTP id AA4BF42B9B for ; Fri, 7 Oct 2022 19:44:57 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KxPgVQUDcK1kMqfBNE5fQfAYfjreHQoiEFROSO0Hc12AbgCgYqeV51n5oFc+2t0J3FM8YnPdzhoogM7DCJ/NGFoIlXFNPdhA0KWAdqjZSKL8+G0x8je/w2IJHJrhqnNHfjyDkYVrizZBRzHHZxYcM8G2AKesVcfTGOTT9ATdZtig/asbwYEF/+A+5vdKuidRKGGVZYTNm/ChGce3stQtddE+JtnXyYKvokcPQfd/7GQKQP3fjtDjZ6rltAA/TInImWvmC25DmGdQdC7fXkNxWJl5+cIkEyS8L1iIQKReIcZKFlK/dEkIjX0DTDMuK1gNMigxJpPpgHBRdQuyioLbNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pWIWSbP4KuBwq9GvTt2eW3OWXAW1G5uoCuAipAuOGaw=; b=aVgZYhCdDZDDvJBSOfcTwzXcwWWG8QXAuRktJfw3G/GVpGHhQTImwqYcoAlRWXqtwkwjWp0rsXJZri1EwwDo6fo9IZgL6wlwhDcug9witcTGosLdVK7jIeO8aFuJgNyYYcuADte1dSjZf9Cdzt85sr/j72MLhJntSqj+T4kUnXKbqPyrHsOXc2C95WVtVCuBhBjPJHLG79wZtq6PZWHg+XQGhcZzXslonrWSp5rDC1PT0l2Cvn5BG+o0OSQ69wIWJJTcx/zUR8+8P0Y8AeSWxuqqiYJRqWHAdKPdrTwnv5GJKR1udENIqs2rUbpj5YHwkMN3O3gN7XOQVwLX1SySBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pWIWSbP4KuBwq9GvTt2eW3OWXAW1G5uoCuAipAuOGaw=; b=X+f9q8eCZgeMogARbw//CFNAI/FgWTX09KlNdRolhFvikPXV9CH+fBRxLl4xp3EaVY4D/p95myITr4RK1X2neBzPoN5wbJFrItw7PreWM5kEz9yvh+XvjBgQokxOQwQ+CHYoQTunbfetWkdJjk3Ozr+ec+LW0QPbNF5b/FT+PgQ= Received: from MW4PR03CA0336.namprd03.prod.outlook.com (2603:10b6:303:dc::11) by MN2PR12MB4469.namprd12.prod.outlook.com (2603:10b6:208:268::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Fri, 7 Oct 2022 17:44:55 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::f1) by MW4PR03CA0336.outlook.office365.com (2603:10b6:303:dc::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15 via Frontend Transport; Fri, 7 Oct 2022 17:44:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:54 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:52 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 22/35] net/ionic: do bulk allocations of receive mbufs Date: Fri, 7 Oct 2022 10:43:23 -0700 Message-ID: <20221007174336.54354-23-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|MN2PR12MB4469:EE_ X-MS-Office365-Filtering-Correlation-Id: a6cd6b42-b1ce-45c8-2b20-08daa88ba4fb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Qjp09PDr3/aHO05tWXOX9DryeS0NXz17bxaUg6QrQDdieB1+vpI1BZfVd+D0Y0OXiubXeYzn14JO0WCSztBnDrCpT6+MSWOIUVeG4gTShw3Fttm2SDMb8bbgxs7BzUIDwKqHBD2x5hAKgXtpYytPBtCAUnV1VVEtAA4gFdX8/poSW/tNU9uNoG14541GlLuA6X7lf+bhpRBGdk3QZyFIufNjmzR3UsYorO/y2b7hcd8xsumeNEobOCRS+SmbLhTRhQgrmHYwi8BJ2f94jtle9sDpvv+hkp+swNygUIoaEfKQupOFR+xkgkWrFX/aD5q25vffP32v/3vf4y/4STVm8BBsJvxYh3AI42HAmYuj0h4TEDyHFu+5PBfJgQDhQeIi7b7PNuYMEv64DWC5Dv0MGNWgcaNGWmdYw60QhtkQOR+G1P4k9ay0k0lqu1p8+TbBXBX6gMGOypfQw2E5WJ8cYAazJIb8ZP8Zf57Or5Gk/g+nifPlzkFltC31XTHsbv08R5YCMVwhxVXv/3zG9GWC+pblZHjmJ50axGwQqTeafJOUD020nHvc6blmyu8G9tmjKO0z/Cy8RHAYnjfcK9vNesHh38zTXu8ZeccTNnsNls8QGpihVtkFSxoCD8yrQPlwHcxCnSLJHhJent3JFBKQGx4Wr4AApXUm3dy4+/EPPq0mo8aniPZViugf1P7Rf6DxIzPWyx0B0tsIJXRG0XfYOB0mNMbMQDwoo9K46AHz7bZwq74vyzZIVRKAwQTM7hREdO/lXLWqn6p9kXqQzBPeM8AdOGy/fvGPtUUXD45C0VgJjkAaK5FOf3oZ2QjKS3uW X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(396003)(136003)(376002)(346002)(451199015)(40470700004)(46966006)(36840700001)(82310400005)(36756003)(44832011)(5660300002)(8936002)(86362001)(41300700001)(47076005)(336012)(83380400001)(186003)(1076003)(2616005)(16526019)(426003)(40460700003)(8676002)(4326008)(81166007)(2906002)(70586007)(356005)(70206006)(6666004)(40480700001)(36860700001)(478600001)(82740400003)(26005)(6916009)(316002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:54.6628 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6cd6b42-b1ce-45c8-2b20-08daa88ba4fb X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4469 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Do bulk allocations to improve performance. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_lif.h | 6 ++++++ drivers/net/ionic/ionic_rxtx.c | 35 ++++++++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index 4fb1f213ff..5231909213 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -17,6 +17,8 @@ #define IONIC_ADMINQ_LENGTH 16 /* must be a power of two */ #define IONIC_NOTIFYQ_LENGTH 64 /* must be a power of two */ +#define IONIC_MBUF_BULK_ALLOC 64 /* Multiple of 4 */ + #define IONIC_RSS_OFFLOAD_ALL ( \ IONIC_RSS_TYPE_IPV4 | \ IONIC_RSS_TYPE_IPV4_TCP | \ @@ -86,9 +88,13 @@ struct ionic_rx_qcq { uint16_t hdr_seg_size; /* Length of first segment of RX chain */ uint16_t seg_size; /* Length of all subsequent segments */ uint16_t flags; + uint16_t mb_idx; /* cacheline3 (inside stats) */ struct ionic_rx_stats stats; + + /* cacheline4+ */ + struct rte_mbuf *mbs[IONIC_MBUF_BULK_ALLOC] __rte_cache_aligned; }; struct ionic_tx_qcq { diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 30f7ce9fc6..5ee6573a50 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -77,6 +77,10 @@ ionic_rx_empty(struct ionic_rx_qcq *rxq) * fragments that were left dangling for later reuse */ ionic_empty_array(q->info, q->num_descs * q->num_segs, 0); + + ionic_empty_array((void **)rxq->mbs, + IONIC_MBUF_BULK_ALLOC, rxq->mb_idx); + rxq->mb_idx = 0; } /********************************************************************* @@ -950,6 +954,7 @@ ionic_rx_fill_one(struct ionic_rx_qcq *rxq) rte_iova_t data_iova; uint32_t i; void **info; + int ret; info = IONIC_INFO_PTR(q, q->head_idx); desc = &desc_base[q->head_idx]; @@ -959,12 +964,19 @@ ionic_rx_fill_one(struct ionic_rx_qcq *rxq) if (unlikely(info[0])) return 0; - rxm = rte_mbuf_raw_alloc(rxq->mb_pool); - if (unlikely(rxm == NULL)) { - assert(0); - return -ENOMEM; + if (rxq->mb_idx == 0) { + ret = rte_mempool_get_bulk(rxq->mb_pool, + (void **)rxq->mbs, + IONIC_MBUF_BULK_ALLOC); + if (ret) { + assert(0); + return -ENOMEM; + } + + rxq->mb_idx = IONIC_MBUF_BULK_ALLOC; } + rxm = rxq->mbs[--rxq->mb_idx]; info[0] = rxm; data_iova = rte_mbuf_data_iova_default(rxm); @@ -975,12 +987,19 @@ ionic_rx_fill_one(struct ionic_rx_qcq *rxq) if (info[i]) return 0; - rxm_seg = rte_mbuf_raw_alloc(rxq->mb_pool); - if (rxm_seg == NULL) { - assert(0); - return -ENOMEM; + if (rxq->mb_idx == 0) { + ret = rte_mempool_get_bulk(rxq->mb_pool, + (void **)rxq->mbs, + IONIC_MBUF_BULK_ALLOC); + if (ret) { + assert(0); + return -ENOMEM; + } + + rxq->mb_idx = IONIC_MBUF_BULK_ALLOC; } + rxm_seg = rxq->mbs[--rxq->mb_idx]; info[i] = rxm_seg; /* The data_off does not get set to 0 until later */ From patchwork Fri Oct 7 17:43:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117603 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 91471A04FD; Fri, 7 Oct 2022 19:46:59 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E1CA042BE4; Fri, 7 Oct 2022 19:44:59 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2064.outbound.protection.outlook.com [40.107.220.64]) by mails.dpdk.org (Postfix) with ESMTP id 7785642BC3 for ; Fri, 7 Oct 2022 19:44:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eu1FRyQWEuH4GztIsA+QuSupv9c3s2yqljYj4lPUWBTrSdJI9Qzu1xBvxIOP3evehmoOLMWJAJBSg8VBGLV4XZrxp1JGl++pXSXt54BsMn2+JJdW17FxMd166dJs+POKuu3Ci953ohKRhPoEjINnnMwBmS1X3f0IDdP+PrmwmDj8jQWzaKTUDDcXV1OWaPZS8ud9CKdiAWJukA0Kg7lOgVjoHOzZewtN7X3qAUx9Kzt4jaWJ1VVcjO/E90YKeE4m4WuBDc+wjOeQLCBDkLvr7ew5oMHQHurE2o8qyIecalJHyk8Tw8R9auwcxltxX0ouT4SlIwdCCzxK8aetDlhEmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DEMP+YC3l5Yu16Fd8LraaULY4ysRJg08S4fb10zD8zU=; b=aYR8cE8a/gfb64t4FDkVxFf6RD05WUYaeXP9RV/h/izakn+KDoJrbhaSdXynkvH9K7PsQe2EZJ0vi+e82iYi4+kPnEOGmY7Nyv/lPyjtzi1MEVs/Pkc2BAowFt5BSSxAKbA4q/9IpnIsss7afpPMH2dacw6QGPAUNcmiJxBZXGJ4ugB12gtDiarwFRINhapsfcVSA6Eet038llL/XYgOqa1SMNGblQRM2aggpMs3RrF1mYsSiNjPdAE5Qg0g05UH7cLwr1MMFlNmyRQnpS07PLd+fNI/8uPqk6ENK4qpXfpagPhzaFClEj3iS2SLA7yesL5HmyYrW5EIl0rkbO65BA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DEMP+YC3l5Yu16Fd8LraaULY4ysRJg08S4fb10zD8zU=; b=jE63AMmGgKuKoY+435CkeR+dUkySkAykqYrgJiveM4Qt7UDBoOEJ26z/ZwlTdr31X4UXxPWLRXrYY14KXC2zbHYMqbIo4XSLEcANMdPDLY2bPVu6wFU2k9A+2z50wnB22d09+YmvqyL7Su2MmoGrj+3MVS2BpQ4PuJ413aqbNjI= Received: from MW4PR03CA0350.namprd03.prod.outlook.com (2603:10b6:303:dc::25) by SJ1PR12MB6241.namprd12.prod.outlook.com (2603:10b6:a03:458::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Fri, 7 Oct 2022 17:44:56 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::7) by MW4PR03CA0350.outlook.office365.com (2603:10b6:303:dc::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15 via Frontend Transport; Fri, 7 Oct 2022 17:44:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:56 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:53 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 23/35] net/ionic: add a lookup table for packet type Date: Fri, 7 Oct 2022 10:43:24 -0700 Message-ID: <20221007174336.54354-24-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|SJ1PR12MB6241:EE_ X-MS-Office365-Filtering-Correlation-Id: 85b80556-2c31-4ba8-1cf5-08daa88ba5d4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m0WPOnquGxYHv4xyUT34hHN3oXfS2/rTEBthDc1UsibLCNlrWTe0bvZ+PYVEYQgi3gSVFL8m3ODyNcwRcAoS2Ln3nx4fdIVak7QjARi9SOQHtwA7/wcFEOVbUCDvJMT0KVD0Y0gBKJ065EFbJSTYi8jlcB15iwlOeH3dnF5YGG33UZkYNerSwQ4GniptGB+0rurJukoj2YwU6TWIYn7vU+tDcxLK6avLA+C06Ao8pxOb27UUIhDoRTx6J3vi8uXBUqGgUAeR0eVnnZVDPh7nIraya1U7P7svY0UQ/tqlEs0EEa4SA6jwzb1U1JrjBQ7Axtw64tTAp5wtxGUTphcMCyCBjoJR/W9FzL/ODD3443ef6aua2jKx6AV56uwoBiyDhHCtOtnFrzzu8hB2GaRlehlc1M4liRWJB7fcUrY6u5eeVOd6oBLwkRnwA1vSmXw1g95Tm8vLsEKReUk2d9/4fM0G4vEte8V9vYsLnqGLomR2WyofX4CAEnGnZ4IiacnI1WSThsAnnoRGZJ8kU/XQGnbBymEVoq633ca0obufpx6jrxU9yPzACvSdTVr6HkT8tI+fQXYFJOo/nXgdfPhXuHFsHmfbBtFxVlnpLAv2WL+viU4vG0es1Pud5aG5QBGT8uhIqn9oNtvE9nr1fAYuz8EDLBw6acIxNhUjTaG8h4aIScxqR48+qCmjLGteyhe0RCdPX77hbO7I6KeovujEbFzyE2n1o9a4gYorv7j7ljZSsHUDtY3tigZ0TT+bskTw/fk3Jn9pbjTegMPjBnDbkJf18V1NH7YEp3nOxuSeHgmnsAlUpwYkbXzozO3Jqs0v X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(376002)(136003)(396003)(346002)(39860400002)(451199015)(46966006)(36840700001)(40470700004)(16526019)(336012)(4326008)(8676002)(6666004)(426003)(6916009)(316002)(26005)(36756003)(1076003)(5660300002)(2616005)(2906002)(70206006)(8936002)(356005)(83380400001)(47076005)(41300700001)(70586007)(81166007)(40480700001)(36860700001)(44832011)(40460700003)(186003)(82740400003)(86362001)(82310400005)(478600001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:56.0846 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 85b80556-2c31-4ba8-1cf5-08daa88ba5d4 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6241 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This improves performance by reducing branching. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_rxtx.c | 63 ++++++++++++++++------------------ 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 5ee6573a50..bb09c4eb1f 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -804,6 +804,22 @@ ionic_dev_rx_queue_setup(struct rte_eth_dev *eth_dev, return 0; } +/* RTE_PTYPE_UNKNOWN is 0x0 */ +static const uint32_t ionic_ptype_table[IONIC_RXQ_COMP_PKT_TYPE_MASK] + __rte_cache_aligned = { + [IONIC_PKT_TYPE_NON_IP] = RTE_PTYPE_UNKNOWN, + [IONIC_PKT_TYPE_IPV4] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4, + [IONIC_PKT_TYPE_IPV4_TCP] = + RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_TCP, + [IONIC_PKT_TYPE_IPV4_UDP] = + RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP, + [IONIC_PKT_TYPE_IPV6] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6, + [IONIC_PKT_TYPE_IPV6_TCP] = + RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP, + [IONIC_PKT_TYPE_IPV6_UDP] = + RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP, +}; + /* * Cleans one descriptor. Connects the filled mbufs into a chain. * Does not advance the tail index. @@ -820,6 +836,7 @@ ionic_rx_clean_one(struct ionic_rx_qcq *rxq, uint32_t pkt_type; uint32_t left, i; uint16_t cq_desc_len; + uint8_t ptype; void **info; cq_desc_len = rte_le_to_cpu_16(cq_desc->len); @@ -895,41 +912,19 @@ ionic_rx_clean_one(struct ionic_rx_qcq *rxq, rxm->ol_flags = pkt_flags; /* Packet Type */ - switch (cq_desc->pkt_type_color & IONIC_RXQ_COMP_PKT_TYPE_MASK) { - case IONIC_PKT_TYPE_IPV4: - pkt_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4; - break; - case IONIC_PKT_TYPE_IPV6: - pkt_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6; - break; - case IONIC_PKT_TYPE_IPV4_TCP: - pkt_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | - RTE_PTYPE_L4_TCP; - break; - case IONIC_PKT_TYPE_IPV6_TCP: - pkt_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6 | - RTE_PTYPE_L4_TCP; - break; - case IONIC_PKT_TYPE_IPV4_UDP: - pkt_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | - RTE_PTYPE_L4_UDP; - break; - case IONIC_PKT_TYPE_IPV6_UDP: - pkt_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6 | - RTE_PTYPE_L4_UDP; - break; - default: - { - struct rte_ether_hdr *eth_h = rte_pktmbuf_mtod(rxm, + ptype = cq_desc->pkt_type_color & IONIC_RXQ_COMP_PKT_TYPE_MASK; + pkt_type = ionic_ptype_table[ptype]; + if (pkt_type == RTE_PTYPE_UNKNOWN) { + struct rte_ether_hdr *eth_h = rte_pktmbuf_mtod(rxm, struct rte_ether_hdr *); - uint16_t ether_type = eth_h->ether_type; - if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_ARP)) - pkt_type = RTE_PTYPE_L2_ETHER_ARP; - else - pkt_type = RTE_PTYPE_UNKNOWN; - stats->mtods++; - break; - } + uint16_t ether_type = eth_h->ether_type; + if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_ARP)) + pkt_type = RTE_PTYPE_L2_ETHER_ARP; + else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_LLDP)) + pkt_type = RTE_PTYPE_L2_ETHER_LLDP; + else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_1588)) + pkt_type = RTE_PTYPE_L2_ETHER_TIMESYNC; + stats->mtods++; } rxm->packet_type = pkt_type; From patchwork Fri Oct 7 17:43:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117604 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 20674A04FD; Fri, 7 Oct 2022 19:47:06 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CA20E42BA7; Fri, 7 Oct 2022 19:45:02 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2087.outbound.protection.outlook.com [40.107.220.87]) by mails.dpdk.org (Postfix) with ESMTP id B686C42BD9 for ; Fri, 7 Oct 2022 19:44:59 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MRFEGHVDPOmg0M/255ZOgFtJM5WoX/Va39zwDxkDEbM4Nyj6DD9jAY1aS/6QsXNy8ttzM8p4Esd+EUNm67tffkB6SR+HI/lkULEu8nimy6uMvdpbXA00r7lsVnwCp7eP2nt/5pWV8kflvkfH/cuvBnztlyE7L15zqKZWWH86+sRpZFuhy/Ilx3QkYUgvNTsYLIWN0iXXRCArDQ/LwldW7K7ay6G+zhu/MP9lGU+OSFH6okO/7i4IkRW0+/gnnX3heJb1qWHr0K50MnUVoXnZoQpfvKsUu3p1/tyctVmseKeWHIcdtEFkw3TzcUqdXDlJTMD/LvvU+ujwj6ImXi7PjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gTK7Sor/BMl2wxnOP9118Iy8VLGPVx81QazNn7+qVBc=; b=nb9krYG2BfRAJ1flLBqPWGXoWSFD2tUS9X9znnOffd3XG3pJ2WonsGRpkHJ737/ZA5qOimvVraag4mzBPZjKwnyIL4I80O4cnB3qlB4l0OoaKPGR9+pWTzNJtdjrY8NWQZKuZwacM53bQTWlUdRyCdfzyG2vWoi9pZ0j0z5AIGQNX3Oumk1jP8/4bqRjJvQfm/EY/mlbFU2EpiuGbFbT19B5dZRuqLUUOwqAerYLBlGZuz5ihutszVtPAGIk+nygyQpbtKWCqHR4xNValEQ5FdF8hIaJ6Zia51H60uiyJ8yxWzDWWMn3tFM5Hk5T3R6VFLzPJBLo0gBLyyNj6cLD2g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gTK7Sor/BMl2wxnOP9118Iy8VLGPVx81QazNn7+qVBc=; b=j9nN5OqNwiJQnfch193GCYTReWeMapvKeYSxOuZKkVlyBGudyswPC6GsoGkwsHtAvEDM/vq8U/TZTxGwOT8k6f/7gOizv4ieDdZurR3xREbKAbvL3PBPMmQiUxp8eslDUhwTkAvWONFK3OoKuIdcz1ayOxAdzqSGnHjzr9oDi7Y= Received: from MW4PR03CA0338.namprd03.prod.outlook.com (2603:10b6:303:dc::13) by BL1PR12MB5031.namprd12.prod.outlook.com (2603:10b6:208:31a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Fri, 7 Oct 2022 17:44:57 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::b0) by MW4PR03CA0338.outlook.office365.com (2603:10b6:303:dc::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:44:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:56 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:54 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 24/35] net/ionic: add a lookup table for checksum flags Date: Fri, 7 Oct 2022 10:43:25 -0700 Message-ID: <20221007174336.54354-25-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|BL1PR12MB5031:EE_ X-MS-Office365-Filtering-Correlation-Id: 23e82313-d2b4-4172-7730-08daa88ba652 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w8N3E3SGQxIiw35o2NjaVz94OXWDNshlWLsUt0DYPSdn8PNSaik6cvKgIJ+GQwNfhT+OccWPnfhuQ7vL7B1EWZniqEWHcsR6jIJUxeHCOcwiPjAF1CPZDKl1BFN0rSF1wTAX6E9/5bhx+crWMSDhYr7elnpf2wzR2IOiptQwWgU30tewnl10szRag6emOzfDU9ASRfKbTTIDLJPkS3oHV7ltaSn4N81s03MhID0s2DDvqphU0IhWHdR8an/pJXb2PARZXfxsCLCmuA2qkIzGpv8/JoKnTnC7r+/2hxv8FD0Den0srsCG+0tnH8kGCj7RiEWe6oAMuuZEZWj53IyijKCNH1VmQtw06vpDVv+RiHv+XTu89MFH0JqEWbvMeYU1ctA2YVYFOb2pwoMNAcdkEIdu3q+dNuWkGRLBasXzDjmPj9wwuRaod5vYOoVJ67X1R0xvopJZ7mWajZsOM6XW5xs8VhTlv85kX5YBiIp+4I4YEO+8XffNorsU8wHNwXLQNW2+TBnKUqWsqwhKiNsan2hfE+0/Zt5F0cNhrx1Vq3rC+CEHNH6shB4RQ5ckz24ZtFvOynt7y4ScEIZBGSd4HltIZ9Nrz5hu+pGiQieuCeYlV1VBMggRvpu+iTjPanXGoIzKafl/NOQeBXTUfVi05S62cUOElrtAAevr7GfgCr4NvAEVsb3qE/tSe1gpXWL7TX5jPPbUlPMqUNxfBSEvWV/weSEmTvXa3L+Xg+JAd1oNO4pUyyI4bme4VDyyLubWNe+Da8azMfOGf8VxEyeWlSkxByzlGoXJdITmmEBJa7V4aCmcb7XeMaZ42aECWNpb X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(396003)(376002)(346002)(136003)(451199015)(46966006)(40470700004)(36840700001)(82740400003)(426003)(40460700003)(36860700001)(478600001)(36756003)(356005)(81166007)(82310400005)(44832011)(4326008)(316002)(5660300002)(8676002)(26005)(8936002)(6666004)(41300700001)(2616005)(40480700001)(70586007)(186003)(70206006)(86362001)(47076005)(6916009)(336012)(1076003)(2906002)(16526019)(83380400001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:56.9126 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 23e82313-d2b4-4172-7730-08daa88ba652 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5031 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This improves performance by reducing branching. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_rxtx.c | 47 ++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index bb09c4eb1f..134589b016 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -804,6 +804,36 @@ ionic_dev_rx_queue_setup(struct rte_eth_dev *eth_dev, return 0; } +#define IONIC_CSUM_FLAG_MASK (IONIC_RXQ_COMP_CSUM_F_VLAN - 1) +static const uint64_t ionic_csum_flags[IONIC_CSUM_FLAG_MASK] + __rte_cache_aligned = { + /* IP_BAD set */ + [IONIC_RXQ_COMP_CSUM_F_IP_BAD] = RTE_MBUF_F_RX_IP_CKSUM_BAD, + [IONIC_RXQ_COMP_CSUM_F_IP_BAD | IONIC_RXQ_COMP_CSUM_F_TCP_OK] = + RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_GOOD, + [IONIC_RXQ_COMP_CSUM_F_IP_BAD | IONIC_RXQ_COMP_CSUM_F_TCP_BAD] = + RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_BAD, + [IONIC_RXQ_COMP_CSUM_F_IP_BAD | IONIC_RXQ_COMP_CSUM_F_UDP_OK] = + RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_GOOD, + [IONIC_RXQ_COMP_CSUM_F_IP_BAD | IONIC_RXQ_COMP_CSUM_F_UDP_BAD] = + RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_BAD, + /* IP_OK set */ + [IONIC_RXQ_COMP_CSUM_F_IP_OK] = RTE_MBUF_F_RX_IP_CKSUM_GOOD, + [IONIC_RXQ_COMP_CSUM_F_IP_OK | IONIC_RXQ_COMP_CSUM_F_TCP_OK] = + RTE_MBUF_F_RX_IP_CKSUM_GOOD | RTE_MBUF_F_RX_L4_CKSUM_GOOD, + [IONIC_RXQ_COMP_CSUM_F_IP_OK | IONIC_RXQ_COMP_CSUM_F_TCP_BAD] = + RTE_MBUF_F_RX_IP_CKSUM_GOOD | RTE_MBUF_F_RX_L4_CKSUM_BAD, + [IONIC_RXQ_COMP_CSUM_F_IP_OK | IONIC_RXQ_COMP_CSUM_F_UDP_OK] = + RTE_MBUF_F_RX_IP_CKSUM_GOOD | RTE_MBUF_F_RX_L4_CKSUM_GOOD, + [IONIC_RXQ_COMP_CSUM_F_IP_OK | IONIC_RXQ_COMP_CSUM_F_UDP_BAD] = + RTE_MBUF_F_RX_IP_CKSUM_GOOD | RTE_MBUF_F_RX_L4_CKSUM_BAD, + /* No IP flag set */ + [IONIC_RXQ_COMP_CSUM_F_TCP_OK] = RTE_MBUF_F_RX_L4_CKSUM_GOOD, + [IONIC_RXQ_COMP_CSUM_F_TCP_BAD] = RTE_MBUF_F_RX_L4_CKSUM_BAD, + [IONIC_RXQ_COMP_CSUM_F_UDP_OK] = RTE_MBUF_F_RX_L4_CKSUM_GOOD, + [IONIC_RXQ_COMP_CSUM_F_UDP_BAD] = RTE_MBUF_F_RX_L4_CKSUM_BAD, +}; + /* RTE_PTYPE_UNKNOWN is 0x0 */ static const uint32_t ionic_ptype_table[IONIC_RXQ_COMP_PKT_TYPE_MASK] __rte_cache_aligned = { @@ -836,7 +866,7 @@ ionic_rx_clean_one(struct ionic_rx_qcq *rxq, uint32_t pkt_type; uint32_t left, i; uint16_t cq_desc_len; - uint8_t ptype; + uint8_t ptype, cflags; void **info; cq_desc_len = rte_le_to_cpu_16(cq_desc->len); @@ -894,19 +924,8 @@ ionic_rx_clean_one(struct ionic_rx_qcq *rxq, /* Checksum */ if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_CALC) { - if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_IP_OK) - pkt_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD; - else if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_IP_BAD) - pkt_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD; - - if ((cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_TCP_OK) || - (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_UDP_OK)) - pkt_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD; - else if ((cq_desc->csum_flags & - IONIC_RXQ_COMP_CSUM_F_TCP_BAD) || - (cq_desc->csum_flags & - IONIC_RXQ_COMP_CSUM_F_UDP_BAD)) - pkt_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD; + cflags = cq_desc->csum_flags & IONIC_CSUM_FLAG_MASK; + pkt_flags |= ionic_csum_flags[cflags]; } rxm->ol_flags = pkt_flags; From patchwork Fri Oct 7 17:43:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117605 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 39019A04FD; Fri, 7 Oct 2022 19:47:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BAF5542BE7; Fri, 7 Oct 2022 19:45:03 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2063.outbound.protection.outlook.com [40.107.237.63]) by mails.dpdk.org (Postfix) with ESMTP id 3BC5842BD3 for ; Fri, 7 Oct 2022 19:45:00 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fzsfnh+sxVlwxM38gv1jReUYLJmqkJxsblbTMeS6xo8Dg//fm85h1v3uOhZU9oLgE8GkUk4th0CwRPra3VTGB4AzhjvGjkRPlgSsNmtwiqiNqdtwq2Ci7rxhRTeYOJu6AJPPwG0ByAqv9bZ8jbrZXHKy+oQ2ffkLd5BjY9QcpbWiE075flfFF8r+mvhXiqFloQiyYcYoMG1ebu0uOG2kCElV6iKiJXg2p+lQoaL+35Wpq40oAl1wYb4Oraq8r9fHWmIUq48G2kR94dK/hgSuilAGG9ThtwgvaDWHfOejK0rAgVMeGWrOr/fpujoK65lsGU5JOeRU5zDEcl76+ggh9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lwgYGUSBB36tAcbuPjAAcA77R4J7SkRed0DTw9p1q7I=; b=Gn94jKDiRwX3icWwj4cUpvGFVU57fwVccczv4POKcLGXIDr8U8lctdI7AmIdVZuNkulSLNyQhrPj3zNsIRGKE2giMx8fI94AzjqUIBOTC0JMPVv16hHdqhDCCoS972axmJ0MkEqeMakjpA/xncTb7dvRsUWewTpXyqcaW9BPSOM5rtRGfc4wPgFmYvaVx+5MWWBjgR8A7IcutBTOptQOWQtV9JYGwNFUiXEZ5vS53UtGjSETN20AKU5yU0OUZThH+o8t808/B95CigvXu8VUsZCWtbwGPamFSGUa5x6db+ojeix8wB4IT/8Nuzp+qBu/nmTK3tZF7JwXPJbw5ggewg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lwgYGUSBB36tAcbuPjAAcA77R4J7SkRed0DTw9p1q7I=; b=VAGB4ONX88vF8qqJz+hAPxN/cyk1e+mPn/QHUZM4C/vP0xDv5PSG5UgmjHG4CMyA0YUUCpklj/KBg/zqtobcqYvh5baAiYIJO+lnbqc6hLQUyC43kkfMXm157JHEOo/BMumpge4k9tX11cY6tOmmJi/MUpbSTcw2ZPwopdnajic= Received: from MW4PR03CA0333.namprd03.prod.outlook.com (2603:10b6:303:dc::8) by DM8PR12MB5480.namprd12.prod.outlook.com (2603:10b6:8:24::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.20; Fri, 7 Oct 2022 17:44:58 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::54) by MW4PR03CA0333.outlook.office365.com (2603:10b6:303:dc::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:44:58 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:44:57 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:56 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 25/35] net/ionic: advertise supported packet types Date: Fri, 7 Oct 2022 10:43:26 -0700 Message-ID: <20221007174336.54354-26-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|DM8PR12MB5480:EE_ X-MS-Office365-Filtering-Correlation-Id: 68a259e6-19ec-47d2-58a6-08daa88ba6f9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: d+nt8725Xg1Mo9spi9Zdv087cHAEiQtEuI4d5t1vpvkbj7EH8bhPwr6P13UuY7c8FyQrA4zwGaIj/5FjXf7ehJ8u5+8/KKDjqurGfwt95HdeUICwjKIsDccPMJseJM8smrZ8cWQtNOMU/LIJ339UNzJnDPjxCj17Z7kqgw/yBUm5ZrovrVcdcdTGzBbt5f/ghuHC9BcjV0ddFiC57jUknSlkftmCMpJ3eC+bMshTtyIyQYj3j+bmAmqINvktOS6OeLqinyb4L+c5ycT29vHLmGoRHkDcLJd/nXUPIfLhUkCDI/F0r97nFM96ZeBaVDApx/UWXE6Pub+4nO3RSksiC7Cl9v6pEcPNQRj8RDx+vIDOn9IuySjqBYnUxSSZ4BhtgP43ayzYee4flEO/xtMvqo8/3iQ3uFoIL7nbwwy+V+CCF/nrvIyD+cpl1LnyJ4yvQyQTHg6FDQU1JVAgomTLuCWDKC+DZowhDfMb83pmzCKkzqD4/kdBtboCWKV5M0JjkYD8rTWqvelFXx0J1rI8OVNzN6knrxXI3iLsIoEwDwk97tU4pJUDhbGxsHqmr8jisk/YTPvdYNTtz8R87o9eJIjssI6q5T22KGgaAIc+zW2bAr/MkGYK3KZcfB2TFOwIVxE9UkFgfokSyLDDG3XPL6fJ7Vpbf7+VqQBAXQh9iRlnZdLVAGv8p91rf4f9yzOJsJiz4p/fzMamXxtjy9XPAstVEox0kxe1JxneJdv9hbzogTAgQCgzIiMOnorQSi8qzr8Sx9+xlnOc1MX+RDwNYzgRw6cmnFMm2N4qQ0c3ej4= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(396003)(376002)(346002)(39860400002)(136003)(451199015)(46966006)(40470700004)(36840700001)(40480700001)(8936002)(86362001)(356005)(478600001)(44832011)(81166007)(2906002)(82310400005)(36756003)(5660300002)(6916009)(2616005)(186003)(1076003)(70206006)(4326008)(82740400003)(26005)(70586007)(8676002)(316002)(47076005)(336012)(16526019)(426003)(41300700001)(6666004)(83380400001)(40460700003)(36860700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:44:57.9907 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 68a259e6-19ec-47d2-58a6-08daa88ba6f9 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR12MB5480 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This improves performance, since clients may be able to skip SW packet classification. Signed-off-by: Andrew Boyer --- doc/guides/rel_notes/release_22_11.rst | 1 + drivers/net/ionic/ionic_ethdev.c | 1 + drivers/net/ionic/ionic_rxtx.c | 19 +++++++++++++++++++ drivers/net/ionic/ionic_rxtx.h | 2 ++ 4 files changed, 23 insertions(+) diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 0c962f9637..5c3bd15e55 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -85,6 +85,7 @@ New Features * Updated to reflect that Pensando has been acquired by AMD. * Enhanced data path to provide substantial performance improvements. * Added support for mbuf fast free. + * Added support for advertising packet types. Removed Items ------------- diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 38241d41ec..39bbe60d79 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -70,6 +70,7 @@ static const struct rte_eth_desc_lim tx_desc_lim_v1 = { static const struct eth_dev_ops ionic_eth_dev_ops = { .dev_infos_get = ionic_dev_info_get, + .dev_supported_ptypes_get = ionic_dev_supported_ptypes_get, .dev_configure = ionic_dev_configure, .mtu_set = ionic_dev_mtu_set, .dev_start = ionic_dev_start, diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 134589b016..24fd8fcf04 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -850,6 +850,25 @@ static const uint32_t ionic_ptype_table[IONIC_RXQ_COMP_PKT_TYPE_MASK] RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP, }; +const uint32_t * +ionic_dev_supported_ptypes_get(struct rte_eth_dev *dev __rte_unused) +{ + /* See ionic_ptype_table[] */ + static const uint32_t ptypes[] = { + RTE_PTYPE_L2_ETHER, + RTE_PTYPE_L2_ETHER_TIMESYNC, + RTE_PTYPE_L2_ETHER_LLDP, + RTE_PTYPE_L2_ETHER_ARP, + RTE_PTYPE_L3_IPV4, + RTE_PTYPE_L3_IPV6, + RTE_PTYPE_L4_TCP, + RTE_PTYPE_L4_UDP, + RTE_PTYPE_UNKNOWN + }; + + return ptypes; +} + /* * Cleans one descriptor. Connects the filled mbufs into a chain. * Does not advance the tail index. diff --git a/drivers/net/ionic/ionic_rxtx.h b/drivers/net/ionic/ionic_rxtx.h index 79ec1112de..de51f21012 100644 --- a/drivers/net/ionic/ionic_rxtx.h +++ b/drivers/net/ionic/ionic_rxtx.h @@ -40,4 +40,6 @@ void ionic_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, void ionic_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, struct rte_eth_txq_info *qinfo); +const uint32_t *ionic_dev_supported_ptypes_get(struct rte_eth_dev *dev); + #endif /* _IONIC_RXTX_H_ */ From patchwork Fri Oct 7 17:43:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117606 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 982B5A04FD; Fri, 7 Oct 2022 19:47:20 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E39C942BF2; Fri, 7 Oct 2022 19:45:04 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2040.outbound.protection.outlook.com [40.107.237.40]) by mails.dpdk.org (Postfix) with ESMTP id 776F542836 for ; Fri, 7 Oct 2022 19:45:02 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lgaxV+LYF5BTw6pfV3Jl1sMU7AELaHsfnn2dL5idvi3r2vnA19Zx9gY0SCmpqOB0FSqvR4sV1HMorGTerf9yLiONX/iGBrWMYo2RJiUJ4EnjS5zwU2BfKEdqPp59NZ7CRvI7Ka860qNxjhXi7msHMIzrJ86fWFMIAEcRzqggvJu9l6dGwsw6HlWwSf0EEfOWDqxfACKYFO38BXKUp+BE7fVZh+sEWIg5jfbrgG2zmyys80Wjx5d01c3BRd2vqISvTHvaubtJCVwm8EUs+jMkzrakVTNItN6A0P26zr0DAVMaQ9UgbpflptLrdwxOMuyOEfz9RmzBkCoQbTs/gLgBwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GkaExYGp1aLDcv+8822zRe/acz2t+cyftVzjwv5dzq0=; b=nG+n7HavRJhESgwjDSI5bo3fzedsQQ12ukwQ5T/XE6Erhog9Xyoj5oOSUiuAq8ONxAENPysGujX9itsmHYC5hs0yCzKEmaZ6qnY8pIZJjYhXvt8bSZrdCZHHdiRBF3IrI7AfGYH0K++vZrlLLntqwX8UIJ6fW4VH118JZ2gcxnmtXawywhITC5OV5pgyKJT9iwK8riANRku81w8+eX6qIpL77EGrARgI0+xqk6GjZ0r2Pj2tf9ixSaCo85iAxkkQky5VH3nD0jLLHVyzW+sSyqc+T3nlmmdMsdHEOdxOmp59GcrC6Z+KUOUF4rxXDXyXimc86+MX6kWKRpApLKhJ0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GkaExYGp1aLDcv+8822zRe/acz2t+cyftVzjwv5dzq0=; b=5TKFMWcVd8ZcFmx+xViCeLKvC70qpmkO5egHjiQR5J4O4NoJ/YwUubg1AuuZn6tW1U2rJbcr+Tha83QxzRT25YKaCIXdqJhLEhepAIl1tqT0sEaKskLPBscBeBMUIwi9/+4t2HVi3nAD6SaXR/gz7tJ9KQodWbwH1/YXCGJPZyc= Received: from MW4PR03CA0347.namprd03.prod.outlook.com (2603:10b6:303:dc::22) by MN0PR12MB6151.namprd12.prod.outlook.com (2603:10b6:208:3c5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Fri, 7 Oct 2022 17:45:00 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::b3) by MW4PR03CA0347.outlook.office365.com (2603:10b6:303:dc::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:45:00 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:00 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:57 -0500 From: Andrew Boyer To: CC: Andrew Boyer , Allen Hubbe Subject: [PATCH 26/35] net/ionic: add Rx descriptor status functions Date: Fri, 7 Oct 2022 10:43:27 -0700 Message-ID: <20221007174336.54354-27-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|MN0PR12MB6151:EE_ X-MS-Office365-Filtering-Correlation-Id: cbca3cc7-cba8-4740-a6cc-08daa88ba831 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cQdInWzmDrzCuQJcjLrQ7BKq8WLdqZw65CxmNBeVWeGUMt8DfoVByEiAldGS7uTFDawHdRbsRLV+fEBCUa071jcV16yVG6uVswBYbTNomiNeu07zmJf0qC4klkBCHuh3Pl7Ahm2AJaL2hjr8Bd9gUNDd40BGEsdLSw/vhTKYDxg2nCT4z3rWKMtgy+3wCtSVcR4P3A3b2loyVCEl+c/1U8oDCSPM+jE580nHWn+uO1uhXHk6b+nssoxSMjBTMqxq2O8Ar/5VYWKdWka5ryvRp1AOJp/yH/YABMHgK3ShuLEmpN6hPssGTVJQ1x3p0haCtjBmwbLjrNI2We77qng2u4ZJLn8znwfhjLLeOzVgtrzPYbVyx9UPpXF4DW5SHhZ5Cl1o8cHlsAZb1Q2TOfnb9f532CpPUdx+poZLFgioCm72plbc3LTxz1uWdK28VqJ6p3a89KJDpcjbRp2iJRVeOAONom/NOxj7Txppj2BpkCtnQWcgr2lJ7MmT7Yuyxrg9BGkD4Bz/HaZNOOXOchleFhDbSVbMfHimBoT4j/wsQ6h47J0u4nugtdfHBulo9UmFz9z/YhtUX2S1X6xzwclyCTrmDrBgaL6qt4w0MgI+ezc2Od8BX9f0Vg3BKBiUI6TnR8cyoulU8n345l6qRnJ0c+RAMmcP+FLfY/4R+O+yo96bMEWrN760pxga4+VH8DV5xHUUfp3X1CCtSoo9Z1YNOOKPSCEOGSdXuTy4s7GEAcaOPHjMj3Nus/453ZXpgPtTlDw/YzmK4DkC+aHPafj446ZYaCADqLV/s0h/6XEPlWQ= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(136003)(396003)(376002)(346002)(39860400002)(451199015)(46966006)(36840700001)(40470700004)(26005)(82740400003)(8676002)(6666004)(40460700003)(356005)(70206006)(4326008)(70586007)(81166007)(478600001)(36756003)(36860700001)(2616005)(86362001)(1076003)(316002)(54906003)(82310400005)(336012)(186003)(6916009)(47076005)(16526019)(426003)(2906002)(8936002)(41300700001)(40480700001)(44832011)(5660300002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:00.0374 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cbca3cc7-cba8-4740-a6cc-08daa88ba831 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6151 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org These may be useful for clients. Signed-off-by: Andrew Boyer Signed-off-by: Allen Hubbe --- doc/guides/nics/features/ionic.ini | 1 + doc/guides/rel_notes/release_22_11.rst | 1 + drivers/net/ionic/ionic_ethdev.c | 2 ++ drivers/net/ionic/ionic_rxtx.c | 39 ++++++++++++++++++++++++++ drivers/net/ionic/ionic_rxtx.h | 2 ++ 5 files changed, 45 insertions(+) diff --git a/doc/guides/nics/features/ionic.ini b/doc/guides/nics/features/ionic.ini index 77947bfd22..e01ba87135 100644 --- a/doc/guides/nics/features/ionic.ini +++ b/doc/guides/nics/features/ionic.ini @@ -27,6 +27,7 @@ CRC offload = Y L3 checksum offload = Y L4 checksum offload = Y Packet type parsing = Y +Rx descriptor status = Y Basic stats = Y Extended stats = Y Stats per queue = Y diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 5c3bd15e55..d2e82979e6 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -86,6 +86,7 @@ New Features * Enhanced data path to provide substantial performance improvements. * Added support for mbuf fast free. * Added support for advertising packet types. + * Added support for descriptor status functions. Removed Items ------------- diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 39bbe60d79..7ac7006d88 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -984,6 +984,8 @@ eth_ionic_dev_init(struct rte_eth_dev *eth_dev, void *init_params) eth_dev->tx_pkt_burst = &ionic_xmit_pkts; eth_dev->tx_pkt_prepare = &ionic_prep_pkts; + eth_dev->rx_descriptor_status = ionic_dev_rx_descriptor_status; + /* Multi-process not supported, primary does initialization anyway */ if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 24fd8fcf04..64cbbd9815 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -1235,3 +1235,42 @@ ionic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, return rx_svc.nb_rx; } + +int +ionic_dev_rx_descriptor_status(void *rx_queue, uint16_t offset) +{ + struct ionic_rx_qcq *rxq = rx_queue; + struct ionic_qcq *qcq = &rxq->qcq; + struct ionic_rxq_comp *cq_desc; + uint16_t mask, head, tail, pos; + bool done_color; + + mask = qcq->q.size_mask; + + /* offset must be within the size of the ring */ + if (offset > mask) + return -EINVAL; + + head = qcq->q.head_idx; + tail = qcq->q.tail_idx; + + /* offset is beyond what is posted */ + if (offset >= ((head - tail) & mask)) + return RTE_ETH_RX_DESC_UNAVAIL; + + /* interested in this absolute position in the rxq */ + pos = (tail + offset) & mask; + + /* rx cq position == rx q position */ + cq_desc = qcq->cq.base; + cq_desc = &cq_desc[pos]; + + /* expected done color at this position */ + done_color = qcq->cq.done_color != (pos < tail); + + /* has the hw indicated the done color at this position? */ + if (color_match(cq_desc->pkt_type_color, done_color)) + return RTE_ETH_RX_DESC_DONE; + + return RTE_ETH_RX_DESC_AVAIL; +} diff --git a/drivers/net/ionic/ionic_rxtx.h b/drivers/net/ionic/ionic_rxtx.h index de51f21012..465001a063 100644 --- a/drivers/net/ionic/ionic_rxtx.h +++ b/drivers/net/ionic/ionic_rxtx.h @@ -40,6 +40,8 @@ void ionic_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, void ionic_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, struct rte_eth_txq_info *qinfo); +int ionic_dev_rx_descriptor_status(void *rx_queue, uint16_t offset); + const uint32_t *ionic_dev_supported_ptypes_get(struct rte_eth_dev *dev); #endif /* _IONIC_RXTX_H_ */ From patchwork Fri Oct 7 17:43:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117607 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8234FA04FD; Fri, 7 Oct 2022 19:47:26 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C9E0C42BED; Fri, 7 Oct 2022 19:45:05 +0200 (CEST) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2042.outbound.protection.outlook.com [40.107.212.42]) by mails.dpdk.org (Postfix) with ESMTP id BF74642BE8 for ; Fri, 7 Oct 2022 19:45:03 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MDlae37PXFhf70VziHkgQIZRvtpUo1qR5NDw5teU69C6kq4VhVaQ1rtdqDSsU+quRTLYQROFDHH7YJlmim+h0LkKlu/5oI92uQLzj9nu/GHxFfhHiS2TYixBiXRmhUPoXvbpviV12HyIl5D+M+nftUROQQEbenfxMGDj9mVYpHXc2kL8DAS7wEPmukLM+INUKnTXX65K+M8CvydJR1qtNSy/edPYs9UPRKRBJHDvIYQl9L6wqmu2uNj5qxSAypOKwYDe4HUSetqYBhyAoF8GfYByHhBFHkG2cdfTP+bCUb/96xeXFmK9c8+oI/bMymv8wZ/Jd+XnufbfZkiOtYMMFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oCZ7Asm9RQ8f2c4SY3RzcXiJ/Yv2z9cHTmx2X5dMTrY=; b=IwtxO/FNWI2DZINR7Cn6K7yHl5miIkbKYF9SH8EdEwsyKm2FWAhed9BgKEhYli4h4ZLCDEsrNpFDoneDefvfideuKIJaL3mfdf/3x5HYzesYQHr/Nls0uQOmqs9k/AC9yVT9nJ7MdxRo+1Vvhij7+dfWOE72noB9EJum46c9RTTgs+yAGUiChWPh3HjjviCpA86q+hz5KeQOeXrm6tOPHEW8LLJ666MF6oDOTuDkVRNB5+RZOreeQr0Og+IHv4G7j9L4JEJksDdis9d2/i4X+HNxPKoL6LBG+SpggsuztUjXpnB2cxXt2Wu7QxloTRtHD8Lehu+KpCsvLt/ogk4+PQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oCZ7Asm9RQ8f2c4SY3RzcXiJ/Yv2z9cHTmx2X5dMTrY=; b=yW8O2ZkhmaN8CVLVquoZONKVdh6XrPEDtb0D+ql5gquW9676l+PcvJSdV4oiFqCAmWvlelW2J8ibV627MgnF34W5pJPc+ELvLmX/X+dFLe4KdXaUGn2MMZS11gmNV4PGw1reYvDvmovel0qBgGUY4PHlqYoNNlCXj8354WyDRoM= Received: from MW4PR03CA0342.namprd03.prod.outlook.com (2603:10b6:303:dc::17) by CY8PR12MB7564.namprd12.prod.outlook.com (2603:10b6:930:97::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.26; Fri, 7 Oct 2022 17:45:01 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::4) by MW4PR03CA0342.outlook.office365.com (2603:10b6:303:dc::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:45:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:01 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:44:58 -0500 From: Andrew Boyer To: CC: Andrew Boyer , Allen Hubbe Subject: [PATCH 27/35] net/ionic: add Tx descriptor status function Date: Fri, 7 Oct 2022 10:43:28 -0700 Message-ID: <20221007174336.54354-28-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|CY8PR12MB7564:EE_ X-MS-Office365-Filtering-Correlation-Id: 58321e1d-62f5-46bc-c3a7-08daa88ba8d3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aLIG4Sljy46gVc1LtSTWwsOfMwNiJ29oEqwm92BOMphjUObMBbOB032bbTKU1/ZTQ7f8cq3uZ6U3ljdovWKtLpEsQhldQ4hlKNdo+WtShrYXSgEv+TxFq0tZLGTQQpcOc6u5eM1GEnEx8dBggiWqWJmiBbH8CNe8OsQwJBxQ7RS8l2B+2CQOngQrcwCW7mSaxlnIY+7Kp5hSqJ1EP3IBx1W7DjSEFr8FLCVdeh9VwzEyDQ3FTpTfZhQ+dZnBK85I+PgTiqmb2Q6oBv4dkIb1oINmG3xNkbTUwIh9COSAtfCg23Zn+76nwL4m3AT0z8henf9EbtCQ6CuLMBDmisT6jsh2dMcW8zHzfvaiG7AicvaRi1qEIwHaXemfktipwacfZuy64ntz7Mm2lHUo2JWz1AKJFVo2Q57Y7tubexw3t+W4F5cDJdW8YFz5o+aMBCNPmg6hO3CnZiFDPpVUp+W5In2Q8wjuOypYJUFEDiXE3Vd4E5t48A1S87pVsGHUe2Gk8YMSqlT0JnzEk+Mjc6Cve8oY2MvrZskwFxMHBbgSLDH9P+dk6m5piFHpsh37tf2QL9UEbbd6jZIYAYndKZn5Ff/8hol6mvbm+xg7VlzLs006ASLd/Vlu7ucDeERcYiG+OZV/aQiqdfr7/R9mCTN+b83pRg7Iq6ijxItVuY4qV4xVwmX4XKgTz+HWZBcQPMqW35PBDx9rEPVhgLcLgI9qnBQaFAhMWm+/lKHewEbgAq7ihPnuQAycroIcd+xyorsqHFqm1A3+cxHlrp1EfMYbUyEpL4dQyBByEBj7yqKWrN4= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(376002)(396003)(39860400002)(346002)(136003)(451199015)(40470700004)(36840700001)(46966006)(8676002)(26005)(8936002)(478600001)(54906003)(6666004)(70586007)(2906002)(41300700001)(5660300002)(2616005)(4326008)(44832011)(16526019)(82310400005)(1076003)(82740400003)(47076005)(6916009)(36756003)(186003)(40460700003)(336012)(36860700001)(426003)(70206006)(81166007)(86362001)(316002)(356005)(40480700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:01.0998 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 58321e1d-62f5-46bc-c3a7-08daa88ba8d3 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7564 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This may be useful for clients. Signed-off-by: Andrew Boyer Signed-off-by: Allen Hubbe --- doc/guides/nics/features/ionic.ini | 1 + drivers/net/ionic/ionic_ethdev.c | 1 + drivers/net/ionic/ionic_rxtx.c | 51 ++++++++++++++++++++++++++++++ drivers/net/ionic/ionic_rxtx.h | 1 + 4 files changed, 54 insertions(+) diff --git a/doc/guides/nics/features/ionic.ini b/doc/guides/nics/features/ionic.ini index e01ba87135..af0fc5462a 100644 --- a/doc/guides/nics/features/ionic.ini +++ b/doc/guides/nics/features/ionic.ini @@ -28,6 +28,7 @@ L3 checksum offload = Y L4 checksum offload = Y Packet type parsing = Y Rx descriptor status = Y +Tx descriptor status = Y Basic stats = Y Extended stats = Y Stats per queue = Y diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 7ac7006d88..cf74600f22 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -985,6 +985,7 @@ eth_ionic_dev_init(struct rte_eth_dev *eth_dev, void *init_params) eth_dev->tx_pkt_prepare = &ionic_prep_pkts; eth_dev->rx_descriptor_status = ionic_dev_rx_descriptor_status; + eth_dev->tx_descriptor_status = ionic_dev_tx_descriptor_status; /* Multi-process not supported, primary does initialization anyway */ if (rte_eal_process_type() != RTE_PROC_PRIMARY) diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 64cbbd9815..4f84fa7df1 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -1274,3 +1274,54 @@ ionic_dev_rx_descriptor_status(void *rx_queue, uint16_t offset) return RTE_ETH_RX_DESC_AVAIL; } + +int +ionic_dev_tx_descriptor_status(void *tx_queue, uint16_t offset) +{ + struct ionic_tx_qcq *txq = tx_queue; + struct ionic_qcq *qcq = &txq->qcq; + struct ionic_txq_comp *cq_desc; + uint16_t mask, head, tail, pos, cq_pos; + bool done_color; + + mask = qcq->q.size_mask; + + /* offset must be within the size of the ring */ + if (offset > mask) + return -EINVAL; + + head = qcq->q.head_idx; + tail = qcq->q.tail_idx; + + /* offset is beyond what is posted */ + if (offset >= ((head - tail) & mask)) + return RTE_ETH_TX_DESC_DONE; + + /* interested in this absolute position in the txq */ + pos = (tail + offset) & mask; + + /* tx cq position != tx q position, need to walk cq */ + cq_pos = qcq->cq.tail_idx; + cq_desc = qcq->cq.base; + cq_desc = &cq_desc[cq_pos]; + + /* how far behind is pos from head? */ + offset = (head - pos) & mask; + + /* walk cq descriptors that match the expected done color */ + done_color = qcq->cq.done_color; + while (color_match(cq_desc->color, done_color)) { + /* is comp index no further behind than pos? */ + tail = rte_cpu_to_le_16(cq_desc->comp_index); + if (((head - tail) & mask) <= offset) + return RTE_ETH_TX_DESC_DONE; + + cq_pos = (cq_pos + 1) & mask; + cq_desc = qcq->cq.base; + cq_desc = &cq_desc[cq_pos]; + + done_color = done_color != (cq_pos == 0); + } + + return RTE_ETH_TX_DESC_FULL; +} diff --git a/drivers/net/ionic/ionic_rxtx.h b/drivers/net/ionic/ionic_rxtx.h index 465001a063..f950d6472c 100644 --- a/drivers/net/ionic/ionic_rxtx.h +++ b/drivers/net/ionic/ionic_rxtx.h @@ -41,6 +41,7 @@ void ionic_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, struct rte_eth_txq_info *qinfo); int ionic_dev_rx_descriptor_status(void *rx_queue, uint16_t offset); +int ionic_dev_tx_descriptor_status(void *tx_queue, uint16_t offset); const uint32_t *ionic_dev_supported_ptypes_get(struct rte_eth_dev *dev); From patchwork Fri Oct 7 17:43:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117608 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5A7E3A04FD; Fri, 7 Oct 2022 19:47:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3F63042C06; Fri, 7 Oct 2022 19:45:11 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2061.outbound.protection.outlook.com [40.107.244.61]) by mails.dpdk.org (Postfix) with ESMTP id 9DE8242BDA for ; Fri, 7 Oct 2022 19:45:08 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b3kujDa1LY25hk2k6zmTWDp2Y93YS+fUIp+pY4xneOUAq6Ss2WJeBR3CioMoXA/EZ5NkP6aCmQpRYDWsmF8VwQMwqXm9L48xxhhQH0FQwOzkOHOdJiGHqrr68Hz8eD7N0CEptz5Yh3C/n5tytoF6EbYW8vECLx5wJNMXWHlJrNHZuswsSWWZtDliBpaFP3tBqqHCxASdHFzHKIDWBkF2KYlWwVGiR3O18VPz9A1McZgwbhtycahduJX2UjBgFNCWcsezXuKDpmPceJ23ZlLgRezhpGH3gk5Jj6vYSvLu0H9835F6V/NFfvH20W+mqsfY1UOI5H/vFftPNZRrFMFK5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=igqJeGQl/hO6E+Zt6A9Dhwam9JlCEQoKVnirkB4bhww=; b=aUWOg6vE5P/f8Q61tWBYhQL2hc5McUR3f9jHeZUxX01+Cy5pz6wVKAWMBnkUPTNrOyuOjq6Oc6YvVvq/XLpwkljM4s3MJseuJUJVxGZcUH+bI6TwAaxumDU408+Cf269YDsDrSUAoDyRANnmIs91W2/8hgSuW0GtJt1NvSF5LBqHnGEP7fKbaM7SPE2mSSVzAIzxe449ytzkdTj+G4LD/l6jGvrtAA1ewLruu1ot0nE19ysLB3Pk7WdRbGainUPWuUnO9XGePF3MHt3tVcJClviNwod2Ed8sCWlcIJ2BLhOaduzvuA1Ir5iAFLqhdE9KtnDXYk7GMtReZdgOBLjI4w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=igqJeGQl/hO6E+Zt6A9Dhwam9JlCEQoKVnirkB4bhww=; b=ZPX34y0SgxI2fRWluPeFrZSaVBtFOVEQO+6ruYLXgJj77XtTlck/j8iEvr0bl5JLQ5LZ5ovdod52EWxSqIRCcPUhw28f3SCrCPBs9tVr7lwOBg7vwLMozi0m5OGFlc0LGtk6PrlyxIW4N/O2uHqYTY7fZNbpBFFnSnq4oOnYS5o= Received: from MW4PR03CA0334.namprd03.prod.outlook.com (2603:10b6:303:dc::9) by DS0PR12MB6606.namprd12.prod.outlook.com (2603:10b6:8:d2::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Fri, 7 Oct 2022 17:45:04 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::59) by MW4PR03CA0334.outlook.office365.com (2603:10b6:303:dc::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:45:04 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:03 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:45:00 -0500 From: Andrew Boyer To: CC: Andrew Boyer , Neel Patel Subject: [PATCH 28/35] net/ionic: add Q-in-CMB option controlled by devarg Date: Fri, 7 Oct 2022 10:43:29 -0700 Message-ID: <20221007174336.54354-29-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|DS0PR12MB6606:EE_ X-MS-Office365-Filtering-Correlation-Id: 30fc1523-70e4-4683-490a-08daa88baa70 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VWY+0yAX2hFNAEXzrEYanhxrdfndUne6asoDvmnjaqDwpG4iWYG/11wXIaKwsJQ+F5jpBgf+wdXvyS0J0IuK0AKS3NWkTQu8s8skhKspEqMVB6uxlfUFT9DpZZuDGhiWT7pNf6hwqIrwWx16RgLlrtWd8cyhBZIz9MBA7fIgbPVXOn7ugyqZY75eiz0VKrNFFr4qiswuHFiOvABzB56wtMpCcX8b8ssyjnBCGzto5tcDDO380GQmoLuOQgtWuxlP33/x/sy8NERcTWjlv/sVPahji7eScWcYlXfN7GiZuLaP+EglCjxSogDMwWPdkNtwzMOyrXjpnYjxTvYi/YZolvcFEWO38pthGXk+b0I9D/8nlbmhhBwUXz0FKCo+kPtos9H1Bka79X+4aA9IdCwO6DqtszHbw2rG59dpq0qRJYmycY9dJDEc+Bwn7eHvgnjpQXR/8fPtdjPNRlH/6YSpBZAsKOYA6hNLOTxEDZBQQeggVeKLWC9LKrG79JDvwk0nAH7oHTstPyqPRTHkAHRR/vjKHqifhDjbFziO5dLVnvBzGdDwhvKTkJg+19qbJrcj1BbVvB/ZWHo7lr3rY2WmjlOG/9THJpRbIhSR04qan8rfKpBexn6ZKrk6ronb8CdhMBfZQR1shXLLvaLlI1EbAw6RbJcBuRGjOU9n97LDGG/WZ+HxNgeEwqV/Nb24XHP59p7/wZYUKHvz3jv8nXaAx5n6NYanRRCpB9cg4JH+1pwCmVaijc2rbGn8Q+KE+D7sukia32imi8lgmrbNSB2iBMmuV/b9bWsuoV87az3WMgg9AYMjgILVC+GzLX4lbqii X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(136003)(396003)(376002)(346002)(451199015)(36840700001)(40470700004)(46966006)(4326008)(6916009)(356005)(2616005)(83380400001)(86362001)(5660300002)(16526019)(1076003)(82740400003)(336012)(36860700001)(81166007)(30864003)(186003)(70206006)(2906002)(44832011)(8936002)(40480700001)(426003)(8676002)(54906003)(47076005)(40460700003)(70586007)(6666004)(478600001)(41300700001)(82310400005)(26005)(316002)(36756003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:03.8033 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 30fc1523-70e4-4683-490a-08daa88baa70 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6606 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org When 'ionic_cmb' is set to '1', queue memory will be allocated from the device's onboard memory (Controller Memory Buffer). In some configurations, this will dramatically reduce packet latency and increase PPS. Add the WC_ACTIVATE flag to the PCI driver flags. Write combining must be enabled to achieve the maximum PPS. When the queue is in the CMB, descriptors cannot be prefetched. Signed-off-by: Andrew Boyer Signed-off-by: Neel Patel --- doc/guides/nics/ionic.rst | 12 ++++++ doc/guides/rel_notes/release_22_11.rst | 1 + drivers/net/ionic/ionic.h | 5 +++ drivers/net/ionic/ionic_dev.h | 3 ++ drivers/net/ionic/ionic_dev_pci.c | 60 +++++++++++++++++++++++++- drivers/net/ionic/ionic_ethdev.c | 9 ++++ drivers/net/ionic/ionic_lif.c | 38 ++++++++++++++++ drivers/net/ionic/ionic_lif.h | 2 + drivers/net/ionic/ionic_rxtx.c | 9 ++-- 9 files changed, 135 insertions(+), 4 deletions(-) diff --git a/doc/guides/nics/ionic.rst b/doc/guides/nics/ionic.rst index 24b57fc0f5..2713771e4f 100644 --- a/doc/guides/nics/ionic.rst +++ b/doc/guides/nics/ionic.rst @@ -32,6 +32,18 @@ The ionic PMD requires firmware which supports 16 segment transmit SGLs. This support was added prior to version 1.0. For help upgrading older versions, please contact AMD Pensando support. +Runtime Configuration +--------------------- + +- ``Queue in CMB support`` (default ``0``) + + Queue memory can be allocated from the Controller Memory Buffer (CMB) using + the ``ionic_cmb`` ``devargs`` parameter. + + For example:: + + -a 0000:b5:00.0,ionic_cmb=1 + Building DPDK ------------- diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index d2e82979e6..974400d0a6 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -87,6 +87,7 @@ New Features * Added support for mbuf fast free. * Added support for advertising packet types. * Added support for descriptor status functions. + * Added Q-in-CMB feature controlled by devarg ionic_cmb. Removed Items ------------- diff --git a/drivers/net/ionic/ionic.h b/drivers/net/ionic/ionic.h index 6bfab623f7..1a38e01bc9 100644 --- a/drivers/net/ionic/ionic.h +++ b/drivers/net/ionic/ionic.h @@ -24,6 +24,9 @@ #define IONIC_DEV_ID_ETH_VF 0x1003 #define IONIC_DEV_ID_ETH_MGMT 0x1004 +/* Devargs */ +#define PMD_IONIC_CMB_KVARG "ionic_cmb" + enum ionic_mac_type { IONIC_MAC_UNKNOWN = 0, IONIC_MAC_CAPRI, @@ -62,9 +65,11 @@ struct ionic_adapter { uint32_t link_speed; uint32_t nintrs; bool intrs[IONIC_INTR_CTRL_REGS_MAX]; + bool q_in_cmb; bool link_up; char fw_version[IONIC_DEVINFO_FWVERS_BUFLEN]; void *bus_dev; + uint64_t cmb_offset; }; /** ionic_admin_ctx - Admin command context. diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 6a80ebc71b..6b0540f615 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -176,9 +176,12 @@ struct ionic_adapter; struct ionic_qcq; struct rte_mempool; struct rte_eth_dev; +struct rte_devargs; struct ionic_dev_intf { int (*setup)(struct ionic_adapter *adapter); + int (*devargs)(struct ionic_adapter *adapter, + struct rte_devargs *devargs); void (*copy_bus_info)(struct ionic_adapter *adapter, struct rte_eth_dev *eth_dev); int (*configure_intr)(struct ionic_adapter *adapter); diff --git a/drivers/net/ionic/ionic_dev_pci.c b/drivers/net/ionic/ionic_dev_pci.c index 1735fa9b17..6c0cf18feb 100644 --- a/drivers/net/ionic/ionic_dev_pci.c +++ b/drivers/net/ionic/ionic_dev_pci.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "ionic.h" #include "ionic_if.h" @@ -92,6 +93,58 @@ ionic_pci_setup(struct ionic_adapter *adapter) return 0; } +const char *ionic_pci_devargs_arr[] = { + PMD_IONIC_CMB_KVARG, + NULL, +}; + +static int +ionic_pci_devarg_cmb(const char *key __rte_unused, const char *val, void *arg) +{ + struct ionic_adapter *adapter = arg; + + if (!strcmp(val, "1")) { + IONIC_PRINT(NOTICE, "%s enabled", PMD_IONIC_CMB_KVARG); + adapter->q_in_cmb = true; + } else if (!strcmp(val, "0")) { + IONIC_PRINT(DEBUG, "%s disabled (default)", + PMD_IONIC_CMB_KVARG); + } else { + IONIC_PRINT(ERR, "%s=%s invalid, use 1 or 0", + PMD_IONIC_CMB_KVARG, val); + return -ERANGE; + } + + return 0; +} + +static int +ionic_pci_devargs(struct ionic_adapter *adapter, struct rte_devargs *devargs) +{ + struct rte_kvargs *kvlist; + int err = 0; + + if (!devargs) + return 0; + + kvlist = rte_kvargs_parse(devargs->args, ionic_pci_devargs_arr); + if (!kvlist) { + IONIC_PRINT(ERR, "Couldn't parse args '%s'", devargs->args); + return -EINVAL; + } + + if (rte_kvargs_count(kvlist, PMD_IONIC_CMB_KVARG) == 1) { + err = rte_kvargs_process(kvlist, PMD_IONIC_CMB_KVARG, + ionic_pci_devarg_cmb, adapter); + if (err < 0) + goto free_kvlist; + } + +free_kvlist: + rte_kvargs_free(kvlist); + return err; +} + static void ionic_pci_copy_bus_info(struct ionic_adapter *adapter, struct rte_eth_dev *eth_dev) @@ -160,6 +213,7 @@ ionic_pci_unconfigure_intr(struct ionic_adapter *adapter) static const struct ionic_dev_intf ionic_pci_intf = { .setup = ionic_pci_setup, + .devargs = ionic_pci_devargs, .copy_bus_info = ionic_pci_copy_bus_info, .configure_intr = ionic_pci_configure_intr, .unconfigure_intr = ionic_pci_unconfigure_intr, @@ -206,7 +260,8 @@ eth_ionic_pci_remove(struct rte_pci_device *pci_dev) static struct rte_pci_driver rte_pci_ionic_pmd = { .id_table = pci_id_ionic_map, - .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | + RTE_PCI_DRV_WC_ACTIVATE, .probe = eth_ionic_pci_probe, .remove = eth_ionic_pci_remove, }; @@ -214,3 +269,6 @@ static struct rte_pci_driver rte_pci_ionic_pmd = { RTE_PMD_REGISTER_PCI(net_ionic_pci, rte_pci_ionic_pmd); RTE_PMD_REGISTER_PCI_TABLE(net_ionic_pci, pci_id_ionic_map); RTE_PMD_REGISTER_KMOD_DEP(net_ionic_pci, "* igb_uio | uio_pci_generic | vfio-pci"); +RTE_PMD_REGISTER_PARAM_STRING(net_ionic_pci, + PMD_IONIC_CMB_KVARG "=<0|1>" +); diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index cf74600f22..a6e7c7fa9f 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -1118,6 +1118,15 @@ eth_ionic_dev_probe(void *bus_dev, struct rte_device *rte_dev, adapter->intf = intf; + /* Parse device arguments */ + if (adapter->intf->devargs) { + err = (*adapter->intf->devargs)(adapter, rte_dev->devargs); + if (err) { + IONIC_PRINT(ERR, "Cannot parse device arguments"); + goto err_free_adapter; + } + } + /* Discover ionic dev resources */ err = ionic_setup(adapter); if (err) { diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index ac9b69fc70..bb107b30e9 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -660,6 +660,21 @@ ionic_qcq_alloc(struct ionic_lif *lif, ionic_q_sg_map(&new->q, sg_base, sg_base_pa); } + if (flags & IONIC_QCQ_F_CMB) { + /* alloc descriptor ring from nic memory */ + if (lif->adapter->cmb_offset + q_size > + lif->adapter->bars.bar[2].len) { + IONIC_PRINT(ERR, "Cannot reserve queue from NIC mem"); + return -ENOMEM; + } + q_base = (void *) + ((uintptr_t)lif->adapter->bars.bar[2].vaddr + + (uintptr_t)lif->adapter->cmb_offset); + /* CMB PA is a relative address */ + q_base_pa = lif->adapter->cmb_offset; + lif->adapter->cmb_offset += q_size; + } + IONIC_PRINT(DEBUG, "Q-Base-PA = %#jx CQ-Base-PA = %#jx " "SG-base-PA = %#jx", q_base_pa, cq_base_pa, sg_base_pa); @@ -744,6 +759,8 @@ ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, int err; flags = IONIC_QCQ_F_SG; + if (lif->state & IONIC_LIF_F_Q_IN_CMB) + flags |= IONIC_QCQ_F_CMB; seg_size = rte_pktmbuf_data_room_size(mb_pool); @@ -806,6 +823,8 @@ ionic_tx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, int err; flags = IONIC_QCQ_F_SG; + if (lif->state & IONIC_LIF_F_Q_IN_CMB) + flags |= IONIC_QCQ_F_CMB; num_segs_fw = IONIC_TX_MAX_SG_ELEMS_V1 + 1; @@ -994,6 +1013,19 @@ ionic_lif_alloc(struct ionic_lif *lif) return -ENXIO; } + if (adapter->q_in_cmb) { + if (adapter->bars.num_bars >= 3 && + lif->qtype_info[IONIC_QTYPE_RXQ].version >= 2 && + lif->qtype_info[IONIC_QTYPE_TXQ].version >= 3) { + IONIC_PRINT(INFO, "%s enabled on %s", + PMD_IONIC_CMB_KVARG, lif->name); + lif->state |= IONIC_LIF_F_Q_IN_CMB; + } else { + IONIC_PRINT(ERR, "%s not supported on %s, disabled", + PMD_IONIC_CMB_KVARG, lif->name); + } + } + IONIC_PRINT(DEBUG, "Allocating Lif Info"); rte_spinlock_init(&lif->adminq_lock); @@ -1537,6 +1569,9 @@ ionic_lif_txq_init(struct ionic_tx_qcq *txq) }; int err; + if (txq->flags & IONIC_QCQ_F_CMB) + ctx.cmd.q_init.flags |= rte_cpu_to_le_16(IONIC_QINIT_F_CMB); + IONIC_PRINT(DEBUG, "txq_init.index %d", q->index); IONIC_PRINT(DEBUG, "txq_init.ring_base 0x%" PRIx64 "", q->base_pa); IONIC_PRINT(DEBUG, "txq_init.ring_size %d", @@ -1588,6 +1623,9 @@ ionic_lif_rxq_init(struct ionic_rx_qcq *rxq) }; int err; + if (rxq->flags & IONIC_QCQ_F_CMB) + ctx.cmd.q_init.flags |= rte_cpu_to_le_16(IONIC_QINIT_F_CMB); + IONIC_PRINT(DEBUG, "rxq_init.index %d", q->index); IONIC_PRINT(DEBUG, "rxq_init.ring_base 0x%" PRIx64 "", q->base_pa); IONIC_PRINT(DEBUG, "rxq_init.ring_size %d", diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index 5231909213..ec9cb24a61 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -49,6 +49,7 @@ struct ionic_rx_stats { #define IONIC_QCQ_F_INITED BIT(0) #define IONIC_QCQ_F_SG BIT(1) #define IONIC_QCQ_F_DEFERRED BIT(4) +#define IONIC_QCQ_F_CMB BIT(5) #define IONIC_QCQ_F_CSUM_L3 BIT(7) #define IONIC_QCQ_F_CSUM_UDP BIT(8) #define IONIC_QCQ_F_CSUM_TCP BIT(9) @@ -126,6 +127,7 @@ struct ionic_qtype_info { #define IONIC_LIF_F_LINK_CHECK_NEEDED BIT(1) #define IONIC_LIF_F_UP BIT(2) #define IONIC_LIF_F_FW_RESET BIT(3) +#define IONIC_LIF_F_Q_IN_CMB BIT(4) #define IONIC_LIF_NAME_MAX_SZ (32) diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 4f84fa7df1..fceb8333f6 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -600,7 +600,8 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, int err; struct ionic_txq_desc *desc_base = q->base; - rte_prefetch0(&desc_base[q->head_idx]); + if (!(txq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&desc_base[q->head_idx]); rte_prefetch0(IONIC_INFO_PTR(q, q->head_idx)); if (tx_pkts) { @@ -619,7 +620,8 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, while (nb_tx < nb_pkts) { uint16_t next_idx = Q_NEXT_TO_POST(q, 1); - rte_prefetch0(&desc_base[next_idx]); + if (!(txq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&desc_base[next_idx]); rte_prefetch0(IONIC_INFO_PTR(q, next_idx)); if (nb_tx + 1 < nb_pkts) { @@ -1172,7 +1174,8 @@ ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, /* Prefetch 4 x 16B comp */ rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); /* Prefetch 4 x 16B descriptors */ - rte_prefetch0(&q_desc_base[Q_NEXT_TO_POST(q, 4)]); + if (!(rxq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&q_desc_base[Q_NEXT_TO_POST(q, 4)]); ionic_rx_clean_one(rxq, cq_desc, rx_svc); From patchwork Fri Oct 7 17:43:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117610 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7DCF1A04FD; Fri, 7 Oct 2022 19:47:47 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 12C9D40DFB; Fri, 7 Oct 2022 19:45:13 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2057.outbound.protection.outlook.com [40.107.92.57]) by mails.dpdk.org (Postfix) with ESMTP id 4C7B742BDA for ; Fri, 7 Oct 2022 19:45:09 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oUN2qSCg+xQGmUkikNl+a+aownaTiqoFht3eAZvBxvJPWF7wQk+Z3DeZ01iygGVKqcWADwU43tza3IUQIoEtkZ0Rqg2gSbggimpwBj+8ZX2azwAV4Apt1tvmOxem+Oizj/K6FcRdOcOqFU3Oi4iv3ECeHTbqCGEytKFNf7G9dLzvT7DIf11Ww3WHXdsIDOY0/hjxKYrHB8jYA0lvvcDAdre30sKddEYzVx2PYXvc0Z/W7wLvPHuo9Ghyk3LZhk/y4DgiBmUv8H4Wka7prkSrRlucQ4ESo9WlXIC+16moOVhp7MAA1JwtwVo6xd6+EpvUdnTCkPIS5lXZXFkcdDetgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uyKiizAlAuKHt75h1rAq4qKYa0RquoHsmzrSSa+9dds=; b=RBkUfqIWu6/ytyfImYboB17e8MwjE683c4Jaru3IdIqgHu2mfj1CWO5AB42V9B9txOjhiM0UaDja9ubh/DC5v8ta+wiGb32jxDpu6gbjI7dgleBSd4gQZzB0ukoBc87x8EQGJOgyHx2clmIBMxDxU1uniZP2JHZDP3iOcF1eEczT7Scir+2K71XpkglDuogamWsHUQ3Ww8yx91pYbRv5pEpwxgwNerp3BNl1I43UCKry9pXg2I9IAzokpC8YT7IDXWW53GEQXzTdC/3Xa6y60UndUhOd1iT43JPgRqNHrJqe2Ch0I6iEfGYdA0a41BvdrXSHH5KtRliCfq7new3EGA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uyKiizAlAuKHt75h1rAq4qKYa0RquoHsmzrSSa+9dds=; b=uEwytTTeqIA7SbKgY5a/4PSpR8jYVx32xGwjM9c3jOjvZhQ2lnn2RXbpW0Gcc3Bm6NYzsy2g1vgtwOKgBbhKFBAXsaXV1JzNtb+/IqTsW0WLfx2UIXayJlVySuDuWsWOP4nkKx72fiK+zgELVIOz0oGZP8jcWP/EBpbrw/41oWk= Received: from MW4PR03CA0350.namprd03.prod.outlook.com (2603:10b6:303:dc::25) by PH7PR12MB6468.namprd12.prod.outlook.com (2603:10b6:510:1f4::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.19; Fri, 7 Oct 2022 17:45:05 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::7) by MW4PR03CA0350.outlook.office365.com (2603:10b6:303:dc::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15 via Frontend Transport; Fri, 7 Oct 2022 17:45:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:05 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:45:01 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 29/35] net/ionic: update array allocations to use calloc Date: Fri, 7 Oct 2022 10:43:30 -0700 Message-ID: <20221007174336.54354-30-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|PH7PR12MB6468:EE_ X-MS-Office365-Filtering-Correlation-Id: e944b738-14af-4223-3cf6-08daa88bab2a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DpEPaqCm2CNBBsXEnwszguCWyMOmyXYp+0x00qAcq1CtocRLreZqioYzMCW8edxijR3DstmJ25eWO/HnmCxCdMjToKkB4BWAyMYbvSWgU56sb8HCKxRanimOkGTu4OW1gZyvlVF5+I8RnYnHzticRcNSuhJ4q1fa6OTQEZhti2xelI6UNcxFkeeD3/vEcgNRnQ4eVXQpt2TYIitCvBsx/C87nYgbdDPj/2WL//w6vv94m13++MQbLiMWwg92s1RPFtKl36f3Uq4uO4U+AdUKjZEHQFowPuCN/VeVbu95SwA/NvmZUpAji7fPrBWEO+ae/FhEkLqSnmZNm0re/XcNNrW8jFWwu1y0hbpCQdpg2hyqIvJVWrzX32n6T/RQEzAv+r5xvhHPwS8I8MF2ToZF0A42Rb6fJ+p58euUQl2/0DwFUmifD551N14/3nbTq96NwRVU2dzsyMOElu0H1Fki2XOMl3B1W1u7+WdgK5ppH//e1YTWq6dnz8G46G0M1gRWT+yvDkAGVn5tr6bsOhjfQjqXbrt5SF4jqfGh163m6fodRcS22XQGxpCt8mi8T8friAD8YXsjL/avuDRC9uE7o7TpINKpRABB6iFuZWij1ncgLR4xc4psVHLVcdOYPyquGjMioguJ1bdx/L9p7kplorget6wGvjud99pV2YobbDJoI7gpMgD/4ptv/qD/YMbBZswVYLMepxJwZWe8XKOtMDAkXX3B1PR0/BNvWIy0/cuobhN/nPwcb7kYMARWVrxwXCSkPCYb9y7WIsNZubce32XlmX/j9NZtwopguQV0wvXL+3bVeVDXgPaBM86vs1fC X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(346002)(376002)(396003)(136003)(451199015)(46966006)(36840700001)(40470700004)(356005)(40480700001)(82310400005)(478600001)(40460700003)(41300700001)(8936002)(86362001)(8676002)(44832011)(6916009)(6666004)(83380400001)(2906002)(4326008)(36860700001)(316002)(5660300002)(81166007)(36756003)(186003)(426003)(26005)(47076005)(70586007)(1076003)(82740400003)(2616005)(336012)(16526019)(70206006)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:05.0220 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e944b738-14af-4223-3cf6-08daa88bab2a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6468 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Use rte_calloc() where appropriate. This makes the code clearer. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_ethdev.c | 6 +++--- drivers/net/ionic/ionic_lif.c | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index a6e7c7fa9f..43fa5f8bbf 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -1003,9 +1003,9 @@ eth_ionic_dev_init(struct rte_eth_dev *eth_dev, void *init_params) adapter->max_mac_addrs); /* Allocate memory for storing MAC addresses */ - eth_dev->data->mac_addrs = rte_zmalloc("ionic", - RTE_ETHER_ADDR_LEN * adapter->max_mac_addrs, 0); - + eth_dev->data->mac_addrs = rte_calloc("ionic", + adapter->max_mac_addrs, + RTE_ETHER_ADDR_LEN, 0); if (eth_dev->data->mac_addrs == NULL) { IONIC_PRINT(ERR, "Failed to allocate %u bytes needed to " "store MAC addresses", diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index bb107b30e9..fbeec8ef2e 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -1037,17 +1037,17 @@ ionic_lif_alloc(struct ionic_lif *lif) return -ENOMEM; } - lif->txqcqs = rte_zmalloc("ionic", sizeof(*lif->txqcqs) * - adapter->max_ntxqs_per_lif, 0); - + lif->txqcqs = rte_calloc("ionic", + adapter->max_ntxqs_per_lif, + sizeof(*lif->txqcqs), 0); if (!lif->txqcqs) { IONIC_PRINT(ERR, "Cannot allocate tx queues array"); return -ENOMEM; } - lif->rxqcqs = rte_zmalloc("ionic", sizeof(*lif->rxqcqs) * - adapter->max_nrxqs_per_lif, 0); - + lif->rxqcqs = rte_calloc("ionic", + adapter->max_nrxqs_per_lif, + sizeof(*lif->rxqcqs), 0); if (!lif->rxqcqs) { IONIC_PRINT(ERR, "Cannot allocate rx queues array"); return -ENOMEM; From patchwork Fri Oct 7 17:43:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117611 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2AF04A04FD; Fri, 7 Oct 2022 19:47:53 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 11CB342C09; Fri, 7 Oct 2022 19:45:14 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2053.outbound.protection.outlook.com [40.107.92.53]) by mails.dpdk.org (Postfix) with ESMTP id 7D27E42BDB for ; Fri, 7 Oct 2022 19:45:09 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YWfBr5efvm2OUch/R8x1RaLJq6xGs5Vhv2UPTlmDYObXoVNzZ4BdscfUye/hpcfimn84tqIaWTmlRv0NEmPl4HG049s4zu0Q4GIXx0/N20JmwKkx0q4KOcy+jkj2pBrV76mJAICN3o80ps2z/Nx7LulsnYTWsDns6kZrIPiwbt9W2kz+BLuTRokafcnzgbfuL6XtWVgQXEXv89pkMzPb2B8kVWbNfvXa+Kttje6A+NbIS4SkihhCbTSbOnncv2Hl+HEMtnUMY62uu7Mtd0hJioyLIV09TC8DDwsorhypTiKdETU1gFcf+XwQeaM4t2F1/1zlgN1hzBu1x259ot1ing== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4IbUbm1maboOS8MtFY/vuuNq/lASa8Zxb9GD2E7/Mm0=; b=KdWy5u7fnm5tYZVjNi5oBUD8D4hdguunnAU/1n5PyReOOZ/WQYhfb01EtUf8vHW0EOZ98nSg+LxyVydqcJ+hzDk0MR4kbyKLi414sFx3o6JUWY7l24+AIKD1oyRdiPkY0DIdiBAzYeYKIEejVHvYO4dtjj7tkgwrRXJhQgP9dOtSuGGJoEVYvZLLYAJPjz9LPa2Hm92GQTOUc9spbERKO1iXDd3kew21xqplJKHOx7BS5OjQnl/koqYqP1Es3aG3/n84WRvscYjssf4U6NFCyUxtUU657dY1ZOUIE7PWuIXrrsXF9AV+Igrt6zTkE6TIw2mCPOulqQ1VNv3mq/aR9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4IbUbm1maboOS8MtFY/vuuNq/lASa8Zxb9GD2E7/Mm0=; b=mm6vzVCofNNLlEKuf1c+31W+GnlXmZrYREwHUxKU/TVwokvkISbVuey5TjKE0FQS25YylyppFX0fyA1i3ahN3CvCTs9WByEQe/pYFpl7WaUoGhk98lpQchSHUBabeCHNsbkdqL0vh6M0tVrtjsBlUTncoMRWK7EwqdoHLiZ67Yc= Received: from MW4PR03CA0332.namprd03.prod.outlook.com (2603:10b6:303:dc::7) by SN7PR12MB6909.namprd12.prod.outlook.com (2603:10b6:806:263::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Fri, 7 Oct 2022 17:45:06 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::85) by MW4PR03CA0332.outlook.office365.com (2603:10b6:303:dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:45:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:05 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:45:02 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 30/35] net/ionic: add alignment and socket info in allocations Date: Fri, 7 Oct 2022 10:43:31 -0700 Message-ID: <20221007174336.54354-31-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|SN7PR12MB6909:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a539fca-9142-4eb3-5bd0-08daa88babad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kl86n/I8fwett3+QnzpBNTKhMgCIe/WyMlu+znnFlxz+80OA6UZp+N/eZlpta7t2ZbjDpo+HHnTfXM/1z9YIgIvlsWgbuJEZAj34nyVZf37efJvCdpRvL6p5Vw+w9HzRr5rFQ9jq2PWk2Mt+8m3cvLjy3hlvuuFdOijKCJ7da15VSkTPc1sMp3TnIa8EK8JDzPuTwRaNXcC0WOkDGCgSXOHSt9V9IhigRuDNtk27WlbWn8Y/2Px9zHin3wAZay4Uifzz5wjSgpNUnWR/6XKuESTrmwWCn7dM62DCmHeGQHFsmibUeyJFvvoaUOzHTlCxj6UZVdbhW1w2AbImLnuM//wRrEXuHOQQ7Zu0egBX0cAg1MtFOFSlIhXMWPFVVhPseOv3dft+hvtCMkUdgajDB5BjUZ8AvU5ZwPSMs0MWuUVfy6XJJnTn5smHiBhenYC8DeGWeRtifKnEq8o0vjUsfxuYNQ1XPY5VnL84DnLeE0+Fz6mwjp9akSOPMgCO50+8h3TIp1hTaM2INZLeyLVBTao6f9jej5VrjQJL7h67zwYSFOrci82hOpjEeS1PU566ZDRFErGXmiwMfE7h+8ylSPQVzjAyZV2u5gn3JFsPpjZKZ3RXrk1PhyWszYD7/ciWRDGAaeFV7mBWXTPLr3mluQ2bRIT6kjBLh796uO5NHahz6aLfOn0HINsgx5t6BswQ30hBvGMmmFpEJm4OgPqnegPsexGewEVAv9BjpFzuyQZyzaMJeWdpO+Fvch5B7h0nZO7i45Fswou+KWgPTIakmAgvw0Cd5v+OXywgzLOPcGLP6bto3VLGgEe3KGzel4J0 X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(396003)(376002)(346002)(136003)(39860400002)(451199015)(36840700001)(46966006)(40470700004)(44832011)(5660300002)(41300700001)(186003)(47076005)(316002)(16526019)(6666004)(356005)(82310400005)(86362001)(2616005)(70206006)(70586007)(2906002)(6916009)(81166007)(336012)(1076003)(40460700003)(82740400003)(8676002)(8936002)(83380400001)(4326008)(426003)(36756003)(26005)(40480700001)(478600001)(36860700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:05.8813 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0a539fca-9142-4eb3-5bd0-08daa88babad X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6909 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This will avoid memory access penalties on NUMA systems. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_ethdev.c | 5 +++-- drivers/net/ionic/ionic_lif.c | 13 ++++++++----- drivers/net/ionic/ionic_rx_filter.c | 3 +-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 43fa5f8bbf..36fb09b810 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -1005,7 +1005,8 @@ eth_ionic_dev_init(struct rte_eth_dev *eth_dev, void *init_params) /* Allocate memory for storing MAC addresses */ eth_dev->data->mac_addrs = rte_calloc("ionic", adapter->max_mac_addrs, - RTE_ETHER_ADDR_LEN, 0); + RTE_ETHER_ADDR_LEN, + RTE_CACHE_LINE_SIZE); if (eth_dev->data->mac_addrs == NULL) { IONIC_PRINT(ERR, "Failed to allocate %u bytes needed to " "store MAC addresses", @@ -1083,7 +1084,7 @@ eth_ionic_dev_probe(void *bus_dev, struct rte_device *rte_dev, goto err; } - adapter = rte_zmalloc("ionic", sizeof(*adapter), 0); + adapter = rte_zmalloc("ionic", sizeof(*adapter), RTE_CACHE_LINE_SIZE); if (!adapter) { IONIC_PRINT(ERR, "OOM"); err = -ENOMEM; diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index fbeec8ef2e..cf9605c791 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -598,7 +598,8 @@ ionic_qcq_alloc(struct ionic_lif *lif, total_size += rte_mem_page_size(); } - new = rte_zmalloc("ionic", struct_size, 0); + new = rte_zmalloc_socket("ionic", struct_size, + RTE_CACHE_LINE_SIZE, socket_id); if (!new) { IONIC_PRINT(ERR, "Cannot allocate queue structure"); return -ENOMEM; @@ -1037,17 +1038,19 @@ ionic_lif_alloc(struct ionic_lif *lif) return -ENOMEM; } - lif->txqcqs = rte_calloc("ionic", + lif->txqcqs = rte_calloc_socket("ionic", adapter->max_ntxqs_per_lif, - sizeof(*lif->txqcqs), 0); + sizeof(*lif->txqcqs), + RTE_CACHE_LINE_SIZE, socket_id); if (!lif->txqcqs) { IONIC_PRINT(ERR, "Cannot allocate tx queues array"); return -ENOMEM; } - lif->rxqcqs = rte_calloc("ionic", + lif->rxqcqs = rte_calloc_socket("ionic", adapter->max_nrxqs_per_lif, - sizeof(*lif->rxqcqs), 0); + sizeof(*lif->rxqcqs), + RTE_CACHE_LINE_SIZE, socket_id); if (!lif->rxqcqs) { IONIC_PRINT(ERR, "Cannot allocate rx queues array"); return -ENOMEM; diff --git a/drivers/net/ionic/ionic_rx_filter.c b/drivers/net/ionic/ionic_rx_filter.c index fdedb9e288..5f9b569f64 100644 --- a/drivers/net/ionic/ionic_rx_filter.c +++ b/drivers/net/ionic/ionic_rx_filter.c @@ -55,8 +55,7 @@ ionic_rx_filter_save(struct ionic_lif *lif, uint32_t flow_id, struct ionic_rx_filter *f; uint32_t key; - f = rte_zmalloc("ionic", sizeof(*f), 0); - + f = rte_zmalloc("ionic", sizeof(*f), RTE_CACHE_LINE_SIZE); if (!f) return -ENOMEM; From patchwork Fri Oct 7 17:43:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117609 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 66D2FA04FD; Fri, 7 Oct 2022 19:47:41 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3ABA142B76; Fri, 7 Oct 2022 19:45:12 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2052.outbound.protection.outlook.com [40.107.237.52]) by mails.dpdk.org (Postfix) with ESMTP id 238ED42C04 for ; Fri, 7 Oct 2022 19:45:09 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TVukYCoo/XbRB1sI2r/NDu+iE6WDgnA9nFIAtyAQapLezU5rmIoeMOSRq6ThJHTolQP0n6MJDOcTsfod1dVvT0003MMP5DrgZBfE3NRzmKsr1i/qSKO2z9VRjdPDOzGS+eCwhIE/0K8d2rHPktjxdbS2wxJRsj0H89qYWCaflsbvS8/BBOkCM/xhIlegcaCDiLdDrVlbpMQvSTL7ypXmyA4ICDLAbCe0LfAH4cg4QvW7BCy42TVO2AO0b9B7DoboV/jqBh4/eHGLKw+kT9AR6jPduk26mgH3K4SbFia9tM8itL+ht3foUecQOW4RKyoYAi2ZsH4Y3o+FQzGzeKZ5Rw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+d24/ofUOlesiNWDNQDIv6rLFf3ZL534BBo/iy3t9iQ=; b=QAcV/a252wddd0gwzC7qEKGxMKiPfWtL56QUkMXZOBSRaJxOPhPeFzH4dKBKK7rGN0x6AIk225yKm0d+AKbxnPnC8S1I76kxjq6/ZZEBTN66U+fqtByEn6wuAa2cbsb0mQj8gsabWFWwez+d2UzsEzy1AQtVciGgc2SatA2LYwuox7bsyCG1bcRqR27dxWggv0jO49+R/DlaF4r0HX6cPaOVZmXnd7UFwUis4TukgvQYxml4cUrUprY1sgjSuym6y0orE87I4NnJxqdF5QRSSKqfLaQZRYGXGXIvI47/hI9n0eP2v4H/5sWZiepMx7zI0aNOnnyshTSFs0JsnsdgEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+d24/ofUOlesiNWDNQDIv6rLFf3ZL534BBo/iy3t9iQ=; b=pgTBs1jR4kMgP+FqvDqAUw2dYLPmOlw0B+3Xqzi+7pM3v2Pz/bQFOM9mJ3X09F8NIO8cMgPGatOUjv+KCdcRrZYi81KgE3Kb2Qoie7X+7B5i0JzcdcSC1Vmde2j/OrzmHbuEfpoJpa4jQPb8N2Goi2yp4P7sooUZnr4LkyWSQ/Y= Received: from MW4PR03CA0340.namprd03.prod.outlook.com (2603:10b6:303:dc::15) by MW5PR12MB5600.namprd12.prod.outlook.com (2603:10b6:303:195::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Fri, 7 Oct 2022 17:45:07 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::96) by MW4PR03CA0340.outlook.office365.com (2603:10b6:303:dc::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:45:07 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:06 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:45:03 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 31/35] net/ionic: allow client to specify Tx free threshold Date: Fri, 7 Oct 2022 10:43:32 -0700 Message-ID: <20221007174336.54354-32-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|MW5PR12MB5600:EE_ X-MS-Office365-Filtering-Correlation-Id: aaf39cbe-5574-4e3a-663b-08daa88bac3c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PuavUIFFvK3TPZSwLWVupDGoDMUlKr/cOMuWbs1MmWeACOKInZ/Qcny+F35XcIxywaXDDebscETiUfrUJYHRNYUz0EFuJ3Ij8rNb4v8NZqPGincgTpsvE9k4sMl5qL9OesSozRzvGAs3Hc4evVgb0+xMxXv0o4L/828L5mu/eb9dxllt/R0SeXGKu+t7hXD7kwZitnrZzqU7Dn6oC9aoPAH90TRQNJ0XnJ5dhqYrJvfsoAdJZZPPTD7WOy8l9vPA9ndtd5PALkQhAOV6D450cDmrxzEJ50k3s8FJNFCUu1WV4ThQBVpb2wCOSrj2ZVBYlFMp5j1nqd3FLQ9EuVKEHyBayq3j1MXV8zY/trK3pvYm5tDKE0XaL5ay10S+3TKpZDCjLd9Qd28tnms7/l9ZrOS946DSnibEX6geWeA1uHK2W3n+YsGMkCuTKDOEZxkFfX3DUDp/fQKRNAB3s+Z5zPxdCg5xBcgmOOpENMZbyA9JEDNxW6NCC+L+224s7eCYaaJ6RbwcFYc10Drgy8uDnb2/M33xDsV0geLCqXpZeIw+TejlDFugyFwy/l6zKFXHvLuVAnFKOKMPe6y7q+lJYgQZSqR7BgWlkg424uOxn4BRGbcpyBs3LEZIOwjRp1vXNw1lAPdBalsJXaDoal6ZmYsiYqDTbCDBt7cYk70wVYHs1yOGyH9C6GMi2BFhrDsSiN2/UafUSCj4FKYTjHbR0pBoWr59GGAstjHEXb3JChGW5e2qUPq8K8+bjpD3YorcHhE6Eq1a263t8b0lpu3m50aHjkVkiC4s2IbwayD06+AiD3AR8Xnb9yNiiKqAbU2e X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(376002)(346002)(396003)(136003)(451199015)(36840700001)(40470700004)(46966006)(86362001)(2906002)(70586007)(5660300002)(4326008)(8676002)(81166007)(70206006)(41300700001)(36756003)(186003)(16526019)(82310400005)(40460700003)(426003)(83380400001)(44832011)(40480700001)(336012)(8936002)(356005)(36860700001)(6666004)(2616005)(82740400003)(478600001)(6916009)(1076003)(26005)(47076005)(316002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:06.7875 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aaf39cbe-5574-4e3a-663b-08daa88bac3c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR12MB5600 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Some clients have opinions about how often to flush the transmit ring. The default value is the number of Tx descriptors minus the default Tx burst size. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_dev.h | 1 + drivers/net/ionic/ionic_ethdev.c | 4 ++-- drivers/net/ionic/ionic_lif.h | 1 + drivers/net/ionic/ionic_rxtx.c | 17 +++++++++++++++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 6b0540f615..d696de45e0 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -20,6 +20,7 @@ #define IONIC_MAX_RING_DESC 32768 #define IONIC_MIN_RING_DESC 16 #define IONIC_DEF_TXRX_DESC 4096 +#define IONIC_DEF_TXRX_BURST 32 #define IONIC_DEVCMD_TIMEOUT 5 /* devcmd_timeout */ #define IONIC_DEVCMD_CHECK_PERIOD_US 10 /* devcmd status chk period */ diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 36fb09b810..28297879cf 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -429,8 +429,8 @@ ionic_dev_info_get(struct rte_eth_dev *eth_dev, dev_info->tx_desc_lim = tx_desc_lim_v1; /* Driver-preferred Rx/Tx parameters */ - dev_info->default_rxportconf.burst_size = 32; - dev_info->default_txportconf.burst_size = 32; + dev_info->default_rxportconf.burst_size = IONIC_DEF_TXRX_BURST; + dev_info->default_txportconf.burst_size = IONIC_DEF_TXRX_BURST; dev_info->default_rxportconf.nb_queues = 1; dev_info->default_txportconf.nb_queues = 1; dev_info->default_rxportconf.ring_size = IONIC_DEF_TXRX_DESC; diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index ec9cb24a61..e4af138a51 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -104,6 +104,7 @@ struct ionic_tx_qcq { /* cacheline2 */ uint16_t num_segs_fw; /* # segs supported by current FW */ + uint16_t free_thresh; uint16_t flags; struct ionic_tx_stats stats; diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index fceb8333f6..9a346f4143 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -223,6 +223,13 @@ ionic_dev_tx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id, if (!rte_is_power_of_2(nb_desc) || nb_desc < IONIC_MIN_RING_DESC) return -EINVAL; /* or use IONIC_DEFAULT_RING_DESC */ + if (tx_conf->tx_free_thresh > nb_desc) { + IONIC_PRINT(ERR, + "tx_free_thresh must be less than nb_desc (%u)", + nb_desc); + return -EINVAL; + } + /* Free memory prior to re-allocation if needed... */ if (eth_dev->data->tx_queues[tx_queue_id] != NULL) { ionic_dev_tx_queue_release(eth_dev, tx_queue_id); @@ -252,6 +259,10 @@ ionic_dev_tx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id, if (offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) txq->flags |= IONIC_QCQ_F_FAST_FREE; + txq->free_thresh = + tx_conf->tx_free_thresh ? tx_conf->tx_free_thresh : + nb_desc - IONIC_DEF_TXRX_BURST; + eth_dev->data->tx_queues[tx_queue_id] = txq; return 0; @@ -609,8 +620,10 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, rte_mbuf_prefetch_part2(tx_pkts[0]); } - /* Cleaning old buffers */ - ionic_tx_flush(txq); + if (unlikely(ionic_q_space_avail(q) < txq->free_thresh)) { + /* Cleaning old buffers */ + ionic_tx_flush(txq); + } nb_avail = ionic_q_space_avail(q); if (unlikely(nb_avail < nb_pkts)) { From patchwork Fri Oct 7 17:43:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117612 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C99CAA04FD; Fri, 7 Oct 2022 19:48:00 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5067442C15; Fri, 7 Oct 2022 19:45:15 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2046.outbound.protection.outlook.com [40.107.244.46]) by mails.dpdk.org (Postfix) with ESMTP id 79B2042B76 for ; Fri, 7 Oct 2022 19:45:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mUFcWAZ2NOY3qjbkohpMAIseLM23i1QXv26QvdSRyrvj2q572vK1jv3L5W03YD6hj/kRoisxOwW/uY5koErx3HnB1U9bWoMXtZ3qWdbbtzg1AZm/bnlrWVR2s0/DumZGyi5UJFa6DfiO83NHsOw+qIoUjHSwcCFEprzRkDC3zAQYdLR8dCO8JReMmiQ9PgHJxj7XJU53putWfQtnjKle66Mn1ib1WM30d16LKDv59/cNVTxEMdytTVCdV34SFs8QMgcpBaMG6iJv0IuEhYPQgRdUC04bksVBsiccHI/ffeqI5FjupZPsca/hsNnou3YJbmh4lqxCkcRyh8cnAvvr/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iAZPsTezsyYdyAJfywl0uObL7SxhpIV2fvlXV6Hjn0I=; b=XYrMPmMiEyAtSj8nUpkV4bVAgZSlOr9QLZz4DP5Lm0dF6F26A9UCU3Vkc5+EBwD4DjrjXHZ/2EuVzF63GyPFWmJLpDhTGgVHLQF59TMP7Qf1EwN68/aZgBg8ZfZXR3lA8YNmp4ZCyBXP+mSUtqDWoF3FTR5fvxTmRlrXi5GKGoPiCBLLxOQqq+pl9NqsrZ5nZkX6Kqr2JiNq9DlNmGJ6pXcDXHuk0Q7K+Klt0FxTmZZg//P66HopgGuKOlqYX+rVvvRN3K4bp+wGi/GzsUW0ilrdphLBxXggZOk74mTy1CbvWEVQjSVLKRYptT37+vvl+tIQkypQmIU7hrRwp5Rlhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iAZPsTezsyYdyAJfywl0uObL7SxhpIV2fvlXV6Hjn0I=; b=gz0B0v3SjKeOb3cE4BGGkFSr0zcz4b4I0hRU1I5ET75PhZbf4Gp8CrU3mOVJNwrqYWEyihg0eYOkkE7P/YfTbsr1b0hL1eb3NnFkG4Rkf+V0g1dj4qNkjyAry0rG7c+L7UrBpcbbFrTx1ASXMCiq4NtSjbfxbP2vSda3CAtOSYc= Received: from MW4PR03CA0359.namprd03.prod.outlook.com (2603:10b6:303:dc::34) by DM6PR12MB4402.namprd12.prod.outlook.com (2603:10b6:5:2a5::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Fri, 7 Oct 2022 17:45:08 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::a3) by MW4PR03CA0359.outlook.office365.com (2603:10b6:303:dc::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend Transport; Fri, 7 Oct 2022 17:45:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:07 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:45:04 -0500 From: Andrew Boyer To: CC: Andrew Boyer , R Mohamed Shah Subject: [PATCH 32/35] net/ionic: add optimized handlers for non-scattered Rx/Tx Date: Fri, 7 Oct 2022 10:43:33 -0700 Message-ID: <20221007174336.54354-33-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|DM6PR12MB4402:EE_ X-MS-Office365-Filtering-Correlation-Id: 22c6e93b-5b2e-4a05-22c9-08daa88bacbd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Zg/d03+eBk1nq4HBkRxiI1AC5s7rgEFXFwA4yt5Ld3TgUUCt3oA04X8xiE/Q/pPDdBDsE2PVJs6m1onSG4MbywYzqH7/ohAo24f+2Ha5n+ayJea04UFR3fiuuNqgMqdMmK0o9kqlxjROz43NZ7OFRvqT14tYQdRk3NQLxFczVMbWWL6QQf4fiD7szTgM4UgLetOO4vFThguRqk2ymdN7tVrAVWqpUcOeCdCHOIlD+4LwMvdV5YCYlwKeItRbDoynP0+nIgzc+/YY4gvxnxXQE9efkaioOoRpjzGTVdZ62Ash1TnVqAm606YjAuUFy3MCRMdswwMpt5/eWcCZQ5lw9flqZKELJfN9o4UOXF80Gtime1MWzU6mN1UDyohnSdkjEkMPqdbhVncnSl8O/9nowXRqJariBvMk12hPV3schVL0IjgUTzCxNqPxEMOod/eyWIfdUkZ7J2Wf9HQQKiXfAq43Rf6J37rCekq+CFvLnQRRnubV7RcTjj115gm/Y+d7o8ZGZiFkROE44yVovXcDFf/rV4PuNIjb19QUsXsk8cdMJyeNN32on0b6PbYz0YYEIFJP0waV2RwgSx40hkIJIj6Wv8kIc2rGkcQrxY8oDb2VFeZnau7ULiumrXvcnTqh2sNwNBtQPmA/NFwFic21IKpBU4TlM1HA+QupwSTnexItFEIECoP5Ufr47QllS5E5RoLUIEELAUrJfAaOMy8REQPRxlyZO8SiTaffsJKOdpptqC0i+r5sxDdTfMVMIz6FslTLGHQECM7dfzVT1IuAwUXLPYCwXmrrGJwaJ9rAs3pq5Az3ds1SMTYcng9CRN62 X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(346002)(136003)(39860400002)(376002)(396003)(451199015)(46966006)(40470700004)(36840700001)(40480700001)(41300700001)(36860700001)(40460700003)(83380400001)(6666004)(426003)(2906002)(86362001)(44832011)(82310400005)(81166007)(356005)(54906003)(478600001)(30864003)(336012)(47076005)(8936002)(5660300002)(8676002)(316002)(36756003)(186003)(1076003)(16526019)(2616005)(6916009)(70586007)(4326008)(70206006)(82740400003)(26005)(36900700001)(579004)(559001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:07.6624 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 22c6e93b-5b2e-4a05-22c9-08daa88bacbd X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4402 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The code is very similar, but the simple case can skip a few branches in the hot path. This improves PPS when 10KB mbufs are used. S/G is enabled on the Rx side by offload DEV_RX_OFFLOAD_SCATTER. S/G is enabled on the Tx side by offload DEV_TX_OFFLOAD_MULTI_SEGS. S/G is automatically enabled on the Rx side if the provided mbufs are too small to hold the maximum possible frame. To enable S/G in testpmd, add these args: --rx-offloads=0x2000 --tx-offloads=0x8000 Signed-off-by: Andrew Boyer Signed-off-by: R Mohamed Shah --- doc/guides/rel_notes/release_22_11.rst | 1 + drivers/net/ionic/ionic_ethdev.c | 25 +- drivers/net/ionic/ionic_lif.c | 61 ++- drivers/net/ionic/ionic_lif.h | 1 + drivers/net/ionic/ionic_rxtx.c | 576 ++----------------------- drivers/net/ionic/ionic_rxtx.h | 46 +- drivers/net/ionic/ionic_rxtx_sg.c | 496 +++++++++++++++++++++ drivers/net/ionic/ionic_rxtx_simple.c | 417 ++++++++++++++++++ drivers/net/ionic/meson.build | 2 + 9 files changed, 1054 insertions(+), 571 deletions(-) create mode 100644 drivers/net/ionic/ionic_rxtx_sg.c create mode 100644 drivers/net/ionic/ionic_rxtx_simple.c diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 974400d0a6..9992236217 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -88,6 +88,7 @@ New Features * Added support for advertising packet types. * Added support for descriptor status functions. * Added Q-in-CMB feature controlled by devarg ionic_cmb. + * Added optimized handlers for non-scattered Rx and Tx. Removed Items ------------- diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 28297879cf..d29aa717e3 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -828,8 +828,6 @@ ionic_dev_configure(struct rte_eth_dev *eth_dev) ionic_lif_configure(lif); - ionic_lif_set_features(lif); - return 0; } @@ -883,6 +881,13 @@ ionic_dev_start(struct rte_eth_dev *eth_dev) if (dev_conf->lpbk_mode) IONIC_PRINT(WARNING, "Loopback mode not supported"); + /* Re-set features in case SG flag was added in rx_queue_setup() */ + err = ionic_lif_set_features(lif); + if (err) { + IONIC_PRINT(ERR, "Cannot set LIF features: %d", err); + return err; + } + lif->frame_size = eth_dev->data->mtu + IONIC_ETH_OVERHEAD; err = ionic_lif_change_mtu(lif, eth_dev->data->mtu); @@ -917,6 +922,18 @@ ionic_dev_start(struct rte_eth_dev *eth_dev) speed); } + if (lif->hw_features & IONIC_ETH_HW_RX_SG) + eth_dev->rx_pkt_burst = &ionic_recv_pkts_sg; + else + eth_dev->rx_pkt_burst = &ionic_recv_pkts; + + if (lif->hw_features & IONIC_ETH_HW_TX_SG) + eth_dev->tx_pkt_burst = &ionic_xmit_pkts_sg; + else + eth_dev->tx_pkt_burst = &ionic_xmit_pkts; + + eth_dev->tx_pkt_prepare = &ionic_prep_pkts; + ionic_dev_link_update(eth_dev, 0); return 0; @@ -980,10 +997,6 @@ eth_ionic_dev_init(struct rte_eth_dev *eth_dev, void *init_params) IONIC_PRINT_CALL(); eth_dev->dev_ops = &ionic_eth_dev_ops; - eth_dev->rx_pkt_burst = &ionic_recv_pkts; - eth_dev->tx_pkt_burst = &ionic_xmit_pkts; - eth_dev->tx_pkt_prepare = &ionic_prep_pkts; - eth_dev->rx_descriptor_status = ionic_dev_rx_descriptor_status; eth_dev->tx_descriptor_status = ionic_dev_tx_descriptor_status; diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index cf9605c791..affb6a44af 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -755,11 +755,10 @@ ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, struct ionic_rx_qcq **rxq_out) { struct ionic_rx_qcq *rxq; - uint16_t flags, seg_size, hdr_seg_size, max_segs, max_segs_fw; + uint16_t flags = 0, seg_size, hdr_seg_size, max_segs, max_segs_fw = 1; uint32_t max_mtu; int err; - flags = IONIC_QCQ_F_SG; if (lif->state & IONIC_LIF_F_Q_IN_CMB) flags |= IONIC_QCQ_F_CMB; @@ -770,7 +769,18 @@ ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, max_mtu = rte_le_to_cpu_32(lif->adapter->ident.lif.eth.max_mtu); - max_segs_fw = IONIC_RX_MAX_SG_ELEMS + 1; + /* If mbufs are too small to hold received packets, enable SG */ + if (max_mtu > hdr_seg_size) { + IONIC_PRINT(NOTICE, "Enabling RX_OFFLOAD_SCATTER"); + lif->eth_dev->data->dev_conf.rxmode.offloads |= + RTE_ETH_RX_OFFLOAD_SCATTER; + ionic_lif_configure_rx_sg_offload(lif); + } + + if (lif->features & IONIC_ETH_HW_RX_SG) { + flags |= IONIC_QCQ_F_SG; + max_segs_fw = IONIC_RX_MAX_SG_ELEMS + 1; + } /* * Calculate how many fragment pointers might be stored in queue. @@ -820,14 +830,17 @@ ionic_tx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, uint16_t ntxq_descs, struct ionic_tx_qcq **txq_out) { struct ionic_tx_qcq *txq; - uint16_t flags, num_segs_fw; + uint16_t flags = 0, num_segs_fw = 1; int err; - flags = IONIC_QCQ_F_SG; + if (lif->features & IONIC_ETH_HW_TX_SG) { + flags |= IONIC_QCQ_F_SG; + num_segs_fw = IONIC_TX_MAX_SG_ELEMS_V1 + 1; + } if (lif->state & IONIC_LIF_F_Q_IN_CMB) flags |= IONIC_QCQ_F_CMB; - num_segs_fw = IONIC_TX_MAX_SG_ELEMS_V1 + 1; + IONIC_PRINT(DEBUG, "txq %u num_segs %u", index, num_segs_fw); err = ionic_qcq_alloc(lif, IONIC_QTYPE_TXQ, @@ -1561,8 +1574,7 @@ ionic_lif_txq_init(struct ionic_tx_qcq *txq) .type = q->type, .ver = lif->qtype_info[q->type].version, .index = rte_cpu_to_le_32(q->index), - .flags = rte_cpu_to_le_16(IONIC_QINIT_F_SG | - IONIC_QINIT_F_ENA), + .flags = rte_cpu_to_le_16(IONIC_QINIT_F_ENA), .intr_index = rte_cpu_to_le_16(IONIC_INTR_NONE), .ring_size = rte_log2_u32(q->num_descs), .ring_base = rte_cpu_to_le_64(q->base_pa), @@ -1572,6 +1584,8 @@ ionic_lif_txq_init(struct ionic_tx_qcq *txq) }; int err; + if (txq->flags & IONIC_QCQ_F_SG) + ctx.cmd.q_init.flags |= rte_cpu_to_le_16(IONIC_QINIT_F_SG); if (txq->flags & IONIC_QCQ_F_CMB) ctx.cmd.q_init.flags |= rte_cpu_to_le_16(IONIC_QINIT_F_CMB); @@ -1615,8 +1629,7 @@ ionic_lif_rxq_init(struct ionic_rx_qcq *rxq) .type = q->type, .ver = lif->qtype_info[q->type].version, .index = rte_cpu_to_le_32(q->index), - .flags = rte_cpu_to_le_16(IONIC_QINIT_F_SG | - IONIC_QINIT_F_ENA), + .flags = rte_cpu_to_le_16(IONIC_QINIT_F_ENA), .intr_index = rte_cpu_to_le_16(IONIC_INTR_NONE), .ring_size = rte_log2_u32(q->num_descs), .ring_base = rte_cpu_to_le_64(q->base_pa), @@ -1626,6 +1639,8 @@ ionic_lif_rxq_init(struct ionic_rx_qcq *rxq) }; int err; + if (rxq->flags & IONIC_QCQ_F_SG) + ctx.cmd.q_init.flags |= rte_cpu_to_le_16(IONIC_QINIT_F_SG); if (rxq->flags & IONIC_QCQ_F_CMB) ctx.cmd.q_init.flags |= rte_cpu_to_le_16(IONIC_QINIT_F_CMB); @@ -1791,6 +1806,20 @@ ionic_lif_configure_vlan_offload(struct ionic_lif *lif, int mask) } } +void +ionic_lif_configure_rx_sg_offload(struct ionic_lif *lif) +{ + struct rte_eth_rxmode *rxmode = &lif->eth_dev->data->dev_conf.rxmode; + + if (rxmode->offloads & RTE_ETH_RX_OFFLOAD_SCATTER) { + lif->features |= IONIC_ETH_HW_RX_SG; + lif->eth_dev->data->scattered_rx = 1; + } else { + lif->features &= ~IONIC_ETH_HW_RX_SG; + lif->eth_dev->data->scattered_rx = 0; + } +} + void ionic_lif_configure(struct ionic_lif *lif) { @@ -1836,13 +1865,11 @@ ionic_lif_configure(struct ionic_lif *lif) else lif->features &= ~IONIC_ETH_HW_RX_CSUM; - if (rxmode->offloads & RTE_ETH_RX_OFFLOAD_SCATTER) { - lif->features |= IONIC_ETH_HW_RX_SG; - lif->eth_dev->data->scattered_rx = 1; - } else { - lif->features &= ~IONIC_ETH_HW_RX_SG; - lif->eth_dev->data->scattered_rx = 0; - } + /* + * NB: RX_SG may be enabled later during rx_queue_setup() if + * required by the mbuf/mtu configuration + */ + ionic_lif_configure_rx_sg_offload(lif); /* Covers VLAN_STRIP */ ionic_lif_configure_vlan_offload(lif, RTE_ETH_VLAN_STRIP_MASK); diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index e4af138a51..2aa9f774ff 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -188,6 +188,7 @@ void ionic_lif_stop(struct ionic_lif *lif); void ionic_lif_configure(struct ionic_lif *lif); void ionic_lif_configure_vlan_offload(struct ionic_lif *lif, int mask); +void ionic_lif_configure_rx_sg_offload(struct ionic_lif *lif); void ionic_lif_reset(struct ionic_lif *lif); int ionic_intr_alloc(struct ionic_lif *lif, struct ionic_intr_info *intr); diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 9a346f4143..64733da535 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -2,50 +2,28 @@ * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ -#include #include -#include #include #include #include -#include -#include -#include -#include #include -#include +#include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include -#include -#include -#include -#include -#include -#include -#include #include -#include +#include +#include +#include -#include "ionic_logs.h" -#include "ionic_mac_api.h" -#include "ionic_ethdev.h" +#include "ionic.h" +#include "ionic_dev.h" #include "ionic_lif.h" +#include "ionic_ethdev.h" #include "ionic_rxtx.h" +#include "ionic_logs.h" static void ionic_empty_array(void **array, uint32_t cnt, uint16_t idx) @@ -103,60 +81,6 @@ ionic_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, qinfo->conf.tx_deferred_start = txq->flags & IONIC_QCQ_F_DEFERRED; } -static __rte_always_inline void -ionic_tx_flush(struct ionic_tx_qcq *txq) -{ - struct ionic_cq *cq = &txq->qcq.cq; - struct ionic_queue *q = &txq->qcq.q; - struct rte_mbuf *txm; - struct ionic_txq_comp *cq_desc, *cq_desc_base = cq->base; - void **info; - uint32_t i; - - cq_desc = &cq_desc_base[cq->tail_idx]; - - while (color_match(cq_desc->color, cq->done_color)) { - cq->tail_idx = Q_NEXT_TO_SRVC(cq, 1); - if (cq->tail_idx == 0) - cq->done_color = !cq->done_color; - - /* Prefetch 4 x 16B comp at cq->tail_idx + 4 */ - if ((cq->tail_idx & 0x3) == 0) - rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); - - while (q->tail_idx != rte_le_to_cpu_16(cq_desc->comp_index)) { - /* Prefetch 8 mbuf ptrs at q->tail_idx + 2 */ - rte_prefetch0(IONIC_INFO_PTR(q, Q_NEXT_TO_SRVC(q, 2))); - - /* Prefetch next mbuf */ - void **next_info = - IONIC_INFO_PTR(q, Q_NEXT_TO_SRVC(q, 1)); - if (next_info[0]) - rte_mbuf_prefetch_part2(next_info[0]); - if (next_info[1]) - rte_mbuf_prefetch_part2(next_info[1]); - - info = IONIC_INFO_PTR(q, q->tail_idx); - for (i = 0; i < q->num_segs; i++) { - txm = info[i]; - if (!txm) - break; - - if (txq->flags & IONIC_QCQ_F_FAST_FREE) - rte_mempool_put(txm->pool, txm); - else - rte_pktmbuf_free_seg(txm); - - info[i] = NULL; - } - - q->tail_idx = Q_NEXT_TO_SRVC(q, 1); - } - - cq_desc = &cq_desc_base[cq->tail_idx]; - } -} - void __rte_cold ionic_dev_tx_queue_release(struct rte_eth_dev *dev, uint16_t qid) { @@ -394,7 +318,7 @@ ionic_tx_tso_next(struct ionic_tx_qcq *txq, struct ionic_txq_sg_elem **elem) return desc; } -static int +int ionic_tx_tso(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) { struct ionic_queue *q = &txq->qcq.q; @@ -405,7 +329,7 @@ ionic_tx_tso(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) rte_iova_t data_iova; uint64_t desc_addr = 0, next_addr; uint16_t desc_len = 0; - uint8_t desc_nsge; + uint8_t desc_nsge = 0; uint32_t hdrlen; uint32_t mss = txm->tso_segsz; uint32_t frag_left = 0; @@ -416,6 +340,7 @@ ionic_tx_tso(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) bool start, done; bool encap; bool has_vlan = !!(txm->ol_flags & RTE_MBUF_F_TX_VLAN); + bool use_sgl = !!(txq->flags & IONIC_QCQ_F_SG); uint16_t vlan_tci = txm->vlan_tci; uint64_t ol_flags = txm->ol_flags; @@ -438,48 +363,22 @@ ionic_tx_tso(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) hdrlen = txm->l2_len + txm->l3_len + txm->l4_len; } - seglen = hdrlen + mss; - left = txm->data_len; - data_iova = rte_mbuf_data_iova(txm); - desc = ionic_tx_tso_next(txq, &elem); + txm_seg = txm; start = true; + seglen = hdrlen + mss; - /* Chop data up into desc segments */ - - while (left > 0) { - len = RTE_MIN(seglen, left); - frag_left = seglen - len; - desc_addr = rte_cpu_to_le_64(data_iova + offset); - desc_len = len; - desc_nsge = 0; - left -= len; - offset += len; - if (txm->nb_segs > 1 && frag_left > 0) - continue; - done = (txm->nb_segs == 1 && left == 0); - ionic_tx_tso_post(q, desc, txm, - desc_addr, desc_nsge, desc_len, - hdrlen, mss, - encap, - vlan_tci, has_vlan, - start, done); - desc = ionic_tx_tso_next(txq, &elem); - start = false; - seglen = mss; - } - - /* Chop frags into desc segments */ - - txm_seg = txm->next; + /* Walk the chain of mbufs */ while (txm_seg != NULL) { offset = 0; data_iova = rte_mbuf_data_iova(txm_seg); left = txm_seg->data_len; + /* Split the mbuf data up into multiple descriptors */ while (left > 0) { next_addr = rte_cpu_to_le_64(data_iova + offset); - if (frag_left > 0) { + if (frag_left > 0 && use_sgl) { + /* Fill previous descriptor's SGE */ len = RTE_MIN(frag_left, left); frag_left -= len; elem->addr = next_addr; @@ -487,16 +386,19 @@ ionic_tx_tso(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) elem++; desc_nsge++; } else { - len = RTE_MIN(mss, left); - frag_left = mss - len; + /* Fill new descriptor's data field */ + len = RTE_MIN(seglen, left); + frag_left = seglen - len; desc_addr = next_addr; desc_len = len; desc_nsge = 0; } left -= len; offset += len; - if (txm_seg->next != NULL && frag_left > 0) - continue; + + /* Pack the next mbuf's data into the descriptor */ + if (txm_seg->next != NULL && frag_left > 0 && use_sgl) + break; done = (txm_seg->next == NULL && left == 0); ionic_tx_tso_post(q, desc, txm_seg, @@ -507,6 +409,7 @@ ionic_tx_tso(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) start, done); desc = ionic_tx_tso_next(txq, &elem); start = false; + seglen = mss; } txm_seg = txm_seg->next; @@ -517,157 +420,6 @@ ionic_tx_tso(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) return 0; } -static __rte_always_inline int -ionic_tx(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) -{ - struct ionic_queue *q = &txq->qcq.q; - struct ionic_txq_desc *desc, *desc_base = q->base; - struct ionic_txq_sg_desc_v1 *sg_desc_base = q->sg_base; - struct ionic_txq_sg_elem *elem; - struct ionic_tx_stats *stats = &txq->stats; - struct rte_mbuf *txm_seg; - void **info; - rte_iova_t data_iova; - uint64_t ol_flags = txm->ol_flags; - uint64_t addr, cmd; - uint8_t opcode = IONIC_TXQ_DESC_OPCODE_CSUM_NONE; - uint8_t flags = 0; - - desc = &desc_base[q->head_idx]; - info = IONIC_INFO_PTR(q, q->head_idx); - - if ((ol_flags & RTE_MBUF_F_TX_IP_CKSUM) && - (txq->flags & IONIC_QCQ_F_CSUM_L3)) { - opcode = IONIC_TXQ_DESC_OPCODE_CSUM_HW; - flags |= IONIC_TXQ_DESC_FLAG_CSUM_L3; - } - - if (((ol_flags & RTE_MBUF_F_TX_TCP_CKSUM) && - (txq->flags & IONIC_QCQ_F_CSUM_TCP)) || - ((ol_flags & RTE_MBUF_F_TX_UDP_CKSUM) && - (txq->flags & IONIC_QCQ_F_CSUM_UDP))) { - opcode = IONIC_TXQ_DESC_OPCODE_CSUM_HW; - flags |= IONIC_TXQ_DESC_FLAG_CSUM_L4; - } - - if (opcode == IONIC_TXQ_DESC_OPCODE_CSUM_NONE) - stats->no_csum++; - - if (((ol_flags & RTE_MBUF_F_TX_OUTER_IP_CKSUM) || - (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM)) && - ((ol_flags & RTE_MBUF_F_TX_OUTER_IPV4) || - (ol_flags & RTE_MBUF_F_TX_OUTER_IPV6))) { - flags |= IONIC_TXQ_DESC_FLAG_ENCAP; - } - - if (ol_flags & RTE_MBUF_F_TX_VLAN) { - flags |= IONIC_TXQ_DESC_FLAG_VLAN; - desc->vlan_tci = rte_cpu_to_le_16(txm->vlan_tci); - } - - addr = rte_cpu_to_le_64(rte_mbuf_data_iova(txm)); - - cmd = encode_txq_desc_cmd(opcode, flags, txm->nb_segs - 1, addr); - desc->cmd = rte_cpu_to_le_64(cmd); - desc->len = rte_cpu_to_le_16(txm->data_len); - - info[0] = txm; - - if (txm->nb_segs > 1) { - txm_seg = txm->next; - - elem = sg_desc_base[q->head_idx].elems; - - while (txm_seg != NULL) { - /* Stash the mbuf ptr in the array */ - info++; - *info = txm_seg; - - /* Configure the SGE */ - data_iova = rte_mbuf_data_iova(txm_seg); - elem->len = rte_cpu_to_le_16(txm_seg->data_len); - elem->addr = rte_cpu_to_le_64(data_iova); - elem++; - - txm_seg = txm_seg->next; - } - } - - q->head_idx = Q_NEXT_TO_POST(q, 1); - - return 0; -} - -uint16_t -ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, - uint16_t nb_pkts) -{ - struct ionic_tx_qcq *txq = tx_queue; - struct ionic_queue *q = &txq->qcq.q; - struct ionic_tx_stats *stats = &txq->stats; - struct rte_mbuf *mbuf; - uint32_t bytes_tx = 0; - uint16_t nb_avail, nb_tx = 0; - int err; - - struct ionic_txq_desc *desc_base = q->base; - if (!(txq->flags & IONIC_QCQ_F_CMB)) - rte_prefetch0(&desc_base[q->head_idx]); - rte_prefetch0(IONIC_INFO_PTR(q, q->head_idx)); - - if (tx_pkts) { - rte_mbuf_prefetch_part1(tx_pkts[0]); - rte_mbuf_prefetch_part2(tx_pkts[0]); - } - - if (unlikely(ionic_q_space_avail(q) < txq->free_thresh)) { - /* Cleaning old buffers */ - ionic_tx_flush(txq); - } - - nb_avail = ionic_q_space_avail(q); - if (unlikely(nb_avail < nb_pkts)) { - stats->stop += nb_pkts - nb_avail; - nb_pkts = nb_avail; - } - - while (nb_tx < nb_pkts) { - uint16_t next_idx = Q_NEXT_TO_POST(q, 1); - if (!(txq->flags & IONIC_QCQ_F_CMB)) - rte_prefetch0(&desc_base[next_idx]); - rte_prefetch0(IONIC_INFO_PTR(q, next_idx)); - - if (nb_tx + 1 < nb_pkts) { - rte_mbuf_prefetch_part1(tx_pkts[nb_tx + 1]); - rte_mbuf_prefetch_part2(tx_pkts[nb_tx + 1]); - } - - mbuf = tx_pkts[nb_tx]; - - if (mbuf->ol_flags & RTE_MBUF_F_TX_TCP_SEG) - err = ionic_tx_tso(txq, mbuf); - else - err = ionic_tx(txq, mbuf); - if (err) { - stats->drop += nb_pkts - nb_tx; - break; - } - - bytes_tx += mbuf->pkt_len; - nb_tx++; - } - - if (nb_tx > 0) { - rte_wmb(); - ionic_q_flush(q); - - stats->packets += nb_tx; - stats->bytes += bytes_tx; - } - - return nb_tx; -} - /********************************************************************* * * TX prep functions @@ -820,7 +572,7 @@ ionic_dev_rx_queue_setup(struct rte_eth_dev *eth_dev, } #define IONIC_CSUM_FLAG_MASK (IONIC_RXQ_COMP_CSUM_F_VLAN - 1) -static const uint64_t ionic_csum_flags[IONIC_CSUM_FLAG_MASK] +const uint64_t ionic_csum_flags[IONIC_CSUM_FLAG_MASK] __rte_cache_aligned = { /* IP_BAD set */ [IONIC_RXQ_COMP_CSUM_F_IP_BAD] = RTE_MBUF_F_RX_IP_CKSUM_BAD, @@ -850,7 +602,7 @@ static const uint64_t ionic_csum_flags[IONIC_CSUM_FLAG_MASK] }; /* RTE_PTYPE_UNKNOWN is 0x0 */ -static const uint32_t ionic_ptype_table[IONIC_RXQ_COMP_PKT_TYPE_MASK] +const uint32_t ionic_ptype_table[IONIC_RXQ_COMP_PKT_TYPE_MASK] __rte_cache_aligned = { [IONIC_PKT_TYPE_NON_IP] = RTE_PTYPE_UNKNOWN, [IONIC_PKT_TYPE_IPV4] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4, @@ -884,203 +636,6 @@ ionic_dev_supported_ptypes_get(struct rte_eth_dev *dev __rte_unused) return ptypes; } -/* - * Cleans one descriptor. Connects the filled mbufs into a chain. - * Does not advance the tail index. - */ -static __rte_always_inline void -ionic_rx_clean_one(struct ionic_rx_qcq *rxq, - struct ionic_rxq_comp *cq_desc, - struct ionic_rx_service *rx_svc) -{ - struct ionic_queue *q = &rxq->qcq.q; - struct rte_mbuf *rxm, *rxm_seg, *prev_rxm; - struct ionic_rx_stats *stats = &rxq->stats; - uint64_t pkt_flags = 0; - uint32_t pkt_type; - uint32_t left, i; - uint16_t cq_desc_len; - uint8_t ptype, cflags; - void **info; - - cq_desc_len = rte_le_to_cpu_16(cq_desc->len); - - info = IONIC_INFO_PTR(q, q->tail_idx); - - rxm = info[0]; - - if (cq_desc->status) { - stats->bad_cq_status++; - return; - } - - if (cq_desc_len > rxq->frame_size || cq_desc_len == 0) { - stats->bad_len++; - return; - } - - info[0] = NULL; - - /* Set the mbuf metadata based on the cq entry */ - rxm->rearm_data[0] = rxq->rearm_data; - rxm->pkt_len = cq_desc_len; - rxm->data_len = RTE_MIN(rxq->hdr_seg_size, cq_desc_len); - left = cq_desc_len - rxm->data_len; - rxm->nb_segs = cq_desc->num_sg_elems + 1; - prev_rxm = rxm; - - for (i = 1; i < rxm->nb_segs && left; i++) { - rxm_seg = info[i]; - info[i] = NULL; - - /* Set the chained mbuf metadata */ - rxm_seg->rearm_data[0] = rxq->rearm_seg_data; - rxm_seg->data_len = RTE_MIN(rxq->seg_size, left); - left -= rxm_seg->data_len; - - /* Link the mbuf */ - prev_rxm->next = rxm_seg; - prev_rxm = rxm_seg; - } - - /* Terminate the mbuf chain */ - prev_rxm->next = NULL; - - /* RSS */ - pkt_flags |= RTE_MBUF_F_RX_RSS_HASH; - rxm->hash.rss = rte_le_to_cpu_32(cq_desc->rss_hash); - - /* Vlan Strip */ - if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_VLAN) { - pkt_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; - rxm->vlan_tci = rte_le_to_cpu_16(cq_desc->vlan_tci); - } - - /* Checksum */ - if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_CALC) { - cflags = cq_desc->csum_flags & IONIC_CSUM_FLAG_MASK; - pkt_flags |= ionic_csum_flags[cflags]; - } - - rxm->ol_flags = pkt_flags; - - /* Packet Type */ - ptype = cq_desc->pkt_type_color & IONIC_RXQ_COMP_PKT_TYPE_MASK; - pkt_type = ionic_ptype_table[ptype]; - if (pkt_type == RTE_PTYPE_UNKNOWN) { - struct rte_ether_hdr *eth_h = rte_pktmbuf_mtod(rxm, - struct rte_ether_hdr *); - uint16_t ether_type = eth_h->ether_type; - if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_ARP)) - pkt_type = RTE_PTYPE_L2_ETHER_ARP; - else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_LLDP)) - pkt_type = RTE_PTYPE_L2_ETHER_LLDP; - else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_1588)) - pkt_type = RTE_PTYPE_L2_ETHER_TIMESYNC; - stats->mtods++; - } - - rxm->packet_type = pkt_type; - - rx_svc->rx_pkts[rx_svc->nb_rx] = rxm; - rx_svc->nb_rx++; - - stats->packets++; - stats->bytes += rxm->pkt_len; -} - -/* - * Fills one descriptor with mbufs. Does not advance the head index. - */ -static __rte_always_inline int -ionic_rx_fill_one(struct ionic_rx_qcq *rxq) -{ - struct ionic_queue *q = &rxq->qcq.q; - struct rte_mbuf *rxm, *rxm_seg; - struct ionic_rxq_desc *desc, *desc_base = q->base; - struct ionic_rxq_sg_desc *sg_desc, *sg_desc_base = q->sg_base; - rte_iova_t data_iova; - uint32_t i; - void **info; - int ret; - - info = IONIC_INFO_PTR(q, q->head_idx); - desc = &desc_base[q->head_idx]; - sg_desc = &sg_desc_base[q->head_idx]; - - /* mbuf is unused => whole chain is unused */ - if (unlikely(info[0])) - return 0; - - if (rxq->mb_idx == 0) { - ret = rte_mempool_get_bulk(rxq->mb_pool, - (void **)rxq->mbs, - IONIC_MBUF_BULK_ALLOC); - if (ret) { - assert(0); - return -ENOMEM; - } - - rxq->mb_idx = IONIC_MBUF_BULK_ALLOC; - } - - rxm = rxq->mbs[--rxq->mb_idx]; - info[0] = rxm; - - data_iova = rte_mbuf_data_iova_default(rxm); - desc->addr = rte_cpu_to_le_64(data_iova); - - for (i = 1; i < q->num_segs; i++) { - /* mbuf is unused => rest of the chain is unused */ - if (info[i]) - return 0; - - if (rxq->mb_idx == 0) { - ret = rte_mempool_get_bulk(rxq->mb_pool, - (void **)rxq->mbs, - IONIC_MBUF_BULK_ALLOC); - if (ret) { - assert(0); - return -ENOMEM; - } - - rxq->mb_idx = IONIC_MBUF_BULK_ALLOC; - } - - rxm_seg = rxq->mbs[--rxq->mb_idx]; - info[i] = rxm_seg; - - /* The data_off does not get set to 0 until later */ - data_iova = rxm_seg->buf_iova; - sg_desc->elems[i - 1].addr = rte_cpu_to_le_64(data_iova); - } - - return 0; -} - -/* - * Fills all descriptors with mbufs. - */ -static int __rte_cold -ionic_rx_fill(struct ionic_rx_qcq *rxq) -{ - struct ionic_queue *q = &rxq->qcq.q; - uint32_t i; - int err; - - for (i = 1; i < q->num_descs; i++) { - err = ionic_rx_fill_one(rxq); - if (err) - return err; - - q->head_idx = Q_NEXT_TO_POST(q, 1); - } - - ionic_q_flush(q); - - return 0; -} - /* * Perform one-time initialization of descriptor fields * which will not change for the life of the queue. @@ -1148,10 +703,13 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) if (err) return err; - /* Allocate buffers for descriptor rings */ - if (ionic_rx_fill(rxq) != 0) { - IONIC_PRINT(ERR, "Could not alloc mbuf for queue:%d", - rx_queue_id); + /* Allocate buffers for descriptor ring */ + if (rxq->flags & IONIC_QCQ_F_SG) + err = ionic_rx_fill_sg(rxq); + else + err = ionic_rx_fill(rxq); + if (err != 0) { + IONIC_PRINT(ERR, "Could not fill queue %d", rx_queue_id); return -1; } @@ -1160,55 +718,6 @@ ionic_dev_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) return 0; } -/* - * Walk the CQ to find completed receive descriptors. - * Any completed descriptor found is refilled. - */ -static __rte_always_inline void -ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, - struct ionic_rx_service *rx_svc) -{ - struct ionic_cq *cq = &rxq->qcq.cq; - struct ionic_queue *q = &rxq->qcq.q; - struct ionic_rxq_desc *q_desc_base = q->base; - struct ionic_rxq_comp *cq_desc, *cq_desc_base = cq->base; - uint32_t work_done = 0; - - cq_desc = &cq_desc_base[cq->tail_idx]; - - while (color_match(cq_desc->pkt_type_color, cq->done_color)) { - cq->tail_idx = Q_NEXT_TO_SRVC(cq, 1); - - if (cq->tail_idx == 0) - cq->done_color = !cq->done_color; - - /* Prefetch 8 x 8B bufinfo */ - rte_prefetch0(IONIC_INFO_PTR(q, Q_NEXT_TO_SRVC(q, 8))); - /* Prefetch 4 x 16B comp */ - rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); - /* Prefetch 4 x 16B descriptors */ - if (!(rxq->flags & IONIC_QCQ_F_CMB)) - rte_prefetch0(&q_desc_base[Q_NEXT_TO_POST(q, 4)]); - - ionic_rx_clean_one(rxq, cq_desc, rx_svc); - - q->tail_idx = Q_NEXT_TO_SRVC(q, 1); - - (void)ionic_rx_fill_one(rxq); - - q->head_idx = Q_NEXT_TO_POST(q, 1); - - if (++work_done == work_to_do) - break; - - cq_desc = &cq_desc_base[cq->tail_idx]; - } - - /* Update the queue indices and ring the doorbell */ - if (work_done) - ionic_q_flush(q); -} - /* * Stop Receive Units for specified queue. */ @@ -1237,21 +746,6 @@ ionic_dev_rx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id) return 0; } -uint16_t -ionic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, - uint16_t nb_pkts) -{ - struct ionic_rx_qcq *rxq = rx_queue; - struct ionic_rx_service rx_svc; - - rx_svc.rx_pkts = rx_pkts; - rx_svc.nb_rx = 0; - - ionic_rxq_service(rxq, nb_pkts, &rx_svc); - - return rx_svc.nb_rx; -} - int ionic_dev_rx_descriptor_status(void *rx_queue, uint16_t offset) { diff --git a/drivers/net/ionic/ionic_rxtx.h b/drivers/net/ionic/ionic_rxtx.h index f950d6472c..5939777963 100644 --- a/drivers/net/ionic/ionic_rxtx.h +++ b/drivers/net/ionic/ionic_rxtx.h @@ -5,7 +5,19 @@ #ifndef _IONIC_RXTX_H_ #define _IONIC_RXTX_H_ -#include +#include + +#include "ionic_if.h" + +struct ionic_rx_qcq; +struct ionic_tx_qcq; +struct rte_eth_dev; +struct rte_eth_rxconf; +struct rte_eth_rxq_info; +struct rte_eth_txconf; +struct rte_eth_txq_info; +struct rte_mbuf; +struct rte_mempool; struct ionic_rx_service { /* cb in */ @@ -14,13 +26,12 @@ struct ionic_rx_service { uint16_t nb_rx; }; -uint16_t ionic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, - uint16_t nb_pkts); -uint16_t ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, - uint16_t nb_pkts); -uint16_t ionic_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, - uint16_t nb_pkts); +#define IONIC_CSUM_FLAG_MASK (IONIC_RXQ_COMP_CSUM_F_VLAN - 1) + +extern const uint64_t ionic_csum_flags[IONIC_CSUM_FLAG_MASK]; +extern const uint32_t ionic_ptype_table[IONIC_RXQ_COMP_PKT_TYPE_MASK]; +/* ionic_rxtx.c */ int ionic_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id, uint16_t nb_desc, uint32_t socket_id, const struct rte_eth_rxconf *rx_conf, struct rte_mempool *mp); @@ -45,4 +56,25 @@ int ionic_dev_tx_descriptor_status(void *tx_queue, uint16_t offset); const uint32_t *ionic_dev_supported_ptypes_get(struct rte_eth_dev *dev); +int ionic_tx_tso(struct ionic_tx_qcq *txq, struct rte_mbuf *txm); + +uint16_t ionic_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, + uint16_t nb_pkts); + +/* ionic_rxtx_simple.c */ +uint16_t ionic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, + uint16_t nb_pkts); +uint16_t ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, + uint16_t nb_pkts); + +int ionic_rx_fill(struct ionic_rx_qcq *rxq); + +/* ionic_rxtx_sg.c */ +uint16_t ionic_recv_pkts_sg(void *rx_queue, struct rte_mbuf **rx_pkts, + uint16_t nb_pkts); +uint16_t ionic_xmit_pkts_sg(void *tx_queue, struct rte_mbuf **tx_pkts, + uint16_t nb_pkts); + +int ionic_rx_fill_sg(struct ionic_rx_qcq *rxq); + #endif /* _IONIC_RXTX_H_ */ diff --git a/drivers/net/ionic/ionic_rxtx_sg.c b/drivers/net/ionic/ionic_rxtx_sg.c new file mode 100644 index 0000000000..bdca3fa4b4 --- /dev/null +++ b/drivers/net/ionic/ionic_rxtx_sg.c @@ -0,0 +1,496 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "ionic.h" +#include "ionic_if.h" +#include "ionic_dev.h" +#include "ionic_lif.h" +#include "ionic_rxtx.h" + +static __rte_always_inline void +ionic_tx_flush_sg(struct ionic_tx_qcq *txq) +{ + struct ionic_cq *cq = &txq->qcq.cq; + struct ionic_queue *q = &txq->qcq.q; + struct rte_mbuf *txm; + struct ionic_txq_comp *cq_desc, *cq_desc_base = cq->base; + void **info; + uint32_t i; + + cq_desc = &cq_desc_base[cq->tail_idx]; + + while (color_match(cq_desc->color, cq->done_color)) { + cq->tail_idx = Q_NEXT_TO_SRVC(cq, 1); + if (cq->tail_idx == 0) + cq->done_color = !cq->done_color; + + /* Prefetch 4 x 16B comp at cq->tail_idx + 4 */ + if ((cq->tail_idx & 0x3) == 0) + rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); + + while (q->tail_idx != rte_le_to_cpu_16(cq_desc->comp_index)) { + /* Prefetch 8 mbuf ptrs at q->tail_idx + 2 */ + rte_prefetch0(IONIC_INFO_PTR(q, Q_NEXT_TO_SRVC(q, 2))); + + /* Prefetch next mbuf */ + void **next_info = + IONIC_INFO_PTR(q, Q_NEXT_TO_SRVC(q, 1)); + if (next_info[0]) + rte_mbuf_prefetch_part2(next_info[0]); + if (next_info[1]) + rte_mbuf_prefetch_part2(next_info[1]); + + info = IONIC_INFO_PTR(q, q->tail_idx); + for (i = 0; i < q->num_segs; i++) { + txm = info[i]; + if (!txm) + break; + + if (txq->flags & IONIC_QCQ_F_FAST_FREE) + rte_mempool_put(txm->pool, txm); + else + rte_pktmbuf_free_seg(txm); + + info[i] = NULL; + } + + q->tail_idx = Q_NEXT_TO_SRVC(q, 1); + } + + cq_desc = &cq_desc_base[cq->tail_idx]; + } +} + +static __rte_always_inline int +ionic_tx_sg(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) +{ + struct ionic_queue *q = &txq->qcq.q; + struct ionic_txq_desc *desc, *desc_base = q->base; + struct ionic_txq_sg_desc_v1 *sg_desc, *sg_desc_base = q->sg_base; + struct ionic_txq_sg_elem *elem; + struct ionic_tx_stats *stats = &txq->stats; + struct rte_mbuf *txm_seg; + rte_iova_t data_iova; + void **info; + uint64_t ol_flags = txm->ol_flags; + uint64_t addr, cmd; + uint8_t opcode = IONIC_TXQ_DESC_OPCODE_CSUM_NONE; + uint8_t flags = 0; + + desc = &desc_base[q->head_idx]; + sg_desc = &sg_desc_base[q->head_idx]; + info = IONIC_INFO_PTR(q, q->head_idx); + + if ((ol_flags & RTE_MBUF_F_TX_IP_CKSUM) && + (txq->flags & IONIC_QCQ_F_CSUM_L3)) { + opcode = IONIC_TXQ_DESC_OPCODE_CSUM_HW; + flags |= IONIC_TXQ_DESC_FLAG_CSUM_L3; + } + + if (((ol_flags & RTE_MBUF_F_TX_TCP_CKSUM) && + (txq->flags & IONIC_QCQ_F_CSUM_TCP)) || + ((ol_flags & RTE_MBUF_F_TX_UDP_CKSUM) && + (txq->flags & IONIC_QCQ_F_CSUM_UDP))) { + opcode = IONIC_TXQ_DESC_OPCODE_CSUM_HW; + flags |= IONIC_TXQ_DESC_FLAG_CSUM_L4; + } + + if (opcode == IONIC_TXQ_DESC_OPCODE_CSUM_NONE) + stats->no_csum++; + + if (((ol_flags & RTE_MBUF_F_TX_OUTER_IP_CKSUM) || + (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM)) && + ((ol_flags & RTE_MBUF_F_TX_OUTER_IPV4) || + (ol_flags & RTE_MBUF_F_TX_OUTER_IPV6))) { + flags |= IONIC_TXQ_DESC_FLAG_ENCAP; + } + + if (ol_flags & RTE_MBUF_F_TX_VLAN) { + flags |= IONIC_TXQ_DESC_FLAG_VLAN; + desc->vlan_tci = rte_cpu_to_le_16(txm->vlan_tci); + } + + addr = rte_cpu_to_le_64(rte_mbuf_data_iova(txm)); + + cmd = encode_txq_desc_cmd(opcode, flags, txm->nb_segs - 1, addr); + desc->cmd = rte_cpu_to_le_64(cmd); + desc->len = rte_cpu_to_le_16(txm->data_len); + + info[0] = txm; + + if (txm->nb_segs > 1) { + txm_seg = txm->next; + + elem = sg_desc->elems; + + while (txm_seg != NULL) { + /* Stash the mbuf ptr in the array */ + info++; + *info = txm_seg; + + /* Configure the SGE */ + data_iova = rte_mbuf_data_iova(txm_seg); + elem->len = rte_cpu_to_le_16(txm_seg->data_len); + elem->addr = rte_cpu_to_le_64(data_iova); + elem++; + + txm_seg = txm_seg->next; + } + } + + q->head_idx = Q_NEXT_TO_POST(q, 1); + + return 0; +} + +uint16_t +ionic_xmit_pkts_sg(void *tx_queue, struct rte_mbuf **tx_pkts, + uint16_t nb_pkts) +{ + struct ionic_tx_qcq *txq = tx_queue; + struct ionic_queue *q = &txq->qcq.q; + struct ionic_tx_stats *stats = &txq->stats; + struct rte_mbuf *mbuf; + uint32_t bytes_tx = 0; + uint16_t nb_avail, nb_tx = 0; + int err; + + struct ionic_txq_desc *desc_base = q->base; + if (!(txq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&desc_base[q->head_idx]); + rte_prefetch0(IONIC_INFO_PTR(q, q->head_idx)); + + if (tx_pkts) { + rte_mbuf_prefetch_part1(tx_pkts[0]); + rte_mbuf_prefetch_part2(tx_pkts[0]); + } + + if (ionic_q_space_avail(q) < txq->free_thresh) { + /* Cleaning old buffers */ + ionic_tx_flush_sg(txq); + } + + nb_avail = ionic_q_space_avail(q); + if (nb_avail < nb_pkts) { + stats->stop += nb_pkts - nb_avail; + nb_pkts = nb_avail; + } + + while (nb_tx < nb_pkts) { + uint16_t next_idx = Q_NEXT_TO_POST(q, 1); + if (!(txq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&desc_base[next_idx]); + rte_prefetch0(IONIC_INFO_PTR(q, next_idx)); + + if (nb_tx + 1 < nb_pkts) { + rte_mbuf_prefetch_part1(tx_pkts[nb_tx + 1]); + rte_mbuf_prefetch_part2(tx_pkts[nb_tx + 1]); + } + + mbuf = tx_pkts[nb_tx]; + + if (mbuf->ol_flags & RTE_MBUF_F_TX_TCP_SEG) + err = ionic_tx_tso(txq, mbuf); + else + err = ionic_tx_sg(txq, mbuf); + if (err) { + stats->drop += nb_pkts - nb_tx; + break; + } + + bytes_tx += mbuf->pkt_len; + nb_tx++; + } + + if (nb_tx > 0) { + rte_wmb(); + ionic_q_flush(q); + + stats->packets += nb_tx; + stats->bytes += bytes_tx; + } + + return nb_tx; +} + +/* + * Cleans one descriptor. Connects the filled mbufs into a chain. + * Does not advance the tail index. + */ +static __rte_always_inline void +ionic_rx_clean_one_sg(struct ionic_rx_qcq *rxq, + struct ionic_rxq_comp *cq_desc, + struct ionic_rx_service *rx_svc) +{ + struct ionic_queue *q = &rxq->qcq.q; + struct rte_mbuf *rxm; + struct rte_mbuf *rxm_seg, *prev_rxm; + struct ionic_rx_stats *stats = &rxq->stats; + uint64_t pkt_flags = 0; + uint32_t pkt_type; + uint32_t left, i; + uint16_t cq_desc_len; + uint8_t ptype, cflags; + void **info; + + cq_desc_len = rte_le_to_cpu_16(cq_desc->len); + + info = IONIC_INFO_PTR(q, q->tail_idx); + + rxm = info[0]; + + if (cq_desc->status) { + stats->bad_cq_status++; + return; + } + + if (cq_desc_len > rxq->frame_size || cq_desc_len == 0) { + stats->bad_len++; + return; + } + + info[0] = NULL; + + /* Set the mbuf metadata based on the cq entry */ + rxm->rearm_data[0] = rxq->rearm_data; + rxm->pkt_len = cq_desc_len; + rxm->data_len = RTE_MIN(rxq->hdr_seg_size, cq_desc_len); + left = cq_desc_len - rxm->data_len; + rxm->nb_segs = cq_desc->num_sg_elems + 1; + + prev_rxm = rxm; + + for (i = 1; i < rxm->nb_segs && left; i++) { + rxm_seg = info[i]; + info[i] = NULL; + + /* Set the chained mbuf metadata */ + rxm_seg->rearm_data[0] = rxq->rearm_seg_data; + rxm_seg->data_len = RTE_MIN(rxq->seg_size, left); + left -= rxm_seg->data_len; + + /* Link the mbuf */ + prev_rxm->next = rxm_seg; + prev_rxm = rxm_seg; + } + + /* Terminate the mbuf chain */ + prev_rxm->next = NULL; + + /* RSS */ + pkt_flags |= RTE_MBUF_F_RX_RSS_HASH; + rxm->hash.rss = rte_le_to_cpu_32(cq_desc->rss_hash); + + /* Vlan Strip */ + if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_VLAN) { + pkt_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; + rxm->vlan_tci = rte_le_to_cpu_16(cq_desc->vlan_tci); + } + + /* Checksum */ + if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_CALC) { + cflags = cq_desc->csum_flags & IONIC_CSUM_FLAG_MASK; + pkt_flags |= ionic_csum_flags[cflags]; + } + + rxm->ol_flags = pkt_flags; + + /* Packet Type */ + ptype = cq_desc->pkt_type_color & IONIC_RXQ_COMP_PKT_TYPE_MASK; + pkt_type = ionic_ptype_table[ptype]; + if (pkt_type == RTE_PTYPE_UNKNOWN) { + struct rte_ether_hdr *eth_h = rte_pktmbuf_mtod(rxm, + struct rte_ether_hdr *); + uint16_t ether_type = eth_h->ether_type; + if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_ARP)) + pkt_type = RTE_PTYPE_L2_ETHER_ARP; + else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_LLDP)) + pkt_type = RTE_PTYPE_L2_ETHER_LLDP; + else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_1588)) + pkt_type = RTE_PTYPE_L2_ETHER_TIMESYNC; + stats->mtods++; + } else if (pkt_flags & RTE_MBUF_F_RX_VLAN) { + pkt_type |= RTE_PTYPE_L2_ETHER_VLAN; + } else { + pkt_type |= RTE_PTYPE_L2_ETHER; + } + + rxm->packet_type = pkt_type; + + rx_svc->rx_pkts[rx_svc->nb_rx] = rxm; + rx_svc->nb_rx++; + + stats->packets++; + stats->bytes += rxm->pkt_len; +} + +/* + * Fills one descriptor with mbufs. Does not advance the head index. + */ +static __rte_always_inline int +ionic_rx_fill_one_sg(struct ionic_rx_qcq *rxq) +{ + struct ionic_queue *q = &rxq->qcq.q; + struct rte_mbuf *rxm; + struct rte_mbuf *rxm_seg; + struct ionic_rxq_desc *desc, *desc_base = q->base; + struct ionic_rxq_sg_desc *sg_desc, *sg_desc_base = q->sg_base; + rte_iova_t data_iova; + uint32_t i; + void **info; + int ret; + + info = IONIC_INFO_PTR(q, q->head_idx); + desc = &desc_base[q->head_idx]; + sg_desc = &sg_desc_base[q->head_idx]; + + /* mbuf is unused => whole chain is unused */ + if (info[0]) + return 0; + + if (rxq->mb_idx == 0) { + ret = rte_mempool_get_bulk(rxq->mb_pool, + (void **)rxq->mbs, + IONIC_MBUF_BULK_ALLOC); + if (ret) { + assert(0); + return -ENOMEM; + } + + rxq->mb_idx = IONIC_MBUF_BULK_ALLOC; + } + + rxm = rxq->mbs[--rxq->mb_idx]; + info[0] = rxm; + + data_iova = rte_mbuf_data_iova_default(rxm); + desc->addr = rte_cpu_to_le_64(data_iova); + + for (i = 1; i < q->num_segs; i++) { + /* mbuf is unused => rest of the chain is unused */ + if (info[i]) + return 0; + + if (rxq->mb_idx == 0) { + ret = rte_mempool_get_bulk(rxq->mb_pool, + (void **)rxq->mbs, + IONIC_MBUF_BULK_ALLOC); + if (ret) { + assert(0); + return -ENOMEM; + } + + rxq->mb_idx = IONIC_MBUF_BULK_ALLOC; + } + + rxm_seg = rxq->mbs[--rxq->mb_idx]; + info[i] = rxm_seg; + + /* The data_off does not get set to 0 until later */ + data_iova = rxm_seg->buf_iova; + sg_desc->elems[i - 1].addr = rte_cpu_to_le_64(data_iova); + } + + return 0; +} + +/* + * Walk the CQ to find completed receive descriptors. + * Any completed descriptor found is refilled. + */ +static __rte_always_inline void +ionic_rxq_service_sg(struct ionic_rx_qcq *rxq, uint32_t work_to_do, + struct ionic_rx_service *rx_svc) +{ + struct ionic_cq *cq = &rxq->qcq.cq; + struct ionic_queue *q = &rxq->qcq.q; + struct ionic_rxq_desc *q_desc_base = q->base; + struct ionic_rxq_comp *cq_desc, *cq_desc_base = cq->base; + uint32_t work_done = 0; + + cq_desc = &cq_desc_base[cq->tail_idx]; + + while (color_match(cq_desc->pkt_type_color, cq->done_color)) { + cq->tail_idx = Q_NEXT_TO_SRVC(cq, 1); + if (cq->tail_idx == 0) + cq->done_color = !cq->done_color; + + /* Prefetch 8 x 8B bufinfo */ + rte_prefetch0(IONIC_INFO_PTR(q, Q_NEXT_TO_SRVC(q, 8))); + /* Prefetch 4 x 16B comp */ + rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); + /* Prefetch 4 x 16B descriptors */ + if (!(rxq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&q_desc_base[Q_NEXT_TO_POST(q, 4)]); + + /* Clean one descriptor */ + ionic_rx_clean_one_sg(rxq, cq_desc, rx_svc); + q->tail_idx = Q_NEXT_TO_SRVC(q, 1); + + /* Fill one descriptor */ + (void)ionic_rx_fill_one_sg(rxq); + + q->head_idx = Q_NEXT_TO_POST(q, 1); + + if (++work_done == work_to_do) + break; + + cq_desc = &cq_desc_base[cq->tail_idx]; + } + + /* Update the queue indices and ring the doorbell */ + if (work_done) + ionic_q_flush(q); +} + +uint16_t +ionic_recv_pkts_sg(void *rx_queue, struct rte_mbuf **rx_pkts, + uint16_t nb_pkts) +{ + struct ionic_rx_qcq *rxq = rx_queue; + struct ionic_rx_service rx_svc; + + rx_svc.rx_pkts = rx_pkts; + rx_svc.nb_rx = 0; + + ionic_rxq_service_sg(rxq, nb_pkts, &rx_svc); + + return rx_svc.nb_rx; +} + +/* + * Fills all descriptors with mbufs. + */ +int __rte_cold +ionic_rx_fill_sg(struct ionic_rx_qcq *rxq) +{ + struct ionic_queue *q = &rxq->qcq.q; + uint32_t i; + int err = 0; + + for (i = 0; i < q->num_descs - 1u; i++) { + err = ionic_rx_fill_one_sg(rxq); + if (err) + break; + + q->head_idx = Q_NEXT_TO_POST(q, 1); + } + + ionic_q_flush(q); + + return err; +} diff --git a/drivers/net/ionic/ionic_rxtx_simple.c b/drivers/net/ionic/ionic_rxtx_simple.c new file mode 100644 index 0000000000..fe10e2624e --- /dev/null +++ b/drivers/net/ionic/ionic_rxtx_simple.c @@ -0,0 +1,417 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "ionic.h" +#include "ionic_if.h" +#include "ionic_dev.h" +#include "ionic_lif.h" +#include "ionic_rxtx.h" + +static __rte_always_inline void +ionic_tx_flush(struct ionic_tx_qcq *txq) +{ + struct ionic_cq *cq = &txq->qcq.cq; + struct ionic_queue *q = &txq->qcq.q; + struct rte_mbuf *txm; + struct ionic_txq_comp *cq_desc, *cq_desc_base = cq->base; + void **info; + + cq_desc = &cq_desc_base[cq->tail_idx]; + + while (color_match(cq_desc->color, cq->done_color)) { + cq->tail_idx = Q_NEXT_TO_SRVC(cq, 1); + if (cq->tail_idx == 0) + cq->done_color = !cq->done_color; + + /* Prefetch 4 x 16B comp at cq->tail_idx + 4 */ + if ((cq->tail_idx & 0x3) == 0) + rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); + + while (q->tail_idx != rte_le_to_cpu_16(cq_desc->comp_index)) { + /* Prefetch 8 mbuf ptrs at q->tail_idx + 2 */ + rte_prefetch0(&q->info[Q_NEXT_TO_SRVC(q, 2)]); + + /* Prefetch next mbuf */ + void **next_info = + &q->info[Q_NEXT_TO_SRVC(q, 1)]; + if (next_info[0]) + rte_mbuf_prefetch_part2(next_info[0]); + + info = &q->info[q->tail_idx]; + { + txm = info[0]; + + if (txq->flags & IONIC_QCQ_F_FAST_FREE) + rte_mempool_put(txm->pool, txm); + else + rte_pktmbuf_free_seg(txm); + + info[0] = NULL; + } + + q->tail_idx = Q_NEXT_TO_SRVC(q, 1); + } + + cq_desc = &cq_desc_base[cq->tail_idx]; + } +} + +static __rte_always_inline int +ionic_tx(struct ionic_tx_qcq *txq, struct rte_mbuf *txm) +{ + struct ionic_queue *q = &txq->qcq.q; + struct ionic_txq_desc *desc, *desc_base = q->base; + struct ionic_tx_stats *stats = &txq->stats; + void **info; + uint64_t ol_flags = txm->ol_flags; + uint64_t addr, cmd; + uint8_t opcode = IONIC_TXQ_DESC_OPCODE_CSUM_NONE; + uint8_t flags = 0; + + if (txm->nb_segs > 1) + return -EINVAL; + + desc = &desc_base[q->head_idx]; + info = &q->info[q->head_idx]; + + if ((ol_flags & RTE_MBUF_F_TX_IP_CKSUM) && + (txq->flags & IONIC_QCQ_F_CSUM_L3)) { + opcode = IONIC_TXQ_DESC_OPCODE_CSUM_HW; + flags |= IONIC_TXQ_DESC_FLAG_CSUM_L3; + } + + if (((ol_flags & RTE_MBUF_F_TX_TCP_CKSUM) && + (txq->flags & IONIC_QCQ_F_CSUM_TCP)) || + ((ol_flags & RTE_MBUF_F_TX_UDP_CKSUM) && + (txq->flags & IONIC_QCQ_F_CSUM_UDP))) { + opcode = IONIC_TXQ_DESC_OPCODE_CSUM_HW; + flags |= IONIC_TXQ_DESC_FLAG_CSUM_L4; + } + + if (opcode == IONIC_TXQ_DESC_OPCODE_CSUM_NONE) + stats->no_csum++; + + if (((ol_flags & RTE_MBUF_F_TX_OUTER_IP_CKSUM) || + (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM)) && + ((ol_flags & RTE_MBUF_F_TX_OUTER_IPV4) || + (ol_flags & RTE_MBUF_F_TX_OUTER_IPV6))) { + flags |= IONIC_TXQ_DESC_FLAG_ENCAP; + } + + if (ol_flags & RTE_MBUF_F_TX_VLAN) { + flags |= IONIC_TXQ_DESC_FLAG_VLAN; + desc->vlan_tci = rte_cpu_to_le_16(txm->vlan_tci); + } + + addr = rte_cpu_to_le_64(rte_mbuf_data_iova(txm)); + + cmd = encode_txq_desc_cmd(opcode, flags, 0, addr); + desc->cmd = rte_cpu_to_le_64(cmd); + desc->len = rte_cpu_to_le_16(txm->data_len); + + info[0] = txm; + + q->head_idx = Q_NEXT_TO_POST(q, 1); + + return 0; +} + +uint16_t +ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, + uint16_t nb_pkts) +{ + struct ionic_tx_qcq *txq = tx_queue; + struct ionic_queue *q = &txq->qcq.q; + struct ionic_tx_stats *stats = &txq->stats; + struct rte_mbuf *mbuf; + uint32_t bytes_tx = 0; + uint16_t nb_avail, nb_tx = 0; + int err; + + struct ionic_txq_desc *desc_base = q->base; + if (!(txq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&desc_base[q->head_idx]); + rte_prefetch0(&q->info[q->head_idx]); + + if (tx_pkts) { + rte_mbuf_prefetch_part1(tx_pkts[0]); + rte_mbuf_prefetch_part2(tx_pkts[0]); + } + + if (ionic_q_space_avail(q) < txq->free_thresh) { + /* Cleaning old buffers */ + ionic_tx_flush(txq); + } + + nb_avail = ionic_q_space_avail(q); + if (nb_avail < nb_pkts) { + stats->stop += nb_pkts - nb_avail; + nb_pkts = nb_avail; + } + + while (nb_tx < nb_pkts) { + uint16_t next_idx = Q_NEXT_TO_POST(q, 1); + if (!(txq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&desc_base[next_idx]); + rte_prefetch0(&q->info[next_idx]); + + if (nb_tx + 1 < nb_pkts) { + rte_mbuf_prefetch_part1(tx_pkts[nb_tx + 1]); + rte_mbuf_prefetch_part2(tx_pkts[nb_tx + 1]); + } + + mbuf = tx_pkts[nb_tx]; + + if (mbuf->ol_flags & RTE_MBUF_F_TX_TCP_SEG) + err = ionic_tx_tso(txq, mbuf); + else + err = ionic_tx(txq, mbuf); + if (err) { + stats->drop += nb_pkts - nb_tx; + break; + } + + bytes_tx += mbuf->pkt_len; + nb_tx++; + } + + if (nb_tx > 0) { + rte_wmb(); + ionic_q_flush(q); + + stats->packets += nb_tx; + stats->bytes += bytes_tx; + } + + return nb_tx; +} + +/* + * Cleans one descriptor. Connects the filled mbufs into a chain. + * Does not advance the tail index. + */ +static __rte_always_inline void +ionic_rx_clean_one(struct ionic_rx_qcq *rxq, + struct ionic_rxq_comp *cq_desc, + struct ionic_rx_service *rx_svc) +{ + struct ionic_queue *q = &rxq->qcq.q; + struct rte_mbuf *rxm; + struct ionic_rx_stats *stats = &rxq->stats; + uint64_t pkt_flags = 0; + uint32_t pkt_type; + uint16_t cq_desc_len; + uint8_t ptype, cflags; + void **info; + + cq_desc_len = rte_le_to_cpu_16(cq_desc->len); + + info = &q->info[q->tail_idx]; + + rxm = info[0]; + + if (cq_desc->status) { + stats->bad_cq_status++; + return; + } + + if (cq_desc_len > rxq->frame_size || cq_desc_len == 0) { + stats->bad_len++; + return; + } + + info[0] = NULL; + + /* Set the mbuf metadata based on the cq entry */ + rxm->rearm_data[0] = rxq->rearm_data; + rxm->pkt_len = cq_desc_len; + rxm->data_len = cq_desc_len; + + /* RSS */ + pkt_flags |= RTE_MBUF_F_RX_RSS_HASH; + rxm->hash.rss = rte_le_to_cpu_32(cq_desc->rss_hash); + + /* Vlan Strip */ + if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_VLAN) { + pkt_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; + rxm->vlan_tci = rte_le_to_cpu_16(cq_desc->vlan_tci); + } + + /* Checksum */ + if (cq_desc->csum_flags & IONIC_RXQ_COMP_CSUM_F_CALC) { + cflags = cq_desc->csum_flags & IONIC_CSUM_FLAG_MASK; + pkt_flags |= ionic_csum_flags[cflags]; + } + + rxm->ol_flags = pkt_flags; + + /* Packet Type */ + ptype = cq_desc->pkt_type_color & IONIC_RXQ_COMP_PKT_TYPE_MASK; + pkt_type = ionic_ptype_table[ptype]; + if (pkt_type == RTE_PTYPE_UNKNOWN) { + struct rte_ether_hdr *eth_h = rte_pktmbuf_mtod(rxm, + struct rte_ether_hdr *); + uint16_t ether_type = eth_h->ether_type; + if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_ARP)) + pkt_type = RTE_PTYPE_L2_ETHER_ARP; + else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_LLDP)) + pkt_type = RTE_PTYPE_L2_ETHER_LLDP; + else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_1588)) + pkt_type = RTE_PTYPE_L2_ETHER_TIMESYNC; + stats->mtods++; + } else if (pkt_flags & RTE_MBUF_F_RX_VLAN) { + pkt_type |= RTE_PTYPE_L2_ETHER_VLAN; + } else { + pkt_type |= RTE_PTYPE_L2_ETHER; + } + + rxm->packet_type = pkt_type; + + rx_svc->rx_pkts[rx_svc->nb_rx] = rxm; + rx_svc->nb_rx++; + + stats->packets++; + stats->bytes += rxm->pkt_len; +} + +/* + * Fills one descriptor with mbufs. Does not advance the head index. + */ +static __rte_always_inline int +ionic_rx_fill_one(struct ionic_rx_qcq *rxq) +{ + struct ionic_queue *q = &rxq->qcq.q; + struct rte_mbuf *rxm; + struct ionic_rxq_desc *desc, *desc_base = q->base; + rte_iova_t data_iova; + void **info; + int ret; + + info = &q->info[q->head_idx]; + desc = &desc_base[q->head_idx]; + + /* mbuf is unused */ + if (info[0]) + return 0; + + if (rxq->mb_idx == 0) { + ret = rte_mempool_get_bulk(rxq->mb_pool, + (void **)rxq->mbs, + IONIC_MBUF_BULK_ALLOC); + if (ret) { + assert(0); + return -ENOMEM; + } + + rxq->mb_idx = IONIC_MBUF_BULK_ALLOC; + } + + rxm = rxq->mbs[--rxq->mb_idx]; + info[0] = rxm; + + data_iova = rte_mbuf_data_iova_default(rxm); + desc->addr = rte_cpu_to_le_64(data_iova); + + return 0; +} + +/* + * Walk the CQ to find completed receive descriptors. + * Any completed descriptor found is refilled. + */ +static __rte_always_inline void +ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, + struct ionic_rx_service *rx_svc) +{ + struct ionic_cq *cq = &rxq->qcq.cq; + struct ionic_queue *q = &rxq->qcq.q; + struct ionic_rxq_desc *q_desc_base = q->base; + struct ionic_rxq_comp *cq_desc, *cq_desc_base = cq->base; + uint32_t work_done = 0; + + cq_desc = &cq_desc_base[cq->tail_idx]; + + while (color_match(cq_desc->pkt_type_color, cq->done_color)) { + cq->tail_idx = Q_NEXT_TO_SRVC(cq, 1); + if (cq->tail_idx == 0) + cq->done_color = !cq->done_color; + + /* Prefetch 8 x 8B bufinfo */ + rte_prefetch0(&q->info[Q_NEXT_TO_SRVC(q, 8)]); + /* Prefetch 4 x 16B comp */ + rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); + /* Prefetch 4 x 16B descriptors */ + if (!(rxq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&q_desc_base[Q_NEXT_TO_POST(q, 4)]); + + /* Clean one descriptor */ + ionic_rx_clean_one(rxq, cq_desc, rx_svc); + q->tail_idx = Q_NEXT_TO_SRVC(q, 1); + + /* Fill one descriptor */ + (void)ionic_rx_fill_one(rxq); + + q->head_idx = Q_NEXT_TO_POST(q, 1); + + if (++work_done == work_to_do) + break; + + cq_desc = &cq_desc_base[cq->tail_idx]; + } + + /* Update the queue indices and ring the doorbell */ + if (work_done) + ionic_q_flush(q); +} + +uint16_t +ionic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, + uint16_t nb_pkts) +{ + struct ionic_rx_qcq *rxq = rx_queue; + struct ionic_rx_service rx_svc; + + rx_svc.rx_pkts = rx_pkts; + rx_svc.nb_rx = 0; + + ionic_rxq_service(rxq, nb_pkts, &rx_svc); + + return rx_svc.nb_rx; +} + +/* + * Fills all descriptors with mbufs. + */ +int __rte_cold +ionic_rx_fill(struct ionic_rx_qcq *rxq) +{ + struct ionic_queue *q = &rxq->qcq.q; + uint32_t i; + int err = 0; + + for (i = 0; i < q->num_descs - 1u; i++) { + err = ionic_rx_fill_one(rxq); + if (err) + break; + + q->head_idx = Q_NEXT_TO_POST(q, 1); + } + + ionic_q_flush(q); + + return err; +} diff --git a/drivers/net/ionic/meson.build b/drivers/net/ionic/meson.build index 2869e0027c..629e6a037d 100644 --- a/drivers/net/ionic/meson.build +++ b/drivers/net/ionic/meson.build @@ -16,4 +16,6 @@ sources = files( 'ionic_main.c', 'ionic_rx_filter.c', 'ionic_rxtx.c', + 'ionic_rxtx_simple.c', + 'ionic_rxtx_sg.c', ) From patchwork Fri Oct 7 17:43:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117613 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B8320A04FD; Fri, 7 Oct 2022 19:48:10 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C518742C24; Fri, 7 Oct 2022 19:45:16 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2089.outbound.protection.outlook.com [40.107.243.89]) by mails.dpdk.org (Postfix) with ESMTP id EAA7142C02 for ; Fri, 7 Oct 2022 19:45:12 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W3QmxsQFdwQZZPqxJBztWA7j+CXjSuNebeCZq6zWkjoYbWl3tjhm7GYVULcyzxmfms0JZhFBdHp10JosQsL/nDbz9o18/vQfhrepE2RZl3tdAIzi9BiUUE8Z7ON9j2huSBCTlp55EQoG0uaZp1pvot4e2rX8+mbKDRftyQP/JSoXX1XW3OodPLCg56RftVNagJvEwvl0h9AyJvQA1D7NFdVnZduVdDFyXWxf0wobZRUBo5pf6Xzsl7z3j4f2nuZZ88opld+NAJnIiF1JjrT+NTeUAAiu3AWIfuVeR3uMOHRbPFDh9rYTWD/+T1JMh0buce2TFeCGezQU7nzXcQybtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lkEzexVPtokK4qFQ3tRIGvi+hcK4YjATsc6OBWISom4=; b=ZNS/kOnyXcvuTEdFMm4D3y3GCCn3y6RqZ0pCJLf+VnQWfnzt0tKJ2d/iBGydZGS9EukF/lo9aTXucUnaNKRdE+cv1uy6kzvoOk8OkPy2O/nKdNfEOgw6RyZ81rPKLY1OtNwx5tea6NzggsIbfl8HmYv10iPKEOMdXUMT6fHktIX/ATrXz9A6AgCnZRbaO1W7HnMH+calrKbz1gzI4kgOzWvBVPSh1J0CNU+J3UnJpChPMu5XWYWwf/ZRBDC3Q39sFQe3zHYTDuvWaZF28H+0M0W3kv3xly0f4iZ0YpK+PVrpj+Wz7E9rTpFWqICu8QLW8RRCUXhpBqVGqlAb+MtwJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lkEzexVPtokK4qFQ3tRIGvi+hcK4YjATsc6OBWISom4=; b=ya8UkeDdQYf7JXoYnMqlVXt33bNacy7EmOF17fb/Ou/OKVmuDC39gbbzCr7SRKsaR3rH0gZ2Kub8nniNdgghK8hSd2DG1xpp1hdv/kywC3GNhr8wAHisNkV4RsC4Duhspq81wcHNDBngfwZp54K0dUBkwhrlM4KrGzK2YzDH+Lo= Received: from MW4PR03CA0342.namprd03.prod.outlook.com (2603:10b6:303:dc::17) by SN7PR12MB6672.namprd12.prod.outlook.com (2603:10b6:806:26c::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.23; Fri, 7 Oct 2022 17:45:09 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::2f) by MW4PR03CA0342.outlook.office365.com (2603:10b6:303:dc::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:45:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:08 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:45:06 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 33/35] net/ionic: use a helper variable for page size Date: Fri, 7 Oct 2022 10:43:34 -0700 Message-ID: <20221007174336.54354-34-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|SN7PR12MB6672:EE_ X-MS-Office365-Filtering-Correlation-Id: 15b70c15-64d7-4d41-520a-08daa88bad72 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3exthnHidznAFwyx7sHq4HYXxhjohao3Vhd3vm78ezkRCgh9CQHQzEsJk432o+r1ZhFfK2k5WlsT61wyv3OSOX6K/VS+HDp7WwGQkLELThWOpuI2bp2TBkLPhdomhpV71We/P8SF0Ho5saRcPBUrzh7dMXj8+4bJPNak6+6MkZ5vIkjn8yr9usi8jiJblWpY4+V4JrR+cCWPf3PHqUNYb0Qocky8EEqk5F10LR9jfVKesJW8FL9D+bpcNGlzO50xm8SVoidpZGh1SHcE4Di/UYTttyRG/DhA9o00FHNIx9eNdFoIRXahDycI01+Zlvgy9gVNydMeA8QvSvB+MA9fuOywuRBLWNl1NRQcBvGQCGn9oKFDGqrr1t411h5X/RIO2WCrB1Vy80xljrMwvR3gcLyvrVErUr4jXZmYt0HguFuX4qkSR/5500OorDSN8ZmrcdTFJ3V6lALN2p4Z9Dvu4ddCBV/akLHzQHUmXRTHjEdrfBpZ1bE4Aw0p52njWhn1w+SWFkSa9V9cQFc0KN8aW5DT0FEmlc1QxmCMEn5ZLUikbudZXWqy/9oMqfyzHA9lj+0GDqN6twD6Ql2KDlJ3cDp1MDyEYE3GaOGSfLHGDL/IFHatkNyqYV1Q39cHSEmZX+uNyZf98jl/xoUColMQTghElyi+wwAHL6o/We1EbbgkLVH+KpyKrVEKE7hMWDNj0nOb47yuxW/bEJ43zVz+an7hj36C8QigK6qSia7sUok7Ore4W3c6xWApvlgjDiMyZ/iGzcYiOBcEqYxvPHr4KaDGD1c78o/5i470GkbBMrqdYzTOlC/FrB3+usQxoyNn X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(396003)(39860400002)(346002)(136003)(376002)(451199015)(36840700001)(46966006)(40470700004)(186003)(70586007)(70206006)(2616005)(41300700001)(36860700001)(40480700001)(8936002)(1076003)(16526019)(36756003)(2906002)(6666004)(40460700003)(86362001)(26005)(82740400003)(5660300002)(316002)(6916009)(81166007)(44832011)(356005)(478600001)(426003)(82310400005)(336012)(4326008)(83380400001)(47076005)(8676002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:08.8498 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 15b70c15-64d7-4d41-520a-08daa88bad72 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6672 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This improves readability. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_lif.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index affb6a44af..0affdd9dc4 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -576,6 +576,7 @@ ionic_qcq_alloc(struct ionic_lif *lif, rte_iova_t q_base_pa = 0; rte_iova_t cq_base_pa = 0; rte_iova_t sg_base_pa = 0; + size_t page_size = rte_mem_page_size(); int err; *qcq = NULL; @@ -584,18 +585,18 @@ ionic_qcq_alloc(struct ionic_lif *lif, cq_size = num_descs * cq_desc_size; sg_size = num_descs * sg_desc_size; - total_size = RTE_ALIGN(q_size, rte_mem_page_size()) + - RTE_ALIGN(cq_size, rte_mem_page_size()); + total_size = RTE_ALIGN(q_size, page_size) + + RTE_ALIGN(cq_size, page_size); /* * Note: aligning q_size/cq_size is not enough due to cq_base address * aligning as q_base could be not aligned to the page. - * Adding rte_mem_page_size(). + * Adding page_size. */ - total_size += rte_mem_page_size(); + total_size += page_size; if (flags & IONIC_QCQ_F_SG) { - total_size += RTE_ALIGN(sg_size, rte_mem_page_size()); - total_size += rte_mem_page_size(); + total_size += RTE_ALIGN(sg_size, page_size); + total_size += page_size; } new = rte_zmalloc_socket("ionic", struct_size, @@ -610,7 +611,7 @@ ionic_qcq_alloc(struct ionic_lif *lif, /* Most queue types will store 1 ptr per descriptor */ new->q.info = rte_calloc_socket("ionic", num_descs * num_segs, sizeof(void *), - rte_mem_page_size(), socket_id); + page_size, socket_id); if (!new->q.info) { IONIC_PRINT(ERR, "Cannot allocate queue info"); err = -ENOMEM; @@ -648,16 +649,13 @@ ionic_qcq_alloc(struct ionic_lif *lif, q_base = new->base; q_base_pa = new->base_pa; - cq_base = (void *)RTE_ALIGN((uintptr_t)q_base + q_size, - rte_mem_page_size()); - cq_base_pa = RTE_ALIGN(q_base_pa + q_size, - rte_mem_page_size()); + cq_base = (void *)RTE_ALIGN((uintptr_t)q_base + q_size, page_size); + cq_base_pa = RTE_ALIGN(q_base_pa + q_size, page_size); if (flags & IONIC_QCQ_F_SG) { sg_base = (void *)RTE_ALIGN((uintptr_t)cq_base + cq_size, - rte_mem_page_size()); - sg_base_pa = RTE_ALIGN(cq_base_pa + cq_size, - rte_mem_page_size()); + page_size); + sg_base_pa = RTE_ALIGN(cq_base_pa + cq_size, page_size); ionic_q_sg_map(&new->q, sg_base, sg_base_pa); } From patchwork Fri Oct 7 17:43:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117614 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9F83BA04FD; Fri, 7 Oct 2022 19:48:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3AD1242BE8; Fri, 7 Oct 2022 19:45:18 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2077.outbound.protection.outlook.com [40.107.93.77]) by mails.dpdk.org (Postfix) with ESMTP id 6C46142C02 for ; Fri, 7 Oct 2022 19:45:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AHZfCOVM6t7mL3+Ey3iSTDdYp0mIrroED4/l1WW5UIbc1MEU2Y0psSxY6WOi+gnEJtHqLY+VsFFHVomM2hBPifElc6utC26gOL1JIu285IP8rgG5E8lPcx7cNu3OFUYDb44InKC4niWD4/CCC9fYfyk/aA2RraMAl/iiUtsMezRAB/Mo9mVvP6w7074YE0/vAXVv1nN+zlA7Z9o74Sqs74fHS0CIc7BDqPw+Qs9lGoaEF49d0kEki2EiYf6uxv4e7fRl4omVjzL2HA2P7+hkwSkBaiC/8G2BeFr0na5P+bdTMY5UU3aRUc68VleXnLhPN3a7nTLYaXsTkbvu7tpUuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QynrXYAKqSJX6nAqGkgksxzCmA5AMFNLEBBUYxorZeQ=; b=RZ0872e9k+xFW8cya29jnce0fgmv0PDjLwXbOf/SokQNxq3KoC60Co04qOrTFew4hJkMV6w/rCuiJln1xbJ9+fyCewcUKdm0e0yBrVYuQG92AawEYMvNjK330haV9YodRkoL5Z4dVSyMQ3xhX+ezG8gVIGMsyWpF4dzI85gz83ZbjY1VtK9XzlfzIFnhV0vYDY0vLC5S2p04laYL3BpJr6nv9+gh8IjEzqNIOCKQwj+sIkXR4c2DjRKQZ+7K9tVij0VS06aZd3N3cpvaqdOQed6k+66YACNrXbtfli+n2CqUZKzuTq0/LuvzfySIUTbbIcnfI2XZjT7S/KVNL8CL1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QynrXYAKqSJX6nAqGkgksxzCmA5AMFNLEBBUYxorZeQ=; b=PBKdCI2bsQ4NNHNSRtSFmEbxgaWQyry2knIDNus4UO5jK9p/iltIvs0hGKCLAWIbJ+ZHGFmWNc4VC2rO/H5OHzIR0/+A8e5tSDwiwO4gSfuhdcLLTeztw3LartmlauDfDjK07RRZL1HwQ6YpGSiLVttSzam+NB17SfGgDAKTUGA= Received: from MW4PR03CA0180.namprd03.prod.outlook.com (2603:10b6:303:8d::35) by BL1PR12MB5128.namprd12.prod.outlook.com (2603:10b6:208:316::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.20; Fri, 7 Oct 2022 17:45:11 +0000 Received: from CO1NAM11FT031.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8d:cafe::d1) by MW4PR03CA0180.outlook.office365.com (2603:10b6:303:8d::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:45:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT031.mail.protection.outlook.com (10.13.174.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:10 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:45:07 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 34/35] net/ionic: retry init commands up to five times Date: Fri, 7 Oct 2022 10:43:35 -0700 Message-ID: <20221007174336.54354-35-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT031:EE_|BL1PR12MB5128:EE_ X-MS-Office365-Filtering-Correlation-Id: ff15f27b-03b2-43f8-06e4-08daa88baeb5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EjLAdav4OxC8wZK2+4/mPOI85t0E5JZQLEjIKrbjeyxLVkRWkXyQEzGgCZL/+6csIz0icg5RMVtNPC4Oob8dpSgBd7rZPWCA8InjfJHeBl1G0yB2+24UAAALQ0ghyQSyHKDIx/sQtB/RN8xSsADgg55g2w83PyzqepfJIl2qdIeEeJx/tYUMAfE2ogXocNWIEmqXqB7/W7P20Dz70TUctO+Nnrbcjl9XSR1OZdKFtcKL7HHyNKBPJ8Gl7nO47TQaD4cDdTzo4jIlxnVGKHCiztfCj8Sp6o5Gk+YUg8nVLcPGzrASHhRPz1hN5n2KD4UhIGacJJR3vzNzGj03t7V99vWyByZNgsXaz/Zhgdtx3GtVneQFva22F4L0ngFukls2THhl9i7LtT5IKrESZlgH2b4JP96Llno87B+ZSAByvamQSAVPfQBLNKUK1wv5VPx5ywlcJuhI+TkBHWRfYjllqZw7MvW4bEHQ+VBvq9U2CDQ4RNeaBRVrMW1Sb4taRL58ljDWJs++Rk4SqA4MQyiBImzI7uvspuhn0bm0Lyg/Z0QfHF/GNyGAP5kn4JWoxut30DnFE4fNrYy27QS2IW8mEVgZDiNzzXME5YRTufyRC9OgmmXHK0Xy5iqUtqnDRlzrrg4C1RmZ53LvSr0QrnNXj53iIcSXCgTvQ3MJ8ofx7jwIkmafumtBfeeOG5aIhKSRYusnxLqXNS2tHDAB4luUkuHgRAVgQo6pkPzutOe1/+UbqDPwlWovNQKZkRvZpwG0dASlnsmSPaXU1PfFr+4YGyx8aL9vqDEYshmDQqd2JM6p4uVamB7hbnJvkMnY9PYs X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(136003)(346002)(376002)(39860400002)(396003)(451199015)(40470700004)(36840700001)(46966006)(5660300002)(26005)(82740400003)(6666004)(316002)(356005)(70206006)(40460700003)(8676002)(70586007)(81166007)(4326008)(478600001)(36756003)(1076003)(86362001)(82310400005)(36860700001)(186003)(336012)(83380400001)(47076005)(2616005)(16526019)(6916009)(426003)(2906002)(41300700001)(8936002)(44832011)(40480700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:10.9647 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ff15f27b-03b2-43f8-06e4-08daa88baeb5 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT031.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5128 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org In some configurations, the FW may return EAGAIN if it is not able to respond to commands immediately. Retry the init commands in this case to prevent errors from reaching the client. Fix up some return-code stuff while here, for clarity. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_dev.h | 1 + drivers/net/ionic/ionic_lif.c | 14 ++++++++++++++ drivers/net/ionic/ionic_main.c | 4 ++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index d696de45e0..4d07d9206e 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -24,6 +24,7 @@ #define IONIC_DEVCMD_TIMEOUT 5 /* devcmd_timeout */ #define IONIC_DEVCMD_CHECK_PERIOD_US 10 /* devcmd status chk period */ +#define IONIC_DEVCMD_RETRY_WAIT_US 20000 #define IONIC_ALIGN 4096 diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 0affdd9dc4..bc6de83d56 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -1423,10 +1423,17 @@ ionic_lif_adminq_init(struct ionic_lif *lif) struct ionic_admin_qcq *aqcq = lif->adminqcq; struct ionic_queue *q = &aqcq->qcq.q; struct ionic_q_init_comp comp; + uint32_t retries = 5; int err; +retry_adminq_init: ionic_dev_cmd_adminq_init(idev, &aqcq->qcq); err = ionic_dev_cmd_wait_check(idev, IONIC_DEVCMD_TIMEOUT); + if (err == -EAGAIN && retries > 0) { + retries--; + rte_delay_us_block(IONIC_DEVCMD_RETRY_WAIT_US); + goto retry_adminq_init; + } if (err) return err; @@ -1713,12 +1720,19 @@ ionic_lif_init(struct ionic_lif *lif) { struct ionic_dev *idev = &lif->adapter->idev; struct ionic_lif_init_comp comp; + uint32_t retries = 5; int err; memset(&lif->stats_base, 0, sizeof(lif->stats_base)); +retry_lif_init: ionic_dev_cmd_lif_init(idev, lif->info_pa); err = ionic_dev_cmd_wait_check(idev, IONIC_DEVCMD_TIMEOUT); + if (err == -EAGAIN && retries > 0) { + retries--; + rte_delay_us_block(IONIC_DEVCMD_RETRY_WAIT_US); + goto retry_lif_init; + } if (err) return err; diff --git a/drivers/net/ionic/ionic_main.c b/drivers/net/ionic/ionic_main.c index 996af0a51f..3d8157dac3 100644 --- a/drivers/net/ionic/ionic_main.c +++ b/drivers/net/ionic/ionic_main.c @@ -313,10 +313,10 @@ ionic_dev_cmd_check_error(struct ionic_dev *idev) uint8_t status; status = ionic_dev_cmd_status(idev); - if (status == 0) + if (status == IONIC_RC_SUCCESS) return 0; - return -EIO; + return (status == IONIC_RC_EAGAIN) ? -EAGAIN : -EIO; } int From patchwork Fri Oct 7 17:43:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Boyer, Andrew" X-Patchwork-Id: 117615 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DDABAA04FD; Fri, 7 Oct 2022 19:48:21 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1E78842C2A; Fri, 7 Oct 2022 19:45:19 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2088.outbound.protection.outlook.com [40.107.220.88]) by mails.dpdk.org (Postfix) with ESMTP id A190A42BFB for ; Fri, 7 Oct 2022 19:45:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SAvN+cbzsjQH5E8xA2leSdFgNohXR1rbCOQt7JpoaNZDNm8t6xublK80lWNKu1i3iKr3x4K5ZI94Gxbcql3XAH2ftFS9gKs+b9RzwfaIclYJDg7Touhn6xID8EIMu3dnXJbaIdn7KLg0QBico4wkin6RWQretxR5Cd91lHynqJWDiVVd2ngEcH2CZ1S8EB2y/yhDGc9UPh+JliNA9p7LIsaz0ge/WKJsljpXGGdos/K6ZRJTBK7A5FeoNZYJ61N4avJHqXsvcInir6Tx1swQxTtpJLgCfiONwIQvZflS1SZPz7Gn90ZxhZI8zEcFswcP31YSKfb7YGC/fSJxs5mTPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XiJ6/gwJfBLlCrv9Rad56GMl0fjjaOZS05ubpFq0/NU=; b=QLQTEIZKansVgBLq4YYJUzvPRG7Zl/TyM/melFR47lQQXCVB3Kc81YR0ywh77IoU6AN0ku48Dd9T+/DEAELgo74GaATPc1IZa6TG3KlneRGRfnxFWTW9VebJIhdmdkVF9CLGIc/0Y8RT5EH/rQjH/OYO0UUjyFXh6cu4psXD9E6FZmY+KMmNou7Pwqkv7EQeU+9Txe7mLsaENto+ikd0lZT2vymhdnSTGygW5gNOzCrdVpJ6ZcldvzS1C7fn94mt5Fn0k4Gg7v2dsUB+/7YT+MISWpHB352neITC9kJ8mSRJ+Ntx1pxmHwna3HapI3d6yojzzxuxlKgtj2NZLggzBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XiJ6/gwJfBLlCrv9Rad56GMl0fjjaOZS05ubpFq0/NU=; b=aO57mQVB/T0MNNC0Xl+b2etm+brI8sb09Y8D7x5FSPx7NFtMdD3xO8VMhXXX8/DqcIN8y9hLOt4c0dfL4TVnYRMjjBAMOnr4hZYm066MokY8vkylkA3FiIpQqPlQzn7oS6sWBzXJjZWJE9zTUPxrNxRWM2sak3OXVIQRNIOqG3o= Received: from MW4PR03CA0351.namprd03.prod.outlook.com (2603:10b6:303:dc::26) by MW4PR12MB6874.namprd12.prod.outlook.com (2603:10b6:303:20b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.23; Fri, 7 Oct 2022 17:45:12 +0000 Received: from CO1NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dc:cafe::f1) by MW4PR03CA0351.outlook.office365.com (2603:10b6:303:dc::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:45:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT068.mail.protection.outlook.com (10.13.175.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:12 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:45:08 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 35/35] net/ionic: add watchdogs to protect each queue type Date: Fri, 7 Oct 2022 10:43:36 -0700 Message-ID: <20221007174336.54354-36-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT068:EE_|MW4PR12MB6874:EE_ X-MS-Office365-Filtering-Correlation-Id: cb2f2fad-3694-4e2a-4432-08daa88baf75 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HPwB29EViBhoaOlOVCyRdtma4LS6zKDpzVm4/88E9g0GSmxvsSGC+kl87cAEMLCFIzSm7sJ9iCAc/F2R5h0ESzV00Ja8/SMExi+blPMsk5XXp5P+MS5et0NlPh/Sni4Om8e/SVqKxd13ZJCeNu2bufBkMiXzZwe3RHgtVl173RwbKYQTH/3IBeOzzjHvpbyCfdTXnc79JGgBQ8nei5rxFhmtWqlH3UG149trVLehPjCv7nMAKA/Z9jM+ehpo7XGN7ahAWO7wQug5m0WoH0r9InEHWgUa/gssBe4jMOijvwzFHAfC8FXYWzYQXE0u5bt7BiaYC3lOpmOSRfMPt9l0HW6q+S1ueZwdtbumDTdX3YB/WS5+LWStB7BQpM9JA0tJvZkHqWLdM+XRoEOlYscE5QxaWtJ91N8UJaJFpPcNtyh+9P7BDEPzuCrx4neGjz5kTkfkgxNEMOwII1VnbCmRMZeVXudjck2MN/3ZnDKcQhRgu6L909INWYAHSwjktNSPaujuvwOBkAdCT6TmJkUvJAmnhJC9hLpiGyZOgl6PY6lVgfMjltl8YVXaYU6J5sOCE9w9WOK7NU8VDzQrirqeWfk/hF5tGyqVHh/XB99lnZqQD+7YrXuiZtIadA5ERu9EPePPju1YB8A06kdf6bS9u/uto30g1GskM/F86UtBkFmNmbNsl5pnQ2Bvvf90JueHdvEnLrlDWtN3bO39tf9nDgOzfAezy9lblyADpVh2CwsKpj1dr9F/FyxmdE46gmy18ZMkDtmaMEctfrwz8h8qyi3qC+gngmy6iqQFkRA4pFTjqY+nbybF8Y21E3jVS+nm X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(376002)(39860400002)(346002)(136003)(396003)(451199015)(40470700004)(46966006)(36840700001)(8936002)(36860700001)(40480700001)(8676002)(16526019)(6666004)(2616005)(44832011)(336012)(186003)(426003)(1076003)(26005)(40460700003)(36756003)(5660300002)(2906002)(41300700001)(70586007)(83380400001)(47076005)(4326008)(356005)(81166007)(70206006)(6916009)(82310400005)(86362001)(82740400003)(316002)(478600001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:12.2246 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cb2f2fad-3694-4e2a-4432-08daa88baf75 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6874 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Ring the doorbell again for the following scenarios: * No receives posted but Rx queue not empty after deadline * No transmits posted but Tx work still pending after deadline * Admin queue work still pending after deadline This will help the queues recover in the extremely rare case that a doorbell is missed by the FW. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_dev.h | 4 +++ drivers/net/ionic/ionic_lif.h | 3 ++ drivers/net/ionic/ionic_main.c | 22 ++++++++++++ drivers/net/ionic/ionic_rxtx.c | 1 + drivers/net/ionic/ionic_rxtx_sg.c | 50 ++++++++++++++++++++++++++- drivers/net/ionic/ionic_rxtx_simple.c | 50 ++++++++++++++++++++++++++- 6 files changed, 128 insertions(+), 2 deletions(-) diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index 4d07d9206e..d5d56b778d 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -26,6 +26,10 @@ #define IONIC_DEVCMD_CHECK_PERIOD_US 10 /* devcmd status chk period */ #define IONIC_DEVCMD_RETRY_WAIT_US 20000 +#define IONIC_Q_WDOG_MS 10 /* 10ms */ +#define IONIC_Q_WDOG_MAX_MS 5000 /* 5s */ +#define IONIC_ADMINQ_WDOG_MS 500 /* 500ms */ + #define IONIC_ALIGN 4096 struct ionic_adapter; diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index 2aa9f774ff..1f4686f340 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -85,6 +85,8 @@ struct ionic_rx_qcq { struct rte_mempool *mb_pool; uint64_t rearm_data; uint64_t rearm_seg_data; + uint64_t last_wdog_cycles; + uint64_t wdog_ms; uint16_t frame_size; /* Based on configured MTU */ uint16_t hdr_seg_size; /* Length of first segment of RX chain */ uint16_t seg_size; /* Length of all subsequent segments */ @@ -103,6 +105,7 @@ struct ionic_tx_qcq { struct ionic_qcq qcq; /* cacheline2 */ + uint64_t last_wdog_cycles; uint16_t num_segs_fw; /* # segs supported by current FW */ uint16_t free_thresh; uint16_t flags; diff --git a/drivers/net/ionic/ionic_main.c b/drivers/net/ionic/ionic_main.c index 3d8157dac3..8330d8dfc1 100644 --- a/drivers/net/ionic/ionic_main.c +++ b/drivers/net/ionic/ionic_main.c @@ -230,10 +230,16 @@ static int ionic_adminq_wait_for_completion(struct ionic_lif *lif, struct ionic_admin_ctx *ctx, unsigned long max_wait) { + struct ionic_queue *q = &lif->adminqcq->qcq.q; unsigned long step_usec = IONIC_DEVCMD_CHECK_PERIOD_US; + unsigned long step_deadline; unsigned long max_wait_usec = max_wait * 1000000L; unsigned long elapsed_usec = 0; int budget = 8; + uint16_t idx; + void **info; + + step_deadline = IONIC_ADMINQ_WDOG_MS * 1000 / step_usec; while (ctx->pending_work && elapsed_usec < max_wait_usec) { /* @@ -245,10 +251,26 @@ ionic_adminq_wait_for_completion(struct ionic_lif *lif, ionic_qcq_service(&lif->adminqcq->qcq, budget, ionic_adminq_service, NULL); + /* + * Ring the doorbell again if work is pending after deadline. + */ + if (ctx->pending_work && !step_deadline) { + step_deadline = IONIC_ADMINQ_WDOG_MS * + 1000 / step_usec; + + rte_spinlock_lock(&lif->adminq_lock); + idx = Q_NEXT_TO_POST(q, -1); + info = IONIC_INFO_PTR(q, idx); + if (info[0] == ctx) + ionic_q_flush(q); + rte_spinlock_unlock(&lif->adminq_lock); + } + rte_spinlock_unlock(&lif->adminq_service_lock); rte_delay_us_block(step_usec); elapsed_usec += step_usec; + step_deadline--; } return (!ctx->pending_work); diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c index 64733da535..967cc7dc9a 100644 --- a/drivers/net/ionic/ionic_rxtx.c +++ b/drivers/net/ionic/ionic_rxtx.c @@ -551,6 +551,7 @@ ionic_dev_rx_queue_setup(struct rte_eth_dev *eth_dev, } rxq->mb_pool = mp; + rxq->wdog_ms = IONIC_Q_WDOG_MS; /* * Note: the interface does not currently support diff --git a/drivers/net/ionic/ionic_rxtx_sg.c b/drivers/net/ionic/ionic_rxtx_sg.c index bdca3fa4b4..73e3114bea 100644 --- a/drivers/net/ionic/ionic_rxtx_sg.c +++ b/drivers/net/ionic/ionic_rxtx_sg.c @@ -167,6 +167,7 @@ ionic_xmit_pkts_sg(void *tx_queue, struct rte_mbuf **tx_pkts, struct rte_mbuf *mbuf; uint32_t bytes_tx = 0; uint16_t nb_avail, nb_tx = 0; + uint64_t then, now, hz, delta; int err; struct ionic_txq_desc *desc_base = q->base; @@ -220,8 +221,26 @@ ionic_xmit_pkts_sg(void *tx_queue, struct rte_mbuf **tx_pkts, rte_wmb(); ionic_q_flush(q); + txq->last_wdog_cycles = rte_get_timer_cycles(); + stats->packets += nb_tx; stats->bytes += bytes_tx; + } else { + /* + * Ring the doorbell again if no work could be posted and work + * is still pending after the deadline. + */ + if (q->head_idx != q->tail_idx) { + then = txq->last_wdog_cycles; + now = rte_get_timer_cycles(); + hz = rte_get_timer_hz(); + delta = (now - then) * 1000; + + if (delta >= hz * IONIC_Q_WDOG_MS) { + ionic_q_flush(q); + txq->last_wdog_cycles = now; + } + } } return nb_tx; @@ -421,6 +440,7 @@ ionic_rxq_service_sg(struct ionic_rx_qcq *rxq, uint32_t work_to_do, struct ionic_rxq_desc *q_desc_base = q->base; struct ionic_rxq_comp *cq_desc, *cq_desc_base = cq->base; uint32_t work_done = 0; + uint64_t then, now, hz, delta; cq_desc = &cq_desc_base[cq->tail_idx]; @@ -453,8 +473,36 @@ ionic_rxq_service_sg(struct ionic_rx_qcq *rxq, uint32_t work_to_do, } /* Update the queue indices and ring the doorbell */ - if (work_done) + if (work_done) { ionic_q_flush(q); + rxq->last_wdog_cycles = rte_get_timer_cycles(); + rxq->wdog_ms = IONIC_Q_WDOG_MS; + } else { + /* + * Ring the doorbell again if no recvs were posted and the + * recv queue is not empty after the deadline. + * + * Exponentially back off the deadline to avoid excessive + * doorbells when the recv queue is idle. + */ + if (q->head_idx != q->tail_idx) { + then = rxq->last_wdog_cycles; + now = rte_get_timer_cycles(); + hz = rte_get_timer_hz(); + delta = (now - then) * 1000; + + if (delta >= hz * rxq->wdog_ms) { + ionic_q_flush(q); + rxq->last_wdog_cycles = now; + + delta = 2 * rxq->wdog_ms; + if (delta > IONIC_Q_WDOG_MAX_MS) + delta = IONIC_Q_WDOG_MAX_MS; + + rxq->wdog_ms = delta; + } + } + } } uint16_t diff --git a/drivers/net/ionic/ionic_rxtx_simple.c b/drivers/net/ionic/ionic_rxtx_simple.c index fe10e2624e..74b9ee65c3 100644 --- a/drivers/net/ionic/ionic_rxtx_simple.c +++ b/drivers/net/ionic/ionic_rxtx_simple.c @@ -140,6 +140,7 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, struct rte_mbuf *mbuf; uint32_t bytes_tx = 0; uint16_t nb_avail, nb_tx = 0; + uint64_t then, now, hz, delta; int err; struct ionic_txq_desc *desc_base = q->base; @@ -193,8 +194,26 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, rte_wmb(); ionic_q_flush(q); + txq->last_wdog_cycles = rte_get_timer_cycles(); + stats->packets += nb_tx; stats->bytes += bytes_tx; + } else { + /* + * Ring the doorbell again if no work could be posted and work + * is still pending after the deadline. + */ + if (q->head_idx != q->tail_idx) { + then = txq->last_wdog_cycles; + now = rte_get_timer_cycles(); + hz = rte_get_timer_hz(); + delta = (now - then) * 1000; + + if (delta >= hz * IONIC_Q_WDOG_MS) { + ionic_q_flush(q); + txq->last_wdog_cycles = now; + } + } } return nb_tx; @@ -342,6 +361,7 @@ ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, struct ionic_rxq_desc *q_desc_base = q->base; struct ionic_rxq_comp *cq_desc, *cq_desc_base = cq->base; uint32_t work_done = 0; + uint64_t then, now, hz, delta; cq_desc = &cq_desc_base[cq->tail_idx]; @@ -374,8 +394,36 @@ ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, } /* Update the queue indices and ring the doorbell */ - if (work_done) + if (work_done) { ionic_q_flush(q); + rxq->last_wdog_cycles = rte_get_timer_cycles(); + rxq->wdog_ms = IONIC_Q_WDOG_MS; + } else { + /* + * Ring the doorbell again if no recvs were posted and the + * recv queue is not empty after the deadline. + * + * Exponentially back off the deadline to avoid excessive + * doorbells when the recv queue is idle. + */ + if (q->head_idx != q->tail_idx) { + then = rxq->last_wdog_cycles; + now = rte_get_timer_cycles(); + hz = rte_get_timer_hz(); + delta = (now - then) * 1000; + + if (delta >= hz * rxq->wdog_ms) { + ionic_q_flush(q); + rxq->last_wdog_cycles = now; + + delta = 2 * rxq->wdog_ms; + if (delta > IONIC_Q_WDOG_MAX_MS) + delta = IONIC_Q_WDOG_MAX_MS; + + rxq->wdog_ms = delta; + } + } + } } uint16_t