get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 44675,
    "url": "http://patches.dpdk.org/api/patches/44675/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1536838528-11800-19-git-send-email-igor.russkikh@aquantia.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<1536838528-11800-19-git-send-email-igor.russkikh@aquantia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1536838528-11800-19-git-send-email-igor.russkikh@aquantia.com",
    "date": "2018-09-13T11:35:26",
    "name": "[v2,19/21] net/atlantic: device MTU and statuses",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "b16e375f7c249cf0cf7899ed9d4e7ffb3a827eb9",
    "submitter": {
        "id": 1124,
        "url": "http://patches.dpdk.org/api/people/1124/?format=api",
        "name": "Igor Russkikh",
        "email": "igor.russkikh@aquantia.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1536838528-11800-19-git-send-email-igor.russkikh@aquantia.com/mbox/",
    "series": [
        {
            "id": 1307,
            "url": "http://patches.dpdk.org/api/series/1307/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1307",
            "date": "2018-09-13T11:35:08",
            "name": "[v2,01/21] net/atlantic: atlantic PMD driver skeleton",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/1307/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/44675/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/44675/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 3BE5D1B062;\n\tThu, 13 Sep 2018 13:36:24 +0200 (CEST)",
            "from NAM01-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam01on0072.outbound.protection.outlook.com [104.47.32.72])\n\tby dpdk.org (Postfix) with ESMTP id 306645B38\n\tfor <dev@dpdk.org>; Thu, 13 Sep 2018 13:36:14 +0200 (CEST)",
            "from ubuntubox.rdc.aquantia.com (95.79.108.179) by\n\tBLUPR0701MB1650.namprd07.prod.outlook.com (2a01:111:e400:58c6::20)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1143.15;\n\tThu, 13 Sep 2018 11:36:12 +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=jPGXZhs59LQWRBtOPOBJj/Fo2VZoJLHficS0MkTP+jo=;\n\tb=DFq0JgMMaZgH+7+B6jHQtVrk5l9mdH4yCvLcM7PPjk+NdcC+vNrvzh3XPT8m4G+4x6R2exLmmjtDUtxIi1AjIm2WuF0nuhVBf6vkDUhREGfOJwv7G2qBUuw3gW9yjTOnin8F4/6YnqD3a7OHSkxr/XVDxLZ75bXAR3/e7c9QJrQ=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Igor.Russkikh@aquantia.com; ",
        "From": "Igor Russkikh <igor.russkikh@aquantia.com>",
        "To": "dev@dpdk.org",
        "Cc": "pavel.belous@aquantia.com,\n\tigor.russkikh@aquantia.com",
        "Date": "Thu, 13 Sep 2018 14:35:26 +0300",
        "Message-Id": "<1536838528-11800-19-git-send-email-igor.russkikh@aquantia.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1536838528-11800-1-git-send-email-igor.russkikh@aquantia.com>",
        "References": "<1536838528-11800-1-git-send-email-igor.russkikh@aquantia.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[95.79.108.179]",
        "X-ClientProxiedBy": "VI1PR0202CA0026.eurprd02.prod.outlook.com\n\t(2603:10a6:803:14::39) To BLUPR0701MB1650.namprd07.prod.outlook.com\n\t(2a01:111:e400:58c6::20)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "5f322591-b77c-43a4-d9f7-08d6196d1bde",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020);\n\tSRVR:BLUPR0701MB1650; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BLUPR0701MB1650;\n\t3:v4Kt2e/ooIhBAtn09Qp+JvwrmK/wgzuu1pFRfN5YhkBJQlQEAoOlf156NppeynHcghclqtWjqo0bUMHdcBi+0Th5RUbqd44ZfrkaIc3RU6Te9GgixU9CwFzoSCW4IrqA84el2AhTB33Nt5CQS73Col+7xV+JtHWWvpzb4vrecHBavsk0+XVWSUYNhm+oV8cuqOCpMFGUBDcXpZEPqv6b6oE/DCp4YsMdfpRJv5dS6R8VLRCz2LWcXAOnDF1xA2NA;\n\t25:+XDTkRY56WX2ybVlw/sdYjEQygt1Xn9/iHKY3l88PqBrud1g7z2iWY+DX1JX6c7b42p0QhKtES1pkmk9yN6+m4g+FxcNLjMA2d0v6XYArHOzBS0jdhlmUyQWU9Ero9H/JFnCiiTUc5V/ywSkW5cCgdsRuFcwtHOMLpFTWIlWA/uGWMdOUJfjZx7s97yBoJrmaNKaW7GNhS6YHYfJvXv5Y67TagJGajTdT7OqdAM2ZzjvL+jLbAUgBQvft5eoucvzTQz6aBHpx3X7OleYwzxOHP1sYspCD2C2OEcdA3YK9fRMWMEXPLas8Sk+v0qz1lW0DqD4FVgvE5l9uqMln8RIFGKiiVeakPeN45VwArjhmOM=;\n\t31:13AlrdBG8EwteZiifrn7zIGDyaOsubGRboq2nI5qAhC1154ae3ptpXoBRxcf9pymGz9Zcm66dA586O0nBRc6fbLD+NFt+XmixeFX6Xe0ALHo0tX/cfP8D2eDd3DzPEB2NGVuWJBZUWcaxuNKIOm01dx+1qNP4XhVnu2uqZHFeyqvJdlHwz1dPBVmAQumMY3smVIxyn7ZwA/gxE27Ro5Pc03/51afmS2aDEO7AM6rafY=",
            "1; BLUPR0701MB1650;\n\t20:F6q60sqbSnKOErkxpX+51tixPpsgl/YtY8gQRPSrQAmQfXKI+qibdKwzpVTd3rGvwcLvVsoCiyt1NYnfGkrTPzYoft2Zi9uLlQOpKiSNhfb7y/GmI7LgIgdpUgNhqQXy6/MGGQ3Z5EQJVvmasA+p0G3VpW/iSmp3LaBZqOgDqLKlYd5yqg0sakd+cQxLfQgUpOs+oiQD1S3QDb1tjE1/HsnnkqpaH2vhBXvxPNZ/h1rQYpYtNK0gP+hOc+Zmva9dlgbD8odfIlkqjiClzzx5Cph0V7KZHTlRDRFnh3Fz+5sEvbJtGzicuN6K6xbHwpXnT4laoqFn2cXhvLm7yg3/jPQaYT84rNut1fF+oX6/WH0/Jji8S2HWnty0oXYThf47JcYhtU8RXNEaoHOud0stqdPJnuBAHZvNGQ6xOxGW8yz2YjDX4NZI6NOONGeBaKrSDU4u8QpMmhH79ZjTrALS7vslBvgl9U8/YtTViQ7V1Zh0eq7zkjTtJws5xYhenWUm;\n\t4:cBL9Aw8LI9P3u6WLNTpkYuexYdyCMq0vLPWqie5+ddLg42mejFj4xOpa6y4C9DJ9DoHzPCm4xIAh73aT/0DGbS4VIKrN1E4BZ8hCrlTL0Fw8kktRJ+g5HL3nK6xk3CV8E8nH1aRboew62c/ewXlmAh5uWM2xFqr2e37j6dX44lcAXfA9DoPs+SQWDO3+ag1SZoq1vK72zBgjWCx3X/mFZSlxpnQ8TmmG6U/p7kZae22Qtkzt+2Wl9kKr/ruFdB1Mb5EJzj8RBitvp97m+XrDXQ==",
            "=?us-ascii?Q?1; BLUPR0701MB1650;\n\t23:LDGQ40AqLVl11kQfiNSqsRBB8/HXy2E88USx7Oa?=\n\tLXQnHxerB/K2l5tiSXHrUo44P2cveC6RMvbh9ED/xPdLgjpBMluIuPgSPrjbmE30LdybfztYDef2aFv3FBVIrq5TWVsIv1jxksL5GQowXpPYMLUh7Ozf77Nyf2SXJNOk3/wLxeiDRf+6ps24eNKj7z0p7neLSPZ4D/SrKaNZOhziYA0+90ZLs6ZM4U8AYOsGCo2mFzIXoK+lriv/pxYLLNheNv3BBajPTVt36Ye+W7ky9GF7VZFHFDnetqSjVq1GzwvBtTEkHxn4Ytj9SQ+apAONNLeFDAUNEFEgTF//nxLNRcjun7Vvz2QrNWZCOUAk6khnpqooRWeiWoeLzOZ3wnzFEHYOnA6qS3NyNpj6uEPFtjxc14EryNOKT3VjPCOZohke/g6/qXEkrMQr89WHVs0NUg+gc1JXTLPaxXxY0qJKXInT9UkAO8ep9W0q5h8yGkFj4sLmUHmBj9SL2Jpq0lhr20Nq6pUvcXSZmqnpIR+PtGG7PMhjcgpWEB++a57dm+h2qMohWvPH+yDL90qrJEBUKO8hEhQOqBquurSoWGmpZeG+arGfKYfTyU8gvp48kl+jUM7xhKS8FhCqeG7XsGkLXe9MupM/MaRoK64OumCzBCY1b1nrfjwqlTFB2lm1CI4/N2rWfL8YxJUxvgfAyjijPRk+PmyjPqSzmdQO8te0NOL7R7cDsEx46OPMOQVmnz0G6F4oibZkbvGdUB63HyEU+QpMrHtwYMjWjL6otP/rzYYQC25obKIeZtBwczGwT3iOsJfOtj0vHrfEQgfFHvRiWNn08DxDsciZfrU0MlldTpbij0Dlr/k0utsODBKb8eiCDtii4t6kmHL6I5FENnCyVviu9jeSdKvmZfTvlX3pmiJi+JC8POXFWUq0pX5OrIa9gwMBSbPGoKLhn2Lw5/T2etFbryytolgut5P3nltLZz7Hmzu1ZXlw+rM3bA1dsR25BMFNtMP5xzSiBH4v4qobihwE8voad54uXoJ/pcR5O7JMzwuTfw0rAAz/a6EUOnFQJRR1VrdGxYXz0fKa0g1WoX+jiNQP0ChIXA0sO+vEn0C6lxaNDYJjYlKsZ6pQzdXYrFtZvwe/26V9GtLzdrSVzq8+4HA1OaLdC5zOy/8TbXMh7dYKoJuvLS2/WkLONoc5LZXzClxZfQb86rYip9Jspji2F3FIeRSBL5KLThc5P6EfN0vMuTGpqgv5KCeVLZs7ib6Ib9PUbuS33KjHwpyQZ",
            "1; BLUPR0701MB1650;\n\t6:0K9dTp5OQAcuRv4bmJHKiHx8PH+SmPiEK3JSvmB5gzYBWSVF4dOyQJrquuQmXZsAf3oCfasxHPudXkMPDnQDwes/ucqvNuO4q/mKeJu1VTsMqD/xJ8j7H6O6m5RyvgVAiLw4eT/Daw+9N4e1GZ3I5Xh5lgkN6MRqW0KiRErMNQaDABLhFhH6lLghpvcRn4iFx75OlVuDWzG8fuLlvbSeVDW9/Izy+8UO4IvkVKM2NOaqZBez1IUQNcoghC2+eHb8etnPECBb5c0aIjMoG7/zhI9VHDpfl54HzEnOcd1dK9D3A/DAxhj1NrTxzwrIrxbhb9Xoa+f9pJpB0ZMc3NRGhZceUoyC24F1CULfodXD2JLf/EMH2QsD2rNY3waxMNgqfWl6REaplSYNRQZFQoNEGHwPdXPLiBL1R8A8bycdyREgoUdcrl0mlNqS0YYau/ZmbbjyvIWX4UARC6UizTzQwg==;\n\t5:LlRSD8y8l86ZHG122rEbkEj4RsOx70ibFTw0YQvXC8FbpMS5rSH4YX/z+qNjy2WdfrUrGf9DJHLzZm2EAqQUY8NJP/62Ln+4Iske0g6IpHWOZrPlpn9hMm5cgNlwLdlcY7iM/5VOvZIO+1QjAjpErbl/z+AVdaPyF/g9FRawgI8=;\n\t7:RIBNmgdtHuCa5TNb/+21YgIIHlRjb5/Egx2aodZF8qELZoDs7J2HFyRNZYCaGHDz85Xaej6Jsyx44/BEm8WHrw12deamc4FsCfVKAUHUh3Z5sdCMo2V+4d796bjemymZSOWLD3GH/mtsPNjP0lTJCJ7K9B6ww4uKwFrzhpJQ+ROFlxLdB1tuor5Zam9IrIly/3xQp1hzpjvHmP52EcnwEHq+Ah7cMQHudwCo5PA7fRVAVu5VXfGrXmLGAaewQYK1"
        ],
        "X-MS-TrafficTypeDiagnostic": "BLUPR0701MB1650:",
        "X-Microsoft-Antispam-PRVS": "<BLUPR0701MB16501356C9A25FE5EFB9763D981A0@BLUPR0701MB1650.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231311)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201708071742011)(7699050);\n\tSRVR:BLUPR0701MB1650; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1650; ",
        "X-Forefront-PRVS": "07943272E1",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(39840400004)(366004)(396003)(376002)(136003)(346002)(199004)(189003)(6666003)(6916009)(97736004)(8936002)(68736007)(25786009)(50226002)(81166006)(81156014)(4326008)(107886003)(6486002)(51416003)(2906002)(53936002)(5660300001)(36756003)(86362001)(316002)(52116002)(8676002)(16586007)(7736002)(305945005)(11346002)(446003)(476003)(956004)(47776003)(72206003)(66066001)(44832011)(478600001)(486006)(186003)(26005)(16526019)(14444005)(386003)(48376002)(2351001)(106356001)(2361001)(2616005)(3846002)(105586002)(50466002)(7696005)(6116002)(76176011);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1650;\n\tH:ubuntubox.rdc.aquantia.com; \n\tFPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: aquantia.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "TCAN8/FYQX60tQkAQzTyfiRP1pLo5bmVUljLrZoMonh/sDpqp5GsV9l1zvRslI9H1rpKXOMproRzGfC3BRshIxdbTpARkNhBO8WcDXRZI5Ni3cXZdzoTIEIJpa8RAn30HxTbKVyC95hPQ8sVvaOpS5jrT5j7hg6J+fTVbxn5hyrbRjFtwUNYjhhwJN7KdQS5kTPdP5MNV0qi0MIaj19Xk15Mn1VV+jZU51bjCa4nJiHq5YZ7fibAnVSpteRjQ5cD4ThgMnFDu9Aav2bzAbpJ2/1Gg39G9HZsqxlNHz3sa+8A0WjGnvdTOhG7T/BpY6fSAdcY0h7GFz6vgRg21dMbQkoOacf6esRC1G6OvH+Fvvw=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "aquantia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "13 Sep 2018 11:36:12.0305\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "5f322591-b77c-43a4-d9f7-08d6196d1bde",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "83e2e134-991c-4ede-8ced-34d47e38e6b1",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BLUPR0701MB1650",
        "Subject": "[dpdk-dev] [PATCH v2 19/21] net/atlantic: device MTU and statuses",
        "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\nSigned-off-by: Igor Russkikh <igor.russkikh@aquantia.com>\n---\n drivers/net/atlantic/atl_ethdev.c | 162 ++++++++++++++++++++++++++++++++++++++\n 1 file changed, 162 insertions(+)",
    "diff": "diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c\nindex 7ff1126d7..01700b4ad 100644\n--- a/drivers/net/atlantic/atl_ethdev.c\n+++ b/drivers/net/atlantic/atl_ethdev.c\n@@ -78,11 +78,15 @@ static int atl_dev_queue_stats_mapping_set(struct rte_eth_dev *eth_dev,\n \t\t\t\t\t     uint8_t is_rx);\n \n \n+static int atl_fw_version_get(struct rte_eth_dev *dev, char *fw_version,\n+\t\t\t      size_t fw_size);\n static void atl_dev_info_get(struct rte_eth_dev *dev,\n \t\t\t       struct rte_eth_dev_info *dev_info);\n \n static const uint32_t *atl_dev_supported_ptypes_get(struct rte_eth_dev *dev);\n \n+static int atl_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);\n+\n \n /* VLAN stuff */\n static int atl_vlan_filter_set(struct rte_eth_dev *dev,\n@@ -116,6 +120,9 @@ static int atl_flow_ctrl_get(struct rte_eth_dev *dev,\n \t\t\t       struct rte_eth_fc_conf *fc_conf);\n static int atl_flow_ctrl_set(struct rte_eth_dev *dev,\n \t\t\t       struct rte_eth_fc_conf *fc_conf);\n+\n+static void atl_dev_link_status_print(struct rte_eth_dev *dev);\n+\n /* Interrupts */\n static int atl_dev_rxq_interrupt_setup(struct rte_eth_dev *dev);\n static int atl_dev_lsc_interrupt_setup(struct rte_eth_dev *dev, uint8_t on);\n@@ -195,6 +202,20 @@ static struct rte_pci_driver rte_atl_pmd = {\n \t.remove = eth_atl_pci_remove,\n };\n \n+#define ATL_RX_OFFLOADS (DEV_RX_OFFLOAD_VLAN_STRIP \\\n+\t\t\t| DEV_RX_OFFLOAD_IPV4_CKSUM \\\n+\t\t\t| DEV_RX_OFFLOAD_UDP_CKSUM \\\n+\t\t\t| DEV_RX_OFFLOAD_TCP_CKSUM \\\n+\t\t\t| DEV_RX_OFFLOAD_JUMBO_FRAME \\\n+\t\t\t| DEV_RX_OFFLOAD_CRC_STRIP)\n+\n+#define ATL_TX_OFFLOADS (DEV_TX_OFFLOAD_VLAN_INSERT \\\n+\t\t\t| DEV_TX_OFFLOAD_IPV4_CKSUM \\\n+\t\t\t| DEV_TX_OFFLOAD_UDP_CKSUM \\\n+\t\t\t| DEV_TX_OFFLOAD_TCP_CKSUM \\\n+\t\t\t| DEV_TX_OFFLOAD_TCP_TSO \\\n+\t\t\t| DEV_TX_OFFLOAD_MULTI_SEGS)\n+\n static const struct rte_eth_desc_lim rx_desc_lim = {\n \t.nb_max = ATL_MAX_RING_DESC,\n \t.nb_min = ATL_MIN_RING_DESC,\n@@ -263,6 +284,12 @@ static const struct eth_dev_ops atl_eth_dev_ops = {\n \t.xstats_get_names     = atl_dev_xstats_get_names,\n \t.stats_reset\t      = atl_dev_stats_reset,\n \t.xstats_reset\t      = atl_dev_xstats_reset,\n+\t.fw_version_get       = atl_fw_version_get,\n+\t.dev_infos_get\t      = atl_dev_info_get,\n+\t.dev_supported_ptypes_get = atl_dev_supported_ptypes_get,\n+\n+\t.mtu_set\t      = atl_dev_mtu_set,\n+\n \t/* VLAN */\n \t.vlan_filter_set      = atl_vlan_filter_set,\n \t.vlan_offload_set     = atl_vlan_offload_set,\n@@ -664,6 +691,7 @@ atl_dev_start(struct rte_eth_dev *dev)\n \treturn 0;\n \n error:\n+\tPMD_INIT_LOG(ERR, \"failure in atl_dev_start(): %d\", err);\n \tatl_stop_queues(dev);\n \treturn -EIO;\n }\n@@ -850,6 +878,95 @@ static void\n atl_dev_xstats_reset(struct rte_eth_dev *dev __rte_unused)\n {\n }\n+\n+\n+static int\n+atl_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size)\n+{\n+\tstruct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\tuint32_t fw_ver = 0;\n+\tunsigned int ret = 0;\n+\n+\tret = hw_atl_utils_get_fw_version(hw, &fw_ver);\n+\tif (ret)\n+\t\treturn 0;\n+\n+\tret = snprintf(fw_version, fw_size, \"%u.%u.%u\", fw_ver >> 24,\n+\t\t       (fw_ver >> 16) & 0xFFU, fw_ver & 0xFFFFU);\n+\n+\tret += 1; /* add string null-terminator */\n+\n+\tif (fw_size < ret)\n+\t\treturn ret;\n+\n+\treturn 0;\n+}\n+\n+static void\n+atl_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n+{\n+\tstruct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);\n+\n+\tdev_info->max_rx_queues = AQ_HW_MAX_RX_QUEUES;\n+\tdev_info->max_tx_queues = AQ_HW_MAX_TX_QUEUES;\n+\n+\tdev_info->min_rx_bufsize = 1024;\n+\tdev_info->max_rx_pktlen = HW_ATL_B0_MTU_JUMBO;\n+\tdev_info->max_mac_addrs = HW_ATL_B0_MAC_MAX;\n+\tdev_info->max_vfs = pci_dev->max_vfs;\n+\n+\tdev_info->max_hash_mac_addrs = 0;\n+\tdev_info->max_vmdq_pools = 0;\n+\tdev_info->vmdq_queue_num = 0;\n+\n+\tdev_info->rx_offload_capa = ATL_RX_OFFLOADS;\n+\n+\tdev_info->tx_offload_capa = ATL_TX_OFFLOADS;\n+\n+\n+\tdev_info->default_rxconf = (struct rte_eth_rxconf) {\n+\t\t.rx_free_thresh = ATL_DEFAULT_RX_FREE_THRESH,\n+\t};\n+\n+\tdev_info->default_txconf = (struct rte_eth_txconf) {\n+\t\t.tx_free_thresh = ATL_DEFAULT_TX_FREE_THRESH,\n+\t};\n+\n+\tdev_info->rx_desc_lim = rx_desc_lim;\n+\tdev_info->tx_desc_lim = tx_desc_lim;\n+\n+\tdev_info->hash_key_size = HW_ATL_B0_RSS_HASHKEY_BITS / 8;\n+\tdev_info->reta_size = HW_ATL_B0_RSS_REDIRECTION_MAX;\n+\tdev_info->flow_type_rss_offloads = ATL_RSS_OFFLOAD_ALL;\n+\n+\tdev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G;\n+\tdev_info->speed_capa |= ETH_LINK_SPEED_100M;\n+\tdev_info->speed_capa |= ETH_LINK_SPEED_2_5G;\n+\tdev_info->speed_capa |= ETH_LINK_SPEED_5G;\n+}\n+\n+static const uint32_t *\n+atl_dev_supported_ptypes_get(struct rte_eth_dev *dev)\n+{\n+\tstatic const uint32_t ptypes[] = {\n+\t\tRTE_PTYPE_L2_ETHER,\n+\t\tRTE_PTYPE_L2_ETHER_ARP,\n+\t\tRTE_PTYPE_L2_ETHER_VLAN,\n+\t\tRTE_PTYPE_L3_IPV4,\n+\t\tRTE_PTYPE_L3_IPV6,\n+\t\tRTE_PTYPE_L4_TCP,\n+\t\tRTE_PTYPE_L4_UDP,\n+\t\tRTE_PTYPE_L4_SCTP,\n+\t\tRTE_PTYPE_L4_ICMP,\n+\t\tRTE_PTYPE_UNKNOWN\n+\t};\n+\n+\tif (dev->rx_pkt_burst == atl_recv_pkts)\n+\t\treturn ptypes;\n+\n+\treturn NULL;\n+}\n+\n /* return 0 means link status changed, -1 means not changed */\n static int\n atl_dev_link_update(struct rte_eth_dev *dev, int wait __rte_unused)\n@@ -1275,6 +1392,38 @@ atl_set_default_mac_addr(struct rte_eth_dev *dev, struct ether_addr *addr)\n \treturn 0;\n }\n \n+static bool\n+is_device_supported(struct rte_eth_dev *dev, struct rte_pci_driver *drv)\n+{\n+\tif (strcmp(dev->device->driver->name, drv->driver.name))\n+\t\treturn false;\n+\n+\treturn true;\n+}\n+\n+bool\n+is_atl_supported(struct rte_eth_dev *dev)\n+{\n+\treturn is_device_supported(dev, &rte_atl_pmd);\n+}\n+\n+static int\n+atl_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n+{\n+\tstruct rte_eth_dev_info dev_info;\n+\tuint32_t frame_size = mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;\n+\n+\tatl_dev_info_get(dev, &dev_info);\n+\n+\tif ((mtu < ETHER_MIN_MTU) || (frame_size > dev_info.max_rx_pktlen))\n+\t\treturn -EINVAL;\n+\n+\t/* update max frame size */\n+\tdev->data->dev_conf.rxmode.max_rx_pkt_len = frame_size;\n+\n+\treturn 0;\n+}\n+\n static int\n atl_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)\n {\n@@ -1533,3 +1682,16 @@ atl_rss_hash_conf_get(struct rte_eth_dev *dev,\n RTE_PMD_REGISTER_PCI(net_atlantic, rte_atl_pmd);\n RTE_PMD_REGISTER_PCI_TABLE(net_atlantic, pci_id_atl_map);\n RTE_PMD_REGISTER_KMOD_DEP(net_atlantic, \"* igb_uio | uio_pci_generic\");\n+\n+RTE_INIT(atl_init_log);\n+static void\n+atl_init_log(void)\n+{\n+\tatl_logtype_init = rte_log_register(\"pmd.atlantic.init\");\n+\tif (atl_logtype_init >= 0)\n+\t\trte_log_set_level(atl_logtype_init, RTE_LOG_DEBUG);\n+\tatl_logtype_driver = rte_log_register(\"pmd.atlantic.driver\");\n+\tif (atl_logtype_driver >= 0)\n+\t\trte_log_set_level(atl_logtype_driver, RTE_LOG_DEBUG);\n+}\n+\n",
    "prefixes": [
        "v2",
        "19/21"
    ]
}