2018-03-10 18:25:08

by SF Markus Elfring

[permalink] [raw]
Subject: [PATCH 0/2] net/usb/ax88179_178a: Adjustments for ax88179_chk_eee()

From: Markus Elfring <[email protected]>
Date: Sat, 10 Mar 2018 19:05:45 +0100

Two update suggestions were taken into account
from static source code analysis.

Markus Elfring (2):
Use common code
Delete three unnecessary variables

drivers/net/usb/ax88179_178a.c | 45 +++++++++++++++---------------------------
1 file changed, 16 insertions(+), 29 deletions(-)

--
2.16.2



2018-03-10 18:28:04

by SF Markus Elfring

[permalink] [raw]
Subject: [PATCH 1/2] net/usb/ax88179_178a: Use common code in ax88179_chk_eee()

From: Markus Elfring <[email protected]>
Date: Sat, 10 Mar 2018 18:22:43 +0100

Adjust a jump target so that a bit of common code can be better reused
at the end of this function.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <[email protected]>
---
drivers/net/usb/ax88179_178a.c | 34 +++++++++++-----------------------
1 file changed, 11 insertions(+), 23 deletions(-)

diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
index f32261ecd215..e4b0baa98e9a 100644
--- a/drivers/net/usb/ax88179_178a.c
+++ b/drivers/net/usb/ax88179_178a.c
@@ -689,49 +689,37 @@ static int ax88179_chk_eee(struct usbnet *dev)
eee_cap = ax88179_phy_read_mmd_indirect(dev,
MDIO_PCS_EEE_ABLE,
MDIO_MMD_PCS);
- if (eee_cap < 0) {
- priv->eee_active = 0;
- return false;
- }
+ if (eee_cap < 0)
+ goto set_inactive;

cap = mmd_eee_cap_to_ethtool_sup_t(eee_cap);
- if (!cap) {
- priv->eee_active = 0;
- return false;
- }
+ if (!cap)
+ goto set_inactive;

eee_lp = ax88179_phy_read_mmd_indirect(dev,
MDIO_AN_EEE_LPABLE,
MDIO_MMD_AN);
- if (eee_lp < 0) {
- priv->eee_active = 0;
- return false;
- }
+ if (eee_lp < 0)
+ goto set_inactive;

eee_adv = ax88179_phy_read_mmd_indirect(dev,
MDIO_AN_EEE_ADV,
MDIO_MMD_AN);
-
- if (eee_adv < 0) {
- priv->eee_active = 0;
- return false;
- }
+ if (eee_adv < 0)
+ goto set_inactive;

adv = mmd_eee_adv_to_ethtool_adv_t(eee_adv);
lp = mmd_eee_adv_to_ethtool_adv_t(eee_lp);
supported = (ecmd.speed == SPEED_1000) ?
SUPPORTED_1000baseT_Full :
SUPPORTED_100baseT_Full;
-
- if (!(lp & adv & supported)) {
- priv->eee_active = 0;
- return false;
- }
+ if (!(lp & adv & supported))
+ goto set_inactive;

priv->eee_active = 1;
return true;
}
-
+set_inactive:
priv->eee_active = 0;
return false;
}
--
2.16.2


2018-03-10 18:29:15

by SF Markus Elfring

[permalink] [raw]
Subject: [PATCH 2/2] net/usb/ax88179_178a: Delete three unnecessary variables in ax88179_chk_eee()

From: Markus Elfring <[email protected]>
Date: Sat, 10 Mar 2018 18:53:28 +0100

Use three values directly for a condition check without assigning them
to intermediate variables.

Signed-off-by: Markus Elfring <[email protected]>
---
drivers/net/usb/ax88179_178a.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
index e4b0baa98e9a..3e83be232504 100644
--- a/drivers/net/usb/ax88179_178a.c
+++ b/drivers/net/usb/ax88179_178a.c
@@ -684,7 +684,7 @@ static int ax88179_chk_eee(struct usbnet *dev)

if (ecmd.duplex & DUPLEX_FULL) {
int eee_lp, eee_cap, eee_adv;
- u32 lp, cap, adv, supported = 0;
+ u32 cap;

eee_cap = ax88179_phy_read_mmd_indirect(dev,
MDIO_PCS_EEE_ABLE,
@@ -708,12 +708,11 @@ static int ax88179_chk_eee(struct usbnet *dev)
if (eee_adv < 0)
goto set_inactive;

- adv = mmd_eee_adv_to_ethtool_adv_t(eee_adv);
- lp = mmd_eee_adv_to_ethtool_adv_t(eee_lp);
- supported = (ecmd.speed == SPEED_1000) ?
- SUPPORTED_1000baseT_Full :
- SUPPORTED_100baseT_Full;
- if (!(lp & adv & supported))
+ if (!(mmd_eee_adv_to_ethtool_adv_t(eee_lp) &
+ mmd_eee_adv_to_ethtool_adv_t(eee_adv) &
+ ((ecmd.speed == SPEED_1000)
+ ? SUPPORTED_1000baseT_Full
+ : SUPPORTED_100baseT_Full)))
goto set_inactive;

priv->eee_active = 1;
--
2.16.2


2018-03-10 18:43:30

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH 1/2] net/usb/ax88179_178a: Use common code in ax88179_chk_eee()

On Sat, 2018-03-10 at 19:24 +0100, SF Markus Elfring wrote:
> From: Markus Elfring <[email protected]>
> Date: Sat, 10 Mar 2018 18:22:43 +0100
>
> Adjust a jump target so that a bit of common code can be better reused
> at the end of this function.

Please stop mindlessly sending patching Markus.

How about looking at the code being modified and
thinking about what it does?

Try unindenting the block by reversing the first test
and using the same goto set_inactive.

Look at the last & tests
+ if (!(lp & adv & supported))
and see if it should use && or be more simple to read
by using
if (!condition || !

> ---
> drivers/net/usb/ax88179_178a.c | 34 +++++++++++-----------------------
> 1 file changed, 11 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
> index f32261ecd215..e4b0baa98e9a 100644
> --- a/drivers/net/usb/ax88179_178a.c
> +++ b/drivers/net/usb/ax88179_178a.c
> @@ -689,49 +689,37 @@ static int ax88179_chk_eee(struct usbnet *dev)
> eee_cap = ax88179_phy_read_mmd_indirect(dev,
> MDIO_PCS_EEE_ABLE,
> MDIO_MMD_PCS);
> - if (eee_cap < 0) {
> - priv->eee_active = 0;
> - return false;
> - }
> + if (eee_cap < 0)
> + goto set_inactive;
>
> cap = mmd_eee_cap_to_ethtool_sup_t(eee_cap);
> - if (!cap) {
> - priv->eee_active = 0;
> - return false;
> - }
> + if (!cap)
> + goto set_inactive;
>
> eee_lp = ax88179_phy_read_mmd_indirect(dev,
> MDIO_AN_EEE_LPABLE,
> MDIO_MMD_AN);
> - if (eee_lp < 0) {
> - priv->eee_active = 0;
> - return false;
> - }
> + if (eee_lp < 0)
> + goto set_inactive;
>
> eee_adv = ax88179_phy_read_mmd_indirect(dev,
> MDIO_AN_EEE_ADV,
> MDIO_MMD_AN);
> -
> - if (eee_adv < 0) {
> - priv->eee_active = 0;
> - return false;
> - }
> + if (eee_adv < 0)
> + goto set_inactive;
>
> adv = mmd_eee_adv_to_ethtool_adv_t(eee_adv);
> lp = mmd_eee_adv_to_ethtool_adv_t(eee_lp);
> supported = (ecmd.speed == SPEED_1000) ?
> SUPPORTED_1000baseT_Full :
> SUPPORTED_100baseT_Full;
> -
> - if (!(lp & adv & supported)) {
> - priv->eee_active = 0;
> - return false;
> - }
> + if (!(lp & adv & supported))
> + goto set_inactive;
>
> priv->eee_active = 1;
> return true;
> }
> -
> +set_inactive:
> priv->eee_active = 0;
> return false;
> }

2018-03-10 18:49:30

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH 1/2] net/usb/ax88179_178a: Use common code in ax88179_chk_eee()

On Sat, Mar 10, 2018 at 8:41 PM, Joe Perches <[email protected]> wrote:
> On Sat, 2018-03-10 at 19:24 +0100, SF Markus Elfring wrote:
>> From: Markus Elfring <[email protected]>
>> Date: Sat, 10 Mar 2018 18:22:43 +0100
>>
>> Adjust a jump target so that a bit of common code can be better reused
>> at the end of this function.
>
> Please stop mindlessly sending patching Markus.
>
> How about looking at the code being modified and
> thinking about what it does?

You have a strong nerve, I gave up on him and would rather simple ban.

--
With Best Regards,
Andy Shevchenko

2018-03-10 19:19:12

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH 0/2] net/usb/ax88179_178a: Adjustments for ax88179_chk_eee()

On Sat, Mar 10, 2018 at 07:22:55PM +0100, SF Markus Elfring wrote:
> From: Markus Elfring <[email protected]>
> Date: Sat, 10 Mar 2018 19:05:45 +0100
>
> Two update suggestions were taken into account
> from static source code analysis.

Hi Markus

How about re-writing this driver to use phylib. The whole of
ax88179_chk_eee() would then go away, since it is a duplication of
phy_init_eee().

Andrew

2018-03-12 10:12:38

by Oliver Neukum

[permalink] [raw]
Subject: Re: [PATCH 2/2] net/usb/ax88179_178a: Delete three unnecessary variables in ax88179_chk_eee()

Am Samstag, den 10.03.2018, 19:26 +0100 schrieb SF Markus Elfring:
> From: Markus Elfring <[email protected]>
> Date: Sat, 10 Mar 2018 18:53:28 +0100
>
> Use three values directly for a condition check without assigning them
> to intermediate variables.

Hi,

what is the benefit of this? It looks like needless code churn to me.

Regards
Oliver


2018-03-13 07:26:29

by SF Markus Elfring

[permalink] [raw]
Subject: Re: [2/2] net/usb/ax88179_178a: Delete three unnecessary variables in ax88179_chk_eee()

>> Use three values directly for a condition check without assigning them
>> to intermediate variables.
>
> Hi,
>
> what is the benefit of this?

I proposed a small source code reduction.

Other software design directions might become more interesting for this use case.

Regards,
Markus

2018-03-13 10:34:25

by Oliver Neukum

[permalink] [raw]
Subject: Re: [2/2] net/usb/ax88179_178a: Delete three unnecessary variables in ax88179_chk_eee()

Am Dienstag, den 13.03.2018, 08:24 +0100 schrieb SF Markus Elfring:
> >
> > >
> > > Use three values directly for a condition check without assigning them
> > > to intermediate variables.
> >
> > Hi,
> >
> > what is the benefit of this?
>
> I proposed a small source code reduction.
>
> Other software design directions might become more interesting for this use case.

Yes and doing so you killed three meaningful names that tell
us what these checks actually test for. That is not an improvement.

Regards
Oliver