get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2219032,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2219032/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/hostap/patch/20260402095356.1401176-5-allen.ye@mediatek.com/",
    "project": {
        "id": 22,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/22/?format=api",
        "name": "HostAP Development",
        "link_name": "hostap",
        "list_id": "hostap.lists.infradead.org",
        "list_email": "hostap@lists.infradead.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260402095356.1401176-5-allen.ye@mediatek.com>",
    "date": "2026-04-02T09:53:53",
    "name": "[v11,4/7] hostapd: Support 80/160/320 MHz widths in hostapd_is_usable_chans",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "3a1ffe88b17d8e396d5f2c5243e8b92f8ddbf355",
    "submitter": {
        "id": 86975,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/86975/?format=api",
        "name": "Allen Ye",
        "email": "Allen.Ye@mediatek.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/hostap/patch/20260402095356.1401176-5-allen.ye@mediatek.com/mbox/",
    "series": [
        {
            "id": 498460,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/498460/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/hostap/list/?series=498460",
            "date": "2026-04-02T09:53:56",
            "name": "Introduce Automated Frequency Coordination (AFC) support",
            "version": 11,
            "mbox": "http://patchwork.ozlabs.org/series/498460/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2219032/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2219032/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "\n <hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=3ieCJ7PI;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n unprotected) header.d=mediatek.com header.i=@mediatek.com header.a=rsa-sha256\n header.s=dk header.b=Y4APruH9;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fmczW6LRSz1yGY\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 02 Apr 2026 21:09:59 +1100 (AEDT)",
            "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1w8EzT-0000000HMCz-3Urg;\n\tThu, 02 Apr 2026 10:09:31 +0000",
            "from mailgw02.mediatek.com ([216.200.240.185])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1w8EzQ-0000000HMAw-3hM5\n\tfor hostap@lists.infradead.org;\n\tThu, 02 Apr 2026 10:09:30 +0000",
            "from mtkmbs13n2.mediatek.inc [(172.21.101.108)] by\n mailgw02.mediatek.com\n\t(envelope-from <allen.ye@mediatek.com>)\n\t(musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384\n 256/256)\n\twith ESMTP id 1418050107; Thu, 02 Apr 2026 02:54:15 -0700",
            "from mtkmbs13n2.mediatek.inc (172.21.101.108) by\n mtkmbs13n1.mediatek.inc (172.21.101.193) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.29; Thu, 2 Apr 2026 17:54:13 +0800",
            "from mtksitap99.mediatek.inc (10.233.130.16) by\n mtkmbs13n2.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id\n 15.2.2562.29 via Frontend Transport; Thu, 2 Apr 2026 17:54:13 +0800"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tMessage-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=tf8jasqf8Dgt4qQ8vC0c4YtlUZiAHWMsl4iXyR3FOGs=; b=3ieCJ7PIV/TYPL\n\t/zPZRSCKLMgOOClZxkThxn3DqRjwIpP/cQd4Iz4EKjZG5VEtBMV+fEs+sKUGf49jI93Q91AEcJdF6\n\t/XEgd6cTH5kmMQjqGUu/ZLGbgonV0tc7bJOYtRQjl/04RhrHHPNBakfblWJYaoJkBdH3j51Ci5Epj\n\tRCvx4CDFlvdF41DgraPf2e6qaNBqtnA1GASLGH4RQU9B1hdeaW3tz2iqgEaNQo3Jeo3hBBQsAaxwY\n\tLZnjDJcYAI1UGMQW2twn/QaKra6WoOi3xXObjc9FTU10TJ/elWaV/StCfv9fgUqwdv0x0QRAHvDR1\n\tFUv+eXwscBw9N2Ny9bRw==;",
            "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n d=mediatek.com; s=dk;\n\th=Content-Type:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From;\n bh=2ymFAUWGnzAgqBIkWg18Vc8kTpjanJgrLkJ+99kBw3k=;\n\tb=Y4APruH96MIkrJIN7WjZBTIK1E5DfAZkwNUATEnnniLh+Ze0aMg30XqLa18nBV9ihTC0OeFb0s2pjR7cB9gWwhBrmFJXX94r45H3TcVj/Expd+cvz4onmr6t9DOIrFapOuvyp/liM8TRPxK6mjC2Vemybts2oEN7gEMSEDZnY54=;"
        ],
        "X-UUID": [
            "e8f1a1842e7911f1a6de359d7043e138-20260402",
            "e8f1a1842e7911f1a6de359d7043e138-20260402"
        ],
        "X-CID-P-RULE": "Release_Ham",
        "X-CID-O-INFO": "VERSION:1.3.12,REQID:d90f5324-64a2-40fb-93e4-dcb249e5dc38,IP:0,U\n\tRL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION:\n\trelease,TS:0",
        "X-CID-META": "VersionHash:e7bac3a,CLOUDID:5b3785a7-e101-400a-acb5-0dbb5a913469,B\n\tulkID:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|836|865|888|898,TC:-5,Cont\n\tent:0|15|50,EDM:-3,IP:nil,URL:0,File:130,RT:0,Bulk:nil,QS:nil,BEC:-1,COL:0\n\t,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0",
        "X-CID-BVR": "2,SSN|SDN",
        "X-CID-BAS": "2,SSN|SDN,0,_",
        "X-CID-FACTOR": "TF_CID_SPAM_SNR",
        "X-CID-RHF": "D41D8CD98F00B204E9800998ECF8427E",
        "From": "Allen Ye <allen.ye@mediatek.com>",
        "To": "Jouni Malinen <j@w1.fi>",
        "CC": "<hostap@lists.infradead.org>, Felix Fietkau <nbd@nbd.name>, Evelyn Tsai\n\t<evelyn.tsai@mediatek.com>, \"Mark-MC . Lee\" <mark-mc.lee@mediatek.com>, Tarun\n Radhakrishnan <tarun.r@tataelxsi.co.in>, Allen Ye <allen.ye@mediatek.com>,\n\tKrishna Chaitanya <chaitanya.mgit@gmail.com>, Money Wang\n\t<money.wang@mediatek.com>",
        "Subject": "[PATCH v11 4/7] hostapd: Support 80/160/320 MHz widths in\n hostapd_is_usable_chans",
        "Date": "Thu, 2 Apr 2026 17:53:53 +0800",
        "Message-ID": "<20260402095356.1401176-5-allen.ye@mediatek.com>",
        "X-Mailer": "git-send-email 2.45.2",
        "In-Reply-To": "<20260402095356.1401176-1-allen.ye@mediatek.com>",
        "References": "<20260402095356.1401176-1-allen.ye@mediatek.com>",
        "MIME-Version": "1.0",
        "X-MTK": "N",
        "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ",
        "X-CRM114-CacheID": "sfid-20260402_030929_100237_48F77344 ",
        "X-CRM114-Status": "GOOD (  22.15  )",
        "X-Spam-Score": "-2.1 (--)",
        "X-Spam-Report": "Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam.  The original\n message has been attached to this so you can view it or label\n similar future email.  If you have any questions, see\n the administrator of that system for details.\n Content preview:  Update hostapd_is_usable_chans utility routine logic to\n take\n    into account 80MHz,\n 160MHz and 320MHz channel widths. This is a preliminary\n    patch to introduce AFC support. Tested-by: Felix Fietkau <nbd@nbd.name>\n Tested-by:\n    Krishna Chaitanya <chaitanya.mgit@gmail.com> Reviewed-by: Money Wang\n <money.wang@mediatek.com>\n    Signed-off-by: Allen Ye <allen.ye@mediatek.com> --- sr [...]\n Content analysis details:   (-2.1 points, 5.0 required)\n  pts rule name              description\n ---- ----------------------\n --------------------------------------------------\n -0.0 SPF_PASS               SPF: sender matches SPF record\n -0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n  0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n not necessarily valid\n -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from\n                             envelope-from domain\n -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from\n author's\n                             domain\n -0.1 DKIM_VALID             Message has at least one valid DKIM or DK\n signature\n -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n                             [score: 0.0000]\n  0.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to\n                              Validity was blocked.  See\n                             https://knowledge.validity.com/hc/en-us/articles/20961730681243\n                              for more information.\n                             [216.200.240.185 listed in\n sa-accredit.habeas.com]\n  0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE: The\n                             query to Validity was blocked.  See\n                             https://knowledge.validity.com/hc/en-us/articles/20961730681243\n                              for more information.\n                        [216.200.240.185 listed in\n sa-trusted.bondedsender.org]\n  0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to\n                              Validity was blocked.  See\n                             https://knowledge.validity.com/hc/en-us/articles/20961730681243\n                              for more information.\n                           [216.200.240.185 listed in\n bl.score.senderscore.com]\n  0.0 UNPARSEABLE_RELAY      Informational: message has unparseable relay\n lines",
        "X-BeenThere": "hostap@lists.infradead.org",
        "X-Mailman-Version": "2.1.34",
        "Precedence": "list",
        "List-Id": "<hostap.lists.infradead.org>",
        "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/hostap>,\n <mailto:hostap-request@lists.infradead.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.infradead.org/pipermail/hostap/>",
        "List-Post": "<mailto:hostap@lists.infradead.org>",
        "List-Help": "<mailto:hostap-request@lists.infradead.org?subject=help>",
        "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/hostap>,\n <mailto:hostap-request@lists.infradead.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Sender": "\"Hostap\" <hostap-bounces@lists.infradead.org>",
        "Errors-To": "hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"
    },
    "content": "Update hostapd_is_usable_chans utility routine logic to take into\naccount 80MHz, 160MHz and 320MHz channel widths.\nThis is a preliminary patch to introduce AFC support.\n\nTested-by: Felix Fietkau <nbd@nbd.name>\nTested-by: Krishna Chaitanya <chaitanya.mgit@gmail.com>\nReviewed-by: Money Wang <money.wang@mediatek.com>\nSigned-off-by: Allen Ye <allen.ye@mediatek.com>\n---\n src/ap/hw_features.c | 126 +++++++++++++++++++++++++++++++++----------\n src/ap/hw_features.h |   7 +++\n 2 files changed, 105 insertions(+), 28 deletions(-)",
    "diff": "diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c\nindex be8ed5352..984de976e 100644\n--- a/src/ap/hw_features.c\n+++ b/src/ap/hw_features.c\n@@ -1088,11 +1088,12 @@ static bool hostapd_is_usable_punct_bitmap(struct hostapd_iface *iface)\n  * 0 = not usable\n  * -1 = not currently usable due to 6 GHz NO-IR\n  */\n-static int hostapd_is_usable_chans(struct hostapd_iface *iface)\n+int hostapd_is_usable_chans(struct hostapd_iface *iface)\n {\n-\tint secondary_freq;\n \tstruct hostapd_channel_data *pri_chan;\n-\tint err, err2;\n+\tint err, central, oper_chwidth;\n+\tint start_chan, start_freq, chan_num, i;\n+\tbool is_24ghz, ht_chwidth, acs_80p80;\n \n \tif (!iface->current_mode)\n \t\treturn 0;\n@@ -1105,11 +1106,6 @@ static int hostapd_is_usable_chans(struct hostapd_iface *iface)\n \t\treturn 0;\n \t}\n \n-\terr = hostapd_is_usable_chan(iface, pri_chan->freq, 1);\n-\tif (err <= 0) {\n-\t\twpa_printf(MSG_ERROR, \"Primary frequency not allowed\");\n-\t\treturn err;\n-\t}\n \terr = hostapd_is_usable_edmg(iface);\n \tif (err <= 0)\n \t\treturn err;\n@@ -1117,38 +1113,112 @@ static int hostapd_is_usable_chans(struct hostapd_iface *iface)\n \tif (!hostapd_is_usable_punct_bitmap(iface))\n \t\treturn 0;\n \n-\tif (!iface->conf->secondary_channel)\n-\t\treturn 1;\n+\toper_chwidth = hostapd_get_oper_chwidth(iface->conf);\n+\tcentral = hostapd_get_oper_centr_freq_seg0_idx(iface->conf);\n+\n+\tis_24ghz = (iface->current_mode->mode <= HOSTAPD_MODE_IEEE80211G);\n+\tht_chwidth = (oper_chwidth == CONF_OPER_CHWIDTH_USE_HT);\n+\t/*\n+\t * The central channel is not filled in acs_adjust_center_freq() after\n+\t * ACS of 80p80. In the case we only check the primary 40 MHz\n+\t */\n+\tacs_80p80 = (oper_chwidth == CONF_OPER_CHWIDTH_80P80MHZ && !central);\n+\tif (is_24ghz || ht_chwidth || acs_80p80) {\n+\t\tint secondary_freq, err2;\n+\n+\t\terr = hostapd_is_usable_chan(iface, iface->freq, 0);\n+\t\tif (err <= 0 || !iface->conf->secondary_channel)\n+\t\t\treturn err;\n+\n+\t\tsecondary_freq =\n+\t\t\tiface->freq + iface->conf->secondary_channel * 20;\n+\t\terr = hostapd_is_usable_chan(iface, secondary_freq, 0);\n+\n+\t\tif (err > 0) {\n+\t\t\tif (iface->conf->secondary_channel == 1 &&\n+\t\t\t    (pri_chan->allowed_bw & HOSTAPD_CHAN_WIDTH_40P))\n+\t\t\t\treturn 1;\n+\t\t\tif (iface->conf->secondary_channel == -1 &&\n+\t\t\t    (pri_chan->allowed_bw & HOSTAPD_CHAN_WIDTH_40M))\n+\t\t\t\treturn 1;\n+\t\t\terr = 0;\n+\t\t}\n+\n+\t\tif (!iface->conf->ht40_plus_minus_allowed)\n+\t\t\treturn err;\n+\n+\t\t/* Both HT40+ and HT40- are set, check the other secondary 40 */\n+\t\tsecondary_freq =\n+\t\t\tiface->freq - iface->conf->secondary_channel * 20;\n+\t\terr2 = hostapd_is_usable_chan(iface, secondary_freq, 0);\n+\t\tif (err2 <= 0)\n+\t\t\treturn err;\n \n-\terr = hostapd_is_usable_chan(iface, iface->freq +\n-\t\t\t\t     iface->conf->secondary_channel * 20, 0);\n-\tif (err > 0) {\n \t\tif (iface->conf->secondary_channel == 1 &&\n-\t\t    (pri_chan->allowed_bw & HOSTAPD_CHAN_WIDTH_40P))\n+\t\t    (pri_chan->allowed_bw & HOSTAPD_CHAN_WIDTH_40M)) {\n+\t\t\tiface->conf->secondary_channel = -1;\n \t\t\treturn 1;\n+\t\t}\n+\n \t\tif (iface->conf->secondary_channel == -1 &&\n-\t\t    (pri_chan->allowed_bw & HOSTAPD_CHAN_WIDTH_40M))\n+\t\t    (pri_chan->allowed_bw & HOSTAPD_CHAN_WIDTH_40P)) {\n+\t\t\tiface->conf->secondary_channel = 1;\n \t\t\treturn 1;\n-\t}\n-\tif (!iface->conf->ht40_plus_minus_allowed)\n+\t\t}\n \t\treturn err;\n+\t}\n \n-\t/* Both HT40+ and HT40- are set, pick a valid secondary channel */\n-\tsecondary_freq = iface->freq + 20;\n-\terr2 = hostapd_is_usable_chan(iface, secondary_freq, 0);\n-\tif (err2 > 0 && (pri_chan->allowed_bw & HOSTAPD_CHAN_WIDTH_40P)) {\n-\t\tiface->conf->secondary_channel = 1;\n-\t\treturn 1;\n+\tswitch (oper_chwidth) {\n+\tcase CONF_OPER_CHWIDTH_80MHZ:\n+\tcase CONF_OPER_CHWIDTH_80P80MHZ:\n+\t\tchan_num = 4;\n+\t\tbreak;\n+\tcase CONF_OPER_CHWIDTH_160MHZ:\n+\t\tchan_num = 8;\n+\t\tbreak;\n+\tcase CONF_OPER_CHWIDTH_320MHZ:\n+\t\tchan_num = 16;\n+\t\tbreak;\n+\tdefault:\n+\t\treturn 0;\n \t}\n+\tstart_chan = central - chan_num * 2 + 2;\n+\tstart_freq = hw_get_freq(iface->current_mode, start_chan);\n \n-\tsecondary_freq = iface->freq - 20;\n-\terr2 = hostapd_is_usable_chan(iface, secondary_freq, 0);\n-\tif (err2 > 0 && (pri_chan->allowed_bw & HOSTAPD_CHAN_WIDTH_40M)) {\n-\t\tiface->conf->secondary_channel = -1;\n+\tif (!start_freq) {\n+\t\twpa_printf(MSG_ERROR, \"frequency not present\");\n+\t\treturn 0;\n+\t}\n+\n+\tfor (i = 0; i < chan_num; i++) {\n+\t\tint freq = start_freq + i * 20;\n+\n+\t\terr = hostapd_is_usable_chan(iface, freq, 0);\n+\t\tif (err <= 0) {\n+\t\t\twpa_printf(MSG_ERROR, \"frequency %d is not allowed\",\n+\t\t\t\t   freq);\n+\t\t\treturn err;\n+\t\t}\n+\t}\n+\n+\tif (oper_chwidth != CONF_OPER_CHWIDTH_80P80MHZ)\n \t\treturn 1;\n+\n+\tcentral = hostapd_get_oper_centr_freq_seg1_idx(iface->conf);\n+\tstart_chan = central - chan_num * 2 + 2;\n+\tstart_freq = hw_get_freq(iface->current_mode, start_chan);\n+\tfor (i = 0; i < chan_num; i++) {\n+\t\tint freq = start_freq + i * 20;\n+\n+\t\terr = hostapd_is_usable_chan(iface, freq, 0);\n+\t\tif (err <= 0) {\n+\t\t\twpa_printf(MSG_ERROR, \"frequency %d is not allowed\",\n+\t\t\t\t   freq);\n+\t\t\treturn err;\n+\t\t}\n \t}\n \n-\treturn err;\n+\treturn 1;\n }\n \n \ndiff --git a/src/ap/hw_features.h b/src/ap/hw_features.h\nindex 6f945cc77..eb065b67b 100644\n--- a/src/ap/hw_features.h\n+++ b/src/ap/hw_features.h\n@@ -32,6 +32,7 @@ int hostapd_hw_skip_mode(struct hostapd_iface *iface,\n int hostapd_determine_mode(struct hostapd_iface *iface);\n void hostapd_free_multi_hw_info(struct hostapd_multi_hw_info *multi_hw_info);\n int hostapd_set_current_hw_info(struct hostapd_iface *iface, int oper_freq);\n+int hostapd_is_usable_chans(struct hostapd_iface *iface);\n #else /* NEED_AP_MLME */\n static inline void\n hostapd_free_hw_features(struct hostapd_hw_modes *hw_features,\n@@ -115,6 +116,12 @@ static inline int hostapd_set_current_hw_info(struct hostapd_iface *iface,\n {\n \treturn 0;\n }\n+\n+static inline int hostapd_is_usable_chans(struct hostapd_iface *iface)\n+{\n+\treturn 1;\n+}\n+\n #endif /* NEED_AP_MLME */\n \n #endif /* HW_FEATURES_H */\n",
    "prefixes": [
        "v11",
        "4/7"
    ]
}