From patchwork Wed Oct 11 07:47:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shijith Thotton X-Patchwork-Id: 30093 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E09E81B19C; Wed, 11 Oct 2017 09:48:28 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0081.outbound.protection.outlook.com [104.47.34.81]) by dpdk.org (Postfix) with ESMTP id B9804532E for ; Wed, 11 Oct 2017 09:48:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=QD9K+wLKhYt8ZUeDp6VtV90+eUVnXM+rGnmlP7KfrHk=; b=iE+FOOlULawXwPnPWZewD+ui77gFgazBx9YhiVn9eF0s7xDmVht0iRMOc4rJpulUCqXsWzkOXFIcnec6i9ReobjFq+0YWwNp9oaLirq7AeksGpLCPonY1GPkxD1y4NxUn5WwL/sinPWqvaUORw8rA8LavQBWahnT1shS/ME8AEM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shijith.Thotton@cavium.com; Received: from lio357.in.caveonetworks.com (14.140.2.178) by MWHPR07MB3070.namprd07.prod.outlook.com (10.172.97.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Wed, 11 Oct 2017 07:48:22 +0000 From: Shijith Thotton To: dev@dpdk.org Cc: Intiyaz Basha , Ferruh Yigit , dchickles@caviumnetworks.com Date: Wed, 11 Oct 2017 13:17:47 +0530 Message-Id: <1507708067-5127-1-git-send-email-shijith.thotton@caviumnetworks.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: PN1PR01CA0108.INDPRD01.PROD.OUTLOOK.COM (10.174.144.24) To MWHPR07MB3070.namprd07.prod.outlook.com (10.172.97.12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7f43e03c-0c2b-4ae7-7ab1-08d5107c7392 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:MWHPR07MB3070; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3070; 3:ZaFLroZEc52pqQYrPArzXyB38pmR5YEkdRnX2jECzDZnu8UW+aVEHHu9OOszmWoEWxBdrlgSsvKJry2RvgPT8wz/n78+EPZF69nPDGGoK25XOy5LBB6pPHjyFPar+wj0GCy+MVgeXP45WcJBQkL5k7WMdxvHOhTzsyEBBRmIYdAugd7NSQ5lSE3DGpKvPwnPNQersGRT167WBDjpEjrPOIP+EkBarr/a0txhDbJvebH/5Wu6n/IBA3K61QFmT8sH; 25:oTNzJ9z3I/Jb846eP0Ke4rp3L4M7158SRjDxkaki7MrQaFbLS2IlbVhI5snBgxZ/IYXL6VSfOw1TlT1mHf8cW0tb03zzTWx4HP9+czZIdvWTFoj9FXC8I5i2nSWantA6y+IQVvBNIZnCFYnbkN8LGUDGO8imho1bOyu2Uk7HAivD0nym5OdziPiBwnGeO+MkLloFtql8UKYI709Ra0J9hghtQRyQnoQHjCmJguTEJWgLFF2UyK0lj023GPRD754j98IlJxi1SA4FzaBGbqWwJptw9zYY0xf4hGw45LLrTqRgUCL5ySfRAAa5ZxBDmCNID9RTqiRkNMkVf0yGoOEL1Q==; 31:ueMJo3iqACCF6/+rBR1pI/DV7qI3xt0DBldr2I/4Hj0TFxaxstGR92lWwQuZhlwhcLKJG0ZnFMuWfDW2IOaJU4QuoqyBeSFQLCgcDGto+ES711Vxe/shjcusEpVw6X49Gm+1L4kCMdVAEpAhBH1oTkrAYnsZB61YRlEhGWy69R61OjONYYmR0MUzu67MNe2wcvmlSnNGvAQvynj4clrl7gU26ZEM6ALePIjfXUby0tw= X-MS-TrafficTypeDiagnostic: MWHPR07MB3070: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3070; 20:I0JT3qHXxr8yRZaoelm7Gnl7bykWPJGKHj6NOFptfFHjOWl0dvwXMtrMkZBc5j0ES/2aNxzvYzCUxzLlW5oW1Bp7yS2nXWwI64suyJGN/tSEkSX9BfO2KLEs8fUgk6W8FeX9H5Iob8zkyIDgQIOgAz7W4UtDZvohmuRDixHaIhQPXPrldJ/+Vn6fBtYHRQExzlooL/oUF6vMQqrDPjfDYcl2MORs6XJqAIB9VBxY+GH2RCZSl5Xk8b0ezBCOk8ZiKey6b5N1VxP6lveFwa3IiTjxfkkekL7PWB+dpp99EbjZScEvPdTmQBNlNsybrkA0LKOI8NE6CLzAHIONS6gmKnfSWB7rz/x3gm5TXCkexj2L7BFdPDDiuGACcYc9+nY0Nk2wj8BZojMiPQPJkZ21dri6vaDQFw6V9PMv25HlnJDyifMLLC8VxSWbPWz8VYGecbf25v0seAyJ2JrH/mtyIdm203YCA7OEGVfIfJ+MFHLnrzKo7uBmz1MUZCCerufUKrymhcmfqozxxG09DIlk87Tqf+0HSGn91xLpwiYFrokncCLRz2txQVBnetlIqATCMvoRQBI1cX0dZVogYdvyH6KglptON7gVH14A5Y1KPZ0=; 4:loMsKnm96Wt4AL0c1au/JSEiJ4pTb3+zOYGLT7mlzN+9XWNTXidAeSfJXDWHtwJBew40ib3wXdMHxVW5959yUrdRk5s/m8DqGt0BXD/7bSk6ZU+1yXS6UDOtD100NakTfGW3mGduPDtEz1KWibTbb32j+JHhJXaO0+7mc/RoDKdfCdxN47oa1kz0N74PryXyJqptvsFtVske6dZP1Vi2CSUaXsFRNbT2yibKkdtZ8QRPf6I4uCEeJdNmJGeG6mdA X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(100000703101)(100105400095)(10201501046)(3002001)(6041248)(20161123562025)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR07MB3070; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR07MB3070; X-Forefront-PRVS: 0457F11EAF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(199003)(189002)(33646002)(5660300001)(4720700003)(6666003)(5009440100003)(478600001)(107886003)(106356001)(105586002)(6512007)(2351001)(3846002)(4326008)(6116002)(101416001)(53936002)(66066001)(2361001)(81166006)(81156014)(8676002)(97736004)(47776003)(50986999)(8936002)(72206003)(189998001)(48376002)(25786009)(50466002)(16586007)(54906003)(316002)(16526018)(2906002)(5003940100001)(305945005)(36756003)(68736007)(7736002)(50226002)(575784001)(6486002)(6916009)(42882006)(6506006)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3070; H:lio357.in.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR07MB3070; 23:iEgvCGudZD+1yxGvVce11lFRqJT2oaC+fLX/pOMue?= TVBQRD3nXjKpxiYwCH23ktJIl8zNMMKx5D3ug8DsoNmvLB+p1yv2yWZUDTA1b78MqfkVXoyUmI3vaex5LuMlw/ABYCFSGy7PEAMMz62GNGu3vII86czvuIqe8ee8IioMhDfL/pq5J1sA8O4aN3Dt5ZX915xMrA2NT3XDwjBwEDVBet0hf5XKHUAOjdCwcjw6Pc077cwIMC8QVFewwinq9SUuInDh75CWW4x3gtg68bZiYovKjmBDq4KYynbUH4463spSf73U00dMLZfEF5jb+hOcFGfabX3JYt/8WGXKXcEF8jFRXG//QsoarbR+d7gVnkNQGtQE9rMipfwn6gwRK0/+wP6aXSXoVHMiZRKuUfr4n8OYEBvkDsqsWE5RlI2HMWawrTUonS4e8Y+Uw7HAByFpe6qqncZ5SBqZp0KobUJp0y2onYanElK7DyOPZuoOXIt2xaKRs09dSJ+Msxs8EuYY1ZEewr7BdFT3g3IMerHTS3i/WHhsFH1xKzeSLJVToVynVBCW6uB/Fu61qVsi3BC09Z7xkgv6PcQifM93tCSeJDywZukhxTUA/O3AEsjP0Nzc1UXCalYPa3YJpsm0U8AXOobQPLXutTW6hnz74m61DmBIO/yiiNTkbUmJ4p8Yx/pH7aarEKFusTpoewN8dBMbD78jvrTy44VmjbbxbDvHGks3CKymxOvn713AFpKo9xtyhBnwDgWYTn0Kf20QcmD8zlGH5gqc7pKn0gjik83qmqy+F5IMpy3i7SN1bxGLE+kVq1M4kzkCf1+IlkFYuodOBEJmfk8ocPyJtJXp962vcBZfU//UMU3AfMCPMesH8Ke9dgk//oPQ4aKYYsL97tY2hhWyqhKlFdTUX09L0TrBrK5XXJuW+RbcIA0vjg0Z4oFI0PT5OVMLetrttymn36vdDeTR/rDPYtBbm2SDsoYFPy+CUwsiUCalWtP9tWZAXCzuoRr5+rsbU6cJmGkmgrE4ZEhgk8hkh00d7oL5XHcaXtdd+itVp3Y8KTNcWl0XtmdrGGhQ+uKIydB1CZ7BQHkmZcVH0HwRlyU29aQB4yHXs7UKut1y+vsuAlZF3XHX8Sa1g3wNpG0JOcEip1ShYNnUTSURxcKQ3l0116j/OD638JN8SXHtuvFYE8RV9WykxReObb/zWuteEBVcU/r3t1VhPGQMXO5vqQUb0V7HxHCRQ== X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3070; 6:6b2MomTgWwC55C0zvHFfXzZq0OawfdXSWBwx2C4R8bFZUS34u/irg+NWb1E4FJwVe+8tWYXsTUPSPE5v/GCWRUEJDxG2u1smucbLt97aV3ljgoHlluQlobOt/mvDc2gsnZw5uG1x9MYbWctT/iTRLUbmu6uCOu6GgVKd/YzKvjF+PwLlbL944iTAzoTnc2A+AjW2RkuhezgBrbWh37VODQvVaZMFvnfHrNgu78sSv5EYUHDY6zP4g40Xj8YDmJtF/9B1n6PMnIwJEbFzrgcmZqC6kBh+pxj5gIKTox1leCFiLZVrMW2UZ3Ouibj4r7cXUllsZ9yNZCTV6WfymqZCMw==; 5:6EaRIt96WrZyBcYa08f5Mad+VPvpPKZKmJ8xMEPRQF7+IPkMxiPzjfHyt5tVnsLk1uLoSa3djfg0xMNJUNqpcmxmoDHfYPmh9D8Cmztg4ibEODPLAOpXnzN+664KIxvtvE+86oal6sPj2coaPpXraQ==; 24:ADmpZ+2fQKgtPW6qgoFbwATHmFBwwR3egJKHqiHLX75uuBG0RwMKRL0KGRzC4+lSHkngZsXaGFVKY2m8hXpYjg2/fSY2a30XtQw3PTG1TCM=; 7:9Ijp0QwvzirINOSzTJ6lUywtX4nTmQ4IVihiWVgYu2S4GolhttmbKKD/yrQG/zAGaLvz20H0J85UhKP2C0UksTe6KVQtVm3ZJFiEcYFUdxSnnMD1olDdXqzLMJn835wCNnIws58V1uY9FCNSldtXliHorAryAtmJAiKUWe7WS5sGWKUZv3QLYlJ6+0CF//IPPb+Fi2sHrr5bFXJ+BnKvawaTTyH9PMpZwTX1ONP6piY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2017 07:48:22.7511 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3070 Subject: [dpdk-dev] [PATCH] net/liquidio: add support for promiscuous mode 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" From: Intiyaz Basha Signed-off-by: Intiyaz Basha Signed-off-by: Shijith Thotton --- doc/guides/nics/features/liquidio.ini | 1 + doc/guides/nics/liquidio.rst | 8 ++++++ drivers/net/liquidio/base/lio_hw_defs.h | 3 +++ drivers/net/liquidio/lio_ethdev.c | 47 +++++++++++++++++++++++++++++++++ drivers/net/liquidio/lio_struct.h | 1 + 5 files changed, 60 insertions(+) diff --git a/doc/guides/nics/features/liquidio.ini b/doc/guides/nics/features/liquidio.ini index d673d7a..f628b76 100644 --- a/doc/guides/nics/features/liquidio.ini +++ b/doc/guides/nics/features/liquidio.ini @@ -10,6 +10,7 @@ Link status event = Y MTU update = Y Jumbo frame = Y Scattered Rx = Y +Promiscuous mode = Y Allmulticast mode = Y RSS hash = Y RSS key update = Y diff --git a/doc/guides/nics/liquidio.rst b/doc/guides/nics/liquidio.rst index f04cb16..4ccde0c 100644 --- a/doc/guides/nics/liquidio.rst +++ b/doc/guides/nics/liquidio.rst @@ -195,6 +195,14 @@ This section provides instructions to configure SR-IOV with Linux OS. Done testpmd> +#. Enabling VF promiscuous mode + + One VF per PF can be marked as trusted for promiscuous mode. + + .. code-block:: console + + ip link set dev vf trust on + Limitations ----------- diff --git a/drivers/net/liquidio/base/lio_hw_defs.h b/drivers/net/liquidio/base/lio_hw_defs.h index 8713519..c7f97f2 100644 --- a/drivers/net/liquidio/base/lio_hw_defs.h +++ b/drivers/net/liquidio/base/lio_hw_defs.h @@ -106,6 +106,8 @@ enum lio_card_type { #define LIO_FW_VERSION_LENGTH 32 +#define LIO_VF_TRUST_MIN_VERSION "1.7.1" + /** Tag types used by Octeon cores in its work. */ enum octeon_tag_type { OCTEON_ORDERED_TAG = 0, @@ -185,6 +187,7 @@ enum octeon_tag_type { /* Interface flags communicated between host driver and core app. */ enum lio_ifflags { + LIO_IFFLAG_PROMISC = 0x01, LIO_IFFLAG_ALLMULTI = 0x02, LIO_IFFLAG_UNICAST = 0x10 }; diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c index 5407e39..239f6af 100644 --- a/drivers/net/liquidio/lio_ethdev.c +++ b/drivers/net/liquidio/lio_ethdev.c @@ -1049,6 +1049,48 @@ struct rte_lio_xstats_name_off { } static void +lio_dev_promiscuous_enable(struct rte_eth_dev *eth_dev) +{ + struct lio_device *lio_dev = LIO_DEV(eth_dev); + + if (strcmp(lio_dev->firmware_version, LIO_VF_TRUST_MIN_VERSION) < 0) { + lio_dev_err(lio_dev, "Require firmware version >= %s\n", + LIO_VF_TRUST_MIN_VERSION); + return; + } + + if (!lio_dev->intf_open) { + lio_dev_err(lio_dev, "Port %d down, can't enable promiscuous\n", + lio_dev->port_id); + return; + } + + lio_dev->ifflags |= LIO_IFFLAG_PROMISC; + lio_change_dev_flag(eth_dev); +} + +static void +lio_dev_promiscuous_disable(struct rte_eth_dev *eth_dev) +{ + struct lio_device *lio_dev = LIO_DEV(eth_dev); + + if (strcmp(lio_dev->firmware_version, LIO_VF_TRUST_MIN_VERSION) < 0) { + lio_dev_err(lio_dev, "Require firmware version >= %s\n", + LIO_VF_TRUST_MIN_VERSION); + return; + } + + if (!lio_dev->intf_open) { + lio_dev_err(lio_dev, "Port %d down, can't disable promiscuous\n", + lio_dev->port_id); + return; + } + + lio_dev->ifflags &= ~LIO_IFFLAG_PROMISC; + lio_change_dev_flag(eth_dev); +} + +static void lio_dev_allmulticast_enable(struct rte_eth_dev *eth_dev) { struct lio_device *lio_dev = LIO_DEV(eth_dev); @@ -1748,6 +1790,9 @@ static int lio_dev_configure(struct rte_eth_dev *eth_dev) goto nic_config_fail; } + snprintf(lio_dev->firmware_version, LIO_FW_VERSION_LENGTH, "%s", + resp->cfg_info.lio_firmware_version); + lio_swap_8B_data((uint64_t *)(&resp->cfg_info), sizeof(struct octeon_if_cfg_info) >> 3); @@ -1851,6 +1896,8 @@ static int lio_dev_configure(struct rte_eth_dev *eth_dev) .dev_set_link_up = lio_dev_set_link_up, .dev_set_link_down = lio_dev_set_link_down, .dev_close = lio_dev_close, + .promiscuous_enable = lio_dev_promiscuous_enable, + .promiscuous_disable = lio_dev_promiscuous_disable, .allmulticast_enable = lio_dev_allmulticast_enable, .allmulticast_disable = lio_dev_allmulticast_disable, .link_update = lio_dev_link_update, diff --git a/drivers/net/liquidio/lio_struct.h b/drivers/net/liquidio/lio_struct.h index d9cbf00..635e47f 100644 --- a/drivers/net/liquidio/lio_struct.h +++ b/drivers/net/liquidio/lio_struct.h @@ -685,5 +685,6 @@ struct lio_device { uint8_t port_configured; struct lio_rss_ctx rss_state; uint8_t port_id; + char firmware_version[LIO_FW_VERSION_LENGTH]; }; #endif /* _LIO_STRUCT_H_ */