* [dpdk-dev] [PATCH] drivers/net: update link status @ 2018-03-13 18:05 Ferruh Yigit 2018-03-14 8:14 ` Nélio Laranjeiro ` (3 more replies) 0 siblings, 4 replies; 20+ messages in thread From: Ferruh Yigit @ 2018-03-13 18:05 UTC (permalink / raw) To: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Tiwei Bie, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh Cc: dev, Ferruh Yigit Update link status related feature document items and minor updates in some link status related functions. Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- doc/guides/nics/features/fm10k.ini | 2 ++ doc/guides/nics/features/fm10k_vf.ini | 2 ++ doc/guides/nics/features/i40e_vf.ini | 1 + doc/guides/nics/features/igb_vf.ini | 1 + doc/guides/nics/features/qede.ini | 1 - doc/guides/nics/features/qede_vf.ini | 1 - doc/guides/nics/features/vhost.ini | 2 -- doc/guides/nics/features/virtio_vec.ini | 1 + drivers/net/e1000/em_ethdev.c | 2 +- drivers/net/ena/ena_ethdev.c | 2 +- drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- drivers/net/i40e/i40e_ethdev_vf.c | 2 +- drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- drivers/net/mlx4/mlx4_ethdev.c | 2 +- drivers/net/mlx5/mlx5_ethdev.c | 2 +- 15 files changed, 15 insertions(+), 14 deletions(-) diff --git a/doc/guides/nics/features/fm10k.ini b/doc/guides/nics/features/fm10k.ini index f0f61a7d7..58f58b99c 100644 --- a/doc/guides/nics/features/fm10k.ini +++ b/doc/guides/nics/features/fm10k.ini @@ -5,6 +5,8 @@ ; [Features] Speed capabilities = P +Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Jumbo frame = Y diff --git a/doc/guides/nics/features/fm10k_vf.ini b/doc/guides/nics/features/fm10k_vf.ini index 32b93df4b..44b50faa1 100644 --- a/doc/guides/nics/features/fm10k_vf.ini +++ b/doc/guides/nics/features/fm10k_vf.ini @@ -5,6 +5,8 @@ ; [Features] Speed capabilities = P +Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Jumbo frame = Y diff --git a/doc/guides/nics/features/i40e_vf.ini b/doc/guides/nics/features/i40e_vf.ini index 46e0d9fce..ba2d8cbe9 100644 --- a/doc/guides/nics/features/i40e_vf.ini +++ b/doc/guides/nics/features/i40e_vf.ini @@ -5,6 +5,7 @@ ; [Features] Rx interrupt = Y +Link status = Y Queue start/stop = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/igb_vf.ini b/doc/guides/nics/features/igb_vf.ini index e641a2c97..d9653234b 100644 --- a/doc/guides/nics/features/igb_vf.ini +++ b/doc/guides/nics/features/igb_vf.ini @@ -4,6 +4,7 @@ ; Refer to default.ini for the full list of available PMD features. ; [Features] +Link status = Y Rx interrupt = Y Scattered Rx = Y TSO = Y diff --git a/doc/guides/nics/features/qede.ini b/doc/guides/nics/features/qede.ini index cbadc1949..13e34ae33 100644 --- a/doc/guides/nics/features/qede.ini +++ b/doc/guides/nics/features/qede.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y MTU update = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/qede_vf.ini b/doc/guides/nics/features/qede_vf.ini index 18857b6e3..70071a1bd 100644 --- a/doc/guides/nics/features/qede_vf.ini +++ b/doc/guides/nics/features/qede_vf.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y MTU update = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini index dffd1f493..31302745a 100644 --- a/doc/guides/nics/features/vhost.ini +++ b/doc/guides/nics/features/vhost.ini @@ -4,8 +4,6 @@ ; Refer to default.ini for the full list of available PMD features. ; [Features] -Link status = Y -Link status event = Y Free Tx mbuf on demand = Y Queue status event = Y Basic stats = Y diff --git a/doc/guides/nics/features/virtio_vec.ini b/doc/guides/nics/features/virtio_vec.ini index c06c860d4..e60fe36ae 100644 --- a/doc/guides/nics/features/virtio_vec.ini +++ b/doc/guides/nics/features/virtio_vec.ini @@ -6,6 +6,7 @@ [Features] Speed capabilities = P Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Promiscuous mode = Y diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index 242375ff1..080df70c4 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -1210,7 +1210,7 @@ eth_em_link_update(struct rte_eth_dev *dev, int wait_to_complete) link.link_autoneg = !(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED); } else if (!link_check && (link.link_status == ETH_LINK_UP)) { - link.link_speed = 0; + link.link_speed = ETH_SPEED_NUM_NONE; link.link_duplex = ETH_LINK_HALF_DUPLEX; link.link_status = ETH_LINK_DOWN; link.link_autoneg = ETH_LINK_FIXED; diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 34b2a8d78..ad4e03dba 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -724,7 +724,7 @@ static int ena_link_update(struct rte_eth_dev *dev, { struct rte_eth_link *link = &dev->data->dev_link; - link->link_status = 1; + link->link_status = ETH_LINK_UP; link->link_speed = ETH_SPEED_NUM_10G; link->link_duplex = ETH_LINK_FULL_DUPLEX; diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c index 94237610c..cc1a773a7 100644 --- a/drivers/net/fm10k/fm10k_ethdev.c +++ b/drivers/net/fm10k/fm10k_ethdev.c @@ -1233,13 +1233,11 @@ fm10k_link_update(struct rte_eth_dev *dev, FM10K_DEV_PRIVATE_TO_INFO(dev->data->dev_private); PMD_INIT_FUNC_TRACE(); - /* The speed is ~50Gbps per Gen3 x8 PCIe interface. For now, we - * leave the speed undefined since there is no 50Gbps Ethernet. - */ - dev->data->dev_link.link_speed = 0; + dev->data->dev_link.link_speed = ETH_SPEED_NUM_50G; dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX; dev->data->dev_link.link_status = dev_info->sm_down ? ETH_LINK_DOWN : ETH_LINK_UP; + dev->data->dev_link.link_autoneg = ETH_LINK_FIXED; return 0; } diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index fd003fe01..c771edde5 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -2107,7 +2107,7 @@ i40evf_dev_link_update(struct rte_eth_dev *dev, new_link.link_status = vf->link_up ? ETH_LINK_UP : ETH_LINK_DOWN; new_link.link_autoneg = - dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED; + !(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED); i40evf_dev_atomic_write_link_status(dev, &new_link); diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 448325857..bad83968c 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -3957,7 +3957,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev, bool autoneg = false; link.link_status = ETH_LINK_DOWN; - link.link_speed = 0; + link.link_speed = ETH_SPEED_NUM_NONE; link.link_duplex = ETH_LINK_HALF_DUPLEX; link.link_autoneg = ETH_LINK_AUTONEG; memset(&old, 0, sizeof(old)); diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c index fbeef16c8..beecc53ba 100644 --- a/drivers/net/mlx4/mlx4_ethdev.c +++ b/drivers/net/mlx4/mlx4_ethdev.c @@ -710,7 +710,7 @@ mlx4_link_update(struct rte_eth_dev *dev, int wait_to_complete) } link_speed = ethtool_cmd_speed(&edata); if (link_speed == -1) - dev_link.link_speed = 0; + dev_link.link_speed = ETH_SPEED_NUM_NONE; else dev_link.link_speed = link_speed; dev_link.link_duplex = ((edata.duplex == DUPLEX_HALF) ? diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index b73cb53df..de5576099 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -536,7 +536,7 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev, int wait_to_complete) } link_speed = ethtool_cmd_speed(&edata); if (link_speed == -1) - dev_link.link_speed = 0; + dev_link.link_speed = ETH_SPEED_NUM_NONE; else dev_link.link_speed = link_speed; priv->link_speed_capa = 0; -- 2.13.6 ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-03-13 18:05 [dpdk-dev] [PATCH] drivers/net: update link status Ferruh Yigit @ 2018-03-14 8:14 ` Nélio Laranjeiro 2018-03-20 15:21 ` Ferruh Yigit 2018-04-06 17:42 ` Ferruh Yigit ` (2 subsequent siblings) 3 siblings, 1 reply; 20+ messages in thread From: Nélio Laranjeiro @ 2018-03-14 8:14 UTC (permalink / raw) To: Ferruh Yigit Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Tiwei Bie, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Yongseok Koh, dev On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: > Update link status related feature document items and minor updates in > some link status related functions. > > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> > --- > doc/guides/nics/features/fm10k.ini | 2 ++ > doc/guides/nics/features/fm10k_vf.ini | 2 ++ > doc/guides/nics/features/i40e_vf.ini | 1 + > doc/guides/nics/features/igb_vf.ini | 1 + > doc/guides/nics/features/qede.ini | 1 - > doc/guides/nics/features/qede_vf.ini | 1 - > doc/guides/nics/features/vhost.ini | 2 -- > doc/guides/nics/features/virtio_vec.ini | 1 + > drivers/net/e1000/em_ethdev.c | 2 +- > drivers/net/ena/ena_ethdev.c | 2 +- > drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- > drivers/net/i40e/i40e_ethdev_vf.c | 2 +- > drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- > drivers/net/mlx4/mlx4_ethdev.c | 2 +- > drivers/net/mlx5/mlx5_ethdev.c | 2 +- > 15 files changed, 15 insertions(+), 14 deletions(-) > > diff --git a/doc/guides/nics/features/fm10k.ini b/doc/guides/nics/features/fm10k.ini > index f0f61a7d7..58f58b99c 100644 > --- a/doc/guides/nics/features/fm10k.ini > +++ b/doc/guides/nics/features/fm10k.ini > @@ -5,6 +5,8 @@ > ; > [Features] > Speed capabilities = P > +Link status = Y > +Link status event = Y > Rx interrupt = Y > Queue start/stop = Y > Jumbo frame = Y > diff --git a/doc/guides/nics/features/fm10k_vf.ini b/doc/guides/nics/features/fm10k_vf.ini > index 32b93df4b..44b50faa1 100644 > --- a/doc/guides/nics/features/fm10k_vf.ini > +++ b/doc/guides/nics/features/fm10k_vf.ini > @@ -5,6 +5,8 @@ > ; > [Features] > Speed capabilities = P > +Link status = Y > +Link status event = Y > Rx interrupt = Y > Queue start/stop = Y > Jumbo frame = Y > diff --git a/doc/guides/nics/features/i40e_vf.ini b/doc/guides/nics/features/i40e_vf.ini > index 46e0d9fce..ba2d8cbe9 100644 > --- a/doc/guides/nics/features/i40e_vf.ini > +++ b/doc/guides/nics/features/i40e_vf.ini > @@ -5,6 +5,7 @@ > ; > [Features] > Rx interrupt = Y > +Link status = Y > Queue start/stop = Y > Jumbo frame = Y > Scattered Rx = Y > diff --git a/doc/guides/nics/features/igb_vf.ini b/doc/guides/nics/features/igb_vf.ini > index e641a2c97..d9653234b 100644 > --- a/doc/guides/nics/features/igb_vf.ini > +++ b/doc/guides/nics/features/igb_vf.ini > @@ -4,6 +4,7 @@ > ; Refer to default.ini for the full list of available PMD features. > ; > [Features] > +Link status = Y > Rx interrupt = Y > Scattered Rx = Y > TSO = Y > diff --git a/doc/guides/nics/features/qede.ini b/doc/guides/nics/features/qede.ini > index cbadc1949..13e34ae33 100644 > --- a/doc/guides/nics/features/qede.ini > +++ b/doc/guides/nics/features/qede.ini > @@ -6,7 +6,6 @@ > [Features] > Speed capabilities = Y > Link status = Y > -Link status event = Y > MTU update = Y > Jumbo frame = Y > Scattered Rx = Y > diff --git a/doc/guides/nics/features/qede_vf.ini b/doc/guides/nics/features/qede_vf.ini > index 18857b6e3..70071a1bd 100644 > --- a/doc/guides/nics/features/qede_vf.ini > +++ b/doc/guides/nics/features/qede_vf.ini > @@ -6,7 +6,6 @@ > [Features] > Speed capabilities = Y > Link status = Y > -Link status event = Y > MTU update = Y > Jumbo frame = Y > Scattered Rx = Y > diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini > index dffd1f493..31302745a 100644 > --- a/doc/guides/nics/features/vhost.ini > +++ b/doc/guides/nics/features/vhost.ini > @@ -4,8 +4,6 @@ > ; Refer to default.ini for the full list of available PMD features. > ; > [Features] > -Link status = Y > -Link status event = Y > Free Tx mbuf on demand = Y > Queue status event = Y > Basic stats = Y > diff --git a/doc/guides/nics/features/virtio_vec.ini b/doc/guides/nics/features/virtio_vec.ini > index c06c860d4..e60fe36ae 100644 > --- a/doc/guides/nics/features/virtio_vec.ini > +++ b/doc/guides/nics/features/virtio_vec.ini > @@ -6,6 +6,7 @@ > [Features] > Speed capabilities = P > Link status = Y > +Link status event = Y > Rx interrupt = Y > Queue start/stop = Y > Promiscuous mode = Y > diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c > index 242375ff1..080df70c4 100644 > --- a/drivers/net/e1000/em_ethdev.c > +++ b/drivers/net/e1000/em_ethdev.c > @@ -1210,7 +1210,7 @@ eth_em_link_update(struct rte_eth_dev *dev, int wait_to_complete) > link.link_autoneg = !(dev->data->dev_conf.link_speeds & > ETH_LINK_SPEED_FIXED); > } else if (!link_check && (link.link_status == ETH_LINK_UP)) { > - link.link_speed = 0; > + link.link_speed = ETH_SPEED_NUM_NONE; > link.link_duplex = ETH_LINK_HALF_DUPLEX; > link.link_status = ETH_LINK_DOWN; > link.link_autoneg = ETH_LINK_FIXED; > diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c > index 34b2a8d78..ad4e03dba 100644 > --- a/drivers/net/ena/ena_ethdev.c > +++ b/drivers/net/ena/ena_ethdev.c > @@ -724,7 +724,7 @@ static int ena_link_update(struct rte_eth_dev *dev, > { > struct rte_eth_link *link = &dev->data->dev_link; > > - link->link_status = 1; > + link->link_status = ETH_LINK_UP; > link->link_speed = ETH_SPEED_NUM_10G; > link->link_duplex = ETH_LINK_FULL_DUPLEX; > > diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c > index 94237610c..cc1a773a7 100644 > --- a/drivers/net/fm10k/fm10k_ethdev.c > +++ b/drivers/net/fm10k/fm10k_ethdev.c > @@ -1233,13 +1233,11 @@ fm10k_link_update(struct rte_eth_dev *dev, > FM10K_DEV_PRIVATE_TO_INFO(dev->data->dev_private); > PMD_INIT_FUNC_TRACE(); > > - /* The speed is ~50Gbps per Gen3 x8 PCIe interface. For now, we > - * leave the speed undefined since there is no 50Gbps Ethernet. > - */ > - dev->data->dev_link.link_speed = 0; > + dev->data->dev_link.link_speed = ETH_SPEED_NUM_50G; > dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX; > dev->data->dev_link.link_status = > dev_info->sm_down ? ETH_LINK_DOWN : ETH_LINK_UP; > + dev->data->dev_link.link_autoneg = ETH_LINK_FIXED; > > return 0; > } > diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c > index fd003fe01..c771edde5 100644 > --- a/drivers/net/i40e/i40e_ethdev_vf.c > +++ b/drivers/net/i40e/i40e_ethdev_vf.c > @@ -2107,7 +2107,7 @@ i40evf_dev_link_update(struct rte_eth_dev *dev, > new_link.link_status = vf->link_up ? ETH_LINK_UP : > ETH_LINK_DOWN; > new_link.link_autoneg = > - dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED; > + !(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED); > > i40evf_dev_atomic_write_link_status(dev, &new_link); > > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c > index 448325857..bad83968c 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -3957,7 +3957,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev, > bool autoneg = false; > > link.link_status = ETH_LINK_DOWN; > - link.link_speed = 0; > + link.link_speed = ETH_SPEED_NUM_NONE; > link.link_duplex = ETH_LINK_HALF_DUPLEX; > link.link_autoneg = ETH_LINK_AUTONEG; > memset(&old, 0, sizeof(old)); > diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c > index fbeef16c8..beecc53ba 100644 > --- a/drivers/net/mlx4/mlx4_ethdev.c > +++ b/drivers/net/mlx4/mlx4_ethdev.c > @@ -710,7 +710,7 @@ mlx4_link_update(struct rte_eth_dev *dev, int wait_to_complete) > } > link_speed = ethtool_cmd_speed(&edata); > if (link_speed == -1) > - dev_link.link_speed = 0; > + dev_link.link_speed = ETH_SPEED_NUM_NONE; > else > dev_link.link_speed = link_speed; > dev_link.link_duplex = ((edata.duplex == DUPLEX_HALF) ? > diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c > index b73cb53df..de5576099 100644 > --- a/drivers/net/mlx5/mlx5_ethdev.c > +++ b/drivers/net/mlx5/mlx5_ethdev.c > @@ -536,7 +536,7 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev, int wait_to_complete) > } > link_speed = ethtool_cmd_speed(&edata); > if (link_speed == -1) > - dev_link.link_speed = 0; > + dev_link.link_speed = ETH_SPEED_NUM_NONE; > else > dev_link.link_speed = link_speed; > priv->link_speed_capa = 0; > -- > 2.13.6 Hi Ferruh, On mlx5 this hunk is conflicts with my series [1]. Regards, [1] https://dpdk.org/ml/archives/dev/2018-March/092495.html -- Nélio Laranjeiro 6WIND ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-03-14 8:14 ` Nélio Laranjeiro @ 2018-03-20 15:21 ` Ferruh Yigit 0 siblings, 0 replies; 20+ messages in thread From: Ferruh Yigit @ 2018-03-20 15:21 UTC (permalink / raw) To: Nélio Laranjeiro Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Tiwei Bie, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Yongseok Koh, dev On 3/14/2018 8:14 AM, Nélio Laranjeiro wrote: > On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: >> Update link status related feature document items and minor updates in >> some link status related functions. >> >> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> <...> >> @@ -536,7 +536,7 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev, int wait_to_complete) >> } >> link_speed = ethtool_cmd_speed(&edata); >> if (link_speed == -1) >> - dev_link.link_speed = 0; >> + dev_link.link_speed = ETH_SPEED_NUM_NONE; >> else >> dev_link.link_speed = link_speed; >> priv->link_speed_capa = 0; >> -- >> 2.13.6 > > Hi Ferruh, > > On mlx5 this hunk is conflicts with my series [1]. Thanks Nélio, The mlx5 change is so minor I thinks conflict can be handled while applying. > > Regards, > > [1] https://dpdk.org/ml/archives/dev/2018-March/092495.html > ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-03-13 18:05 [dpdk-dev] [PATCH] drivers/net: update link status Ferruh Yigit 2018-03-14 8:14 ` Nélio Laranjeiro @ 2018-04-06 17:42 ` Ferruh Yigit 2018-04-10 15:41 ` Tiwei Bie 2018-04-13 22:02 ` [dpdk-dev] [PATCH v2] " Ferruh Yigit 3 siblings, 0 replies; 20+ messages in thread From: Ferruh Yigit @ 2018-04-06 17:42 UTC (permalink / raw) To: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Tiwei Bie, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh Cc: dev On 3/13/2018 6:05 PM, Ferruh Yigit wrote: > Update link status related feature document items and minor updates in > some link status related functions. > > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> > --- > doc/guides/nics/features/fm10k.ini | 2 ++ > doc/guides/nics/features/fm10k_vf.ini | 2 ++ > doc/guides/nics/features/i40e_vf.ini | 1 + > doc/guides/nics/features/igb_vf.ini | 1 + > doc/guides/nics/features/qede.ini | 1 - > doc/guides/nics/features/qede_vf.ini | 1 - > doc/guides/nics/features/vhost.ini | 2 -- > doc/guides/nics/features/virtio_vec.ini | 1 + > drivers/net/e1000/em_ethdev.c | 2 +- > drivers/net/ena/ena_ethdev.c | 2 +- > drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- > drivers/net/i40e/i40e_ethdev_vf.c | 2 +- > drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- > drivers/net/mlx4/mlx4_ethdev.c | 2 +- > drivers/net/mlx5/mlx5_ethdev.c | 2 +- > 15 files changed, 15 insertions(+), 14 deletions(-) Reminder of this patch. Mostly trivial updates, but there is defect fix for i40e. Also feature list updated for vhost, virtio, qede, igb_vf, ixgbe_vf, fm10k_vf, please check. Thanks, ferruh ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-03-13 18:05 [dpdk-dev] [PATCH] drivers/net: update link status Ferruh Yigit 2018-03-14 8:14 ` Nélio Laranjeiro 2018-04-06 17:42 ` Ferruh Yigit @ 2018-04-10 15:41 ` Tiwei Bie 2018-04-13 21:53 ` Ferruh Yigit 2018-04-13 22:02 ` [dpdk-dev] [PATCH v2] " Ferruh Yigit 3 siblings, 1 reply; 20+ messages in thread From: Tiwei Bie @ 2018-04-10 15:41 UTC (permalink / raw) To: Ferruh Yigit Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: > Update link status related feature document items and minor updates in > some link status related functions. > > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> > --- > doc/guides/nics/features/fm10k.ini | 2 ++ > doc/guides/nics/features/fm10k_vf.ini | 2 ++ > doc/guides/nics/features/i40e_vf.ini | 1 + > doc/guides/nics/features/igb_vf.ini | 1 + > doc/guides/nics/features/qede.ini | 1 - > doc/guides/nics/features/qede_vf.ini | 1 - > doc/guides/nics/features/vhost.ini | 2 -- > doc/guides/nics/features/virtio_vec.ini | 1 + > drivers/net/e1000/em_ethdev.c | 2 +- > drivers/net/ena/ena_ethdev.c | 2 +- > drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- > drivers/net/i40e/i40e_ethdev_vf.c | 2 +- > drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- > drivers/net/mlx4/mlx4_ethdev.c | 2 +- > drivers/net/mlx5/mlx5_ethdev.c | 2 +- > 15 files changed, 15 insertions(+), 14 deletions(-) [...] > diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini > index dffd1f493..31302745a 100644 > --- a/doc/guides/nics/features/vhost.ini > +++ b/doc/guides/nics/features/vhost.ini > @@ -4,8 +4,6 @@ > ; Refer to default.ini for the full list of available PMD features. > ; > [Features] > -Link status = Y > -Link status event = Y I think vhost PMD supports above features. > Free Tx mbuf on demand = Y > Queue status event = Y > Basic stats = Y > diff --git a/doc/guides/nics/features/virtio_vec.ini b/doc/guides/nics/features/virtio_vec.ini > index c06c860d4..e60fe36ae 100644 > --- a/doc/guides/nics/features/virtio_vec.ini > +++ b/doc/guides/nics/features/virtio_vec.ini The doc/guides/nics/features/virtio.ini also needs to be updated. Thanks for work! > @@ -6,6 +6,7 @@ > [Features] > Speed capabilities = P > Link status = Y > +Link status event = Y > Rx interrupt = Y > Queue start/stop = Y > Promiscuous mode = Y [...] ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-10 15:41 ` Tiwei Bie @ 2018-04-13 21:53 ` Ferruh Yigit 2018-04-14 10:55 ` Tiwei Bie 0 siblings, 1 reply; 20+ messages in thread From: Ferruh Yigit @ 2018-04-13 21:53 UTC (permalink / raw) To: Tiwei Bie Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On 4/10/2018 4:41 PM, Tiwei Bie wrote: > On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: >> Update link status related feature document items and minor updates in >> some link status related functions. >> >> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> >> --- >> doc/guides/nics/features/fm10k.ini | 2 ++ >> doc/guides/nics/features/fm10k_vf.ini | 2 ++ >> doc/guides/nics/features/i40e_vf.ini | 1 + >> doc/guides/nics/features/igb_vf.ini | 1 + >> doc/guides/nics/features/qede.ini | 1 - >> doc/guides/nics/features/qede_vf.ini | 1 - >> doc/guides/nics/features/vhost.ini | 2 -- >> doc/guides/nics/features/virtio_vec.ini | 1 + >> drivers/net/e1000/em_ethdev.c | 2 +- >> drivers/net/ena/ena_ethdev.c | 2 +- >> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- >> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- >> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- >> drivers/net/mlx4/mlx4_ethdev.c | 2 +- >> drivers/net/mlx5/mlx5_ethdev.c | 2 +- >> 15 files changed, 15 insertions(+), 14 deletions(-) > [...] >> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini >> index dffd1f493..31302745a 100644 >> --- a/doc/guides/nics/features/vhost.ini >> +++ b/doc/guides/nics/features/vhost.ini >> @@ -4,8 +4,6 @@ >> ; Refer to default.ini for the full list of available PMD features. >> ; >> [Features] >> -Link status = Y >> -Link status event = Y > > I think vhost PMD supports above features. I am not able to find where it is supported. Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they are not reported as supporting Link status, as far as I can see vhost also one of them. And for Link status event, PMD needs to support LSC interrupts and should register interrupt handler for it, which I can't find for vhost. I will send next version without updating above one, please point me where these support added if I missed them. > >> Free Tx mbuf on demand = Y >> Queue status event = Y >> Basic stats = Y >> diff --git a/doc/guides/nics/features/virtio_vec.ini b/doc/guides/nics/features/virtio_vec.ini >> index c06c860d4..e60fe36ae 100644 >> --- a/doc/guides/nics/features/virtio_vec.ini >> +++ b/doc/guides/nics/features/virtio_vec.ini > > The doc/guides/nics/features/virtio.ini also needs to be updated. Done. > > Thanks for work! > >> @@ -6,6 +6,7 @@ >> [Features] >> Speed capabilities = P >> Link status = Y >> +Link status event = Y >> Rx interrupt = Y >> Queue start/stop = Y >> Promiscuous mode = Y > [...] > ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-13 21:53 ` Ferruh Yigit @ 2018-04-14 10:55 ` Tiwei Bie 2018-04-16 16:10 ` Ferruh Yigit 0 siblings, 1 reply; 20+ messages in thread From: Tiwei Bie @ 2018-04-14 10:55 UTC (permalink / raw) To: Ferruh Yigit Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: > On 4/10/2018 4:41 PM, Tiwei Bie wrote: > > On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: > >> Update link status related feature document items and minor updates in > >> some link status related functions. > >> > >> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> > >> --- > >> doc/guides/nics/features/fm10k.ini | 2 ++ > >> doc/guides/nics/features/fm10k_vf.ini | 2 ++ > >> doc/guides/nics/features/i40e_vf.ini | 1 + > >> doc/guides/nics/features/igb_vf.ini | 1 + > >> doc/guides/nics/features/qede.ini | 1 - > >> doc/guides/nics/features/qede_vf.ini | 1 - > >> doc/guides/nics/features/vhost.ini | 2 -- > >> doc/guides/nics/features/virtio_vec.ini | 1 + > >> drivers/net/e1000/em_ethdev.c | 2 +- > >> drivers/net/ena/ena_ethdev.c | 2 +- > >> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- > >> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- > >> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- > >> drivers/net/mlx4/mlx4_ethdev.c | 2 +- > >> drivers/net/mlx5/mlx5_ethdev.c | 2 +- > >> 15 files changed, 15 insertions(+), 14 deletions(-) > > [...] > >> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini > >> index dffd1f493..31302745a 100644 > >> --- a/doc/guides/nics/features/vhost.ini > >> +++ b/doc/guides/nics/features/vhost.ini > >> @@ -4,8 +4,6 @@ > >> ; Refer to default.ini for the full list of available PMD features. > >> ; > >> [Features] > >> -Link status = Y > >> -Link status event = Y > > > > I think vhost PMD supports above features. > > I am not able to find where it is supported. > > Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they > are not reported as supporting Link status, as far as I can see vhost also one > of them. > > And for Link status event, PMD needs to support LSC interrupts and should > register interrupt handler for it, which I can't find for vhost. > > I will send next version without updating above one, please point me where these > support added if I missed them. In drivers/net/vhost/rte_eth_vhost.c you could find below functions: static int new_device(int vid) { ...... eth_dev->data->dev_link.link_status = ETH_LINK_UP; ...... _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); ...... } static void destroy_device(int vid) { ...... eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; ...... _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); ...... } They are the callbacks for vhost library. When a frontend (e.g. QEMU) is connected to this vhost backend and the frontend virtio device becomes ready, new_device() will be called by the vhost library, and the link status will be updated to UP. And when e.g. the connection is closed, destroy_device() will be called by the vhost library, and the link status will be updated to DOWN. So vhost PMD reports meaningful link status and also generates link status events. Thanks ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-14 10:55 ` Tiwei Bie @ 2018-04-16 16:10 ` Ferruh Yigit 2018-04-17 4:54 ` Tiwei Bie 0 siblings, 1 reply; 20+ messages in thread From: Ferruh Yigit @ 2018-04-16 16:10 UTC (permalink / raw) To: Tiwei Bie Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On 4/14/2018 11:55 AM, Tiwei Bie wrote: > On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: >> On 4/10/2018 4:41 PM, Tiwei Bie wrote: >>> On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: >>>> Update link status related feature document items and minor updates in >>>> some link status related functions. >>>> >>>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> >>>> --- >>>> doc/guides/nics/features/fm10k.ini | 2 ++ >>>> doc/guides/nics/features/fm10k_vf.ini | 2 ++ >>>> doc/guides/nics/features/i40e_vf.ini | 1 + >>>> doc/guides/nics/features/igb_vf.ini | 1 + >>>> doc/guides/nics/features/qede.ini | 1 - >>>> doc/guides/nics/features/qede_vf.ini | 1 - >>>> doc/guides/nics/features/vhost.ini | 2 -- >>>> doc/guides/nics/features/virtio_vec.ini | 1 + >>>> drivers/net/e1000/em_ethdev.c | 2 +- >>>> drivers/net/ena/ena_ethdev.c | 2 +- >>>> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- >>>> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- >>>> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- >>>> drivers/net/mlx4/mlx4_ethdev.c | 2 +- >>>> drivers/net/mlx5/mlx5_ethdev.c | 2 +- >>>> 15 files changed, 15 insertions(+), 14 deletions(-) >>> [...] >>>> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini >>>> index dffd1f493..31302745a 100644 >>>> --- a/doc/guides/nics/features/vhost.ini >>>> +++ b/doc/guides/nics/features/vhost.ini >>>> @@ -4,8 +4,6 @@ >>>> ; Refer to default.ini for the full list of available PMD features. >>>> ; >>>> [Features] >>>> -Link status = Y >>>> -Link status event = Y >>> >>> I think vhost PMD supports above features. >> >> I am not able to find where it is supported. >> >> Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they >> are not reported as supporting Link status, as far as I can see vhost also one >> of them. >> >> And for Link status event, PMD needs to support LSC interrupts and should >> register interrupt handler for it, which I can't find for vhost. >> >> I will send next version without updating above one, please point me where these >> support added if I missed them. > > In drivers/net/vhost/rte_eth_vhost.c you could find below functions: > > static int > new_device(int vid) > { > ...... > > eth_dev->data->dev_link.link_status = ETH_LINK_UP; > > ...... > > _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); > > ...... > } > > static void > destroy_device(int vid) > { > ...... > > eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; > > ...... > > _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); > > ...... > } > > They are the callbacks for vhost library. > > When a frontend (e.g. QEMU) is connected to this vhost backend > and the frontend virtio device becomes ready, new_device() will > be called by the vhost library, and the link status will be > updated to UP. > > And when e.g. the connection is closed, destroy_device() will be > called by the vhost library, and the link status will be updated > to DOWN. Got it. This behavior is similar for virtual PMDs. Provide static link information and update link as UP during start and update it as DOWN during stop. Other virtual PMDs doesn't report this feature, so removed from vhost as well for consistency. > > So vhost PMD reports meaningful link status and also generates > link status events. Yes PMD process user callbacks on link change [1], but I am not sure that is what meant from "link status event", what I understand is link interrupts supported in PMD level which seems not the case for vhost. [1] This is something else but why calling user callback in link update is in PMD discretion, shouldn't it be something done automatically in ethdev layer, somehow. > > Thanks > ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-16 16:10 ` Ferruh Yigit @ 2018-04-17 4:54 ` Tiwei Bie 2018-04-17 11:26 ` Ferruh Yigit 0 siblings, 1 reply; 20+ messages in thread From: Tiwei Bie @ 2018-04-17 4:54 UTC (permalink / raw) To: Ferruh Yigit Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On Mon, Apr 16, 2018 at 05:10:24PM +0100, Ferruh Yigit wrote: > On 4/14/2018 11:55 AM, Tiwei Bie wrote: > > On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: > >> On 4/10/2018 4:41 PM, Tiwei Bie wrote: > >>> On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: > >>>> Update link status related feature document items and minor updates in > >>>> some link status related functions. > >>>> > >>>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> > >>>> --- > >>>> doc/guides/nics/features/fm10k.ini | 2 ++ > >>>> doc/guides/nics/features/fm10k_vf.ini | 2 ++ > >>>> doc/guides/nics/features/i40e_vf.ini | 1 + > >>>> doc/guides/nics/features/igb_vf.ini | 1 + > >>>> doc/guides/nics/features/qede.ini | 1 - > >>>> doc/guides/nics/features/qede_vf.ini | 1 - > >>>> doc/guides/nics/features/vhost.ini | 2 -- > >>>> doc/guides/nics/features/virtio_vec.ini | 1 + > >>>> drivers/net/e1000/em_ethdev.c | 2 +- > >>>> drivers/net/ena/ena_ethdev.c | 2 +- > >>>> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- > >>>> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- > >>>> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- > >>>> drivers/net/mlx4/mlx4_ethdev.c | 2 +- > >>>> drivers/net/mlx5/mlx5_ethdev.c | 2 +- > >>>> 15 files changed, 15 insertions(+), 14 deletions(-) > >>> [...] > >>>> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini > >>>> index dffd1f493..31302745a 100644 > >>>> --- a/doc/guides/nics/features/vhost.ini > >>>> +++ b/doc/guides/nics/features/vhost.ini > >>>> @@ -4,8 +4,6 @@ > >>>> ; Refer to default.ini for the full list of available PMD features. > >>>> ; > >>>> [Features] > >>>> -Link status = Y > >>>> -Link status event = Y > >>> > >>> I think vhost PMD supports above features. > >> > >> I am not able to find where it is supported. > >> > >> Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they > >> are not reported as supporting Link status, as far as I can see vhost also one > >> of them. > >> > >> And for Link status event, PMD needs to support LSC interrupts and should > >> register interrupt handler for it, which I can't find for vhost. > >> > >> I will send next version without updating above one, please point me where these > >> support added if I missed them. > > > > In drivers/net/vhost/rte_eth_vhost.c you could find below functions: > > > > static int > > new_device(int vid) > > { > > ...... > > > > eth_dev->data->dev_link.link_status = ETH_LINK_UP; > > > > ...... > > > > _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); > > > > ...... > > } > > > > static void > > destroy_device(int vid) > > { > > ...... > > > > eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; > > > > ...... > > > > _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); > > > > ...... > > } > > > > They are the callbacks for vhost library. > > > > When a frontend (e.g. QEMU) is connected to this vhost backend > > and the frontend virtio device becomes ready, new_device() will > > be called by the vhost library, and the link status will be > > updated to UP. > > > > And when e.g. the connection is closed, destroy_device() will be > > called by the vhost library, and the link status will be updated > > to DOWN. > > > Got it. This behavior is similar for virtual PMDs. Provide static link > information and update link as UP during start and update it as DOWN during stop. No, the link status isn't updated during vhost PMD start and stop. When the vhost PMD has been started, the link status still may be DOWN. The link status becomes UP only when the QEMU (it's another virtual machine process which has a virtio device) connects to this vhost PMD via a UNIX socket and the virtio driver in the virtual machine has setup the virtio device of the virtual machine. So if vhost PMD reports the link status as DOWN, it means there is no QEMU (virtual machine) connects to it or the virtio device in the virtual machine hasn't been setup. (PS. The frontend can also be virtio-user PMD besides QEMU) Thanks > > Other virtual PMDs doesn't report this feature, so removed from vhost as well > for consistency. > > > > > So vhost PMD reports meaningful link status and also generates > > link status events. > > Yes PMD process user callbacks on link change [1], but I am not sure that is > what meant from "link status event", what I understand is link interrupts > supported in PMD level which seems not the case for vhost. > > [1] > This is something else but why calling user callback in link update is in PMD > discretion, shouldn't it be something done automatically in ethdev layer, somehow. > > > > > Thanks > > > ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-17 4:54 ` Tiwei Bie @ 2018-04-17 11:26 ` Ferruh Yigit 2018-04-18 6:49 ` Tan, Jianfeng 0 siblings, 1 reply; 20+ messages in thread From: Ferruh Yigit @ 2018-04-17 11:26 UTC (permalink / raw) To: Tiwei Bie Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On 4/17/2018 5:54 AM, Tiwei Bie wrote: > On Mon, Apr 16, 2018 at 05:10:24PM +0100, Ferruh Yigit wrote: >> On 4/14/2018 11:55 AM, Tiwei Bie wrote: >>> On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: >>>> On 4/10/2018 4:41 PM, Tiwei Bie wrote: >>>>> On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: >>>>>> Update link status related feature document items and minor updates in >>>>>> some link status related functions. >>>>>> >>>>>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> >>>>>> --- >>>>>> doc/guides/nics/features/fm10k.ini | 2 ++ >>>>>> doc/guides/nics/features/fm10k_vf.ini | 2 ++ >>>>>> doc/guides/nics/features/i40e_vf.ini | 1 + >>>>>> doc/guides/nics/features/igb_vf.ini | 1 + >>>>>> doc/guides/nics/features/qede.ini | 1 - >>>>>> doc/guides/nics/features/qede_vf.ini | 1 - >>>>>> doc/guides/nics/features/vhost.ini | 2 -- >>>>>> doc/guides/nics/features/virtio_vec.ini | 1 + >>>>>> drivers/net/e1000/em_ethdev.c | 2 +- >>>>>> drivers/net/ena/ena_ethdev.c | 2 +- >>>>>> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- >>>>>> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- >>>>>> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- >>>>>> drivers/net/mlx4/mlx4_ethdev.c | 2 +- >>>>>> drivers/net/mlx5/mlx5_ethdev.c | 2 +- >>>>>> 15 files changed, 15 insertions(+), 14 deletions(-) >>>>> [...] >>>>>> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini >>>>>> index dffd1f493..31302745a 100644 >>>>>> --- a/doc/guides/nics/features/vhost.ini >>>>>> +++ b/doc/guides/nics/features/vhost.ini >>>>>> @@ -4,8 +4,6 @@ >>>>>> ; Refer to default.ini for the full list of available PMD features. >>>>>> ; >>>>>> [Features] >>>>>> -Link status = Y >>>>>> -Link status event = Y >>>>> >>>>> I think vhost PMD supports above features. >>>> >>>> I am not able to find where it is supported. >>>> >>>> Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they >>>> are not reported as supporting Link status, as far as I can see vhost also one >>>> of them. >>>> >>>> And for Link status event, PMD needs to support LSC interrupts and should >>>> register interrupt handler for it, which I can't find for vhost. >>>> >>>> I will send next version without updating above one, please point me where these >>>> support added if I missed them. >>> >>> In drivers/net/vhost/rte_eth_vhost.c you could find below functions: >>> >>> static int >>> new_device(int vid) >>> { >>> ...... >>> >>> eth_dev->data->dev_link.link_status = ETH_LINK_UP; >>> >>> ...... >>> >>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>> >>> ...... >>> } >>> >>> static void >>> destroy_device(int vid) >>> { >>> ...... >>> >>> eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; >>> >>> ...... >>> >>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>> >>> ...... >>> } >>> >>> They are the callbacks for vhost library. >>> >>> When a frontend (e.g. QEMU) is connected to this vhost backend >>> and the frontend virtio device becomes ready, new_device() will >>> be called by the vhost library, and the link status will be >>> updated to UP. >>> >>> And when e.g. the connection is closed, destroy_device() will be >>> called by the vhost library, and the link status will be updated >>> to DOWN. >> >> >> Got it. This behavior is similar for virtual PMDs. Provide static link >> information and update link as UP during start and update it as DOWN during stop. > > No, the link status isn't updated during vhost PMD start > and stop. When the vhost PMD has been started, the link > status still may be DOWN. The link status becomes UP only > when the QEMU (it's another virtual machine process which > has a virtio device) connects to this vhost PMD via a UNIX > socket and the virtio driver in the virtual machine has > setup the virtio device of the virtual machine. > > So if vhost PMD reports the link status as DOWN, it means > there is no QEMU (virtual machine) connects to it or the > virtio device in the virtual machine hasn't been setup. > (PS. The frontend can also be virtio-user PMD besides QEMU) I believe announcing link feature reporting on virtual pmds still in gray area, but because of qemu involvement in vhost case, I will keep link feature but will drop link event. Will send a new patch to reflect this. Thanks, ferruh > > Thanks > >> >> Other virtual PMDs doesn't report this feature, so removed from vhost as well >> for consistency. >> >>> >>> So vhost PMD reports meaningful link status and also generates >>> link status events. >> >> Yes PMD process user callbacks on link change [1], but I am not sure that is >> what meant from "link status event", what I understand is link interrupts >> supported in PMD level which seems not the case for vhost. >> >> [1] >> This is something else but why calling user callback in link update is in PMD >> discretion, shouldn't it be something done automatically in ethdev layer, somehow. >> >>> >>> Thanks >>> >> ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-17 11:26 ` Ferruh Yigit @ 2018-04-18 6:49 ` Tan, Jianfeng 2018-04-18 10:42 ` Ferruh Yigit 0 siblings, 1 reply; 20+ messages in thread From: Tan, Jianfeng @ 2018-04-18 6:49 UTC (permalink / raw) To: Ferruh Yigit, Tiwei Bie Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev Hi Ferruh, On 4/17/2018 7:26 PM, Ferruh Yigit wrote: > On 4/17/2018 5:54 AM, Tiwei Bie wrote: >> On Mon, Apr 16, 2018 at 05:10:24PM +0100, Ferruh Yigit wrote: >>> On 4/14/2018 11:55 AM, Tiwei Bie wrote: >>>> On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: >>>>> On 4/10/2018 4:41 PM, Tiwei Bie wrote: >>>>>> On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: >>>>>>> Update link status related feature document items and minor updates in >>>>>>> some link status related functions. >>>>>>> >>>>>>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> >>>>>>> --- >>>>>>> doc/guides/nics/features/fm10k.ini | 2 ++ >>>>>>> doc/guides/nics/features/fm10k_vf.ini | 2 ++ >>>>>>> doc/guides/nics/features/i40e_vf.ini | 1 + >>>>>>> doc/guides/nics/features/igb_vf.ini | 1 + >>>>>>> doc/guides/nics/features/qede.ini | 1 - >>>>>>> doc/guides/nics/features/qede_vf.ini | 1 - >>>>>>> doc/guides/nics/features/vhost.ini | 2 -- >>>>>>> doc/guides/nics/features/virtio_vec.ini | 1 + >>>>>>> drivers/net/e1000/em_ethdev.c | 2 +- >>>>>>> drivers/net/ena/ena_ethdev.c | 2 +- >>>>>>> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- >>>>>>> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- >>>>>>> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- >>>>>>> drivers/net/mlx4/mlx4_ethdev.c | 2 +- >>>>>>> drivers/net/mlx5/mlx5_ethdev.c | 2 +- >>>>>>> 15 files changed, 15 insertions(+), 14 deletions(-) >>>>>> [...] >>>>>>> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini >>>>>>> index dffd1f493..31302745a 100644 >>>>>>> --- a/doc/guides/nics/features/vhost.ini >>>>>>> +++ b/doc/guides/nics/features/vhost.ini >>>>>>> @@ -4,8 +4,6 @@ >>>>>>> ; Refer to default.ini for the full list of available PMD features. >>>>>>> ; >>>>>>> [Features] >>>>>>> -Link status = Y >>>>>>> -Link status event = Y >>>>>> I think vhost PMD supports above features. >>>>> I am not able to find where it is supported. >>>>> >>>>> Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they >>>>> are not reported as supporting Link status, as far as I can see vhost also one >>>>> of them. >>>>> >>>>> And for Link status event, PMD needs to support LSC interrupts and should >>>>> register interrupt handler for it, which I can't find for vhost. >>>>> >>>>> I will send next version without updating above one, please point me where these >>>>> support added if I missed them. >>>> In drivers/net/vhost/rte_eth_vhost.c you could find below functions: >>>> >>>> static int >>>> new_device(int vid) >>>> { >>>> ...... >>>> >>>> eth_dev->data->dev_link.link_status = ETH_LINK_UP; >>>> >>>> ...... >>>> >>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>>> >>>> ...... >>>> } >>>> >>>> static void >>>> destroy_device(int vid) >>>> { >>>> ...... >>>> >>>> eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; >>>> >>>> ...... >>>> >>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>>> >>>> ...... >>>> } >>>> >>>> They are the callbacks for vhost library. >>>> >>>> When a frontend (e.g. QEMU) is connected to this vhost backend >>>> and the frontend virtio device becomes ready, new_device() will >>>> be called by the vhost library, and the link status will be >>>> updated to UP. >>>> >>>> And when e.g. the connection is closed, destroy_device() will be >>>> called by the vhost library, and the link status will be updated >>>> to DOWN. >>> >>> Got it. This behavior is similar for virtual PMDs. Provide static link >>> information and update link as UP during start and update it as DOWN during stop. >> No, the link status isn't updated during vhost PMD start >> and stop. When the vhost PMD has been started, the link >> status still may be DOWN. The link status becomes UP only >> when the QEMU (it's another virtual machine process which >> has a virtio device) connects to this vhost PMD via a UNIX >> socket and the virtio driver in the virtual machine has >> setup the virtio device of the virtual machine. >> >> So if vhost PMD reports the link status as DOWN, it means >> there is no QEMU (virtual machine) connects to it or the >> virtio device in the virtual machine hasn't been setup. >> (PS. The frontend can also be virtio-user PMD besides QEMU) > I believe announcing link feature reporting on virtual pmds still in gray area, > but because of qemu involvement in vhost case, I will keep link feature but will > drop link event. AFAIK, link status means we can get link status through APIs like rte_eth_link_get(); while link status event means applications can register link status events, and those events get called if link status is changed. If I understand it correctly, for vhost, we can keep both link status and link status event for vhost. Could you specify the reason why we remove link status event? Thanks, Jianfeng > > Will send a new patch to reflect this. > > Thanks, > ferruh ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-18 6:49 ` Tan, Jianfeng @ 2018-04-18 10:42 ` Ferruh Yigit 2018-04-18 11:36 ` Tiwei Bie 0 siblings, 1 reply; 20+ messages in thread From: Ferruh Yigit @ 2018-04-18 10:42 UTC (permalink / raw) To: Tan, Jianfeng, Tiwei Bie Cc: Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On 4/18/2018 7:49 AM, Tan, Jianfeng wrote: > Hi Ferruh, > > > On 4/17/2018 7:26 PM, Ferruh Yigit wrote: >> On 4/17/2018 5:54 AM, Tiwei Bie wrote: >>> On Mon, Apr 16, 2018 at 05:10:24PM +0100, Ferruh Yigit wrote: >>>> On 4/14/2018 11:55 AM, Tiwei Bie wrote: >>>>> On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: >>>>>> On 4/10/2018 4:41 PM, Tiwei Bie wrote: >>>>>>> On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: >>>>>>>> Update link status related feature document items and minor updates in >>>>>>>> some link status related functions. >>>>>>>> >>>>>>>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> >>>>>>>> --- >>>>>>>> doc/guides/nics/features/fm10k.ini | 2 ++ >>>>>>>> doc/guides/nics/features/fm10k_vf.ini | 2 ++ >>>>>>>> doc/guides/nics/features/i40e_vf.ini | 1 + >>>>>>>> doc/guides/nics/features/igb_vf.ini | 1 + >>>>>>>> doc/guides/nics/features/qede.ini | 1 - >>>>>>>> doc/guides/nics/features/qede_vf.ini | 1 - >>>>>>>> doc/guides/nics/features/vhost.ini | 2 -- >>>>>>>> doc/guides/nics/features/virtio_vec.ini | 1 + >>>>>>>> drivers/net/e1000/em_ethdev.c | 2 +- >>>>>>>> drivers/net/ena/ena_ethdev.c | 2 +- >>>>>>>> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- >>>>>>>> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- >>>>>>>> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- >>>>>>>> drivers/net/mlx4/mlx4_ethdev.c | 2 +- >>>>>>>> drivers/net/mlx5/mlx5_ethdev.c | 2 +- >>>>>>>> 15 files changed, 15 insertions(+), 14 deletions(-) >>>>>>> [...] >>>>>>>> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini >>>>>>>> index dffd1f493..31302745a 100644 >>>>>>>> --- a/doc/guides/nics/features/vhost.ini >>>>>>>> +++ b/doc/guides/nics/features/vhost.ini >>>>>>>> @@ -4,8 +4,6 @@ >>>>>>>> ; Refer to default.ini for the full list of available PMD features. >>>>>>>> ; >>>>>>>> [Features] >>>>>>>> -Link status = Y >>>>>>>> -Link status event = Y >>>>>>> I think vhost PMD supports above features. >>>>>> I am not able to find where it is supported. >>>>>> >>>>>> Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they >>>>>> are not reported as supporting Link status, as far as I can see vhost also one >>>>>> of them. >>>>>> >>>>>> And for Link status event, PMD needs to support LSC interrupts and should >>>>>> register interrupt handler for it, which I can't find for vhost. >>>>>> >>>>>> I will send next version without updating above one, please point me where these >>>>>> support added if I missed them. >>>>> In drivers/net/vhost/rte_eth_vhost.c you could find below functions: >>>>> >>>>> static int >>>>> new_device(int vid) >>>>> { >>>>> ...... >>>>> >>>>> eth_dev->data->dev_link.link_status = ETH_LINK_UP; >>>>> >>>>> ...... >>>>> >>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>>>> >>>>> ...... >>>>> } >>>>> >>>>> static void >>>>> destroy_device(int vid) >>>>> { >>>>> ...... >>>>> >>>>> eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; >>>>> >>>>> ...... >>>>> >>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>>>> >>>>> ...... >>>>> } >>>>> >>>>> They are the callbacks for vhost library. >>>>> >>>>> When a frontend (e.g. QEMU) is connected to this vhost backend >>>>> and the frontend virtio device becomes ready, new_device() will >>>>> be called by the vhost library, and the link status will be >>>>> updated to UP. >>>>> >>>>> And when e.g. the connection is closed, destroy_device() will be >>>>> called by the vhost library, and the link status will be updated >>>>> to DOWN. >>>> >>>> Got it. This behavior is similar for virtual PMDs. Provide static link >>>> information and update link as UP during start and update it as DOWN during stop. >>> No, the link status isn't updated during vhost PMD start >>> and stop. When the vhost PMD has been started, the link >>> status still may be DOWN. The link status becomes UP only >>> when the QEMU (it's another virtual machine process which >>> has a virtio device) connects to this vhost PMD via a UNIX >>> socket and the virtio driver in the virtual machine has >>> setup the virtio device of the virtual machine. >>> >>> So if vhost PMD reports the link status as DOWN, it means >>> there is no QEMU (virtual machine) connects to it or the >>> virtio device in the virtual machine hasn't been setup. >>> (PS. The frontend can also be virtio-user PMD besides QEMU) >> I believe announcing link feature reporting on virtual pmds still in gray area, >> but because of qemu involvement in vhost case, I will keep link feature but will >> drop link event. > > AFAIK, link status means we can get link status through APIs like > rte_eth_link_get(); while link status event means applications can > register link status events, and those events get called if link status > is changed. > > If I understand it correctly, for vhost, we can keep both link status > and link status event for vhost. > > Could you specify the reason why we remove link status event? Hi Jianfeng, I think problem is the definition of the features are not clear, that is why I started a doc to document them (doc/guides/nics/features.rst) "Link status", I think we agree on this one. PMD should provide up-to-date, valid link data on rte_eth_dev_data->dev_link. So that this link information can be get by rte_eth_link_get(), rte_eth_link_get_nowait() ethdev APIs. rte_eth_link_get() uses dev_ops->link_update() to get the latest link information, for virtual PMDs, including vhost, this function does nothing, because there is no actual physical link. That is why I was not sure advertising link status feature for vhost, and other virtual PMDs doesn't report this feature. After Tiwei's comment that link status shows that qemu connected to vhost, added this feature back to vhost PMD. "Link status event", can be a- PMD calls application callback in link change b- PMD registers interrupt handler for link status change interrupts Based on how other PMDs report this feature, I believe it is (b), and I have documented that way. And vhost "Link status event" feature removed based on this. There are some set of config options and flags to control the LSC interrupt, that also effects rte_eth_link_get() and rte_eth_link_get_nowait() APIs, I believe that is the main concern here. As commented above, I don't understand why calling user register callback for link change event is something on PMD decision, it should be default behavior for PMD. What is the point of leaving this into PMD and think this as a feature of PMD? Overall, practical reason of this table is to inform developer/user about PMD features, which is indeed device + driver features, and help her to in development or on setting expectations. We can always discuss what helps more to developer/user and update the features table. Thanks, ferruh > > Thanks, > Jianfeng > >> >> Will send a new patch to reflect this. >> >> Thanks, >> ferruh > ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-18 10:42 ` Ferruh Yigit @ 2018-04-18 11:36 ` Tiwei Bie 2018-04-18 11:44 ` Ferruh Yigit 0 siblings, 1 reply; 20+ messages in thread From: Tiwei Bie @ 2018-04-18 11:36 UTC (permalink / raw) To: Ferruh Yigit Cc: Tan, Jianfeng, Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On Wed, Apr 18, 2018 at 11:42:56AM +0100, Ferruh Yigit wrote: > On 4/18/2018 7:49 AM, Tan, Jianfeng wrote: > > Hi Ferruh, > > > > > > On 4/17/2018 7:26 PM, Ferruh Yigit wrote: > >> On 4/17/2018 5:54 AM, Tiwei Bie wrote: > >>> On Mon, Apr 16, 2018 at 05:10:24PM +0100, Ferruh Yigit wrote: > >>>> On 4/14/2018 11:55 AM, Tiwei Bie wrote: > >>>>> On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: > >>>>>> On 4/10/2018 4:41 PM, Tiwei Bie wrote: > >>>>>>> On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: > >>>>>>>> Update link status related feature document items and minor updates in > >>>>>>>> some link status related functions. > >>>>>>>> > >>>>>>>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> > >>>>>>>> --- > >>>>>>>> doc/guides/nics/features/fm10k.ini | 2 ++ > >>>>>>>> doc/guides/nics/features/fm10k_vf.ini | 2 ++ > >>>>>>>> doc/guides/nics/features/i40e_vf.ini | 1 + > >>>>>>>> doc/guides/nics/features/igb_vf.ini | 1 + > >>>>>>>> doc/guides/nics/features/qede.ini | 1 - > >>>>>>>> doc/guides/nics/features/qede_vf.ini | 1 - > >>>>>>>> doc/guides/nics/features/vhost.ini | 2 -- > >>>>>>>> doc/guides/nics/features/virtio_vec.ini | 1 + > >>>>>>>> drivers/net/e1000/em_ethdev.c | 2 +- > >>>>>>>> drivers/net/ena/ena_ethdev.c | 2 +- > >>>>>>>> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- > >>>>>>>> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- > >>>>>>>> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- > >>>>>>>> drivers/net/mlx4/mlx4_ethdev.c | 2 +- > >>>>>>>> drivers/net/mlx5/mlx5_ethdev.c | 2 +- > >>>>>>>> 15 files changed, 15 insertions(+), 14 deletions(-) > >>>>>>> [...] > >>>>>>>> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini > >>>>>>>> index dffd1f493..31302745a 100644 > >>>>>>>> --- a/doc/guides/nics/features/vhost.ini > >>>>>>>> +++ b/doc/guides/nics/features/vhost.ini > >>>>>>>> @@ -4,8 +4,6 @@ > >>>>>>>> ; Refer to default.ini for the full list of available PMD features. > >>>>>>>> ; > >>>>>>>> [Features] > >>>>>>>> -Link status = Y > >>>>>>>> -Link status event = Y > >>>>>>> I think vhost PMD supports above features. > >>>>>> I am not able to find where it is supported. > >>>>>> > >>>>>> Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they > >>>>>> are not reported as supporting Link status, as far as I can see vhost also one > >>>>>> of them. > >>>>>> > >>>>>> And for Link status event, PMD needs to support LSC interrupts and should > >>>>>> register interrupt handler for it, which I can't find for vhost. > >>>>>> > >>>>>> I will send next version without updating above one, please point me where these > >>>>>> support added if I missed them. > >>>>> In drivers/net/vhost/rte_eth_vhost.c you could find below functions: > >>>>> > >>>>> static int > >>>>> new_device(int vid) > >>>>> { > >>>>> ...... > >>>>> > >>>>> eth_dev->data->dev_link.link_status = ETH_LINK_UP; > >>>>> > >>>>> ...... > >>>>> > >>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); > >>>>> > >>>>> ...... > >>>>> } > >>>>> > >>>>> static void > >>>>> destroy_device(int vid) > >>>>> { > >>>>> ...... > >>>>> > >>>>> eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; > >>>>> > >>>>> ...... > >>>>> > >>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); > >>>>> > >>>>> ...... > >>>>> } > >>>>> > >>>>> They are the callbacks for vhost library. > >>>>> > >>>>> When a frontend (e.g. QEMU) is connected to this vhost backend > >>>>> and the frontend virtio device becomes ready, new_device() will > >>>>> be called by the vhost library, and the link status will be > >>>>> updated to UP. > >>>>> > >>>>> And when e.g. the connection is closed, destroy_device() will be > >>>>> called by the vhost library, and the link status will be updated > >>>>> to DOWN. > >>>> > >>>> Got it. This behavior is similar for virtual PMDs. Provide static link > >>>> information and update link as UP during start and update it as DOWN during stop. > >>> No, the link status isn't updated during vhost PMD start > >>> and stop. When the vhost PMD has been started, the link > >>> status still may be DOWN. The link status becomes UP only > >>> when the QEMU (it's another virtual machine process which > >>> has a virtio device) connects to this vhost PMD via a UNIX > >>> socket and the virtio driver in the virtual machine has > >>> setup the virtio device of the virtual machine. > >>> > >>> So if vhost PMD reports the link status as DOWN, it means > >>> there is no QEMU (virtual machine) connects to it or the > >>> virtio device in the virtual machine hasn't been setup. > >>> (PS. The frontend can also be virtio-user PMD besides QEMU) > >> I believe announcing link feature reporting on virtual pmds still in gray area, > >> but because of qemu involvement in vhost case, I will keep link feature but will > >> drop link event. > > > > AFAIK, link status means we can get link status through APIs like > > rte_eth_link_get(); while link status event means applications can > > register link status events, and those events get called if link status > > is changed. > > > > If I understand it correctly, for vhost, we can keep both link status > > and link status event for vhost. > > > > Could you specify the reason why we remove link status event? > > Hi Jianfeng, > > I think problem is the definition of the features are not clear, that is why I > started a doc to document them (doc/guides/nics/features.rst) > > "Link status", I think we agree on this one. PMD should provide up-to-date, > valid link data on rte_eth_dev_data->dev_link. So that this link information can > be get by rte_eth_link_get(), rte_eth_link_get_nowait() ethdev APIs. > > rte_eth_link_get() uses dev_ops->link_update() to get the latest link > information, for virtual PMDs, including vhost, this function does nothing, > because there is no actual physical link. That is why I was not sure advertising > link status feature for vhost, and other virtual PMDs doesn't report this > feature. After Tiwei's comment that link status shows that qemu connected to > vhost, added this feature back to vhost PMD. > > > "Link status event", can be > a- PMD calls application callback in link change > b- PMD registers interrupt handler for link status change interrupts > > Based on how other PMDs report this feature, I believe it is (b), and I have > documented that way. And vhost "Link status event" feature removed based on this. > > There are some set of config options and flags to control the LSC interrupt, > that also effects rte_eth_link_get() and rte_eth_link_get_nowait() APIs, I > believe that is the main concern here. > > As commented above, I don't understand why calling user register callback for > link change event is something on PMD decision, it should be default behavior > for PMD. Do you mean you don't understand why vhost PMD calls _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL) in new_device() and destroy_device()? While other physical NIC drivers call this in their interrupt handlers which are registered via rte_intr_callback_register(). The new_device() and destroy_device() in vhost PMD can be treated as something like the interrupt handlers in physical NIC drivers. They are the callbacks which are registered via rte_vhost_driver_callback_register() and will be called by vhost library when vhost events happen (and they should be translated to link status change events when we try to wrap it as a net PMD). Thanks > What is the point of leaving this into PMD and think this as a feature > of PMD? > > > Overall, practical reason of this table is to inform developer/user about PMD > features, which is indeed device + driver features, and help her to in > development or on setting expectations. We can always discuss what helps more to > developer/user and update the features table. > > Thanks, > ferruh > > > > > Thanks, > > Jianfeng > > > >> > >> Will send a new patch to reflect this. > >> > >> Thanks, > >> ferruh > > > ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-18 11:36 ` Tiwei Bie @ 2018-04-18 11:44 ` Ferruh Yigit 2018-04-18 12:08 ` Tiwei Bie 0 siblings, 1 reply; 20+ messages in thread From: Ferruh Yigit @ 2018-04-18 11:44 UTC (permalink / raw) To: Tiwei Bie Cc: Tan, Jianfeng, Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On 4/18/2018 12:36 PM, Tiwei Bie wrote: > On Wed, Apr 18, 2018 at 11:42:56AM +0100, Ferruh Yigit wrote: >> On 4/18/2018 7:49 AM, Tan, Jianfeng wrote: >>> Hi Ferruh, >>> >>> >>> On 4/17/2018 7:26 PM, Ferruh Yigit wrote: >>>> On 4/17/2018 5:54 AM, Tiwei Bie wrote: >>>>> On Mon, Apr 16, 2018 at 05:10:24PM +0100, Ferruh Yigit wrote: >>>>>> On 4/14/2018 11:55 AM, Tiwei Bie wrote: >>>>>>> On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: >>>>>>>> On 4/10/2018 4:41 PM, Tiwei Bie wrote: >>>>>>>>> On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: >>>>>>>>>> Update link status related feature document items and minor updates in >>>>>>>>>> some link status related functions. >>>>>>>>>> >>>>>>>>>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> >>>>>>>>>> --- >>>>>>>>>> doc/guides/nics/features/fm10k.ini | 2 ++ >>>>>>>>>> doc/guides/nics/features/fm10k_vf.ini | 2 ++ >>>>>>>>>> doc/guides/nics/features/i40e_vf.ini | 1 + >>>>>>>>>> doc/guides/nics/features/igb_vf.ini | 1 + >>>>>>>>>> doc/guides/nics/features/qede.ini | 1 - >>>>>>>>>> doc/guides/nics/features/qede_vf.ini | 1 - >>>>>>>>>> doc/guides/nics/features/vhost.ini | 2 -- >>>>>>>>>> doc/guides/nics/features/virtio_vec.ini | 1 + >>>>>>>>>> drivers/net/e1000/em_ethdev.c | 2 +- >>>>>>>>>> drivers/net/ena/ena_ethdev.c | 2 +- >>>>>>>>>> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- >>>>>>>>>> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- >>>>>>>>>> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- >>>>>>>>>> drivers/net/mlx4/mlx4_ethdev.c | 2 +- >>>>>>>>>> drivers/net/mlx5/mlx5_ethdev.c | 2 +- >>>>>>>>>> 15 files changed, 15 insertions(+), 14 deletions(-) >>>>>>>>> [...] >>>>>>>>>> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini >>>>>>>>>> index dffd1f493..31302745a 100644 >>>>>>>>>> --- a/doc/guides/nics/features/vhost.ini >>>>>>>>>> +++ b/doc/guides/nics/features/vhost.ini >>>>>>>>>> @@ -4,8 +4,6 @@ >>>>>>>>>> ; Refer to default.ini for the full list of available PMD features. >>>>>>>>>> ; >>>>>>>>>> [Features] >>>>>>>>>> -Link status = Y >>>>>>>>>> -Link status event = Y >>>>>>>>> I think vhost PMD supports above features. >>>>>>>> I am not able to find where it is supported. >>>>>>>> >>>>>>>> Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they >>>>>>>> are not reported as supporting Link status, as far as I can see vhost also one >>>>>>>> of them. >>>>>>>> >>>>>>>> And for Link status event, PMD needs to support LSC interrupts and should >>>>>>>> register interrupt handler for it, which I can't find for vhost. >>>>>>>> >>>>>>>> I will send next version without updating above one, please point me where these >>>>>>>> support added if I missed them. >>>>>>> In drivers/net/vhost/rte_eth_vhost.c you could find below functions: >>>>>>> >>>>>>> static int >>>>>>> new_device(int vid) >>>>>>> { >>>>>>> ...... >>>>>>> >>>>>>> eth_dev->data->dev_link.link_status = ETH_LINK_UP; >>>>>>> >>>>>>> ...... >>>>>>> >>>>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>>>>>> >>>>>>> ...... >>>>>>> } >>>>>>> >>>>>>> static void >>>>>>> destroy_device(int vid) >>>>>>> { >>>>>>> ...... >>>>>>> >>>>>>> eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; >>>>>>> >>>>>>> ...... >>>>>>> >>>>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>>>>>> >>>>>>> ...... >>>>>>> } >>>>>>> >>>>>>> They are the callbacks for vhost library. >>>>>>> >>>>>>> When a frontend (e.g. QEMU) is connected to this vhost backend >>>>>>> and the frontend virtio device becomes ready, new_device() will >>>>>>> be called by the vhost library, and the link status will be >>>>>>> updated to UP. >>>>>>> >>>>>>> And when e.g. the connection is closed, destroy_device() will be >>>>>>> called by the vhost library, and the link status will be updated >>>>>>> to DOWN. >>>>>> >>>>>> Got it. This behavior is similar for virtual PMDs. Provide static link >>>>>> information and update link as UP during start and update it as DOWN during stop. >>>>> No, the link status isn't updated during vhost PMD start >>>>> and stop. When the vhost PMD has been started, the link >>>>> status still may be DOWN. The link status becomes UP only >>>>> when the QEMU (it's another virtual machine process which >>>>> has a virtio device) connects to this vhost PMD via a UNIX >>>>> socket and the virtio driver in the virtual machine has >>>>> setup the virtio device of the virtual machine. >>>>> >>>>> So if vhost PMD reports the link status as DOWN, it means >>>>> there is no QEMU (virtual machine) connects to it or the >>>>> virtio device in the virtual machine hasn't been setup. >>>>> (PS. The frontend can also be virtio-user PMD besides QEMU) >>>> I believe announcing link feature reporting on virtual pmds still in gray area, >>>> but because of qemu involvement in vhost case, I will keep link feature but will >>>> drop link event. >>> >>> AFAIK, link status means we can get link status through APIs like >>> rte_eth_link_get(); while link status event means applications can >>> register link status events, and those events get called if link status >>> is changed. >>> >>> If I understand it correctly, for vhost, we can keep both link status >>> and link status event for vhost. >>> >>> Could you specify the reason why we remove link status event? >> >> Hi Jianfeng, >> >> I think problem is the definition of the features are not clear, that is why I >> started a doc to document them (doc/guides/nics/features.rst) >> >> "Link status", I think we agree on this one. PMD should provide up-to-date, >> valid link data on rte_eth_dev_data->dev_link. So that this link information can >> be get by rte_eth_link_get(), rte_eth_link_get_nowait() ethdev APIs. >> >> rte_eth_link_get() uses dev_ops->link_update() to get the latest link >> information, for virtual PMDs, including vhost, this function does nothing, >> because there is no actual physical link. That is why I was not sure advertising >> link status feature for vhost, and other virtual PMDs doesn't report this >> feature. After Tiwei's comment that link status shows that qemu connected to >> vhost, added this feature back to vhost PMD. >> >> >> "Link status event", can be >> a- PMD calls application callback in link change >> b- PMD registers interrupt handler for link status change interrupts >> >> Based on how other PMDs report this feature, I believe it is (b), and I have >> documented that way. And vhost "Link status event" feature removed based on this. >> >> There are some set of config options and flags to control the LSC interrupt, >> that also effects rte_eth_link_get() and rte_eth_link_get_nowait() APIs, I >> believe that is the main concern here. >> >> As commented above, I don't understand why calling user register callback for >> link change event is something on PMD decision, it should be default behavior >> for PMD. > > Do you mean you don't understand why vhost PMD calls > _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL) > in new_device() and destroy_device()? While other physical > NIC drivers call this in their interrupt handlers which > are registered via rte_intr_callback_register(). No, I understand this part. My question is why not all PMDs call callback_process() when link changed as a requirement? Why PMD is giving decision to call or not call callback_process() ? > > The new_device() and destroy_device() in vhost PMD can be > treated as something like the interrupt handlers in physical > NIC drivers. They are the callbacks which are registered via > rte_vhost_driver_callback_register() and will be called by > vhost library when vhost events happen (and they should be > translated to link status change events when we try to wrap > it as a net PMD). > > Thanks > >> What is the point of leaving this into PMD and think this as a feature >> of PMD? >> >> >> Overall, practical reason of this table is to inform developer/user about PMD >> features, which is indeed device + driver features, and help her to in >> development or on setting expectations. We can always discuss what helps more to >> developer/user and update the features table. >> >> Thanks, >> ferruh >> >>> >>> Thanks, >>> Jianfeng >>> >>>> >>>> Will send a new patch to reflect this. >>>> >>>> Thanks, >>>> ferruh >>> >> ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-18 11:44 ` Ferruh Yigit @ 2018-04-18 12:08 ` Tiwei Bie 2018-04-18 12:17 ` Ferruh Yigit 0 siblings, 1 reply; 20+ messages in thread From: Tiwei Bie @ 2018-04-18 12:08 UTC (permalink / raw) To: Ferruh Yigit Cc: Tan, Jianfeng, Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On Wed, Apr 18, 2018 at 12:44:54PM +0100, Ferruh Yigit wrote: > On 4/18/2018 12:36 PM, Tiwei Bie wrote: > > On Wed, Apr 18, 2018 at 11:42:56AM +0100, Ferruh Yigit wrote: > >> On 4/18/2018 7:49 AM, Tan, Jianfeng wrote: > >>> Hi Ferruh, > >>> > >>> > >>> On 4/17/2018 7:26 PM, Ferruh Yigit wrote: > >>>> On 4/17/2018 5:54 AM, Tiwei Bie wrote: > >>>>> On Mon, Apr 16, 2018 at 05:10:24PM +0100, Ferruh Yigit wrote: > >>>>>> On 4/14/2018 11:55 AM, Tiwei Bie wrote: > >>>>>>> On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: > >>>>>>>> On 4/10/2018 4:41 PM, Tiwei Bie wrote: > >>>>>>>>> On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: > >>>>>>>>>> Update link status related feature document items and minor updates in > >>>>>>>>>> some link status related functions. > >>>>>>>>>> > >>>>>>>>>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> > >>>>>>>>>> --- > >>>>>>>>>> doc/guides/nics/features/fm10k.ini | 2 ++ > >>>>>>>>>> doc/guides/nics/features/fm10k_vf.ini | 2 ++ > >>>>>>>>>> doc/guides/nics/features/i40e_vf.ini | 1 + > >>>>>>>>>> doc/guides/nics/features/igb_vf.ini | 1 + > >>>>>>>>>> doc/guides/nics/features/qede.ini | 1 - > >>>>>>>>>> doc/guides/nics/features/qede_vf.ini | 1 - > >>>>>>>>>> doc/guides/nics/features/vhost.ini | 2 -- > >>>>>>>>>> doc/guides/nics/features/virtio_vec.ini | 1 + > >>>>>>>>>> drivers/net/e1000/em_ethdev.c | 2 +- > >>>>>>>>>> drivers/net/ena/ena_ethdev.c | 2 +- > >>>>>>>>>> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- > >>>>>>>>>> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- > >>>>>>>>>> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- > >>>>>>>>>> drivers/net/mlx4/mlx4_ethdev.c | 2 +- > >>>>>>>>>> drivers/net/mlx5/mlx5_ethdev.c | 2 +- > >>>>>>>>>> 15 files changed, 15 insertions(+), 14 deletions(-) > >>>>>>>>> [...] > >>>>>>>>>> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini > >>>>>>>>>> index dffd1f493..31302745a 100644 > >>>>>>>>>> --- a/doc/guides/nics/features/vhost.ini > >>>>>>>>>> +++ b/doc/guides/nics/features/vhost.ini > >>>>>>>>>> @@ -4,8 +4,6 @@ > >>>>>>>>>> ; Refer to default.ini for the full list of available PMD features. > >>>>>>>>>> ; > >>>>>>>>>> [Features] > >>>>>>>>>> -Link status = Y > >>>>>>>>>> -Link status event = Y > >>>>>>>>> I think vhost PMD supports above features. > >>>>>>>> I am not able to find where it is supported. > >>>>>>>> > >>>>>>>> Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they > >>>>>>>> are not reported as supporting Link status, as far as I can see vhost also one > >>>>>>>> of them. > >>>>>>>> > >>>>>>>> And for Link status event, PMD needs to support LSC interrupts and should > >>>>>>>> register interrupt handler for it, which I can't find for vhost. > >>>>>>>> > >>>>>>>> I will send next version without updating above one, please point me where these > >>>>>>>> support added if I missed them. > >>>>>>> In drivers/net/vhost/rte_eth_vhost.c you could find below functions: > >>>>>>> > >>>>>>> static int > >>>>>>> new_device(int vid) > >>>>>>> { > >>>>>>> ...... > >>>>>>> > >>>>>>> eth_dev->data->dev_link.link_status = ETH_LINK_UP; > >>>>>>> > >>>>>>> ...... > >>>>>>> > >>>>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); > >>>>>>> > >>>>>>> ...... > >>>>>>> } > >>>>>>> > >>>>>>> static void > >>>>>>> destroy_device(int vid) > >>>>>>> { > >>>>>>> ...... > >>>>>>> > >>>>>>> eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; > >>>>>>> > >>>>>>> ...... > >>>>>>> > >>>>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); > >>>>>>> > >>>>>>> ...... > >>>>>>> } > >>>>>>> > >>>>>>> They are the callbacks for vhost library. > >>>>>>> > >>>>>>> When a frontend (e.g. QEMU) is connected to this vhost backend > >>>>>>> and the frontend virtio device becomes ready, new_device() will > >>>>>>> be called by the vhost library, and the link status will be > >>>>>>> updated to UP. > >>>>>>> > >>>>>>> And when e.g. the connection is closed, destroy_device() will be > >>>>>>> called by the vhost library, and the link status will be updated > >>>>>>> to DOWN. > >>>>>> > >>>>>> Got it. This behavior is similar for virtual PMDs. Provide static link > >>>>>> information and update link as UP during start and update it as DOWN during stop. > >>>>> No, the link status isn't updated during vhost PMD start > >>>>> and stop. When the vhost PMD has been started, the link > >>>>> status still may be DOWN. The link status becomes UP only > >>>>> when the QEMU (it's another virtual machine process which > >>>>> has a virtio device) connects to this vhost PMD via a UNIX > >>>>> socket and the virtio driver in the virtual machine has > >>>>> setup the virtio device of the virtual machine. > >>>>> > >>>>> So if vhost PMD reports the link status as DOWN, it means > >>>>> there is no QEMU (virtual machine) connects to it or the > >>>>> virtio device in the virtual machine hasn't been setup. > >>>>> (PS. The frontend can also be virtio-user PMD besides QEMU) > >>>> I believe announcing link feature reporting on virtual pmds still in gray area, > >>>> but because of qemu involvement in vhost case, I will keep link feature but will > >>>> drop link event. > >>> > >>> AFAIK, link status means we can get link status through APIs like > >>> rte_eth_link_get(); while link status event means applications can > >>> register link status events, and those events get called if link status > >>> is changed. > >>> > >>> If I understand it correctly, for vhost, we can keep both link status > >>> and link status event for vhost. > >>> > >>> Could you specify the reason why we remove link status event? > >> > >> Hi Jianfeng, > >> > >> I think problem is the definition of the features are not clear, that is why I > >> started a doc to document them (doc/guides/nics/features.rst) > >> > >> "Link status", I think we agree on this one. PMD should provide up-to-date, > >> valid link data on rte_eth_dev_data->dev_link. So that this link information can > >> be get by rte_eth_link_get(), rte_eth_link_get_nowait() ethdev APIs. > >> > >> rte_eth_link_get() uses dev_ops->link_update() to get the latest link > >> information, for virtual PMDs, including vhost, this function does nothing, > >> because there is no actual physical link. That is why I was not sure advertising > >> link status feature for vhost, and other virtual PMDs doesn't report this > >> feature. After Tiwei's comment that link status shows that qemu connected to > >> vhost, added this feature back to vhost PMD. > >> > >> > >> "Link status event", can be > >> a- PMD calls application callback in link change > >> b- PMD registers interrupt handler for link status change interrupts > >> > >> Based on how other PMDs report this feature, I believe it is (b), and I have > >> documented that way. And vhost "Link status event" feature removed based on this. > >> > >> There are some set of config options and flags to control the LSC interrupt, > >> that also effects rte_eth_link_get() and rte_eth_link_get_nowait() APIs, I > >> believe that is the main concern here. > >> > >> As commented above, I don't understand why calling user register callback for > >> link change event is something on PMD decision, it should be default behavior > >> for PMD. > > > > Do you mean you don't understand why vhost PMD calls > > _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL) > > in new_device() and destroy_device()? While other physical > > NIC drivers call this in their interrupt handlers which > > are registered via rte_intr_callback_register(). > > No, I understand this part. > > My question is why not all PMDs call callback_process() when link changed as a > requirement? Why PMD is giving decision to call or not call callback_process() ? I got your point now. Maybe because in the library level, it just knows an interrupt happened but doesn't know whether it's a LSC interrupt or not (sometimes it needs to check some vendor specific registers). So the simplest way is just to ask each PMD to call callback_process() directly. But unfortunately, some PMDs didn't do it as we expected.. (I didn't look into other PMDs, so I'm not sure about the details.) Thanks > > > > > The new_device() and destroy_device() in vhost PMD can be > > treated as something like the interrupt handlers in physical > > NIC drivers. They are the callbacks which are registered via > > rte_vhost_driver_callback_register() and will be called by > > vhost library when vhost events happen (and they should be > > translated to link status change events when we try to wrap > > it as a net PMD). > > > > Thanks > > > >> What is the point of leaving this into PMD and think this as a feature > >> of PMD? > >> > >> > >> Overall, practical reason of this table is to inform developer/user about PMD > >> features, which is indeed device + driver features, and help her to in > >> development or on setting expectations. We can always discuss what helps more to > >> developer/user and update the features table. > >> > >> Thanks, > >> ferruh > >> > >>> > >>> Thanks, > >>> Jianfeng > >>> > >>>> > >>>> Will send a new patch to reflect this. > >>>> > >>>> Thanks, > >>>> ferruh > >>> > >> > ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH] drivers/net: update link status 2018-04-18 12:08 ` Tiwei Bie @ 2018-04-18 12:17 ` Ferruh Yigit 0 siblings, 0 replies; 20+ messages in thread From: Ferruh Yigit @ 2018-04-18 12:17 UTC (permalink / raw) To: Tiwei Bie Cc: Tan, Jianfeng, Qi Zhang, Xiao Wang, John McNamara, Marko Kovacevic, Beilei Xing, Wenzhuo Lu, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Yuanhan Liu, Maxime Coquelin, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh, dev On 4/18/2018 1:08 PM, Tiwei Bie wrote: > On Wed, Apr 18, 2018 at 12:44:54PM +0100, Ferruh Yigit wrote: >> On 4/18/2018 12:36 PM, Tiwei Bie wrote: >>> On Wed, Apr 18, 2018 at 11:42:56AM +0100, Ferruh Yigit wrote: >>>> On 4/18/2018 7:49 AM, Tan, Jianfeng wrote: >>>>> Hi Ferruh, >>>>> >>>>> >>>>> On 4/17/2018 7:26 PM, Ferruh Yigit wrote: >>>>>> On 4/17/2018 5:54 AM, Tiwei Bie wrote: >>>>>>> On Mon, Apr 16, 2018 at 05:10:24PM +0100, Ferruh Yigit wrote: >>>>>>>> On 4/14/2018 11:55 AM, Tiwei Bie wrote: >>>>>>>>> On Fri, Apr 13, 2018 at 10:53:55PM +0100, Ferruh Yigit wrote: >>>>>>>>>> On 4/10/2018 4:41 PM, Tiwei Bie wrote: >>>>>>>>>>> On Tue, Mar 13, 2018 at 06:05:34PM +0000, Ferruh Yigit wrote: >>>>>>>>>>>> Update link status related feature document items and minor updates in >>>>>>>>>>>> some link status related functions. >>>>>>>>>>>> >>>>>>>>>>>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> >>>>>>>>>>>> --- >>>>>>>>>>>> doc/guides/nics/features/fm10k.ini | 2 ++ >>>>>>>>>>>> doc/guides/nics/features/fm10k_vf.ini | 2 ++ >>>>>>>>>>>> doc/guides/nics/features/i40e_vf.ini | 1 + >>>>>>>>>>>> doc/guides/nics/features/igb_vf.ini | 1 + >>>>>>>>>>>> doc/guides/nics/features/qede.ini | 1 - >>>>>>>>>>>> doc/guides/nics/features/qede_vf.ini | 1 - >>>>>>>>>>>> doc/guides/nics/features/vhost.ini | 2 -- >>>>>>>>>>>> doc/guides/nics/features/virtio_vec.ini | 1 + >>>>>>>>>>>> drivers/net/e1000/em_ethdev.c | 2 +- >>>>>>>>>>>> drivers/net/ena/ena_ethdev.c | 2 +- >>>>>>>>>>>> drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- >>>>>>>>>>>> drivers/net/i40e/i40e_ethdev_vf.c | 2 +- >>>>>>>>>>>> drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- >>>>>>>>>>>> drivers/net/mlx4/mlx4_ethdev.c | 2 +- >>>>>>>>>>>> drivers/net/mlx5/mlx5_ethdev.c | 2 +- >>>>>>>>>>>> 15 files changed, 15 insertions(+), 14 deletions(-) >>>>>>>>>>> [...] >>>>>>>>>>>> diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini >>>>>>>>>>>> index dffd1f493..31302745a 100644 >>>>>>>>>>>> --- a/doc/guides/nics/features/vhost.ini >>>>>>>>>>>> +++ b/doc/guides/nics/features/vhost.ini >>>>>>>>>>>> @@ -4,8 +4,6 @@ >>>>>>>>>>>> ; Refer to default.ini for the full list of available PMD features. >>>>>>>>>>>> ; >>>>>>>>>>>> [Features] >>>>>>>>>>>> -Link status = Y >>>>>>>>>>>> -Link status event = Y >>>>>>>>>>> I think vhost PMD supports above features. >>>>>>>>>> I am not able to find where it is supported. >>>>>>>>>> >>>>>>>>>> Some virtual PMDs report fixed link, with empty link_update() dev_ops, and they >>>>>>>>>> are not reported as supporting Link status, as far as I can see vhost also one >>>>>>>>>> of them. >>>>>>>>>> >>>>>>>>>> And for Link status event, PMD needs to support LSC interrupts and should >>>>>>>>>> register interrupt handler for it, which I can't find for vhost. >>>>>>>>>> >>>>>>>>>> I will send next version without updating above one, please point me where these >>>>>>>>>> support added if I missed them. >>>>>>>>> In drivers/net/vhost/rte_eth_vhost.c you could find below functions: >>>>>>>>> >>>>>>>>> static int >>>>>>>>> new_device(int vid) >>>>>>>>> { >>>>>>>>> ...... >>>>>>>>> >>>>>>>>> eth_dev->data->dev_link.link_status = ETH_LINK_UP; >>>>>>>>> >>>>>>>>> ...... >>>>>>>>> >>>>>>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>>>>>>>> >>>>>>>>> ...... >>>>>>>>> } >>>>>>>>> >>>>>>>>> static void >>>>>>>>> destroy_device(int vid) >>>>>>>>> { >>>>>>>>> ...... >>>>>>>>> >>>>>>>>> eth_dev->data->dev_link.link_status = ETH_LINK_DOWN; >>>>>>>>> >>>>>>>>> ...... >>>>>>>>> >>>>>>>>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); >>>>>>>>> >>>>>>>>> ...... >>>>>>>>> } >>>>>>>>> >>>>>>>>> They are the callbacks for vhost library. >>>>>>>>> >>>>>>>>> When a frontend (e.g. QEMU) is connected to this vhost backend >>>>>>>>> and the frontend virtio device becomes ready, new_device() will >>>>>>>>> be called by the vhost library, and the link status will be >>>>>>>>> updated to UP. >>>>>>>>> >>>>>>>>> And when e.g. the connection is closed, destroy_device() will be >>>>>>>>> called by the vhost library, and the link status will be updated >>>>>>>>> to DOWN. >>>>>>>> >>>>>>>> Got it. This behavior is similar for virtual PMDs. Provide static link >>>>>>>> information and update link as UP during start and update it as DOWN during stop. >>>>>>> No, the link status isn't updated during vhost PMD start >>>>>>> and stop. When the vhost PMD has been started, the link >>>>>>> status still may be DOWN. The link status becomes UP only >>>>>>> when the QEMU (it's another virtual machine process which >>>>>>> has a virtio device) connects to this vhost PMD via a UNIX >>>>>>> socket and the virtio driver in the virtual machine has >>>>>>> setup the virtio device of the virtual machine. >>>>>>> >>>>>>> So if vhost PMD reports the link status as DOWN, it means >>>>>>> there is no QEMU (virtual machine) connects to it or the >>>>>>> virtio device in the virtual machine hasn't been setup. >>>>>>> (PS. The frontend can also be virtio-user PMD besides QEMU) >>>>>> I believe announcing link feature reporting on virtual pmds still in gray area, >>>>>> but because of qemu involvement in vhost case, I will keep link feature but will >>>>>> drop link event. >>>>> >>>>> AFAIK, link status means we can get link status through APIs like >>>>> rte_eth_link_get(); while link status event means applications can >>>>> register link status events, and those events get called if link status >>>>> is changed. >>>>> >>>>> If I understand it correctly, for vhost, we can keep both link status >>>>> and link status event for vhost. >>>>> >>>>> Could you specify the reason why we remove link status event? >>>> >>>> Hi Jianfeng, >>>> >>>> I think problem is the definition of the features are not clear, that is why I >>>> started a doc to document them (doc/guides/nics/features.rst) >>>> >>>> "Link status", I think we agree on this one. PMD should provide up-to-date, >>>> valid link data on rte_eth_dev_data->dev_link. So that this link information can >>>> be get by rte_eth_link_get(), rte_eth_link_get_nowait() ethdev APIs. >>>> >>>> rte_eth_link_get() uses dev_ops->link_update() to get the latest link >>>> information, for virtual PMDs, including vhost, this function does nothing, >>>> because there is no actual physical link. That is why I was not sure advertising >>>> link status feature for vhost, and other virtual PMDs doesn't report this >>>> feature. After Tiwei's comment that link status shows that qemu connected to >>>> vhost, added this feature back to vhost PMD. >>>> >>>> >>>> "Link status event", can be >>>> a- PMD calls application callback in link change >>>> b- PMD registers interrupt handler for link status change interrupts >>>> >>>> Based on how other PMDs report this feature, I believe it is (b), and I have >>>> documented that way. And vhost "Link status event" feature removed based on this. >>>> >>>> There are some set of config options and flags to control the LSC interrupt, >>>> that also effects rte_eth_link_get() and rte_eth_link_get_nowait() APIs, I >>>> believe that is the main concern here. >>>> >>>> As commented above, I don't understand why calling user register callback for >>>> link change event is something on PMD decision, it should be default behavior >>>> for PMD. >>> >>> Do you mean you don't understand why vhost PMD calls >>> _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL) >>> in new_device() and destroy_device()? While other physical >>> NIC drivers call this in their interrupt handlers which >>> are registered via rte_intr_callback_register(). >> >> No, I understand this part. >> >> My question is why not all PMDs call callback_process() when link changed as a >> requirement? Why PMD is giving decision to call or not call callback_process() ? > > I got your point now. Maybe because in the library level, > it just knows an interrupt happened but doesn't know whether > it's a LSC interrupt or not (sometimes it needs to check > some vendor specific registers). So the simplest way is > just to ask each PMD to call callback_process() directly. Yep. > But unfortunately, some PMDs didn't do it as we expected.. > (I didn't look into other PMDs, so I'm not sure about the > details.) Yes, some PMDs doesn't call callback_process() even they support link status and link status interrupts. This may be because this is not documented clearly. Best option can be handling this in ethdev somehow. > > Thanks > > >> >>> >>> The new_device() and destroy_device() in vhost PMD can be >>> treated as something like the interrupt handlers in physical >>> NIC drivers. They are the callbacks which are registered via >>> rte_vhost_driver_callback_register() and will be called by >>> vhost library when vhost events happen (and they should be >>> translated to link status change events when we try to wrap >>> it as a net PMD). >>> >>> Thanks >>> >>>> What is the point of leaving this into PMD and think this as a feature >>>> of PMD? >>>> >>>> >>>> Overall, practical reason of this table is to inform developer/user about PMD >>>> features, which is indeed device + driver features, and help her to in >>>> development or on setting expectations. We can always discuss what helps more to >>>> developer/user and update the features table. >>>> >>>> Thanks, >>>> ferruh >>>> >>>>> >>>>> Thanks, >>>>> Jianfeng >>>>> >>>>>> >>>>>> Will send a new patch to reflect this. >>>>>> >>>>>> Thanks, >>>>>> ferruh >>>>> >>>> >> ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v2] drivers/net: update link status 2018-03-13 18:05 [dpdk-dev] [PATCH] drivers/net: update link status Ferruh Yigit ` (2 preceding siblings ...) 2018-04-10 15:41 ` Tiwei Bie @ 2018-04-13 22:02 ` Ferruh Yigit 2018-04-16 14:26 ` Adrien Mazarguil 2018-04-17 11:30 ` [dpdk-dev] [PATCH v3] " Ferruh Yigit 3 siblings, 2 replies; 20+ messages in thread From: Ferruh Yigit @ 2018-04-13 22:02 UTC (permalink / raw) To: Thomas Monjalon, Jingjing Wu, Wenzhuo Lu, John McNamara, Marko Kovacevic, Qi Zhang, Xiao Wang, Beilei Xing, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Maxime Coquelin, Jianfeng Tan, Tiwei Bie, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh Cc: dev, Ferruh Yigit Update link status related feature document items and minor updates in some link status related functions. Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- Cc: Nélio Laranjeiro <nelio.laranjeiro@6wind.com> Cc: Tiwei Bie <tiwei.bie@intel.com> Cc: Qi Z Zhang <qi.z.zhang@intel.com> v2: * update virtio.ini (Tiwei) * update i40e_vf_vec.ini (Qi) * update avf.ini avf_vec.ini --- doc/guides/nics/features/avf.ini | 1 - doc/guides/nics/features/avf_vec.ini | 1 - doc/guides/nics/features/fm10k.ini | 2 ++ doc/guides/nics/features/fm10k_vf.ini | 2 ++ doc/guides/nics/features/i40e_vf.ini | 1 + doc/guides/nics/features/i40e_vf_vec.ini | 1 + doc/guides/nics/features/igb_vf.ini | 1 + doc/guides/nics/features/qede.ini | 1 - doc/guides/nics/features/qede_vf.ini | 1 - doc/guides/nics/features/vhost.ini | 2 -- doc/guides/nics/features/virtio.ini | 1 + doc/guides/nics/features/virtio_vec.ini | 1 + drivers/net/e1000/em_ethdev.c | 2 +- drivers/net/ena/ena_ethdev.c | 2 +- drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- drivers/net/i40e/i40e_ethdev_vf.c | 2 +- drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- drivers/net/mlx4/mlx4_ethdev.c | 2 +- drivers/net/mlx5/mlx5_ethdev.c | 2 +- 19 files changed, 17 insertions(+), 16 deletions(-) diff --git a/doc/guides/nics/features/avf.ini b/doc/guides/nics/features/avf.ini index ccb9edde3..35ceada24 100644 --- a/doc/guides/nics/features/avf.ini +++ b/doc/guides/nics/features/avf.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y Rx interrupt = Y Queue start/stop = Y MTU update = Y diff --git a/doc/guides/nics/features/avf_vec.ini b/doc/guides/nics/features/avf_vec.ini index 892499485..3050bc4a6 100644 --- a/doc/guides/nics/features/avf_vec.ini +++ b/doc/guides/nics/features/avf_vec.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y Rx interrupt = Y Queue start/stop = Y MTU update = Y diff --git a/doc/guides/nics/features/fm10k.ini b/doc/guides/nics/features/fm10k.ini index f0f61a7d7..58f58b99c 100644 --- a/doc/guides/nics/features/fm10k.ini +++ b/doc/guides/nics/features/fm10k.ini @@ -5,6 +5,8 @@ ; [Features] Speed capabilities = P +Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Jumbo frame = Y diff --git a/doc/guides/nics/features/fm10k_vf.ini b/doc/guides/nics/features/fm10k_vf.ini index 32b93df4b..44b50faa1 100644 --- a/doc/guides/nics/features/fm10k_vf.ini +++ b/doc/guides/nics/features/fm10k_vf.ini @@ -5,6 +5,8 @@ ; [Features] Speed capabilities = P +Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Jumbo frame = Y diff --git a/doc/guides/nics/features/i40e_vf.ini b/doc/guides/nics/features/i40e_vf.ini index 46e0d9fce..ba2d8cbe9 100644 --- a/doc/guides/nics/features/i40e_vf.ini +++ b/doc/guides/nics/features/i40e_vf.ini @@ -5,6 +5,7 @@ ; [Features] Rx interrupt = Y +Link status = Y Queue start/stop = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/i40e_vf_vec.ini b/doc/guides/nics/features/i40e_vf_vec.ini index c2c6c19fe..421ed9193 100644 --- a/doc/guides/nics/features/i40e_vf_vec.ini +++ b/doc/guides/nics/features/i40e_vf_vec.ini @@ -5,6 +5,7 @@ ; [Features] Rx interrupt = Y +Link status = Y Queue start/stop = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/igb_vf.ini b/doc/guides/nics/features/igb_vf.ini index e641a2c97..d9653234b 100644 --- a/doc/guides/nics/features/igb_vf.ini +++ b/doc/guides/nics/features/igb_vf.ini @@ -4,6 +4,7 @@ ; Refer to default.ini for the full list of available PMD features. ; [Features] +Link status = Y Rx interrupt = Y Scattered Rx = Y TSO = Y diff --git a/doc/guides/nics/features/qede.ini b/doc/guides/nics/features/qede.ini index 605cfa968..2d6af365e 100644 --- a/doc/guides/nics/features/qede.ini +++ b/doc/guides/nics/features/qede.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y MTU update = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/qede_vf.ini b/doc/guides/nics/features/qede_vf.ini index 18857b6e3..70071a1bd 100644 --- a/doc/guides/nics/features/qede_vf.ini +++ b/doc/guides/nics/features/qede_vf.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y MTU update = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini index dffd1f493..31302745a 100644 --- a/doc/guides/nics/features/vhost.ini +++ b/doc/guides/nics/features/vhost.ini @@ -4,8 +4,6 @@ ; Refer to default.ini for the full list of available PMD features. ; [Features] -Link status = Y -Link status event = Y Free Tx mbuf on demand = Y Queue status event = Y Basic stats = Y diff --git a/doc/guides/nics/features/virtio.ini b/doc/guides/nics/features/virtio.ini index 16e577df0..a16b81721 100644 --- a/doc/guides/nics/features/virtio.ini +++ b/doc/guides/nics/features/virtio.ini @@ -6,6 +6,7 @@ [Features] Speed capabilities = P Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/virtio_vec.ini b/doc/guides/nics/features/virtio_vec.ini index c06c860d4..e60fe36ae 100644 --- a/doc/guides/nics/features/virtio_vec.ini +++ b/doc/guides/nics/features/virtio_vec.ini @@ -6,6 +6,7 @@ [Features] Speed capabilities = P Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Promiscuous mode = Y diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index de7db2650..694a6242c 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -1183,7 +1183,7 @@ eth_em_link_update(struct rte_eth_dev *dev, int wait_to_complete) link.link_autoneg = !(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED); } else if (!link_check && (link.link_status == ETH_LINK_UP)) { - link.link_speed = 0; + link.link_speed = ETH_SPEED_NUM_NONE; link.link_duplex = ETH_LINK_HALF_DUPLEX; link.link_status = ETH_LINK_DOWN; link.link_autoneg = ETH_LINK_FIXED; diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index ab4e2af91..41b5638fd 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -728,7 +728,7 @@ static int ena_link_update(struct rte_eth_dev *dev, { struct rte_eth_link *link = &dev->data->dev_link; - link->link_status = 1; + link->link_status = ETH_LINK_UP; link->link_speed = ETH_SPEED_NUM_10G; link->link_duplex = ETH_LINK_FULL_DUPLEX; diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c index 34affd1cc..7dfeddfe0 100644 --- a/drivers/net/fm10k/fm10k_ethdev.c +++ b/drivers/net/fm10k/fm10k_ethdev.c @@ -1260,13 +1260,11 @@ fm10k_link_update(struct rte_eth_dev *dev, FM10K_DEV_PRIVATE_TO_INFO(dev->data->dev_private); PMD_INIT_FUNC_TRACE(); - /* The speed is ~50Gbps per Gen3 x8 PCIe interface. For now, we - * leave the speed undefined since there is no 50Gbps Ethernet. - */ - dev->data->dev_link.link_speed = 0; + dev->data->dev_link.link_speed = ETH_SPEED_NUM_50G; dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX; dev->data->dev_link.link_status = dev_info->sm_down ? ETH_LINK_DOWN : ETH_LINK_UP; + dev->data->dev_link.link_autoneg = ETH_LINK_FIXED; return 0; } diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 031c70680..48e7ac21e 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -2112,7 +2112,7 @@ i40evf_dev_link_update(struct rte_eth_dev *dev, new_link.link_status = vf->link_up ? ETH_LINK_UP : ETH_LINK_DOWN; new_link.link_autoneg = - dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED; + !(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED); return rte_eth_linkstatus_set(dev, &new_link); } diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index a5e2fc0ca..c401250e9 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -3900,7 +3900,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev, memset(&link, 0, sizeof(link)); link.link_status = ETH_LINK_DOWN; - link.link_speed = 0; + link.link_speed = ETH_SPEED_NUM_NONE; link.link_duplex = ETH_LINK_HALF_DUPLEX; link.link_autoneg = ETH_LINK_AUTONEG; diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c index d1b71c805..9a76670d8 100644 --- a/drivers/net/mlx4/mlx4_ethdev.c +++ b/drivers/net/mlx4/mlx4_ethdev.c @@ -713,7 +713,7 @@ mlx4_link_update(struct rte_eth_dev *dev, int wait_to_complete) } link_speed = ethtool_cmd_speed(&edata); if (link_speed == -1) - dev_link.link_speed = 0; + dev_link.link_speed = ETH_SPEED_NUM_NONE; else dev_link.link_speed = link_speed; dev_link.link_duplex = ((edata.duplex == DUPLEX_HALF) ? diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index ef44cc91f..59d6a805f 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -539,7 +539,7 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev, } link_speed = ethtool_cmd_speed(&edata); if (link_speed == -1) - dev_link.link_speed = 0; + dev_link.link_speed = ETH_SPEED_NUM_NONE; else dev_link.link_speed = link_speed; priv->link_speed_capa = 0; -- 2.14.3 ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH v2] drivers/net: update link status 2018-04-13 22:02 ` [dpdk-dev] [PATCH v2] " Ferruh Yigit @ 2018-04-16 14:26 ` Adrien Mazarguil 2018-04-17 11:30 ` [dpdk-dev] [PATCH v3] " Ferruh Yigit 1 sibling, 0 replies; 20+ messages in thread From: Adrien Mazarguil @ 2018-04-16 14:26 UTC (permalink / raw) To: Ferruh Yigit Cc: Thomas Monjalon, Jingjing Wu, Wenzhuo Lu, John McNamara, Marko Kovacevic, Qi Zhang, Xiao Wang, Beilei Xing, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Maxime Coquelin, Jianfeng Tan, Tiwei Bie, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Nelio Laranjeiro, Yongseok Koh, dev On Fri, Apr 13, 2018 at 11:02:04PM +0100, Ferruh Yigit wrote: > Update link status related feature document items and minor updates in > some link status related functions. > > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> > --- > Cc: Nélio Laranjeiro <nelio.laranjeiro@6wind.com> > Cc: Tiwei Bie <tiwei.bie@intel.com> > Cc: Qi Z Zhang <qi.z.zhang@intel.com> > > v2: > * update virtio.ini (Tiwei) > * update i40e_vf_vec.ini (Qi) > * update avf.ini avf_vec.ini For mlx4 and mlx5: Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com> -- Adrien Mazarguil 6WIND ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v3] drivers/net: update link status 2018-04-13 22:02 ` [dpdk-dev] [PATCH v2] " Ferruh Yigit 2018-04-16 14:26 ` Adrien Mazarguil @ 2018-04-17 11:30 ` Ferruh Yigit 2018-04-19 23:53 ` Ferruh Yigit 1 sibling, 1 reply; 20+ messages in thread From: Ferruh Yigit @ 2018-04-17 11:30 UTC (permalink / raw) To: Jingjing Wu, Wenzhuo Lu, John McNamara, Marko Kovacevic, Qi Zhang, Xiao Wang, Beilei Xing, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Maxime Coquelin, Jianfeng Tan, Tiwei Bie, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh Cc: dev, Ferruh Yigit Update link status related feature document items and minor updates in some link status related functions. Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com> --- Cc: Nélio Laranjeiro <nelio.laranjeiro@6wind.com> Cc: Tiwei Bie <tiwei.bie@intel.com> Cc: Qi Z Zhang <qi.z.zhang@intel.com> v2: * update virtio.ini (Tiwei) * update i40e_vf_vec.ini (Qi) * update avf.ini avf_vec.ini v3: * Put "Link status" back for vhost (Tiwei) --- doc/guides/nics/features/avf.ini | 1 - doc/guides/nics/features/avf_vec.ini | 1 - doc/guides/nics/features/fm10k.ini | 2 ++ doc/guides/nics/features/fm10k_vf.ini | 2 ++ doc/guides/nics/features/i40e_vf.ini | 1 + doc/guides/nics/features/i40e_vf_vec.ini | 1 + doc/guides/nics/features/igb_vf.ini | 1 + doc/guides/nics/features/qede.ini | 1 - doc/guides/nics/features/qede_vf.ini | 1 - doc/guides/nics/features/vhost.ini | 1 - doc/guides/nics/features/virtio.ini | 1 + doc/guides/nics/features/virtio_vec.ini | 1 + drivers/net/e1000/em_ethdev.c | 2 +- drivers/net/ena/ena_ethdev.c | 2 +- drivers/net/fm10k/fm10k_ethdev.c | 6 ++---- drivers/net/i40e/i40e_ethdev_vf.c | 2 +- drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- drivers/net/mlx4/mlx4_ethdev.c | 2 +- drivers/net/mlx5/mlx5_ethdev.c | 2 +- 19 files changed, 17 insertions(+), 15 deletions(-) diff --git a/doc/guides/nics/features/avf.ini b/doc/guides/nics/features/avf.ini index ccb9edde3..35ceada24 100644 --- a/doc/guides/nics/features/avf.ini +++ b/doc/guides/nics/features/avf.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y Rx interrupt = Y Queue start/stop = Y MTU update = Y diff --git a/doc/guides/nics/features/avf_vec.ini b/doc/guides/nics/features/avf_vec.ini index 892499485..3050bc4a6 100644 --- a/doc/guides/nics/features/avf_vec.ini +++ b/doc/guides/nics/features/avf_vec.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y Rx interrupt = Y Queue start/stop = Y MTU update = Y diff --git a/doc/guides/nics/features/fm10k.ini b/doc/guides/nics/features/fm10k.ini index f0f61a7d7..58f58b99c 100644 --- a/doc/guides/nics/features/fm10k.ini +++ b/doc/guides/nics/features/fm10k.ini @@ -5,6 +5,8 @@ ; [Features] Speed capabilities = P +Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Jumbo frame = Y diff --git a/doc/guides/nics/features/fm10k_vf.ini b/doc/guides/nics/features/fm10k_vf.ini index 32b93df4b..44b50faa1 100644 --- a/doc/guides/nics/features/fm10k_vf.ini +++ b/doc/guides/nics/features/fm10k_vf.ini @@ -5,6 +5,8 @@ ; [Features] Speed capabilities = P +Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Jumbo frame = Y diff --git a/doc/guides/nics/features/i40e_vf.ini b/doc/guides/nics/features/i40e_vf.ini index 46e0d9fce..ba2d8cbe9 100644 --- a/doc/guides/nics/features/i40e_vf.ini +++ b/doc/guides/nics/features/i40e_vf.ini @@ -5,6 +5,7 @@ ; [Features] Rx interrupt = Y +Link status = Y Queue start/stop = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/i40e_vf_vec.ini b/doc/guides/nics/features/i40e_vf_vec.ini index c2c6c19fe..421ed9193 100644 --- a/doc/guides/nics/features/i40e_vf_vec.ini +++ b/doc/guides/nics/features/i40e_vf_vec.ini @@ -5,6 +5,7 @@ ; [Features] Rx interrupt = Y +Link status = Y Queue start/stop = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/igb_vf.ini b/doc/guides/nics/features/igb_vf.ini index e641a2c97..d9653234b 100644 --- a/doc/guides/nics/features/igb_vf.ini +++ b/doc/guides/nics/features/igb_vf.ini @@ -4,6 +4,7 @@ ; Refer to default.ini for the full list of available PMD features. ; [Features] +Link status = Y Rx interrupt = Y Scattered Rx = Y TSO = Y diff --git a/doc/guides/nics/features/qede.ini b/doc/guides/nics/features/qede.ini index 605cfa968..2d6af365e 100644 --- a/doc/guides/nics/features/qede.ini +++ b/doc/guides/nics/features/qede.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y MTU update = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/qede_vf.ini b/doc/guides/nics/features/qede_vf.ini index 18857b6e3..70071a1bd 100644 --- a/doc/guides/nics/features/qede_vf.ini +++ b/doc/guides/nics/features/qede_vf.ini @@ -6,7 +6,6 @@ [Features] Speed capabilities = Y Link status = Y -Link status event = Y MTU update = Y Jumbo frame = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/vhost.ini b/doc/guides/nics/features/vhost.ini index dffd1f493..ef81abb43 100644 --- a/doc/guides/nics/features/vhost.ini +++ b/doc/guides/nics/features/vhost.ini @@ -5,7 +5,6 @@ ; [Features] Link status = Y -Link status event = Y Free Tx mbuf on demand = Y Queue status event = Y Basic stats = Y diff --git a/doc/guides/nics/features/virtio.ini b/doc/guides/nics/features/virtio.ini index 16e577df0..a16b81721 100644 --- a/doc/guides/nics/features/virtio.ini +++ b/doc/guides/nics/features/virtio.ini @@ -6,6 +6,7 @@ [Features] Speed capabilities = P Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Scattered Rx = Y diff --git a/doc/guides/nics/features/virtio_vec.ini b/doc/guides/nics/features/virtio_vec.ini index c06c860d4..e60fe36ae 100644 --- a/doc/guides/nics/features/virtio_vec.ini +++ b/doc/guides/nics/features/virtio_vec.ini @@ -6,6 +6,7 @@ [Features] Speed capabilities = P Link status = Y +Link status event = Y Rx interrupt = Y Queue start/stop = Y Promiscuous mode = Y diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index de7db2650..694a6242c 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -1183,7 +1183,7 @@ eth_em_link_update(struct rte_eth_dev *dev, int wait_to_complete) link.link_autoneg = !(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED); } else if (!link_check && (link.link_status == ETH_LINK_UP)) { - link.link_speed = 0; + link.link_speed = ETH_SPEED_NUM_NONE; link.link_duplex = ETH_LINK_HALF_DUPLEX; link.link_status = ETH_LINK_DOWN; link.link_autoneg = ETH_LINK_FIXED; diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index ab4e2af91..41b5638fd 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -728,7 +728,7 @@ static int ena_link_update(struct rte_eth_dev *dev, { struct rte_eth_link *link = &dev->data->dev_link; - link->link_status = 1; + link->link_status = ETH_LINK_UP; link->link_speed = ETH_SPEED_NUM_10G; link->link_duplex = ETH_LINK_FULL_DUPLEX; diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c index 34affd1cc..7dfeddfe0 100644 --- a/drivers/net/fm10k/fm10k_ethdev.c +++ b/drivers/net/fm10k/fm10k_ethdev.c @@ -1260,13 +1260,11 @@ fm10k_link_update(struct rte_eth_dev *dev, FM10K_DEV_PRIVATE_TO_INFO(dev->data->dev_private); PMD_INIT_FUNC_TRACE(); - /* The speed is ~50Gbps per Gen3 x8 PCIe interface. For now, we - * leave the speed undefined since there is no 50Gbps Ethernet. - */ - dev->data->dev_link.link_speed = 0; + dev->data->dev_link.link_speed = ETH_SPEED_NUM_50G; dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX; dev->data->dev_link.link_status = dev_info->sm_down ? ETH_LINK_DOWN : ETH_LINK_UP; + dev->data->dev_link.link_autoneg = ETH_LINK_FIXED; return 0; } diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 031c70680..48e7ac21e 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -2112,7 +2112,7 @@ i40evf_dev_link_update(struct rte_eth_dev *dev, new_link.link_status = vf->link_up ? ETH_LINK_UP : ETH_LINK_DOWN; new_link.link_autoneg = - dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED; + !(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED); return rte_eth_linkstatus_set(dev, &new_link); } diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index a5e2fc0ca..c401250e9 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -3900,7 +3900,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev, memset(&link, 0, sizeof(link)); link.link_status = ETH_LINK_DOWN; - link.link_speed = 0; + link.link_speed = ETH_SPEED_NUM_NONE; link.link_duplex = ETH_LINK_HALF_DUPLEX; link.link_autoneg = ETH_LINK_AUTONEG; diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c index d1b71c805..9a76670d8 100644 --- a/drivers/net/mlx4/mlx4_ethdev.c +++ b/drivers/net/mlx4/mlx4_ethdev.c @@ -713,7 +713,7 @@ mlx4_link_update(struct rte_eth_dev *dev, int wait_to_complete) } link_speed = ethtool_cmd_speed(&edata); if (link_speed == -1) - dev_link.link_speed = 0; + dev_link.link_speed = ETH_SPEED_NUM_NONE; else dev_link.link_speed = link_speed; dev_link.link_duplex = ((edata.duplex == DUPLEX_HALF) ? diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index ef44cc91f..59d6a805f 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -539,7 +539,7 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev, } link_speed = ethtool_cmd_speed(&edata); if (link_speed == -1) - dev_link.link_speed = 0; + dev_link.link_speed = ETH_SPEED_NUM_NONE; else dev_link.link_speed = link_speed; priv->link_speed_capa = 0; -- 2.14.3 ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH v3] drivers/net: update link status 2018-04-17 11:30 ` [dpdk-dev] [PATCH v3] " Ferruh Yigit @ 2018-04-19 23:53 ` Ferruh Yigit 0 siblings, 0 replies; 20+ messages in thread From: Ferruh Yigit @ 2018-04-19 23:53 UTC (permalink / raw) To: Jingjing Wu, Wenzhuo Lu, John McNamara, Marko Kovacevic, Qi Zhang, Xiao Wang, Beilei Xing, Rasesh Mody, Harish Patil, Shahed Shaikh, Tetsuya Mukawa, Maxime Coquelin, Jianfeng Tan, Tiwei Bie, Marcin Wojtas, Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Konstantin Ananyev, Adrien Mazarguil, Nelio Laranjeiro, Yongseok Koh Cc: dev On 4/17/2018 12:30 PM, Ferruh Yigit wrote: > Update link status related feature document items and minor updates in > some link status related functions. > > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> > Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com> Applied to dpdk-next-net/master, thanks. ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2018-04-19 23:54 UTC | newest] Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-03-13 18:05 [dpdk-dev] [PATCH] drivers/net: update link status Ferruh Yigit 2018-03-14 8:14 ` Nélio Laranjeiro 2018-03-20 15:21 ` Ferruh Yigit 2018-04-06 17:42 ` Ferruh Yigit 2018-04-10 15:41 ` Tiwei Bie 2018-04-13 21:53 ` Ferruh Yigit 2018-04-14 10:55 ` Tiwei Bie 2018-04-16 16:10 ` Ferruh Yigit 2018-04-17 4:54 ` Tiwei Bie 2018-04-17 11:26 ` Ferruh Yigit 2018-04-18 6:49 ` Tan, Jianfeng 2018-04-18 10:42 ` Ferruh Yigit 2018-04-18 11:36 ` Tiwei Bie 2018-04-18 11:44 ` Ferruh Yigit 2018-04-18 12:08 ` Tiwei Bie 2018-04-18 12:17 ` Ferruh Yigit 2018-04-13 22:02 ` [dpdk-dev] [PATCH v2] " Ferruh Yigit 2018-04-16 14:26 ` Adrien Mazarguil 2018-04-17 11:30 ` [dpdk-dev] [PATCH v3] " Ferruh Yigit 2018-04-19 23:53 ` Ferruh Yigit
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).