From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0EF05A04F1; Wed, 11 Dec 2019 10:53:12 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A4AA11BF8C; Wed, 11 Dec 2019 10:52:17 +0100 (CET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140123.outbound.protection.outlook.com [40.107.14.123]) by dpdk.org (Postfix) with ESMTP id 3AB581BF85 for ; Wed, 11 Dec 2019 10:52:16 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VdlOtNtQlQFF8U8fOSClIHn63l0kH5nmKleiy1Z3w8FEnAvItwzrsLRytpQf4Du3+PLodzDDKiHgxLT5D5wcgLDy/usm7/vWRpbmyzd6TVdrK8Z81jgvxBUS8HR+TT3aIP3zdU9rzWymSFrP0WtnlL0ly5iuuziu/nS0QFHubz6oMOqPsPTbL0a7BajxJHDOzc2xASB2ZUK8d+eFPBCxbfiGjs6VpdMD9vXjZsVtzO5kF/etu/5YLehRxWJpRxPsZg77hNVOZwLGfNyrZ26Lk2NwMQtPLJ19vfllRHviyuWVIgGeh8q+4p8z4RwdufQjeaylXhTLF7SNcA3lL8DFcQ== 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-SenderADCheck; bh=1IyWw4puaWJ7ST9i0QRgjHQB6LXMJtJLeLgzcKsQN3Y=; b=QRH6SRvkUruoLr38ICKYnjIEedhcuHLzeNmsR/XSDhsC3p/P6Pfea19ATKNF0l8GrJGocBJIFIDuz4gyg2pnXrBv1siIG4+Xvdw70vN8X4utTJKlBaI5eAUJEeqTzmf7+XcZxWmFA0ekx50vGMxTpi5lcyTw0IKVdyZ3ubutmTAF2dpFKHyUcVp1vTdmoWqT1Ir3ToZBEImFV0lfoKktuOQpxbH4ABWOhUQpv/HQeoVZHZmAqBt+7Bkde8UmfMLl7efiOEublPJTnlKKsOsMyLmkxGpauV+IQb518XVsJjwlHUwLIluyBsKT3HN+iE4rqJXUfGnP0kX8vH+KQdSVAA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silicom.co.il; dmarc=pass action=none header.from=silicom.co.il; dkim=pass header.d=silicom.co.il; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=SILICOMLTD.onmicrosoft.com; s=selector2-SILICOMLTD-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1IyWw4puaWJ7ST9i0QRgjHQB6LXMJtJLeLgzcKsQN3Y=; b=obeezYj/Tc129f3FXUnBeXoms3OJiAoXpuFsan8hfvWIsFKqQcvcZlfYVPplqwqVbXufC9YnB1MqoaCUd5DxG2SaERT/I7hk0GG8ibHMfJpYRTj6O5RoVWJGoYzdaNie8iUJif8bjy/1HrfggRDhDa/0EZ852f58Z3lyIxfeghM= Received: from DB7PR04MB5196.eurprd04.prod.outlook.com (20.176.234.140) by DB7PR04MB4203.eurprd04.prod.outlook.com (52.135.131.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2538.14; Wed, 11 Dec 2019 09:52:15 +0000 Received: from DB7PR04MB5196.eurprd04.prod.outlook.com ([fe80::cdaa:fcae:322b:59ed]) by DB7PR04MB5196.eurprd04.prod.outlook.com ([fe80::cdaa:fcae:322b:59ed%7]) with mapi id 15.20.2516.018; Wed, 11 Dec 2019 09:52:15 +0000 From: Xiaojun Liu To: "xiao.w.wang@intel.com" , "qi.z.zhang@intel.com" , "ngai-mint.kwan@intel.com" , "jakub.fornal@intel.co" , "jacob.e.keller@intel.com" CC: "dev@dpdk.org" , Xiaojun Liu Thread-Topic: [PATCH v2 6/7] net/fm10k: add mirror and filter ctrl Thread-Index: AQHVsAir8Oo79bKWvkmtbdc7dbEPHA== Date: Wed, 11 Dec 2019 09:52:15 +0000 Message-ID: <1576057875-7677-7-git-send-email-xiaojun.liu@silicom.co.il> References: <1576057875-7677-1-git-send-email-xiaojun.liu@silicom.co.il> In-Reply-To: <1576057875-7677-1-git-send-email-xiaojun.liu@silicom.co.il> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR02CA0180.apcprd02.prod.outlook.com (2603:1096:201:21::16) To DB7PR04MB5196.eurprd04.prod.outlook.com (2603:10a6:10:1a::12) authentication-results: spf=none (sender IP is ) smtp.mailfrom=xiaojun.liu@silicom.co.il; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 1.8.3.1 x-originating-ip: [113.110.226.253] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7ef02289-5eeb-42d6-1bfe-08d77e1fcd6f x-ms-traffictypediagnostic: DB7PR04MB4203: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2276; x-forefront-prvs: 024847EE92 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(366004)(136003)(39850400004)(376002)(396003)(199004)(189003)(2906002)(71200400001)(81156014)(64756008)(316002)(66556008)(6506007)(44832011)(8676002)(52116002)(81166006)(26005)(66476007)(54906003)(110136005)(66946007)(186003)(36756003)(6512007)(4326008)(86362001)(2616005)(107886003)(6486002)(66446008)(8936002)(5660300002)(478600001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB7PR04MB4203; H:DB7PR04MB5196.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: silicom.co.il does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uqb8UvxkWaBnBMnSfc6ZCpSr0pgnvHEPzz2WLttVzj5sZ6mO8YVZz2H1slNd//ntMVU8d1h08LJSKYF8ev+HoJ7D5721WXZyOTM44hXq7Gh6LKGDzxK6bMUiAtWAZsuY67xOxO6pHc9L6fLRPMHbFEGy+77igvJ7v5K3oMiaf0Ndsf7cZw0fys/OWxjAIg22MiLGe7i3Qm0MUb7Tr62yEa8yEigiltg87rUnSfKN9eawNRyDTtY8YOdBMYMbkR8sO3Voa9awFoO99YB3if/LY1YLPuEbaOhaCoBIF+ERs2kkuXs8hxSuZxE9+tX6gljohtVzqTdakNomiV2JHg45inXNmDsVXY9NO8Dcnz1Rca5FFwWzE71vGHCw25PynKhO9oocNt+O2aIpLkA/XA/cDcaaaoufB+aoWtBFmJ9RohycSKRJDk5kKh7j7rUZBW3i Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: silicom.co.il X-MS-Exchange-CrossTenant-Network-Message-Id: 7ef02289-5eeb-42d6-1bfe-08d77e1fcd6f X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Dec 2019 09:52:15.3530 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: c9e326d8-ce47-4930-8612-cc99d3c87ad1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dDSRtfnzOTybgGFXvdDm9U/Hk1OCyFYqsaz+yFxdoLn2PlmhME6Lu27DZkzdADsUPPX9w4ltofOliHqXVCgUduV/z2aAr69w/rQXsdMAKQw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4203 Subject: [dpdk-dev] [PATCH v2 6/7] net/fm10k: add mirror and filter ctrl X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Modify fm10k/fm10k_ethdev.c. Add fm10k_mirror_rule_set/fm10k_mirror_rule_reset to support mirror operation. Add fm10k_dev_filter_ctrl to support flow operation. To avoid configuration for both kernel driver and userspace SDK outside DPDK, we add switch management in FM10K DPDK PMD driver. To enable switch management, you need add CONFIG_RTE_FM10K_MANAGEMENT=3Dy in config/common_linux when building. Signed-off-by: Xiaojun Liu --- drivers/net/fm10k/fm10k_ethdev.c | 76 ++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 76 insertions(+) diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_eth= dev.c index 4c81952..1c01684 100644 --- a/drivers/net/fm10k/fm10k_ethdev.c +++ b/drivers/net/fm10k/fm10k_ethdev.c @@ -2288,6 +2288,77 @@ static uint64_t fm10k_get_tx_port_offloads_capa(stru= ct rte_eth_dev *dev) return 0; } =20 +#ifdef ENABLE_FM10K_MANAGEMENT +static int +fm10k_mirror_rule_set(struct rte_eth_dev *dev, + struct rte_eth_mirror_conf *mirror_conf, + uint8_t sw_id, uint8_t on) +{ + struct fm10k_hw *hw =3D FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private); + + PMD_INIT_LOG(DEBUG, + "Mirror set, switch %d to port %d attach vlan %d on %d", + sw_id, mirror_conf->dst_pool, + mirror_conf->vlan.vlan_id[0], on); + + if (on) { + if (fm10k_switch_mirror_set(hw, + mirror_conf->dst_pool, + mirror_conf->vlan.vlan_id[0]) < 0) { + PMD_INIT_LOG(ERR, "Input wrong port!!!"); + return -1; + } + } else { + if (fm10k_switch_mirror_reset(hw) < 0) { + PMD_INIT_LOG(ERR, "Input wrong port!!!"); + return -1; + } + } + + return 0; +} + + +static int +fm10k_mirror_rule_reset(struct rte_eth_dev *dev, uint8_t sw_id) +{ + struct fm10k_hw *hw =3D FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private); + + PMD_INIT_LOG(DEBUG, "Mirror reset, switch %d", sw_id); + + fm10k_switch_mirror_reset(hw); + + return 0; +} + +static int +fm10k_dev_filter_ctrl(struct rte_eth_dev *dev, + enum rte_filter_type filter_type, + enum rte_filter_op filter_op, + void *arg) +{ + int ret =3D 0; + + if (dev =3D=3D NULL) + return -EINVAL; + + switch (filter_type) { + case RTE_ETH_FILTER_GENERIC: + if (filter_op !=3D RTE_ETH_FILTER_GET) + return -EINVAL; + *(const void **)arg =3D fm10k_flow_ops_get(); + break; + default: + PMD_DRV_LOG(WARNING, "Filter type (%d) not supported", + filter_type); + ret =3D -EINVAL; + break; + } + + return ret; +} +#endif + static void fm10k_dev_enable_intr_pf(struct rte_eth_dev *dev) { @@ -2949,6 +3020,11 @@ static uint64_t fm10k_get_tx_port_offloads_capa(stru= ct rte_eth_dev *dev) .reta_query =3D fm10k_reta_query, .rss_hash_update =3D fm10k_rss_hash_update, .rss_hash_conf_get =3D fm10k_rss_hash_conf_get, +#ifdef ENABLE_FM10K_MANAGEMENT + .mirror_rule_set =3D fm10k_mirror_rule_set, + .mirror_rule_reset =3D fm10k_mirror_rule_reset, + .filter_ctrl =3D fm10k_dev_filter_ctrl, +#endif }; =20 static int ftag_check_handler(__rte_unused const char *key, --=20 1.8.3.1