From patchwork Tue Jan 24 00:00:30 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Linus_L=C3=BCssing?= X-Patchwork-Id: 16901 Return-Path: X-Original-To: patchwork@open-mesh.org Delivered-To: patchwork@open-mesh.org Received: from open-mesh.org (localhost [IPv6:::1]) by open-mesh.org (Postfix) with ESMTP id 4C83E831A2; Tue, 24 Jan 2017 01:00:44 +0100 (CET) Authentication-Results: open-mesh.org; dmarc=none header.from=c0d3.blue Received-SPF: None (no SPF record) identity=mailfrom; client-ip=2a01:4f8:171:314c::100:a1; helo=mail.aperture-lab.de; envelope-from=linus.luessing@c0d3.blue; receiver=b.a.t.m.a.n@lists.open-mesh.org Authentication-Results: open-mesh.org; dmarc=none header.from=c0d3.blue Received: from mail.aperture-lab.de (mail.aperture-lab.de [IPv6:2a01:4f8:171:314c::100:a1]) by open-mesh.org (Postfix) with ESMTPS id B552A80892 for ; Tue, 24 Jan 2017 01:00:39 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by mail.aperture-lab.de (Postfix) with ESMTP id 967A6E0603; Tue, 24 Jan 2017 01:00:39 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at aperture-lab.de Received: from mail.aperture-lab.de ([127.0.0.1]) by localhost (mail.aperture-lab.de [127.0.0.1]) (amavisd-new, port 10025) with ESMTP id gU1mCDeucJb1; Tue, 24 Jan 2017 01:00:39 +0100 (CET) Received: from localhost (unknown [IPv6:2001:67c:2d50:0:c85:8cff:fe0f:63fe]) (Authenticated sender: linus.luessing@c0d3.blue) by mail.aperture-lab.de (Postfix) with ESMTPSA; Tue, 24 Jan 2017 01:00:39 +0100 (CET) From: =?utf-8?q?Linus_L=C3=BCssing?= To: b.a.t.m.a.n@lists.open-mesh.org Date: Tue, 24 Jan 2017 01:00:30 +0100 Message-Id: <20170124000030.29160-1-linus.luessing@c0d3.blue> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Cc: Antonio Quartulli Subject: [B.A.T.M.A.N.] [PATCH] batman-adv: restructure cfg80211 compat code X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking Errors-To: b.a.t.m.a.n-bounces@lists.open-mesh.org Sender: "B.A.T.M.A.N" This commit restructures the compat code regarding cfg80211 to achieve the following: a) Allows to compile kernels < 3.16 with -Werror by replacing the "#warning" with a runtime warning through pr_warn_once(). b) Allows to run < 3.16 kernels without warnings if no cfg80211 based interface is used. c) Migrates cfg80211 compat code from compat.h to compat cfg80211.h to keep compat.h slim. Signed-off-by: Linus Lüssing --- compat-include/net/cfg80211.h | 21 ++++++++++++++++++++- compat.h | 21 --------------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/compat-include/net/cfg80211.h b/compat-include/net/cfg80211.h index 8dbbf0e..6e0eca3 100644 --- a/compat-include/net/cfg80211.h +++ b/compat-include/net/cfg80211.h @@ -4,9 +4,28 @@ #include #include_next +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) + +static inline int cfg80211_get_station(struct net_device *dev, + const u8 *mac_addr, + struct station_info *sinfo) +{ + pr_warn_once("cfg80211 based throughput metric is only supported with Linux 3.16+\n"); + return -ENOENT; +} + +/* The following define substitutes the expected_throughput field with a random + * one existing in the station_info struct. It can be random because due to the + * function above it will never be used. Only needed to make the code compile + */ +#define expected_throughput filled + +#endif /* < KERNEL_VERSION(3, 16, 0) */ + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0) -#if !IS_ENABLED(CONFIG_CFG80211) +#if !IS_ENABLED(CONFIG_CFG80211) && \ + LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) #define cfg80211_get_station(dev, mac_addr, sinfo) \ batadv_cfg80211_get_station(dev, mac_addr, sinfo) diff --git a/compat.h b/compat.h index 5397629..e43c413 100644 --- a/compat.h +++ b/compat.h @@ -130,27 +130,6 @@ static int __batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\ #endif /* < KERNEL_VERSION(3, 10, 0) */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) - -/* the expected behaviour of this function is to return 0 on success, therefore - * it is possible to define it as 1 so that batman-adv thinks like something - * went wrong. It will then decide what to do. - */ -#define cfg80211_get_station(_a, _b, _c) (1) -/* the following define substitute the expected_throughput field with a random - * one existing in the station_info struct. It can be random because due to the - * define above it will never be used. We need it only to make the code compile - */ -#define expected_throughput filled - -#ifdef CONFIG_BATMAN_ADV_BATMAN_V - -#warning cfg80211 based throughput metric is only supported with Linux 3.15+ - -#endif - -#endif /* < KERNEL_VERSION(3, 16, 0) */ - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) /* wild hack for batadv_getlink_net only */