<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ligatures:standardcontextual;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Calibri",sans-serif;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 129.75pt 1.0in 129.7pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoPlainText"><a id="OWAAMFCADC9B1A0ED433DA172B81CFB2DE0D7" href="mailto:tim.gardner@canonical.com"><span style="font-family:"Calibri",sans-serif;text-decoration:none">@Tim Gardner</span></a>
<a id="OWAAM073FF222326C46DE9FD919BB3D13CEF4" href="mailto:bartlomiej.zolnierkiewicz@canonical.com">
<span style="font-family:"Calibri",sans-serif;text-decoration:none">@Bartlomiej Zolnierkiewicz</span></a>, could you also review this for Focal please?<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Thanks.<o:p></o:p></p>
<p class="MsoPlainText">Asmaa<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">++<a id="OWAAM98822A12801B4226A9F0CDDADAA24904" href="mailto:vlad@nvidia.com"><span style="font-family:"Calibri",sans-serif;text-decoration:none">@Vladimir Sokolovsky</span></a><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">> -----Original Message-----</p>
<p class="MsoPlainText">> From: Asmaa Mnebhi <asmaa@nvidia.com></p>
<p class="MsoPlainText">> Sent: Thursday, April 18, 2024 5:11 PM</p>
<p class="MsoPlainText">> To: kernel-team@lists.ubuntu.com</p>
<p class="MsoPlainText">> Cc: Asmaa Mnebhi <asmaa@nvidia.com>; David Thompson</p>
<p class="MsoPlainText">> <davthompson@nvidia.com></p>
<p class="MsoPlainText">> Subject: [SRU][F:linux-bluefield][PATCH v1 1/1] UBUNTU: SAUCE: mlxbf-gige:</p>
<p class="MsoPlainText">> autonegotiation fails to complete on BF2</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> BugLink: <a href="https://bugs.launchpad.net/bugs/2062384">
<span style="color:windowtext;text-decoration:none">https://bugs.launchpad.net/bugs/2062384</span></a></p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> During their reboot test, QA found an intermittent issue where the OOB link is</p>
<p class="MsoPlainText">> down.</p>
<p class="MsoPlainText">> The link is down because the KSZ9031 PHY fails to complete autonegotiation.</p>
<p class="MsoPlainText">> Even under "normal" circumstances where autonegotiation completes, it takes</p>
<p class="MsoPlainText">> an abnormal time to do so (on average, at least 8 seconds).</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Hence, the hardware team and Microchip are involved in this debug but the root</p>
<p class="MsoPlainText">> cause is still unknown.</p>
<p class="MsoPlainText">> In the meantime, we need to provide a software workaround since customers are</p>
<p class="MsoPlainText">> starting to see this issue as well.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Signed-off-by: Asmaa Mnebhi <<a href="mailto:asmaa@nvidia.com"><span style="color:windowtext;text-decoration:none">asmaa@nvidia.com</span></a>></p>
<p class="MsoPlainText">> Reviewed-by: David Thompson <<a href="mailto:davthompson@nvidia.com"><span style="color:windowtext;text-decoration:none">davthompson@nvidia.com</span></a>></p>
<p class="MsoPlainText">> ---</p>
<p class="MsoPlainText">> .../mellanox/mlxbf_gige/mlxbf_gige_main.c | 15 +++++++++++++++</p>
<p class="MsoPlainText">> 1 file changed, 15 insertions(+)</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c</p>
<p class="MsoPlainText">> b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c</p>
<p class="MsoPlainText">> index d322d9fb06ba..635009a209d5 100644</p>
<p class="MsoPlainText">> --- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c</p>
<p class="MsoPlainText">> +++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c</p>
<p class="MsoPlainText">> @@ -138,6 +138,7 @@ static int mlxbf_gige_open(struct net_device *netdev) {</p>
<p class="MsoPlainText">> struct mlxbf_gige *priv = netdev_priv(netdev);</p>
<p class="MsoPlainText">> struct phy_device *phydev = netdev->phydev;</p>
<p class="MsoPlainText">> + u8 timeout = 10;</p>
<p class="MsoPlainText">> u64 control;</p>
<p class="MsoPlainText">> u64 int_en;</p>
<p class="MsoPlainText">> int err;</p>
<p class="MsoPlainText">> @@ -163,6 +164,20 @@ static int mlxbf_gige_open(struct net_device *netdev)</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> phy_start(phydev);</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> + /* On BlueField-2 systems, the KSZ9031 PHY hardware could fail</p>
<p class="MsoPlainText">> + * to complete autonegotiation and so the link remains down.</p>
<p class="MsoPlainText">> + * The software workaround is to restart autonegotiation.</p>
<p class="MsoPlainText">> + */</p>
<p class="MsoPlainText">> + while (timeout) {</p>
<p class="MsoPlainText">> + if (phy_aneg_done(phydev))</p>
<p class="MsoPlainText">> + break;</p>
<p class="MsoPlainText">> + msleep(1000);</p>
<p class="MsoPlainText">> + timeout--;</p>
<p class="MsoPlainText">> + };</p>
<p class="MsoPlainText">> +</p>
<p class="MsoPlainText">> + if (timeout == 0)</p>
<p class="MsoPlainText">> + phy_restart_aneg(phydev);</p>
<p class="MsoPlainText">> +</p>
<p class="MsoPlainText">> err = mlxbf_gige_tx_init(priv);</p>
<p class="MsoPlainText">> if (err)</p>
<p class="MsoPlainText">> goto free_irqs;</p>
<p class="MsoPlainText">> --</p>
<p class="MsoPlainText">> 2.30.1</p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
</body>
</html>