backport mac80211, hostapd, iw, crda from trunk as of r26369
[openwrt-10.03/.git] / package / hostapd / patches / 330-multicall_bridge_fix.patch
diff --git a/package/hostapd/patches/330-multicall_bridge_fix.patch b/package/hostapd/patches/330-multicall_bridge_fix.patch
new file mode 100644 (file)
index 0000000..96456ea
--- /dev/null
@@ -0,0 +1,45 @@
+--- a/src/drivers/driver_nl80211.c
++++ b/src/drivers/driver_nl80211.c
+@@ -464,6 +464,10 @@ static void wpa_driver_nl80211_event_rtm
+               return;
+       }
++      if (ifi->ifi_family == AF_BRIDGE &&
++          drv->nlmode != NL80211_IFTYPE_AP)
++              return;
++
+       wpa_printf(MSG_DEBUG, "RTM_NEWLINK: operstate=%d ifi_flags=0x%x "
+                  "(%s%s%s%s)",
+                  drv->operstate, ifi->ifi_flags,
+@@ -535,6 +539,10 @@ static void wpa_driver_nl80211_event_rtm
+       attrlen = len;
+       attr = (struct rtattr *) buf;
++      if (ifi->ifi_family == AF_BRIDGE &&
++          drv->nlmode != NL80211_IFTYPE_AP)
++              return;
++
+       rta_len = RTA_ALIGN(sizeof(struct rtattr));
+       while (RTA_OK(attr, attrlen)) {
+               if (attr->rta_type == IFLA_IFNAME) {
+@@ -1610,6 +1618,11 @@ static int wpa_driver_nl80211_capa(struc
+               drv->capa.flags |= WPA_DRIVER_FLAGS_P2P_CAPABLE;
+       drv->capa.max_remain_on_chan = info.max_remain_on_chan;
++#ifdef HOSTAPD
++      drv->num_if_indices = sizeof(drv->default_if_indices) / sizeof(int);
++      drv->if_indices = drv->default_if_indices;
++#endif
++
+       return 0;
+ }
+@@ -5602,8 +5615,6 @@ static void *i802_init(struct hostapd_da
+               br_ifindex = 0;
+       }
+-      drv->num_if_indices = sizeof(drv->default_if_indices) / sizeof(int);
+-      drv->if_indices = drv->default_if_indices;
+       for (i = 0; i < params->num_bridge; i++) {
+               if (params->bridge[i]) {
+                       ifindex = if_nametoindex(params->bridge[i]);