From patchwork Fri Oct 30 21:05:45 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: arwelle@cert.org X-Patchwork-Id: 7529201 X-Patchwork-Delegate: johannes@sipsolutions.net Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 43055BEEA4 for ; Fri, 30 Oct 2015 21:05:55 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 370AE20555 for ; Fri, 30 Oct 2015 21:05:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 059AE204FF for ; Fri, 30 Oct 2015 21:05:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760493AbbJ3VFv (ORCPT ); Fri, 30 Oct 2015 17:05:51 -0400 Received: from shetland.sei.cmu.edu ([192.58.107.44]:35555 "EHLO shetland.sei.cmu.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759876AbbJ3VFu (ORCPT ); Fri, 30 Oct 2015 17:05:50 -0400 X-Greylist: delayed 319 seconds by postgrey-1.27 at vger.kernel.org; Fri, 30 Oct 2015 17:05:50 EDT Received: from timber.sei.cmu.edu (timber.sei.cmu.edu [10.64.21.23]) by shetland.sei.cmu.edu (8.14.4/8.14.4/1408) with ESMTP id t9UL5m3C006406; Fri, 30 Oct 2015 17:05:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cert.org; s=jthatj15xw2j; t=1446239148; bh=whxqKSOImYR4tNlRQSmH1XOTiigk0js6EzLmq9v7af8=; h=From:To:Cc:Subject:Date:Message-Id:Sender:Reply-To; b=IMLDYGm+M0xULzLJehtJfa7+JdvwIuUcWI6Ez/htyfwT0SPRBcYW4YH6eSA7hzmRp tiiT9+U2ZtS9D+wEbpXB9vdlMKPxp4BCidsT1GbR/2FhPgzqKZCNmZiE0RJKo8+jh1 JJWnMRy/j/VysbcK2fe7S7qdGqAbk3hgNGkJgXCk= Received: from bucknell.indigo.cert.org (sslvpn-96-134.sei.cmu.edu [10.64.96.134]) by timber.sei.cmu.edu (8.14.4/8.14.4/1456) with ESMTP id t9UL5l15010871; Fri, 30 Oct 2015 17:05:47 -0400 From: arwelle@cert.org To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org Subject: [RFC] mac80211_hwsim: Adds parameter use_hwsim_mon which can be used to disable hwism0 Date: Fri, 30 Oct 2015 17:05:45 -0400 Message-Id: <1446239145-21119-1-git-send-email-arwelle@cert.org> X-Mailer: git-send-email 2.1.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=-7.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable 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 From: Adam Welle A new parameter, use_hwsim_mon has been created to implement new functionalilty. use_hwsim_mon defaults to true so that normal operation remains the same. When set to false, the hwsim0 device is not created. This value is also checked before calling functions which would transmit data to the hwsim0 device. Signed-off-by: Adam Welle --- drivers/net/wireless/mac80211_hwsim.c | 49 +++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index ee46f46..8e48869 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c @@ -61,6 +61,10 @@ static bool support_p2p_device = true; module_param(support_p2p_device, bool, 0444); MODULE_PARM_DESC(support_p2p_device, "Support P2P-Device interface type"); +static bool use_hwsim_mon = true; +module_param(use_hwsim_mon, bool, 0444); +MODULE_PARM_DESC(use_hwsim_mon, "Create and use hwsim0 monitor device"); + /** * enum hwsim_regtest - the type of regulatory tests we offer * @@ -1292,7 +1296,8 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw, ARRAY_SIZE(txi->control.rates)); txi->rate_driver_data[0] = channel; - mac80211_hwsim_monitor_rx(hw, skb, channel); + if (use_hwsim_mon) + mac80211_hwsim_monitor_rx(hw, skb, channel); /* wmediumd mode check */ _portid = ACCESS_ONCE(wmediumd_portid); @@ -1305,7 +1310,7 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw, data->tx_bytes += skb->len; ack = mac80211_hwsim_tx_frame_no_nl(hw, skb, channel); - if (ack && skb->len >= 16) { + if (ack && skb->len >= 16 && use_hwsim_mon) { struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; mac80211_hwsim_monitor_ack(channel, hdr->addr2); } @@ -1402,7 +1407,8 @@ static void mac80211_hwsim_tx_frame(struct ieee80211_hw *hw, ARRAY_SIZE(txi->control.rates)); } - mac80211_hwsim_monitor_rx(hw, skb, chan); + if (use_hwsim_mon) + mac80211_hwsim_monitor_rx(hw, skb, chan); if (_pid) return mac80211_hwsim_tx_frame_nl(hw, skb, _pid); @@ -3260,26 +3266,28 @@ static int __init init_mac80211_hwsim(void) goto out_free_radios; } - hwsim_mon = alloc_netdev(0, "hwsim%d", NET_NAME_UNKNOWN, + if (use_hwsim_mon) { + hwsim_mon = alloc_netdev(0, "hwsim%d", NET_NAME_UNKNOWN, hwsim_mon_setup); - if (hwsim_mon == NULL) { - err = -ENOMEM; - goto out_free_radios; - } + if (hwsim_mon == NULL) { + err = -ENOMEM; + goto out_free_radios; + } - rtnl_lock(); - err = dev_alloc_name(hwsim_mon, hwsim_mon->name); - if (err < 0) { - rtnl_unlock(); - goto out_free_radios; - } + rtnl_lock(); + err = dev_alloc_name(hwsim_mon, hwsim_mon->name); + if (err < 0) { + rtnl_unlock(); + goto out_free_radios; + } - err = register_netdevice(hwsim_mon); - if (err < 0) { + err = register_netdevice(hwsim_mon); + if (err < 0) { + rtnl_unlock(); + goto out_free_mon; + } rtnl_unlock(); - goto out_free_mon; } - rtnl_unlock(); return 0; @@ -3300,7 +3308,10 @@ static void __exit exit_mac80211_hwsim(void) hwsim_exit_netlink(); mac80211_hwsim_free(); - unregister_netdev(hwsim_mon); + + if (hwsim_mon) + unregister_netdev(hwsim_mon); + platform_driver_unregister(&mac80211_hwsim_driver); } module_exit(exit_mac80211_hwsim);