Hi, Alexz Thanks for your quick reponse. Hi, Wenzhuo Would you please review it again and add your acknowledgement if it is OK for you.
> Subject: [PATCH v4] net/ixgbe: ping VF when PF status changes > > From: Alex Zelezniak <al...@att.com> > > v4: > * Removed duplicate line > > v3: > * Added 17.05 block to rte_pmd_ixgbe_version.map file > > v2: > * Removed trailing spaces > > v1: > * Implements function used by application managing PF to inform VF when link > status changes > > Signed-off-by: Alex Zelezniak <al...@att.com> Acked-by: Wei Dai <wei....@intel.com> > --- > drivers/net/ixgbe/ixgbe_ethdev.c | 31 > +++++++++++++++++++++++++++++ > drivers/net/ixgbe/rte_pmd_ixgbe.h | 14 +++++++++++++ > drivers/net/ixgbe/rte_pmd_ixgbe_version.map | 6 ++++++ > 3 files changed, 51 insertions(+) > > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c > b/drivers/net/ixgbe/ixgbe_ethdev.c > index 34bd681..a427a3d 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -4898,6 +4898,37 @@ static void ixgbevf_set_vfta_all(struct rte_eth_dev > *dev, bool on) > return new_val; > } > > +int > +rte_pmd_ixgbe_ping_vf(uint8_t port, uint16_t vf) { > + struct ixgbe_hw *hw; > + struct ixgbe_vf_info *vfinfo; > + struct rte_eth_dev *dev; > + struct rte_pci_device *pci_dev; > + uint32_t ctrl; > + > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); > + > + dev = &rte_eth_devices[port]; > + pci_dev = IXGBE_DEV_TO_PCI(dev); > + > + if (!is_device_supported(dev, &rte_ixgbe_pmd)) > + return -ENOTSUP; > + > + if (vf >= pci_dev->max_vfs) > + return -EINVAL; > + > + hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); > + vfinfo = *(IXGBE_DEV_PRIVATE_TO_P_VFDATA(dev->data->dev_private)); > + > + ctrl = IXGBE_PF_CONTROL_MSG; > + if (vfinfo[vf].clear_to_send) > + ctrl |= IXGBE_VT_MSGTYPE_CTS; > + > + ixgbe_write_mbx(hw, &ctrl, 1, vf); > + > + return 0; > +} > > int > rte_pmd_ixgbe_set_vf_vlan_anti_spoof(uint8_t port, uint16_t vf, uint8_t on) > diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe.h > b/drivers/net/ixgbe/rte_pmd_ixgbe.h > index 4d7b507..cdb747e 100644 > --- a/drivers/net/ixgbe/rte_pmd_ixgbe.h > +++ b/drivers/net/ixgbe/rte_pmd_ixgbe.h > @@ -42,6 +42,20 @@ > #include <rte_ethdev.h> > > /** > + * Notify VF when PF link status changes. > + * > + * @param port > + * The port identifier of the Ethernet device. > + * @param vf > + * VF id. > + * @return > + * - (0) if successful. > + * - (-ENODEV) if *port* invalid. > + * - (-EINVAL) if *vf* invalid. > + */ > +int rte_pmd_ixgbe_ping_vf(uint8_t port, uint16_t vf); > + > +/** > * Set the VF MAC address. > * > * @param port > diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map > b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map > index a992dfd..2c7512d 100644 > --- a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map > +++ b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map > @@ -31,3 +31,9 @@ DPDK_17.02 { > rte_pmd_ixgbe_set_vf_tx; > rte_pmd_ixgbe_set_vf_vlan_filter; > } DPDK_16.11; > + > +DPDK_17.05 { > + global: > + > + rte_pmd_ixgbe_ping_vf; > +} DPDK_17.02; > -- > 1.9.1