DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jia Yu <jyu@vmware.com>
To: "Zhang, Helin" <helin.zhang@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 1/2] rte_ethdev: update link status (speed, duplex, link_up) after rte_eth_dev_start
Date: Tue, 3 Feb 2015 18:53:07 +0000	[thread overview]
Message-ID: <D0F656A6.32525%jyu@vmware.com> (raw)
In-Reply-To: <F35DEAC7BCE34641BA9FAC6BCA4A12E70A803FED@SHSMSX104.ccr.corp.intel.com>

Helin,

Thanks for comment. Any device that enabled LSC needs this fix, otherwise
they all need to call link_update separately. We cannot assume that only
Bond enables LSC interrupt.

The fix will not be used for all PMDs, as it explicitly checks if
(dev->data->dev_conf.intr_conf.lsc != 0). Therefore, for hardware NIC
(e.g. 82599) that disabled lsc by default, the link_update callback will
not be executed. Please let me know if you have other concerns.

Thanks,
Jia

On 2/3/15, 12:35 AM, "Zhang, Helin" <helin.zhang@intel.com> wrote:

>
>
>> -----Original Message-----
>> From: Jia Yu [mailto:jyu@vmware.com]
>> Sent: Tuesday, February 3, 2015 4:00 PM
>> To: Zhang, Helin
>> Cc: dev@dpdk.org; Thomas Monjalon
>> Subject: Re: [dpdk-dev] [PATCH 1/2] rte_ethdev: update link status
>>(speed,
>> duplex, link_up) after rte_eth_dev_start
>> 
>> My answer to Helin¹s comments:
>> 
>> This patch is needed for bond slave devices or other devices, when LSC
>> interrupt is enabled.
>>  1. slave_configure()  -> slave_eth_dev->Š.lsc = 1
>> 
>>  2. rte_eth_link_get() reads dev_link from eth_dev, when lsc interrupt
>>is
>> enabled. However, the dev_link on eth_dev has not be initialized and
>>showed
>> link down state. This patch initializes the device¹s dev_link at
>> rte_eth_dev_start time.
>So the link update is for bond only? But your code changes is in
>rte_ethdev, it will
>be used for all PMDs. For hardware NIC (e.g. 82599), this link update is
>not needed
>at all. It just need to wait the link status change event. So can those
>code changes
>be put in librte_pmd_bond, but not in librte_ether?
>
>Regards,
>Helin
>
>> 
>> Please let me know if you have further questions/comments.
>> 
>> Thanks,
>> Jia
>> 
>> On 1/30/15, 2:28 AM, "Thomas Monjalon" <thomas.monjalon@6wind.com>
>> wrote:
>> 
>> >Jia, any news on this patchset?
>> >
>> >2014-11-12 03:57, Zhang, Helin:
>> >> Hi Jia
>> >>
>> >> > -----Original Message-----
>> >> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jia Yu
>> >> > Sent: Saturday, November 8, 2014 1:32 AM
>> >> > To: dev@dpdk.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 <jyu@vmware.com>
>> >> > ---
>> >> >  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
>> >
>


  reply	other threads:[~2015-02-03 18:53 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-07 17:31 [dpdk-dev] [PATCH 0/2] rte_ethdev fix/improvement Jia Yu
2014-11-07 17:31 ` [dpdk-dev] [PATCH 1/2] rte_ethdev: update link status (speed, duplex, link_up) after rte_eth_dev_start Jia Yu
2014-11-12  3:57   ` Zhang, Helin
2015-01-30 10:28     ` Thomas Monjalon
2015-02-03  8:00       ` Jia Yu
2015-02-03  8:35         ` Zhang, Helin
2015-02-03 18:53           ` Jia Yu [this message]
2015-02-04  0:37             ` Zhang, Helin
2014-11-07 17:31 ` [dpdk-dev] [PATCH 2/2] rte_ethdev: add return status for rte_eth_stats_get Jia Yu
2014-11-10  9:40 ` [dpdk-dev] [PATCH 0/2] rte_ethdev fix/improvement Thomas Monjalon
2014-11-11 23:48   ` Jia Yu
2014-11-12  9:35     ` Thomas Monjalon
2015-02-11  3:20 ` Zhang, Helin
2015-02-18 16:51   ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D0F656A6.32525%jyu@vmware.com \
    --to=jyu@vmware.com \
    --cc=dev@dpdk.org \
    --cc=helin.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).