All of lore.kernel.org
 help / color / mirror / Atom feed
* [ath9k-devel] IBSS network crashes after one device leaves network
@ 2014-10-18  7:46 Li, Hongchun
  2014-10-18 10:01 ` [ath9k-devel] ath9k-htc: " Oleksij Rempel
  2014-10-20 19:09   ` Oleksij Rempel
  0 siblings, 2 replies; 11+ messages in thread
From: Li, Hongchun @ 2014-10-18  7:46 UTC (permalink / raw)
  To: ath9k-devel

I?m building an IBSS network using TP-Link TL-WN722N USB WiFi dongle.
I find that it is drived by ath9k.

Here is a problem I encountered.
First, I build an IBSS network with more than 8 devices.
For example, a network consists of 9 devices, N1, N2, ?, N9.
All devices have same WiFi module.

When N9 joined network, kernel throws a warning, ?Unable to move IBSS STA MAC_ADDR to state 3 (-105)?.
However, the network works correctly. Any node can communicate with each other.

But if I turn off one device, for example N3, the network crashes after a few minutes.
Ping command fails between any two devices in network.
Get no warning/error message from kernel.
After N3 is turned off and network crashes, I turned on N3 and network works correctly again.

I find the number 8 is an macro in device driver code: drivers/net/wireless/ath/ath9k/htc.h

252<http://lxr.free-electrons.com/source/drivers/net/wireless/ath/ath9k/htc.h?v=3.11#L252> #define ATH9K_HTC_MAX_STA<http://lxr.free-electrons.com/ident?v=3.11;i=ATH9K_HTC_MAX_STA> 8
It seems like that when there are more than 8 devices in network, driver returns an error ENOBUFS(-105).

But in linux kernel source: net/mac80211/sta_info.c, I found this,
436<http://lxr.free-electrons.com/source/net/mac80211/sta_info.c?v=3.11#L436>  if (sdata<http://lxr.free-electrons.com/ident?v=3.11;i=sdata>->vif.type<http://lxr.free-electrons.com/ident?v=3.11;i=type> == NL80211_IFTYPE_ADHOC) {
437<http://lxr.free-electrons.com/source/net/mac80211/sta_info.c?v=3.11#L437>        sdata_info<http://lxr.free-electrons.com/ident?v=3.11;i=sdata_info>(sdata<http://lxr.free-electrons.com/ident?v=3.11;i=sdata>,
438<http://lxr.free-electrons.com/source/net/mac80211/sta_info.c?v=3.11#L438>                 "failed to move IBSS STA %pM to state %d (%d) - keeping it anyway\n",
439<http://lxr.free-electrons.com/source/net/mac80211/sta_info.c?v=3.11#L439>                 sta->sta.addr<http://lxr.free-electrons.com/ident?v=3.11;i=addr>, state<http://lxr.free-electrons.com/ident?v=3.11;i=state> + 1, err<http://lxr.free-electrons.com/ident?v=3.11;i=err>);
440<http://lxr.free-electrons.com/source/net/mac80211/sta_info.c?v=3.11#L440>       err<http://lxr.free-electrons.com/ident?v=3.11;i=err> = 0;
441<http://lxr.free-electrons.com/source/net/mac80211/sta_info.c?v=3.11#L441>  }
So when it is an ad hoc network, kernel just ignore errors from driver.
This answers why ibss network work correctly when there are more than 8 devices.

But I cannot figure out why the network crashes after one device is turned off.
Does anyone have any idea how to solve this problem?

Li Chun

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20141018/09f73c5b/attachment.htm 

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-12-24 16:46 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-18  7:46 [ath9k-devel] IBSS network crashes after one device leaves network Li, Hongchun
2014-10-18 10:01 ` [ath9k-devel] ath9k-htc: " Oleksij Rempel
2014-10-20  2:00   ` Li, Hongchun
2014-10-20 19:09 ` [ath9k-devel] " Oleksij Rempel
2014-10-20 19:09   ` Oleksij Rempel
2014-10-20 19:29   ` Johannes Berg
2014-10-20 19:29     ` Johannes Berg
2014-10-21 13:56     ` Oleksij Rempel
2014-10-21 13:56       ` Oleksij Rempel
2014-12-24  2:45       ` Melroy van den Berg
2014-12-24 16:46         ` Oleksij Rempel

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.