hostapd: update to latest git, fixes ampdu settings in the beacon HT IE

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18606 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Felix Fietkau 2009-11-29 16:56:38 +00:00
parent b2deecd6c8
commit e99873dd96
8 changed files with 29 additions and 79 deletions

View File

@ -8,9 +8,9 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=hostapd PKG_NAME:=hostapd
PKG_VERSION:=20091111 PKG_VERSION:=20091129
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_REV:=dc6d9ac250f793a62b21ca828445967fb484305f PKG_REV:=be8eb8ab3ee42aa66930aea827bdcb05a2172276
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=git://w1.fi/srv/git/hostap.git PKG_SOURCE_URL:=git://w1.fi/srv/git/hostap.git

View File

@ -1,6 +1,6 @@
--- a/src/drivers/driver_madwifi.c --- a/src/drivers/driver_madwifi.c
+++ b/src/drivers/driver_madwifi.c +++ b/src/drivers/driver_madwifi.c
@@ -318,6 +318,7 @@ madwifi_set_iface_flags(void *priv, int @@ -323,6 +323,7 @@ madwifi_set_iface_flags(void *priv, int
{ {
struct madwifi_driver_data *drv = priv; struct madwifi_driver_data *drv = priv;
struct ifreq ifr; struct ifreq ifr;
@ -8,7 +8,7 @@
wpa_printf(MSG_DEBUG, "%s: dev_up=%d", __func__, dev_up); wpa_printf(MSG_DEBUG, "%s: dev_up=%d", __func__, dev_up);
@@ -332,10 +333,14 @@ madwifi_set_iface_flags(void *priv, int @@ -337,10 +338,14 @@ madwifi_set_iface_flags(void *priv, int
return -1; return -1;
} }

View File

@ -1,6 +1,6 @@
--- a/hostapd/hostapd.c --- a/hostapd/hostapd.c
+++ b/hostapd/hostapd.c +++ b/hostapd/hostapd.c
@@ -1344,10 +1344,8 @@ static int setup_interface(struct hostap @@ -1339,10 +1339,8 @@ static int setup_interface(struct hostap
if (hapd->iconf->country[0] && hapd->iconf->country[1]) { if (hapd->iconf->country[0] && hapd->iconf->country[1]) {
os_memcpy(country, hapd->iconf->country, 3); os_memcpy(country, hapd->iconf->country, 3);
country[3] = '\0'; country[3] = '\0';

View File

@ -1,16 +0,0 @@
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -4418,10 +4418,10 @@ static void *i802_init(struct hostapd_da
/* start listening for EAPOL on the default AP interface */
add_ifidx(drv, drv->ifindex);
- if (params->bssid) {
- if (hostapd_set_iface_flags(drv, drv->ifname, 0))
- goto failed;
+ if (hostapd_set_iface_flags(drv, drv->ifname, 0))
+ goto failed;
+ if (params->bssid) {
if (set_ifhwaddr(drv, drv->ifname, params->bssid))
goto failed;
}

View File

@ -11,7 +11,7 @@
} else if (os_strcmp(buf, "country_code") == 0) { } else if (os_strcmp(buf, "country_code") == 0) {
--- a/hostapd/config.h --- a/hostapd/config.h
+++ b/hostapd/config.h +++ b/hostapd/config.h
@@ -198,6 +198,7 @@ struct hostapd_bss_config { @@ -195,6 +195,7 @@ struct hostapd_bss_config {
int num_accept_mac; int num_accept_mac;
struct mac_acl_entry *deny_mac; struct mac_acl_entry *deny_mac;
int num_deny_mac; int num_deny_mac;
@ -21,7 +21,7 @@
* algorithms, WPA_AUTH_ALG_{OPEN,SHARED,LEAP} */ * algorithms, WPA_AUTH_ALG_{OPEN,SHARED,LEAP} */
--- a/src/drivers/driver.h --- a/src/drivers/driver.h
+++ b/src/drivers/driver.h +++ b/src/drivers/driver.h
@@ -1305,6 +1305,7 @@ struct wpa_driver_ops { @@ -1127,6 +1127,7 @@ struct wpa_driver_ops {
const char *ifname, const u8 *addr); const char *ifname, const u8 *addr);
int (*set_sta_vlan)(void *priv, const u8 *addr, const char *ifname, int (*set_sta_vlan)(void *priv, const u8 *addr, const char *ifname,
int vlan_id); int vlan_id);
@ -31,7 +31,7 @@
* @priv: driver private data * @priv: driver private data
--- a/src/drivers/driver_nl80211.c --- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c
@@ -2755,7 +2755,7 @@ static void nl80211_remove_iface(struct @@ -2675,7 +2675,7 @@ static void nl80211_remove_iface(struct
static int nl80211_create_iface_once(struct wpa_driver_nl80211_data *drv, static int nl80211_create_iface_once(struct wpa_driver_nl80211_data *drv,
const char *ifname, const char *ifname,
enum nl80211_iftype iftype, enum nl80211_iftype iftype,
@ -40,7 +40,7 @@
{ {
struct nl_msg *msg, *flags = NULL; struct nl_msg *msg, *flags = NULL;
int ifidx; int ifidx;
@@ -2786,6 +2786,8 @@ static int nl80211_create_iface_once(str @@ -2706,6 +2706,8 @@ static int nl80211_create_iface_once(str
if (err) if (err)
goto nla_put_failure; goto nla_put_failure;
@ -49,7 +49,7 @@
} }
ret = send_and_recv_msgs(drv, msg, NULL, NULL); ret = send_and_recv_msgs(drv, msg, NULL, NULL);
@@ -2816,11 +2818,11 @@ static int nl80211_create_iface_once(str @@ -2736,11 +2738,11 @@ static int nl80211_create_iface_once(str
} }
static int nl80211_create_iface(struct wpa_driver_nl80211_data *drv, static int nl80211_create_iface(struct wpa_driver_nl80211_data *drv,
const char *ifname, enum nl80211_iftype iftype, const char *ifname, enum nl80211_iftype iftype,
@ -63,7 +63,7 @@
/* if error occured and interface exists already */ /* if error occured and interface exists already */
if (ret == -ENFILE && if_nametoindex(ifname)) { if (ret == -ENFILE && if_nametoindex(ifname)) {
@@ -2830,7 +2832,7 @@ static int nl80211_create_iface(struct w @@ -2750,7 +2752,7 @@ static int nl80211_create_iface(struct w
nl80211_remove_iface(drv, if_nametoindex(ifname)); nl80211_remove_iface(drv, if_nametoindex(ifname));
/* Try to create the interface again */ /* Try to create the interface again */
@ -72,7 +72,7 @@
} }
return ret; return ret;
@@ -3055,7 +3057,7 @@ static struct sock_filter msock_filter_i @@ -2975,7 +2977,7 @@ static struct sock_filter msock_filter_i
#if 0 #if 0
/* /*
@ -81,7 +81,7 @@
*/ */
/* load the lower byte of the frame control field */ /* load the lower byte of the frame control field */
BPF_STMT(BPF_LD | BPF_B | BPF_IND, 0), BPF_STMT(BPF_LD | BPF_B | BPF_IND, 0),
@@ -3063,13 +3065,13 @@ static struct sock_filter msock_filter_i @@ -2983,13 +2985,13 @@ static struct sock_filter msock_filter_i
BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0x0c), BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0x0c),
/* drop non-data frames */ /* drop non-data frames */
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 8, 0, FAIL), BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 8, 0, FAIL),
@ -99,7 +99,7 @@
/* /*
* add header length to index * add header length to index
@@ -3175,7 +3177,7 @@ nl80211_create_monitor_interface(struct @@ -3095,7 +3097,7 @@ nl80211_create_monitor_interface(struct
buf[IFNAMSIZ - 1] = '\0'; buf[IFNAMSIZ - 1] = '\0';
drv->monitor_ifidx = drv->monitor_ifidx =
@ -108,7 +108,7 @@
if (drv->monitor_ifidx < 0) if (drv->monitor_ifidx < 0)
return -1; return -1;
@@ -4155,7 +4157,7 @@ static int i802_bss_add(void *priv, cons @@ -4064,7 +4066,7 @@ static int i802_bss_add(void *priv, cons
if (bss == NULL) if (bss == NULL)
return -1; return -1;
@ -117,7 +117,7 @@
if (ifidx < 0) { if (ifidx < 0) {
os_free(bss); os_free(bss);
return -1; return -1;
@@ -4264,7 +4266,7 @@ static int i802_if_add(const char *iface @@ -4162,7 +4164,7 @@ static int i802_if_add(const char *iface
enum hostapd_driver_if_type type, char *ifname, enum hostapd_driver_if_type type, char *ifname,
const u8 *addr) const u8 *addr)
{ {
@ -126,7 +126,7 @@
return -1; return -1;
return 0; return 0;
} }
@@ -4310,6 +4312,22 @@ static int i802_set_sta_vlan(void *priv, @@ -4208,6 +4210,22 @@ static int i802_set_sta_vlan(void *priv,
return -ENOBUFS; return -ENOBUFS;
} }
@ -149,7 +149,7 @@
static void handle_eapol(int sock, void *eloop_ctx, void *sock_ctx) static void handle_eapol(int sock, void *eloop_ctx, void *sock_ctx)
{ {
@@ -4536,5 +4554,6 @@ const struct wpa_driver_ops wpa_driver_n @@ -4424,5 +4442,6 @@ const struct wpa_driver_ops wpa_driver_n
.if_update = i802_if_update, .if_update = i802_if_update,
.if_remove = i802_if_remove, .if_remove = i802_if_remove,
.set_sta_vlan = i802_set_sta_vlan, .set_sta_vlan = i802_set_sta_vlan,
@ -158,7 +158,7 @@
}; };
--- a/hostapd/driver_i.h --- a/hostapd/driver_i.h
+++ b/hostapd/driver_i.h +++ b/hostapd/driver_i.h
@@ -453,6 +453,14 @@ hostapd_set_sta_vlan(const char *ifname, @@ -446,6 +446,14 @@ hostapd_set_sta_vlan(const char *ifname,
} }
static inline int static inline int

View File

@ -0,0 +1,10 @@
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -23,6 +23,7 @@
#include <netlink/genl/genl.h>
#include <netlink/genl/family.h>
#include <netlink/genl/ctrl.h>
+#include <linux/rtnetlink.h>
#include "nl80211_copy.h"
#include "common.h"

View File

@ -1,11 +0,0 @@
--- a/hostapd/hw_features.c
+++ b/hostapd/hw_features.c
@@ -329,7 +329,7 @@ static int ieee80211n_check_40mhz_5g(str
if (!match) {
for (i = 0; i < scan_res->num; i++) {
struct wpa_scan_res *bss = scan_res->res[i];
- ieee80211n_get_pri_sec_chan(bss, &pri_chan, &sec_chan);
+ ieee80211n_get_pri_sec_chan(bss, &bss_pri_chan, &bss_sec_chan);
if (pri_chan == bss_sec_chan &&
sec_chan == bss_pri_chan) {
wpa_printf(MSG_INFO, "Switch own primary and "

View File

@ -1,33 +0,0 @@
--- a/hostapd/ieee802_11.c
+++ b/hostapd/ieee802_11.c
@@ -1586,24 +1586,16 @@ hostapd_get_ht_capab(struct hostapd_data
struct ht_cap_ie *ht_cap_ie,
struct ht_cap_ie *neg_ht_cap_ie)
{
+ u16 cap;
os_memcpy(neg_ht_cap_ie, ht_cap_ie, sizeof(struct ht_cap_ie));
- neg_ht_cap_ie->data.capabilities_info =
- ht_cap_ie->data.capabilities_info & hapd->iconf->ht_capab;
-
- neg_ht_cap_ie->data.capabilities_info &= ~HT_CAP_INFO_SMPS_DISABLED;
- if ((ht_cap_ie->data.capabilities_info & HT_CAP_INFO_SMPS_DISABLED) ==
- (hapd->iconf->ht_capab & HT_CAP_INFO_SMPS_DISABLED))
- neg_ht_cap_ie->data.capabilities_info |=
- hapd->iconf->ht_capab & HT_CAP_INFO_SMPS_DISABLED;
- else
- neg_ht_cap_ie->data.capabilities_info |=
- HT_CAP_INFO_SMPS_DISABLED;
+ cap = le_to_host16(neg_ht_cap_ie->data.capabilities_info);
+ cap &= hapd->iconf->ht_capab;
+ cap |= (hapd->iconf->ht_capab & HT_CAP_INFO_SMPS_DISABLED);
/* FIXME: Rx STBC needs to be handled specially */
- neg_ht_cap_ie->data.capabilities_info &= ~HT_CAP_INFO_RX_STBC_MASK;
- neg_ht_cap_ie->data.capabilities_info |=
- hapd->iconf->ht_capab & HT_CAP_INFO_RX_STBC_MASK;
+ cap |= (hapd->iconf->ht_capab & HT_CAP_INFO_RX_STBC_MASK);
+ neg_ht_cap_ie->data.capabilities_info = host_to_le16(cap);
}
#endif /* CONFIG_IEEE80211N */