DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Zhang, Helin" <helin.zhang@intel.com>
To: Jia Yu <jyu@vmware.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: Wed, 4 Feb 2015 00:37:37 +0000
Message-ID: <F35DEAC7BCE34641BA9FAC6BCA4A12E70A80423F@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <D0F656A6.32525%jyu@vmware.com>

Hi Jia

> -----Original Message-----
> From: Jia Yu [mailto:jyu@vmware.com]
> Sent: Wednesday, February 4, 2015 2:53 AM
> 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
> 
> 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.
I understood. I mean if (lsc == 1), for 82599, it can report lsc event correctly after startup.
But if a manually link update is executed, no link change can be found when a lsc
event is received in application.
Your fix is to solve the problem in bond only, am I correct? My comment is that can we
avoid doing that for 82599, Fortville, etc? As some of DPDK customers may not want it if
lsc is enabled.

Regards,
Helin

> 
> 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-04  0:37 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
2015-02-04  0:37             ` Zhang, Helin [this message]
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=F35DEAC7BCE34641BA9FAC6BCA4A12E70A80423F@SHSMSX104.ccr.corp.intel.com \
    --to=helin.zhang@intel.com \
    --cc=dev@dpdk.org \
    --cc=jyu@vmware.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

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git