From patchwork Tue Dec 5 02:54:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134849 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 23F4B433FD; Tue, 5 Dec 2023 03:55:49 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0FCED42DCB; Tue, 5 Dec 2023 03:55:27 +0100 (CET) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2102.outbound.protection.outlook.com [40.107.102.102]) by mails.dpdk.org (Postfix) with ESMTP id A1A9042DA7 for ; Tue, 5 Dec 2023 03:55:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G5o5RlJhx0x/q632X91S+fFJSFB88j2lypntnNNzNvrnj9ZYxeZhAE7JHdv1F1fRRB37e3H78K2UoP/i07kIMAOI5txttYIst4fPo0Zjy2BFjxHZ9zaujvKsTVlm6FhCnxJruWeGDb3/vmQeqdUqycU1noJG5PTwl7XbpltVOjJoEGvtiLMgRC7TyIisCvXTXN+TacA75DFoIKbkoaD51behnyr7csqEo9W040H6YdTfpnfBz7U0zJBPrf3AI/BO39mvLVTqeV/0FzceJIb63YBFywx6BjCVzfqgFpMSQ8ADX0czlG3N97Gd64IJ8FZHHWmGYE3PK0XX9ZQMVGahPg== 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=UsBITjl5kM3ImPCXok1Pl6AQjbFZ/JssMvw2CU756V0=; b=V1un/+1kuClsONU3LL9VaBE/P6bQfA2znrVplFPf66sIrxMRw9qWnhbfdTjI7RDSdpAaljYnkaMJPGKCreq6+MvlgyIRXRCipaRnLVLzFcSr3vIoToQ/vwTR7JKmx5n85r3SeIcHbRQ2EBIkikjtvgXAdbPmb444oF+YDB7hASq0yzRoS4wuUXv1TBSQHOOkjhILq4lGkuqO+eRAUTq1jAwPK/80t8wGtOsPyc999SME1UJoYZHcoRXEYdBPbp1WoOETyEkhINEukWQfyTjryNKZzI8IUXKrjC2D6zyNnmbOQGaL6wapjGTdwZ35gZ/qfTpGvGQbhhpWQL18ZB29Zw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UsBITjl5kM3ImPCXok1Pl6AQjbFZ/JssMvw2CU756V0=; b=EWrk79/HVAPPser7emCZ1FWadcvGBtUYBvKHRCG2HJgPoM1YHE1PHjRbz6Q9y2MZv1GB9+rgOLNCIIiTozs8KXbrqHu3DVvZ/vmFvIfxBbxogFdAIO8RaIBlldZjYaiKFhWMLjsrtnzqn+RrCdwl2h8frm029wJoUAMIKiGZqnQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by LV3PR13MB6528.namprd13.prod.outlook.com (2603:10b6:408:1a5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55:23 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.7046.033; Tue, 5 Dec 2023 02:55:23 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 03/11] net/nfp: add the control message channel Date: Tue, 5 Dec 2023 10:54:49 +0800 Message-Id: <20231205025457.1067372-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|LV3PR13MB6528:EE_ X-MS-Office365-Filtering-Correlation-Id: e6e12338-bede-46a5-dadc-08dbf53d9fe6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5ERMf0uFN87c0PksY4s20ovSFoKwd2SjhCK1PSZa4Bu01LUS8kRGsUHY/jFyvAKnUIs8KPL8pSWjwxJ5NJpUrSrXvuJueX4tOPw/YLPhMJzxcitFxTdXWo+LZ/ZJGK4n337WOvGTGvPNdzaQI2Came597Jf4iYkaaEHfyG2UAuzidGJMBHRi0wfKKifVojj19+3YEH867VxbEB1ttboO5HDJNbQClxAn/1Dz0KTsPmn2jU/7ibv+1tZWFAKzFGARn1/j4xgBgn8iEy0DfQyTiA+Fld2NFsfpzREO5SXoAcwid885mdbNAM66sIcPqQf2sv7jR+DfEDWDNuv7hzMEHirN404XGQlRoBI3hvPL1yBfMs4qDwplmLSXHTOK6MWmMfWWHl/lH4U9JO6tgR1QmuRRFwikAB2gWq+0/RaHBhPyRykQK12X89jvc2u2wQIoJgy58qkDOYO9T2zwaSbvLVOkATQ8SsQ9ST1K1TdIMNYq+PJdpvaR4LOextQxFCEyvl6NvS7DtNGPEq4aduBvDpvuy6vh6vCLLN/zmygE+MvqsC8gMrJl/JNm1WRPwgLXfNs9pQ56OCe3dcuhAnoLTy3uUvWKZQqJdqqs0bBMLCcK11HBq3f7vO9Nn0WudTtZlPffsyXesEf6v2LdHJU3eM4r7I56rkeh5uKLN/tmaqU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(39840400004)(376002)(230922051799003)(186009)(1800799012)(451199024)(64100799003)(2906002)(86362001)(44832011)(4326008)(8676002)(8936002)(15650500001)(5660300002)(36756003)(41300700001)(38350700005)(26005)(2616005)(52116002)(478600001)(6506007)(6486002)(6512007)(1076003)(316002)(54906003)(6916009)(66476007)(83380400001)(6666004)(38100700002)(66556008)(107886003)(66946007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eKYamDWry8ZiySaVZJZ2hjb7zDWbySOhSK7PT7eYP62/LsDC5AHWlwTy3xXFhYwQMCNCsCe6Y77RjxUrN5l6RjifkNZNFNtd5gs6IwWGtjmgzyQQiQYOZ1uWNWxkC3Jsw7B6xKusMIcfs08UezlVACe7ZUF781m/ePNo3eFqUdkaRL2oEQNwd8ddKA1Zc7LcxnBGE+sHrIFv57ffE5PTrFvtSXrOR/WqkxmmJhlIpCZ7Si+1+G7+XBbKUkELZ1AupJc1DrNntirGe2zMR0InbScYyGFQK4RMkilgks8njgkuDMJsenYqoi8MCTw84C50OyPC07Kng4duaXkzj2VKhewg3JHRzWp09KAHNRFu2eC/OXvjbd+AWLxKxIHuapnNEV5v7edCNjWs3PlmjaO8E7OkibtSlO+ATayeyRDd3MUH/toY7lzjgj5+5j3xHII2F9oY538QW7fWTdx2J0fnYvCTUZI61NHHHBjzJJMDEQU9aAuFd9dflnFuJ/ZRhiPkQzHPv2UORjAWEKsnJqOye17fp6lXwPdXF42Q4Ub8OUGMbQjXpkGnQ7mkaErXwEl7AOc9GbBsUx0BJClvLidAG93lejOL7BjojKtAPOkgRQEUKGB6sMl711P4Ymh9jl2Nv6gxg9OZpOjocIM+F1+9JJhav0HqtdyiSxN3ou+Mfrs3dC6agUiEzgb/hQcNrOulckjI4/fAiwAK5Ak/pe0rQ3b+1i97Jkqp4edkPDCwlxd3oz1uUNn6UhcItL8nV40dtf0mHJb2fLAx8nG9I8O3NnIh6hsB7tINaNEiizJlVQbYGLymAoxlPrKdTQCx6pH6dA09p4RxgmGwuIqnxEPsY9sYdymjDfu/9kkWpNFi8fb4OU9bgQWJtCVgpmlIcUmvYt9KWg+UNnqepi30/vzxtQor6Orqmzl96BG/Y+3fDXL1jhKKabPZXtrEnaNbgpLwUDPxbZIeBYuKWkaee5UY9LaFkGbU7ZR+4gBfuPPtKz3K7gCpRuMaZ1Vn1w7jPYLNmhN0TCe1mdJoe82cGdNbvG33iLHuHCSjX8bki22Wdg0rDOa890MImLGu4AxlOzZn7ID9AGlLE4UHFMZJqCJXLysHnqWBjRqTmgewIrP+3+iBvDp1sLtVgdWW0/LHg4PAT8bby6ww+Oc3nEMr4XpXA1raTxgGbhJKrvMOVAFqwh3QV4vYZw3JSUkm0rRtsLujI46leuxNwcZkRYqkjYRcXLg4CPlbOIkPyXRgS/RBq3CPKkZqjp+Zeo4pFaOWOKQ0fy8yr2pLidC8Z358j8m4WDOM6v3dxsgSIu3YLnUzveFS5qyDpp2TndItmo1Q+gDe6MIAQMkI5CrMFNKnxN5sFATyYZfp/edi9N3/ZBBV/uKqK3kw+HKtw6OURORp61VHjh6Hdwwnc22Emo5DqZDWJ6XwiBfULNO/A0BiI9+n5y1OPhGc/u+nVjUKv0RGm3RAClJ8Ab2e0CiP8OzTR7U0w6IldKbbl9FpqZM7wXrDOGsyhBuwTKTZn2KJzNmOeSfUz6ColsrCCXKM7Mtdp4YU5oUIOlVX4w1PA2N+b/rq1o8c8ZsG/khejTbZ/FeFpxJCSX255F2GEBnGYuIQ4j5dKw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6e12338-bede-46a5-dadc-08dbf53d9fe6 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:23.0335 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oCV++I8J+NuZCHWi1BtfjuLjid92URgH36Y76kK1KfHScvIR0484iW1fEo8KyEj4xEayYrpTIbHsc2Mo6UUwYObX1yUUbL2P18HoyZs+z1g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR13MB6528 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 Using the mailbox, which serves as the control message channel between driver and CoreNIC firmware. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/meson.build | 1 + drivers/net/nfp/nfp_net_cmsg.c | 66 ++++++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_cmsg.h | 37 +++++++++++++++++++ drivers/net/nfp/nfp_net_ctrl.h | 1 + 4 files changed, 105 insertions(+) create mode 100644 drivers/net/nfp/nfp_net_cmsg.c create mode 100644 drivers/net/nfp/nfp_net_cmsg.h diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index 0d0a0bd8f4..46be6f60cd 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -34,6 +34,7 @@ sources = files( 'nfp_ipsec.c', 'nfp_logs.c', 'nfp_mtr.c', + 'nfp_net_cmsg.c', 'nfp_net_common.c', 'nfp_net_ctrl.c', 'nfp_net_flow.c', diff --git a/drivers/net/nfp/nfp_net_cmsg.c b/drivers/net/nfp/nfp_net_cmsg.c new file mode 100644 index 0000000000..f2f694be0b --- /dev/null +++ b/drivers/net/nfp/nfp_net_cmsg.c @@ -0,0 +1,66 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_net_cmsg.h" + +#include + +#include "nfp_logs.h" + +struct nfp_net_cmsg * +nfp_net_cmsg_alloc(uint32_t msg_size) +{ + struct nfp_net_cmsg *cmsg; + + cmsg = rte_zmalloc(NULL, msg_size, 0); + if (cmsg == NULL) { + PMD_DRV_LOG(ERR, "Failed malloc memory."); + return NULL; + } + + return cmsg; +} + +void +nfp_net_cmsg_free(struct nfp_net_cmsg *cmsg) +{ + rte_free(cmsg); +} + +int +nfp_net_cmsg_xmit(struct nfp_net_hw *hw, + struct nfp_net_cmsg *cmsg, + uint32_t msg_size) +{ + int ret; + uint32_t i; + + for (i = 0; i < msg_size; i++) + nn_cfg_writel(&hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i, *((uint32_t *)cmsg + i)); + + ret = nfp_net_mbox_reconfig(hw, NFP_NET_CFG_MBOX_CMD_FLOW_STEER); + switch (ret) { + case NFP_NET_CFG_MBOX_RET_FS_OK: + break; + case NFP_NET_CFG_MBOX_RET_FS_ERR_NO_SPACE: + PMD_DRV_LOG(ERR, "Not enough space for cmd %u", cmsg->cmd); + ret = -ENOSPC; + break; + case NFP_NET_CFG_MBOX_RET_FS_ERR_MASK_FULL: + PMD_DRV_LOG(ERR, "The mask table is full for cmd %u", cmsg->cmd); + ret = -EXFULL; + break; + case NFP_NET_CFG_MBOX_RET_FS_ERR_CMD_INVALID: + PMD_DRV_LOG(ERR, "The mbox cmd %u invalid", cmsg->cmd); + ret = -EINVAL; + break; + default: + PMD_DRV_LOG(ERR, "Unrecognized mbox cmd %u", cmsg->cmd); + ret = -EINVAL; + break; + } + + return ret; +} diff --git a/drivers/net/nfp/nfp_net_cmsg.h b/drivers/net/nfp/nfp_net_cmsg.h new file mode 100644 index 0000000000..15e0bb60d8 --- /dev/null +++ b/drivers/net/nfp/nfp_net_cmsg.h @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_NET_CMSG_H__ +#define __NFP_NET_CMSG_H__ + +#include "nfp_net_common.h" + +enum nfp_net_cfg_mbox_cmd { + NFP_NET_CFG_MBOX_CMD_FS_ADD_V4, /* Add Flow Steer rule for V4 table */ + NFP_NET_CFG_MBOX_CMD_FS_DEL_V4, /* Delete Flow Steer rule for V4 table */ + NFP_NET_CFG_MBOX_CMD_FS_ADD_V6, /* Add Flow Steer rule for V4 table */ + NFP_NET_CFG_MBOX_CMD_FS_DEL_V6, /* Delete Flow Steer rule for V4 table */ + NFP_NET_CFG_MBOX_CMD_FS_ADD_ETHTYPE, /* Add Flow Steer rule for Ethtype table */ + NFP_NET_CFG_MBOX_CMD_FS_DEL_ETHTYPE, /* Delete Flow Steer rule for Ethtype table */ +}; + +enum nfp_net_cfg_mbox_ret { + NFP_NET_CFG_MBOX_RET_FS_OK, /* No error happen */ + NFP_NET_CFG_MBOX_RET_FS_ERR_NO_SPACE, /* Return error code no space */ + NFP_NET_CFG_MBOX_RET_FS_ERR_MASK_FULL, /* Return error code mask table full */ + NFP_NET_CFG_MBOX_RET_FS_ERR_CMD_INVALID, /* Return error code invalid cmd */ +}; + +/* 4B cmd, and up to 500B data. */ +struct nfp_net_cmsg { + uint32_t cmd; /**< One of nfp_net_cfg_mbox_cmd */ + uint32_t data[0]; +}; + +struct nfp_net_cmsg *nfp_net_cmsg_alloc(uint32_t msg_size); +void nfp_net_cmsg_free(struct nfp_net_cmsg *cmsg); +int nfp_net_cmsg_xmit(struct nfp_net_hw *hw, struct nfp_net_cmsg *cmsg, uint32_t msg_size); + +#endif /* __NFP_NET_CMSG_H__ */ diff --git a/drivers/net/nfp/nfp_net_ctrl.h b/drivers/net/nfp/nfp_net_ctrl.h index ee1b784bb1..7ac0f89571 100644 --- a/drivers/net/nfp/nfp_net_ctrl.h +++ b/drivers/net/nfp/nfp_net_ctrl.h @@ -92,6 +92,7 @@ #define NFP_NET_CFG_MBOX_SIMPLE_VAL 0x8 #define NFP_NET_CFG_MBOX_CMD_IPSEC 3 +#define NFP_NET_CFG_MBOX_CMD_FLOW_STEER 10 /* * TLV capabilities