From patchwork Mon Apr 9 04:48:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 37621 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 C1DD71B74C; Mon, 9 Apr 2018 06:49:22 +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 F13061B71D for ; Mon, 9 Apr 2018 06:49:08 +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=v7+ty/8NCz6xGAwlAPZEeZnLmqCGx3vmxR3j7MA6HFU=; b=kMj2GtW4k4s8/o7r61Os7QiWoEoqbz1/rFYIwSiioIWHucDd9yQMbUr6BFrR0lwtJZC/2Hq7tJPjtQ/XJ+01y8l6FG6vnTs5IUR4dzWMVrsmLPWfZjvBuUmkm7JKC0Q0BNmc3422yw6aABeme4vyGdeIvzfwife0oh+WBzDhNT4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by MWHPR0701MB3675.namprd07.prod.outlook.com (2603:10b6:301:7e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.653.12; Mon, 9 Apr 2018 04:49:05 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Rasesh Mody , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com Date: Sun, 8 Apr 2018 21:48:03 -0700 Message-Id: <1523249290-7444-8-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1522561624-15817-1-git-send-email-rasesh.mody@cavium.com> References: <1522561624-15817-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: BYAPR03CA0036.namprd03.prod.outlook.com (2603:10b6:a02:a8::49) To MWHPR0701MB3675.namprd07.prod.outlook.com (2603:10b6:301:7e::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1aecb5bb-20c2-4122-35d4-08d59dd53957 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MWHPR0701MB3675; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3675; 3:Ct2E/CuAEqfmnYHgRFGh3ke/B5IY8N0644VILCjOx0ORwXdDuHZOXLDZtvmer5sJuHhMafZRFgOCbvJHk3HR6gkvEtwbldBnk0g716TR+v9p2IiAxumlyDW5RUGXg5ESDdU9ac+DmJ9vB723/0YCZ3zouTTbSRRNBgD0dDGQcUwXreRS1beNFcd6udEcsyX7rz4ulVguK8ahEeEwMc2G6xbHqS0B1A2OMKGq7saOfB+Lu+aw2daeFiqZIp6M9HQ0; 25:lDqbGB/Va/mxqBn9tzsPLOF0Kx0VtO85o0Uq9GU1lWgT6LuEL0jtSLUbL8y6As5i05Ja08qdrWJZcK2zi3AxjTQUyz3ULmg1coH8VRomqOLWbbEdv196r3Z73HuRMZTubS8kz6HuTZ1ViZ8DVh1QplIOdO9r7zl/EZGmsJwj8KCPO1a9E278+UFPTFN/hM2/dGR/ktKwy09fW8UAYFOU1xC+7tStK6FjJdUPweE4YMkFYBfk9QifprwRZMcA7NHvQjJFfvvnVhOqqNRNnqIfdCnoukO8khqty65WBrqWHN5jrezOdyajtwPDQKeBvk795I1Y4pBC8uryIFpAkLyvZQ==; 31:H+snI9cY/PRNBfrQQC/p4EJKl3J+jA4hkQfKr+QHlX6nw3qNyMsr2umKDdTJTo/IU+gGv1PJYVdvKSRTmxZWbD3jULrCuCgfgFrt/EeePzzZ9Ev6HtzxTuxN44LkHEnTwun0iEJgA4EnOYu42EOWnpbpvilyvUnOWJTBW5uFirPG88vYe2UyMBryt1/PdtiPyeHnuYr0sdWBIJHmVlVPsoY68o905KlQOwcf/+tgBbA= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3675: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3675; 20:VHFI3qU5x57qoBh+OYKxFKEyycAspYQvBwCJO7SseBPQJsiDIhHImh2BbkkYQS+hw3taczqNGbiiDhge6Z44J1ymmXNqluVG1EpBqXXtM8zkVtihG8Wo6FKnJ2Ls+X/cjSp85KKQon6xFxWIuyqeUyO45FUO4bojBl8BHpt0kH8yO92v3F0GFpzk3EvUFg3FfnPpedZUsMk2b1mbPC7AwTM5/4hqQq+lktIp3PtKIn9bnfshMAHKlH0CXTJYN6Bn9l+GFYZCe0iC6323gZ2Z4snEKIhaxFpp6wEX1a6R5u7Z9Gww2ZYR24qwJ5O1LZifgRNgia6KZnzd3VkEOHZbbyANfyxuaEjF/ogGWwErs22KtsMqpYDle7WBZ1dQHEcoCGPttilNShjRR2R7BTzdRnfPiPOCUWRR8sF6l3N/Cp7RDCJV+TEeAlKmvBikiZ0bd9cHP94BfHH1UG9zTl7psENkvLGqEZlO/JjN+CvluavsEXcXR/+gRjBpT4lDMCn/; 4:BzCkHqcga2h6n5VwRU72Ibyksl6yWd1KUltkFUxl0PnHg9d6y2h4/bQHjlkL/x81hLC+RJ2tM2eQg+ZTCDF+ji3rd+sfkj25XkXrJ0RcSzKKZRjve0choeXb0Kbj4vy2MKvS05d8eVuO1rqpDned6al+JmZwvYm6zLdoaykj/ACMWaKvkJmODJ7pvGSUGPjgulaBjYEQEyRFk2nYzrWual0Px+79i/KRByeUy77VpL6tKiAelTdVMQfmkPvWhujxmPccY1v0zSq0lAWkIyiSWw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(3231221)(944501327)(52105095)(10201501046)(93006095)(93001095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MWHPR0701MB3675; BCL:0; PCL:0; RULEID:; SRVR:MWHPR0701MB3675; X-Forefront-PRVS: 0637FCE711 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(346002)(39380400002)(39850400004)(376002)(189003)(199004)(105586002)(8936002)(316002)(7736002)(2351001)(72206003)(305945005)(186003)(21086003)(16526019)(486006)(2906002)(2361001)(386003)(55016002)(86362001)(3846002)(478600001)(6116002)(76176011)(50226002)(51416003)(52116002)(7696005)(4326008)(50466002)(48376002)(53936002)(16586007)(81166006)(66066001)(476003)(68736007)(2616005)(11346002)(69596002)(47776003)(26005)(956004)(8676002)(97736004)(4720700003)(25786009)(107886003)(81156014)(36756003)(446003)(106356001)(5660300001)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3675; H:cavium.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR0701MB3675; 23:qNmKqUt2hs9sf2s5Z3Y8epFs06Q+znhc5ZOxD3n?= e2uyEOKSu2nm6pm/z5gjcCmgQwUqy0aohLbht+KJlU6z3MEIRpDajpi2piPchrzR+kgzt4TDkFhthnUbOC6VENM+8XM/JvVdRpPU6bT5BosU29pDBWUxHYAiEbuAAqoeYu+ZG1ohwYDx0il3oTIumN0i7DNZEF15uKjlRppg2REhVoiy/O0us6PKDnclP/Br4ZiXj2Q216DC6O4J/RxYoBot9MxDgR1hI6O1RxJX1jmtudI41/EeRDADPso9+uokMbzNfEN3XnckjkXQAheS2pQXuy4ejb83q4sn/LYgBjvT6CzV9tkCEaSnvmgLNhHq61oPjeg+nbGurCv9PlSSb8waWbmFvLo7Cd8mEnmjotxxCsVGUgz5l7k+hBOGDnVyG8EFmoyXJwsXg8rgD2aUf8tp5YeOveHTkicOpbMDi2Oqn7NolQ69g5aV3aHG5zOuwazkgyPqEbjOuTgk8ncqrPupF41f504HeHYmlfME3YZ0BjnrBkiv9NrAViQ9188xWl0QrkA+RgSQd5SVAgTCbewZASHrBUQTrDW46OsVkjQ9Uf0DwcrgSyfqWcF7/CkKnlyL9+zoYvWmjY39fu4ThitQbYT+H18RuJed+h1E1onX2WAgcdX9uocjYMhz1Tt9LycXsooMiYmhxvTBrZvs3MCYkhFAErLTziPvvbC1Ws+LoVCfwOtU+/RtwMJH4vIFHZXv01Q6T+kKSQpUpylM1Gp729niHq8J4Pc+vYAvCzKeLzar6VRbk/G1WO31LCQsevxX00J3nTiOdn6Dkpsxt6zV9PO5IaBrV6tmRbv7FAE0P6QqJHfIPwloxnrshXEjaqkpI2e4McCtFEGOiFW4R9Oycflj17uUN8AE7TXwjeZ0yTcLjFpHg8dw0HiBOf0OGEynos8FnridC2Cl9CVvxo6G6AI5lupEAFFFl6Q1vZYsHqzRs+oIJ9W9zDuLfaeNAM1ZDIKj4lH65BitEVqaGVXIPVxbu5JMsunVi5pJGcGnOF63ojqhtZ1H5kACCAEyy3pOJQl9zP1UIupxVZ0kd4KErhEJNRAEFluPRUPnSOXMNyhQobNFGVOisuxjR4s5VYgwn76oKegRnC2xuoFgae1uLEQ9khwEujI3u8VOaxEDLg5Fyd+6c8LxsMZNc2HbWnqxsLEzuJl8pOMghFM3cgu4TqdcWHC96LioQ99rSFlCNmAjh4fN+6au5bzFtOpVoYKa7WsYr/xAhexR0GS6hpDRITh6a2M/vEBwds6c18FIQJA== X-Microsoft-Antispam-Message-Info: 2iiy0KoXFiMMsrRsnBpcxmeYw0sY3puF8/4SyJ1AzEsAQMyWgZZGG1SC6FeTsaGEgo17tQSzgKifWJO/DaSJxMDjCpdTLYGSiCN0RXzmwua+t3ej8JmZRbwBfJxAyqRgoJu3k2nxdlytDgiPbdiWWaZZP1mVihXV3uE3s2YbV3fswvsBTRg/SKS33UJo52ca X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3675; 6:3KJADsi5zDKSk46vcJcJrTpMiLDpb6rB8bT1q2eHl0pE9rcnJL4jLhMQx5LtbZwALRRQGd/QARRIDyfwO+JiR7lf8ixSp37Ykbe1CCSC5Lu/dvdFhczmSaVvbXFwrRwG4WBX8HsufF7CUzgPwjwiHs9UZfpkvLla1I7jKSxkL4U4epaV+4EwRT9hRtE/HjNSTHP1wnd4kPRHSsj/QiWhyvmEJ2relTqd401vkAZBJNtuMZXkh2S+XfGZ/FLlvG8kO5jDXwMymPpEcWKMdR1UWa1k2B6LerzJXErmtYJXS3+lxRffSco8/zkALwZnWZpCwJL6oyup/CU1B/JuygV0yCDvav+dHT9y91IYmBvtDenPix3F7PtvczvDHjgocX4G6U0szLc+BtQTXgL9wARTWgP02s8zjHGB0wuUtM9UnD0vQPb9ttYaezTBDhdj3yUps/J7QxmyV5QHcKohwy710w==; 5:6BdZCwt+TR5/QgFRkxcTnUcg+sARP4EgrOv/GV6ZcQB9CeeUVMM/e27BtpfI2BakhOqkJOhDhJBZXcIb0wxVRmFoAAyYVvVVaprVuALGpu+evHqRjCnrg9rFYd1MFGCYDNrTotoxLhywEHF//K87e43jl43Xqps1X3jsQCzqNqw=; 24:KvYelMYd6ddbAEAznXyXUXpByiaosX/BiidW1sUg8VF6z8zwTMju9g5TFKMHBzCByoZNr218uifKgnTwSAnZR1s+VAVVF+vkjtjn8T14Ovs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3675; 7:Isnuqze74bgjIUpDZS5UL5fHtKI2t4hrOcmPXOkU9Dyhprsjh2hbSguM5ozCJAvF+lDj25KqLSMAfVVCPFzhz5eYuuAu0sv5uksu3RPIhHz893ITI/056cVqivkCldBLzuF3vcBAL7jxWV6O+RuNRoCdo3dlAlRqsuPyyc7ERaE2uYY7w2GDUO66bMPQQz4dyaOHtVfF129KxEdZiUe3Kah/0mwuvBau1Oh2n5G7C88pKMDDDQTUI5A4SQrs3bGn X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2018 04:49:05.6373 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1aecb5bb-20c2-4122-35d4-08d59dd53957 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3675 Subject: [dpdk-dev] [PATCH v2 07/14] net/qede/base: allow changing VF MAC address 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" This patch allows VF to change its own MAC address regardless of MAC set by PF Signed-off-by: Rasesh Mody --- drivers/net/qede/base/ecore_iov_api.h | 11 ++++++++++ drivers/net/qede/base/ecore_proto_if.h | 3 +++ drivers/net/qede/base/ecore_sriov.c | 36 +++++++++++++++++++++++++++++--- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/drivers/net/qede/base/ecore_iov_api.h b/drivers/net/qede/base/ecore_iov_api.h index 218ef50..3ac219b 100644 --- a/drivers/net/qede/base/ecore_iov_api.h +++ b/drivers/net/qede/base/ecore_iov_api.h @@ -540,6 +540,17 @@ void ecore_iov_get_vf_reply_virt_mbx_params(struct ecore_hwfn *p_hwfn, u32 ecore_iov_pfvf_msg_length(void); /** + * @brief Returns MAC address if one is configured + * + * @parm p_hwfn + * @parm rel_vf_id + * + * @return OSAL_NULL if mac isn't set; Otherwise, returns MAC. + */ +u8 *ecore_iov_bulletin_get_mac(struct ecore_hwfn *p_hwfn, + u16 rel_vf_id); + +/** * @brief Returns forced MAC address if one is configured * * @parm p_hwfn diff --git a/drivers/net/qede/base/ecore_proto_if.h b/drivers/net/qede/base/ecore_proto_if.h index abca740..d0518df 100644 --- a/drivers/net/qede/base/ecore_proto_if.h +++ b/drivers/net/qede/base/ecore_proto_if.h @@ -31,6 +31,9 @@ struct ecore_eth_pf_params { * This will set the maximal number of configured steering-filters. */ u32 num_arfs_filters; + + /* To allow VF to change its MAC despite of PF set forced MAC. */ + bool allow_vf_mac_change; }; /* Most of the parameters below are described in the FW iSCSI / TCP HSI */ diff --git a/drivers/net/qede/base/ecore_sriov.c b/drivers/net/qede/base/ecore_sriov.c index b1e26d6..b7a52f8 100644 --- a/drivers/net/qede/base/ecore_sriov.c +++ b/drivers/net/qede/base/ecore_sriov.c @@ -1968,7 +1968,8 @@ static void ecore_iov_vf_mbx_acquire(struct ecore_hwfn *p_hwfn, if (!p_vf->vport_instance) return ECORE_INVAL; - if (events & (1 << MAC_ADDR_FORCED)) { + if ((events & (1 << MAC_ADDR_FORCED)) || + p_hwfn->pf_params.eth_pf_params.allow_vf_mac_change) { /* Since there's no way [currently] of removing the MAC, * we can always assume this means we need to force it. */ @@ -1989,7 +1990,11 @@ static void ecore_iov_vf_mbx_acquire(struct ecore_hwfn *p_hwfn, return rc; } - p_vf->configured_features |= 1 << MAC_ADDR_FORCED; + if (p_hwfn->pf_params.eth_pf_params.allow_vf_mac_change) + p_vf->configured_features |= + 1 << VFPF_BULLETIN_MAC_ADDR; + else + p_vf->configured_features |= 1 << MAC_ADDR_FORCED; } if (events & (1 << VLAN_ADDR_FORCED)) { @@ -4370,7 +4375,11 @@ void ecore_iov_bulletin_set_forced_mac(struct ecore_hwfn *p_hwfn, return; } - feature = 1 << MAC_ADDR_FORCED; + if (p_hwfn->pf_params.eth_pf_params.allow_vf_mac_change) + feature = 1 << VFPF_BULLETIN_MAC_ADDR; + else + feature = 1 << MAC_ADDR_FORCED; + OSAL_MEMCPY(vf_info->bulletin.p_virt->mac, mac, ETH_ALEN); vf_info->bulletin.p_virt->valid_bitmap |= feature; @@ -4411,9 +4420,13 @@ enum _ecore_status_t ecore_iov_bulletin_set_mac(struct ecore_hwfn *p_hwfn, vf_info->bulletin.p_virt->valid_bitmap |= feature; + if (p_hwfn->pf_params.eth_pf_params.allow_vf_mac_change) + ecore_iov_configure_vport_forced(p_hwfn, vf_info, feature); + return ECORE_SUCCESS; } +#ifndef LINUX_REMOVE enum _ecore_status_t ecore_iov_bulletin_set_forced_untagged_default(struct ecore_hwfn *p_hwfn, bool b_untagged_only, int vfid) @@ -4470,6 +4483,7 @@ void ecore_iov_get_vfs_opaque_fid(struct ecore_hwfn *p_hwfn, int vfid, *opaque_fid = vf_info->opaque_fid; } +#endif void ecore_iov_bulletin_set_forced_vlan(struct ecore_hwfn *p_hwfn, u16 pvid, int vfid) @@ -4657,6 +4671,22 @@ u32 ecore_iov_pfvf_msg_length(void) return sizeof(union pfvf_tlvs); } +u8 *ecore_iov_bulletin_get_mac(struct ecore_hwfn *p_hwfn, + u16 rel_vf_id) +{ + struct ecore_vf_info *p_vf; + + p_vf = ecore_iov_get_vf_info(p_hwfn, rel_vf_id, true); + if (!p_vf || !p_vf->bulletin.p_virt) + return OSAL_NULL; + + if (!(p_vf->bulletin.p_virt->valid_bitmap & + (1 << VFPF_BULLETIN_MAC_ADDR))) + return OSAL_NULL; + + return p_vf->bulletin.p_virt->mac; +} + u8 *ecore_iov_bulletin_get_forced_mac(struct ecore_hwfn *p_hwfn, u16 rel_vf_id) { struct ecore_vf_info *p_vf;