From patchwork Tue Nov 12 16:32:58 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Wunderlich X-Patchwork-Id: 3173671 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id D32EE9F461 for ; Tue, 12 Nov 2013 16:33:23 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 0167920598 for ; Tue, 12 Nov 2013 16:33:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5B1C620578 for ; Tue, 12 Nov 2013 16:33:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753648Ab3KLQdP (ORCPT ); Tue, 12 Nov 2013 11:33:15 -0500 Received: from packetmixer.de ([79.140.42.25]:44124 "EHLO mail.mail.packetmixer.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752641Ab3KLQdO (ORCPT ); Tue, 12 Nov 2013 11:33:14 -0500 Received: from kero.packetmixer.de (drsd-4d05f390.pool.mediaWays.net [77.5.243.144]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mail.mail.packetmixer.de (Postfix) with ESMTPSA id 28F3B71027; Tue, 12 Nov 2013 16:44:46 +0000 (UTC) From: Simon Wunderlich To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Simon Wunderlich , Mathias Kretschmer Subject: [PATCH] iw: add support for 5 and 10 MHz channels in IBSS mode Date: Tue, 12 Nov 2013 17:32:58 +0100 Message-Id: <1384273978-11510-1-git-send-email-sw@simonwunderlich.de> X-Mailer: git-send-email 1.7.10.4 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 5/10 MHz requires to send the frequency information as chandef instead of the the old channel type, this change is included here as well. Signed-off-by: Simon Wunderlich Signed-off-by: Mathias Kretschmer --- ibss.c | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/ibss.c b/ibss.c index 955446e..3674c1f 100644 --- a/ibss.c +++ b/ibss.c @@ -30,16 +30,19 @@ static int join_ibss(struct nl80211_state *state, float rate; int bintval; int i; + unsigned long freq; static const struct { const char *name; - unsigned int val; - } htmap[] = { - { .name = "HT20", .val = NL80211_CHAN_HT20, }, - { .name = "HT40+", .val = NL80211_CHAN_HT40PLUS, }, - { .name = "HT40-", .val = NL80211_CHAN_HT40MINUS, }, - { .name = "NOHT", .val = NL80211_CHAN_NO_HT, }, + unsigned int width; + int freq1_diff; + } *chanmode_selected = NULL, chanmode[] = { + { .name = "HT20", .width = NL80211_CHAN_WIDTH_20, .freq1_diff = 0}, + { .name = "HT40+", .width = NL80211_CHAN_WIDTH_40, .freq1_diff = 10}, + { .name = "HT40-", .width = NL80211_CHAN_WIDTH_40, .freq1_diff = -10}, + { .name = "NOHT", .width = NL80211_CHAN_WIDTH_20_NOHT, .freq1_diff = 0}, + { .name = "5MHZ", .width = NL80211_CHAN_WIDTH_5, .freq1_diff = 0}, + { .name = "10MHZ", .width = NL80211_CHAN_WIDTH_10, .freq1_diff = 0}, }; - unsigned int htval; if (argc < 2) return 1; @@ -50,23 +53,27 @@ static int join_ibss(struct nl80211_state *state, argc--; /* freq */ - NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, - strtoul(argv[0], &end, 10)); + freq = strtoul(argv[0], &end, 10); if (*end != '\0') return 1; + + NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, freq); argv++; argc--; if (argc) { - for (i = 0; i < ARRAY_SIZE(htmap); i++) { - if (strcasecmp(htmap[i].name, argv[0]) == 0) { - htval = htmap[i].val; + for (i = 0; i < ARRAY_SIZE(chanmode); i++) { + if (strcasecmp(chanmode[i].name, argv[0]) == 0) { + chanmode_selected = &chanmode[i]; break; } } - if (i != ARRAY_SIZE(htmap)) { - NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, - htval); + if (chanmode_selected) { + NLA_PUT_U32(msg, NL80211_ATTR_CHANNEL_WIDTH, + chanmode_selected->width); + NLA_PUT_U32(msg, NL80211_ATTR_CENTER_FREQ1, + freq + chanmode_selected->freq1_diff); + argv++; argc--; } @@ -164,7 +171,7 @@ COMMAND(ibss, leave, NULL, NL80211_CMD_LEAVE_IBSS, 0, CIB_NETDEV, leave_ibss, "Leave the current IBSS cell."); COMMAND(ibss, join, - " [HT20|HT40+|HT40-|NOHT] [fixed-freq] [] [beacon-interval ]" + " [HT20|HT40+|HT40-|NOHT|5MHZ|10MHZ] [fixed-freq] [] [beacon-interval ]" " [basic-rates ] [mcast-rate ] " "[key d:0:abcde]", NL80211_CMD_JOIN_IBSS, 0, CIB_NETDEV, join_ibss,