From patchwork Thu Oct 5 01:38:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Mitsyanko X-Patchwork-Id: 9986277 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B1F81605B2 for ; Thu, 5 Oct 2017 01:38:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A366028C06 for ; Thu, 5 Oct 2017 01:38:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 952CF28C45; Thu, 5 Oct 2017 01:38:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 07E0A28C33 for ; Thu, 5 Oct 2017 01:38:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751290AbdJEBiX (ORCPT ); Wed, 4 Oct 2017 21:38:23 -0400 Received: from mail-sn1nam01on0084.outbound.protection.outlook.com ([104.47.32.84]:52980 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751221AbdJEBiT (ORCPT ); Wed, 4 Oct 2017 21:38:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quantenna.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=4s+52D5aUEWZS/80CcL5qfFstEFQo0nRtrebVS0DvGU=; b=CtJ1PWQDQswK7OBUChkPyJGVbKH5fT6Cza0S7Vq0zEA5RI4EZHo/ImumhmNV0qay+0M1AbnC/Nx4cj+Y5o8BBhDFyC39ehNpkBg0nbi/3iEy99c2g3x3HgWwnKmxLM0DSQc3vknU14y0c9j9SAMuPUtfncHRuJ3HIQXUNtA9/9c= Received: from dodo-dell.quantenna.com (12.131.200.68) by SN1PR0501MB2047.namprd05.prod.outlook.com (10.163.227.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.5; Thu, 5 Oct 2017 01:38:17 +0000 From: igor.mitsyanko.os@quantenna.com To: linux-wireless@vger.kernel.org Cc: sergey.matyukevich.os@quantenna.com, avinashp@quantenna.com, johannes@sipsolutions.net Subject: [PATCH V2 1/8] qtnfmac: do not cache AP settings in driver structures Date: Wed, 4 Oct 2017 18:38:06 -0700 Message-Id: <20171005013813.13332-2-igor.mitsyanko.os@quantenna.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171005013813.13332-1-igor.mitsyanko.os@quantenna.com> References: <20171005013813.13332-1-igor.mitsyanko.os@quantenna.com> MIME-Version: 1.0 X-Originating-IP: [12.131.200.68] X-ClientProxiedBy: MWHPR20CA0031.namprd20.prod.outlook.com (10.172.102.145) To SN1PR0501MB2047.namprd05.prod.outlook.com (10.163.227.20) X-MS-Office365-Filtering-Correlation-Id: 59bd6f62-d4ab-4ec5-8e27-08d50b91c10d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:SN1PR0501MB2047; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0501MB2047; 3:1pxnsH8dPcMc/E5XCBn3a/lfuO0XLRrgCFj2xCwYvQe2jYacPPJ7d8ykC/8Irw9lISjtP3YH6u1FP9D02f6Nb68CdAXILL0AHwb9/dYPgOrnTHKx+MsFI6omNaMHMu9phTT6vUmq26MrHFCGH4F2TV0yffK0zCEAIkgZviy/iVUfnJrCYB0O46C9j80BDtt9YLbzL+QINYdP/x4vLPW6YIUbFwa31hth4ZSy0xLZ25oRNtEnHFSJB7YBa9ne3APg; 25:5/G5rqjD6e4AqKI5SkuyMStOeuVJRfwt39R49kflKjezEr4LCrzsYPFtunBokU0Y9rHDzbJngbxx6im/YPjBRWYVm8txJ10ssi4ra5e9aCdLQXTP7JPjgAU99fnjeycWLpzJgbaru3+7ZY2HyxypweEc/Zr5QI1gYKo4HHKcmcZb6ACglchhu5NR5M4RUY0IWJWX8hLFxxl7nycJ71djFyz1ShkFY6BuqDMwT+VMI3k9L0z/BsRKyaeBxcry4/E6wnD28Y1c43ZhVHL2t+bRuEGWI0zbgLRzrErlR7cjMhODZNkxeOweGSZlkyhekE9lNXbqS2CKksBkt/ghZ7yl4Q==; 31:v1TIygO9imYpvarva4EDfzV8LN1XIFz7Wf884APTkmDTguVmhSPRs0iNdFXORWbCGEbmJy010e6A4NcG7oHnumzUws423saRL6YQEF7OWgF8zEZmPHmpKnJG2gvfpH26j7GW3m1TH6dNk6MrqgjEBOs6J87EkkAAbaJcmi5vqdoftaBWc6jdS+QfZr8fVSQAa206on5+a8QnpP95t2CN5DXN+bTMCax7S3YXRpW6va0= X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PR0501MB2047: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=igor.mitsyanko.os@quantenna.com; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0501MB2047; 20:LyfVhoSf3yzK1o5uVMe0PeUc+c/yYnQDMkM0/dcWRLdiaX3PzR4LzRdJInJtxmHff6osgEC379+JfR5Ho3x59SBfARMKBfJXAkBkk3gJBT037WjJ7JIqCKgJXDgbNvKM0DfhTK0yjJNQ/Ihbmf86xclcIU3pA6HKIrzK+pWNfCiO357Jii+giJK7Lr5OHGca7VU+zwcW19e+hj1yoT54MKRDpZspDG3i8LA8AklT4PsIKli8EyOTa0JdLuvbMzA4XqnraM7FJmuREx+Wvd0AYlsnOnX9sx3BhBOdMqaTrVTSQiX7K4w65F2Kq5LQ23wSq1NHDuEYiTxnzCcLJf+5pSVdw49bMQOrAPy8ZajOtKvoCRcUC8RECr8HZxIQCKaBt7TLbpEO+eR5wM2RC+kDX65CYnTjD1Ca/9G4RsJFCQVN2ppI4mfZ7oQVj/5zDcKL26NgdjOltGbkt2K564pl0mzqEbL6sE+v1ncRRKOXvGuj01MpCs+mYlJX0KIBAA0b6QdI/JfznHXVbhUs5KKc/IXOKUlbeWcM5Og31ighp3R7IwvUuGQIO47nJ4vPKNV2Q/X9lNAYxf2rYFT2UB/3viSE3QkNFm3HNZm7JfRA7lE=; 4:NGrZMU8zzMDm9irLIHq/BPXnKdk4qj8lOES1g4hy0IA4sR+SAwLb7b1IVtj1waiAy61XqBysL+YPcbMbiOx4SobUx3rNomTVNkiJKV3/6jnuXAGwQvzfQdaqv6RBU8M+qpVC2igCR2kCk9BlmxCl0df/o1XBkeONumZx5+d0wRTzy8zTKMJ+jHnAFaUYTfYZXgmv9ZvCBX9QghWq8JovszTcYWrQIsVs88cMWGcls1QGNx5r+tx7d/dAw/RuBBnm X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:SN1PR0501MB2047; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN1PR0501MB2047; X-Forefront-PRVS: 04519BA941 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(39830400002)(189002)(199003)(25786009)(106356001)(103116003)(105586002)(2351001)(33646002)(69596002)(53416004)(2361001)(3846002)(16526018)(85782001)(53936002)(66066001)(16586007)(2906002)(316002)(1076002)(47776003)(6116002)(478600001)(7736002)(8676002)(68736007)(86362001)(6666003)(97736004)(101416001)(6486002)(81166006)(76176999)(48376002)(189998001)(2950100002)(50986999)(8936002)(5660300001)(4326008)(36756003)(6916009)(50226002)(50466002)(5003940100001)(305945005)(81156014)(9686003)(85772001)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0501MB2047; H:dodo-dell.quantenna.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: quantenna.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0501MB2047; 23:zo245iO+5bW4orZ/MX50z+rNxFO5+aWPRv/xusA?= =?us-ascii?Q?VzVM0oLeTw3AQMRcPhldDjOYkVwYWW0J5mgpMuKD+TbLORgk1EzeW/OZIFn1?= =?us-ascii?Q?AIe9jFHdaAd4g0uo0bv6WL0aZ0b+Uwmla+IKuCWKk0EN60NahFjIfyQCkOh8?= =?us-ascii?Q?B4IfZi1NOvYnoHlGrmX8oCxIDKhqShzu39DqVtVpNf74YyROpwU/9eAAuJSS?= =?us-ascii?Q?DJeuJ4vjaU2VLOr4/4BnP2IQDMKQtDNHzFE0L/QUKZtNDALfy4qbdAJrFm8K?= =?us-ascii?Q?8HkP+wPhzpO5u5XLOJtp1DUuIZok5WGBLgN8T7Uppk0VWOWz/swwGRLmvYQb?= =?us-ascii?Q?esRlMJ1IbwolrN6KLDsZYLUcCN6/N05hvkBTfChZwUMN7HcaFtwozBvC9IKt?= =?us-ascii?Q?i6Sv0qEkDwsiQneYDeoKnKFUv3zHJxuj4Xu5MsrCRFiuOBKxZwRWkbVitUm/?= =?us-ascii?Q?sN4jZx2sXHfkM/2qYasFzfOG4MT2XqyZ+s+6C0rTrobRtfV+Z7YU37aUhph3?= =?us-ascii?Q?Y/hE5Ly1oFfNQakupNe/zWmCJBrvFTou+eYup/GyacZzjo0a2CVI9QV/c/gR?= =?us-ascii?Q?8ubE1SnjlRHBRiRYWNQDxVmooaTZ2mzmwx3viysFt5Si3x4R81Hd0T8pjQAS?= =?us-ascii?Q?lgXfs9HFFdmbNvNV3MjwASxjPflCTO0H1uEk02wvOg99ncALVpW+yH+6e4J1?= =?us-ascii?Q?avdAHv+YozaZfoy19XkdQ4MXgvHzTeG+thxGBsRw5Jg8A4n3g2v2PsjpZ0lz?= =?us-ascii?Q?CXfnY86HxeiQTQlYe9QGu91qoeuBgT/e5OH8MyB6hH/Nb6D0Lyb5Le6SgW+O?= =?us-ascii?Q?4Qc4slU3S3/ZcQOLAiMQQPaiWsRWuJKZYNvS118y1VIRRR2S3af1f4ZKIgy5?= =?us-ascii?Q?o3w0jZRZpBQ8S8DgSj6diegGdgO8/axELPlVAUdBPEgKTQVcnmnUMHfwNwi8?= =?us-ascii?Q?2x3cym4+7H8+xv2E1OvMw7QJEBT2O4L1OnSjzloZ3DnCxgbpkImm1cCcTvfp?= =?us-ascii?Q?507JileRhy/gENPbPrRLelP4NDvM5f1Kte2yHKGyd+1Kt/k0AyyDewqFf1fd?= =?us-ascii?Q?hA8HYSV4EqJwdGpwzCfEPV0vbBVlYIdeNP/1M9g4/I4dUxwmVAotwGJqoTWl?= =?us-ascii?Q?/Qyand1d64Q4yUDg7AmbLD+Wd4j4WOBsb5SwX09F6lokG5roSD+WVJ9toYCA?= =?us-ascii?Q?EOKSeHwWzDtpG+IdUKx2MPgOfrkUhQMEcnvtQluY0Jahp+nCIbdGc62Ii5EE?= =?us-ascii?Q?Q6WNl9RYlvoxK3qZDhb4=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0501MB2047; 6:KPLUuq0S3ZtFtNBBIqboJYLVUKwvy+WXoZ+q328JFyZXgj22xNDNVDhI52kneYrPaUkjIipZGhUvV6TX1b4wNOmxzjHusWW7Mv6ObQuTmozifBgc5K8moOgBfPQxxCxfPrBBlKYXtxYTKZhBmrRakoL/JSXVKS/f4SOnHWrsAqmov3ePc878l1Z9ACC0DKZepRZ9cxG25z+jpSC2mGqC0OFGWSQyrQFbAK7jyVmoJuGNO7HLT1MovGSFwh17JAQs36Ge9aM49idU/zGxyx1btUEMCNCJVHvXBjFDq3GyP1u6p8k07r2v70i3I7VO3LTeXP4AuuYJkC3r19fGumRN/Q==; 5:FMy7pv7UdY5fRDQ1RCQ5zh3av96o9QQ9p5d+v8ZqWp9/pl2+qKDYz9Ul8tl79tkWX2arAA41HfkBTcehUBhM/7HRZ/4buxAyvaNSz/uV8VqPD4klnydAmGFgqPxZ3QedTytQB0H0oXMig9Dn2ZPmrA==; 24:8pza6emTIO4cDmqNYKF3PKvIyZLkGV5jwnUb8+cqlYk9Vrw7AtblcNlHlXQdyxYtgb+bwCYZcdlFgitmdYqZsdiLNYZZX0t+DOWhXqTfgh8=; 7:z0NbXrp4v3Xf+RriBkTsmjkg3QdvN8NHvDIc6MJdti6+zMs1CViHFPJopfAzLwgVdDWAU/LGTIghhTsZNI0lHvxdw1o3lKVjG5C6asKFxQtoIZsqTqjI14d1WtXipX6KMZkC93VFrLyobUXSZIiKkZs1BiCrZnQa1SGNgU0vixc3FKUkeRkpAXHun4tSVJzr2D/HRZ9k4hVjhf/hzSOnEZh52Wn8HTZasQGmMH5bBCw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: quantenna.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2017 01:38:17.5003 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a355dbce-62b4-4789-9446-c1d5582180ff X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0501MB2047 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Igor Mitsyanko Cached AP setings are passed to WiFi card right after they are initialized and are never used for anything else. There is no point in keeping them in driver state. Signed-off-by: Igor Mitsyanko --- drivers/net/wireless/quantenna/qtnfmac/cfg80211.c | 17 +-------- drivers/net/wireless/quantenna/qtnfmac/commands.c | 46 +++++++++++------------ drivers/net/wireless/quantenna/qtnfmac/commands.h | 3 +- 3 files changed, 25 insertions(+), 41 deletions(-) diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c index 262e8cf..fe157f5 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c +++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c @@ -267,7 +267,6 @@ static int qtnf_start_ap(struct wiphy *wiphy, struct net_device *dev, { struct qtnf_vif *vif = qtnf_netdev_get_priv(dev); struct qtnf_wmac *mac = wiphy_priv(wiphy); - struct qtnf_bss_config *bss_cfg; int ret; if (!cfg80211_chandef_identical(&mac->chandef, &settings->chandef)) { @@ -278,21 +277,7 @@ static int qtnf_start_ap(struct wiphy *wiphy, struct net_device *dev, settings->chandef.chan->center_freq); } - bss_cfg = &vif->bss_cfg; - memset(bss_cfg, 0, sizeof(*bss_cfg)); - - bss_cfg->bcn_period = settings->beacon_interval; - bss_cfg->dtim = settings->dtim_period; - bss_cfg->auth_type = settings->auth_type; - bss_cfg->privacy = settings->privacy; - - bss_cfg->ssid_len = settings->ssid_len; - memcpy(&bss_cfg->ssid, settings->ssid, bss_cfg->ssid_len); - - memcpy(&bss_cfg->crypto, &settings->crypto, - sizeof(struct cfg80211_crypto_settings)); - - ret = qtnf_cmd_send_config_ap(vif); + ret = qtnf_cmd_send_config_ap(vif, settings); if (ret) { pr_err("VIF%u.%u: failed to push config to FW\n", vif->mac->macid, vif->vifid); diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c index 8f95f98..88fdf7d 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/commands.c +++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c @@ -181,10 +181,10 @@ int qtnf_cmd_send_start_ap(struct qtnf_vif *vif) return ret; } -int qtnf_cmd_send_config_ap(struct qtnf_vif *vif) +int qtnf_cmd_send_config_ap(struct qtnf_vif *vif, + const struct cfg80211_ap_settings *s) { struct sk_buff *cmd_skb; - struct qtnf_bss_config *bss_cfg = &vif->bss_cfg; struct cfg80211_chan_def *chandef = &vif->mac->chandef; struct qlink_tlv_channel *qchan; struct qlink_auth_encr aen; @@ -200,11 +200,13 @@ int qtnf_cmd_send_config_ap(struct qtnf_vif *vif) qtnf_bus_lock(vif->mac->bus); - qtnf_cmd_skb_put_tlv_arr(cmd_skb, WLAN_EID_SSID, bss_cfg->ssid, - bss_cfg->ssid_len); + if (s->ssid && s->ssid_len > 0 && s->ssid_len <= IEEE80211_MAX_SSID_LEN) + qtnf_cmd_skb_put_tlv_arr(cmd_skb, WLAN_EID_SSID, s->ssid, + s->ssid_len); + qtnf_cmd_skb_put_tlv_u16(cmd_skb, QTN_TLV_ID_BCN_PERIOD, - bss_cfg->bcn_period); - qtnf_cmd_skb_put_tlv_u8(cmd_skb, QTN_TLV_ID_DTIM, bss_cfg->dtim); + s->beacon_interval); + qtnf_cmd_skb_put_tlv_u8(cmd_skb, QTN_TLV_ID_DTIM, s->dtim_period); qchan = skb_put_zero(cmd_skb, sizeof(*qchan)); qchan->hdr.type = cpu_to_le16(QTN_TLV_ID_CHANNEL); @@ -214,26 +216,22 @@ int qtnf_cmd_send_config_ap(struct qtnf_vif *vif) ieee80211_frequency_to_channel(chandef->chan->center_freq)); memset(&aen, 0, sizeof(aen)); - aen.auth_type = bss_cfg->auth_type; - aen.privacy = !!bss_cfg->privacy; - aen.mfp = bss_cfg->mfp; - aen.wpa_versions = cpu_to_le32(bss_cfg->crypto.wpa_versions); - aen.cipher_group = cpu_to_le32(bss_cfg->crypto.cipher_group); - aen.n_ciphers_pairwise = cpu_to_le32( - bss_cfg->crypto.n_ciphers_pairwise); + aen.auth_type = s->auth_type; + aen.privacy = !!s->privacy; + aen.mfp = 0; + aen.wpa_versions = cpu_to_le32(s->crypto.wpa_versions); + aen.cipher_group = cpu_to_le32(s->crypto.cipher_group); + aen.n_ciphers_pairwise = cpu_to_le32(s->crypto.n_ciphers_pairwise); for (i = 0; i < QLINK_MAX_NR_CIPHER_SUITES; i++) - aen.ciphers_pairwise[i] = cpu_to_le32( - bss_cfg->crypto.ciphers_pairwise[i]); - aen.n_akm_suites = cpu_to_le32( - bss_cfg->crypto.n_akm_suites); + aen.ciphers_pairwise[i] = + cpu_to_le32(s->crypto.ciphers_pairwise[i]); + aen.n_akm_suites = cpu_to_le32(s->crypto.n_akm_suites); for (i = 0; i < QLINK_MAX_NR_AKM_SUITES; i++) - aen.akm_suites[i] = cpu_to_le32( - bss_cfg->crypto.akm_suites[i]); - aen.control_port = bss_cfg->crypto.control_port; - aen.control_port_no_encrypt = - bss_cfg->crypto.control_port_no_encrypt; - aen.control_port_ethertype = cpu_to_le16(be16_to_cpu( - bss_cfg->crypto.control_port_ethertype)); + aen.akm_suites[i] = cpu_to_le32(s->crypto.akm_suites[i]); + aen.control_port = s->crypto.control_port; + aen.control_port_no_encrypt =s->crypto.control_port_no_encrypt; + aen.control_port_ethertype = + cpu_to_le16(be16_to_cpu(s->crypto.control_port_ethertype)); qtnf_cmd_skb_put_tlv_arr(cmd_skb, QTN_TLV_ID_CRYPTO, (u8 *)&aen, sizeof(aen)); diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.h b/drivers/net/wireless/quantenna/qtnfmac/commands.h index 8a5a82c..e87c4a4 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/commands.h +++ b/drivers/net/wireless/quantenna/qtnfmac/commands.h @@ -33,7 +33,8 @@ int qtnf_cmd_send_del_intf(struct qtnf_vif *vif); int qtnf_cmd_get_mac_chan_info(struct qtnf_wmac *mac, struct ieee80211_supported_band *band); int qtnf_cmd_send_regulatory_config(struct qtnf_wmac *mac, const char *alpha2); -int qtnf_cmd_send_config_ap(struct qtnf_vif *vif); +int qtnf_cmd_send_config_ap(struct qtnf_vif *vif, + const struct cfg80211_ap_settings *s); int qtnf_cmd_send_start_ap(struct qtnf_vif *vif); int qtnf_cmd_send_stop_ap(struct qtnf_vif *vif); int qtnf_cmd_send_register_mgmt(struct qtnf_vif *vif, u16 frame_type, bool reg);