From patchwork Mon Nov 7 14:59:38 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Berg X-Patchwork-Id: 9415359 X-Patchwork-Delegate: johannes@sipsolutions.net 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 482B160585 for ; Mon, 7 Nov 2016 15:00:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3ADF328C42 for ; Mon, 7 Nov 2016 15:00:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2FD6028C4D; Mon, 7 Nov 2016 15:00:09 +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=-6.9 required=2.0 tests=BAYES_00,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 3381328C42 for ; Mon, 7 Nov 2016 15:00:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932356AbcKGPAH (ORCPT ); Mon, 7 Nov 2016 10:00:07 -0500 Received: from s3.sipsolutions.net ([5.9.151.49]:36800 "EHLO sipsolutions.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932279AbcKGO74 (ORCPT ); Mon, 7 Nov 2016 09:59:56 -0500 Received: by sipsolutions.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.87) (envelope-from ) id 1c3lOr-00031L-P3; Mon, 07 Nov 2016 15:59:53 +0100 From: Benjamin Berg To: Johannes Berg Cc: linux-wireless@vger.kernel.org, sw@simonwunderlich.de, Benjamin Berg , Benjamin Berg Subject: [PATCH 3/8] ibss: Use common freqchan helper for joining an ibss Date: Mon, 7 Nov 2016 15:59:38 +0100 Message-Id: <20161107145943.16761-4-benjamin@sipsolutions.net> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20161107145943.16761-1-benjamin@sipsolutions.net> References: <20161107145943.16761-1-benjamin@sipsolutions.net> 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 Simplify code by using the helper which has been introduced earlier. Signed-off-by: Benjamin Berg --- ibss.c | 72 ++++++++++-------------------------------------------------------- 1 file changed, 10 insertions(+), 62 deletions(-) diff --git a/ibss.c b/ibss.c index 2b0b495..84f1e95 100644 --- a/ibss.c +++ b/ibss.c @@ -13,45 +13,14 @@ static int join_ibss(struct nl80211_state *state, enum id_input id) { char *end; + struct chandef chandef; unsigned char abssid[6]; unsigned char rates[NL80211_MAX_SUPP_RATES]; int n_rates = 0; char *value = NULL, *sptr = NULL; float rate; int bintval; - unsigned int i; - unsigned long freq; - const struct chanmode *chanmode_selected = NULL; - static const struct chanmode chanmode[] = { - { .name = "HT20", - .width = NL80211_CHAN_WIDTH_20, - .freq1_diff = 0, - .chantype = NL80211_CHAN_HT20 }, - { .name = "HT40+", - .width = NL80211_CHAN_WIDTH_40, - .freq1_diff = 10, - .chantype = NL80211_CHAN_HT40PLUS }, - { .name = "HT40-", - .width = NL80211_CHAN_WIDTH_40, - .freq1_diff = -10, - .chantype = NL80211_CHAN_HT40MINUS }, - { .name = "NOHT", - .width = NL80211_CHAN_WIDTH_20_NOHT, - .freq1_diff = 0, - .chantype = NL80211_CHAN_NO_HT }, - { .name = "5MHz", - .width = NL80211_CHAN_WIDTH_5, - .freq1_diff = 0, - .chantype = -1 }, - { .name = "10MHz", - .width = NL80211_CHAN_WIDTH_10, - .freq1_diff = 0, - .chantype = -1 }, - { .name = "80MHz", - .width = NL80211_CHAN_WIDTH_80, - .freq1_diff = 0, - .chantype = -1 }, - }; + int parsed, err; if (argc < 2) return 1; @@ -61,37 +30,16 @@ static int join_ibss(struct nl80211_state *state, argv++; argc--; - /* freq */ - freq = strtoul(argv[0], &end, 10); - if (*end != '\0') - return 1; - - NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, freq); - argv++; - argc--; + err = parse_freqchan(&chandef, false, argc, argv, &parsed); + if (err) + return err; - if (argc) { - for (i = 0; i < ARRAY_SIZE(chanmode); i++) { - if (strcasecmp(chanmode[i].name, argv[0]) == 0) { - chanmode_selected = &chanmode[i]; - break; - } - } - if (chanmode_selected) { - NLA_PUT_U32(msg, NL80211_ATTR_CHANNEL_WIDTH, - chanmode_selected->width); - NLA_PUT_U32(msg, NL80211_ATTR_CENTER_FREQ1, - get_cf1(chanmode_selected, freq)); - if (chanmode_selected->chantype != -1) - NLA_PUT_U32(msg, - NL80211_ATTR_WIPHY_CHANNEL_TYPE, - chanmode_selected->chantype); + argv += parsed; + argc -= parsed; - argv++; - argc--; - } - - } + put_chandef(msg, &chandef); + if (err) + return err; if (argc && strcmp(argv[0], "fixed-freq") == 0) { NLA_PUT_FLAG(msg, NL80211_ATTR_FREQ_FIXED);