From patchwork Sun Apr 1 05:46:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 36823 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 7ABE25F65; Sun, 1 Apr 2018 07:48:00 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0077.outbound.protection.outlook.com [104.47.41.77]) by dpdk.org (Postfix) with ESMTP id 022A75F19 for ; Sun, 1 Apr 2018 07:47:55 +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=hUk+0XpqZ7EY8rUWqAhcANjM4kt5t1Ps19ge/5Q2m80Uum70hFqPkfNmEEq8d5azMAN4gIiqG5tsu/L20wb5ezVMDOLTEAa50kVzZWnPB5C1dX1YPtrYYRSjaU52C+sfu+iykRmrjGjOPnaf5G3Hi6Hg6V9ElDJGKDwp7mx/f6w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by DM5PR0701MB3670.namprd07.prod.outlook.com (2603:10b6:4:7e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.631.10; Sun, 1 Apr 2018 05:47:53 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Rasesh Mody , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com Date: Sat, 31 Mar 2018 22:46:57 -0700 Message-Id: <1522561624-15817-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: BN6PR11CA0017.namprd11.prod.outlook.com (2603:10b6:405:2::27) To DM5PR0701MB3670.namprd07.prod.outlook.com (2603:10b6:4:7e::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ec0083e8-a820-45bf-9e20-08d597941cfd X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM5PR0701MB3670; X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 3:qa4PWDKM73JNpUtrqGfIcut9aJQgT/Y3qENh/uPC9h5S69RtoekCVHDjUS3osYAiIx6HttZaPChcxoZHY3z07FIQJ59ObbUEa3nowMIuvsHm+45DCpiQLTSXx3boxmYbpZ021AhQNVd35cFCZI59zPyUoCnE89mAJ0N1lZdiosQqJ7cO0XBpXUR/aDIPW4PRjKhZGS4d2/Aa/fsNW9q32xLqeNgUhNjkisl8x0A8qUIxf2AdTxtdxtBKdDUO3aSd; 25:9DpiH8o0VD+P3qy2qYqG0GiffWLEJW3M3MlAPHnCbpsBn6kCYdEMbBK8pEkyGCrsH7HkVUrAUXEgO8HVzNWo0RMTuKBCfkQJ3lrBhldve7NkgrWAUez4UfiXWVfIiFeUvtg3H/3Xfx9U1MOL5uW8ihRyPgURViH5VpF/2JryDfzK0LPdcKD7MXLiGb2221nXICflWw1xkS9C/OEaJMyy0GgKzahqlYAb005MI37zQWAmVeY7U1WGJp3pkmAJZE01JuEFBdkrVAEgdSKRjls9LzTE+yFAXYOBGuLjKweEZiGDTKIlx9Hpf3FuSGm7tLGfG/ss8Wz0aiflpLOjYsi5cA==; 31:vfyTJm8zTL1qK812gSC4HBHo2kFZJX93wb9dgAUUx/cQMf+P9pAq07nkMnPEWGGJj58Z/RSzI3iHAi3cKBcVojrIVHHUv21WoDWQ5B6wCDW2EUc9YlzRXh2UNc4mG9Ewm/t7fx7CBrU3Wj9CI+21K7blgYqKT80lwCU6X3qdMCc4efB0ZK2JAwMNCe1ynsxX/tJ0JdkKYU2W8rvxsTwRJ9/EXIrhSLfkMasyauwyyKY= X-MS-TrafficTypeDiagnostic: DM5PR0701MB3670: X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 20:6GS6nH7rQUlFh5CyJGrPLuTandsb/72+pnVE2AWq2u7LqCLkhtmgOYrpeWIWb0akEkmbunLBGSBZzsdqBnnAE/jgY15Ar9Y0QXSYcLKk4bP9sZXd2eU414gDtUOFeNwfp27naXuuyKg/tVwCqKSEGwFbGHLnoT+XF/9mUEQtp+6vz3dNxbTt9W4cpiOvuGB3km+0ZVIPRywGrA9uEdcobbxhlJAfbA9qm1e/jEOoxe7EJrnUmn6wYqaGEBtS3sUmumtv1r570F4uwNmRZ/g8EER2Fedh3FAVKzRJLGPqtSBs+jTTNSBSneRdvEtqJEvbx6jk0X8I/JL2wVCvN7aMC5tiQhe1ATkUwQWb7MA3/ii9hCq4ffJHWUa2JJaLF+JaQozCsSGbzUIqkPTRmo2T3evWJIwe6HREfcuaoGt/aQ5fxzC+PtGup75kdfTipVyRZ4PgU0ljF96pXlQ05aKdvAjdyQPQ67IIC8H4vs0NAY6zgqqWbrixdF2SEjhtpE+w; 4:+rdeSDLwAHT5KP8cbBRtLS7BxNnvgmgZQNC0twZBgPYHav/aThvwx6uY2XBBBs1EYUCD5j9SFvof9mOWAf5AZ+Fl5TSjUMtptB5U+zp9PzxvX9mW/Jozcf0XWHy4ZNYffBCTHgbcR8OiilqnTuU/LWplREDcLRDLl2nHN5bVuUc4MxfjDYqu6auT+ZfCTVfAb7/btihBfn6sEGWnc3Hi6wLvNffAbahduCVV52czF/OK1M/WGiuYezGpDhAT1guBf6FhS0L/5W4ImGLw9wVJZw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231221)(944501327)(52105095)(93006095)(93001095)(3002001)(10201501046)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM5PR0701MB3670; BCL:0; PCL:0; RULEID:; SRVR:DM5PR0701MB3670; X-Forefront-PRVS: 06290ECA9D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39850400004)(376002)(346002)(366004)(396003)(39380400002)(189003)(199004)(25786009)(16526019)(52116002)(81166006)(81156014)(76176011)(8676002)(7696005)(478600001)(72206003)(51416003)(305945005)(26005)(386003)(7736002)(186003)(2361001)(86362001)(47776003)(69596002)(2906002)(66066001)(4326008)(68736007)(2351001)(55016002)(97736004)(21086003)(50226002)(107886003)(4720700003)(36756003)(8936002)(16586007)(316002)(52396003)(6116002)(106356001)(11346002)(53936002)(105586002)(5660300001)(6916009)(3846002)(486005)(446003)(476003)(48376002)(50466002)(486005)(956004)(2616005); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0701MB3670; 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; DM5PR0701MB3670; 23:rYRBaZjrNTmWw0UJcWPmm0Mn8/ul+07rUr3/o6y?= DEPvAwYTAOQ6399MceWLZgSO0tXL8cnZq8u3rwEFwXW1BSkVNkGlsuic3wS+wCQkZDaErN18m4hg4NPk/EkC4VY/HN/tuLaaS0KgO6bjnpcaThsI8Hhqw7CaLWjTZ388mvM4U+68bsjaZ0GQAIiUg06hmmDJIixsy3rVSUz8/L8HjMdrw1gjUTvGnFFzKRwMFOXB6jg8nVKRsHJLhIDWof+FMZD8oSqu/2/bB51rh4hoowqFVXuEXBEw5qU3TLhVl6n00WyDAOjrVwdpSvPzTJuCuHaPeVJXbKJxA+jd2eoW3Uis4jxMPZzlpJsdwxgPFXmZ2OiFl8Nvs9UDVgk8THgy4HJVM6i/O5Op7bgJDeCEIvSf5uXhlFZkIqDY4YOoZYO2qEBAtI3xWTy1n9XmMwmQiIKP6C8u7OHI4+bAXD6a1etjfr3SpYxxVsKlrxwTpuMMInMF5p9VmSRBalRwNsiQ7+ZoLR9KDNM2LxOdSYbbi7YYPtfbobAOZHpI3EtSbS2k7U+mS6NhvkRHhhV9Q1NzwDab4IElwap7mamcAU8qpu87ShUO3rm4AZtN2kVKkbAN3QWnYQbn80W9+fLpH9ODsPzENut7ABrJKfjGKgxFyGbf8eEX0+8fqDb6GoOOA5Rbfbloh9DzPPxSkOWVDFIYajsCvU/gZHf3Ot73zOY7vBt1JLvPh5GNxn3NI8u3OZqeO1Q6wPSPJTCVNtQuroN/Er8kcqxdSY29MOAOOnLxVyc5YGlMLHT6XxrES9DTa6XPpcdzKzoFxV7OmpBA09XmjILQKJ+xAh9KdPLXy0r2HSIoXq+MrptTEZ990Cqsmhu6LRAVK8fAHj5Zjh/wFHPPpbon+PKUClWBVEa0q0fhvTjMDbMlHVss46Fliv6edGOSCScBJfcGFBXsws3hGHR3voMRKQfz3KcpYGA02m5gQN40JsraxS/flUr+vqT9TRp+lL8t+uAM04Tfh72FsYWJ3PZ1Pi9hIG4YHHCrM9Hg3Sa9aUv1HDiGSux+gkm0JwfFMprQNHun1ccRv7m8P1qWB4n7ZNDh3xcB4ZyNgUIA+dbI9cKYlUP/seX6bZJV+2mnGynZQDEOrFej7+pAYsqQUHDB60R5DlX7nPeiyZ8hWnsO2NbTMouX2RXdHfDvhxrupX5GldJHRW9Fi3X1xA/jrdLe1E/dndb9qhgPiaiX71zpaQy8GCsypoUaq8zZvpbVvj8XO8qd1OMgPu8Cqw65nhOFMnDbC+g1jsDoC3Acy0mwTYOlbdGPIxQX3YT1oa939/BFxKKAjpNqBpQmBPBVW X-Microsoft-Antispam-Message-Info: b9sjeZbcAlTTDSFRPuxZR9O5c5mrtkBVXEIMdYQydmQZLoZcFVLlccAtzwsPI2DdDKF0JxrFggvqymOm1CqcTcq8d+gxSansk6FmU81qf25qT2H29dz2dANPPxvSzNrAM0rSUTuUhXryWEzR8/gNle2Dr0bn/rI9LzLeaiqyNoeM5/Xp2THxnA9BbDFUy8Nk X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 6:M8reEbUMFBIt0L8PWoojdh5rmmYYdbElo+y16spYrzGX+qcCQkg6hrlxB8a+6XgcXTRDllUkzdnuUuJF3FqoEIZD84bzUgAf+Ita4oMBtEAe9rAAHkewD1o8LupA7UYYks20k5U110T/IA0wFDsTIIXtNiLsEwMC0EbChFFO3z/BxEdk4ECzHGD8Xf+9nAO0LIHSsFmxcsntQkb6FEKC+qVxjt+XVWaEia1m0ebNQELNcO8ifwrMe8PKLSaM2QdkJX98fJxl2Am2bSq93MAr/Wpk1ly6CLMMxYvesKCshLQRFc9bXSlHWHi9PyxenCPgGVAIlaq5h5NHYhdlhrc2zY3Xj/g6iohEWT25LJW8/sft7SLNM2BTKA/tuUhnElPzUuvtgiHz1NtrlcZ5aY7NxBZkewQvIRKbr3ihZ1YwJE78b7JdlEyGEEzbQhOqxCon08yq9FIfDzG/jpEvW1j7Tw==; 5:SUv1GFgXCIwbjunHtQmo6J42JQHMazGNN3lOITWfF/w6RbFCRjmIL8Xq5EZRqI1Q+mhnZPpcnQDdf5adZfobefdBu7EjoJTOha6b3Ou0R6KpAfXLFHQG9TdimJuJt7PE2Kt+hUdak62jsTfIZQcDGlI8yru8YJu24kb40Nev1Kk=; 24:GeBcFeJ6cNHO/Gf+Qt6BrMGLbsIo6xbjBZJysQIzTVijEPGD19y0lvZcIBYzkkGmYGF8bOpgpt+PVNbILSpOLL2uBS1wxel3FtD1I12wiXc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 7:72dnzuuqIhLMSJNEUhO7YFY3X5q4+6eZyDRxvMaP2i+wZVtT+KnG5ftHRDY5qbC2Llw2ZHO4dxoMhMcaOyAX08OtQrVptNDThUj/Ri+ZMDkopenR85+Ht9a8wE6Kxaa2X722Bf8g14jAdgYnd0oP3k62HcTGbxW8ucxvChH2kP0BvOPUgHXLBgiO5XZ2cKEIgRqkDPzJYi6SeUQxnwilpOMj7RBKYKf4JVfSKNV3m5PMIJGPF/I8E4LLPr9rNtzI X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2018 05:47:53.3880 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ec0083e8-a820-45bf-9e20-08d597941cfd X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR0701MB3670 Subject: [dpdk-dev] [PATCH 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;