mac80211: fix for WDS interfaces
Initialize the rate table for WDS interfaces, and add cases to allow WDS packets to pass the xmit and receive tests. Signed-off-by: Bill Jordan <bjordan@rajant.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
e8347ebad2
commit
1be7fe8de9
|
@ -24,6 +24,7 @@
|
|||
#include "led.h"
|
||||
#include "driver-ops.h"
|
||||
#include "wme.h"
|
||||
#include "rate.h"
|
||||
|
||||
/**
|
||||
* DOC: Interface list locking
|
||||
|
@ -311,6 +312,8 @@ static int ieee80211_do_open(struct net_device *dev, bool coming_up)
|
|||
/* STA has been freed */
|
||||
goto err_del_interface;
|
||||
}
|
||||
|
||||
rate_control_rate_init(sta);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -201,6 +201,8 @@ void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata,
|
|||
sdata->vif.bss_conf.bssid = sdata->u.ibss.bssid;
|
||||
else if (sdata->vif.type == NL80211_IFTYPE_AP)
|
||||
sdata->vif.bss_conf.bssid = sdata->vif.addr;
|
||||
else if (sdata->vif.type == NL80211_IFTYPE_WDS)
|
||||
sdata->vif.bss_conf.bssid = NULL;
|
||||
else if (ieee80211_vif_is_mesh(&sdata->vif)) {
|
||||
sdata->vif.bss_conf.bssid = zero;
|
||||
} else {
|
||||
|
@ -211,6 +213,7 @@ void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata,
|
|||
switch (sdata->vif.type) {
|
||||
case NL80211_IFTYPE_AP:
|
||||
case NL80211_IFTYPE_ADHOC:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -819,6 +819,7 @@ ieee80211_rx_h_check(struct ieee80211_rx_data *rx)
|
|||
if (unlikely((ieee80211_is_data(hdr->frame_control) ||
|
||||
ieee80211_is_pspoll(hdr->frame_control)) &&
|
||||
rx->sdata->vif.type != NL80211_IFTYPE_ADHOC &&
|
||||
rx->sdata->vif.type != NL80211_IFTYPE_WDS &&
|
||||
(!rx->sta || !test_sta_flags(rx->sta, WLAN_STA_ASSOC)))) {
|
||||
if ((!ieee80211_has_fromds(hdr->frame_control) &&
|
||||
!ieee80211_has_tods(hdr->frame_control) &&
|
||||
|
|
|
@ -273,6 +273,9 @@ ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx)
|
|||
*/
|
||||
return TX_DROP;
|
||||
|
||||
if (tx->sdata->vif.type == NL80211_IFTYPE_WDS)
|
||||
return TX_CONTINUE;
|
||||
|
||||
if (tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT)
|
||||
return TX_CONTINUE;
|
||||
|
||||
|
|
Loading…
Reference in New Issue