From: Johannes Berg <johannes@sipsolutions.net>
To: netdev@vger.kernel.org
Cc: Jouni Malinen <jkm@devicescape.com>,
"John W. Linville" <linville@tuxdriver.com>,
Jiri Benc <jbenc@suse.cz>,
Johannes Berg <johannes@sipsolutions.net>
Subject: [PATCH 09/18] d80211: move out rate control registration code
Date: Mon, 21 Aug 2006 09:41:16 +0200 [thread overview]
Message-ID: <20060821075200.634948638@sipsolutions.net> (raw)
In-Reply-To: 20060821074107.648561364@sipsolutions.net
[-- Attachment #1: d80211-shuffle-out-ratecontrol.patch --]
[-- Type: text/plain, Size: 5378 bytes --]
This patch moves some common rate control code from ieee80211.c into a new
rate_control.c file.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
--- wireless-dev.orig/net/d80211/Makefile 2006-08-20 14:56:19.758192788 +0200
+++ wireless-dev/net/d80211/Makefile 2006-08-20 14:56:21.948192788 +0200
@@ -15,6 +15,7 @@ obj-$(CONFIG_D80211) += 80211.o rate_con
ieee80211_sysfs.o \
ieee80211_sysfs_sta.o \
michael.o \
+ rate_control.o \
tkip.o \
aes_ccm.o \
wme.o \
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ wireless-dev/net/d80211/rate_control.c 2006-08-20 14:56:21.948192788 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2002-2005, Instant802 Networks, Inc.
+ * Copyright 2005-2006, Devicescape Software, Inc.
+ * Copyright 2006, Johannes Berg <johannes@sipsolutions.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <net/d80211.h>
+#include "ieee80211_i.h"
+#include "rate_control.h"
+
+LIST_HEAD(ieee80211_rate_ctrl_algs);
+DEFINE_MUTEX(ieee80211_rate_ctrl_mtx);
+
+int ieee80211_rate_control_register(struct rate_control_ops *ops)
+{
+ struct rate_control_ops *i;
+
+ mutex_lock(&ieee80211_rate_ctrl_mtx);
+ list_for_each_entry(i, &ieee80211_rate_ctrl_algs, list) {
+ if (strcmp(i->name, ops->name) == 0) {
+ mutex_unlock(&ieee80211_rate_ctrl_mtx);
+ return -EALREADY;
+ }
+ }
+ list_add(&ops->list, &ieee80211_rate_ctrl_algs);
+ mutex_unlock(&ieee80211_rate_ctrl_mtx);
+ return 0;
+}
+EXPORT_SYMBOL_GPL(ieee80211_rate_control_register);
+
+void ieee80211_rate_control_unregister(struct rate_control_ops *ops)
+{
+ mutex_lock(&ieee80211_rate_ctrl_mtx);
+ list_del(&ops->list);
+ mutex_unlock(&ieee80211_rate_ctrl_mtx);
+}
+EXPORT_SYMBOL_GPL(ieee80211_rate_control_unregister);
+
+struct rate_control_ops *ieee80211_rate_control_select(char *name)
+{
+ struct rate_control_ops *rctl, *result = NULL;
+
+ mutex_lock(&ieee80211_rate_ctrl_mtx);
+ if (list_empty(&ieee80211_rate_ctrl_algs)) {
+ mutex_unlock(&ieee80211_rate_ctrl_mtx);
+ request_module("ieee80211_rate_control_%s", name?name:"simple");
+ mutex_lock(&ieee80211_rate_ctrl_mtx);
+ }
+ list_for_each_entry(rctl, &ieee80211_rate_ctrl_algs, list) {
+ if (!name || strcmp(rctl->name, name) == 0) {
+ result = rctl;
+ break;
+ }
+ }
+ mutex_unlock(&ieee80211_rate_ctrl_mtx);
+ return result;
+}
--- wireless-dev.orig/net/d80211/rate_control.h 2006-08-20 14:56:19.758192788 +0200
+++ wireless-dev/net/d80211/rate_control.h 2006-08-20 14:56:21.948192788 +0200
@@ -67,7 +67,7 @@ struct rate_control_ops {
extern int ieee80211_rate_control_register(struct rate_control_ops *ops);
extern void ieee80211_rate_control_unregister(struct rate_control_ops *ops);
-
+extern struct rate_control_ops *ieee80211_rate_control_select(char *name);
static inline void rate_control_tx_status(struct net_device *dev,
struct sk_buff *skb,
--- wireless-dev.orig/net/d80211/ieee80211.c 2006-08-20 14:56:21.308192788 +0200
+++ wireless-dev/net/d80211/ieee80211.c 2006-08-20 14:56:22.008192788 +0200
@@ -19,7 +19,6 @@
#include <linux/if_arp.h>
#include <linux/wireless.h>
#include <linux/rtnetlink.h>
-#include <linux/mutex.h>
#include <net/iw_handler.h>
#include <linux/compiler.h>
#include <linux/bitmap.h>
@@ -48,10 +47,6 @@ static unsigned char bridge_tunnel_heade
static unsigned char eapol_header[] =
{ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x88, 0x8e };
-
-LIST_HEAD(ieee80211_rate_ctrl_algs);
-DEFINE_MUTEX(ieee80211_rate_ctrl_mtx);
-
static int rate_control_initialize(struct ieee80211_local *local);
@@ -4713,31 +4708,6 @@ void * ieee80211_dev_stats(struct net_de
sdata = IEEE80211_DEV_TO_SUB_IF(dev);
return &(sdata->stats);
}
-
-
-int ieee80211_rate_control_register(struct rate_control_ops *ops)
-{
- struct rate_control_ops *i;
-
- mutex_lock(&ieee80211_rate_ctrl_mtx);
- list_for_each_entry(i, &ieee80211_rate_ctrl_algs, list) {
- if (strcmp(i->name, ops->name) == 0) {
- mutex_unlock(&ieee80211_rate_ctrl_mtx);
- return -EALREADY;
- }
- }
- list_add(&ops->list, &ieee80211_rate_ctrl_algs);
- mutex_unlock(&ieee80211_rate_ctrl_mtx);
- return 0;
-}
-
-
-void ieee80211_rate_control_unregister(struct rate_control_ops *ops)
-{
- mutex_lock(&ieee80211_rate_ctrl_mtx);
- list_del(&ops->list);
- mutex_unlock(&ieee80211_rate_ctrl_mtx);
-}
EXPORT_SYMBOL(ieee80211_dev_stats);
@@ -4747,27 +4717,19 @@ static int rate_control_initialize(struc
BUG_ON(local->rate_ctrl);
- mutex_lock(&ieee80211_rate_ctrl_mtx);
- if (list_empty(&ieee80211_rate_ctrl_algs)) {
- mutex_unlock(&ieee80211_rate_ctrl_mtx);
- request_module("ieee80211_rate_control_simple");
- mutex_lock(&ieee80211_rate_ctrl_mtx);
- }
-
- list_for_each_entry(rctrl, &ieee80211_rate_ctrl_algs, list) {
+ rctrl = ieee80211_rate_control_select(NULL);
+ if (rctrl) {
rate_control_alloc(local, rctrl);
if (local->rate_ctrl) {
printk(KERN_DEBUG "%s: Selected rate control "
"algorithm '%s'\n", local->mdev->name,
local->rate_ctrl->name);
- mutex_unlock(&ieee80211_rate_ctrl_mtx);
return 0;
}
}
printk(KERN_WARNING "%s: Failed to select rate control algorithm\n",
local->mdev->name);
- mutex_unlock(&ieee80211_rate_ctrl_mtx);
return -1;
}
--
next prev parent reply other threads:[~2006-08-21 8:02 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-21 7:41 [PATCH 00/18] d80211: various cleanups/fixes/changes Johannes Berg
2006-08-21 7:41 ` [PATCH 01/18] d80211: LED triggers Johannes Berg
2006-08-22 0:30 ` [PATCH 01/3] d80211: add support for SIOCSIWRATE, SIOCSIWTXPOW and SIOCSIWPOWER Mohamed Abbas
2006-08-22 0:36 ` [PATCH 02/3] d80211: iwlist scan Mohamed Abbas
2006-08-23 15:46 ` Jiri Benc
2006-08-28 20:37 ` [PATCH 0/7] d80211: support more wireless command mabbas
2006-08-22 0:38 ` [PATCH 03/3] d80211: adhoc Mohamed Abbas
2006-08-23 15:51 ` Jiri Benc
2006-08-23 15:19 ` [PATCH 01/3] d80211: add support for SIOCSIWRATE, SIOCSIWTXPOW and SIOCSIWPOWER Jiri Benc
2006-08-25 18:37 ` Jouni Malinen
2006-08-25 18:46 ` Mohamed Abbas
2006-08-22 16:54 ` [PATCH 01/18] d80211: LED triggers Jouni Malinen
2006-08-22 18:38 ` Jiri Benc
2006-08-23 7:02 ` Johannes Berg
2006-08-23 18:16 ` Jiri Benc
2006-08-24 7:03 ` Johannes Berg
2006-09-22 11:59 ` Jiri Benc
2006-08-21 7:41 ` [PATCH 02/18] d80211: master link Johannes Berg
2006-08-21 8:13 ` Johannes Berg
2006-08-21 19:08 ` Jiri Benc
2006-08-22 7:49 ` Johannes Berg
2006-08-21 7:41 ` [PATCH 03/18] d80211: pointers as extended booleans Johannes Berg
2006-08-22 6:43 ` Bill Fink
2006-08-22 8:39 ` Johannes Berg
2006-08-21 7:41 ` [PATCH 04/18] d80211: use kzalloc() Johannes Berg
2006-08-21 7:41 ` [PATCH 05/18] d80211: get rid of WME bitfield Johannes Berg
2006-08-21 7:41 ` [PATCH 06/18] d80211: rework rate control registration Johannes Berg
2006-08-21 19:19 ` Jiri Benc
2006-08-22 8:33 ` Johannes Berg
2006-08-21 7:41 ` [PATCH 07/18] d80211: get rid of sta_aid in favour of keeping track of TIM Johannes Berg
2006-08-22 18:36 ` Jiri Benc
2006-08-23 7:04 ` Johannes Berg
2006-08-23 10:04 ` [PATCH] " Johannes Berg
2006-08-23 10:05 ` Johannes Berg
2006-08-23 10:16 ` [PATCH ] " Johannes Berg
2006-08-21 7:41 ` [PATCH 08/18] d80211: clean up exports Johannes Berg
2006-08-22 16:44 ` Jouni Malinen
2006-08-23 7:01 ` Johannes Berg
2006-08-23 10:03 ` [PATCH] " Johannes Berg
2006-08-21 7:41 ` Johannes Berg [this message]
2006-08-21 7:41 ` [PATCH 10/18] d80211: clean up includes Johannes Berg
2006-08-21 7:41 ` [PATCH 11/18] d80211: clean up qdisc requeue Johannes Berg
2006-08-21 19:31 ` Jiri Benc
2006-08-22 7:48 ` Johannes Berg
2006-08-21 7:41 ` [PATCH 12/18] d80211: fix some sparse warnings Johannes Berg
2006-08-22 18:55 ` Jiri Benc
2006-08-21 7:41 ` [PATCH 13/18] d80211: clean up some coding style issues Johannes Berg
2006-08-21 19:35 ` Jiri Benc
2006-08-22 8:27 ` Johannes Berg
2006-08-21 7:41 ` [PATCH 14/18] d80211: make lowlevel TX framedump option visible Johannes Berg
2006-08-21 7:41 ` [PATCH 15/18] d80211: surface IBSS debug Johannes Berg
2006-08-21 7:41 ` [PATCH 16/18] d80211: get rid of MICHAEL_MIC_HWACCEL define Johannes Berg
2006-08-22 19:00 ` Jiri Benc
2006-08-23 7:05 ` Johannes Berg
2006-08-23 9:46 ` Jiri Benc
2006-08-21 7:41 ` [PATCH 17/18] d80211: surface powersave debug switch Johannes Berg
2006-08-21 7:41 ` [PATCH 18/18] d80211: fix some documentation Johannes Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060821075200.634948638@sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=jbenc@suse.cz \
--cc=jkm@devicescape.com \
--cc=linville@tuxdriver.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.