get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/139978/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 139978,
    "url": "https://patches.dpdk.org/api/patches/139978/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20240507124305.2318-15-venkatkumar.ande@amd.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20240507124305.2318-15-venkatkumar.ande@amd.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20240507124305.2318-15-venkatkumar.ande@amd.com",
    "date": "2024-05-07T12:42:55",
    "name": "[v2,15/25] net/axgbe: improve SFP 100Mbps auto-negotiation",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": false,
    "hash": "84478bfe33983b4aa1965e70f7ce76abb9599c00",
    "submitter": {
        "id": 3256,
        "url": "https://patches.dpdk.org/api/people/3256/?format=api",
        "name": "Venkat Kumar Ande",
        "email": "venkatkumar.ande@amd.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20240507124305.2318-15-venkatkumar.ande@amd.com/mbox/",
    "series": [
        {
            "id": 31890,
            "url": "https://patches.dpdk.org/api/series/31890/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=31890",
            "date": "2024-05-07T12:42:41",
            "name": "[v2,01/25] net/axgbe: fix mdio access for non-zero ports and CL45 PHYs",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/31890/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/139978/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/139978/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 2419643FC9;\n\tTue,  7 May 2024 14:45:27 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id E361C433EA;\n\tTue,  7 May 2024 14:44:17 +0200 (CEST)",
            "from NAM11-CO1-obe.outbound.protection.outlook.com\n (mail-co1nam11on2066.outbound.protection.outlook.com [40.107.220.66])\n by mails.dpdk.org (Postfix) with ESMTP id 4838C433EA\n for <dev@dpdk.org>; Tue,  7 May 2024 14:44:16 +0200 (CEST)",
            "from PR2P264CA0023.FRAP264.PROD.OUTLOOK.COM (2603:10a6:101::35) by\n DM6PR12MB4156.namprd12.prod.outlook.com (2603:10b6:5:218::17) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.7544.43; Tue, 7 May 2024 12:44:14 +0000",
            "from SN1PEPF00036F42.namprd05.prod.outlook.com\n (2603:10a6:101:0:cafe::29) by PR2P264CA0023.outlook.office365.com\n (2603:10a6:101::35) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.41 via Frontend\n Transport; Tue, 7 May 2024 12:44:13 +0000",
            "from SATLEXMB04.amd.com (165.204.84.17) by\n SN1PEPF00036F42.mail.protection.outlook.com (10.167.248.26) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.20.7544.18 via Frontend Transport; Tue, 7 May 2024 12:44:13 +0000",
            "from cae-Lilac-RMB.amd.com (10.180.168.240) by SATLEXMB04.amd.com\n (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 7 May\n 2024 07:44:09 -0500"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=PvrF0k7MW1bRASc3Q3yGWIY3N+oAvTgc/7vSTPVlXQAinpHYzxWw3mMI31Qpw2mKgGfUvdzF/mvV+BAvtb4ycOiTOiQQ7VH83UP35JbRhr6Dt1xETHy4k0gj4Y6fJgau6JSySdzy0L9TBHR2KHIno2sIN5hatRwsy+oAXLPTDnuP3CdvAszEKd0IfykrVgcCqcq3ISsgfG0v3yPgjac5hp/HPJSVI9Gko6EyLSobnvotUN0Gr99jhjCuuWlb7b2jUsvuLJxyCqyP/FH/SEdL3jC9NkZMoYJ+jjsb2EiuLjpmb3nNbx6YVgwfWCjS8+Z0xrEGBlAdlrAxDUYZXGpBKw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=61Xr1pG0e0X9HzcfKz7U3h5J/chS/sP0zZq7vf5oGDE=;\n b=V78OC/ZD9+B6F9yTd+zGClWvUQc9t195WFjb/aKjm/CS2ZsLeEngfHCK2d5TG20XpVq3/Wzzc24gUz1NntpE+0T2VyQSsFZICjyj81VUgXkyKvQwMowhP8sl/BA0EJ55UQEgGlZzBuL5qwlbXSXoaS36aVWEjNBf7F/sanWH28KDdCFNvxvj/OGda8swp76KUVXyoRE4e4VMd3hON/8xVWkIFjfw2nNuAasJvF3Ox2Ymc4DqcDJOfa6SbnJh82nusbKTkxaqgM5m6tl0pdBcKXTwRAu+3KGYFR+/pEoz02c/CIWoO+1fqWXYNElsigC6BGP9wOLmD/ij4TPVrTuEzw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass\n (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com;\n dkim=none (message not signed); arc=none (0)",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=61Xr1pG0e0X9HzcfKz7U3h5J/chS/sP0zZq7vf5oGDE=;\n b=0DtqLo4GE129Yfc7UHYiEI1XQ2rcKjWSrMIMFxz7GeIhxS3YgJ33eDrKUNMZayUIk6DNkiomNznBRWjvyOhvDNpVY7xWuxzfVfG1U8eA6KZq01grPSgzA03maS6+Tslfl0GUKmYRijHOXZXl6nH36EiC3tRHWC+sLS4lBrB0Uo8=",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 165.204.84.17)\n smtp.mailfrom=amd.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=amd.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of amd.com designates\n 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C",
        "From": "Venkat Kumar Ande <venkatkumar.ande@amd.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<Selwin.Sebastian@amd.com>, Venkat Kumar Ande <venkatkumar.ande@amd.com>",
        "Subject": "[PATCH v2 15/25] net/axgbe: improve SFP 100Mbps auto-negotiation",
        "Date": "Tue, 7 May 2024 18:12:55 +0530",
        "Message-ID": "<20240507124305.2318-15-venkatkumar.ande@amd.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20240507124305.2318-1-venkatkumar.ande@amd.com>",
        "References": "<20240412125013.10498-1-VenkatKumar.Ande@amd.com>\n <20240507124305.2318-1-venkatkumar.ande@amd.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.180.168.240]",
        "X-ClientProxiedBy": "SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com\n (10.181.40.145)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "SN1PEPF00036F42:EE_|DM6PR12MB4156:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "e06bc73b-b806-421b-b326-08dc6e93661d",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230031|376005|1800799015|36860700004|82310400017;",
        "X-Microsoft-Antispam-Message-Info": "\n rfrM8YmaRewijgy1WVPFRbFweLY4wzrGIzScMN1S+SkP68C4bk9hEFd5CTXKHJ4EKwRWBTAf9TOiV3b2y7QOUwL4ejkRrDgdLIEuYrrIldtewype2NtkyEhYKMRbXvRfC6y4aLGhAsRQjQVpX7itM21+4ytQsVxUU83v64b3fu8rnP7ZSsREFQwBv7wVEhyJD9t8NQInRPc6SCGkuY2ElPiAdSbwjZNvkhQcGEOkG2dg0mOzUgSPkavznSQXebLz5gYOwBu1dTlLxnnqaxxmE81ByXz4BjV2I6aMWHD00LwL4ojhTQ4cnBSwDNA3BFFX6QzJ/56M5Hs+2s2EBg51/fJVLpURsVXot+PNT0ubsucWfO9ee3YoinPvYpDAjKGC7QnFQtLa9k+SDdZe6YRQXNpEC88HyaxcHxO214gqhaFysWs8wIipN/uwXhzPZ974clL2I90ZtOve0irYmh/Pv42Tj0D3J6OkN0DtRAJV9Q+Jqx71C+VEwGTLc+qAwT5aFWPCMZ70xeqcmdzlwgGo9mteZrvq2hsx/B0+8vUUbwf0e9jFEh4qXJLMppc+DzOFJChq/hvatLXK+9wkeg+DPUznCAe37Z+kHd4EXQfZS3fClWCElDzJX3lMu7mv0UmpQT3Pvw3q8AGbae2Zvnb7tbBjRPDKQ2Pqm4ZgUNjqk7q0ZqCZw26FHUgmffae7yP1ZcLXQYiyIrwIMqjsP23VwBECkDkuFmYVhUXqTKGICnTaLoRQ3WAIp7DhcJvcVcyy+ZshL0WEnFKIo1vvi44ByFFqRRd23esQzYXaZ/27YPGhGEA0IA4ktgydy0I2IXk70h+r6CPRT5t0FLHsEdQoKoVFQfeKe/K7cLMSd0vwYsYoaFCFAqyIWB5NNIaaoeGjK9/JdOgD7oCpmItmb1BW1hfegkDq02iZQBvQgmVVqroYEKWZmcNu4D2H9BdtqM345VqE4l79a+2mI+gYl5jMpf39ciVHYWFWmDqEKLlfpqzrYqDgeez30IWd1p0XZWp3OTk+Ng56dBSWKhZrTUYlu6wmXYbaZFBGvH6kF6sUNhUPKHsio2jzjAIPJqs48ezKskn1C92HS5S69eq4h7UpfZ0zBDh8UqbTIp98L1f8tXRg3EKKtZvv7Jh6tsAHD/bLEhH4GmBnIMMoStLR2wBYJXjn6h3KNrdpF9ex8eD29JInC+dN1yZEOunrGiVnRKm+33BOTD0gq2NYFYT5qT+AFWNrf8Er3tHUfIftueXJ2+EHMXxNlKoPeWnSHNFubvvS7JG4KDTaZtTQi1FByXsQYquQE7WcX5HW8+b51+J6FzTScEXMSceQ42gGe3uCg0mHk4Xh71eTOKd6pghL3eALAZZHOGmCRKtQzuqMPofb5Uj7bxNM9fmlO+1GFjOC35eL",
        "X-Forefront-Antispam-Report": "CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230031)(376005)(1800799015)(36860700004)(82310400017); DIR:OUT;\n SFP:1101;",
        "X-OriginatorOrg": "amd.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "07 May 2024 12:44:13.1613 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n e06bc73b-b806-421b-b326-08dc6e93661d",
        "X-MS-Exchange-CrossTenant-Id": "3dd8961f-e488-4e60-8e11-a82d994e183d",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17];\n Helo=[SATLEXMB04.amd.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n SN1PEPF00036F42.namprd05.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM6PR12MB4156",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "After changing speed to 100Mbps as a result of auto-negotiation (AN),\nsome 10/100/1000Mbps SFPs indicate a successful link (no faults or loss\nof signal), but cannot successfully transmit or receive data.  These\nSFPs required an extra auto-negotiation (AN) after the speed change in\norder to operate properly.  Add a quirk for these SFPs so that if the\noutcome of the AN actually results in changing to a new speed, re-initiate\nAN at that new speed.\n\nSigned-off-by: Venkat Kumar Ande <venkatkumar.ande@amd.com>\n---\n drivers/net/axgbe/axgbe_ethdev.h   |  1 +\n drivers/net/axgbe/axgbe_mdio.c     | 73 ++++++++++++++++--------------\n drivers/net/axgbe/axgbe_phy_impl.c |  5 ++\n 3 files changed, 46 insertions(+), 33 deletions(-)",
    "diff": "diff --git a/drivers/net/axgbe/axgbe_ethdev.h b/drivers/net/axgbe/axgbe_ethdev.h\nindex d1fac667c2..b9d8a4e74f 100644\n--- a/drivers/net/axgbe/axgbe_ethdev.h\n+++ b/drivers/net/axgbe/axgbe_ethdev.h\n@@ -658,6 +658,7 @@ struct axgbe_port {\n \tenum axgbe_an an_state;\n \tenum axgbe_rx kr_state;\n \tenum axgbe_rx kx_state;\n+\tunsigned int an_again;\n \tunsigned int an_supported;\n \tunsigned int parallel_detect;\n \tunsigned int fec_ability;\ndiff --git a/drivers/net/axgbe/axgbe_mdio.c b/drivers/net/axgbe/axgbe_mdio.c\nindex e1a737cf62..faa7cdbf0a 100644\n--- a/drivers/net/axgbe/axgbe_mdio.c\n+++ b/drivers/net/axgbe/axgbe_mdio.c\n@@ -200,13 +200,14 @@ static void axgbe_switch_mode(struct axgbe_port *pdata)\n \taxgbe_change_mode(pdata, pdata->phy_if.phy_impl.switch_mode(pdata));\n }\n \n-static void axgbe_set_mode(struct axgbe_port *pdata,\n+static bool axgbe_set_mode(struct axgbe_port *pdata,\n \t\t\t   enum axgbe_mode mode)\n {\n \tif (mode == axgbe_cur_mode(pdata))\n-\t\treturn;\n+\t\treturn false;\n \n \taxgbe_change_mode(pdata, mode);\n+\treturn true;\n }\n \n static bool axgbe_use_mode(struct axgbe_port *pdata,\n@@ -882,21 +883,22 @@ static int axgbe_phy_config_fixed(struct axgbe_port *pdata)\n \treturn 0;\n }\n \n-static int __axgbe_phy_config_aneg(struct axgbe_port *pdata)\n+static int __axgbe_phy_config_aneg(struct axgbe_port *pdata, bool set_mode)\n {\n \tint ret;\n \n+\tpthread_mutex_lock(&pdata->an_mutex);\n \trte_bit_relaxed_set32(AXGBE_LINK_INIT, &pdata->dev_state);\n \tpdata->link_check = rte_get_timer_cycles();\n \n \tret = pdata->phy_if.phy_impl.an_config(pdata);\n \tif (ret)\n-\t\treturn ret;\n+\t\tgoto out;\n \n \tif (pdata->phy.autoneg != AUTONEG_ENABLE) {\n \t\tret = axgbe_phy_config_fixed(pdata);\n \t\tif (ret || !pdata->kr_redrv)\n-\t\t\treturn ret;\n+\t\t\tgoto out;\n \t\tPMD_DRV_LOG(DEBUG, \"AN redriver support\\n\");\n \t} else {\n \t\tPMD_DRV_LOG(DEBUG, \"AN PHY configuration\\n\");\n@@ -906,23 +908,26 @@ static int __axgbe_phy_config_aneg(struct axgbe_port *pdata)\n \trte_intr_disable(pdata->pci_dev->intr_handle);\n \n \t/* Start auto-negotiation in a supported mode */\n-\tif (axgbe_use_mode(pdata, AXGBE_MODE_KR)) {\n-\t\taxgbe_set_mode(pdata, AXGBE_MODE_KR);\n-\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_KX_2500)) {\n-\t\taxgbe_set_mode(pdata, AXGBE_MODE_KX_2500);\n-\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_KX_1000)) {\n-\t\taxgbe_set_mode(pdata, AXGBE_MODE_KX_1000);\n-\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_SFI)) {\n-\t\taxgbe_set_mode(pdata, AXGBE_MODE_SFI);\n-\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_X)) {\n-\t\taxgbe_set_mode(pdata, AXGBE_MODE_X);\n-\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_SGMII_1000)) {\n-\t\taxgbe_set_mode(pdata, AXGBE_MODE_SGMII_1000);\n-\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_SGMII_100)) {\n-\t\taxgbe_set_mode(pdata, AXGBE_MODE_SGMII_100);\n-\t} else {\n-\t\trte_intr_enable(pdata->pci_dev->intr_handle);\n-\t\treturn -EINVAL;\n+\tif (set_mode) {\n+\t\tif (axgbe_use_mode(pdata, AXGBE_MODE_KR)) {\n+\t\t\taxgbe_set_mode(pdata, AXGBE_MODE_KR);\n+\t\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_KX_2500)) {\n+\t\t\taxgbe_set_mode(pdata, AXGBE_MODE_KX_2500);\n+\t\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_KX_1000)) {\n+\t\t\taxgbe_set_mode(pdata, AXGBE_MODE_KX_1000);\n+\t\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_SFI)) {\n+\t\t\taxgbe_set_mode(pdata, AXGBE_MODE_SFI);\n+\t\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_X)) {\n+\t\t\taxgbe_set_mode(pdata, AXGBE_MODE_X);\n+\t\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_SGMII_1000)) {\n+\t\t\taxgbe_set_mode(pdata, AXGBE_MODE_SGMII_1000);\n+\t\t} else if (axgbe_use_mode(pdata, AXGBE_MODE_SGMII_100)) {\n+\t\t\taxgbe_set_mode(pdata, AXGBE_MODE_SGMII_100);\n+\t\t} else {\n+\t\t\trte_intr_enable(pdata->pci_dev->intr_handle);\n+\t\t\tret = -EINVAL;\n+\t\t\tgoto out;\n+\t\t}\n \t}\n \n \t/* Disable and stop any in progress auto-negotiation */\n@@ -940,16 +945,7 @@ static int __axgbe_phy_config_aneg(struct axgbe_port *pdata)\n \taxgbe_an_init(pdata);\n \taxgbe_an_restart(pdata);\n \n-\treturn 0;\n-}\n-\n-static int axgbe_phy_config_aneg(struct axgbe_port *pdata)\n-{\n-\tint ret;\n-\n-\tpthread_mutex_lock(&pdata->an_mutex);\n-\n-\tret = __axgbe_phy_config_aneg(pdata);\n+out:\n \tif (ret)\n \t\trte_bit_relaxed_set32(AXGBE_LINK_ERR, &pdata->dev_state);\n \telse\n@@ -960,6 +956,16 @@ static int axgbe_phy_config_aneg(struct axgbe_port *pdata)\n \treturn ret;\n }\n \n+static int axgbe_phy_config_aneg(struct axgbe_port *pdata)\n+{\n+\treturn __axgbe_phy_config_aneg(pdata, true);\n+}\n+\n+static int axgbe_phy_reconfig_aneg(struct axgbe_port *pdata)\n+{\n+\treturn __axgbe_phy_config_aneg(pdata, false);\n+}\n+\n static bool axgbe_phy_aneg_done(struct axgbe_port *pdata)\n {\n \treturn pdata->an_result == AXGBE_AN_COMPLETE;\n@@ -1041,7 +1047,8 @@ static void axgbe_phy_status_result(struct axgbe_port *pdata)\n \n \tpdata->phy.duplex = DUPLEX_FULL;\n \n-\taxgbe_set_mode(pdata, mode);\n+\tif (axgbe_set_mode(pdata, mode) && pdata->an_again)\n+\t\taxgbe_phy_reconfig_aneg(pdata);\n }\n \n static int autoneg_time_out(unsigned long autoneg_start_time)\ndiff --git a/drivers/net/axgbe/axgbe_phy_impl.c b/drivers/net/axgbe/axgbe_phy_impl.c\nindex 4dab2ccad0..87ef8b6048 100644\n--- a/drivers/net/axgbe/axgbe_phy_impl.c\n+++ b/drivers/net/axgbe/axgbe_phy_impl.c\n@@ -556,6 +556,8 @@ static bool axgbe_phy_belfuse_parse_quirks(struct axgbe_port *pdata)\n \tif (memcmp(&sfp_eeprom->base[AXGBE_SFP_BASE_VENDOR_NAME],\n \t\t   AXGBE_BEL_FUSE_VENDOR, strlen(AXGBE_BEL_FUSE_VENDOR)))\n \t\treturn false;\n+\t/* For Bel-Fuse, use the extra AN flag */\n+\tpdata->an_again = 1;\n \n \t/* Reset PHY - wait for self-clearing reset bit to clear */\n \tpdata->phy_if.phy_impl.reset(pdata);\n@@ -797,6 +799,9 @@ static void axgbe_phy_sfp_detect(struct axgbe_port *pdata)\n \tstruct axgbe_phy_data *phy_data = pdata->phy_data;\n \tint ret;\n \n+\t/* Clear the extra AN flag */\n+\tpdata->an_again = 0;\n+\n \t/* Reset the SFP signals and info */\n \taxgbe_phy_sfp_reset(phy_data);\n \n",
    "prefixes": [
        "v2",
        "15/25"
    ]
}