From patchwork Mon May 22 09:39:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 24437 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 [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id E15C77CB0; Mon, 22 May 2017 11:40:35 +0200 (CEST) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0045.outbound.protection.outlook.com [104.47.42.45]) by dpdk.org (Postfix) with ESMTP id 3E48737A0 for ; Mon, 22 May 2017 11:40:11 +0200 (CEST) Received: from DM2PR03CA0001.namprd03.prod.outlook.com (10.141.96.11) by BY1PR0301MB0904.namprd03.prod.outlook.com (10.160.195.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1101.14; Mon, 22 May 2017 09:40:09 +0000 Received: from BL2FFO11FD056.protection.gbl (2a01:111:f400:7c09::158) by DM2PR03CA0001.outlook.office365.com (2a01:111:e400:2428::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1101.14 via Frontend Transport; Mon, 22 May 2017 09:40:09 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD056.mail.protection.outlook.com (10.173.161.184) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1075.5 via Frontend Transport; Mon, 22 May 2017 09:40:10 +0000 Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v4M9dk47031538; Mon, 22 May 2017 02:40:07 -0700 From: Hemant Agrawal To: CC: , Date: Mon, 22 May 2017 15:09:21 +0530 Message-ID: <1495445969-29199-13-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1495445969-29199-1-git-send-email-hemant.agrawal@nxp.com> References: <1494851864-26029-1-git-send-email-hemant.agrawal@nxp.com> <1495445969-29199-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131399196107073951; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39840400002)(39860400002)(39450400003)(39380400002)(39410400002)(39850400002)(39400400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(36756003)(53936002)(6666003)(356003)(110136004)(8656002)(38730400002)(50466002)(2906002)(48376002)(189998001)(5660300001)(54906002)(305945005)(76176999)(498600001)(50986999)(6916009)(2950100002)(5003940100001)(575784001)(104016004)(85426001)(77096006)(4326008)(50226002)(81166006)(86362001)(8936002)(8676002)(105606002)(2351001)(106466001)(33646002)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0301MB0904; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD056; 1:E9MSBKXzke4xXGpol6udob1DYjEAnHXI1/01XhtAFP2CYfDWh/zT5NH5gqSJipH3m3izAbb1vCA/mcL0URI8LedrH/mNXE1dUtLJrdW17GzJegbYmMFO8P04XWQV2LX6TA8uYhhAFHZkpkevGXU/qFtwp4KTtIAuBwSy+EJHXKkGU9yRERv4L9yooKyo+Nk7SDs3OPGnsbGaLfubXny1tPg0oYwfANrQdYIWHwGBOBU3ibZjrMzbYR8JfqAKkm9Wu1NBvn8AyuaYK4yMPFIS/E5LnG2es9VOofFfUKWo5/TJV06yU5e01K4GMmUp/0fYSBNl7SNCpedLqpbURjEO7b9QKCDgiwORds15L+vnhYLXChq9MlJ+mH3Ubcf4elhMeBoW8QWOFQRH3mCZZSI/orVo9dpsnZqfiMuJH4UpEygE4m7CKclkD1Zj1LDHmMQN/XogmxdEQfrVepIcaVfAfehk2BH3yhCWUDHm665pSb2iwfOk0unt9FVoe8RK9S56WFCXTYPzIiFP5SAzdEjYSEovRYrMJK1p4Sbi9NX38NayBsHPPjb0Fi3DS41Ib2RQCANCgiu9r6fqyQ8O15N5qY4Qb7xIeKvtnhDpJW9NiJ79Xbrw/o/KOvP1UEf9XVRpQoFW1IMHS3rlTIOB5GJlEBKsa3qWzJ5Uv0uMYZoY0lSDSSVsuFVNaz474CQvHfH8yFoeoyCFZKMgXolM6Vnl1bnPek+Ye+W9NtvN/NktIy7zf3j4IMyqoE5bAqMeg8OEEsw1tKaZyyBVWp/Uv31nkw== MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR0301MB0904: X-MS-Office365-Filtering-Correlation-Id: 67eeffc4-8483-4b3a-e99f-08d4a0f68a32 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BY1PR0301MB0904; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB0904; 3:4YhgJXzWpnBKH7+2aJuYqaj1TcCDRw2UGvCGbDq/Pk/J23O4+3kB9LIW59FVbdyzHZK4OpHhnYIghTy/2hiydbB7J7JkvvxAH5UrVsz8OMpHyIyJX9EMCukh11XdUee+xchHQpHDUw+ZB5bNvkqBS99cT7ksky0En4z4wkbYZ94arb6fbT7rZZxoJzxvxXwQG2ujfOSJcs448zpfi2laWa0ocAped22XBaGCJ/oVqcTGr7Mtqu0iHmjICaSonl2kSLNkiSY++a490otEwptvxXv5IPgoMEP5d5Ig0QcDo1HSyx9CE0ZXgQ313BUMfSn0PKS8BkRndid9RDhXtWCPCO/YLBXgmc8y5dGLDr8G0l3uUj53CeatjpPT7A4Q5fe83GXSnMaqd9B+wJ3a8qOlxnuWk/6okuqQU0AiFUWKNo8ciSu9Oa8+Pp7EU/z4334H; 25:8G9zeVB0RXEDEH+VCMpRSGG8HNyE2pBAi368Kt/eOE6JmySlTTRNcWi5z5XRD+0PUCuflLZOYwmAJHrCGdmXbVv/Wkqnco00AkoBILJf65k3/uQeulvwy7dwxlWggEQzJGiOLh989Vw2CsHhu8DJhin2afIMd1MPYwMhwXiJj6TPiAt3QYP0o/xv3ccNj4Nu9zSaS3yWb5FKR76xwRZ+9nusswjLktN+XQCOdIvPCLMSY9E2dIp0KstbThB0Qh2eMVoWb3C+MJFGyGR+vrQ+ckKJbk/v5hqY6F2PdM9YaVtO9prKI1koqLXYnuViQZdQXIbegsh3gfShbNpFGfMuZdE3zgaW+d0YR/LULykkCNi/F2cN/KxzHyLTAAcoYZG/JPIrvCAhxpAahG9CQsSpkLZF94tHfQYz+2s10kLBKdC20q2l93/tL77xxuHrcOo3WxmjScV0hpFMCYbjQTqGMJvbjTDQr16Nh5huMlVX6PM= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB0904; 31:NpiUeImmfJKnNtSDhLsTzfI7mDnyuAKqVk7Da2GFO1Q8tzl/Ta6jPaof65qyKlSGgx5aG+9Vjn3yaIhyXS9B+K2DoB5X26KlRn4SEcVYR/nhU11pDdcPNhC+k/m7GptQyfWmdOaognCVnnZPHN+7d5tJYXuKbs9jhu4Yyjpm038GPpSOT/DaeXd97bc9YwL9w6mweFGPZuc6LN3vb3BjEctY1nA9udT/vRStUaNq7LfGKe2YbRB1dLgIOstHPkGwg6jpAMazTKwEqO+T1yhOPA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(5005006)(13024025)(13015025)(8121501046)(13017025)(13018025)(13023025)(3002001)(93006095)(93001095)(10201501046)(6055026)(6096035)(20161123556025)(20161123563025)(20161123561025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123559100)(20161123565025); SRVR:BY1PR0301MB0904; BCL:0; PCL:0; RULEID:(400006); SRVR:BY1PR0301MB0904; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB0904; 4:GfWmWt3p4X8+TDlrAO91AoJuivZYg4YYRgSvtKcR?= d8RXMFEpvi1RQwU7sMqrr9ZM7v9jTOEhssV3c+ii4r5v0a/RBbD/fm/3LlYViLIYr18Cfvou+FNpX6z7KiYdrQMktbfxHmaMpHapCTOAXGXc6Kz8Q82vCX/kLMxi4Wu3WOtDczRfdMHAVDxQ9wUHC+T/ZFuxOFBQ8e9V0o/yg2XXA6rqJhw0u+CB9ZL7YkCwRz04/LbIbEmGDICNbReBOyxmzgYYG/K7zO54Fh9OXMLVzPjHnG8+Yddqiy3mW3+gzULNpl/XrU8EroJ4+B+lJumpCv7Ap4TswwEx5bEu8pJMWfb+XfdhKJ8nJf9YbNMy0NLYagwB0PTCu60fX5UWnrEyuOWg6X/5hb5ZY+82qeiwstiNZRJLwHULZaz1fp/AWSM0RaJ/IIepAzq/5m+HmLwX3c9iyOzUhuw/ktb0gmMPYf6e3Q7QWv4BEJ89DvWIgTgHzfATB1SPC58Le2nDldpaeIqeu3VJIh6CMJ3JV9Rv7CFwOpYbnWOt7O/gMGvWm2P5qOQN9P3vAefxBL4iSGGpbG8HsG0QiHrisg/j3joSf3jN+IMXAU47av9x3Sv9fR5ADLWR40ScMILt91S+Ectfb6UExl75tjQOJJBCjvia29TVm7zZQ3h59DmSJ2rigDIN3M0Qnxt1RuRd1RPsHyLys84A+1NvbC4iI2TEQ886ACROraYbGDsagSn/FirGRI/Ln2Mdhv8khZuhMVcKDnrCyy6Cdpx3s0iwM/86n6WM+sgVnbfhOdXr0ssTpU09jFbv0VDqEzaGhh47FTRFC3NYH6ZrowtSRiFAtrfS7Qa9G93Ksu0dCqmSWGEZHoFMVKFvsF6crCPsw4G7bDipjK0QzbbY9RPCGwQVc+ufTlvpYme9o8xM/8Kk4G8NrXPAdgaRPqlLRubU2m9KQHwE0xE9GU/jiw32F3ENt0cJufp8g/s2KcGud+DnvQrP/kwCmw0= X-Forefront-PRVS: 03152A99FF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB0904; 23:bwo0zOtEl5My+UAF8iHwbK+fAO42GbyXKGhd9YR?= tf+KyVEugRGPBpvi2d1DlEa67iEsdev1bB9gvz8yf4iOb8DYY/xgLSrENgjphyvrJgOzFc6wc4i9qIxZxmiP4BLqFV243OCr63KSAycwyD7ca5Yk576G1O8eOImae0tUhgP2hsL2Rd/4bQT3/ScLT8BtdREFcSu61eeiJbCVYz9XgfADHYfefJDa7I7LZoUPYydYOagC2MGnHJpKkVgmfDbX0svlhnoJqlPxxF7i8PnSql/oYX/GYLI4lKfQs547vQVk1UsC0mFV4blhYqUVyrJkCgITu3qpgl1KTtBzPZhvtX+HOHXnikJ33bWQ5eRcyYPs2HPe6IuAP0GuK8jwzmmplup0l5uWoD3bLy/6EEo/ot/+uq1D5DJdJe+onUS4Hor8ZB7I3BpCtXy8I6dJqveL30sZWp77Fpc4MbuV1xYkL89g0G95PwgZpPfe3V4VrDvZ7XcuFXyxfmYorUCGBphV9SdAV93WLCyYUmOfs3oFGzuwOca180g4Z5UtZ8SxkGwCgYYxsKLOYpu8Cg8AUabIdm57DMB5SExRxVdNQ6aMBM+tbIAagC+tS6bCdatK0LT36I2TkQI4qpZmPbpRS5aG0P5t1TUsauf+yg3s+SxVc1tgSTAiXYVvb4vKQkibgztISIjtBR+HsUAnyav6Yx64YunjUJtcb5T4FKFv21GW7J90fKvEuUBkeMHYDTESnLM6BVDk11NHNSJambJhYhSx0EP8IxudWq127OBmvwYSBUogtq9Kf7FFRo0DazqYcMa22jzSI9lT7ClONa2q9J0b0VHPA65ut5u9ta/IYHyzqJ8vBKtuhwJX/GRb04i3ixB9PznfQpheLvQr3AmkI+8WfD4RIW41tDcWWWivY3oIl+NQAa4ZPhTYvSDnvf035JmWvkKH1rZc8K6K9+wsviKKlJerrYoubQZj+JBdT9G76iW8WzV//CRDBO4iibXtaSIEk7DXMgybP0vi7+l/nqecNYNC2IEROVU8ScDKjfBdnwJPd2pxQS1a3MAb02mQHvAaY7hI5rgZZwjMM3sBu8Rnt1ZzyP69jF8AcKYJWrVvdk+IJtAniH9fk4cc15etJHJxrzJClivmZWUl/RqpeZUeZX7+UVdHe8PpTJAQb7bHEwDLdNJben/CR27JqNcbMiqXZ1iMCgzxaXaX/2XpeZqZgaQdOEg+k7zRoI3GX6GRfKsxKtHr5+9tD2cxByUpC6u121ZvpNUFxkzQb0FijeqsQ X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB0904; 6:QE2uJvp1ORvmcy+Md9zubjzUmM6VhNSeANCLOGmsThOFwBaj8kn8cgwbry/wGYaytTtUFq6MMofmcR1A1Q63wmFTYhAYFAx1U4eSuGspDhV525CZFcWkB5Ff2PUNtc+EUM609i7porbKWgY1sMc6I0kXRR7vsietV33JomEpZe/MUm7eEk/NpEpaHc2ii7GOg0xHQFD9jo4KqcGivvT8qs5x7tkVaaes92p7wc+7kdfI/eWmVMF/KLqD/sMtfepRW1spSwreIQzO3iDv6dFi+QGiTc86C7B6KQjZRoENs8AKbnJANF2fNZGd6kadwJIwA5/kEb6cDKZTPAndKjTLUD8q4Nd0V+7PZmZy3KtaP/TW70PLCbeHDBbBi9/edwaa0hPX5UjFGaF5iPVPc2neecCFhLNcC5Bi1EV6CVkgf+KeHQE8q0ujxB0PhI0wQ3jQHwsDL3uW0v/IL235FOfH3KsOli1tkpfrVm3lYeFOLEhCZzMiSGwO8iVK5GUWPS4iCbq8bMy7qkdGpFJM8Ks1Wg==; 5:equG4e/d26NuC+qMU/wQxT//ZegPtrhTt42CmW7/1d6B4cfKs6oviJL90BqHKXWfGMl38/7a2u3LDzwprOBeqHgkPoAq7H5UzUr2S543ZubSocRT1qiy+zS/uqxqwzwcffy7kK3f1O1GEFC3rGlG25WvwuyMV7SDD5wasikXp7EvfrVURQUI6jSyEeo4Pxi3; 24:7DH54nFVU8OxBWsDh6tgOLQ3hRa5kR7D1WjbzNmBqXgdPyEYcD9zvJfAjFc61iMW/OryARnExINBFlvh04l787YUIfNyEDgnF4qPoMnfPQA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB0904; 7:uvPG6yKGqakjN3IOyjWUqZez+NRUU7C+FvGa+p0jPw/t4TuAZaLbNnQ/KyZWWWarPnG17wNefgY2w66QFAKDmo4Bwlxv1ahawJ9wwtewc/spMS0pKto+wqse84xjgvCwCxk+RW8BdUY+xejrQzobomIvWKGkf8Nmz0ZsteLDJX0IiABFJTuOx+2CDulaDDYuId4nfkbvPyuF8tj3ZUvYnuhIgTcMEKuR1bgIxzj9mHER2Xm92QuOricLoIH4tt0WYep52YUKAexebS0gmrw43+/exansKe9IIXz/99UWn+TWKNg3nYJiYZju4bHZSvgvSrLxETmK96sKr4fFEKYsQw== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2017 09:40:10.5357 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0301MB0904 Subject: [dpdk-dev] [PATCH v3 12/20] net/dpaa2: add support for multicast 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" Signed-off-by: Hemant Agrawal --- doc/guides/nics/features/dpaa2.ini | 1 + drivers/net/dpaa2/dpaa2_ethdev.c | 61 +++++++++++++++++++++++++++++++++++-- drivers/net/dpaa2/mc/dpni.c | 41 +++++++++++++++++++++++++ drivers/net/dpaa2/mc/fsl_dpni.h | 27 ++++++++++++++++ drivers/net/dpaa2/mc/fsl_dpni_cmd.h | 10 ++++++ 5 files changed, 138 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini index 470853c..dddf0e0 100644 --- a/doc/guides/nics/features/dpaa2.ini +++ b/doc/guides/nics/features/dpaa2.ini @@ -8,6 +8,7 @@ Link status = Y Queue start/stop = Y MTU update = Y Promiscuous mode = Y +Allmulticast mode = Y Unicast MAC filter = Y RSS hash = Y L3 checksum offload = Y diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 5180871..22e0474 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -617,7 +617,11 @@ ret = dpni_set_unicast_promisc(dpni, CMD_PRI_LOW, priv->token, true); if (ret < 0) - RTE_LOG(ERR, PMD, "Unable to enable promiscuous mode %d", ret); + RTE_LOG(ERR, PMD, "Unable to enable U promisc mode %d", ret); + + ret = dpni_set_multicast_promisc(dpni, CMD_PRI_LOW, priv->token, true); + if (ret < 0) + RTE_LOG(ERR, PMD, "Unable to enable M promisc mode %d", ret); } static void @@ -637,7 +641,58 @@ ret = dpni_set_unicast_promisc(dpni, CMD_PRI_LOW, priv->token, false); if (ret < 0) - RTE_LOG(ERR, PMD, "Unable to disable promiscuous mode %d", ret); + RTE_LOG(ERR, PMD, "Unable to disable U promisc mode %d", ret); + + if (dev->data->all_multicast == 0) { + ret = dpni_set_multicast_promisc(dpni, CMD_PRI_LOW, + priv->token, false); + if (ret < 0) + RTE_LOG(ERR, PMD, "Unable to disable M promisc mode %d", + ret); + } +} + +static void +dpaa2_dev_allmulticast_enable( + struct rte_eth_dev *dev) +{ + int ret; + struct dpaa2_dev_priv *priv = dev->data->dev_private; + struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw; + + PMD_INIT_FUNC_TRACE(); + + if (dpni == NULL) { + RTE_LOG(ERR, PMD, "dpni is NULL"); + return; + } + + ret = dpni_set_multicast_promisc(dpni, CMD_PRI_LOW, priv->token, true); + if (ret < 0) + RTE_LOG(ERR, PMD, "Unable to enable multicast mode %d", ret); +} + +static void +dpaa2_dev_allmulticast_disable(struct rte_eth_dev *dev) +{ + int ret; + struct dpaa2_dev_priv *priv = dev->data->dev_private; + struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw; + + PMD_INIT_FUNC_TRACE(); + + if (dpni == NULL) { + RTE_LOG(ERR, PMD, "dpni is NULL"); + return; + } + + /* must remain on for all promiscuous */ + if (dev->data->promiscuous == 1) + return; + + ret = dpni_set_multicast_promisc(dpni, CMD_PRI_LOW, priv->token, false); + if (ret < 0) + RTE_LOG(ERR, PMD, "Unable to disable multicast mode %d", ret); } static int @@ -888,6 +943,8 @@ void dpaa2_dev_stats_reset(struct rte_eth_dev *dev) .dev_close = dpaa2_dev_close, .promiscuous_enable = dpaa2_dev_promiscuous_enable, .promiscuous_disable = dpaa2_dev_promiscuous_disable, + .allmulticast_enable = dpaa2_dev_allmulticast_enable, + .allmulticast_disable = dpaa2_dev_allmulticast_disable, .link_update = dpaa2_dev_link_update, .stats_get = dpaa2_dev_stats_get, .stats_reset = dpaa2_dev_stats_reset, diff --git a/drivers/net/dpaa2/mc/dpni.c b/drivers/net/dpaa2/mc/dpni.c index 38c5f3f..54a1568 100644 --- a/drivers/net/dpaa2/mc/dpni.c +++ b/drivers/net/dpaa2/mc/dpni.c @@ -509,6 +509,47 @@ int dpni_get_max_frame_length(struct fsl_mc_io *mc_io, return 0; } +int dpni_set_multicast_promisc(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + int en) +{ + struct mc_command cmd = { 0 }; + + /* prepare command */ + cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_MCAST_PROMISC, + cmd_flags, + token); + DPNI_CMD_SET_MULTICAST_PROMISC(cmd, en); + + /* send command to mc*/ + return mc_send_command(mc_io, &cmd); +} + +int dpni_get_multicast_promisc(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + int *en) +{ + struct mc_command cmd = { 0 }; + int err; + + /* prepare command */ + cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_MCAST_PROMISC, + cmd_flags, + token); + + /* send command to mc*/ + err = mc_send_command(mc_io, &cmd); + if (err) + return err; + + /* retrieve response parameters */ + DPNI_RSP_GET_MULTICAST_PROMISC(cmd, *en); + + return 0; +} + int dpni_set_unicast_promisc(struct fsl_mc_io *mc_io, uint32_t cmd_flags, uint16_t token, diff --git a/drivers/net/dpaa2/mc/fsl_dpni.h b/drivers/net/dpaa2/mc/fsl_dpni.h index ae18b5a..03519fa 100644 --- a/drivers/net/dpaa2/mc/fsl_dpni.h +++ b/drivers/net/dpaa2/mc/fsl_dpni.h @@ -797,6 +797,33 @@ int dpni_get_max_frame_length(struct fsl_mc_io *mc_io, uint16_t token, uint16_t *max_frame_length); +/** + * dpni_set_multicast_promisc() - Enable/disable multicast promiscuous mode + * @mc_io: Pointer to MC portal's I/O object + * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' + * @token: Token of DPNI object + * @en: Set to '1' to enable; '0' to disable + * + * Return: '0' on Success; Error code otherwise. + */ +int dpni_set_multicast_promisc(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + int en); + +/** + * dpni_get_multicast_promisc() - Get multicast promiscuous mode + * @mc_io: Pointer to MC portal's I/O object + * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' + * @token: Token of DPNI object + * @en: Returns '1' if enabled; '0' otherwise + * + * Return: '0' on Success; Error code otherwise. + */ +int dpni_get_multicast_promisc(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + int *en); /** * dpni_set_unicast_promisc() - Enable/disable unicast promiscuous mode diff --git a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h index 1ae734a..bd2bb3f 100644 --- a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h +++ b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h @@ -65,6 +65,8 @@ #define DPNI_CMDID_SET_MAX_FRAME_LENGTH ((0x216 << 4) | (0x1)) #define DPNI_CMDID_GET_MAX_FRAME_LENGTH ((0x217 << 4) | (0x1)) +#define DPNI_CMDID_SET_MCAST_PROMISC ((0x220 << 4) | (0x1)) +#define DPNI_CMDID_GET_MCAST_PROMISC ((0x221 << 4) | (0x1)) #define DPNI_CMDID_SET_UNICAST_PROMISC ((0x222 << 4) | (0x1)) #define DPNI_CMDID_GET_UNICAST_PROMISC ((0x223 << 4) | (0x1)) #define DPNI_CMDID_SET_PRIM_MAC ((0x224 << 4) | (0x1)) @@ -247,6 +249,14 @@ MC_RSP_OP(cmd, 0, 0, 16, uint16_t, max_frame_length) /* cmd, param, offset, width, type, arg_name */ +#define DPNI_CMD_SET_MULTICAST_PROMISC(cmd, en) \ + MC_CMD_OP(cmd, 0, 0, 1, int, en) + +/* cmd, param, offset, width, type, arg_name */ +#define DPNI_RSP_GET_MULTICAST_PROMISC(cmd, en) \ + MC_RSP_OP(cmd, 0, 0, 1, int, en) + +/* cmd, param, offset, width, type, arg_name */ #define DPNI_CMD_SET_UNICAST_PROMISC(cmd, en) \ MC_CMD_OP(cmd, 0, 0, 1, int, en)