lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 2 Nov 2020 14:40:01 +0100
From:   Andrew Lunn <andrew@...n.ch>
To:     Pavana Sharma <pavana.sharma@...i.com>
Cc:     marek.behun@....cz, ashkan.boldaji@...i.com, davem@...emloft.net,
        f.fainelli@...il.com, gregkh@...uxfoundation.org, kuba@...nel.org,
        linux-kernel@...r.kernel.org, netdev@...r.kernel.org,
        vivien.didelot@...il.com
Subject: Re: [PATCH v7 3/4] net: dsa: mv88e6xxx: Change serdes lane parameter
  from u8 type to int

On Mon, Nov 02, 2020 at 04:43:09PM +1000, Pavana Sharma wrote:
> Returning 0 is no more an error case with MV88E6393 family
> which has serdes lane numbers 0, 9 or 10.
> So with this change .serdes_get_lane will return lane number
> or error (-ENODEV).
> 
> Signed-off-by: Pavana Sharma <pavana.sharma@...i.com>
> ---
>  drivers/net/dsa/mv88e6xxx/chip.c   | 28 +++++------
>  drivers/net/dsa/mv88e6xxx/chip.h   | 16 +++----
>  drivers/net/dsa/mv88e6xxx/port.c   |  6 +--
>  drivers/net/dsa/mv88e6xxx/serdes.c | 76 +++++++++++++++---------------
>  drivers/net/dsa/mv88e6xxx/serdes.h | 50 ++++++++++----------
>  5 files changed, 88 insertions(+), 88 deletions(-)
> 
> diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
> index f0dbc05e30a4..4994b8eee659 100644
> --- a/drivers/net/dsa/mv88e6xxx/chip.c
> +++ b/drivers/net/dsa/mv88e6xxx/chip.c
> @@ -484,12 +484,12 @@ static int mv88e6xxx_serdes_pcs_get_state(struct dsa_switch *ds, int port,
>  					  struct phylink_link_state *state)
>  {
>  	struct mv88e6xxx_chip *chip = ds->priv;
> -	u8 lane;
> +	int lane = -ENODEV;
>  	int err;

You have added a lot of initialises which are not needed.

>  
>  	mv88e6xxx_reg_lock(chip);
>  	lane = mv88e6xxx_serdes_get_lane(chip, port);


lane is always set, so there is no point in setting it to -ENODEV
first.

> -	if (lane && chip->info->ops->serdes_pcs_get_state)
> +	if ((lane >= 0) && chip->info->ops->serdes_pcs_get_state)
>  		err = chip->info->ops->serdes_pcs_get_state(chip, port, lane,
>  							    state);
>  	else
> @@ -505,11 +505,11 @@ static int mv88e6xxx_serdes_pcs_config(struct mv88e6xxx_chip *chip, int port,
>  				       const unsigned long *advertise)
>  {
>  	const struct mv88e6xxx_ops *ops = chip->info->ops;
> -	u8 lane;
> +	int lane = -ENODEV;
>  
>  	if (ops->serdes_pcs_config) {
>  		lane = mv88e6xxx_serdes_get_lane(chip, port);
> -		if (lane)
> +		if (lane >= 0)
>  			return ops->serdes_pcs_config(chip, port, lane, mode,
>  						      interface, advertise);
>  	}
> @@ -521,15 +521,15 @@ static void mv88e6xxx_serdes_pcs_an_restart(struct dsa_switch *ds, int port)
>  {
>  	struct mv88e6xxx_chip *chip = ds->priv;
>  	const struct mv88e6xxx_ops *ops;
> +	int lane = -ENODEV;
>  	int err = 0;
> -	u8 lane;
>  
>  	ops = chip->info->ops;
>  
>  	if (ops->serdes_pcs_an_restart) {
>  		mv88e6xxx_reg_lock(chip);
>  		lane = mv88e6xxx_serdes_get_lane(chip, port);
> -		if (lane)

lane is always set inside this if statement, and is never used outside
of it.

> +		if (lane >= 0)
>  			err = ops->serdes_pcs_an_restart(chip, port, lane);
>  		mv88e6xxx_reg_unlock(chip);
>  
> @@ -543,11 +543,11 @@ static int mv88e6xxx_serdes_pcs_link_up(struct mv88e6xxx_chip *chip, int port,
>  					int speed, int duplex)
>  {
>  	const struct mv88e6xxx_ops *ops = chip->info->ops;
> -	u8 lane;
> +	int lane = -ENODEV;
>  
>  	if (!phylink_autoneg_inband(mode) && ops->serdes_pcs_link_up) {
>  		lane = mv88e6xxx_serdes_get_lane(chip, port);
> -		if (lane)
> +		if (lane >= 0)
>  			return ops->serdes_pcs_link_up(chip, port, lane,

lane is always set, and never used outside of the if ....

     Andrew

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ