From: Ivo van Doorn <ivdoorn@gmail.com>
To: Antonio Marques <froz@icix.org>
Cc: Johannes Berg <johannes@sipsolutions.net>,
Andrey Yurovsky <andrey@cozybit.com>,
linux-wireless@vger.kernel.org
Subject: Re: rt2x00 mesh support
Date: Wed, 18 Mar 2009 11:02:21 +0100 [thread overview]
Message-ID: <200903181102.21380.IvDoorn@gmail.com> (raw)
In-Reply-To: <1237331062.5100.9.camel@johannes.local>
[-- Attachment #1: Type: text/plain, Size: 1381 bytes --]
On Wednesday 18 March 2009, Johannes Berg wrote:
> On Wed, 2009-03-18 at 00:01 +0100, Ivo van Doorn wrote:
>
> > > > This command means that mac80211 uses the start() callback function. This triggers rt2x00 to initialize
> > > > the registers which resets the beacon generation.
> > >
> > > Strange, that doesn't seem right. If you look at net/mac80211/iface.c,
> > > you'll see it call ->start(), then ->add_interface(), and later
> > > ieee80211_start_mesh(), which calls _if_config() and sets
> > > beacon/beacon_enabled.
> >
> > ok, I gone through the rt2x00 code a couple of times now to see how this bug can be triggered by rt2x00,
> > But the only other scenario I could find, is when the open() callback for the netdevice structure doesn't end
> > with a call to the config() callback function. But as far as I see it that is happening correctly.
>
> Maybe log (+dump_stack()) all the relevant calls from mac80211 to the
> driver? That might give us a better idea of what's going on. Also,
> Antonio, make sure you're using the very latest code. I for one need
> sleep now :)
Antonio, could you please use attached patch to add additional debugging to rt2x00.
This will do a dump_stack for all important functions (add_interface, remove_interface, config() and config_interface())
It doesn't matter if this patch is on top of the previous patch or not.
Thanks,
Ivo
[-- Attachment #2: debug.diff --]
[-- Type: text/x-diff, Size: 2346 bytes --]
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
index c41a0b9..a75f54d 100644
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
@@ -198,6 +198,9 @@ int rt2x00mac_add_interface(struct ieee80211_hw *hw,
struct queue_entry *entry = NULL;
unsigned int i;
+ ERROR(rt2x00dev, "===>\n");
+ dump_stack();
+
/*
* Don't allow interfaces to be added
* the device has disappeared.
@@ -293,6 +296,8 @@ int rt2x00mac_add_interface(struct ieee80211_hw *hw,
*/
rt2x00dev->packet_filter = 0;
+ ERROR(rt2x00dev, "<===\n");
+
return 0;
}
EXPORT_SYMBOL_GPL(rt2x00mac_add_interface);
@@ -303,6 +308,9 @@ void rt2x00mac_remove_interface(struct ieee80211_hw *hw,
struct rt2x00_dev *rt2x00dev = hw->priv;
struct rt2x00_intf *intf = vif_to_intf(conf->vif);
+ ERROR(rt2x00dev, "===>\n");
+ dump_stack();
+
/*
* Don't allow interfaces to be remove while
* either the device has disappeared or when
@@ -330,6 +338,8 @@ void rt2x00mac_remove_interface(struct ieee80211_hw *hw,
*/
rt2x00lib_config_intf(rt2x00dev, intf,
NL80211_IFTYPE_UNSPECIFIED, NULL, NULL);
+
+ ERROR(rt2x00dev, "<===\n");
}
EXPORT_SYMBOL_GPL(rt2x00mac_remove_interface);
@@ -339,6 +349,9 @@ int rt2x00mac_config(struct ieee80211_hw *hw, u32 changed)
struct ieee80211_conf *conf = &hw->conf;
int status;
+ ERROR(rt2x00dev, "===>\n");
+ dump_stack();
+
/*
* Mac80211 might be calling this function while we are trying
* to remove the device or perhaps suspending it.
@@ -386,6 +399,8 @@ int rt2x00mac_config(struct ieee80211_hw *hw, u32 changed)
rt2x00lib_disable_radio(rt2x00dev);
}
+ ERROR(rt2x00dev, "<===\n");
+
return 0;
}
EXPORT_SYMBOL_GPL(rt2x00mac_config);
@@ -399,6 +414,9 @@ int rt2x00mac_config_interface(struct ieee80211_hw *hw,
int update_bssid = 0;
int status = 0;
+ ERROR(rt2x00dev, "===>\n");
+ dump_stack();
+
/*
* Mac80211 might be calling this function while we are trying
* to remove the device or perhaps suspending it.
@@ -436,6 +454,9 @@ int rt2x00mac_config_interface(struct ieee80211_hw *hw,
status = rt2x00queue_update_beacon(rt2x00dev, vif,
conf->enable_beacon);
+ ERROR(rt2x00dev, "<===\n");
+ dump_stack();
+
return status;
}
EXPORT_SYMBOL_GPL(rt2x00mac_config_interface);
next prev parent reply other threads:[~2009-03-18 10:02 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-23 18:58 rt2x00 mesh support Antonio Marques
2009-01-23 19:02 ` Andrey Yurovsky
2009-01-24 11:40 ` António Marques
2009-03-15 11:54 ` Antonio Marques
2009-03-15 13:45 ` Ivo van Doorn
2009-03-16 1:58 ` Pat Erley
2009-03-16 13:29 ` Antonio Marques
2009-03-16 13:22 ` António Marques
2009-03-16 14:58 ` Ivo van Doorn
2009-03-16 19:12 ` Antonio Marques
2009-03-17 9:31 ` Ivo van Doorn
2009-03-17 14:11 ` Johannes Berg
2009-03-17 20:10 ` Johannes Berg
2009-03-17 21:50 ` Ivo van Doorn
2009-03-17 21:53 ` Johannes Berg
2009-03-17 22:04 ` Ivo van Doorn
2009-03-17 22:35 ` Johannes Berg
2009-03-17 23:01 ` Ivo van Doorn
2009-03-17 23:04 ` Johannes Berg
2009-03-18 10:02 ` Ivo van Doorn [this message]
2009-03-18 12:26 ` Antonio Marques
2009-03-18 12:48 ` Ivo van Doorn
2009-03-18 13:12 ` Johannes Berg
2009-03-18 13:31 ` Ivo van Doorn
2009-03-18 13:36 ` Johannes Berg
2009-03-19 21:55 ` Antonio Marques
2009-03-17 19:38 ` Antonio Marques
2009-03-17 22:03 ` Ivo van Doorn
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=200903181102.21380.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=andrey@cozybit.com \
--cc=froz@icix.org \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).