DPDK patches and discussions
 help / color / mirror / Atom feed
From: Panu Matilainen <pmatilai@redhat.com>
To: Aaron Conole <aconole@redhat.com>, "Lu, Wenzhuo" <wenzhuo.lu@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 3/8] drivers/net/e1000: Fix missing brackets
Date: Tue, 1 Mar 2016 13:02:31 +0200	[thread overview]
Message-ID: <56D576C7.9060108@redhat.com> (raw)
In-Reply-To: <f7tk2lrty1i.fsf@redhat.com>

On 02/26/2016 03:13 PM, Aaron Conole wrote:
> Hi Wenzhou,
>
> "Lu, Wenzhuo" <wenzhuo.lu@intel.com> writes:
>
>> Hi Aaron,
>>
>>
>>> -----Original Message-----
>>> From: Aaron Conole [mailto:aconole@redhat.com]
>>> Sent: Friday, February 26, 2016 2:49 AM
>>> To: dev@dpdk.org
>>> Cc: Lu, Wenzhuo; Zhang, Helin; Ananyev, Konstantin; Richardson, Bruce
>>> Subject: [PATCH 3/8] drivers/net/e1000: Fix missing brackets
>>>
>>> The register read/write mphy functions have misleading whitespace around the
>>> locked check. This cleanup merely preserves the existing functionality while
>>> improving the ready check.
>>>
>>> Signed-off-by: Aaron Conole <aconole@redhat.com>
>>> ---
>>>   drivers/net/e1000/base/e1000_phy.c | 12 ++++++------
>>>   1 file changed, 6 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/net/e1000/base/e1000_phy.c
>>> b/drivers/net/e1000/base/e1000_phy.c
>>> index d43b7ce..8642d38 100644
>>> --- a/drivers/net/e1000/base/e1000_phy.c
>>> +++ b/drivers/net/e1000/base/e1000_phy.c
>>> @@ -4153,13 +4153,13 @@ s32 e1000_read_phy_reg_mphy(struct e1000_hw
>>> *hw, u32 address, u32 *data)
>>>   	*data = E1000_READ_REG(hw, E1000_MPHY_DATA);
>>>
>>>   	/* Disable access to mPHY if it was originally disabled */
>>> -	if (locked)
>>> +	if (locked) {
>>>   		ready = e1000_is_mphy_ready(hw);
>>>   		if (!ready)
>>>   			return -E1000_ERR_PHY;
>>> -		E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
>>> -				E1000_MPHY_DIS_ACCESS);
>>> +	}
>>>
>>> +	E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
>>> E1000_MPHY_DIS_ACCESS);
>>>   	return E1000_SUCCESS;
>>>   }
>>>
>>> @@ -4218,13 +4218,13 @@ s32 e1000_write_phy_reg_mphy(struct e1000_hw
>>> *hw, u32 address, u32 data,
>>>   	E1000_WRITE_REG(hw, E1000_MPHY_DATA, data);
>>>
>>>   	/* Disable access to mPHY if it was originally disabled */
>>> -	if (locked)
>>> +	if (locked) {
>>>   		ready = e1000_is_mphy_ready(hw);
>>>   		if (!ready)
>>>   			return -E1000_ERR_PHY;
>>> -		E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
>>> -				E1000_MPHY_DIS_ACCESS);
>>> +	}
>>>
>>> +	E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
>>> E1000_MPHY_DIS_ACCESS);
>>>   	return E1000_SUCCESS;
>>>   }
>>>
>>> --
>>> 2.5.0
>> Normally we will not maintain the base code. It's just taken from kernel driver.
>> Agree with you that the whitespace is misleading. But as it's no real
>> impact. I'd like to say not a big deal, better not change it. :)
>
> Thanks for this hint. It turns out my patch is wrong. It should actually
> be this (and I've confirmed by looking at the drivers):
>
> diff --git a/drivers/net/e1000/base/e1000_phy.c b/drivers/net/e1000/base/e1000_phy.c
> index d43b7ce..ad3fd58 100644
> --- a/drivers/net/e1000/base/e1000_phy.c
> +++ b/drivers/net/e1000/base/e1000_phy.c
> @@ -4153,12 +4153,12 @@ s32 e1000_read_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 *data)
>   	*data = E1000_READ_REG(hw, E1000_MPHY_DATA);
>
>   	/* Disable access to mPHY if it was originally disabled */
> -	if (locked)
> +	if (locked) {
>   		ready = e1000_is_mphy_ready(hw);
>   		if (!ready)
>   			return -E1000_ERR_PHY;
> -		E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
> -				E1000_MPHY_DIS_ACCESS);
> +		E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL, E1000_MPHY_DIS_ACCESS);
> +	}
>
>   	return E1000_SUCCESS;
>   }
> @@ -4218,12 +4218,12 @@ s32 e1000_write_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 data,
>   	E1000_WRITE_REG(hw, E1000_MPHY_DATA, data);
>
>   	/* Disable access to mPHY if it was originally disabled */
> -	if (locked)
> +	if (locked) {
>   		ready = e1000_is_mphy_ready(hw);
>   		if (!ready)
>   			return -E1000_ERR_PHY;
> -		E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
> -				E1000_MPHY_DIS_ACCESS);
> +		E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL, E1000_MPHY_DIS_ACCESS);
> +	}
>
>   	return E1000_SUCCESS;
>   }
>
> I will cook up a v2 of this patch if it makes sense. It is a real bug,
> so should be fixed.

Yes, it quite clearly is a real bug and there needs to be a documented 
way of getting these things fixed. The README in the base/ directory is 
not particularly helpful, since it only says "dont touch it".

This is apparently fixed in FreeBSD codebase so fixing it would be 
"just" a matter of pulling in a newer version.

The other alternatives are either disabling the whole driver in gcc 6 
builds, or paper over the bug with warning disablers, or have everybody 
patch their packages locally to fix it, all of which just feel so stupid 
they're not alternatives, really.

OTOH the bug has been there for 2.5 years (since commit 
38db3f7f50bde45477f564783a06ac8fbd3348fa) and nobody has noticed...

Thomas, Bruce, thoughts/comments?

	- Panu -

  reply	other threads:[~2016-03-01 11:02 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-25 18:48 [dpdk-dev] [PATCH 0/8] Various fixes to compile with gcc6 Aaron Conole
2016-02-25 18:48 ` [dpdk-dev] [PATCH 1/8] lpm: Fix pointer aliasing issues Aaron Conole
2016-02-25 21:30   ` Bruce Richardson
2016-02-25 22:00     ` Aaron Conole
2016-03-22 20:02     ` Thomas Monjalon
2016-03-22 20:47       ` Aaron Conole
2016-02-25 18:48 ` [dpdk-dev] [PATCH 2/8] app/test/test: Fix missing brackets Aaron Conole
2016-03-10 13:25   ` Panu Matilainen
2016-03-18  1:05   ` Zhang, Helin
2016-02-25 18:48 ` [dpdk-dev] [PATCH 3/8] drivers/net/e1000: " Aaron Conole
2016-02-26  1:02   ` Lu, Wenzhuo
2016-02-26 13:13     ` Aaron Conole
2016-03-01 11:02       ` Panu Matilainen [this message]
2016-03-22 20:06         ` Thomas Monjalon
2016-03-18  1:03   ` Zhang, Helin
2016-02-25 18:48 ` [dpdk-dev] [PATCH 4/8] drivers/net/e1000: Fix missing lsc interrupt check brackets Aaron Conole
2016-03-10 13:27   ` Panu Matilainen
2016-03-18  0:55   ` Zhang, Helin
2016-02-25 18:48 ` [dpdk-dev] [PATCH 5/8] drivers/net/ixgbe: Fix vlan filter missing brackets Aaron Conole
2016-03-10 13:28   ` Panu Matilainen
2016-03-18  0:45   ` Zhang, Helin
2016-02-25 18:48 ` [dpdk-dev] [PATCH 6/8] drivers/net/e1000/igb: Signed left shift operator Aaron Conole
2016-03-10 13:29   ` Panu Matilainen
2016-03-18  0:54   ` Zhang, Helin
2016-02-25 18:48 ` [dpdk-dev] [PATCH 7/8] drivers/net/ixgbe: " Aaron Conole
2016-03-10 13:30   ` Panu Matilainen
2016-03-18  0:43   ` Zhang, Helin
2016-02-25 18:48 ` [dpdk-dev] [PATCH 8/8] drivers/net/ixgbe: Fix uninitialized warning Aaron Conole
2016-03-10 13:42   ` Panu Matilainen
2016-03-10 14:45     ` Remy Horton
2016-03-10 15:03       ` Panu Matilainen
2016-03-11  9:22         ` Remy Horton
2016-03-18  0:53   ` Zhang, Helin
2016-03-17 15:39 ` [dpdk-dev] [PATCH 0/8] Various fixes to compile with gcc6 Thomas Monjalon
2016-03-17 15:45   ` 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=56D576C7.9060108@redhat.com \
    --to=pmatilai@redhat.com \
    --cc=aconole@redhat.com \
    --cc=dev@dpdk.org \
    --cc=wenzhuo.lu@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).