From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH 1/2] rte_ethdev: update link status (speed, duplex, link_up) after rte_eth_dev_start Date: Fri, 30 Jan 2015 11:28:35 +0100 Message-ID: <3121142.D7ktn8xfBZ@xps13> References: <1415381511-43364-1-git-send-email-jyu@vmware.com> <1415381511-43364-2-git-send-email-jyu@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev-VfR2kkLFssw@public.gmane.org To: Jia Yu Return-path: In-Reply-To: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" Jia, any news on this patchset? 2014-11-12 03:57, Zhang, Helin: > Hi Jia > > > -----Original Message----- > > From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Jia Yu > > Sent: Saturday, November 8, 2014 1:32 AM > > To: dev-VfR2kkLFssw@public.gmane.org > > Subject: [dpdk-dev] [PATCH 1/2] rte_ethdev: update link status (speed, duplex, > > link_up) after rte_eth_dev_start > > > > Since LSR interrupt is disabled by pmd drivers, link status in rte_eth_device is > > always down. > If LSC interrupt is disabled by default, it will poll the link status during the initialization > or in dev_start, and then the link status should he correct. If I am not wrong. > > > Bond slave_configure() enables LSR interrupt on devices to get notification if link > > status changes. However, the LSC interrupt at device start time is still lost. > Before enabling interrupt for LSC, the link status should be polled. So after the port > startup, the link status should be there. > > > > > In this fix, call link_update to read link status from hardware register at device > > start time. > Could you help to explain this code changes a bit more? Why we need it? > > > > > Issue: > > Change-Id: Ib57a1c9114f922485c7b0f4338bfe7b3d3f87d65 > > Signed-off-by: Jia Yu > > --- > > lib/librte_ether/rte_ethdev.c | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index > > ff1c769..6c01b02 100644 > > --- a/lib/librte_ether/rte_ethdev.c > > +++ b/lib/librte_ether/rte_ethdev.c > > @@ -869,6 +869,10 @@ rte_eth_dev_start(uint8_t port_id) > > > > rte_eth_dev_config_restore(port_id); > > > > + if (dev->data->dev_conf.intr_conf.lsc != 0) { > > + FUNC_PTR_OR_ERR_RET(*dev->dev_ops->link_update, -ENOTSUP); > > + (*dev->dev_ops->link_update)(dev, 0); > > + } > > return 0; > > } > > > > -- > > 1.9.1 > > Regards, > Helin