* [dpdk-stable] [PATCH v2 11/32] net/i40e: fix VF reset flow [not found] ` <1481081535-37448-1-git-send-email-wenzhuo.lu@intel.com> @ 2016-12-07 3:31 ` Wenzhuo Lu 2016-12-07 3:31 ` [dpdk-stable] [PATCH v2 14/32] net/i40e: fix VF MAC address assignment Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2016-12-07 3:31 UTC (permalink / raw) To: dev; +Cc: stable, Qi Zhang Add missing step during VF reset: PF should set I40E_VFGEN_RSTAT to ACTIVE at end of the VF reset operation or VF driver may not able to detect that reset is already completed. This patch also remove the unnecessary enum for vfr state. Fixes: 4861cde46116 ("i40e: new poll mode driver") CC: stable@dpdk.org Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> --- drivers/net/i40e/i40e_pf.c | 6 ++++-- drivers/net/i40e/i40e_pf.h | 5 ----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c index 8b8a14f..2bc3355 100644 --- a/drivers/net/i40e/i40e_pf.c +++ b/drivers/net/i40e/i40e_pf.c @@ -139,7 +139,7 @@ abs_vf_id = vf_id + hw->func_caps.vf_base_id; /* Notify VF that we are in VFR progress */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_INPROGRESS); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_INPROGRESS); /* * If require a SW VF reset, a VFLR interrupt will be generated, @@ -220,7 +220,7 @@ } /* Reset done, Set COMPLETE flag and clear reset bit */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_COMPLETED); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_COMPLETED); val = I40E_READ_REG(hw, I40E_VPGEN_VFRTRIG(vf_id)); val &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; I40E_WRITE_REG(hw, I40E_VPGEN_VFRTRIG(vf_id), val); @@ -248,6 +248,8 @@ return -EFAULT; } + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE); + return ret; } diff --git a/drivers/net/i40e/i40e_pf.h b/drivers/net/i40e/i40e_pf.h index 59bf2ee..ada398b 100644 --- a/drivers/net/i40e/i40e_pf.h +++ b/drivers/net/i40e/i40e_pf.h @@ -48,11 +48,6 @@ #define I40E_DPDK_OFFSET 0x100 -enum i40e_pf_vfr_state { - I40E_PF_VFR_INPROGRESS = 0, - I40E_PF_VFR_COMPLETED = 1, -}; - /* DPDK pf driver specific command to VF */ enum i40e_virtchnl_ops_dpdk { /* -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-stable] [PATCH v2 14/32] net/i40e: fix VF MAC address assignment [not found] ` <1481081535-37448-1-git-send-email-wenzhuo.lu@intel.com> 2016-12-07 3:31 ` [dpdk-stable] [PATCH v2 11/32] net/i40e: fix VF reset flow Wenzhuo Lu @ 2016-12-07 3:31 ` Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2016-12-07 3:31 UTC (permalink / raw) To: dev; +Cc: stable, Ferruh Yigit If PF sets vf->mac_addr, in VF initialization hw->mac.addr will be set to that same value. It is possible to check if PF set a MAC address or not through the hw->mac.addr variable. hw->mac.addr set by i40e_vf_parse_hw_config(), call stack is: In PF side i40e_pf_host_process_cmd_get_vf_resources() eth_addr_copy(vf->mac_addr, vf_res->vsi_res[0].default_mac_address) In VF sise i40evf_init_vf() i40evf_get_vf_resources() i40e_vf_parse_hw_config() memcpy(hw->mac.addr, vsi_res->default_mac_addr) Updated code is after i40evf_get_vf_resources() and can benefit from hw->mac.addr variable. Fixes: 89e6b86384bb ("i40evf: rework MAC address validation") CC: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- drivers/net/i40e/i40e_ethdev_vf.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index cc2d03c..3b9a673 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1193,7 +1193,6 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, int i, err, bufsz; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct ether_addr *p_mac_addr; uint16_t interval = i40e_calc_itr_interval(I40E_QUEUE_ITR_INTERVAL_MAX); @@ -1270,13 +1269,10 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); /* Store the MAC address configured by host, or generate random one */ - p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr); - if (is_valid_assigned_ether_addr(p_mac_addr)) { /* Configured by host */ - ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr); + if (is_valid_assigned_ether_addr((struct ether_addr *)hw->mac.addr)) vf->flags |= I40E_FLAG_VF_MAC_BY_PF; - } else { + else eth_random_addr(hw->mac.addr); /* Generate a random one */ - } /* If the PF host is not DPDK, set the interval of ITR0 to max*/ if (vf->version_major != I40E_DPDK_VERSION_MAJOR) { -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
[parent not found: <1482302070-128496-1-git-send-email-wenzhuo.lu@intel.com>]
* [dpdk-stable] [PATCH v6 09/25] net/i40e: fix VF reset flow [not found] ` <1482302070-128496-1-git-send-email-wenzhuo.lu@intel.com> @ 2016-12-21 6:34 ` Wenzhuo Lu 2016-12-21 6:34 ` [dpdk-stable] [PATCH v6 12/25] net/i40e: fix VF MAC address assignment Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2016-12-21 6:34 UTC (permalink / raw) To: dev; +Cc: stable, Qi Zhang Add missing step during VF reset: PF should set I40E_VFGEN_RSTAT to ACTIVE at end of the VF reset operation or VF driver may not able to detect that reset is already completed. This patch also remove the unnecessary enum for vfr state. Fixes: 4861cde46116 ("i40e: new poll mode driver") CC: stable@dpdk.org Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> --- drivers/net/i40e/i40e_pf.c | 6 ++++-- drivers/net/i40e/i40e_pf.h | 5 ----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c index 8b8a14f..2bc3355 100644 --- a/drivers/net/i40e/i40e_pf.c +++ b/drivers/net/i40e/i40e_pf.c @@ -139,7 +139,7 @@ abs_vf_id = vf_id + hw->func_caps.vf_base_id; /* Notify VF that we are in VFR progress */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_INPROGRESS); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_INPROGRESS); /* * If require a SW VF reset, a VFLR interrupt will be generated, @@ -220,7 +220,7 @@ } /* Reset done, Set COMPLETE flag and clear reset bit */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_COMPLETED); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_COMPLETED); val = I40E_READ_REG(hw, I40E_VPGEN_VFRTRIG(vf_id)); val &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; I40E_WRITE_REG(hw, I40E_VPGEN_VFRTRIG(vf_id), val); @@ -248,6 +248,8 @@ return -EFAULT; } + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE); + return ret; } diff --git a/drivers/net/i40e/i40e_pf.h b/drivers/net/i40e/i40e_pf.h index 59bf2ee..ada398b 100644 --- a/drivers/net/i40e/i40e_pf.h +++ b/drivers/net/i40e/i40e_pf.h @@ -48,11 +48,6 @@ #define I40E_DPDK_OFFSET 0x100 -enum i40e_pf_vfr_state { - I40E_PF_VFR_INPROGRESS = 0, - I40E_PF_VFR_COMPLETED = 1, -}; - /* DPDK pf driver specific command to VF */ enum i40e_virtchnl_ops_dpdk { /* -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-stable] [PATCH v6 12/25] net/i40e: fix VF MAC address assignment [not found] ` <1482302070-128496-1-git-send-email-wenzhuo.lu@intel.com> 2016-12-21 6:34 ` [dpdk-stable] [PATCH v6 09/25] net/i40e: fix VF reset flow Wenzhuo Lu @ 2016-12-21 6:34 ` Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2016-12-21 6:34 UTC (permalink / raw) To: dev; +Cc: stable, Ferruh Yigit If PF sets vf->mac_addr, in VF initialization hw->mac.addr will be set to that same value. It is possible to check if PF set a MAC address or not through the hw->mac.addr variable. hw->mac.addr set by i40e_vf_parse_hw_config(), call stack is: In PF side i40e_pf_host_process_cmd_get_vf_resources() eth_addr_copy(vf->mac_addr, vf_res->vsi_res[0].default_mac_address) In VF sise i40evf_init_vf() i40evf_get_vf_resources() i40e_vf_parse_hw_config() memcpy(hw->mac.addr, vsi_res->default_mac_addr) Updated code is after i40evf_get_vf_resources() and can benefit from hw->mac.addr variable. Fixes: 89e6b86384bb ("i40evf: rework MAC address validation") CC: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- drivers/net/i40e/i40e_ethdev_vf.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 5016249..0977095 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1193,7 +1193,6 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, int i, err, bufsz; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct ether_addr *p_mac_addr; uint16_t interval = i40e_calc_itr_interval(I40E_QUEUE_ITR_INTERVAL_MAX); @@ -1270,13 +1269,10 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); /* Store the MAC address configured by host, or generate random one */ - p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr); - if (is_valid_assigned_ether_addr(p_mac_addr)) { /* Configured by host */ - ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr); + if (is_valid_assigned_ether_addr((struct ether_addr *)hw->mac.addr)) vf->flags |= I40E_FLAG_VF_MAC_BY_PF; - } else { + else eth_random_addr(hw->mac.addr); /* Generate a random one */ - } /* If the PF host is not DPDK, set the interval of ITR0 to max*/ if (vf->version_major != I40E_DPDK_VERSION_MAJOR) { -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
[parent not found: <1483426488-117332-1-git-send-email-wenzhuo.lu@intel.com>]
* [dpdk-stable] [PATCH v7 09/27] net/i40e: fix VF reset flow [not found] ` <1483426488-117332-1-git-send-email-wenzhuo.lu@intel.com> @ 2017-01-03 6:54 ` Wenzhuo Lu 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 12/27] net/i40e: fix VF MAC address assignment Wenzhuo Lu 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 26/27] net/i40e: fix segmentation fault in close Wenzhuo Lu 2 siblings, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-03 6:54 UTC (permalink / raw) To: dev; +Cc: Qi Zhang, stable From: Qi Zhang <qi.z.zhang@intel.com> Add missing step during VF reset: PF should set I40E_VFGEN_RSTAT to ACTIVE at end of the VF reset operation or VF driver may not able to detect that reset is already completed. This patch also remove the unnecessary enum for vfr state. Fixes: 4861cde46116 ("i40e: new poll mode driver") CC: stable@dpdk.org Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> --- drivers/net/i40e/i40e_pf.c | 6 ++++-- drivers/net/i40e/i40e_pf.h | 5 ----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c index 8b8a14f..2bc3355 100644 --- a/drivers/net/i40e/i40e_pf.c +++ b/drivers/net/i40e/i40e_pf.c @@ -139,7 +139,7 @@ abs_vf_id = vf_id + hw->func_caps.vf_base_id; /* Notify VF that we are in VFR progress */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_INPROGRESS); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_INPROGRESS); /* * If require a SW VF reset, a VFLR interrupt will be generated, @@ -220,7 +220,7 @@ } /* Reset done, Set COMPLETE flag and clear reset bit */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_COMPLETED); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_COMPLETED); val = I40E_READ_REG(hw, I40E_VPGEN_VFRTRIG(vf_id)); val &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; I40E_WRITE_REG(hw, I40E_VPGEN_VFRTRIG(vf_id), val); @@ -248,6 +248,8 @@ return -EFAULT; } + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE); + return ret; } diff --git a/drivers/net/i40e/i40e_pf.h b/drivers/net/i40e/i40e_pf.h index 59bf2ee..ada398b 100644 --- a/drivers/net/i40e/i40e_pf.h +++ b/drivers/net/i40e/i40e_pf.h @@ -48,11 +48,6 @@ #define I40E_DPDK_OFFSET 0x100 -enum i40e_pf_vfr_state { - I40E_PF_VFR_INPROGRESS = 0, - I40E_PF_VFR_COMPLETED = 1, -}; - /* DPDK pf driver specific command to VF */ enum i40e_virtchnl_ops_dpdk { /* -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-stable] [PATCH v7 12/27] net/i40e: fix VF MAC address assignment [not found] ` <1483426488-117332-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 09/27] net/i40e: fix VF reset flow Wenzhuo Lu @ 2017-01-03 6:54 ` Wenzhuo Lu 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 26/27] net/i40e: fix segmentation fault in close Wenzhuo Lu 2 siblings, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-03 6:54 UTC (permalink / raw) To: dev; +Cc: Ferruh Yigit, stable From: Ferruh Yigit <ferruh.yigit@intel.com> If PF sets vf->mac_addr, in VF initialization hw->mac.addr will be set to that same value. It is possible to check if PF set a MAC address or not through the hw->mac.addr variable. hw->mac.addr set by i40e_vf_parse_hw_config(), call stack is: In PF side i40e_pf_host_process_cmd_get_vf_resources() eth_addr_copy(vf->mac_addr, vf_res->vsi_res[0].default_mac_address) In VF sise i40evf_init_vf() i40evf_get_vf_resources() i40e_vf_parse_hw_config() memcpy(hw->mac.addr, vsi_res->default_mac_addr) Updated code is after i40evf_get_vf_resources() and can benefit from hw->mac.addr variable. Fixes: 89e6b86384bb ("i40evf: rework MAC address validation") CC: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- drivers/net/i40e/i40e_ethdev_vf.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 5016249..0977095 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1193,7 +1193,6 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, int i, err, bufsz; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct ether_addr *p_mac_addr; uint16_t interval = i40e_calc_itr_interval(I40E_QUEUE_ITR_INTERVAL_MAX); @@ -1270,13 +1269,10 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); /* Store the MAC address configured by host, or generate random one */ - p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr); - if (is_valid_assigned_ether_addr(p_mac_addr)) { /* Configured by host */ - ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr); + if (is_valid_assigned_ether_addr((struct ether_addr *)hw->mac.addr)) vf->flags |= I40E_FLAG_VF_MAC_BY_PF; - } else { + else eth_random_addr(hw->mac.addr); /* Generate a random one */ - } /* If the PF host is not DPDK, set the interval of ITR0 to max*/ if (vf->version_major != I40E_DPDK_VERSION_MAJOR) { -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-stable] [PATCH v7 26/27] net/i40e: fix segmentation fault in close [not found] ` <1483426488-117332-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 09/27] net/i40e: fix VF reset flow Wenzhuo Lu 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 12/27] net/i40e: fix VF MAC address assignment Wenzhuo Lu @ 2017-01-03 6:54 ` Wenzhuo Lu 2017-01-06 1:29 ` [dpdk-stable] [dpdk-dev] " Wu, Jingjing 2 siblings, 1 reply; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-03 6:54 UTC (permalink / raw) To: dev; +Cc: Bernard Iremonger, stable From: Bernard Iremonger <bernard.iremonger@intel.com> The vsi's have already been released, so the second call to i40e_vsi_release results in a segmentation fault. The second call to i40e_vsi_release has been removed. Fixes: 3cb446b4aeb2 ("i40e: free vmdq vsi when closing") CC: stable@dpdk.org Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com> --- drivers/net/i40e/i40e_ethdev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index be45cfa..0b7c366 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -1882,7 +1882,6 @@ static inline void i40e_GLQF_reg_init(struct i40e_hw *hw) i40e_vsi_release(pf->main_vsi); for (i = 0; i < pf->nb_cfg_vmdq_vsi; i++) { - i40e_vsi_release(pf->vmdq[i].vsi); pf->vmdq[i].vsi = NULL; } @@ -4137,6 +4136,9 @@ enum i40e_status_code if (!vsi) return I40E_SUCCESS; + if (!vsi->adapter) + return I40E_ERR_BAD_PTR; + user_param = vsi->user_param; pf = I40E_VSI_TO_PF(vsi); -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v7 26/27] net/i40e: fix segmentation fault in close 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 26/27] net/i40e: fix segmentation fault in close Wenzhuo Lu @ 2017-01-06 1:29 ` Wu, Jingjing 2017-01-06 12:00 ` Iremonger, Bernard 0 siblings, 1 reply; 22+ messages in thread From: Wu, Jingjing @ 2017-01-06 1:29 UTC (permalink / raw) To: Lu, Wenzhuo, dev; +Cc: Iremonger, Bernard, stable > -----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: Iremonger, Bernard <bernard.iremonger@intel.com>; stable@dpdk.org > Subject: [dpdk-dev] [PATCH v7 26/27] net/i40e: fix segmentation fault in close > > From: Bernard Iremonger <bernard.iremonger@intel.com> > > The vsi's have already been released, so the second call to i40e_vsi_release > results in a segmentation fault. > The second call to i40e_vsi_release has been removed. Where is the first call to release vmdq vsi? Thanks Jingjing > > Fixes: 3cb446b4aeb2 ("i40e: free vmdq vsi when closing") > > CC: stable@dpdk.org > > Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com> > --- > drivers/net/i40e/i40e_ethdev.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c > index be45cfa..0b7c366 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -1882,7 +1882,6 @@ static inline void i40e_GLQF_reg_init(struct i40e_hw > *hw) > i40e_vsi_release(pf->main_vsi); > > for (i = 0; i < pf->nb_cfg_vmdq_vsi; i++) { > - i40e_vsi_release(pf->vmdq[i].vsi); > pf->vmdq[i].vsi = NULL; > } > > @@ -4137,6 +4136,9 @@ enum i40e_status_code > if (!vsi) > return I40E_SUCCESS; > > + if (!vsi->adapter) > + return I40E_ERR_BAD_PTR; > + > user_param = vsi->user_param; > > pf = I40E_VSI_TO_PF(vsi); > -- > 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v7 26/27] net/i40e: fix segmentation fault in close 2017-01-06 1:29 ` [dpdk-stable] [dpdk-dev] " Wu, Jingjing @ 2017-01-06 12:00 ` Iremonger, Bernard 2017-01-09 9:44 ` Wu, Jingjing 0 siblings, 1 reply; 22+ messages in thread From: Iremonger, Bernard @ 2017-01-06 12:00 UTC (permalink / raw) To: Wu, Jingjing, Lu, Wenzhuo, dev; +Cc: stable Hi Jingjing, > -----Original Message----- > From: Wu, Jingjing > Sent: Friday, January 6, 2017 1:29 AM > To: Lu, Wenzhuo <wenzhuo.lu@intel.com>; dev@dpdk.org > Cc: Iremonger, Bernard <bernard.iremonger@intel.com>; stable@dpdk.org > Subject: RE: [dpdk-dev] [PATCH v7 26/27] net/i40e: fix segmentation fault in > close > > > > > -----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: Iremonger, Bernard <bernard.iremonger@intel.com>; > stable@dpdk.org > > Subject: [dpdk-dev] [PATCH v7 26/27] net/i40e: fix segmentation fault > > in close > > > > From: Bernard Iremonger <bernard.iremonger@intel.com> > > > > The vsi's have already been released, so the second call to > > i40e_vsi_release results in a segmentation fault. > > The second call to i40e_vsi_release has been removed. > Where is the first call to release vmdq vsi? All of the VSI's are released in the call to i40e_vsi_release(pf->main_vsi) at line 1895. This function is recursive and release all the VSI's. There is still a VSI address in pf->vmdq[i].vsi but calling i40e_vsi_release(pf->vmdq[i].vsi); Results in a segmentation fault. > > Thanks > Jingjing > > > > Fixes: 3cb446b4aeb2 ("i40e: free vmdq vsi when closing") > > > > CC: stable@dpdk.org > > > > Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com> > > --- > > drivers/net/i40e/i40e_ethdev.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/i40e/i40e_ethdev.c > > b/drivers/net/i40e/i40e_ethdev.c index be45cfa..0b7c366 100644 > > --- a/drivers/net/i40e/i40e_ethdev.c > > +++ b/drivers/net/i40e/i40e_ethdev.c > > @@ -1882,7 +1882,6 @@ static inline void i40e_GLQF_reg_init(struct > > i40e_hw > > *hw) > > i40e_vsi_release(pf->main_vsi); > > > > for (i = 0; i < pf->nb_cfg_vmdq_vsi; i++) { > > - i40e_vsi_release(pf->vmdq[i].vsi); > > pf->vmdq[i].vsi = NULL; > > } > > > > @@ -4137,6 +4136,9 @@ enum i40e_status_code > > if (!vsi) > > return I40E_SUCCESS; > > > > + if (!vsi->adapter) > > + return I40E_ERR_BAD_PTR; > > + > > user_param = vsi->user_param; > > > > pf = I40E_VSI_TO_PF(vsi); > > -- > > 1.9.3 Regards, Bernard. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v7 26/27] net/i40e: fix segmentation fault in close 2017-01-06 12:00 ` Iremonger, Bernard @ 2017-01-09 9:44 ` Wu, Jingjing 2017-01-09 9:50 ` Iremonger, Bernard 0 siblings, 1 reply; 22+ messages in thread From: Wu, Jingjing @ 2017-01-09 9:44 UTC (permalink / raw) To: Iremonger, Bernard, Lu, Wenzhuo, dev; +Cc: stable > > All of the VSI's are released in the call to i40e_vsi_release(pf->main_vsi) at line > 1895. > This function is recursive and release all the VSI's. > > There is still a VSI address in pf->vmdq[i].vsi but calling i40e_vsi_release(pf- > >vmdq[i].vsi); > Results in a segmentation fault. > Thanks for the clarification. You are correct. What I prefer is to move the code to release vmdq vsis to before the i40e_vsi_release(pf->main_vsi); What do you think? Thanks Jingjing ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v7 26/27] net/i40e: fix segmentation fault in close 2017-01-09 9:44 ` Wu, Jingjing @ 2017-01-09 9:50 ` Iremonger, Bernard 0 siblings, 0 replies; 22+ messages in thread From: Iremonger, Bernard @ 2017-01-09 9:50 UTC (permalink / raw) To: Wu, Jingjing, Lu, Wenzhuo, dev; +Cc: stable Hi Jingjing, > -----Original Message----- > From: Wu, Jingjing > Sent: Monday, January 9, 2017 9:44 AM > To: Iremonger, Bernard <bernard.iremonger@intel.com>; Lu, Wenzhuo > <wenzhuo.lu@intel.com>; dev@dpdk.org > Cc: stable@dpdk.org > Subject: RE: [dpdk-dev] [PATCH v7 26/27] net/i40e: fix segmentation fault in > close > > > > > All of the VSI's are released in the call to > > i40e_vsi_release(pf->main_vsi) at line 1895. > > This function is recursive and release all the VSI's. > > > > There is still a VSI address in pf->vmdq[i].vsi but calling > > i40e_vsi_release(pf- > > >vmdq[i].vsi); > > Results in a segmentation fault. > > > Thanks for the clarification. > > You are correct. What I prefer is to move the code to release vmdq vsis to > before the i40e_vsi_release(pf->main_vsi); > > What do you think? > > Thanks > Jingjing I will test it and see what happens. Regards, Bernard. ^ permalink raw reply [flat|nested] 22+ messages in thread
[parent not found: <1484032580-60134-1-git-send-email-wenzhuo.lu@intel.com>]
* [dpdk-stable] [PATCH v8 09/25] net/i40e: fix VF reset flow [not found] ` <1484032580-60134-1-git-send-email-wenzhuo.lu@intel.com> @ 2017-01-10 7:16 ` Wenzhuo Lu 2017-01-10 7:16 ` [dpdk-stable] [PATCH v8 12/25] net/i40e: fix VF MAC address assignment Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-10 7:16 UTC (permalink / raw) To: dev; +Cc: Qi Zhang, stable From: Qi Zhang <qi.z.zhang@intel.com> Add missing step during VF reset: PF should set I40E_VFGEN_RSTAT to ACTIVE at end of the VF reset operation or VF driver may not able to detect that reset is already completed. This patch also remove the unnecessary enum for vfr state. Fixes: 4861cde46116 ("i40e: new poll mode driver") CC: stable@dpdk.org Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> --- drivers/net/i40e/i40e_pf.c | 6 ++++-- drivers/net/i40e/i40e_pf.h | 5 ----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c index 5c58424..8a6733c 100644 --- a/drivers/net/i40e/i40e_pf.c +++ b/drivers/net/i40e/i40e_pf.c @@ -139,7 +139,7 @@ abs_vf_id = vf_id + hw->func_caps.vf_base_id; /* Notify VF that we are in VFR progress */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_INPROGRESS); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_INPROGRESS); /* * If require a SW VF reset, a VFLR interrupt will be generated, @@ -220,7 +220,7 @@ } /* Reset done, Set COMPLETE flag and clear reset bit */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_COMPLETED); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_COMPLETED); val = I40E_READ_REG(hw, I40E_VPGEN_VFRTRIG(vf_id)); val &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; I40E_WRITE_REG(hw, I40E_VPGEN_VFRTRIG(vf_id), val); @@ -248,6 +248,8 @@ return -EFAULT; } + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE); + return ret; } diff --git a/drivers/net/i40e/i40e_pf.h b/drivers/net/i40e/i40e_pf.h index 47a9c34..b4c2287 100644 --- a/drivers/net/i40e/i40e_pf.h +++ b/drivers/net/i40e/i40e_pf.h @@ -48,11 +48,6 @@ #define I40E_DPDK_OFFSET 0x100 -enum i40e_pf_vfr_state { - I40E_PF_VFR_INPROGRESS = 0, - I40E_PF_VFR_COMPLETED = 1, -}; - /* DPDK pf driver specific command to VF */ enum i40e_virtchnl_ops_dpdk { /* -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-stable] [PATCH v8 12/25] net/i40e: fix VF MAC address assignment [not found] ` <1484032580-60134-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-10 7:16 ` [dpdk-stable] [PATCH v8 09/25] net/i40e: fix VF reset flow Wenzhuo Lu @ 2017-01-10 7:16 ` Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-10 7:16 UTC (permalink / raw) To: dev; +Cc: Ferruh Yigit, stable From: Ferruh Yigit <ferruh.yigit@intel.com> If PF sets vf->mac_addr, in VF initialization hw->mac.addr will be set to that same value. It is possible to check if PF set a MAC address or not through the hw->mac.addr variable. hw->mac.addr set by i40e_vf_parse_hw_config(), call stack is: In PF side i40e_pf_host_process_cmd_get_vf_resources() eth_addr_copy(vf->mac_addr, vf_res->vsi_res[0].default_mac_address) In VF sise i40evf_init_vf() i40evf_get_vf_resources() i40e_vf_parse_hw_config() memcpy(hw->mac.addr, vsi_res->default_mac_addr) Updated code is after i40evf_get_vf_resources() and can benefit from hw->mac.addr variable. Fixes: 89e6b86384bb ("i40evf: rework MAC address validation") CC: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- drivers/net/i40e/i40e_ethdev_vf.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 5016249..0977095 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1193,7 +1193,6 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, int i, err, bufsz; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct ether_addr *p_mac_addr; uint16_t interval = i40e_calc_itr_interval(I40E_QUEUE_ITR_INTERVAL_MAX); @@ -1270,13 +1269,10 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); /* Store the MAC address configured by host, or generate random one */ - p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr); - if (is_valid_assigned_ether_addr(p_mac_addr)) { /* Configured by host */ - ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr); + if (is_valid_assigned_ether_addr((struct ether_addr *)hw->mac.addr)) vf->flags |= I40E_FLAG_VF_MAC_BY_PF; - } else { + else eth_random_addr(hw->mac.addr); /* Generate a random one */ - } /* If the PF host is not DPDK, set the interval of ITR0 to max*/ if (vf->version_major != I40E_DPDK_VERSION_MAJOR) { -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
[parent not found: <1484290401-1404-1-git-send-email-wenzhuo.lu@intel.com>]
* [dpdk-stable] [PATCH v9 09/26] net/i40e: fix VF reset flow [not found] ` <1484290401-1404-1-git-send-email-wenzhuo.lu@intel.com> @ 2017-01-13 6:53 ` Wenzhuo Lu 2017-01-13 6:53 ` [dpdk-stable] [PATCH v9 12/26] net/i40e: fix VF MAC address assignment Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-13 6:53 UTC (permalink / raw) To: dev; +Cc: Qi Zhang, stable From: Qi Zhang <qi.z.zhang@intel.com> Add missing step during VF reset: PF should set I40E_VFGEN_RSTAT to ACTIVE at end of the VF reset operation or VF driver may not able to detect that reset is already completed. This patch also remove the unnecessary enum for vfr state. Fixes: 4861cde46116 ("i40e: new poll mode driver") CC: stable@dpdk.org Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> --- drivers/net/i40e/i40e_pf.c | 6 ++++-- drivers/net/i40e/i40e_pf.h | 5 ----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c index 5c58424..8a6733c 100644 --- a/drivers/net/i40e/i40e_pf.c +++ b/drivers/net/i40e/i40e_pf.c @@ -139,7 +139,7 @@ abs_vf_id = vf_id + hw->func_caps.vf_base_id; /* Notify VF that we are in VFR progress */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_INPROGRESS); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_INPROGRESS); /* * If require a SW VF reset, a VFLR interrupt will be generated, @@ -220,7 +220,7 @@ } /* Reset done, Set COMPLETE flag and clear reset bit */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_COMPLETED); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_COMPLETED); val = I40E_READ_REG(hw, I40E_VPGEN_VFRTRIG(vf_id)); val &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; I40E_WRITE_REG(hw, I40E_VPGEN_VFRTRIG(vf_id), val); @@ -248,6 +248,8 @@ return -EFAULT; } + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE); + return ret; } diff --git a/drivers/net/i40e/i40e_pf.h b/drivers/net/i40e/i40e_pf.h index 47a9c34..b4c2287 100644 --- a/drivers/net/i40e/i40e_pf.h +++ b/drivers/net/i40e/i40e_pf.h @@ -48,11 +48,6 @@ #define I40E_DPDK_OFFSET 0x100 -enum i40e_pf_vfr_state { - I40E_PF_VFR_INPROGRESS = 0, - I40E_PF_VFR_COMPLETED = 1, -}; - /* DPDK pf driver specific command to VF */ enum i40e_virtchnl_ops_dpdk { /* -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-stable] [PATCH v9 12/26] net/i40e: fix VF MAC address assignment [not found] ` <1484290401-1404-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-13 6:53 ` [dpdk-stable] [PATCH v9 09/26] net/i40e: fix VF reset flow Wenzhuo Lu @ 2017-01-13 6:53 ` Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-13 6:53 UTC (permalink / raw) To: dev; +Cc: Ferruh Yigit, stable From: Ferruh Yigit <ferruh.yigit@intel.com> If PF sets vf->mac_addr, in VF initialization hw->mac.addr will be set to that same value. It is possible to check if PF set a MAC address or not through the hw->mac.addr variable. hw->mac.addr set by i40e_vf_parse_hw_config(), call stack is: In PF side i40e_pf_host_process_cmd_get_vf_resources() eth_addr_copy(vf->mac_addr, vf_res->vsi_res[0].default_mac_address) In VF sise i40evf_init_vf() i40evf_get_vf_resources() i40e_vf_parse_hw_config() memcpy(hw->mac.addr, vsi_res->default_mac_addr) Updated code is after i40evf_get_vf_resources() and can benefit from hw->mac.addr variable. Fixes: 89e6b86384bb ("i40evf: rework MAC address validation") CC: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- drivers/net/i40e/i40e_ethdev_vf.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 5016249..0977095 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1193,7 +1193,6 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, int i, err, bufsz; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct ether_addr *p_mac_addr; uint16_t interval = i40e_calc_itr_interval(I40E_QUEUE_ITR_INTERVAL_MAX); @@ -1270,13 +1269,10 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); /* Store the MAC address configured by host, or generate random one */ - p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr); - if (is_valid_assigned_ether_addr(p_mac_addr)) { /* Configured by host */ - ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr); + if (is_valid_assigned_ether_addr((struct ether_addr *)hw->mac.addr)) vf->flags |= I40E_FLAG_VF_MAC_BY_PF; - } else { + else eth_random_addr(hw->mac.addr); /* Generate a random one */ - } /* If the PF host is not DPDK, set the interval of ITR0 to max*/ if (vf->version_major != I40E_DPDK_VERSION_MAJOR) { -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
[parent not found: <1484545911-40432-1-git-send-email-wenzhuo.lu@intel.com>]
* [dpdk-stable] [PATCH v10 09/26] net/i40e: fix VF reset flow [not found] ` <1484545911-40432-1-git-send-email-wenzhuo.lu@intel.com> @ 2017-01-16 5:51 ` Wenzhuo Lu 2017-01-16 5:51 ` [dpdk-stable] [PATCH v10 12/26] net/i40e: fix VF MAC address assignment Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-16 5:51 UTC (permalink / raw) To: dev; +Cc: Qi Zhang, stable From: Qi Zhang <qi.z.zhang@intel.com> Add missing step during VF reset: PF should set I40E_VFGEN_RSTAT to ACTIVE at end of the VF reset operation or VF driver may not able to detect that reset is already completed. This patch also remove the unnecessary enum for vfr state. Fixes: 4861cde46116 ("i40e: new poll mode driver") CC: stable@dpdk.org Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> --- drivers/net/i40e/i40e_pf.c | 6 ++++-- drivers/net/i40e/i40e_pf.h | 5 ----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c index 5c58424..8a6733c 100644 --- a/drivers/net/i40e/i40e_pf.c +++ b/drivers/net/i40e/i40e_pf.c @@ -139,7 +139,7 @@ abs_vf_id = vf_id + hw->func_caps.vf_base_id; /* Notify VF that we are in VFR progress */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_INPROGRESS); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_INPROGRESS); /* * If require a SW VF reset, a VFLR interrupt will be generated, @@ -220,7 +220,7 @@ } /* Reset done, Set COMPLETE flag and clear reset bit */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_COMPLETED); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_COMPLETED); val = I40E_READ_REG(hw, I40E_VPGEN_VFRTRIG(vf_id)); val &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; I40E_WRITE_REG(hw, I40E_VPGEN_VFRTRIG(vf_id), val); @@ -248,6 +248,8 @@ return -EFAULT; } + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE); + return ret; } diff --git a/drivers/net/i40e/i40e_pf.h b/drivers/net/i40e/i40e_pf.h index 47a9c34..b4c2287 100644 --- a/drivers/net/i40e/i40e_pf.h +++ b/drivers/net/i40e/i40e_pf.h @@ -48,11 +48,6 @@ #define I40E_DPDK_OFFSET 0x100 -enum i40e_pf_vfr_state { - I40E_PF_VFR_INPROGRESS = 0, - I40E_PF_VFR_COMPLETED = 1, -}; - /* DPDK pf driver specific command to VF */ enum i40e_virtchnl_ops_dpdk { /* -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-stable] [PATCH v10 12/26] net/i40e: fix VF MAC address assignment [not found] ` <1484545911-40432-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-16 5:51 ` [dpdk-stable] [PATCH v10 09/26] net/i40e: fix VF reset flow Wenzhuo Lu @ 2017-01-16 5:51 ` Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-16 5:51 UTC (permalink / raw) To: dev; +Cc: Ferruh Yigit, stable From: Ferruh Yigit <ferruh.yigit@intel.com> If PF sets vf->mac_addr, in VF initialization hw->mac.addr will be set to that same value. It is possible to check if PF set a MAC address or not through the hw->mac.addr variable. hw->mac.addr set by i40e_vf_parse_hw_config(), call stack is: In PF side i40e_pf_host_process_cmd_get_vf_resources() eth_addr_copy(vf->mac_addr, vf_res->vsi_res[0].default_mac_address) In VF sise i40evf_init_vf() i40evf_get_vf_resources() i40e_vf_parse_hw_config() memcpy(hw->mac.addr, vsi_res->default_mac_addr) Updated code is after i40evf_get_vf_resources() and can benefit from hw->mac.addr variable. Fixes: 89e6b86384bb ("i40evf: rework MAC address validation") CC: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- drivers/net/i40e/i40e_ethdev_vf.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index a9a8bb4..17a035c 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1195,7 +1195,6 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, int i, err, bufsz; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct ether_addr *p_mac_addr; uint16_t interval = i40e_calc_itr_interval(I40E_QUEUE_ITR_INTERVAL_MAX); @@ -1272,13 +1271,10 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); /* Store the MAC address configured by host, or generate random one */ - p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr); - if (is_valid_assigned_ether_addr(p_mac_addr)) { /* Configured by host */ - ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr); + if (is_valid_assigned_ether_addr((struct ether_addr *)hw->mac.addr)) vf->flags |= I40E_FLAG_VF_MAC_BY_PF; - } else { + else eth_random_addr(hw->mac.addr); /* Generate a random one */ - } /* If the PF host is not DPDK, set the interval of ITR0 to max*/ if (vf->version_major != I40E_DPDK_VERSION_MAJOR) { -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
[parent not found: <1484620116-70813-1-git-send-email-wenzhuo.lu@intel.com>]
* [dpdk-stable] [PATCH v11 09/26] net/i40e: fix VF reset flow [not found] ` <1484620116-70813-1-git-send-email-wenzhuo.lu@intel.com> @ 2017-01-17 2:28 ` Wenzhuo Lu 2017-01-17 2:28 ` [dpdk-stable] [PATCH v11 12/26] net/i40e: fix VF MAC address assignment Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-17 2:28 UTC (permalink / raw) To: dev; +Cc: Qi Zhang, stable From: Qi Zhang <qi.z.zhang@intel.com> Add missing step during VF reset: PF should set I40E_VFGEN_RSTAT to ACTIVE at end of the VF reset operation or VF driver may not able to detect that reset is already completed. This patch also remove the unnecessary enum for vfr state. Fixes: 4861cde46116 ("i40e: new poll mode driver") CC: stable@dpdk.org Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> --- drivers/net/i40e/i40e_pf.c | 6 ++++-- drivers/net/i40e/i40e_pf.h | 5 ----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c index 5c58424..8a6733c 100644 --- a/drivers/net/i40e/i40e_pf.c +++ b/drivers/net/i40e/i40e_pf.c @@ -139,7 +139,7 @@ abs_vf_id = vf_id + hw->func_caps.vf_base_id; /* Notify VF that we are in VFR progress */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_INPROGRESS); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_INPROGRESS); /* * If require a SW VF reset, a VFLR interrupt will be generated, @@ -220,7 +220,7 @@ } /* Reset done, Set COMPLETE flag and clear reset bit */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_COMPLETED); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_COMPLETED); val = I40E_READ_REG(hw, I40E_VPGEN_VFRTRIG(vf_id)); val &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; I40E_WRITE_REG(hw, I40E_VPGEN_VFRTRIG(vf_id), val); @@ -248,6 +248,8 @@ return -EFAULT; } + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE); + return ret; } diff --git a/drivers/net/i40e/i40e_pf.h b/drivers/net/i40e/i40e_pf.h index 47a9c34..b4c2287 100644 --- a/drivers/net/i40e/i40e_pf.h +++ b/drivers/net/i40e/i40e_pf.h @@ -48,11 +48,6 @@ #define I40E_DPDK_OFFSET 0x100 -enum i40e_pf_vfr_state { - I40E_PF_VFR_INPROGRESS = 0, - I40E_PF_VFR_COMPLETED = 1, -}; - /* DPDK pf driver specific command to VF */ enum i40e_virtchnl_ops_dpdk { /* -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-stable] [PATCH v11 12/26] net/i40e: fix VF MAC address assignment [not found] ` <1484620116-70813-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-17 2:28 ` [dpdk-stable] [PATCH v11 09/26] net/i40e: fix VF reset flow Wenzhuo Lu @ 2017-01-17 2:28 ` Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-17 2:28 UTC (permalink / raw) To: dev; +Cc: Ferruh Yigit, stable From: Ferruh Yigit <ferruh.yigit@intel.com> If PF sets vf->mac_addr, in VF initialization hw->mac.addr will be set to that same value. It is possible to check if PF set a MAC address or not through the hw->mac.addr variable. hw->mac.addr set by i40e_vf_parse_hw_config(), call stack is: In PF side i40e_pf_host_process_cmd_get_vf_resources() eth_addr_copy(vf->mac_addr, vf_res->vsi_res[0].default_mac_address) In VF sise i40evf_init_vf() i40evf_get_vf_resources() i40e_vf_parse_hw_config() memcpy(hw->mac.addr, vsi_res->default_mac_addr) Updated code is after i40evf_get_vf_resources() and can benefit from hw->mac.addr variable. Fixes: 89e6b86384bb ("i40evf: rework MAC address validation") CC: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- drivers/net/i40e/i40e_ethdev_vf.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index a9a8bb4..17a035c 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1195,7 +1195,6 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, int i, err, bufsz; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct ether_addr *p_mac_addr; uint16_t interval = i40e_calc_itr_interval(I40E_QUEUE_ITR_INTERVAL_MAX); @@ -1272,13 +1271,10 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); /* Store the MAC address configured by host, or generate random one */ - p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr); - if (is_valid_assigned_ether_addr(p_mac_addr)) { /* Configured by host */ - ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr); + if (is_valid_assigned_ether_addr((struct ether_addr *)hw->mac.addr)) vf->flags |= I40E_FLAG_VF_MAC_BY_PF; - } else { + else eth_random_addr(hw->mac.addr); /* Generate a random one */ - } /* If the PF host is not DPDK, set the interval of ITR0 to max*/ if (vf->version_major != I40E_DPDK_VERSION_MAJOR) { -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
[parent not found: <1484642728-73411-1-git-send-email-wenzhuo.lu@intel.com>]
* [dpdk-stable] [PATCH v12 09/26] net/i40e: fix VF reset flow [not found] ` <1484642728-73411-1-git-send-email-wenzhuo.lu@intel.com> @ 2017-01-17 8:45 ` Wenzhuo Lu 2017-01-17 8:45 ` [dpdk-stable] [PATCH v12 12/26] net/i40e: fix VF MAC address assignment Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-17 8:45 UTC (permalink / raw) To: dev; +Cc: Qi Zhang, stable From: Qi Zhang <qi.z.zhang@intel.com> Add missing step during VF reset: PF should set I40E_VFGEN_RSTAT to ACTIVE at end of the VF reset operation or VF driver may not able to detect that reset is already completed. This patch also remove the unnecessary enum for vfr state. Fixes: 4861cde46116 ("i40e: new poll mode driver") CC: stable@dpdk.org Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> --- drivers/net/i40e/i40e_pf.c | 6 ++++-- drivers/net/i40e/i40e_pf.h | 5 ----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c index 5c58424..8a6733c 100644 --- a/drivers/net/i40e/i40e_pf.c +++ b/drivers/net/i40e/i40e_pf.c @@ -139,7 +139,7 @@ abs_vf_id = vf_id + hw->func_caps.vf_base_id; /* Notify VF that we are in VFR progress */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_INPROGRESS); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_INPROGRESS); /* * If require a SW VF reset, a VFLR interrupt will be generated, @@ -220,7 +220,7 @@ } /* Reset done, Set COMPLETE flag and clear reset bit */ - I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_PF_VFR_COMPLETED); + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_COMPLETED); val = I40E_READ_REG(hw, I40E_VPGEN_VFRTRIG(vf_id)); val &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; I40E_WRITE_REG(hw, I40E_VPGEN_VFRTRIG(vf_id), val); @@ -248,6 +248,8 @@ return -EFAULT; } + I40E_WRITE_REG(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE); + return ret; } diff --git a/drivers/net/i40e/i40e_pf.h b/drivers/net/i40e/i40e_pf.h index 47a9c34..b4c2287 100644 --- a/drivers/net/i40e/i40e_pf.h +++ b/drivers/net/i40e/i40e_pf.h @@ -48,11 +48,6 @@ #define I40E_DPDK_OFFSET 0x100 -enum i40e_pf_vfr_state { - I40E_PF_VFR_INPROGRESS = 0, - I40E_PF_VFR_COMPLETED = 1, -}; - /* DPDK pf driver specific command to VF */ enum i40e_virtchnl_ops_dpdk { /* -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-stable] [PATCH v12 12/26] net/i40e: fix VF MAC address assignment [not found] ` <1484642728-73411-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-17 8:45 ` [dpdk-stable] [PATCH v12 09/26] net/i40e: fix VF reset flow Wenzhuo Lu @ 2017-01-17 8:45 ` Wenzhuo Lu 1 sibling, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-17 8:45 UTC (permalink / raw) To: dev; +Cc: Ferruh Yigit, stable From: Ferruh Yigit <ferruh.yigit@intel.com> If PF sets vf->mac_addr, in VF initialization hw->mac.addr will be set to that same value. It is possible to check if PF set a MAC address or not through the hw->mac.addr variable. hw->mac.addr set by i40e_vf_parse_hw_config(), call stack is: In PF side i40e_pf_host_process_cmd_get_vf_resources() eth_addr_copy(vf->mac_addr, vf_res->vsi_res[0].default_mac_address) In VF sise i40evf_init_vf() i40evf_get_vf_resources() i40e_vf_parse_hw_config() memcpy(hw->mac.addr, vsi_res->default_mac_addr) Updated code is after i40evf_get_vf_resources() and can benefit from hw->mac.addr variable. Fixes: 89e6b86384bb ("i40evf: rework MAC address validation") CC: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- drivers/net/i40e/i40e_ethdev_vf.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index a9a8bb4..17a035c 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1195,7 +1195,6 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, int i, err, bufsz; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct ether_addr *p_mac_addr; uint16_t interval = i40e_calc_itr_interval(I40E_QUEUE_ITR_INTERVAL_MAX); @@ -1272,13 +1271,10 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); /* Store the MAC address configured by host, or generate random one */ - p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr); - if (is_valid_assigned_ether_addr(p_mac_addr)) { /* Configured by host */ - ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr); + if (is_valid_assigned_ether_addr((struct ether_addr *)hw->mac.addr)) vf->flags |= I40E_FLAG_VF_MAC_BY_PF; - } else { + else eth_random_addr(hw->mac.addr); /* Generate a random one */ - } /* If the PF host is not DPDK, set the interval of ITR0 to max*/ if (vf->version_major != I40E_DPDK_VERSION_MAJOR) { -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
[parent not found: <1484032363-60038-1-git-send-email-wenzhuo.lu@intel.com>]
* [dpdk-stable] [PATCH v8 12/25] net/i40e: fix VF MAC address assignment [not found] <1484032363-60038-1-git-send-email-wenzhuo.lu@intel.com> @ 2017-01-10 7:12 ` Wenzhuo Lu 0 siblings, 0 replies; 22+ messages in thread From: Wenzhuo Lu @ 2017-01-10 7:12 UTC (permalink / raw) To: wenzhuo.lu; +Cc: Ferruh Yigit, stable From: Ferruh Yigit <ferruh.yigit@intel.com> If PF sets vf->mac_addr, in VF initialization hw->mac.addr will be set to that same value. It is possible to check if PF set a MAC address or not through the hw->mac.addr variable. hw->mac.addr set by i40e_vf_parse_hw_config(), call stack is: In PF side i40e_pf_host_process_cmd_get_vf_resources() eth_addr_copy(vf->mac_addr, vf_res->vsi_res[0].default_mac_address) In VF sise i40evf_init_vf() i40evf_get_vf_resources() i40e_vf_parse_hw_config() memcpy(hw->mac.addr, vsi_res->default_mac_addr) Updated code is after i40evf_get_vf_resources() and can benefit from hw->mac.addr variable. Fixes: 89e6b86384bb ("i40evf: rework MAC address validation") CC: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- drivers/net/i40e/i40e_ethdev_vf.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 5016249..0977095 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1193,7 +1193,6 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, int i, err, bufsz; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct ether_addr *p_mac_addr; uint16_t interval = i40e_calc_itr_interval(I40E_QUEUE_ITR_INTERVAL_MAX); @@ -1270,13 +1269,10 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev, vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); /* Store the MAC address configured by host, or generate random one */ - p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr); - if (is_valid_assigned_ether_addr(p_mac_addr)) { /* Configured by host */ - ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr); + if (is_valid_assigned_ether_addr((struct ether_addr *)hw->mac.addr)) vf->flags |= I40E_FLAG_VF_MAC_BY_PF; - } else { + else eth_random_addr(hw->mac.addr); /* Generate a random one */ - } /* If the PF host is not DPDK, set the interval of ITR0 to max*/ if (vf->version_major != I40E_DPDK_VERSION_MAJOR) { -- 1.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2017-01-17 8:45 UTC | newest] Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <1480637533-37425-1-git-send-email-wenzhuo.lu@intel.com> [not found] ` <1481081535-37448-1-git-send-email-wenzhuo.lu@intel.com> 2016-12-07 3:31 ` [dpdk-stable] [PATCH v2 11/32] net/i40e: fix VF reset flow Wenzhuo Lu 2016-12-07 3:31 ` [dpdk-stable] [PATCH v2 14/32] net/i40e: fix VF MAC address assignment Wenzhuo Lu [not found] ` <1482302070-128496-1-git-send-email-wenzhuo.lu@intel.com> 2016-12-21 6:34 ` [dpdk-stable] [PATCH v6 09/25] net/i40e: fix VF reset flow Wenzhuo Lu 2016-12-21 6:34 ` [dpdk-stable] [PATCH v6 12/25] net/i40e: fix VF MAC address assignment Wenzhuo Lu [not found] ` <1483426488-117332-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 09/27] net/i40e: fix VF reset flow Wenzhuo Lu 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 12/27] net/i40e: fix VF MAC address assignment Wenzhuo Lu 2017-01-03 6:54 ` [dpdk-stable] [PATCH v7 26/27] net/i40e: fix segmentation fault in close Wenzhuo Lu 2017-01-06 1:29 ` [dpdk-stable] [dpdk-dev] " Wu, Jingjing 2017-01-06 12:00 ` Iremonger, Bernard 2017-01-09 9:44 ` Wu, Jingjing 2017-01-09 9:50 ` Iremonger, Bernard [not found] ` <1484032580-60134-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-10 7:16 ` [dpdk-stable] [PATCH v8 09/25] net/i40e: fix VF reset flow Wenzhuo Lu 2017-01-10 7:16 ` [dpdk-stable] [PATCH v8 12/25] net/i40e: fix VF MAC address assignment Wenzhuo Lu [not found] ` <1484290401-1404-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-13 6:53 ` [dpdk-stable] [PATCH v9 09/26] net/i40e: fix VF reset flow Wenzhuo Lu 2017-01-13 6:53 ` [dpdk-stable] [PATCH v9 12/26] net/i40e: fix VF MAC address assignment Wenzhuo Lu [not found] ` <1484545911-40432-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-16 5:51 ` [dpdk-stable] [PATCH v10 09/26] net/i40e: fix VF reset flow Wenzhuo Lu 2017-01-16 5:51 ` [dpdk-stable] [PATCH v10 12/26] net/i40e: fix VF MAC address assignment Wenzhuo Lu [not found] ` <1484620116-70813-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-17 2:28 ` [dpdk-stable] [PATCH v11 09/26] net/i40e: fix VF reset flow Wenzhuo Lu 2017-01-17 2:28 ` [dpdk-stable] [PATCH v11 12/26] net/i40e: fix VF MAC address assignment Wenzhuo Lu [not found] ` <1484642728-73411-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-17 8:45 ` [dpdk-stable] [PATCH v12 09/26] net/i40e: fix VF reset flow Wenzhuo Lu 2017-01-17 8:45 ` [dpdk-stable] [PATCH v12 12/26] net/i40e: fix VF MAC address assignment Wenzhuo Lu [not found] <1484032363-60038-1-git-send-email-wenzhuo.lu@intel.com> 2017-01-10 7:12 ` [dpdk-stable] [PATCH v8 12/25] " Wenzhuo Lu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).