<div dir="ltr"><div dir="ltr">I agree. Maybe this is the better solution<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Zhang, Qi Z <<a href="mailto:qi.z.zhang@intel.com">qi.z.zhang@intel.com</a>> 于2022年12月13日周二 09:50写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
> -----Original Message-----<br>
> From: Shuang Han <<a href="mailto:hanshuang87@gmail.com" target="_blank">hanshuang87@gmail.com</a>><br>
> Sent: Wednesday, November 23, 2022 8:42 PM<br>
> To: <a href="mailto:dev@dpdk.org" target="_blank">dev@dpdk.org</a><br>
> Cc: Yang, Qiming <<a href="mailto:qiming.yang@intel.com" target="_blank">qiming.yang@intel.com</a>>; Zhang, Qi Z<br>
> <<a href="mailto:qi.z.zhang@intel.com" target="_blank">qi.z.zhang@intel.com</a>>; Shuang Han <<a href="mailto:hanshuang87@gmail.com" target="_blank">hanshuang87@gmail.com</a>><br>
> Subject: [PATCH] net/ice: fix link status error when dev start<br>
> <br>
> ice_link_update get port link status and wait for one second when dev start.<br>
> If the device need almost one second for link up, ice_link_update will enter<br>
> the last rte_delay_ms(CHECK_INTERVAL) with link down, in the meantime<br>
> link interrupt raised, the interrupt handler update dev->data->dev_link to up.<br>
> After a while the rte_delay_ms(CHECK_INTERVAL) finished and update dev-<br>
> >data->dev_link to down.<br>
> <br>
> Signed-off-by: Shuang Han <<a href="mailto:hanshuang87@gmail.com" target="_blank">hanshuang87@gmail.com</a>><br>
> ---<br>
> drivers/net/ice/ice_ethdev.c | 2 +-<br>
> 1 file changed, 1 insertion(+), 1 deletion(-)<br>
> <br>
> diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index<br>
> 0bc739d..316ba5a 100644<br>
> --- a/drivers/net/ice/ice_ethdev.c<br>
> +++ b/drivers/net/ice/ice_ethdev.c<br>
> @@ -4013,9 +4013,9 @@ static int ice_init_rss(struct ice_pf *pf)<br>
> RTE_ETH_LINK_SPEED_FIXED);<br>
> <br>
> out:<br>
> - ice_atomic_write_link_status(dev, &link);<br>
> if (link.link_status == old.link_status)<br>
> return -1;<br>
> + ice_atomic_write_link_status(dev, &link);<br>
<br>
This looks like a workaround, I think we may need some lock to prevent ice_link_update be re-entered from different thread at same time.<br>
<br>
> <br>
> return 0;<br>
> }<br>
> --<br>
> 1.8.3.1<br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">Best regards<br>Han Shuang</div>