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: <142ce54c-108c-45b4-b886-ce3ca45df9fe@microchip.com>
Date:   Mon, 27 Nov 2023 16:00:18 +0000
From:   <Parthiban.Veerasooran@...rochip.com>
To:     <ramon.nordin.rodriguez@...roamp.se>, <andrew@...n.ch>,
        <hkallweit1@...il.com>, <linux@...linux.org.uk>,
        <davem@...emloft.net>, <edumazet@...gle.com>, <kuba@...nel.org>,
        <pabeni@...hat.com>, <netdev@...r.kernel.org>,
        <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 3/3] net: microchip_t1s: conditional collision detection

Hi,

This implementation was introduced in the below patch itself.

https://lore.kernel.org/netdev/20230426205049.xlfqluzwcvlm6ihh@soft-dev3-1/T/#m9a52b6c03b7fa637f70aed306b50b442590e24a3

As it is recommended to do it in a separate patch and also the 
datasheets of LAN867X Rev.B1 and LAN865X Rev.B0 internal PHY have these 
register is reserved, we were working for a feasible solution to 
describe this for customer and mainline. By the time many other things 
messed up and couldn't reach the mainline on time.

We also implemented LAN867X Rev.C1 support already in the driver and 
published in our product site and in the process of preparing mainline 
patches. But unfortunately it took little more time to make it.

https://ww1.microchip.com/downloads/aemDocuments/documents/AIS/ProductDocuments/CodeExamples/EVB-LAN8670-USB_Linux_Driver_1v0.zip

Anyway, thank you for the support. Good luck!

Best regards,
Parthiban V

On 27/11/23 4:10 pm, Ramón N.Rodriguez wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> From: Ramón Nordin Rodriguez <ramon.nordin.rodriguez@...roamp.se>
> 
> This commit conditionally sets the collision detection bit on lan867x
> and lan865x phys on changing PLCA enabled on/off. The intended realworld
> scenario is that all nodes on the network run the same settings with
> regards to plca, and when plca is enabled the physical layer guarantees
> that no collisions should occur.
> In a practical setting where it was tested running one node with
> collision detection on and other off, the node with collision detection
> on dropped a lot of packets, leading to a poor performing link.
> Worth noting here is that the phys default/reset to plca disabled and
> collision detection enabled. Thus this change would only have an effect
> when changing settings via ethtool.
> 
> Signed-off-by: Ramón Nordin Rodriguez <ramon.nordin.rodriguez@...roamp.se>
> ---
>   drivers/net/phy/microchip_t1s.c | 29 ++++++++++++++++++++++++++---
>   1 file changed, 26 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/phy/microchip_t1s.c b/drivers/net/phy/microchip_t1s.c
> index db84d850b165..3b1e82ecdf69 100644
> --- a/drivers/net/phy/microchip_t1s.c
> +++ b/drivers/net/phy/microchip_t1s.c
> @@ -23,8 +23,10 @@
>   #define LAN865X_REG_CFGPARAM_DATA 0x00D9
>   #define LAN865X_REG_CFGPARAM_CTRL 0x00DA
>   #define LAN865X_REG_STS2 0x0019
> +#define LAN86XX_REG_COLLISION_DETECT 0x0087
> 
>   #define LAN865X_CFGPARAM_READ_ENABLE BIT(1)
> +#define LAN86XX_COLLISION_DETECT_ENABLE BIT(15)
> 
>   /* The arrays below are pulled from the following table from AN1699
>    * Access MMD Address Value Mask
> @@ -363,6 +365,27 @@ static int lan86xx_read_status(struct phy_device *phydev)
>          return 0;
>   }
> 
> +static int lan86xx_plca_set_cfg(struct phy_device *phydev,
> +                               const struct phy_plca_cfg *plca_cfg)
> +{
> +       int err;
> +
> +       err = genphy_c45_plca_set_cfg(phydev, plca_cfg);
> +       if (err)
> +               return err;
> +
> +       /* Disable collision detect on the phy when PLCA is enabled.
> +        * Noise can be picked up as a false positive for collisions
> +        * leading to the phy dropping legitimate packets.
> +        * No collisions should be possible when all nodes are setup
> +        * for running PLCA.
> +        */
> +       return phy_modify_mmd(phydev, MDIO_MMD_VEND2,
> +                       LAN86XX_REG_COLLISION_DETECT,
> +                       LAN86XX_COLLISION_DETECT_ENABLE,
> +                       plca_cfg->enabled ? 0 : LAN86XX_COLLISION_DETECT_ENABLE);
> +}
> +
>   static struct phy_driver microchip_t1s_driver[] = {
>          {
>                  PHY_ID_MATCH_EXACT(PHY_ID_LAN867X_REVB1),
> @@ -371,7 +394,7 @@ static struct phy_driver microchip_t1s_driver[] = {
>                  .config_init        = lan867x_revb1_config_init,
>                  .read_status        = lan86xx_read_status,
>                  .get_plca_cfg       = genphy_c45_plca_get_cfg,
> -               .set_plca_cfg       = genphy_c45_plca_set_cfg,
> +               .set_plca_cfg       = lan86xx_plca_set_cfg,
>                  .get_plca_status    = genphy_c45_plca_get_status,
>          },
>          {
> @@ -381,7 +404,7 @@ static struct phy_driver microchip_t1s_driver[] = {
>                  .config_init        = lan867x_revc1_config_init,
>                  .read_status        = lan86xx_read_status,
>                  .get_plca_cfg       = genphy_c45_plca_get_cfg,
> -               .set_plca_cfg       = genphy_c45_plca_set_cfg,
> +               .set_plca_cfg       = lan86xx_plca_set_cfg,
>                  .get_plca_status    = genphy_c45_plca_get_status,
>          },
>          {
> @@ -391,7 +414,7 @@ static struct phy_driver microchip_t1s_driver[] = {
>                  .config_init        = lan865x_revb0_config_init,
>                  .read_status        = lan86xx_read_status,
>                  .get_plca_cfg       = genphy_c45_plca_get_cfg,
> -               .set_plca_cfg       = genphy_c45_plca_set_cfg,
> +               .set_plca_cfg       = lan86xx_plca_set_cfg,
>                  .get_plca_status    = genphy_c45_plca_get_status,
>          },
>   };
> --
> 2.40.1
> 
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ