From patchwork Fri Nov 4 10:37:59 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Berg X-Patchwork-Id: 123595 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from maxx.maxx.shmoo.com (maxx.shmoo.com [205.134.188.171]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "maxx.shmoo.com", Issuer "CA Cert Signing Authority" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 458C1B6F0E for ; Fri, 4 Nov 2011 21:42:15 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id AB7D617C063; Fri, 4 Nov 2011 06:42:12 -0400 (EDT) X-Virus-Scanned: amavisd-new at maxx.shmoo.com Received: from maxx.maxx.shmoo.com ([127.0.0.1]) by localhost (maxx.shmoo.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id x5vb1RCDeQuh; Fri, 4 Nov 2011 06:42:12 -0400 (EDT) Received: from maxx.shmoo.com (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id 99AE99D2DE; Fri, 4 Nov 2011 06:40:30 -0400 (EDT) X-Original-To: mailman-post+hostap@maxx.shmoo.com Delivered-To: mailman-post+hostap@maxx.shmoo.com Received: from localhost (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id 9EEC99D2D3 for ; Fri, 4 Nov 2011 06:40:28 -0400 (EDT) X-Virus-Scanned: amavisd-new at maxx.shmoo.com Received: from maxx.maxx.shmoo.com ([127.0.0.1]) by localhost (maxx.shmoo.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id d6Gwf63byNov for ; Fri, 4 Nov 2011 06:40:24 -0400 (EDT) Received: from sipsolutions.net (he.sipsolutions.net [78.46.109.217]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by maxx.maxx.shmoo.com (Postfix) with ESMTPS id 8EAB59D2DA for ; Fri, 4 Nov 2011 06:39:39 -0400 (EDT) Received: by sipsolutions.net with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.77) (envelope-from ) id 1RMHBS-0001HF-IB for hostap@lists.shmoo.com; Fri, 04 Nov 2011 11:39:38 +0100 Message-Id: <20111104103810.914657040@sipsolutions.net> User-Agent: quilt/0.48-1 Date: Fri, 04 Nov 2011 11:37:59 +0100 From: Johannes Berg To: hostap@lists.shmoo.com Subject: [PATCH 10/18] driver_nl80211: store frequency in bss struct References: <20111104103749.617144560@sipsolutions.net> Content-Disposition: inline; filename=0010-driver_nl80211-store-frequency-in-bss-struct.patch Mime-Version: 1.0 X-Mailer: Evolution 2.30.3 X-BeenThere: hostap@lists.shmoo.com X-Mailman-Version: 2.1.9 Precedence: list List-Id: HostAP Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: hostap-bounces@lists.shmoo.com Errors-To: hostap-bounces@lists.shmoo.com From: Johannes Berg Storing the frequency in the bss struct allows using it for frame commands in AP mode and not relying on the driver struct as much, which is good for hostapd mode. Signed-hostap: Johannes Berg --- src/drivers/driver_nl80211.c | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 35185aa..7a6e5b9 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -208,6 +208,8 @@ struct i802_bss { unsigned int added_if_into_bridge:1; unsigned int added_bridge:1; + int freq; + struct nl80211_handles nl_preq; }; @@ -255,7 +257,6 @@ struct wpa_driver_nl80211_data { u64 send_action_cookie; unsigned int last_mgmt_freq; - unsigned int ap_oper_freq; struct wpa_driver_scan_filter *filter_ssids; size_t num_filter_ssids; @@ -4355,7 +4356,7 @@ static int wpa_driver_nl80211_send_mlme(void *priv, const u8 *data, } if (drv->device_ap_sme && is_ap_interface(drv->nlmode)) { - return nl80211_send_frame_cmd(bss, drv->ap_oper_freq, 0, + return nl80211_send_frame_cmd(bss, bss->freq, 0, data, data_len, NULL, 0, 0); } @@ -4573,10 +4574,11 @@ static int wpa_driver_nl80211_set_ap(void *priv, } -static int wpa_driver_nl80211_set_freq(struct wpa_driver_nl80211_data *drv, +static int wpa_driver_nl80211_set_freq(struct i802_bss *bss, int freq, int ht_enabled, int sec_channel_offset) { + struct wpa_driver_nl80211_data *drv = bss->drv; struct nl_msg *msg; int ret; @@ -4609,8 +4611,10 @@ static int wpa_driver_nl80211_set_freq(struct wpa_driver_nl80211_data *drv, } ret = send_and_recv_msgs(drv, msg, NULL, NULL); - if (ret == 0) + if (ret == 0) { + bss->freq = freq; return 0; + } wpa_printf(MSG_DEBUG, "nl80211: Failed to set channel (freq=%d): " "%d (%s)", freq, ret, strerror(-ret)); nla_put_failure: @@ -5454,13 +5458,11 @@ static int wpa_driver_nl80211_ap(struct wpa_driver_nl80211_data *drv, nlmode = NL80211_IFTYPE_AP; if (wpa_driver_nl80211_set_mode(&drv->first_bss, nlmode) || - wpa_driver_nl80211_set_freq(drv, params->freq, 0, 0)) { + wpa_driver_nl80211_set_freq(&drv->first_bss, params->freq, 0, 0)) { nl80211_remove_monitor_interface(drv); return -1; } - drv->ap_oper_freq = params->freq; - return 0; } @@ -6086,8 +6088,7 @@ static int wpa_driver_nl80211_set_supp_port(void *priv, int authorized) static int i802_set_freq(void *priv, struct hostapd_freq_params *freq) { struct i802_bss *bss = priv; - struct wpa_driver_nl80211_data *drv = bss->drv; - return wpa_driver_nl80211_set_freq(drv, freq->freq, freq->ht_enabled, + return wpa_driver_nl80211_set_freq(bss, freq->freq, freq->ht_enabled, freq->sec_channel_offset); }