From: Yong Wang <yongwang-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
To: Stephen Hemminger
<stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>,
"dev-VfR2kkLFssw@public.gmane.org"
<dev-VfR2kkLFssw@public.gmane.org>
Cc: Stephen Hemminger <shemming-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org>
Subject: Re: [PATCH 4/7] vmxnet3: fix link state handling
Date: Wed, 11 Feb 2015 02:24:27 +0000 [thread overview]
Message-ID: <D0FFFCD6.34BEF%yongwang@vmware.com> (raw)
In-Reply-To: <1418793196-17953-5-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
On 12/16/14, 9:13 PM, "Stephen Hemminger" <stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
wrote:
>From: Stephen Hemminger <shemming-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org>
>
>This patch is a bugfx.
>
>The Intel version of VMXNET3 driver does not handle link state properly.
>The VMXNET3 API returns 1 if connected and 0 if disconnected.
>Also need to return correct value to indicate state change.
>
>Signed-off-by: Stephen Hemminger <stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
>---
Acked-by: Yong Wang <yongwang-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
One nit below:
> lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c | 53
>+++++++++++++++++++++++----------
> 1 file changed, 38 insertions(+), 15 deletions(-)
>
>diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
>b/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
>index 4947c78..7afb43f 100644
>--- a/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
>+++ b/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
>@@ -157,9 +157,36 @@ gpa_zone_reserve(struct rte_eth_dev *dev, uint32_t
>size,
> * - On success, zero.
> * - On failure, negative value.
> */
>-static inline int
>-rte_vmxnet3_dev_atomic_write_link_status(struct rte_eth_dev *dev,
>- struct rte_eth_link *link)
>+
>+static int
>+vmxnet3_dev_atomic_read_link_status(struct rte_eth_dev *dev,
>+ struct rte_eth_link *link)
>+{
>+ struct rte_eth_link *dst = link;
>+ struct rte_eth_link *src = &(dev->data->dev_link);
>+
>+ if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst,
>+ *(uint64_t *)src) == 0)
>+ return -1;
>+
>+ return 0;
>+}
>+
>+/**
>+ * Atomically writes the link status information into global
>+ * structure rte_eth_dev.
>+ *
>+ * @param dev
>+ * - Pointer to the structure rte_eth_dev to read from.
"to write to" here.
>+ * - Pointer to the buffer to be saved with the link status.
>+ *
>+ * @return
>+ * - On success, zero.
>+ * - On failure, negative value.
>+ */
>+static int
>+vmxnet3_dev_atomic_write_link_status(struct rte_eth_dev *dev,
>+ struct rte_eth_link *link)
> {
> struct rte_eth_link *dst = &(dev->data->dev_link);
> struct rte_eth_link *src = link;
>@@ -576,7 +603,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev)
>
> /* Clear recorded link status */
> memset(&link, 0, sizeof(link));
>- rte_vmxnet3_dev_atomic_write_link_status(dev, &link);
>+ vmxnet3_dev_atomic_write_link_status(dev, &link);
> }
>
> /*
>@@ -658,28 +685,24 @@ static int
> vmxnet3_dev_link_update(struct rte_eth_dev *dev, __attribute__((unused))
>int wait_to_complete)
> {
> struct vmxnet3_hw *hw = dev->data->dev_private;
>- struct rte_eth_link link;
>+ struct rte_eth_link old, link;
> uint32_t ret;
>
>+ memset(&link, 0, sizeof(link));
>+ vmxnet3_dev_atomic_read_link_status(dev, &old);
>+
> VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD, VMXNET3_CMD_GET_LINK);
> ret = VMXNET3_READ_BAR1_REG(hw, VMXNET3_REG_CMD);
>
>- if (!ret) {
>- PMD_INIT_LOG(ERR, "Link Status Negative : %s()", __func__);
>- return -1;
>- }
>-
> if (ret & 0x1) {
> link.link_status = 1;
> link.link_duplex = ETH_LINK_FULL_DUPLEX;
> link.link_speed = ETH_LINK_SPEED_10000;
>-
>- rte_vmxnet3_dev_atomic_write_link_status(dev, &link);
>-
>- return 0;
> }
>
>- return -1;
>+ vmxnet3_dev_atomic_write_link_status(dev, &link);
>+
>+ return (old.link_status == link.link_status) ? -1 : 0;
> }
>
> /* Updating rxmode through Vmxnet3_DriverShared structure in adapter */
>--
>2.1.3
>
next prev parent reply other threads:[~2015-02-11 2:24 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-17 5:13 [PATCH 0/7] vmxnet3: driver enhancements Stephen Hemminger
[not found] ` <1418793196-17953-1-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2014-12-17 5:13 ` [PATCH 1/7] vmxnet3: add support for VLAN filtering Stephen Hemminger
[not found] ` <1418793196-17953-2-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-12 18:40 ` Yong Wang
2014-12-17 5:13 ` [PATCH 2/7] vmxnet3: remove mtu check Stephen Hemminger
[not found] ` <1418793196-17953-3-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11 0:54 ` Yong Wang
2014-12-17 5:13 ` [PATCH 3/7] vmxnet3: add support for mulit-segment transmit Stephen Hemminger
[not found] ` <1418793196-17953-4-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11 21:15 ` Yong Wang
2014-12-17 5:13 ` [PATCH 4/7] vmxnet3: fix link state handling Stephen Hemminger
[not found] ` <1418793196-17953-5-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11 2:24 ` Yong Wang [this message]
2014-12-17 5:13 ` [PATCH 5/7] vmxnet3: get rid of DEBUG ifdefs Stephen Hemminger
[not found] ` <1418793196-17953-6-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11 0:54 ` Yong Wang
[not found] ` <D0FFDD6B.34A9C%yongwang-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
2015-02-11 2:18 ` Stephen Hemminger
2014-12-17 5:13 ` [PATCH 6/7] vmxnet3: support RSS and refactor offload Stephen Hemminger
[not found] ` <1418793196-17953-7-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11 1:28 ` Yong Wang
2014-12-17 5:13 ` [PATCH 7/7] vmxnet3: support jumbo frames Stephen Hemminger
2015-01-15 11:02 ` [PATCH 0/7] vmxnet3: driver enhancements Thomas Monjalon
2015-01-22 0:49 ` Stephen Hemminger
2015-01-22 9:42 ` 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=D0FFFCD6.34BEF%yongwang@vmware.com \
--to=yongwang-pghwnbhtmq7qt0dzr+alfa@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=shemming-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org \
--cc=stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.