From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 96C252B91 for ; Fri, 6 Jan 2017 13:07:23 +0100 (CET) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga101.jf.intel.com with ESMTP; 06 Jan 2017 04:07:22 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,324,1477983600"; d="scan'208";a="50206461" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.237.220.38]) ([10.237.220.38]) by fmsmga005.fm.intel.com with ESMTP; 06 Jan 2017 04:07:21 -0800 To: "Wu, Jingjing" , "Lu, Wenzhuo" , "dev@dpdk.org" References: <1480637533-37425-1-git-send-email-wenzhuo.lu@intel.com> <1483426488-117332-1-git-send-email-wenzhuo.lu@intel.com> <1483426488-117332-11-git-send-email-wenzhuo.lu@intel.com> <9BB6961774997848B5B42BEC655768F810CC3CAA@SHSMSX103.ccr.corp.intel.com> From: Ferruh Yigit Message-ID: <0c65f1a1-acf8-2f38-8531-4c0204333ef7@intel.com> Date: Fri, 6 Jan 2017 12:07:21 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <9BB6961774997848B5B42BEC655768F810CC3CAA@SHSMSX103.ccr.corp.intel.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v7 10/27] net/i40e: set VF MAC from PF support 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, 06 Jan 2017 12:07:24 -0000 On 1/6/2017 12:32 AM, Wu, Jingjing wrote: > > >> -----Original Message----- >> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wenzhuo Lu >> Sent: Tuesday, January 3, 2017 2:55 PM >> To: dev@dpdk.org >> Cc: Yigit, Ferruh >> Subject: [dpdk-dev] [PATCH v7 10/27] net/i40e: set VF MAC from PF support >> >> From: Ferruh Yigit >> >> Support setting VF MAC address from PF. >> User can call the API on PF to set a specific VF's MAC address. >> >> This will remove all existing MAC filters. >> >> Signed-off-by: Ferruh Yigit >> --- >> drivers/net/i40e/i40e_ethdev.c | 42 >> +++++++++++++++++++++++++++++++ >> drivers/net/i40e/rte_pmd_i40e.h | 19 ++++++++++++++ >> drivers/net/i40e/rte_pmd_i40e_version.map | 1 + >> 3 files changed, 62 insertions(+) >> >> diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c >> index 9d050c8..758b574 100644 >> --- a/drivers/net/i40e/i40e_ethdev.c >> +++ b/drivers/net/i40e/i40e_ethdev.c >> @@ -10198,3 +10198,45 @@ static void i40e_set_default_mac_addr(struct >> rte_eth_dev *dev, >> >> return ret; >> } >> + >> +int >> +rte_pmd_i40e_set_vf_mac_addr(uint8_t port, uint16_t vf_id, >> + struct ether_addr *mac_addr) >> +{ >> + struct rte_eth_dev_info dev_info; >> + struct i40e_mac_filter *f; >> + struct rte_eth_dev *dev; >> + struct i40e_pf_vf *vf; >> + struct i40e_vsi *vsi; >> + struct i40e_pf *pf; >> + void *temp; >> + >> + if (i40e_validate_mac_addr((u8 *)mac_addr) != I40E_SUCCESS) >> + return -EINVAL; >> + >> + RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); >> + >> + dev = &rte_eth_devices[port]; >> + rte_eth_dev_info_get(port, &dev_info); >> + >> + if (vf_id >= dev_info.max_vfs) >> + return -EINVAL; >> + >> + pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); >> + >> + if (vf_id > pf->vf_num - 1 || !pf->vfs) >> + return -EINVAL; >> + >> + vf = &pf->vfs[vf_id]; >> + vsi = vf->vsi; >> + if (!vsi) >> + return -EINVAL; >> + >> + ether_addr_copy(mac_addr, &vf->mac_addr); > > Only store the mac address in vf struct? > Are you supposing the API is called before VF is initialized? Yes. PF should set the VF MAC before VF initialized. If PF sets the VF MAC after VF already initialized, new MAC address won't be effective until next VF initialization. > If so, it's better to comment it. Good idea, I will. > > Thanks > Jingjing >