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]
Message-ID: <AANLkTilzHA_URoZONtMf6A9-IRV4wA2ncr0b8Jff1ge9@mail.gmail.com>
Date:	Tue, 22 Jun 2010 23:57:56 +0900
From:	Mike McCormack <mikem@...g3k.org>
To:	Brandon Philips <brandon@...p.org>
Cc:	Stephen Hemminger <shemminger@...ux-foundation.org>,
	netdev@...r.kernel.org, davem@...emloft.net
Subject: Re: [PATCH] sky2: enable rx/tx in sky2_phy_reinit()

Tested, and verified that it fixes the bug reported.

Tested-by: Mike McCormack <mikem@...g3k.org>

On 17 June 2010 11:21, Brandon Philips <brandon@...p.org> wrote:
> sky2_phy_reinit is called by the ethtool helpers sky2_set_settings,
> sky2_nway_reset and sky2_set_pauseparam when netif_running.
>
> However, at the end of sky2_phy_init GM_GP_CTRL has GM_GPCR_RX_ENA and
> GM_GPCR_TX_ENA cleared. So, doing these commands causes the device to
> stop working:
>
> $ ethtool -r eth0
> $ ethtool -A eth0 autoneg off
>
> Fix this issue by enabling Rx/Tx after running sky2_phy_init in
> sky2_phy_reinit.
>
> Signed-off-by: Brandon Philips <bphilips@...e.de>
> Tested-by: Brandon Philips <bphilips@...e.de>
> Cc: stable@...nel.org
>
> ---
>  drivers/net/sky2.c |   19 ++++++++++++++-----
>  1 files changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
> index 2111c7b..7985165 100644
> --- a/drivers/net/sky2.c
> +++ b/drivers/net/sky2.c
> @@ -717,11 +717,24 @@ static void sky2_phy_power_down(struct sky2_hw *hw, unsigned port)
>        sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
>  }
>
> +/* Enable Rx/Tx */
> +static void sky2_enable_rx_tx(struct sky2_port *sky2)
> +{
> +       struct sky2_hw *hw = sky2->hw;
> +       unsigned port = sky2->port;
> +       u16 reg;
> +
> +       reg = gma_read16(hw, port, GM_GP_CTRL);
> +       reg |= GM_GPCR_RX_ENA | GM_GPCR_TX_ENA;
> +       gma_write16(hw, port, GM_GP_CTRL, reg);
> +}
> +
>  /* Force a renegotiation */
>  static void sky2_phy_reinit(struct sky2_port *sky2)
>  {
>        spin_lock_bh(&sky2->phy_lock);
>        sky2_phy_init(sky2->hw, sky2->port);
> +       sky2_enable_rx_tx(sky2);
>        spin_unlock_bh(&sky2->phy_lock);
>  }
>
> @@ -2040,7 +2053,6 @@ static void sky2_link_up(struct sky2_port *sky2)
>  {
>        struct sky2_hw *hw = sky2->hw;
>        unsigned port = sky2->port;
> -       u16 reg;
>        static const char *fc_name[] = {
>                [FC_NONE]       = "none",
>                [FC_TX]         = "tx",
> @@ -2048,10 +2060,7 @@ static void sky2_link_up(struct sky2_port *sky2)
>                [FC_BOTH]       = "both",
>        };
>
> -       /* enable Rx/Tx */
> -       reg = gma_read16(hw, port, GM_GP_CTRL);
> -       reg |= GM_GPCR_RX_ENA | GM_GPCR_TX_ENA;
> -       gma_write16(hw, port, GM_GP_CTRL, reg);
> +       sky2_enable_rx_tx(sky2);
>
>        gm_phy_write(hw, port, PHY_MARV_INT_MASK, PHY_M_DEF_MSK);
>
> --
> 1.7.1
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ