[v2] net/ice: invoke callback func when link status change
Checks
Commit Message
Needs to call _rte_eth_dev_callback_process to run registered
callbacks when link status change.
Fixes: cf911d90e366 ("net/ice: support link update")
Signed-off-by: Leyi Rong <leyi.rong@intel.com>
---
v2:
- adds fixline in commit log.
---
drivers/net/ice/ice_ethdev.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Comments
On 10/16, Leyi Rong wrote:
>Needs to call _rte_eth_dev_callback_process to run registered
>callbacks when link status change.
>
Is it a must to call _rte_eth_dev_callback_process after link status change, I
see ice_link_update is also called in ice_dev_start, do we need to apply the
same change there too?
Thanks,
Xiaolong
>Fixes: cf911d90e366 ("net/ice: support link update")
>
>Signed-off-by: Leyi Rong <leyi.rong@intel.com>
>
>---
>v2:
>- adds fixline in commit log.
>---
> drivers/net/ice/ice_ethdev.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
>index 5567beb55..092f10d47 100644
>--- a/drivers/net/ice/ice_ethdev.c
>+++ b/drivers/net/ice/ice_ethdev.c
>@@ -1303,6 +1303,7 @@ ice_interrupt_handler(void *param)
> uint8_t pf_num;
> uint8_t event;
> uint16_t queue;
>+ int ret;
> #ifdef ICE_LSE_SPT
> uint32_t int_fw_ctl;
> #endif
>@@ -1330,7 +1331,10 @@ ice_interrupt_handler(void *param)
> #else
> if (oicr & PFINT_OICR_LINK_STAT_CHANGE_M) {
> PMD_DRV_LOG(INFO, "OICR: link state change event");
>- ice_link_update(dev, 0);
>+ ret = ice_link_update(dev, 0);
>+ if (!ret)
>+ _rte_eth_dev_callback_process
>+ (dev, RTE_ETH_EVENT_INTR_LSC, NULL);
> }
> #endif
>
>--
>2.17.1
>
> -----Original Message-----
> From: Ye, Xiaolong
> Sent: Wednesday, October 16, 2019 2:41 PM
> To: Rong, Leyi <leyi.rong@intel.com>
> Cc: Lu, Wenzhuo <wenzhuo.lu@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>;
> dev@dpdk.org
> Subject: Re: [PATCH v2] net/ice: invoke callback func when link status change
>
> On 10/16, Leyi Rong wrote:
> >Needs to call _rte_eth_dev_callback_process to run registered callbacks
> >when link status change.
> >
>
> Is it a must to call _rte_eth_dev_callback_process after link status change, I see
> ice_link_update is also called in ice_dev_start, do we need to apply the same
> change there too?
>
I think no needs to invoke the same callback in ice_dev_start, as it's not triggered by event
in start process.
> Thanks,
> Xiaolong
>
> >Fixes: cf911d90e366 ("net/ice: support link update")
> >
> >Signed-off-by: Leyi Rong <leyi.rong@intel.com>
> >
> >---
> >v2:
> >- adds fixline in commit log.
> >---
> > drivers/net/ice/ice_ethdev.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> >diff --git a/drivers/net/ice/ice_ethdev.c
> >b/drivers/net/ice/ice_ethdev.c index 5567beb55..092f10d47 100644
> >--- a/drivers/net/ice/ice_ethdev.c
> >+++ b/drivers/net/ice/ice_ethdev.c
> >@@ -1303,6 +1303,7 @@ ice_interrupt_handler(void *param)
> > uint8_t pf_num;
> > uint8_t event;
> > uint16_t queue;
> >+ int ret;
> > #ifdef ICE_LSE_SPT
> > uint32_t int_fw_ctl;
> > #endif
> >@@ -1330,7 +1331,10 @@ ice_interrupt_handler(void *param) #else
> > if (oicr & PFINT_OICR_LINK_STAT_CHANGE_M) {
> > PMD_DRV_LOG(INFO, "OICR: link state change event");
> >- ice_link_update(dev, 0);
> >+ ret = ice_link_update(dev, 0);
> >+ if (!ret)
> >+ _rte_eth_dev_callback_process
> >+ (dev, RTE_ETH_EVENT_INTR_LSC, NULL);
> > }
> > #endif
> >
> >--
> >2.17.1
> >
On 10/16, Leyi Rong wrote:
>Needs to call _rte_eth_dev_callback_process to run registered
>callbacks when link status change.
>
>Fixes: cf911d90e366 ("net/ice: support link update")
>
>Signed-off-by: Leyi Rong <leyi.rong@intel.com>
>
>---
>v2:
>- adds fixline in commit log.
>---
> drivers/net/ice/ice_ethdev.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
>index 5567beb55..092f10d47 100644
>--- a/drivers/net/ice/ice_ethdev.c
>+++ b/drivers/net/ice/ice_ethdev.c
>@@ -1303,6 +1303,7 @@ ice_interrupt_handler(void *param)
> uint8_t pf_num;
> uint8_t event;
> uint16_t queue;
>+ int ret;
> #ifdef ICE_LSE_SPT
> uint32_t int_fw_ctl;
> #endif
>@@ -1330,7 +1331,10 @@ ice_interrupt_handler(void *param)
> #else
> if (oicr & PFINT_OICR_LINK_STAT_CHANGE_M) {
> PMD_DRV_LOG(INFO, "OICR: link state change event");
>- ice_link_update(dev, 0);
>+ ret = ice_link_update(dev, 0);
>+ if (!ret)
>+ _rte_eth_dev_callback_process
>+ (dev, RTE_ETH_EVENT_INTR_LSC, NULL);
> }
> #endif
>
>--
>2.17.1
>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
Applied to dpdk-next-net-intel.
@@ -1303,6 +1303,7 @@ ice_interrupt_handler(void *param)
uint8_t pf_num;
uint8_t event;
uint16_t queue;
+ int ret;
#ifdef ICE_LSE_SPT
uint32_t int_fw_ctl;
#endif
@@ -1330,7 +1331,10 @@ ice_interrupt_handler(void *param)
#else
if (oicr & PFINT_OICR_LINK_STAT_CHANGE_M) {
PMD_DRV_LOG(INFO, "OICR: link state change event");
- ice_link_update(dev, 0);
+ ret = ice_link_update(dev, 0);
+ if (!ret)
+ _rte_eth_dev_callback_process
+ (dev, RTE_ETH_EVENT_INTR_LSC, NULL);
}
#endif