get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 44495,
    "url": "http://patches.dpdk.org/api/patches/44495/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1536572016-18134-24-git-send-email-arybchenko@solarflare.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": "<1536572016-18134-24-git-send-email-arybchenko@solarflare.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1536572016-18134-24-git-send-email-arybchenko@solarflare.com",
    "date": "2018-09-10T09:33:22",
    "name": "[23/37] net/sfc/base: fix out of bounds read when dereferencing sdup",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "e63b660695d7bfffb997f3da99968b5c56f99bcb",
    "submitter": {
        "id": 607,
        "url": "http://patches.dpdk.org/api/people/607/?format=api",
        "name": "Andrew Rybchenko",
        "email": "arybchenko@solarflare.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/1536572016-18134-24-git-send-email-arybchenko@solarflare.com/mbox/",
    "series": [
        {
            "id": 1244,
            "url": "http://patches.dpdk.org/api/series/1244/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1244",
            "date": "2018-09-10T09:33:01",
            "name": "net/sfc: update base driver",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/1244/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/44495/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/44495/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 31788199AE;\n\tMon, 10 Sep 2018 11:34:39 +0200 (CEST)",
            "from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com\n\t[67.231.154.164]) by dpdk.org (Postfix) with ESMTP id A64D94C94;\n\tMon, 10 Sep 2018 11:33:54 +0200 (CEST)",
            "from webmail.solarflare.com (webmail.solarflare.com\n\t[12.187.104.26])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby mx1-us1.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with\n\tESMTPS id 2C6CC780055; Mon, 10 Sep 2018 09:33:53 +0000 (UTC)",
            "from ocex03.SolarFlarecom.com (10.20.40.36) by\n\tocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server\n\t(TLS) id 15.0.1395.4; Mon, 10 Sep 2018 02:33:48 -0700",
            "from opal.uk.solarflarecom.com (10.17.10.1) by\n\tocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server\n\t(TLS) id\n\t15.0.1395.4 via Frontend Transport; Mon, 10 Sep 2018 02:33:48 -0700",
            "from ukv-loginhost.uk.solarflarecom.com\n\t(ukv-loginhost.uk.solarflarecom.com [10.17.10.39])\n\tby opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id\n\tw8A9XkVF023836; Mon, 10 Sep 2018 10:33:46 +0100",
            "from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1])\n\tby ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id\n\t65E4E1626D2; Mon, 10 Sep 2018 10:33:46 +0100 (BST)"
        ],
        "X-Virus-Scanned": "Proofpoint Essentials engine",
        "From": "Andrew Rybchenko <arybchenko@solarflare.com>",
        "To": "<dev@dpdk.org>",
        "CC": "Gautam Dawar <gdawar@solarflare.com>, <stable@dpdk.org>",
        "Date": "Mon, 10 Sep 2018 10:33:22 +0100",
        "Message-ID": "<1536572016-18134-24-git-send-email-arybchenko@solarflare.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1536572016-18134-1-git-send-email-arybchenko@solarflare.com>",
        "References": "<1536572016-18134-1-git-send-email-arybchenko@solarflare.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-TM-AS-Product-Ver": "SMEX-12.5.0.1300-8.5.1010-24084.005",
        "X-TM-AS-Result": "No-19.022200-4.000000-10",
        "X-TMASE-MatchedRID": "g0RAsMBKAeu6aFLiZzisczbN0t/c2qF2bd6rGhWOAwTOBI5s8K+rAE/3\n\tZkXeY1OAwlkwAVJaw7Fa6qDGYsfeAkJ473PfmsyDnhHKNOYbLL5zd7C7BtJobqHsuJrXPMVVvph\n\tVFiQ+RgJBHv20aQGKC+EqBpStqQosJjR5Quw0FeUD2WXLXdz+AWf6wD367Vgt8/UAbcvLdNtFHk\n\tYRmOFTHU/UjN1OQC+yMkiWYsDskLZI5aNiVPKgsYNoF/xJo8tU3FYvKmZiVnNLBxm1Vv3RsBgac\n\tlsUCdmmO1qiNiyNtpgl12g4Gblsk40GdWKgGbBhvXziqW3HIYRo3Yq5PCwLApz2ZypjxOSYi4o1\n\tEPiWBhfkli+umCl61tbRbAp16X5W+W6jaQaMCQFzEZB85kesh3G54hbZ8q7IHGRbGDv0rgjejMl\n\tFftvg2WJz/nKtphYOQnWnrlqnQeGPU5OGrpmnoENesq3VUbccHIbSBxtZLpbIvQIyugvKdW22e6\n\tGsqEr8H2WRIs+NMkqdl2t7D5Swfe7P19xGPzOvUIhTTahb7dU0AKed0u9fBwovTuUN8qrggXOqt\n\tCBDH5D0SF5a6kIwCwXchRDkIagZFohKFQUjhh2vnWBILruGlcp3ldD85yBL/PPfkOZOJI2CwglX\n\t01Zi1n8Hbsrhg5JcdOlFzjFv9EeQtB7e4erB3ZA6S0SjvcYU1Y9FSFmlHACbKItl61J/yZ+inTK\n\t0bC9eKrauXd3MZDUD/dHyT/Xh7Q==",
        "X-TM-AS-User-Approved-Sender": "No",
        "X-TM-AS-User-Blocked-Sender": "No",
        "X-TMASE-Result": "10--19.022200-4.000000",
        "X-TMASE-Version": "SMEX-12.5.0.1300-8.5.1010-24084.005",
        "X-MDID": "1536572033-f9dDZPL7UNKo",
        "Subject": "[dpdk-dev] [PATCH 23/37] net/sfc/base: fix out of bounds read when\n\tdereferencing sdup",
        "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: Gautam Dawar <gdawar@solarflare.com>\n\nIntroduce and use macro to make sure that MCDI buffers allocated\non stack are rounded up properly.\n\nFixes: 6f619653b9b1 (\"net/sfc/base: import MCDI implementation\")\nFixes: f7dc06bf35f2 (\"net/sfc/base: import 5xxx/6xxx family support\")\nFixes: e7cd430c864f (\"net/sfc/base: import SFN7xxx family support\")\nFixes: 1dae25112a54 (\"net/sfc/base: import built-in selftest\")\nFixes: 0a7864349106 (\"net/sfc/base: import PHY statistics\")\nFixes: 8c7c723dfe7c (\"net/sfc/base: import MAC statistics\")\nFixes: 5935cd8c47d3 (\"net/sfc/base: import RSS support\")\nFixes: 9ee64bd404fc (\"net/sfc/base: import loopback control\")\nFixes: dfb3b1ce15f6 (\"net/sfc/base: import monitors access via MCDI\")\nFixes: d96a34d165b1 (\"net/sfc/base: import NVRAM support\")\nFixes: 05fce2ce8451 (\"net/sfc/base: import libefx licensing\")\nFixes: ba6afee9a81e (\"net/sfc/base: add advanced function to extract FW version\")\nFixes: c7815c1d1f20 (\"net/sfc/base: use proper MCDI command for encap filters\")\nFixes: 17551f6dffcc (\"net/sfc/base: add API to control UDP tunnel ports\")\nFixes: eff9b666eae5 (\"net/sfc/base: move RxDP config get to EF10 NIC code\")\nFixes: 4aab7f07a645 (\"net/sfc/base: refactor EF10 get datapath capabilities\")\nFixes: 480a13044b8b (\"net/sfc/base: support FW subvariant choice\")\nFixes: 6f60cc4a78b6 (\"net/sfc/base: support equal stride super-buffer Rx mode\")\nFixes: 9a733758c046 (\"net/sfc/base: support MARK and FLAG actions in filters\")\nCc: stable@dpdk.org\n\nSigned-off-by: Gautam Dawar <gdawar@solarflare.com>\nSigned-off-by: Andrew Rybchenko <arybchenko@solarflare.com>\n---\n drivers/net/sfc/base/ef10_ev.c     | 28 ++++-----\n drivers/net/sfc/base/ef10_filter.c | 15 ++---\n drivers/net/sfc/base/ef10_intr.c   |  5 +-\n drivers/net/sfc/base/ef10_mac.c    | 20 +++----\n drivers/net/sfc/base/ef10_nic.c    | 93 ++++++++++++------------------\n drivers/net/sfc/base/ef10_phy.c    | 19 +++---\n drivers/net/sfc/base/ef10_rx.c     | 35 +++++------\n drivers/net/sfc/base/ef10_tx.c     | 10 ++--\n drivers/net/sfc/base/efx_lic.c     | 39 +++++--------\n drivers/net/sfc/base/efx_mcdi.c    | 82 +++++++++++---------------\n drivers/net/sfc/base/efx_mcdi.h    | 11 ++++\n drivers/net/sfc/base/efx_nic.c     |  5 +-\n drivers/net/sfc/base/efx_nvram.c   | 40 +++++--------\n drivers/net/sfc/base/efx_tunnel.c  |  6 +-\n drivers/net/sfc/base/mcdi_mon.c    | 17 +++---\n drivers/net/sfc/base/siena_mac.c   |  9 ++-\n drivers/net/sfc/base/siena_nic.c   |  5 +-\n drivers/net/sfc/base/siena_nvram.c |  5 +-\n drivers/net/sfc/base/siena_phy.c   | 28 ++++-----\n 19 files changed, 199 insertions(+), 273 deletions(-)",
    "diff": "diff --git a/drivers/net/sfc/base/ef10_ev.c b/drivers/net/sfc/base/ef10_ev.c\nindex 7f89a7bf0..287550605 100644\n--- a/drivers/net/sfc/base/ef10_ev.c\n+++ b/drivers/net/sfc/base/ef10_ev.c\n@@ -73,11 +73,10 @@ efx_mcdi_set_evq_tmr(\n \t__in\t\tuint32_t timer_ns)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_SET_EVQ_TMR_IN_LEN,\n-\t\t\t    MC_CMD_SET_EVQ_TMR_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_SET_EVQ_TMR_IN_LEN,\n+\t\tMC_CMD_SET_EVQ_TMR_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SET_EVQ_TMR;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_SET_EVQ_TMR_IN_LEN;\n@@ -123,9 +122,9 @@ efx_mcdi_init_evq(\n \t__in\t\tboolean_t low_latency)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[\n-\t    MAX(MC_CMD_INIT_EVQ_IN_LEN(EFX_EVQ_NBUFS(EFX_EVQ_MAXNEVS)),\n-\t\tMC_CMD_INIT_EVQ_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload,\n+\t\tMC_CMD_INIT_EVQ_IN_LEN(EFX_EVQ_NBUFS(EFX_EVQ_MAXNEVS)),\n+\t\tMC_CMD_INIT_EVQ_OUT_LEN);\n \tefx_qword_t *dma_addr;\n \tuint64_t addr;\n \tint npages;\n@@ -140,7 +139,6 @@ efx_mcdi_init_evq(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_INIT_EVQ;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_INIT_EVQ_IN_LEN(npages);\n@@ -260,9 +258,9 @@ efx_mcdi_init_evq_v2(\n \t__in\t\tuint32_t flags)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[\n-\t\tMAX(MC_CMD_INIT_EVQ_V2_IN_LEN(EFX_EVQ_NBUFS(EFX_EVQ_MAXNEVS)),\n-\t\t    MC_CMD_INIT_EVQ_V2_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload,\n+\t\tMC_CMD_INIT_EVQ_V2_IN_LEN(EFX_EVQ_NBUFS(EFX_EVQ_MAXNEVS)),\n+\t\tMC_CMD_INIT_EVQ_V2_OUT_LEN);\n \tboolean_t interrupting;\n \tunsigned int evq_type;\n \tefx_qword_t *dma_addr;\n@@ -277,7 +275,6 @@ efx_mcdi_init_evq_v2(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_INIT_EVQ;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_INIT_EVQ_V2_IN_LEN(npages);\n@@ -384,11 +381,10 @@ efx_mcdi_fini_evq(\n \t__in\t\tuint32_t instance)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_FINI_EVQ_IN_LEN,\n-\t\t\t    MC_CMD_FINI_EVQ_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_FINI_EVQ_IN_LEN,\n+\t\tMC_CMD_FINI_EVQ_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_FINI_EVQ;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_FINI_EVQ_IN_LEN;\n@@ -603,8 +599,8 @@ efx_mcdi_driver_event(\n \t__in\t\tefx_qword_t data)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_DRIVER_EVENT_IN_LEN,\n-\t\t\t    MC_CMD_DRIVER_EVENT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_DRIVER_EVENT_IN_LEN,\n+\t\tMC_CMD_DRIVER_EVENT_OUT_LEN);\n \tefx_rc_t rc;\n \n \treq.emr_cmd = MC_CMD_DRIVER_EVENT;\ndiff --git a/drivers/net/sfc/base/ef10_filter.c b/drivers/net/sfc/base/ef10_filter.c\nindex a4d97f99c..30a4892df 100644\n--- a/drivers/net/sfc/base/ef10_filter.c\n+++ b/drivers/net/sfc/base/ef10_filter.c\n@@ -172,12 +172,11 @@ efx_mcdi_filter_op_add(\n \t__inout\t\tef10_filter_handle_t *handle)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_FILTER_OP_V3_IN_LEN,\n-\t\t\t    MC_CMD_FILTER_OP_EXT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_FILTER_OP_V3_IN_LEN,\n+\t\tMC_CMD_FILTER_OP_EXT_OUT_LEN);\n \tefx_filter_match_flags_t match_flags;\n \tefx_rc_t rc;\n \n-\tmemset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_FILTER_OP;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_FILTER_OP_V3_IN_LEN;\n@@ -376,11 +375,10 @@ efx_mcdi_filter_op_delete(\n \t__inout\t\tef10_filter_handle_t *handle)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_FILTER_OP_EXT_IN_LEN,\n-\t\t\t    MC_CMD_FILTER_OP_EXT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_FILTER_OP_EXT_IN_LEN,\n+\t\tMC_CMD_FILTER_OP_EXT_OUT_LEN);\n \tefx_rc_t rc;\n \n-\tmemset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_FILTER_OP;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_FILTER_OP_EXT_IN_LEN;\n@@ -950,13 +948,12 @@ efx_mcdi_get_parser_disp_info(\n \t__out\t\t\t\tsize_t *list_lengthp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_PARSER_DISP_INFO_IN_LEN,\n-\t\t\t    MC_CMD_GET_PARSER_DISP_INFO_OUT_LENMAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_PARSER_DISP_INFO_IN_LEN,\n+\t\tMC_CMD_GET_PARSER_DISP_INFO_OUT_LENMAX);\n \tsize_t matches_count;\n \tsize_t list_size;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_PARSER_DISP_INFO;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_PARSER_DISP_INFO_IN_LEN;\ndiff --git a/drivers/net/sfc/base/ef10_intr.c b/drivers/net/sfc/base/ef10_intr.c\nindex 1ffe266b1..efa157125 100644\n--- a/drivers/net/sfc/base/ef10_intr.c\n+++ b/drivers/net/sfc/base/ef10_intr.c\n@@ -51,8 +51,8 @@ efx_mcdi_trigger_interrupt(\n \t__in\t\tunsigned int level)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_TRIGGER_INTERRUPT_IN_LEN,\n-\t\t\t    MC_CMD_TRIGGER_INTERRUPT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_TRIGGER_INTERRUPT_IN_LEN,\n+\t\tMC_CMD_TRIGGER_INTERRUPT_OUT_LEN);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||\n@@ -64,7 +64,6 @@ efx_mcdi_trigger_interrupt(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_TRIGGER_INTERRUPT;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_TRIGGER_INTERRUPT_IN_LEN;\ndiff --git a/drivers/net/sfc/base/ef10_mac.c b/drivers/net/sfc/base/ef10_mac.c\nindex c14010732..a4a6d9ec8 100644\n--- a/drivers/net/sfc/base/ef10_mac.c\n+++ b/drivers/net/sfc/base/ef10_mac.c\n@@ -75,11 +75,10 @@ efx_mcdi_vadapter_set_mac(\n {\n \tefx_port_t *epp = &(enp->en_port);\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_VADAPTOR_SET_MAC_IN_LEN,\n-\t\t\t    MC_CMD_VADAPTOR_SET_MAC_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_VADAPTOR_SET_MAC_IN_LEN,\n+\t\tMC_CMD_VADAPTOR_SET_MAC_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_VADAPTOR_SET_MAC;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_VADAPTOR_SET_MAC_IN_LEN;\n@@ -141,11 +140,10 @@ efx_mcdi_mtu_set(\n \t__in\t\tuint32_t mtu)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_SET_MAC_EXT_IN_LEN,\n-\t\t\t    MC_CMD_SET_MAC_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_SET_MAC_EXT_IN_LEN,\n+\t\tMC_CMD_SET_MAC_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SET_MAC;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_SET_MAC_EXT_IN_LEN;\n@@ -178,11 +176,10 @@ efx_mcdi_mtu_get(\n \t__out\t\tsize_t *mtu)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_SET_MAC_EXT_IN_LEN,\n-\t\t\t    MC_CMD_SET_MAC_V2_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_SET_MAC_EXT_IN_LEN,\n+\t\tMC_CMD_SET_MAC_V2_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SET_MAC;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_SET_MAC_EXT_IN_LEN;\n@@ -274,11 +271,10 @@ ef10_mac_reconfigure(\n {\n \tefx_port_t *epp = &(enp->en_port);\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_SET_MAC_IN_LEN,\n-\t\t\t    MC_CMD_SET_MAC_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_SET_MAC_IN_LEN,\n+\t\tMC_CMD_SET_MAC_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SET_MAC;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_SET_MAC_IN_LEN;\ndiff --git a/drivers/net/sfc/base/ef10_nic.c b/drivers/net/sfc/base/ef10_nic.c\nindex 9145c389c..332f6ef81 100644\n--- a/drivers/net/sfc/base/ef10_nic.c\n+++ b/drivers/net/sfc/base/ef10_nic.c\n@@ -20,15 +20,14 @@ efx_mcdi_get_port_assignment(\n \t__out\t\tuint32_t *portp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_PORT_ASSIGNMENT_IN_LEN,\n-\t\t\t    MC_CMD_GET_PORT_ASSIGNMENT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_PORT_ASSIGNMENT_IN_LEN,\n+\t\tMC_CMD_GET_PORT_ASSIGNMENT_OUT_LEN);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD2);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_PORT_ASSIGNMENT;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_PORT_ASSIGNMENT_IN_LEN;\n@@ -67,15 +66,14 @@ efx_mcdi_get_port_modes(\n \t__out_opt\tuint32_t *default_modep)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_PORT_MODES_IN_LEN,\n-\t\t\t    MC_CMD_GET_PORT_MODES_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_PORT_MODES_IN_LEN,\n+\t\tMC_CMD_GET_PORT_MODES_OUT_LEN);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD2);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_PORT_MODES;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_PORT_MODES_IN_LEN;\n@@ -180,13 +178,12 @@ efx_mcdi_vadaptor_alloc(\n \t__in\t\t\tuint32_t port_id)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_VADAPTOR_ALLOC_IN_LEN,\n-\t\t\t    MC_CMD_VADAPTOR_ALLOC_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_VADAPTOR_ALLOC_IN_LEN,\n+\t\tMC_CMD_VADAPTOR_ALLOC_OUT_LEN);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT3U(enp->en_vport_id, ==, EVB_PORT_ID_NULL);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_VADAPTOR_ALLOC;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_VADAPTOR_ALLOC_IN_LEN;\n@@ -219,11 +216,10 @@ efx_mcdi_vadaptor_free(\n \t__in\t\t\tuint32_t port_id)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_VADAPTOR_FREE_IN_LEN,\n-\t\t\t    MC_CMD_VADAPTOR_FREE_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_VADAPTOR_FREE_IN_LEN,\n+\t\tMC_CMD_VADAPTOR_FREE_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_VADAPTOR_FREE;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_VADAPTOR_FREE_IN_LEN;\n@@ -253,15 +249,14 @@ efx_mcdi_get_mac_address_pf(\n \t__out_ecount_opt(6)\tuint8_t mac_addrp[6])\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_MAC_ADDRESSES_IN_LEN,\n-\t\t\t    MC_CMD_GET_MAC_ADDRESSES_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_MAC_ADDRESSES_IN_LEN,\n+\t\tMC_CMD_GET_MAC_ADDRESSES_OUT_LEN);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD2);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_MAC_ADDRESSES;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_MAC_ADDRESSES_IN_LEN;\n@@ -312,15 +307,14 @@ efx_mcdi_get_mac_address_vf(\n \t__out_ecount_opt(6)\tuint8_t mac_addrp[6])\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_VPORT_GET_MAC_ADDRESSES_IN_LEN,\n-\t\t\t    MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_LENMAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_VPORT_GET_MAC_ADDRESSES_IN_LEN,\n+\t\tMC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_LENMAX);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD2);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_VPORT_GET_MAC_ADDRESSES;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_VPORT_GET_MAC_ADDRESSES_IN_LEN;\n@@ -377,15 +371,14 @@ efx_mcdi_get_clock(\n \t__out\t\tuint32_t *dpcpu_freqp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_CLOCK_IN_LEN,\n-\t\t\t    MC_CMD_GET_CLOCK_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_CLOCK_IN_LEN,\n+\t\tMC_CMD_GET_CLOCK_OUT_LEN);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD ||\n \t    enp->en_family == EFX_FAMILY_MEDFORD2);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_CLOCK;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_CLOCK_IN_LEN;\n@@ -435,12 +428,11 @@ efx_mcdi_get_rxdp_config(\n \t__out\t\tuint32_t *end_paddingp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_RXDP_CONFIG_IN_LEN,\n-\t\t\t    MC_CMD_GET_RXDP_CONFIG_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_RXDP_CONFIG_IN_LEN,\n+\t\tMC_CMD_GET_RXDP_CONFIG_OUT_LEN);\n \tuint32_t end_padding;\n \tefx_rc_t rc;\n \n-\tmemset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_RXDP_CONFIG;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_RXDP_CONFIG_IN_LEN;\n@@ -495,11 +487,10 @@ efx_mcdi_get_vector_cfg(\n \t__out_opt\tuint32_t *vf_nvecp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_VECTOR_CFG_IN_LEN,\n-\t\t\t    MC_CMD_GET_VECTOR_CFG_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_VECTOR_CFG_IN_LEN,\n+\t\tMC_CMD_GET_VECTOR_CFG_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_VECTOR_CFG;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_VECTOR_CFG_IN_LEN;\n@@ -545,8 +536,8 @@ efx_mcdi_alloc_vis(\n \t__out\t\tuint32_t *vi_shiftp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_ALLOC_VIS_IN_LEN,\n-\t\t\t    MC_CMD_ALLOC_VIS_EXT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_ALLOC_VIS_IN_LEN,\n+\t\tMC_CMD_ALLOC_VIS_EXT_OUT_LEN);\n \tefx_rc_t rc;\n \n \tif (vi_countp == NULL) {\n@@ -554,7 +545,6 @@ efx_mcdi_alloc_vis(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_ALLOC_VIS;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_ALLOC_VIS_IN_LEN;\n@@ -637,8 +627,8 @@ efx_mcdi_alloc_piobuf(\n \t__out\t\tefx_piobuf_handle_t *handlep)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_ALLOC_PIOBUF_IN_LEN,\n-\t\t\t    MC_CMD_ALLOC_PIOBUF_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_ALLOC_PIOBUF_IN_LEN,\n+\t\tMC_CMD_ALLOC_PIOBUF_OUT_LEN);\n \tefx_rc_t rc;\n \n \tif (handlep == NULL) {\n@@ -646,7 +636,6 @@ efx_mcdi_alloc_piobuf(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_ALLOC_PIOBUF;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_ALLOC_PIOBUF_IN_LEN;\n@@ -685,11 +674,10 @@ efx_mcdi_free_piobuf(\n \t__in\t\tefx_piobuf_handle_t handle)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_FREE_PIOBUF_IN_LEN,\n-\t\t\t    MC_CMD_FREE_PIOBUF_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_FREE_PIOBUF_IN_LEN,\n+\t\tMC_CMD_FREE_PIOBUF_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_FREE_PIOBUF;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_FREE_PIOBUF_IN_LEN;\n@@ -720,11 +708,10 @@ efx_mcdi_link_piobuf(\n \t__in\t\tefx_piobuf_handle_t handle)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_LINK_PIOBUF_IN_LEN,\n-\t\t\t    MC_CMD_LINK_PIOBUF_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_LINK_PIOBUF_IN_LEN,\n+\t\tMC_CMD_LINK_PIOBUF_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_LINK_PIOBUF;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_LINK_PIOBUF_IN_LEN;\n@@ -755,11 +742,10 @@ efx_mcdi_unlink_piobuf(\n \t__in\t\tuint32_t vi_index)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_UNLINK_PIOBUF_IN_LEN,\n-\t\t\t    MC_CMD_UNLINK_PIOBUF_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_UNLINK_PIOBUF_IN_LEN,\n+\t\tMC_CMD_UNLINK_PIOBUF_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_UNLINK_PIOBUF;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_UNLINK_PIOBUF_IN_LEN;\n@@ -957,11 +943,10 @@ ef10_mcdi_get_pf_count(\n \t__out\t\tuint32_t *pf_countp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_PF_COUNT_IN_LEN,\n-\t\t\t    MC_CMD_GET_PF_COUNT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_PF_COUNT_IN_LEN,\n+\t\tMC_CMD_GET_PF_COUNT_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_PF_COUNT;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_PF_COUNT_IN_LEN;\n@@ -1001,15 +986,14 @@ ef10_get_datapath_caps(\n {\n \tefx_nic_cfg_t *encp = &(enp->en_nic_cfg);\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_CAPABILITIES_IN_LEN,\n-\t\t\t    MC_CMD_GET_CAPABILITIES_V5_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_CAPABILITIES_IN_LEN,\n+\t\tMC_CMD_GET_CAPABILITIES_V5_OUT_LEN);\n \tefx_rc_t rc;\n \n \tif ((rc = ef10_mcdi_get_pf_count(enp, &encp->enc_hw_pf_count)) != 0)\n \t\tgoto fail1;\n \n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_CAPABILITIES;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_CAPABILITIES_IN_LEN;\n@@ -2046,8 +2030,8 @@ ef10_nic_reset(\n \t__in\t\tefx_nic_t *enp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_ENTITY_RESET_IN_LEN,\n-\t\t\t    MC_CMD_ENTITY_RESET_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_ENTITY_RESET_IN_LEN,\n+\t\tMC_CMD_ENTITY_RESET_OUT_LEN);\n \tefx_rc_t rc;\n \n \t/* ef10_nic_reset() is called to recover from BADASSERT failures. */\n@@ -2056,7 +2040,6 @@ ef10_nic_reset(\n \tif ((rc = efx_mcdi_exit_assertion_handler(enp)) != 0)\n \t\tgoto fail2;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_ENTITY_RESET;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_ENTITY_RESET_IN_LEN;\n@@ -2393,11 +2376,10 @@ efx_mcdi_get_nic_global(\n \t__out\t\tuint32_t *valuep)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_NIC_GLOBAL_IN_LEN,\n-\t\t\t    MC_CMD_GET_NIC_GLOBAL_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_NIC_GLOBAL_IN_LEN,\n+\t\tMC_CMD_GET_NIC_GLOBAL_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_NIC_GLOBAL;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_NIC_GLOBAL_IN_LEN;\n@@ -2437,10 +2419,9 @@ efx_mcdi_set_nic_global(\n \t__in\t\tuint32_t value)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MC_CMD_SET_NIC_GLOBAL_IN_LEN];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_SET_NIC_GLOBAL_IN_LEN, 0);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SET_NIC_GLOBAL;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_SET_NIC_GLOBAL_IN_LEN;\ndiff --git a/drivers/net/sfc/base/ef10_phy.c b/drivers/net/sfc/base/ef10_phy.c\nindex e9c7b40e4..a1f59ff1c 100644\n--- a/drivers/net/sfc/base/ef10_phy.c\n+++ b/drivers/net/sfc/base/ef10_phy.c\n@@ -242,11 +242,10 @@ ef10_phy_get_link(\n \t__out\t\tef10_link_state_t *elsp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_LINK_IN_LEN,\n-\t\t\t    MC_CMD_GET_LINK_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_LINK_IN_LEN,\n+\t\tMC_CMD_GET_LINK_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_LINK;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_LINK_IN_LEN;\n@@ -301,8 +300,8 @@ ef10_phy_reconfigure(\n {\n \tefx_port_t *epp = &(enp->en_port);\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_SET_LINK_IN_LEN,\n-\t\t\t    MC_CMD_SET_LINK_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_SET_LINK_IN_LEN,\n+\t\tMC_CMD_SET_LINK_OUT_LEN);\n \tuint32_t cap_mask;\n #if EFSYS_OPT_PHY_LED_CONTROL\n \tunsigned int led_mode;\n@@ -316,7 +315,6 @@ ef10_phy_reconfigure(\n \tif (supported == B_FALSE)\n \t\tgoto out;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SET_LINK;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_SET_LINK_IN_LEN;\n@@ -464,12 +462,11 @@ ef10_phy_verify(\n \t__in\t\tefx_nic_t *enp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_PHY_STATE_IN_LEN,\n-\t\t\t    MC_CMD_GET_PHY_STATE_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_PHY_STATE_IN_LEN,\n+\t\tMC_CMD_GET_PHY_STATE_OUT_LEN);\n \tuint32_t state;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_PHY_STATE;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_PHY_STATE_IN_LEN;\n@@ -587,7 +584,8 @@ ef10_bist_poll(\n \t * MCDI_CTL_SDU_LEN_MAX_V1 is large enough cover all BIST results,\n \t * whilst not wasting stack.\n \t */\n-\tuint8_t payload[MAX(MC_CMD_POLL_BIST_IN_LEN, MCDI_CTL_SDU_LEN_MAX_V1)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_POLL_BIST_IN_LEN,\n+\t\tMCDI_CTL_SDU_LEN_MAX_V1);\n \tefx_nic_cfg_t *encp = &(enp->en_nic_cfg);\n \tefx_mcdi_req_t req;\n \tuint32_t value_mask = 0;\n@@ -605,7 +603,6 @@ ef10_bist_poll(\n \n \t_NOTE(ARGUNUSED(type))\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_POLL_BIST;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_POLL_BIST_IN_LEN;\ndiff --git a/drivers/net/sfc/base/ef10_rx.c b/drivers/net/sfc/base/ef10_rx.c\nindex 313a36918..17678b517 100644\n--- a/drivers/net/sfc/base/ef10_rx.c\n+++ b/drivers/net/sfc/base/ef10_rx.c\n@@ -29,8 +29,8 @@ efx_mcdi_init_rxq(\n {\n \tefx_nic_cfg_t *encp = &(enp->en_nic_cfg);\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_INIT_RXQ_V3_IN_LEN,\n-\t\t\t    MC_CMD_INIT_RXQ_V3_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_INIT_RXQ_V3_IN_LEN,\n+\t\tMC_CMD_INIT_RXQ_V3_OUT_LEN);\n \tint npages = EFX_RXQ_NBUFS(ndescs);\n \tint i;\n \tefx_qword_t *dma_addr;\n@@ -73,7 +73,6 @@ efx_mcdi_init_rxq(\n \t\twant_outer_classes = B_FALSE;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_INIT_RXQ;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_INIT_RXQ_V3_IN_LEN;\n@@ -146,11 +145,10 @@ efx_mcdi_fini_rxq(\n \t__in\t\tuint32_t instance)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_FINI_RXQ_IN_LEN,\n-\t\t\t    MC_CMD_FINI_RXQ_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_FINI_RXQ_IN_LEN,\n+\t\tMC_CMD_FINI_RXQ_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_FINI_RXQ;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_FINI_RXQ_IN_LEN;\n@@ -188,8 +186,8 @@ efx_mcdi_rss_context_alloc(\n \t__out\t\tuint32_t *rss_contextp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_RSS_CONTEXT_ALLOC_IN_LEN,\n-\t\t\t    MC_CMD_RSS_CONTEXT_ALLOC_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_RSS_CONTEXT_ALLOC_IN_LEN,\n+\t\tMC_CMD_RSS_CONTEXT_ALLOC_OUT_LEN);\n \tuint32_t rss_context;\n \tuint32_t context_type;\n \tefx_rc_t rc;\n@@ -211,7 +209,6 @@ efx_mcdi_rss_context_alloc(\n \t\tgoto fail2;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_RSS_CONTEXT_ALLOC;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_RSS_CONTEXT_ALLOC_IN_LEN;\n@@ -274,8 +271,8 @@ efx_mcdi_rss_context_free(\n \t__in\t\tuint32_t rss_context)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_RSS_CONTEXT_FREE_IN_LEN,\n-\t\t\t    MC_CMD_RSS_CONTEXT_FREE_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_RSS_CONTEXT_FREE_IN_LEN,\n+\t\tMC_CMD_RSS_CONTEXT_FREE_OUT_LEN);\n \tefx_rc_t rc;\n \n \tif (rss_context == EF10_RSS_CONTEXT_INVALID) {\n@@ -283,7 +280,6 @@ efx_mcdi_rss_context_free(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_RSS_CONTEXT_FREE;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_RSS_CONTEXT_FREE_IN_LEN;\n@@ -324,8 +320,8 @@ efx_mcdi_rss_context_set_flags(\n \tefx_rx_hash_type_t type_ipv6_tcp;\n \tefx_rx_hash_type_t modes;\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_LEN,\n-\t\t\t    MC_CMD_RSS_CONTEXT_SET_FLAGS_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_LEN,\n+\t\tMC_CMD_RSS_CONTEXT_SET_FLAGS_OUT_LEN);\n \tefx_rc_t rc;\n \n \tEFX_STATIC_ASSERT(EFX_RX_CLASS_IPV4_TCP_LBN ==\n@@ -350,7 +346,6 @@ efx_mcdi_rss_context_set_flags(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_RSS_CONTEXT_SET_FLAGS;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_LEN;\n@@ -439,8 +434,8 @@ efx_mcdi_rss_context_set_key(\n \t__in\t\tsize_t n)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_RSS_CONTEXT_SET_KEY_IN_LEN,\n-\t\t\t    MC_CMD_RSS_CONTEXT_SET_KEY_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_RSS_CONTEXT_SET_KEY_IN_LEN,\n+\t\tMC_CMD_RSS_CONTEXT_SET_KEY_OUT_LEN);\n \tefx_rc_t rc;\n \n \tif (rss_context == EF10_RSS_CONTEXT_INVALID) {\n@@ -448,7 +443,6 @@ efx_mcdi_rss_context_set_key(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_RSS_CONTEXT_SET_KEY;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_RSS_CONTEXT_SET_KEY_IN_LEN;\n@@ -496,8 +490,8 @@ efx_mcdi_rss_context_set_table(\n \t__in\t\tsize_t n)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_RSS_CONTEXT_SET_TABLE_IN_LEN,\n-\t\t\t    MC_CMD_RSS_CONTEXT_SET_TABLE_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_RSS_CONTEXT_SET_TABLE_IN_LEN,\n+\t\tMC_CMD_RSS_CONTEXT_SET_TABLE_OUT_LEN);\n \tuint8_t *req_table;\n \tint i, rc;\n \n@@ -506,7 +500,6 @@ efx_mcdi_rss_context_set_table(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_RSS_CONTEXT_SET_TABLE;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_RSS_CONTEXT_SET_TABLE_IN_LEN;\ndiff --git a/drivers/net/sfc/base/ef10_tx.c b/drivers/net/sfc/base/ef10_tx.c\nindex 4d77d76d7..5f3df42b9 100644\n--- a/drivers/net/sfc/base/ef10_tx.c\n+++ b/drivers/net/sfc/base/ef10_tx.c\n@@ -31,8 +31,8 @@ efx_mcdi_init_txq(\n \t__in\t\tefsys_mem_t *esmp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_INIT_TXQ_IN_LEN(EFX_TXQ_MAX_BUFS),\n-\t\t\t    MC_CMD_INIT_TXQ_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_INIT_TXQ_IN_LEN(EFX_TXQ_MAX_BUFS),\n+\t\tMC_CMD_INIT_TXQ_OUT_LEN);\n \tefx_qword_t *dma_addr;\n \tuint64_t addr;\n \tint npages;\n@@ -53,7 +53,6 @@ efx_mcdi_init_txq(\n \t\tgoto fail2;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_INIT_TXQ;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_INIT_TXQ_IN_LEN(npages);\n@@ -120,11 +119,10 @@ efx_mcdi_fini_txq(\n \t__in\t\tuint32_t instance)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_FINI_TXQ_IN_LEN,\n-\t\t\t    MC_CMD_FINI_TXQ_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_FINI_TXQ_IN_LEN,\n+\t\tMC_CMD_FINI_TXQ_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_FINI_TXQ;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_FINI_TXQ_IN_LEN;\ndiff --git a/drivers/net/sfc/base/efx_lic.c b/drivers/net/sfc/base/efx_lic.c\nindex 2b06e2d1e..2a6da2647 100644\n--- a/drivers/net/sfc/base/efx_lic.c\n+++ b/drivers/net/sfc/base/efx_lic.c\n@@ -301,12 +301,11 @@ efx_mcdi_fc_license_update_license(\n \t__in\t\tefx_nic_t *enp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MC_CMD_FC_IN_LICENSE_LEN];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_FC_IN_LICENSE_LEN, 0);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_SIENA);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_FC;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_FC_IN_LICENSE_LEN;\n@@ -347,13 +346,12 @@ efx_mcdi_fc_license_get_key_stats(\n \t__out\t\tefx_key_stats_t *eksp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_FC_IN_LICENSE_LEN,\n-\t\t\t    MC_CMD_FC_OUT_LICENSE_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_FC_IN_LICENSE_LEN,\n+\t\tMC_CMD_FC_OUT_LICENSE_LEN);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_SIENA);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_FC;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_FC_IN_LICENSE_LEN;\n@@ -663,8 +661,8 @@ efx_mcdi_licensed_app_state(\n \t__out\t\tboolean_t *licensedp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_LICENSED_APP_STATE_IN_LEN,\n-\t\t\t    MC_CMD_GET_LICENSED_APP_STATE_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_LICENSED_APP_STATE_IN_LEN,\n+\t\tMC_CMD_GET_LICENSED_APP_STATE_OUT_LEN);\n \tuint32_t app_state;\n \tefx_rc_t rc;\n \n@@ -676,7 +674,6 @@ efx_mcdi_licensed_app_state(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_LICENSED_APP_STATE;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_LICENSED_APP_STATE_IN_LEN;\n@@ -722,12 +719,11 @@ efx_mcdi_licensing_update_licenses(\n \t__in\t\tefx_nic_t *enp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MC_CMD_LICENSING_IN_LEN];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_LICENSING_IN_LEN, 0);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_LICENSING;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_LICENSING_IN_LEN;\n@@ -765,13 +761,12 @@ efx_mcdi_licensing_get_key_stats(\n \t__out\t\tefx_key_stats_t *eksp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_LICENSING_IN_LEN,\n-\t\t\t    MC_CMD_LICENSING_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_LICENSING_IN_LEN,\n+\t\tMC_CMD_LICENSING_OUT_LEN);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_LICENSING;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_LICENSING_IN_LEN;\n@@ -829,13 +824,12 @@ efx_mcdi_licensing_v3_update_licenses(\n \t__in\t\tefx_nic_t *enp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MC_CMD_LICENSING_V3_IN_LEN];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_LICENSING_V3_IN_LEN, 0);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT((enp->en_family == EFX_FAMILY_MEDFORD) ||\n \t    (enp->en_family == EFX_FAMILY_MEDFORD2));\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_LICENSING_V3;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_LICENSING_V3_IN_LEN;\n@@ -866,14 +860,13 @@ efx_mcdi_licensing_v3_report_license(\n \t__out\t\tefx_key_stats_t *eksp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_LICENSING_V3_IN_LEN,\n-\t\t\t    MC_CMD_LICENSING_V3_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_LICENSING_V3_IN_LEN,\n+\t\tMC_CMD_LICENSING_V3_OUT_LEN);\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT((enp->en_family == EFX_FAMILY_MEDFORD) ||\n \t    (enp->en_family == EFX_FAMILY_MEDFORD2));\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_LICENSING_V3;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_LICENSING_V3_IN_LEN;\n@@ -930,15 +923,14 @@ efx_mcdi_licensing_v3_app_state(\n \t__out\t\tboolean_t *licensedp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_LICENSED_V3_APP_STATE_IN_LEN,\n-\t\t\t    MC_CMD_GET_LICENSED_V3_APP_STATE_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_LICENSED_V3_APP_STATE_IN_LEN,\n+\t\tMC_CMD_GET_LICENSED_V3_APP_STATE_OUT_LEN);\n \tuint32_t app_state;\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT((enp->en_family == EFX_FAMILY_MEDFORD) ||\n \t    (enp->en_family == EFX_FAMILY_MEDFORD2));\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_LICENSED_V3_APP_STATE;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_LICENSED_V3_APP_STATE_IN_LEN;\n@@ -990,8 +982,8 @@ efx_mcdi_licensing_v3_get_id(\n \t\t\tuint8_t *bufferp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_LICENSING_GET_ID_V3_IN_LEN,\n-\t\t\t    MC_CMD_LICENSING_GET_ID_V3_OUT_LENMIN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_LICENSING_GET_ID_V3_IN_LEN,\n+\t\tMC_CMD_LICENSING_GET_ID_V3_OUT_LENMIN);\n \tefx_rc_t rc;\n \n \treq.emr_cmd = MC_CMD_LICENSING_GET_ID_V3;\n@@ -1002,7 +994,6 @@ efx_mcdi_licensing_v3_get_id(\n \t\treq.emr_in_length = MC_CMD_LICENSING_GET_ID_V3_IN_LEN;\n \t\treq.emr_out_buf = bufferp;\n \t\treq.emr_out_length = MC_CMD_LICENSING_GET_ID_V3_OUT_LENMIN;\n-\t\t(void) memset(payload, 0, sizeof (payload));\n \t} else {\n \t\t/* Request full buffer */\n \t\treq.emr_in_buf = bufferp;\ndiff --git a/drivers/net/sfc/base/efx_mcdi.c b/drivers/net/sfc/base/efx_mcdi.c\nindex d4ebcf265..84d8452e4 100644\n--- a/drivers/net/sfc/base/efx_mcdi.c\n+++ b/drivers/net/sfc/base/efx_mcdi.c\n@@ -900,10 +900,10 @@ efx_mcdi_version(\n \t__out_opt\t\tefx_mcdi_boot_t *statusp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MAX(MC_CMD_GET_VERSION_IN_LEN,\n-\t\t\t\tMC_CMD_GET_VERSION_OUT_LEN),\n-\t\t\t    MAX(MC_CMD_GET_BOOT_STATUS_IN_LEN,\n-\t\t\t\tMC_CMD_GET_BOOT_STATUS_OUT_LEN))];\n+\tEFX_MCDI_DECLARE_BUF(payload,\n+\t\tMAX(MC_CMD_GET_VERSION_IN_LEN, MC_CMD_GET_BOOT_STATUS_IN_LEN),\n+\t\tMAX(MC_CMD_GET_VERSION_OUT_LEN,\n+\t\t\tMC_CMD_GET_BOOT_STATUS_OUT_LEN));\n \tefx_word_t *ver_words;\n \tuint16_t version[4];\n \tuint32_t build;\n@@ -912,7 +912,6 @@ efx_mcdi_version(\n \n \tEFSYS_ASSERT3U(enp->en_features, &, EFX_FEATURE_MCDI);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_VERSION;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_VERSION_IN_LEN;\n@@ -1018,12 +1017,11 @@ efx_mcdi_get_capabilities(\n \t__out_opt\tuint32_t *tso2ncp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_CAPABILITIES_IN_LEN,\n-\t\t\t    MC_CMD_GET_CAPABILITIES_V2_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_CAPABILITIES_IN_LEN,\n+\t\tMC_CMD_GET_CAPABILITIES_V2_OUT_LEN);\n \tboolean_t v2_capable;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_CAPABILITIES;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_CAPABILITIES_IN_LEN;\n@@ -1086,7 +1084,8 @@ efx_mcdi_do_reboot(\n \t__in\t\tefx_nic_t *enp,\n \t__in\t\tboolean_t after_assertion)\n {\n-\tuint8_t payload[MAX(MC_CMD_REBOOT_IN_LEN, MC_CMD_REBOOT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_REBOOT_IN_LEN,\n+\t\tMC_CMD_REBOOT_OUT_LEN);\n \tefx_mcdi_req_t req;\n \tefx_rc_t rc;\n \n@@ -1099,7 +1098,6 @@ efx_mcdi_do_reboot(\n \t */\n \tEFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_REBOOT;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_REBOOT_IN_LEN;\n@@ -1150,8 +1148,8 @@ efx_mcdi_read_assertion(\n \t__in\t\tefx_nic_t *enp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_ASSERTS_IN_LEN,\n-\t\t\t    MC_CMD_GET_ASSERTS_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_ASSERTS_IN_LEN,\n+\t\tMC_CMD_GET_ASSERTS_OUT_LEN);\n \tconst char *reason;\n \tunsigned int flags;\n \tunsigned int index;\n@@ -1252,11 +1250,10 @@ efx_mcdi_drv_attach(\n \t__in\t\tboolean_t attach)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_DRV_ATTACH_IN_LEN,\n-\t\t\t    MC_CMD_DRV_ATTACH_EXT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_DRV_ATTACH_IN_LEN,\n+\t\tMC_CMD_DRV_ATTACH_EXT_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_DRV_ATTACH;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_DRV_ATTACH_IN_LEN;\n@@ -1311,11 +1308,10 @@ efx_mcdi_get_board_cfg(\n {\n \tefx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_BOARD_CFG_IN_LEN,\n-\t\t\t    MC_CMD_GET_BOARD_CFG_OUT_LENMIN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_BOARD_CFG_IN_LEN,\n+\t\tMC_CMD_GET_BOARD_CFG_OUT_LENMIN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_BOARD_CFG;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_BOARD_CFG_IN_LEN;\n@@ -1391,11 +1387,10 @@ efx_mcdi_get_resource_limits(\n \t__out_opt\tuint32_t *ntxqp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_RESOURCE_LIMITS_IN_LEN,\n-\t\t\t    MC_CMD_GET_RESOURCE_LIMITS_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_RESOURCE_LIMITS_IN_LEN,\n+\t\tMC_CMD_GET_RESOURCE_LIMITS_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_RESOURCE_LIMITS;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_RESOURCE_LIMITS_IN_LEN;\n@@ -1438,8 +1433,8 @@ efx_mcdi_get_phy_cfg(\n \tefx_port_t *epp = &(enp->en_port);\n \tefx_nic_cfg_t *encp = &(enp->en_nic_cfg);\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_PHY_CFG_IN_LEN,\n-\t\t\t    MC_CMD_GET_PHY_CFG_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_PHY_CFG_IN_LEN,\n+\t\tMC_CMD_GET_PHY_CFG_OUT_LEN);\n #if EFSYS_OPT_NAMES\n \tconst char *namep;\n \tsize_t namelen;\n@@ -1447,7 +1442,6 @@ efx_mcdi_get_phy_cfg(\n \tuint32_t phy_media_type;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_PHY_CFG;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_PHY_CFG_IN_LEN;\n@@ -1686,11 +1680,10 @@ efx_mcdi_bist_start(\n \t__in\t\t\tefx_bist_type_t type)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_START_BIST_IN_LEN,\n-\t\t\t    MC_CMD_START_BIST_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_START_BIST_IN_LEN,\n+\t\tMC_CMD_START_BIST_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_START_BIST;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_START_BIST_IN_LEN;\n@@ -1749,11 +1742,10 @@ efx_mcdi_log_ctrl(\n \t__in\t\tefx_nic_t *enp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_LOG_CTRL_IN_LEN,\n-\t\t\t    MC_CMD_LOG_CTRL_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_LOG_CTRL_IN_LEN,\n+\t\tMC_CMD_LOG_CTRL_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_LOG_CTRL;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_LOG_CTRL_IN_LEN;\n@@ -1798,8 +1790,8 @@ efx_mcdi_mac_stats(\n \t__in\t\tuint16_t period_ms)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_MAC_STATS_IN_LEN,\n-\t\t\t    MC_CMD_MAC_STATS_V2_OUT_DMA_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_MAC_STATS_IN_LEN,\n+\t\tMC_CMD_MAC_STATS_V2_OUT_DMA_LEN);\n \tint clear = (action == EFX_STATS_CLEAR);\n \tint upload = (action == EFX_STATS_UPLOAD);\n \tint enable = (action == EFX_STATS_ENABLE_NOEVENTS);\n@@ -1807,7 +1799,6 @@ efx_mcdi_mac_stats(\n \tint disable = (action == EFX_STATS_DISABLE);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_MAC_STATS;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_MAC_STATS_IN_LEN;\n@@ -1979,11 +1970,10 @@ efx_mcdi_get_function_info(\n \t__out_opt\t\tuint32_t *vfp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_FUNCTION_INFO_IN_LEN,\n-\t\t\t    MC_CMD_GET_FUNCTION_INFO_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_FUNCTION_INFO_IN_LEN,\n+\t\tMC_CMD_GET_FUNCTION_INFO_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_FUNCTION_INFO;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_FUNCTION_INFO_IN_LEN;\n@@ -2024,11 +2014,10 @@ efx_mcdi_privilege_mask(\n \t__out\t\t\tuint32_t *maskp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_PRIVILEGE_MASK_IN_LEN,\n-\t\t\t    MC_CMD_PRIVILEGE_MASK_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_PRIVILEGE_MASK_IN_LEN,\n+\t\tMC_CMD_PRIVILEGE_MASK_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_PRIVILEGE_MASK;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_PRIVILEGE_MASK_IN_LEN;\n@@ -2073,11 +2062,10 @@ efx_mcdi_set_workaround(\n \t__out_opt\t\tuint32_t *flagsp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_WORKAROUND_IN_LEN,\n-\t\t\t    MC_CMD_WORKAROUND_EXT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_WORKAROUND_IN_LEN,\n+\t\tMC_CMD_WORKAROUND_EXT_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_WORKAROUND;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_WORKAROUND_IN_LEN;\n@@ -2117,10 +2105,9 @@ efx_mcdi_get_workarounds(\n \t__out_opt\t\tuint32_t *enabledp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MC_CMD_GET_WORKAROUNDS_OUT_LEN];\n+\tEFX_MCDI_DECLARE_BUF(payload, 0, MC_CMD_GET_WORKAROUNDS_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_WORKAROUNDS;\n \treq.emr_in_buf = NULL;\n \treq.emr_in_length = 0;\n@@ -2166,14 +2153,13 @@ efx_mcdi_get_phy_media_info(\n \t__out_bcount(len)\tuint8_t *data)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_PHY_MEDIA_INFO_IN_LEN,\n-\t\t\t    MC_CMD_GET_PHY_MEDIA_INFO_OUT_LEN(\n-\t\t\t\tEFX_PHY_MEDIA_INFO_PAGE_SIZE))];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_PHY_MEDIA_INFO_IN_LEN,\n+\t\tMC_CMD_GET_PHY_MEDIA_INFO_OUT_LEN(\n+\t\t\tEFX_PHY_MEDIA_INFO_PAGE_SIZE));\n \tefx_rc_t rc;\n \n \tEFSYS_ASSERT((uint32_t)offset + len <= EFX_PHY_MEDIA_INFO_PAGE_SIZE);\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_PHY_MEDIA_INFO;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_PHY_MEDIA_INFO_IN_LEN;\ndiff --git a/drivers/net/sfc/base/efx_mcdi.h b/drivers/net/sfc/base/efx_mcdi.h\nindex d2cd1e9e1..40072405e 100644\n--- a/drivers/net/sfc/base/efx_mcdi.h\n+++ b/drivers/net/sfc/base/efx_mcdi.h\n@@ -384,6 +384,17 @@ efx_mcdi_phy_module_get_info(\n \t(((mask) & (MC_CMD_PRIVILEGE_MASK_IN_GRP_ ## priv)) ==\t\t\\\n \t(MC_CMD_PRIVILEGE_MASK_IN_GRP_ ## priv))\n \n+/*\n+ * The buffer size must be a multiple of dword to ensure that MCDI works\n+ * properly with Siena based boards (which use on-chip buffer). Also, it\n+ * should be at minimum the size of two dwords to allow space for extended\n+ * error responses if the request/response buffer sizes are smaller.\n+ */\n+#define EFX_MCDI_DECLARE_BUF(_name, _in_len, _out_len)\t\t\t\\\n+\tuint8_t _name[P2ROUNDUP(MAX(MAX(_in_len, _out_len),\t\t\\\n+\t\t\t\t    (2 * sizeof (efx_dword_t))),\t\\\n+\t\t\t\tsizeof (efx_dword_t))] = {0}\n+\n typedef enum efx_mcdi_feature_id_e {\n \tEFX_MCDI_FEATURE_FW_UPDATE = 0,\n \tEFX_MCDI_FEATURE_LINK_CONTROL,\ndiff --git a/drivers/net/sfc/base/efx_nic.c b/drivers/net/sfc/base/efx_nic.c\nindex 0e8ed9c2a..c364bffba 100644\n--- a/drivers/net/sfc/base/efx_nic.c\n+++ b/drivers/net/sfc/base/efx_nic.c\n@@ -789,13 +789,12 @@ efx_mcdi_get_loopback_modes(\n {\n \tefx_nic_cfg_t *encp = &(enp->en_nic_cfg);\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_LOOPBACK_MODES_IN_LEN,\n-\t\t\t    MC_CMD_GET_LOOPBACK_MODES_OUT_V2_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_LOOPBACK_MODES_IN_LEN,\n+\t\tMC_CMD_GET_LOOPBACK_MODES_OUT_V2_LEN);\n \tefx_qword_t mask;\n \tefx_qword_t modes;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_LOOPBACK_MODES;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_LOOPBACK_MODES_IN_LEN;\ndiff --git a/drivers/net/sfc/base/efx_nvram.c b/drivers/net/sfc/base/efx_nvram.c\nindex d7b1a6778..5296c59b8 100644\n--- a/drivers/net/sfc/base/efx_nvram.c\n+++ b/drivers/net/sfc/base/efx_nvram.c\n@@ -514,12 +514,11 @@ efx_mcdi_nvram_partitions(\n \t__out\t\t\tunsigned int *npartnp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_NVRAM_PARTITIONS_IN_LEN,\n-\t\t\t    MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_NVRAM_PARTITIONS_IN_LEN,\n+\t\tMC_CMD_NVRAM_PARTITIONS_OUT_LENMAX);\n \tunsigned int npartn;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_NVRAM_PARTITIONS;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_NVRAM_PARTITIONS_IN_LEN;\n@@ -577,11 +576,10 @@ efx_mcdi_nvram_metadata(\n \t__in\t\t\tsize_t size)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_NVRAM_METADATA_IN_LEN,\n-\t\t\t    MC_CMD_NVRAM_METADATA_OUT_LENMAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_NVRAM_METADATA_IN_LEN,\n+\t\tMC_CMD_NVRAM_METADATA_OUT_LENMAX);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_NVRAM_METADATA;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_NVRAM_METADATA_IN_LEN;\n@@ -667,12 +665,11 @@ efx_mcdi_nvram_info(\n \t__out_opt\t\tuint32_t *erase_sizep,\n \t__out_opt\t\tuint32_t *write_sizep)\n {\n-\tuint8_t payload[MAX(MC_CMD_NVRAM_INFO_IN_LEN,\n-\t\t\t    MC_CMD_NVRAM_INFO_V2_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_NVRAM_INFO_IN_LEN,\n+\t\tMC_CMD_NVRAM_INFO_V2_OUT_LEN);\n \tefx_mcdi_req_t req;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_NVRAM_INFO;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_NVRAM_INFO_IN_LEN;\n@@ -728,12 +725,11 @@ efx_mcdi_nvram_update_start(\n \t__in\t\t\tefx_nic_t *enp,\n \t__in\t\t\tuint32_t partn)\n {\n-\tuint8_t payload[MAX(MC_CMD_NVRAM_UPDATE_START_V2_IN_LEN,\n-\t\t\t    MC_CMD_NVRAM_UPDATE_START_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_NVRAM_UPDATE_START_V2_IN_LEN,\n+\t\tMC_CMD_NVRAM_UPDATE_START_OUT_LEN);\n \tefx_mcdi_req_t req;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_NVRAM_UPDATE_START;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_NVRAM_UPDATE_START_V2_IN_LEN;\n@@ -770,8 +766,8 @@ efx_mcdi_nvram_read(\n \t__in\t\t\tuint32_t mode)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_NVRAM_READ_IN_V2_LEN,\n-\t\t\t    MC_CMD_NVRAM_READ_OUT_LENMAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_NVRAM_READ_IN_V2_LEN,\n+\t\tMC_CMD_NVRAM_READ_OUT_LENMAX);\n \tefx_rc_t rc;\n \n \tif (size > MC_CMD_NVRAM_READ_OUT_LENMAX) {\n@@ -779,7 +775,6 @@ efx_mcdi_nvram_read(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_NVRAM_READ;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_NVRAM_READ_IN_V2_LEN;\n@@ -825,11 +820,10 @@ efx_mcdi_nvram_erase(\n \t__in\t\t\tsize_t size)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_NVRAM_ERASE_IN_LEN,\n-\t\t\t    MC_CMD_NVRAM_ERASE_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_NVRAM_ERASE_IN_LEN,\n+\t\tMC_CMD_NVRAM_ERASE_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_NVRAM_ERASE;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_NVRAM_ERASE_IN_LEN;\n@@ -939,12 +933,11 @@ efx_mcdi_nvram_update_finish(\n {\n \tconst efx_nic_cfg_t *encp = &enp->en_nic_cfg;\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_LEN,\n-\t\t\t    MC_CMD_NVRAM_UPDATE_FINISH_V2_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_LEN,\n+\t\tMC_CMD_NVRAM_UPDATE_FINISH_V2_OUT_LEN);\n \tuint32_t verify_result = MC_CMD_NVRAM_VERIFY_RC_UNKNOWN;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_NVRAM_UPDATE_FINISH;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_LEN;\n@@ -1010,12 +1003,11 @@ efx_mcdi_nvram_test(\n \t__in\t\t\tuint32_t partn)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_NVRAM_TEST_IN_LEN,\n-\t\t\t    MC_CMD_NVRAM_TEST_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_NVRAM_TEST_IN_LEN,\n+\t\tMC_CMD_NVRAM_TEST_OUT_LEN);\n \tint result;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_NVRAM_TEST;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_NVRAM_TEST_IN_LEN;\ndiff --git a/drivers/net/sfc/base/efx_tunnel.c b/drivers/net/sfc/base/efx_tunnel.c\nindex 399fd540b..edb6be028 100644\n--- a/drivers/net/sfc/base/efx_tunnel.c\n+++ b/drivers/net/sfc/base/efx_tunnel.c\n@@ -40,8 +40,9 @@ efx_mcdi_set_tunnel_encap_udp_ports(\n \t__out\t\t\tboolean_t *resetting)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_LENMAX,\n-\t\t\t    MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload,\n+\t\tMC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_LENMAX,\n+\t\tMC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_LEN);\n \tefx_word_t flags;\n \tefx_rc_t rc;\n \tunsigned int i;\n@@ -52,7 +53,6 @@ efx_mcdi_set_tunnel_encap_udp_ports(\n \telse\n \t\tentries_num = etcp->etc_udp_entries_num;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length =\ndiff --git a/drivers/net/sfc/base/mcdi_mon.c b/drivers/net/sfc/base/mcdi_mon.c\nindex 0e860168a..b53de0d68 100644\n--- a/drivers/net/sfc/base/mcdi_mon.c\n+++ b/drivers/net/sfc/base/mcdi_mon.c\n@@ -191,8 +191,8 @@ efx_mcdi_read_sensors(\n \t__in\t\tuint32_t size)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_READ_SENSORS_EXT_IN_LEN,\n-\t\t\t    MC_CMD_READ_SENSORS_EXT_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_READ_SENSORS_EXT_IN_LEN,\n+\t\tMC_CMD_READ_SENSORS_EXT_OUT_LEN);\n \tuint32_t addr_lo, addr_hi;\n \tefx_rc_t rc;\n \n@@ -230,8 +230,8 @@ efx_mcdi_sensor_info_npages(\n \t__out\t\tuint32_t *npagesp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_SENSOR_INFO_EXT_IN_LEN,\n-\t\t\t    MC_CMD_SENSOR_INFO_OUT_LENMAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_SENSOR_INFO_EXT_IN_LEN,\n+\t\tMC_CMD_SENSOR_INFO_OUT_LENMAX);\n \tint page;\n \tefx_rc_t rc;\n \n@@ -274,8 +274,8 @@ efx_mcdi_sensor_info(\n \t__in\t\t\tsize_t npages)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_SENSOR_INFO_EXT_IN_LEN,\n-\t\t\t    MC_CMD_SENSOR_INFO_OUT_LENMAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_SENSOR_INFO_EXT_IN_LEN,\n+\t\tMC_CMD_SENSOR_INFO_OUT_LENMAX);\n \tuint32_t page;\n \tefx_rc_t rc;\n \n@@ -343,8 +343,8 @@ efx_mcdi_sensor_info_page(\n \t\t\t\tefx_mon_stat_limits_t *limits)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_SENSOR_INFO_EXT_IN_LEN,\n-\t\tMC_CMD_SENSOR_INFO_OUT_LENMAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_SENSOR_INFO_EXT_IN_LEN,\n+\t\tMC_CMD_SENSOR_INFO_OUT_LENMAX);\n \tefx_rc_t rc;\n \tuint32_t mask_copy;\n \tefx_dword_t *maskp;\n@@ -356,7 +356,6 @@ efx_mcdi_sensor_info_page(\n \tmemset(limits, 0,\n \t    ((sizeof (*mask_part) * 8) - 1) * sizeof (efx_mon_stat_limits_t));\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SENSOR_INFO;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_SENSOR_INFO_EXT_IN_LEN;\ndiff --git a/drivers/net/sfc/base/siena_mac.c b/drivers/net/sfc/base/siena_mac.c\nindex f8857cdd5..928dfc340 100644\n--- a/drivers/net/sfc/base/siena_mac.c\n+++ b/drivers/net/sfc/base/siena_mac.c\n@@ -68,14 +68,13 @@ siena_mac_reconfigure(\n \tefx_port_t *epp = &(enp->en_port);\n \tefx_oword_t multicast_hash[2];\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MAX(MC_CMD_SET_MAC_IN_LEN,\n-\t\t\t\tMC_CMD_SET_MAC_OUT_LEN),\n-\t\t\t    MAX(MC_CMD_SET_MCAST_HASH_IN_LEN,\n-\t\t\t\tMC_CMD_SET_MCAST_HASH_OUT_LEN))];\n+\tEFX_MCDI_DECLARE_BUF(payload,\n+\t\tMAX(MC_CMD_SET_MAC_IN_LEN, MC_CMD_SET_MCAST_HASH_IN_LEN),\n+\t\tMAX(MC_CMD_SET_MAC_OUT_LEN, MC_CMD_SET_MCAST_HASH_OUT_LEN));\n+\n \tunsigned int fcntl;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SET_MAC;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_SET_MAC_IN_LEN;\ndiff --git a/drivers/net/sfc/base/siena_nic.c b/drivers/net/sfc/base/siena_nic.c\nindex 31eef80b9..8a58986e8 100644\n--- a/drivers/net/sfc/base/siena_nic.c\n+++ b/drivers/net/sfc/base/siena_nic.c\n@@ -18,11 +18,10 @@ siena_nic_get_partn_mask(\n \t__out\t\t\tunsigned int *maskp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_NVRAM_TYPES_IN_LEN,\n-\t\t\t    MC_CMD_NVRAM_TYPES_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_NVRAM_TYPES_IN_LEN,\n+\t\tMC_CMD_NVRAM_TYPES_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_NVRAM_TYPES;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_NVRAM_TYPES_IN_LEN;\ndiff --git a/drivers/net/sfc/base/siena_nvram.c b/drivers/net/sfc/base/siena_nvram.c\nindex 8cdd2df70..b8ea8a757 100644\n--- a/drivers/net/sfc/base/siena_nvram.c\n+++ b/drivers/net/sfc/base/siena_nvram.c\n@@ -418,12 +418,11 @@ siena_nvram_get_subtype(\n \t__out\t\t\tuint32_t *subtypep)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_BOARD_CFG_IN_LEN,\n-\t\t\t    MC_CMD_GET_BOARD_CFG_OUT_LENMAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_BOARD_CFG_IN_LEN,\n+\t\tMC_CMD_GET_BOARD_CFG_OUT_LENMAX);\n \tefx_word_t *fw_list;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_BOARD_CFG;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_BOARD_CFG_IN_LEN;\ndiff --git a/drivers/net/sfc/base/siena_phy.c b/drivers/net/sfc/base/siena_phy.c\nindex 4b2190d38..7eec9c747 100644\n--- a/drivers/net/sfc/base/siena_phy.c\n+++ b/drivers/net/sfc/base/siena_phy.c\n@@ -169,11 +169,10 @@ siena_phy_get_link(\n \t__out\t\tsiena_link_state_t *slsp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_LINK_IN_LEN,\n-\t\t\t    MC_CMD_GET_LINK_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_LINK_IN_LEN,\n+\t\tMC_CMD_GET_LINK_OUT_LEN);\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_LINK;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_LINK_IN_LEN;\n@@ -244,10 +243,9 @@ siena_phy_reconfigure(\n {\n \tefx_port_t *epp = &(enp->en_port);\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MAX(MC_CMD_SET_ID_LED_IN_LEN,\n-\t\t\t\tMC_CMD_SET_ID_LED_OUT_LEN),\n-\t\t\t    MAX(MC_CMD_SET_LINK_IN_LEN,\n-\t\t\t\tMC_CMD_SET_LINK_OUT_LEN))];\n+\tEFX_MCDI_DECLARE_BUF(payload,\n+\t\tMAX(MC_CMD_SET_ID_LED_IN_LEN, MC_CMD_SET_LINK_IN_LEN),\n+\t\tMAX(MC_CMD_SET_ID_LED_OUT_LEN, MC_CMD_SET_LINK_OUT_LEN));\n \tuint32_t cap_mask;\n #if EFSYS_OPT_PHY_LED_CONTROL\n \tunsigned int led_mode;\n@@ -255,7 +253,6 @@ siena_phy_reconfigure(\n \tunsigned int speed;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_SET_LINK;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_SET_LINK_IN_LEN;\n@@ -361,12 +358,11 @@ siena_phy_verify(\n \t__in\t\tefx_nic_t *enp)\n {\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_GET_PHY_STATE_IN_LEN,\n-\t\t\t    MC_CMD_GET_PHY_STATE_OUT_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_GET_PHY_STATE_IN_LEN,\n+\t\tMC_CMD_GET_PHY_STATE_OUT_LEN);\n \tuint32_t state;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_PHY_STATE;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_GET_PHY_STATE_IN_LEN;\n@@ -530,8 +526,8 @@ siena_phy_stats_update(\n \tuint32_t vmask = encp->enc_mcdi_phy_stat_mask;\n \tuint64_t smask;\n \tefx_mcdi_req_t req;\n-\tuint8_t payload[MAX(MC_CMD_PHY_STATS_IN_LEN,\n-\t\t\t    MC_CMD_PHY_STATS_OUT_DMA_LEN)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_PHY_STATS_IN_LEN,\n+\t\tMC_CMD_PHY_STATS_OUT_DMA_LEN);\n \tefx_rc_t rc;\n \n \tif ((esmp == NULL) || (EFSYS_MEM_SIZE(esmp) < EFX_PHY_STATS_SIZE)) {\n@@ -539,7 +535,6 @@ siena_phy_stats_update(\n \t\tgoto fail1;\n \t}\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_PHY_STATS;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_PHY_STATS_IN_LEN;\n@@ -626,14 +621,13 @@ siena_phy_bist_poll(\n \t__in\t\t\tsize_t count)\n {\n \tefx_nic_cfg_t *encp = &(enp->en_nic_cfg);\n-\tuint8_t payload[MAX(MC_CMD_POLL_BIST_IN_LEN,\n-\t\t\t    MCDI_CTL_SDU_LEN_MAX)];\n+\tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_POLL_BIST_IN_LEN,\n+\t\tMCDI_CTL_SDU_LEN_MAX);\n \tuint32_t value_mask = 0;\n \tefx_mcdi_req_t req;\n \tuint32_t result;\n \tefx_rc_t rc;\n \n-\t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_POLL_BIST;\n \treq.emr_in_buf = payload;\n \treq.emr_in_length = MC_CMD_POLL_BIST_IN_LEN;\n",
    "prefixes": [
        "23/37"
    ]
}