get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 50765,
    "url": "https://patches.dpdk.org/api/patches/50765/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/f2a69ea052f93e333d53625e9a16bf997e19600d.1551528549.git.igor.russkikh@aquantia.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": "<f2a69ea052f93e333d53625e9a16bf997e19600d.1551528549.git.igor.russkikh@aquantia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/f2a69ea052f93e333d53625e9a16bf997e19600d.1551528549.git.igor.russkikh@aquantia.com",
    "date": "2019-03-02T12:10:51",
    "name": "[05/10] net/atlantic: use eeprom magic as a device address",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "ff887ba325999fe2d2dbae5b5474c89c8d8f534c",
    "submitter": {
        "id": 1124,
        "url": "https://patches.dpdk.org/api/people/1124/?format=api",
        "name": "Igor Russkikh",
        "email": "igor.russkikh@aquantia.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/f2a69ea052f93e333d53625e9a16bf997e19600d.1551528549.git.igor.russkikh@aquantia.com/mbox/",
    "series": [
        {
            "id": 3614,
            "url": "https://patches.dpdk.org/api/series/3614/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=3614",
            "date": "2019-03-02T12:10:41",
            "name": "net/atlantic: bugfixes and code cleanup",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/3614/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/50765/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/50765/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 229084C9F;\n\tSat,  2 Mar 2019 13:10:55 +0100 (CET)",
            "from NAM01-SN1-obe.outbound.protection.outlook.com\n\t(mail-eopbgr820049.outbound.protection.outlook.com [40.107.82.49])\n\tby dpdk.org (Postfix) with ESMTP id 865F34C94\n\tfor <dev@dpdk.org>; Sat,  2 Mar 2019 13:10:52 +0100 (CET)",
            "from DM6PR11MB3625.namprd11.prod.outlook.com (20.178.230.149) by\n\tDM6PR11MB3867.namprd11.prod.outlook.com (10.255.61.12) with Microsoft\n\tSMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.1665.16; Sat, 2 Mar 2019 12:10:51 +0000",
            "from DM6PR11MB3625.namprd11.prod.outlook.com\n\t([fe80::319e:4e9b:b376:5588]) by\n\tDM6PR11MB3625.namprd11.prod.outlook.com\n\t([fe80::319e:4e9b:b376:5588%4]) with mapi id 15.20.1643.019;\n\tSat, 2 Mar 2019 12:10:51 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=ignEHWoxguKlCQV+/L+FFHv5+ZfaQmlaunF92gwBXaI=;\n\tb=c/8uHMqCpR2t9NRhVo4LysALmu2lhY8ANg8Z5JnVOzOR5U/UVekhZSDw5Ax+wlaQP97XzZjMffnL745OZ+JPgi3jBjxNfQpdiYfPAhw4bBt4+bMC7QqweSmDnOj0OM6+7OF06gkpASkpHnSMarXMpiX0g2sJhOxuVuGvIY1y+1Q=",
        "From": "Igor Russkikh <Igor.Russkikh@aquantia.com>",
        "To": "\"dev@dpdk.org\" <dev@dpdk.org>",
        "CC": "Pavel Belous <Pavel.Belous@aquantia.com>, Igor Russkikh\n\t<Igor.Russkikh@aquantia.com>",
        "Thread-Topic": "[PATCH 05/10] net/atlantic: use eeprom magic as a device\n\taddress",
        "Thread-Index": "AQHU0PD6P5RGQLcsvEqHcpgj+4yNjQ==",
        "Date": "Sat, 2 Mar 2019 12:10:51 +0000",
        "Message-ID": "<f2a69ea052f93e333d53625e9a16bf997e19600d.1551528549.git.igor.russkikh@aquantia.com>",
        "References": "<cover.1551528549.git.igor.russkikh@aquantia.com>",
        "In-Reply-To": "<cover.1551528549.git.igor.russkikh@aquantia.com>",
        "Accept-Language": "en-US",
        "Content-Language": "en-US",
        "X-MS-Has-Attach": "",
        "X-MS-TNEF-Correlator": "",
        "x-clientproxiedby": "HE1P190CA0057.EURP190.PROD.OUTLOOK.COM\n\t(2603:10a6:7:52::46)\n\tTo DM6PR11MB3625.namprd11.prod.outlook.com\n\t(2603:10b6:5:13a::21)",
        "authentication-results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Igor.Russkikh@aquantia.com; ",
        "x-ms-exchange-messagesentrepresentingtype": "1",
        "x-mailer": "git-send-email 2.17.1",
        "x-originating-ip": "[95.79.108.179]",
        "x-ms-publictraffictype": "Email",
        "x-ms-office365-filtering-correlation-id": "41e640dd-823a-43fd-d7d6-08d69f081c9c",
        "x-microsoft-antispam": "BCL:0; PCL:0;\n\tRULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(2017052603328)(7153060)(7193020);\n\tSRVR:DM6PR11MB3867; ",
        "x-ms-traffictypediagnostic": "DM6PR11MB3867:",
        "x-microsoft-exchange-diagnostics": "=?iso-8859-1?Q?1; DM6PR11MB3867;\n\t23:jbtkiglSkTVAq/oWe18oV/Jm0B7blVB4uPap5kI?=\n\t=?iso-8859-1?q?mYNS7i6XJAsmC7erhdBZvPkcF?=\n\t=?iso-8859-1?q?bFjWgCmTaGIeqNnMXJHIKcQjrOMQaAC+J1oFjpSLakCWNK0Q4Nl?=\n\t=?iso-8859-1?q?aFW2wXW3czBrZ/0t91k09FbkY0eyy4usUt/0YBt+QBqGPv0tLvt?=\n\t=?iso-8859-1?q?mdALjCiOdLujx76de8Y9+ujTmnBqV2StCGhwU1xnAJVeQ6LQ7wb?=\n\t=?iso-8859-1?q?ZRzKT//orQ4V2SbA9u16rADbFcEYqDlO/qje4siATAXlIRSr9n4?=\n\t=?iso-8859-1?q?XkmUfaJobdprnJBtOf2Zo8dQYSI2OJNxBqZVwY05fiwTz3PCLj2?=\n\t=?iso-8859-1?q?xHV7DrI6Sk38zclOS2FAtsyKa+DQAly1RHqRXSRE3I8IqBKCpIF?=\n\t=?iso-8859-1?q?YslHtiqZPGsfCtLBLqmXmqZWmvdAI93y/pZw63rVt60yb/6kkkw?=\n\t=?iso-8859-1?q?E4WolhNbIBBDhsKj3mjs3h9DWKU3/d4Bgs3X7S1JznthGzx/aTW?=\n\t=?iso-8859-1?q?SPwthKW0WyetFjCw8AAWXKWw36lgzS+b7wOTfTWGXZ8Tcz4gjvY?=\n\t=?iso-8859-1?q?lqDhhOGD2YROSpJFoD05vow5j0CikbXj+cwGUls55QUO2E2EMj4?=\n\t=?iso-8859-1?q?cX0GLPndxUHT0ttOnO3GmgwkiYxJw7deUADsQKTaCTNtS05MK+G?=\n\t=?iso-8859-1?q?nNcTKgrXCjh379l5d4bLhy9eATWMEws9jf/lIMJKbih4RoGpFDF?=\n\t=?iso-8859-1?q?jObiDIKPu6QdfCeNH8xYdcp20hOBaOZH9eaL6MMvsZpddCXZa7W?=\n\t=?iso-8859-1?q?YDaGyeyHy86+HNb1yeGH9xZf95eg/hOFSeDejqiYQLZQj/vJZoA?=\n\t=?iso-8859-1?q?jZLIEzdU4E/KXpYv6Qd6hg1Ouo9DU9Xgb89g2uuqT3M1pDPp4Pn?=\n\t=?iso-8859-1?q?uKjdufV8qaCi2rfPufy+wxeKy40z691+SRiX44Agdj2itSK2ugQ?=\n\t=?iso-8859-1?q?XNYCrTIapJD7KI/ir4/Ogk/kLS6rvRhtZoMLYVNgc4EJL1Xnux3?=\n\t=?iso-8859-1?q?nHHnIbUmZjNLLA74TgzEK67pOBxQPrK8xxm5qAehNmyg9i+ySOM?=\n\t=?iso-8859-1?q?H/UGs6r9rgyOFlol/Z2R/XIURgwRIxBitfwvSLFDO/6XfrMk7Qd?=\n\t=?iso-8859-1?q?dmGE+oQ3Y8hHICpOXOy9RlxS7Qa8/0FVoaD8+1es5lQ34FMKg8T?=\n\t=?iso-8859-1?q?ZaeAfaBJILArPO3pw5kugCynIJQHx3kkKyj55SvpMSrVzByckNN?=\n\t=?iso-8859-1?q?d5PIdXl938mzHRJaDzkZzMPGubOY0oQumfgdxolb6yCIDN5yQ/a?=\n\t=?iso-8859-1?q?FqTsypv+c/d08+X26JGxbV9MSgqYsYWfSdr7xaM+15My69q/QCb?=\n\t=?iso-8859-1?q?K56B6z5zkCvjU4IcuOGzOEb8gfEl74p35Fq4AmCBT4u5kIdIS8q?=\n\t=?iso-8859-1?q?ZCOfdnsmPJ8pfcnVXwbjiNr/GrLtwndpp2M31txqLakvynZc+qa?=\n\t=?iso-8859-1?q?bsEyw1bJ52TJTcmHvMI0ItnL8ZPbNl8/2oiN1McNmdN1GfTo=3D?=",
        "x-microsoft-antispam-prvs": "<DM6PR11MB386770E7EC9D1BBAD60A648898770@DM6PR11MB3867.namprd11.prod.outlook.com>",
        "x-forefront-prvs": "09645BAC66",
        "x-forefront-antispam-report": "SFV:NSPM;\n\tSFS:(10009020)(376002)(366004)(346002)(136003)(396003)(39850400004)(199004)(189003)(7736002)(8936002)(36756003)(256004)(1730700003)(71200400001)(6916009)(71190400001)(14444005)(8676002)(54906003)(106356001)(186003)(105586002)(4326008)(2501003)(26005)(305945005)(316002)(5660300002)(86362001)(97736004)(2906002)(102836004)(81156014)(81166006)(53936002)(52116002)(76176011)(3846002)(6506007)(386003)(6116002)(72206003)(6512007)(6436002)(14454004)(5640700003)(66066001)(6486002)(478600001)(25786009)(68736007)(99286004)(107886003)(11346002)(476003)(2616005)(446003)(486006)(2351001)(118296001)(50226002)(44832011);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR11MB3867;\n\tH:DM6PR11MB3625.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en;\n\tPTR:InfoNoRecords; A:1; MX:1; ",
        "received-spf": "None (protection.outlook.com: aquantia.com does not designate\n\tpermitted sender hosts)",
        "x-ms-exchange-senderadcheck": "1",
        "x-microsoft-antispam-message-info": "EjLpfFKP6DRpDncTeDcGa5QTeTy1WDyb+XcwlvzxQVkzqm5M1H+jQB965XQP6+6wS6Yq7Zca4Nxkn6huDtlzSPva+4xkoZCX5p66K7LpmOiNByrZx7n0jCia0iSefLogXrbmewnQqz8DuanHFfKBTZureH3cWN2upPgN19eOrW7SB9mb978fzXKsE/TVF99iwhwYYqrYGWuLwOquDPUxJmvKlu4jejIScK2fWqifaVGfFBcVfdul+S5i3VEkSmlJ/fTLxttdwvoQHDwZ662ufMB7hhDyTv9b1BcXtQRtlWgYR0l6RHHawbD9FlgyrZ69ydTiS0n8LXChFboVhwVnVvchK6gG+uWQqQcbh4B6jnAwDg+qDlU4ekw/D7biWq9JfjDRd1SIhH8btUlFKEmc6Aep/mKCF5PIkVdcIkkRF/w=",
        "Content-Type": "text/plain; charset=\"iso-8859-1\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "X-OriginatorOrg": "aquantia.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "41e640dd-823a-43fd-d7d6-08d69f081c9c",
        "X-MS-Exchange-CrossTenant-originalarrivaltime": "02 Mar 2019 12:10:49.6851\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-fromentityheader": "Hosted",
        "X-MS-Exchange-CrossTenant-mailboxtype": "HOSTED",
        "X-MS-Exchange-CrossTenant-id": "83e2e134-991c-4ede-8ced-34d47e38e6b1",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM6PR11MB3867",
        "Subject": "[dpdk-dev] [PATCH 05/10] net/atlantic: use eeprom magic as a device\n\taddress",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Pavel Belous <Pavel.Belous@aquantia.com>\n\nDefault dev addr is replaced with magic field from the request.\nLength is allowed to be less than maximum.\nSMBUS access bit definitions also better organised now.\n\nSigned-off-by: Igor Russkikh <igor.russkikh@aquantia.com>\nSigned-off-by: Pavel Belous <Pavel.Belous@aquantia.com>\n---\n drivers/net/atlantic/atl_ethdev.c             | 20 ++++++++++------\n drivers/net/atlantic/atl_types.h              |  5 ++--\n drivers/net/atlantic/hw_atl/hw_atl_utils.c    |  4 ++++\n drivers/net/atlantic/hw_atl/hw_atl_utils.h    | 23 ++++++++++--------\n .../net/atlantic/hw_atl/hw_atl_utils_fw2x.c   | 24 ++++++++++---------\n 5 files changed, 46 insertions(+), 30 deletions(-)",
    "diff": "diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c\nindex 5bc04f55c..ae1babacf 100644\n--- a/drivers/net/atlantic/atl_ethdev.c\n+++ b/drivers/net/atlantic/atl_ethdev.c\n@@ -1102,24 +1102,27 @@ atl_dev_get_eeprom_length(struct rte_eth_dev *dev __rte_unused)\n \treturn SFP_EEPROM_SIZE;\n }\n \n-static int\n-atl_dev_get_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *eeprom)\n+int atl_dev_get_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *eeprom)\n {\n \tstruct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\tuint32_t dev_addr = SMBUS_DEVICE_ID;\n \n \tif (hw->aq_fw_ops->get_eeprom == NULL)\n \t\treturn -ENOTSUP;\n \n-\tif (eeprom->length != SFP_EEPROM_SIZE || eeprom->data == NULL)\n+\tif (eeprom->length > SFP_EEPROM_SIZE || eeprom->data == NULL)\n \t\treturn -EINVAL;\n \n-\treturn hw->aq_fw_ops->get_eeprom(hw, eeprom->data, eeprom->length);\n+\tif (eeprom->magic)\n+\t\tdev_addr = eeprom->magic;\n+\n+\treturn hw->aq_fw_ops->get_eeprom(hw, dev_addr, eeprom->data, eeprom->length);\n }\n \n-static int\n-atl_dev_set_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *eeprom)\n+int atl_dev_set_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *eeprom)\n {\n \tstruct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\tuint32_t dev_addr = SMBUS_DEVICE_ID;\n \n \tif (hw->aq_fw_ops->set_eeprom == NULL)\n \t\treturn -ENOTSUP;\n@@ -1127,7 +1130,10 @@ atl_dev_set_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *eeprom)\n \tif (eeprom->length != SFP_EEPROM_SIZE || eeprom->data == NULL)\n \t\treturn -EINVAL;\n \n-\treturn hw->aq_fw_ops->set_eeprom(hw, eeprom->data, eeprom->length);\n+\tif (eeprom->magic)\n+\t\tdev_addr = eeprom->magic;\n+\n+\treturn hw->aq_fw_ops->set_eeprom(hw, dev_addr, eeprom->data, eeprom->length);\n }\n \n static int\ndiff --git a/drivers/net/atlantic/atl_types.h b/drivers/net/atlantic/atl_types.h\nindex 3d90f6cae..ecc515e43 100644\n--- a/drivers/net/atlantic/atl_types.h\n+++ b/drivers/net/atlantic/atl_types.h\n@@ -137,9 +137,10 @@ struct aq_fw_ops {\n \n \tint (*led_control)(struct aq_hw_s *self, u32 mode);\n \n-\tint (*get_eeprom)(struct aq_hw_s *self, u32 *data, u32 len);\n+\tint (*get_eeprom)(struct aq_hw_s *self, int dev_addr, u32 *data, u32 len);\n+\n+\tint (*set_eeprom)(struct aq_hw_s *self, int dev_addr, u32 *data, u32 len);\n \n-\tint (*set_eeprom)(struct aq_hw_s *self, u32 *data, u32 len);\n };\n \n struct atl_sw_stats {\ndiff --git a/drivers/net/atlantic/hw_atl/hw_atl_utils.c b/drivers/net/atlantic/hw_atl/hw_atl_utils.c\nindex 13f02b9f9..4299b7016 100644\n--- a/drivers/net/atlantic/hw_atl/hw_atl_utils.c\n+++ b/drivers/net/atlantic/hw_atl/hw_atl_utils.c\n@@ -305,6 +305,10 @@ int hw_atl_utils_fw_downld_dwords(struct aq_hw_s *self, u32 a,\n \t\t\tAQ_HW_WAIT_FOR(!(0x100 & aq_hw_read_reg(self,\n \t\t\t\t\t\t\t   HW_ATL_MIF_CMD)),\n \t\t\t\t       1, 1000U);\n+\t\t\tif (err) {\n+\t\t\t\terr = -ETIMEDOUT;\n+\t\t\t\tgoto err_exit;\n+\t\t\t}\n \n \t\t*(p++) = aq_hw_read_reg(self, HW_ATL_MIF_VAL);\n \t\ta += 4;\ndiff --git a/drivers/net/atlantic/hw_atl/hw_atl_utils.h b/drivers/net/atlantic/hw_atl/hw_atl_utils.h\nindex 5f3f70847..f2a87826c 100644\n--- a/drivers/net/atlantic/hw_atl/hw_atl_utils.h\n+++ b/drivers/net/atlantic/hw_atl/hw_atl_utils.h\n@@ -8,6 +8,7 @@\n #ifndef HW_ATL_UTILS_H\n #define HW_ATL_UTILS_H\n \n+#define BIT(x)  (1UL << (x))\n #define HW_ATL_FLUSH() { (void)aq_hw_read_reg(self, 0x10); }\n \n /* Hardware tx descriptor */\n@@ -389,18 +390,8 @@ enum hal_atl_utils_fw_state_e {\n #define HAL_ATLANTIC_UTILS_FW_MSG_OFFLOAD_DEL  10U\n #define HAL_ATLANTIC_UTILS_FW_MSG_CABLE_DIAG   13U // 0xd\n \n-#define SMBUS_READ_REQUEST BIT(13)\n-#define SMBUS_WRITE_REQUEST BIT(14)\n #define SMBUS_DEVICE_ID 0x50\n \n-enum hw_atl_fw2x_rate {\n-\tFW2X_RATE_100M    = 0x20,\n-\tFW2X_RATE_1G      = 0x100,\n-\tFW2X_RATE_2G5     = 0x200,\n-\tFW2X_RATE_5G      = 0x400,\n-\tFW2X_RATE_10G     = 0x800,\n-};\n-\n enum hw_atl_fw2x_caps_lo {\n \tCAPS_LO_10BASET_HD = 0x00,\n \tCAPS_LO_10BASET_FD,\n@@ -414,6 +405,10 @@ enum hw_atl_fw2x_caps_lo {\n \tCAPS_LO_2P5GBASET_FD,\n \tCAPS_LO_5GBASET_FD,\n \tCAPS_LO_10GBASET_FD,\n+\tCAPS_LO_AUTONEG,\n+\tCAPS_LO_SMBUS_READ,\n+\tCAPS_LO_SMBUS_WRITE,\n+\tCAPS_LO_MACSEC\n };\n \n enum hw_atl_fw2x_caps_hi {\n@@ -451,6 +446,14 @@ enum hw_atl_fw2x_caps_hi {\n \tCAPS_HI_TRANSACTION_ID,\n };\n \n+enum hw_atl_fw2x_rate {\n+\tFW2X_RATE_100M    = BIT(CAPS_LO_100BASETX_FD),\n+\tFW2X_RATE_1G      = BIT(CAPS_LO_1000BASET_FD),\n+\tFW2X_RATE_2G5     = BIT(CAPS_LO_2P5GBASET_FD),\n+\tFW2X_RATE_5G      = BIT(CAPS_LO_5GBASET_FD),\n+\tFW2X_RATE_10G     = BIT(CAPS_LO_10GBASET_FD),\n+};\n+\n struct aq_hw_s;\n struct aq_fw_ops;\n struct aq_hw_link_status_s;\ndiff --git a/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c b/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c\nindex a155d4aab..d0eb9f5e9 100644\n--- a/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c\n+++ b/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c\n@@ -129,7 +129,9 @@ static u32 fw2x_to_eee_mask(u32 speed)\n \n static int aq_fw2x_set_link_speed(struct aq_hw_s *self, u32 speed)\n {\n-\tu32 val = link_speed_mask_2fw2x_ratemask(speed);\n+\tu32 rate_mask = link_speed_mask_2fw2x_ratemask(speed);\n+\tu32 reg_val = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR);\n+\tu32 val = rate_mask | ((BIT(CAPS_LO_SMBUS_READ) | BIT(CAPS_LO_SMBUS_WRITE) | BIT(CAPS_LO_MACSEC)) & reg_val);\n \n \taq_hw_write_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR, val);\n \n@@ -484,7 +486,7 @@ static int aq_fw2x_led_control(struct aq_hw_s *self, u32 mode)\n \treturn 0;\n }\n \n-static int aq_fw2x_get_eeprom(struct aq_hw_s *self, u32 *data, u32 len)\n+static int aq_fw2x_get_eeprom(struct aq_hw_s *self, int dev_addr, u32 *data, u32 len)\n {\n \tint err = 0;\n \tstruct smbus_read_request request;\n@@ -494,7 +496,7 @@ static int aq_fw2x_get_eeprom(struct aq_hw_s *self, u32 *data, u32 len)\n \tif (self->fw_ver_actual < HW_ATL_FW_FEATURE_EEPROM)\n \t\treturn -EOPNOTSUPP;\n \n-\trequest.device_id = SMBUS_DEVICE_ID;\n+\trequest.device_id = dev_addr;\n \trequest.address = 0;\n \trequest.length = len;\n \n@@ -506,16 +508,16 @@ static int aq_fw2x_get_eeprom(struct aq_hw_s *self, u32 *data, u32 len)\n \tif (err < 0)\n \t\treturn err;\n \n-\t/* Toggle 0x368.SMBUS_READ_REQUEST bit */\n+\t/* Toggle 0x368.CAPS_LO_SMBUS_READ bit */\n \tmpi_opts = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR);\n-\tmpi_opts ^= SMBUS_READ_REQUEST;\n+\tmpi_opts ^= BIT(CAPS_LO_SMBUS_READ);\n \n \taq_hw_write_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR, mpi_opts);\n \n \t/* Wait until REQUEST_BIT matched in 0x370 */\n \n \tAQ_HW_WAIT_FOR((aq_hw_read_reg(self, HW_ATL_FW2X_MPI_STATE_ADDR) &\n-\t\tSMBUS_READ_REQUEST) == (mpi_opts & SMBUS_READ_REQUEST),\n+\t\tBIT(CAPS_LO_SMBUS_READ)) == (mpi_opts & BIT(CAPS_LO_SMBUS_READ)),\n \t\t10U, 10000U);\n \n \tif (err < 0)\n@@ -542,7 +544,7 @@ static int aq_fw2x_get_eeprom(struct aq_hw_s *self, u32 *data, u32 len)\n }\n \n \n-static int aq_fw2x_set_eeprom(struct aq_hw_s *self, u32 *data, u32 len)\n+static int aq_fw2x_set_eeprom(struct aq_hw_s *self, int dev_addr, u32 *data, u32 len)\n {\n \tstruct smbus_write_request request;\n \tu32 mpi_opts, result = 0;\n@@ -551,7 +553,7 @@ static int aq_fw2x_set_eeprom(struct aq_hw_s *self, u32 *data, u32 len)\n \tif (self->fw_ver_actual < HW_ATL_FW_FEATURE_EEPROM)\n \t\treturn -EOPNOTSUPP;\n \n-\trequest.device_id = SMBUS_DEVICE_ID;\n+\trequest.device_id = dev_addr;\n \trequest.address = 0;\n \trequest.length = len;\n \n@@ -572,15 +574,15 @@ static int aq_fw2x_set_eeprom(struct aq_hw_s *self, u32 *data, u32 len)\n \tif (err < 0)\n \t\treturn err;\n \n-\t/* Toggle 0x368.SMBUS_WRITE_REQUEST bit */\n+\t/* Toggle 0x368.CAPS_LO_SMBUS_WRITE bit */\n \tmpi_opts = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR);\n-\tmpi_opts ^= SMBUS_WRITE_REQUEST;\n+\tmpi_opts ^= BIT(CAPS_LO_SMBUS_WRITE);\n \n \taq_hw_write_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR, mpi_opts);\n \n \t/* Wait until REQUEST_BIT matched in 0x370 */\n \tAQ_HW_WAIT_FOR((aq_hw_read_reg(self, HW_ATL_FW2X_MPI_STATE_ADDR) &\n-\t\tSMBUS_WRITE_REQUEST) == (mpi_opts & SMBUS_WRITE_REQUEST),\n+\t\tBIT(CAPS_LO_SMBUS_WRITE)) == (mpi_opts & (BIT(CAPS_LO_SMBUS_WRITE))),\n \t\t10U, 10000U);\n \n \tif (err < 0)\n",
    "prefixes": [
        "05/10"
    ]
}