From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0064.outbound.protection.outlook.com [104.47.40.64]) by dpdk.org (Postfix) with ESMTP id 1D75A9A06 for ; Fri, 26 May 2017 08:51:53 +0200 (CEST) Received: from BLUPR0301CA0012.namprd03.prod.outlook.com (2a01:111:e400:5259::22) by BL2PR03MB164.namprd03.prod.outlook.com (2a01:111:e400:c0d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Fri, 26 May 2017 06:51:52 +0000 Received: from BL2FFO11FD009.protection.gbl (2a01:111:f400:7c09::166) by BLUPR0301CA0012.outlook.office365.com (2a01:111:e400:5259::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9 via Frontend Transport; Fri, 26 May 2017 06:51:52 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) 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.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BL2FFO11FD009.mail.protection.outlook.com (10.173.161.15) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1075.5 via Frontend Transport; Fri, 26 May 2017 06:51:52 +0000 Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.134.28]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v4Q6pQMc014894; Thu, 25 May 2017 23:51:50 -0700 From: Hemant Agrawal To: CC: , Date: Fri, 26 May 2017 12:21:18 +0530 Message-ID: <1495781485-2236-14-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1495781485-2236-1-git-send-email-hemant.agrawal@nxp.com> References: <1495445969-29199-1-git-send-email-hemant.agrawal@nxp.com> <1495781485-2236-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131402551123715657; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39410400002)(39450400003)(39840400002)(39850400002)(39860400002)(39380400002)(39400400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(85426001)(5003940100001)(81166006)(8936002)(8656002)(54906002)(53936002)(105606002)(50466002)(2950100002)(6666003)(6916009)(498600001)(69596002)(4326008)(356003)(36756003)(48376002)(110136004)(33646002)(305945005)(106466001)(5660300001)(575784001)(86362001)(50986999)(76176999)(81156014)(2906002)(8676002)(77096006)(47776003)(50226002)(2351001)(189998001)(38730400002)(104016004); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR03MB164; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD009; 1:iu4dmTU7ST1MOenWUfr0D3axC88Jya09dXCdPwHXKCH0VMlDWEtbxqQmSg9W0c+0UrctQK2MavF+jSPscYPDkZZONHwMxwYNI6OVBMNQcj/KwHfYUiYC6WOCwU24UCwS67ziKJe1rG2MYCJoFmAbb0EC1LxkGGyDd/Co4T/qJtno72FbLIHSbXyfNlNwfYR35tNCIsbecnzRtA4yzqJCMZz1MF7Xh6q3S/ylarZXSIyFzIw7u6V1kLyyJp1znV4ASaQBxew4dA9VnL3AEagHS5I9TKAgng0vjhzJijfGxuwjknftBf+2aWBErFZVIki+0z372Au43sAt0OOG8HHQP7fOzHjn4ti4yQCYg6fbDBR7c9h+WNzQbwj7N7UxLkjTMEyeSUeEE3tmWguFXZIBz7l9KQmQu81OVYSXHSudbz/nWRAi7eToXoc3nf6wwMVfXWP4Y3nIKUa7ztcf4hLQb5sTZVVVf0DtDvegAoceqVmcI5+W6vi0MY/qfEaqXKoj1+L+/nylu+dg0PMFS0lBfj/grXxBcy3/tvbZJMnL8GW8h/nbzWam/pWWczgH/H2Qhy/qMaR9TSxNGGoLuT0Lxpx72EbkY3jbyjiZ8XpJYRA0cS1B+kdSUf1+N9wgZo1IxWOHiUj8XX2jHP56M0iWnolOuSO6VY/W9peJi1ZNiNqTxu8EUwsMIZAwssmbeBlYamO7IPz5F7wJwVM59ry0LQ== MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL2PR03MB164: X-MS-Office365-Filtering-Correlation-Id: ab11a8dd-6704-48e4-c4e8-08d4a403b0c3 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BL2PR03MB164; X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB164; 3:VkRVKy0k7mhHx5d90NnKojkLAvmJjQrGupYh28hh4UPX4QESc8jQ81h6oWICCbTcBP9m4wkJCbLFBddKBU/DW9AiLUvuGtE8XiTVkoq/9NXTv5if1TpK+eZ3ih9BenbCS0iWv0nCDlLkrO5aJQR6UN4HJe/bnKRIwhczb3GPqWG1ZQ1/yUo9Ngr7+ghwsqYvM7+6tHmgv736qOzx3GWJwZ6dSP+JAaWdvc961GIM03aGXCxEID7KRkCgMDzo79KvZyJzJp3oz7BFZfJyNft6Mk6LkyHacnIlVDX3BhtmNk119aflPycUvs7EcXcN6clPwahMnz2FgdLc07RaVNrzf03Ya11VxFowy7YubiJPxPEM1b5MmRxosfMoCx1mzYu7NZkDeBdEeMmNoGLgkWHw3TyuzX2+94YaHrayZZYttBcXMy4EIarwl9gCIiB8uhm9; 25:KUNFx/lv8xLWLCiwwdaxgFGn5i8Cf+bTuafJLi7nkxCksiZMow/OBIDRkFnnlZm+ONMOhYu3Z3DQ/kEfgehiQpTjCN+LQoCKf8tsc+Ri+Q8hXKCK0pupKFiP7pMUVPVCpD+y70catfVnHyfzebA18+Cdr1C1jbyJ2gmIdvohTYUXDkStE2VfTdVQpNAvxt8cwiE2jo9V6S2MsSLrnxgpYHU06OwgCa4wg0wzNA0dlrQqn28GelNL7Pfy8IYPBvqJ/QsDYQRhzitEZeaurKwpHo8m9phxR67S+r6iuZBzkHN9dSKbUpHdjRcr12BrwZgFY5MLwG2TO+W2Tn4I7WkQ+m8C9llZaa0Q2hWL3ynNOMVXol/JhVX/k/OW9lFNfmMVEUYVBPOQJYsqR13mWm8U3iJWySe2SskHkZNB18VoFD4TczQA/jIpjKK1FUCTrOq/56vMCBbiEXbhi7l3s1hJVusFxez0ShPQICf1ckkuY7E= X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB164; 31:JTPvwSfinfTk/2lRrePaOTAUhlsJ5DIOUgdhm1et9kU64D48/l925MFGsfP5M881GJxTJqxG5UiK8dpyHJS7C25SII74jcxcbOyD2CVWJjKoBT4iGZbZf1nF9fM4YVxxipABZddHUXAxLoybI5fUW0h5SJ4R77tq53uOurOG4r/hx8Y49Okltu2ohoxvi2IDxn/qShiEb81UYvhosl2y4g4XniqdlUjeqx7m2egwkhWMjczHUNXu70ROcoyJuGgKa6BsE+28De1WFVvT3E3npw== 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)(13018025)(13016025)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(6055026)(6096035)(20161123559100)(20161123565025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123556025)(20161123561025)(20161123563025); SRVR:BL2PR03MB164; BCL:0; PCL:0; RULEID:(400006); SRVR:BL2PR03MB164; X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB164; 4:obGcvLTyhUZPLqffjzH9AgmUWNAM8AvZ7B9bhLaaTr19arwoaKPsrqApcOgP+7gYKsNgXgd2290ZcGKq+Vlr1Smq7e9yoBsClxJ555cBoAL62+fQy8xu4af0Vy7ducnRUtQ9MnENnVhCGyfOx7o3N8yov37X7ysS5v8akHm1OzWzDXZsXsjMD4wcQKc9dPBu5kiUMjKDnNy1YqgluW6a5fhLokmxG/G/j4JNt0uvMb0p5RKyWoulJY3ekwRMn04C5212HUOu4yBnojtpBfIctihs9IPqHoBmNriKSUoCeIXunxW2QyODWSTJpoq48Km9ziVCmOKGuXk5AYqBo8L7LHQ96KT+k1mON1z9YqhihBzPOKHaB8A97STkS7OMuTCA5yW0g6bNC4H/c5a3o0Z/iSsnsZ6tqvmrqjznDeQpLzblqzJkBbGrxTxoQjgp0V9DJ9giOrQgvcFvewhJoXP13i9Z8xeB30YFTWArRUDyECY0/DhQ5EFrls7gK6Ii5RtW7Xg6hXBQl6FxAckyPcdm2IfPbPcd4OpEiLuMKDJIxVC50521nIqWSHPo2h+0INdubaJWO8zvuvdW6aPg5fWYhNqK24IFr1H/ZeNlp4g/7Zb2g1zddoCojwYKU7x39Za26I7w9UhbzL2PA71yw/FEIZUs6L+vkA0nZSuA97FWiVahvbYSoubcI/QzDte57lvXwi/Vqd4HJVDPxnTTCIMu/zA4F4n7Yam63WtXASskvumyF9O65vGkZiWsCh042U+mHjW41FcscM79wcbrmabIZgnVgzVX+8Z8yf+YbAkuogtNOSr4FP3t8YFLY6fCB+H1PgiKby0XyT4Y8Qj7CDwRAm0KeqWho81Exl+/jb7YRJnR/KP8IHpkRudHW1vbFoxbbJo0urKmAcH6q3gFShAkUqCUBl510ukW0kqFkzxgvymBlhPfnQZMOjWvvQ5pICAl X-Forefront-PRVS: 031996B7EF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR03MB164; 23:LW9wMAz4mmvTjNF/2a2OxDGuY0PhP1fJgx2wFHD4/S?= =?us-ascii?Q?WVZOZNJHuHe1hmgcvUNzzoCNcpn9loRCXSMAO8OI6mbWO0V93Ukf7BcqTuRt?= =?us-ascii?Q?FA2DphwVGjO4CKrFuK0lR+K6CjLjdK9apFrOzaKGl5IglPQTkjwQabH9AhdS?= =?us-ascii?Q?YpF1Ilc5Wg/EHbi7AP2yt87l28l6gYJGLGEtDGxqXjE87rIK2sLZHJXmgitw?= =?us-ascii?Q?0jmsFRn3Y0r073/dt7l2IWaPPoDVZtOQuERon4Guxihl65kM1yAIvzqdlNMf?= =?us-ascii?Q?JZ6sBKHo109PXTewfOiE9BXeTvJKLI0aKCqzvpGYbphCdeoLUFvAhBngC6vX?= =?us-ascii?Q?5oxhxBGJ7OH6uU5kuQmwwNSbPm9p6cjoftVFsNLYiEckZ3wlZvTC6LFYWwfR?= =?us-ascii?Q?4Kg7jWFQF+43XmO6cvRyV77p/w0r4Lo1499yK5NkIN3T2T6kEZVaMS4x+4By?= =?us-ascii?Q?mlpJs4209IZSYQSFAKzDr/MUfdyr/LmfFGp1VzUeMDb2fMqAQcnzJUcT6eKy?= =?us-ascii?Q?eMJ0to8PKrhIYtdNpg7g1vwG0CtKLtp+ADxUNxDTCKThjeiqIJE9j68j8Nad?= =?us-ascii?Q?t7704S/p0cRJswXBS521K1NoW+4ubyfGMxPC+oiwovGsQbHPR/MWBc012uu0?= =?us-ascii?Q?uoXAq0s78/jmV8Nd93pH/tVegXfVMAhkQRaTRDLPc5wNce4rSygLKF0k3Bmd?= =?us-ascii?Q?rrE4G1mD84UaCpdD7RevXjfGmcasmNFLLel3JguR/C+xfjmqXQOiX/ySmbqA?= =?us-ascii?Q?mM+i/46xl9MvdwOh1tVSZYlcd3J+/3+mecbd+rM1bPpSp7hYc7qxEVkKJaRa?= =?us-ascii?Q?la50bIJz7XAZr3GWWlhNYULsxNNdsJchDrxm6B+Gh48bbRAdRN+W0LrXVsMv?= =?us-ascii?Q?qxzlVyQORXjxHfIdypgWr30JLX+K/MBOw86ZOC53AJ2OIRPHknTNS3Zlb0Is?= =?us-ascii?Q?w8tCTnvipBguOWgA7Y/4j/3yVm7JwlV1xpUAecR8F+RuRVP7B3ap0WvRPN2k?= =?us-ascii?Q?Jq6bKJprBOeARGLc915qDMagdX0v4ZOTJjFQB+baavEGb1xpZlLrcPewvhxi?= =?us-ascii?Q?hVVOnh+bHZyyUEp5NcsYbDymPJFd7vgroFSk+ACcemE1sqC6ghfC6nFKvn0h?= =?us-ascii?Q?y9XAOEU7EyACfSCOWId9K1o12lhkZl5xBWFVvOI616KQXqJAUC5gJjA6r6LJ?= =?us-ascii?Q?YGwFz4pJ6EHUtPE+mb3Npan5WgA2H1cS5IlTawQV50IBR2pePRQSoKQB975K?= =?us-ascii?Q?ovfgkYUmevZb2kMhApB7E7Y9vDpMW87ODaM+E/rEHVB2MHCbla3hS5mc3HxW?= =?us-ascii?Q?Iz703LAU1Pma9gvw2bHnM=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB164; 6:MsOk6IkKyvzookgIN+yI/llAPpim1XAKJRh2LgcEUpwhNjhsR1XiaRWGtN4GS4VTl5Vj1wqtGKBz3oiIC8Je6S7Q013YDNo6Dcw/ilEv9EhbpxoBNTW3CBJNaGPBv+hwmVK+KSPwxt3E6dzx1Yw7t/lqF9nUW41xaOZZRYNX2Ol7rcVd/2DxJXUFt/WJYt7JiC08wmzfKA3ERbMGuIRP/sSBwPMuTKmJ8thOX8y10oRA5G2cBZ2S2jogvFrjK7ZqKDyoUycPe328faEm6s+am7MCiEq5/wcj8ljgTH6O3NGMZPb407n7dSqyjZfOaeGTCjbshu2KqyuYQ4PhX+KuKjeJpO2c/zHWwApyYQPJMNpGGYhULbG48aQ2t0KscYjFMyjw+gsonukR5kM6kPQujNaaDS3dwmPvwHTog2KHFL2xIRIfUyTFlCiCtzK7yqeQHthpBbJ8qijDxYL9buVzEdF+/iBXqD2Xw33mjtKmbglxZJzkud56xZjATCgq4h/XLeckt7USb2hrEIl9zQhrDw==; 5:2xqDux82v39cAmA6yxXaUhQSl63Il9P0omt2sTN5QfBwvwSQsVibkKG7AU1+0imhbCwjZtuHwvjcemdEpvGTnWjlEm5ZIflhOIBT9Heb8XlIcL4spZ5/Bm3n9sWHrkX96z7WohTHI49oNbL4f/nVjpopy35ZPEDf6PmH9Q4JqJjg/+negQKPHxjnhYDUgEs8; 24:apFup5cvTEhnhDZFo4OmS778cRUi5ToalrCa67kITe98GxXz1ZgHrkX8J+3b9T6JxfsqBWo/MBwvmUxmP+NXZOZIdmYgZOC5phTDjBk0sQ0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB164; 7:klYbgSFUknnPnfQqfKCvWMfcrj4uGof1tmXxXtwByHUYYbQ+sssgWOdhT2hKKazG3Vr9h9jU8lsnYrspArBfFqlOf7ewjI+ZUBNgvHurqXi5F5BjrYVUQbvjVl2uSYAZM0hBqCuhtt23AAnTh7vZ5/fId5qHo2zEYg4QVPeVpcJrPYG79euaHYvf1ZgmAinnybrkMsX2mPGiXkkprjci620oZ/LiYMds627fhkWE1WrS30FD0fbOWtBBK/KWV9ildVY0WZ7fWK/CCX0OYM8A7w+Enh8tKl9HTDKp6BGXn5XB7CUTcQy3HWSa0HW1A219dOUduiLw5uX1FNE8/yaaXA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2017 06:51:52.1375 (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.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB164 Subject: [dpdk-dev] [PATCH v4 13/20] net/dpaa2: add support for VLAN filter and offload 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: , X-List-Received-Date: Fri, 26 May 2017 06:51:55 -0000 Signed-off-by: Hemant Agrawal --- doc/guides/nics/features/dpaa2.ini | 2 ++ drivers/net/dpaa2/dpaa2_ethdev.c | 55 +++++++++++++++++++++++++++++++ drivers/net/dpaa2/mc/dpni.c | 66 +++++++++++++++++++++++++++++++++++++ drivers/net/dpaa2/mc/fsl_dpni.h | 54 ++++++++++++++++++++++++++++++ drivers/net/dpaa2/mc/fsl_dpni_cmd.h | 17 ++++++++++ 5 files changed, 194 insertions(+) diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini index dddf0e0..4b1e000 100644 --- a/doc/guides/nics/features/dpaa2.ini +++ b/doc/guides/nics/features/dpaa2.ini @@ -11,6 +11,8 @@ Promiscuous mode = Y Allmulticast mode = Y Unicast MAC filter = Y RSS hash = Y +VLAN filter = Y +VLAN offload = Y L3 checksum offload = Y L4 checksum offload = Y Packet type parsing = Y diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 22e0474..46532b2 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -108,6 +108,56 @@ return 0; } +static int +dpaa2_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) +{ + int ret; + struct dpaa2_dev_priv *priv = dev->data->dev_private; + struct fsl_mc_io *dpni = priv->hw; + + PMD_INIT_FUNC_TRACE(); + + if (dpni == NULL) { + RTE_LOG(ERR, PMD, "dpni is NULL"); + return -1; + } + + if (on) + ret = dpni_add_vlan_id(dpni, CMD_PRI_LOW, + priv->token, vlan_id); + else + ret = dpni_remove_vlan_id(dpni, CMD_PRI_LOW, + priv->token, vlan_id); + + if (ret < 0) + PMD_DRV_LOG(ERR, "ret = %d Unable to add/rem vlan %d hwid =%d", + ret, vlan_id, priv->hw_id); + + return ret; +} + +static void +dpaa2_vlan_offload_set(struct rte_eth_dev *dev, int mask) +{ + struct dpaa2_dev_priv *priv = dev->data->dev_private; + struct fsl_mc_io *dpni = priv->hw; + int ret; + + PMD_INIT_FUNC_TRACE(); + + if (mask & ETH_VLAN_FILTER_MASK) { + if (dev->data->dev_conf.rxmode.hw_vlan_filter) + ret = dpni_enable_vlan_filter(dpni, CMD_PRI_LOW, + priv->token, true); + else + ret = dpni_enable_vlan_filter(dpni, CMD_PRI_LOW, + priv->token, false); + if (ret < 0) + RTE_LOG(ERR, PMD, "Unable to set vlan filter ret = %d", + ret); + } +} + static void dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { @@ -542,6 +592,9 @@ "code = %d\n", ret); return ret; } + /* VLAN Offload Settings */ + if (priv->max_vlan_filters) + dpaa2_vlan_offload_set(dev, ETH_VLAN_FILTER_MASK); return 0; } @@ -951,6 +1004,8 @@ void dpaa2_dev_stats_reset(struct rte_eth_dev *dev) .dev_infos_get = dpaa2_dev_info_get, .dev_supported_ptypes_get = dpaa2_supported_ptypes_get, .mtu_set = dpaa2_dev_mtu_set, + .vlan_filter_set = dpaa2_vlan_filter_set, + .vlan_offload_set = dpaa2_vlan_offload_set, .rx_queue_setup = dpaa2_dev_rx_queue_setup, .rx_queue_release = dpaa2_dev_rx_queue_release, .tx_queue_setup = dpaa2_dev_tx_queue_setup, diff --git a/drivers/net/dpaa2/mc/dpni.c b/drivers/net/dpaa2/mc/dpni.c index 30bb7ad..0ad6d11 100644 --- a/drivers/net/dpaa2/mc/dpni.c +++ b/drivers/net/dpaa2/mc/dpni.c @@ -708,6 +708,72 @@ int dpni_get_port_mac_addr(struct fsl_mc_io *mc_io, return 0; } +int dpni_enable_vlan_filter(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_ENABLE_VLAN_FILTER, + cmd_flags, + token); + DPNI_CMD_ENABLE_VLAN_FILTER(cmd, en); + + /* send command to mc*/ + return mc_send_command(mc_io, &cmd); +} + +int dpni_add_vlan_id(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + uint16_t vlan_id) +{ + struct mc_command cmd = { 0 }; + + /* prepare command */ + cmd.header = mc_encode_cmd_header(DPNI_CMDID_ADD_VLAN_ID, + cmd_flags, + token); + DPNI_CMD_ADD_VLAN_ID(cmd, vlan_id); + + /* send command to mc*/ + return mc_send_command(mc_io, &cmd); +} + +int dpni_remove_vlan_id(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + uint16_t vlan_id) +{ + struct mc_command cmd = { 0 }; + + /* prepare command */ + cmd.header = mc_encode_cmd_header(DPNI_CMDID_REMOVE_VLAN_ID, + cmd_flags, + token); + DPNI_CMD_REMOVE_VLAN_ID(cmd, vlan_id); + + /* send command to mc*/ + return mc_send_command(mc_io, &cmd); +} + +int dpni_clear_vlan_filters(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token) +{ + struct mc_command cmd = { 0 }; + + /* prepare command */ + cmd.header = mc_encode_cmd_header(DPNI_CMDID_CLR_VLAN_FILTERS, + cmd_flags, + token); + + /* send command to mc*/ + return mc_send_command(mc_io, &cmd); +} + int dpni_set_rx_tc_dist(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 dae57b5..2f69526 100644 --- a/drivers/net/dpaa2/mc/fsl_dpni.h +++ b/drivers/net/dpaa2/mc/fsl_dpni.h @@ -945,6 +945,60 @@ int dpni_get_port_mac_addr(struct fsl_mc_io *mc_io, uint8_t mac_addr[6]); /** + * dpni_enable_vlan_filter() - Enable/disable VLAN filtering 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_enable_vlan_filter(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + int en); + +/** + * dpni_add_vlan_id() - Add VLAN ID filter + * @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 + * @vlan_id: VLAN ID to add + * + * Return: '0' on Success; Error code otherwise. + */ +int dpni_add_vlan_id(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + uint16_t vlan_id); + +/** + * dpni_remove_vlan_id() - Remove VLAN ID filter + * @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 + * @vlan_id: VLAN ID to remove + * + * Return: '0' on Success; Error code otherwise. + */ +int dpni_remove_vlan_id(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + uint16_t vlan_id); + +/** + * dpni_clear_vlan_filters() - Clear all VLAN filters + * @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 + * + * Return: '0' on Success; Error code otherwise. + */ +int dpni_clear_vlan_filters(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token); + +/** * enum dpni_dist_mode - DPNI distribution mode * @DPNI_DIST_MODE_NONE: No distribution * @DPNI_DIST_MODE_HASH: Use hash distribution; only relevant if diff --git a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h index bd2bb3f..6e96271 100644 --- a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h +++ b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h @@ -75,6 +75,11 @@ #define DPNI_CMDID_REMOVE_MAC_ADDR ((0x227 << 4) | (0x1)) #define DPNI_CMDID_CLR_MAC_FILTERS ((0x228 << 4) | (0x1)) +#define DPNI_CMDID_ENABLE_VLAN_FILTER ((0x230 << 4) | (0x1)) +#define DPNI_CMDID_ADD_VLAN_ID ((0x231 << 4) | (0x1)) +#define DPNI_CMDID_REMOVE_VLAN_ID ((0x232 << 4) | (0x1)) +#define DPNI_CMDID_CLR_VLAN_FILTERS ((0x233 << 4) | (0x1)) + #define DPNI_CMDID_SET_RX_TC_DIST ((0x235 << 4) | (0x1)) #define DPNI_CMDID_GET_STATISTICS ((0x25D << 4) | (0x1)) @@ -325,6 +330,18 @@ MC_CMD_OP(cmd, 0, 1, 1, int, multicast); \ } while (0) +/* cmd, param, offset, width, type, arg_name */ +#define DPNI_CMD_ENABLE_VLAN_FILTER(cmd, en) \ + MC_CMD_OP(cmd, 0, 0, 1, int, en) + +/* cmd, param, offset, width, type, arg_name */ +#define DPNI_CMD_ADD_VLAN_ID(cmd, vlan_id) \ + MC_CMD_OP(cmd, 0, 32, 16, uint16_t, vlan_id) + +/* cmd, param, offset, width, type, arg_name */ +#define DPNI_CMD_REMOVE_VLAN_ID(cmd, vlan_id) \ + MC_CMD_OP(cmd, 0, 32, 16, uint16_t, vlan_id) + /* cmd, param, offset, width, type, arg_name */ #define DPNI_CMD_SET_RX_TC_DIST(cmd, tc_id, cfg) \ -- 1.9.1