Search Linux Wireless

Re: [PATCH] rt2x00: TO_DS filter depends on intf_ap_count

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2008-04-01 at 14:10 +0200, Johannes Berg wrote:
> > unfortunately I still don't have a working AP, since hostapd crashes
> > when receiving the EAPOL key from the client. I'm still trying to find
> > out what exactly happens, I'll post more info in a new thread. I'm
> > inclined to think that the problem lies on the driver side, since this
> > used to work at the 31st of January this year, with hostapd-0.6.2, which
> > is the version I've tested with now.
> 
> What exactly happens? I guess you have my (single) hostapd patch
> applied?

I'm still not sure, I decided to investigate a bit more, before I bother
you with a stupid mistake on my side. I'm reasonably sure I applied your
hostapd patch (001-beacon-int-hack.patch, right?), but I'll check again
tonight, when I have direct access to the machine. Next to that, I've
also had to patch hostapd a bit further, else it wouldn't compile. I've
renamed all NL80211_STA_STAT_* to NL80211_STA_INFO_* in
driver_nl80211.c, see attached patch. Was that ok? It seemed trivial.

What seems to happen, is that wlan1 receives exactly one frame from the
laptop, and then hostapd hangs, and no further frames are sent from
hostapd, although beacon frames are still being sent, and the interface
still receives frames as well. This happens immediately after rt2500pci
receives the EAPOL key from the laptop, so I guess it is in fact the
EAPOL key that is the single frame that wlan1 receives. As I've
mentioned before, only ctrl-c can kill hostapd, and after that the
driver is in an unusable state (at least for hostapd) rmmod rt2500pci,
followed by insmod rt2500pci returns stuff to a usable state.

well, I'll look into it a bit more, I've attached the hostapd output
(hostapd.log), and a capture of all frames on rt2500pci (dump.pcap)
together with hostapd.conf and ifcfg-wlan1, perhaps you can see
something obvious.

thanks for your help,
Bas Hulsken


--- hostap/hostapd/driver_nl80211.c	2008-03-18 13:53:20.000000000 +0100
+++ ./driver_nl80211.c	2008-03-22 17:28:39.000000000 +0100
@@ -598,11 +598,11 @@
 	struct nlattr *tb[NL80211_ATTR_MAX + 1];
 	struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg));
 	struct hostap_sta_driver_data *data = arg;
-	struct nlattr *stats[NL80211_STA_STAT_MAX + 1];
-	static struct nla_policy stats_policy[NL80211_STA_STAT_MAX + 1] = {
-		[NL80211_STA_STAT_INACTIVE_TIME] = { .type = NLA_U32 },
-		[NL80211_STA_STAT_RX_BYTES] = { .type = NLA_U32 },
-		[NL80211_STA_STAT_TX_BYTES] = { .type = NLA_U32 },
+	struct nlattr *stats[NL80211_STA_INFO_MAX + 1];
+	static struct nla_policy stats_policy[NL80211_STA_INFO_MAX + 1] = {
+		[NL80211_STA_INFO_INACTIVE_TIME] = { .type = NLA_U32 },
+		[NL80211_STA_INFO_RX_BYTES] = { .type = NLA_U32 },
+		[NL80211_STA_INFO_TX_BYTES] = { .type = NLA_U32 },
 	};
 
 	nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
@@ -614,24 +614,24 @@
 	 * the kernel starts sending station notifications.
 	 */
 
-	if (!tb[NL80211_ATTR_STA_STATS]) {
+	if (!tb[NL80211_ATTR_STA_INFO]) {
 		wpa_printf(MSG_DEBUG, "sta stats missing!");
 		return NL_SKIP;
 	}
-	if (nla_parse_nested(stats, NL80211_STA_STAT_MAX,
-			     tb[NL80211_ATTR_STA_STATS],
+	if (nla_parse_nested(stats, NL80211_STA_INFO_MAX,
+			     tb[NL80211_ATTR_STA_INFO],
 			     stats_policy)) {
 		wpa_printf(MSG_DEBUG, "failed to parse nested attributes!");
 		return NL_SKIP;
 	}
 
-	if (stats[NL80211_STA_STAT_INACTIVE_TIME])
+	if (stats[NL80211_STA_INFO_INACTIVE_TIME])
 		data->inactive_msec =
-			nla_get_u32(stats[NL80211_STA_STAT_INACTIVE_TIME]);
-	if (stats[NL80211_STA_STAT_RX_BYTES])
-		data->rx_bytes = nla_get_u32(stats[NL80211_STA_STAT_RX_BYTES]);
-	if (stats[NL80211_STA_STAT_TX_BYTES])
-		data->rx_bytes = nla_get_u32(stats[NL80211_STA_STAT_TX_BYTES]);
+			nla_get_u32(stats[NL80211_STA_INFO_INACTIVE_TIME]);
+	if (stats[NL80211_STA_INFO_RX_BYTES])
+		data->rx_bytes = nla_get_u32(stats[NL80211_STA_INFO_RX_BYTES]);
+	if (stats[NL80211_STA_INFO_TX_BYTES])
+		data->rx_bytes = nla_get_u32(stats[NL80211_STA_INFO_TX_BYTES]);
 
 	return NL_SKIP;
 }

Attachment: hostapd_try3.tar.bz2
Description: application/bzip-compressed-tar


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux