projects
/
openwrt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[ar71xx] generate firmware image for the TL-WR941ND device
[openwrt.git]
/
package
/
madwifi
/
patches
/
370-wdsvap.patch
diff --git
a/package/madwifi/patches/370-wdsvap.patch
b/package/madwifi/patches/370-wdsvap.patch
index
94d75f0
..
f72e22f
100644
(file)
--- a/
package/madwifi/patches/370-wdsvap.patch
+++ b/
package/madwifi/patches/370-wdsvap.patch
@@
-44,12
+44,13
@@
if (ic->ic_dev->flags & IFF_RUNNING) {
/* needs to disable hardware too */
if (ic->ic_dev->flags & IFF_RUNNING) {
/* needs to disable hardware too */
-@@ -1271,8 +1269,1
1
@@ ath_vap_create(struct ieee80211com *ic,
+@@ -1271,8 +1269,1
2
@@ ath_vap_create(struct ieee80211com *ic,
} else
ic_opmode = opmode;
break;
- case IEEE80211_M_HOSTAP:
case IEEE80211_M_WDS:
} else
ic_opmode = opmode;
break;
- case IEEE80211_M_HOSTAP:
case IEEE80211_M_WDS:
++ ic_opmode = ic->ic_opmode;
+ if (!master)
+ return NULL;
+ break;
+ if (!master)
+ return NULL;
+ break;
@@
-57,7
+58,7
@@
/* permit multiple APs and/or WDS links */
/* XXX sta+ap for repeater/bridge application */
if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA))
/* permit multiple APs and/or WDS links */
/* XXX sta+ap for repeater/bridge application */
if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA))
-@@ -1304,7 +130
5
,7 @@ ath_vap_create(struct ieee80211com *ic,
+@@ -1304,7 +130
6
,7 @@ ath_vap_create(struct ieee80211com *ic,
}
avp = dev->priv;
}
avp = dev->priv;
@@
-66,7
+67,7
@@
/* override with driver methods */
vap = &avp->av_vap;
avp->av_newstate = vap->iv_newstate;
/* override with driver methods */
vap = &avp->av_vap;
avp->av_newstate = vap->iv_newstate;
-@@ -4209,8 +421
0
,7 @@ ath_calcrxfilter(struct ath_softc *sc)
+@@ -4209,8 +421
1
,7 @@ ath_calcrxfilter(struct ath_softc *sc)
if (ic->ic_opmode == IEEE80211_M_STA ||
sc->sc_opmode == HAL_M_IBSS || /* NB: AHDEMO too */
(sc->sc_nostabeacons) || sc->sc_scanning ||
if (ic->ic_opmode == IEEE80211_M_STA ||
sc->sc_opmode == HAL_M_IBSS || /* NB: AHDEMO too */
(sc->sc_nostabeacons) || sc->sc_scanning ||
@@
-76,7
+77,7
@@
rfilt |= HAL_RX_FILTER_BEACON;
if (sc->sc_nmonvaps > 0)
rfilt |= (HAL_RX_FILTER_CONTROL | HAL_RX_FILTER_BEACON |
rfilt |= HAL_RX_FILTER_BEACON;
if (sc->sc_nmonvaps > 0)
rfilt |= (HAL_RX_FILTER_CONTROL | HAL_RX_FILTER_BEACON |
-@@ -9030,8 +903
0
,6 @@ ath_calibrate(unsigned long arg)
+@@ -9030,8 +903
1
,6 @@ ath_calibrate(unsigned long arg)
* set sc->beacons if we might need to restart
* them after ath_reset. */
if (!sc->sc_beacons &&
* set sc->beacons if we might need to restart
* them after ath_reset. */
if (!sc->sc_beacons &&
@@
-902,7
+903,7
@@
}
/* This is overridden by ath_node_alloc in ath/if_ath.c, and so
}
/* This is overridden by ath_node_alloc in ath/if_ath.c, and so
-@@ -1134,6 +1145,6
2
@@ ieee80211_alloc_node(struct ieee80211vap
+@@ -1134,6 +1145,6
5
@@ ieee80211_alloc_node(struct ieee80211vap
return ni;
}
return ni;
}
@@
-956,6
+957,9
@@
+ if (ni->ni_subif)
+ return;
+
+ if (ni->ni_subif)
+ return;
+
++ if (!ni->ni_table)
++ return;
++
+ ieee80211_ref_node(ni);
+ ni->ni_subif = ni->ni_vap;
+ IEEE80211_INIT_WORK(&ni->ni_create, ieee80211_wds_do_addif);
+ ieee80211_ref_node(ni);
+ ni->ni_subif = ni->ni_vap;
+ IEEE80211_INIT_WORK(&ni->ni_create, ieee80211_wds_do_addif);
@@
-965,7
+969,7
@@
/* Add wds address to the node table */
int
#ifdef IEEE80211_DEBUG_REFCNT
/* Add wds address to the node table */
int
#ifdef IEEE80211_DEBUG_REFCNT
-@@ -1553,22 +162
0
,39 @@ ieee80211_find_rxnode(struct ieee80211co
+@@ -1553,22 +162
3
,39 @@ ieee80211_find_rxnode(struct ieee80211co
((wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) == IEEE80211_FC0_SUBTYPE_PS_POLL)
struct ieee80211_node_table *nt;
struct ieee80211_node *ni;
((wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) == IEEE80211_FC0_SUBTYPE_PS_POLL)
struct ieee80211_node_table *nt;
struct ieee80211_node *ni;
@@
-1014,7
+1018,7
@@
#endif
IEEE80211_NODE_TABLE_UNLOCK_IRQ(nt);
#endif
IEEE80211_NODE_TABLE_UNLOCK_IRQ(nt);
-@@ -1596,9 +168
0
,19 @@ ieee80211_find_txnode_debug(struct ieee8
+@@ -1596,9 +168
3
,19 @@ ieee80211_find_txnode_debug(struct ieee8
ieee80211_find_txnode(struct ieee80211vap *vap, const u_int8_t *mac)
#endif
{
ieee80211_find_txnode(struct ieee80211vap *vap, const u_int8_t *mac)
#endif
{
@@
-1034,7
+1038,7
@@
/*
* The destination address should be in the node table
* unless we are operating in station mode or this is a
/*
* The destination address should be in the node table
* unless we are operating in station mode or this is a
-@@ -1669,6 +176
3
,11 @@ ieee80211_free_node(struct ieee80211_nod
+@@ -1669,6 +176
6
,11 @@ ieee80211_free_node(struct ieee80211_nod
{
struct ieee80211vap *vap = ni->ni_vap;
{
struct ieee80211vap *vap = ni->ni_vap;
@@
-1046,7
+1050,7
@@
atomic_dec(&ni->ni_ic->ic_node_counter);
node_print_message(IEEE80211_MSG_NODE|IEEE80211_MSG_NODE_REF,
1 /* show counter */,
atomic_dec(&ni->ni_ic->ic_node_counter);
node_print_message(IEEE80211_MSG_NODE|IEEE80211_MSG_NODE_REF,
1 /* show counter */,
-@@ -1781,22 +188
0
,6 @@ restart:
+@@ -1781,22 +188
3
,6 @@ restart:
jiffies > ni->ni_rxfragstamp + HZ) {
ieee80211_dev_kfree_skb(&ni->ni_rxfrag);
}
jiffies > ni->ni_rxfragstamp + HZ) {
ieee80211_dev_kfree_skb(&ni->ni_rxfrag);
}
@@
-1069,7
+1073,7
@@
ni->ni_inact--;
if (ni->ni_associd != 0 || isadhoc) {
struct ieee80211vap *vap = ni->ni_vap;
ni->ni_inact--;
if (ni->ni_associd != 0 || isadhoc) {
struct ieee80211vap *vap = ni->ni_vap;
-@@ -2263,6 +234
6,36
@@ ieee80211_node_leave_11g(struct ieee8021
+@@ -2263,6 +234
9,35
@@ ieee80211_node_leave_11g(struct ieee8021
}
}
}
}
@@
-1080,15
+1084,14
@@
+ struct ieee80211vap *vap;
+ struct ieee80211com *ic;
+
+ struct ieee80211vap *vap;
+ struct ieee80211com *ic;
+
++ /* wait for full initialization before we start the teardown
++ * otherwise we could leak interfaces */
++ while (ni->ni_subif == ni->ni_vap)
++ schedule();
++
+ rtnl_lock();
+ vap = ni->ni_subif;
+
+ rtnl_lock();
+ vap = ni->ni_subif;
+
-+ /* if addif is waiting for the timer to fire, cancel! */
-+ if (vap == ni->ni_vap) {
-+ ni->ni_subif = NULL;
-+ goto done;
-+ }
-+
+ if (!vap)
+ goto done;
+
+ if (!vap)
+ goto done;
+
@@
-1106,7
+1109,7
@@
/*
* Handle bookkeeping for a station/neighbor leaving
* the bss when operating in ap or adhoc modes.
/*
* Handle bookkeeping for a station/neighbor leaving
* the bss when operating in ap or adhoc modes.
-@@ -2279,6 +239
2
,12 @@ ieee80211_node_leave(struct ieee80211_no
+@@ -2279,6 +239
4
,12 @@ ieee80211_node_leave(struct ieee80211_no
ni, "station with aid %d leaves (refcnt %u)",
IEEE80211_NODE_AID(ni), atomic_read(&ni->ni_refcnt));
ni, "station with aid %d leaves (refcnt %u)",
IEEE80211_NODE_AID(ni), atomic_read(&ni->ni_refcnt));
This page took
0.042533 seconds
and
4
git commands to generate.