move a few unmaintained packages from trunk to /packages
[openwrt/svn-archive/archive.git] / package / madwifi / patches / 392-remove_wds_nodetracking.patch
diff --git a/package/madwifi/patches/392-remove_wds_nodetracking.patch b/package/madwifi/patches/392-remove_wds_nodetracking.patch
deleted file mode 100644 (file)
index fb9fb6a..0000000
+++ /dev/null
@@ -1,388 +0,0 @@
---- a/net80211/ieee80211_input.c
-+++ b/net80211/ieee80211_input.c
-@@ -568,36 +568,6 @@ ieee80211_input(struct ieee80211vap * va
-                               }
-                       }
--                      /* XXX: Useless node mgmt API; make better */
--                      if ((dir == IEEE80211_FC1_DIR_DSTODS) && !vap->iv_wdsnode &&
--                                      !ni_wds && !ni->ni_subif) {
--                              struct ieee80211_node_table *nt = &ic->ic_sta;
--                              struct ieee80211_frame_addr4 *wh4;
--
--                              if (!(vap->iv_flags_ext & IEEE80211_FEXT_WDS)) {
--                                      IEEE80211_DISCARD(vap, IEEE80211_MSG_INPUT,
--                                              wh, "data", "%s", "4 addr not allowed");
--                                      goto err;
--                              }
--                              wh4 = (struct ieee80211_frame_addr4 *)skb->data;
--                              ni_wds = ieee80211_find_wds_node(nt, wh4->i_addr4);
--                              /* Last call increments ref count if !NULL */
--                              if ((ni_wds != NULL) && (ni_wds != ni)) {
--                                      /*
--                                       * node with source address (addr4) moved
--                                       * to another WDS capable station. remove the
--                                       * reference to the previous station and add 
--                                       * reference to the new one
--                                       */
--                                       (void) ieee80211_remove_wds_addr(nt, wh4->i_addr4);
--                                       ieee80211_add_wds_addr(nt, ni, wh4->i_addr4, 0);
--                              }
--                              if (ni_wds == NULL)
--                                      ieee80211_add_wds_addr(nt, ni, wh4->i_addr4, 0);
--                              else
--                                      ieee80211_unref_node(&ni_wds);
--                      }
--
-                       /*
-                        * Check for power save state change.
-                        */
---- a/net80211/ieee80211_node.c
-+++ b/net80211/ieee80211_node.c
-@@ -122,7 +122,6 @@ static void ieee80211_node_table_init(st
- static void ieee80211_node_table_cleanup(struct ieee80211_node_table *);
- static void ieee80211_node_table_reset(struct ieee80211_node_table *,
-       struct ieee80211vap *);
--static void ieee80211_node_wds_ageout(unsigned long);
- MALLOC_DEFINE(M_80211_NODE, "80211node", "802.11 node state");
-@@ -785,10 +784,6 @@ ieee80211_node_table_init(struct ieee802
-       nt->nt_name = name;
-       nt->nt_scangen = 1;
-       nt->nt_inact_init = inact;
--      init_timer(&nt->nt_wds_aging_timer);
--      nt->nt_wds_aging_timer.function = ieee80211_node_wds_ageout;
--      nt->nt_wds_aging_timer.data = (unsigned long) nt;
--      mod_timer(&nt->nt_wds_aging_timer, jiffies + HZ * WDS_AGING_TIMER_VAL);
- }
- static __inline 
-@@ -1204,142 +1199,6 @@ void ieee80211_wds_addif(struct ieee8021
-       schedule_work(&ni->ni_create);
- }
--/* Add wds address to the node table */
--int
--#ifdef IEEE80211_DEBUG_REFCNT
--ieee80211_add_wds_addr_debug(struct ieee80211_node_table *nt,
--      struct ieee80211_node *ni, const u_int8_t *macaddr, u_int8_t wds_static,
--      const char* func, int line)
--#else
--ieee80211_add_wds_addr(struct ieee80211_node_table *nt,
--      struct ieee80211_node *ni, const u_int8_t *macaddr, u_int8_t wds_static)
--#endif
--{
--      int hash;
--      struct ieee80211_wds_addr *wds;
--
--      MALLOC(wds, struct ieee80211_wds_addr *, sizeof(struct ieee80211_wds_addr),
--              M_80211_WDS, M_NOWAIT | M_ZERO);
--      if (wds == NULL) {
--              /* XXX msg */
--              return 1;
--      }
--      if (wds_static)
--              wds->wds_agingcount = WDS_AGING_STATIC;
--      else
--              wds->wds_agingcount = WDS_AGING_COUNT;
--      hash = IEEE80211_NODE_HASH(macaddr);
--      IEEE80211_ADDR_COPY(wds->wds_macaddr, macaddr);
--
--      IEEE80211_NODE_TABLE_LOCK_IRQ(nt);
--#ifdef IEEE80211_DEBUG_REFCNT
--      wds->wds_ni = ieee80211_ref_node_debug(ni, func, line);
--#else
--      wds->wds_ni = ieee80211_ref_node(ni);
--#endif
--      LIST_INSERT_HEAD(&nt->nt_wds_hash[hash], wds, wds_hash);
--      IEEE80211_NODE_TABLE_UNLOCK_IRQ(nt);
--      return 0;
--}
--#ifdef IEEE80211_DEBUG_REFCNT
--EXPORT_SYMBOL(ieee80211_add_wds_addr_debug);
--#else
--EXPORT_SYMBOL(ieee80211_add_wds_addr);
--#endif
--
--/* remove wds address from the wds hash table */
--void
--#ifdef IEEE80211_DEBUG_REFCNT
--ieee80211_remove_wds_addr_debug(struct ieee80211_node_table *nt, const u_int8_t *macaddr, 
--                         const char* func, int line)
--#else
--ieee80211_remove_wds_addr(struct ieee80211_node_table *nt, const u_int8_t *macaddr)
--#endif
--{
--      int hash;
--      struct ieee80211_wds_addr *wds, *twds;
--
--      hash = IEEE80211_NODE_HASH(macaddr);
--      IEEE80211_NODE_TABLE_LOCK_IRQ(nt);
--      LIST_FOREACH_SAFE(wds, &nt->nt_wds_hash[hash], wds_hash, twds) {
--              if (IEEE80211_ADDR_EQ(wds->wds_macaddr, macaddr)) {
--                      LIST_REMOVE(wds, wds_hash);
--#ifdef IEEE80211_DEBUG_REFCNT
--                      ieee80211_unref_node_debug(&wds->wds_ni, func, line);
--#else
--                      ieee80211_unref_node(&wds->wds_ni);
--#endif
--                      FREE(wds, M_80211_WDS);
--                      break;
--              }
--      }
--      IEEE80211_NODE_TABLE_UNLOCK_IRQ(nt);
--}
--#ifdef IEEE80211_DEBUG_REFCNT
--EXPORT_SYMBOL(ieee80211_remove_wds_addr_debug);
--#else
--EXPORT_SYMBOL(ieee80211_remove_wds_addr);
--#endif
--
--/* Remove node references from wds table */
--void
--#ifdef IEEE80211_DEBUG_REFCNT
--ieee80211_del_wds_node_debug(struct ieee80211_node_table *nt, struct ieee80211_node *ni, 
--                      const char* func, int line)
--#else
--ieee80211_del_wds_node(struct ieee80211_node_table *nt, struct ieee80211_node *ni)
--#endif
--{
--      int hash;
--      struct ieee80211_wds_addr *wds, *twds;
--
--      IEEE80211_NODE_TABLE_LOCK_IRQ(nt);
--      for (hash = 0; hash < IEEE80211_NODE_HASHSIZE; hash++) {
--              LIST_FOREACH_SAFE(wds, &nt->nt_wds_hash[hash], wds_hash, twds) {
--                      if (wds->wds_ni == ni) {
--                              LIST_REMOVE(wds, wds_hash);
--#ifdef IEEE80211_DEBUG_REFCNT
--                              ieee80211_unref_node_debug(&wds->wds_ni, func, line);
--#else
--                              ieee80211_unref_node(&wds->wds_ni);
--#endif
--                              FREE(wds, M_80211_WDS);
--                      }
--              }
--      }
--      IEEE80211_NODE_TABLE_UNLOCK_IRQ(nt);
--}
--#ifdef IEEE80211_DEBUG_REFCNT
--EXPORT_SYMBOL(ieee80211_del_wds_node_debug);
--#else
--EXPORT_SYMBOL(ieee80211_del_wds_node);
--#endif
--
--static void
--ieee80211_node_wds_ageout(unsigned long data)
--{
--      struct ieee80211_node_table *nt = (struct ieee80211_node_table *)data;
--      int hash;
--      struct ieee80211_wds_addr *wds, *twds;
--
--      IEEE80211_NODE_TABLE_LOCK_IRQ(nt);
--      for (hash = 0; hash < IEEE80211_NODE_HASHSIZE; hash++) {
--              LIST_FOREACH_SAFE(wds, &nt->nt_wds_hash[hash], wds_hash, twds) {
--                      if (wds->wds_agingcount != WDS_AGING_STATIC) {
--                              if (!wds->wds_agingcount) {
--                                      LIST_REMOVE(wds, wds_hash);
--                                      ieee80211_unref_node(&wds->wds_ni);
--                                      FREE(wds, M_80211_WDS);
--                              } else
--                                      wds->wds_agingcount--;
--                      }
--              }
--      }
--      IEEE80211_NODE_TABLE_UNLOCK_IRQ(nt);
--      mod_timer(&nt->nt_wds_aging_timer, jiffies + HZ * WDS_AGING_TIMER_VAL);
--}
--
--
- /* Add the specified station to the station table.
-  * Allocates a new ieee80211_node* that has a reference count of one
-  * If tmp is 0, it is added to the node table and the reference is used.
-@@ -1385,34 +1244,6 @@ ieee80211_dup_bss(struct ieee80211vap *v
-       return ni;
- }
--static struct ieee80211_node *
--#ifdef IEEE80211_DEBUG_REFCNT
--ieee80211_find_wds_node_locked_debug(struct ieee80211_node_table *nt, 
--                       const u_int8_t *macaddr, const char* func, int line)
--#else
--ieee80211_find_wds_node_locked(struct ieee80211_node_table *nt, 
--                       const u_int8_t *macaddr)
--#endif
--{
--      struct ieee80211_wds_addr *wds;
--      int hash;
--      IEEE80211_NODE_TABLE_LOCK_ASSERT(nt);
--
--      hash = IEEE80211_NODE_HASH(macaddr);
--      LIST_FOREACH(wds, &nt->nt_wds_hash[hash], wds_hash) {
--              if (IEEE80211_ADDR_EQ(wds->wds_macaddr, macaddr)) {
--                      if (wds->wds_agingcount != WDS_AGING_STATIC)
--                              wds->wds_agingcount = WDS_AGING_COUNT; /* reset the aging count */
--#ifdef IEEE80211_DEBUG_REFCNT
--                      return ieee80211_ref_node_debug(wds->wds_ni, func, line);
--#else
--                      return ieee80211_ref_node(wds->wds_ni);
--#endif
--              }
--      }
--      return NULL;
--}
--
- /* NB: A node reference is acquired here; the caller MUST release it. */
- #ifdef IEEE80211_DEBUG_REFCNT
- #define       ieee80211_find_node_locked(nt, mac) \
-@@ -1430,7 +1261,6 @@ ieee80211_find_node_locked(struct ieee80
- {
-       struct ieee80211_node *ni;
-       int hash;
--      struct ieee80211_wds_addr *wds;
-       IEEE80211_NODE_TABLE_LOCK_ASSERT(nt);
-@@ -1445,48 +1275,11 @@ ieee80211_find_node_locked(struct ieee80
-                       return ni;
-               }
-       }
--
--      /* Now, we look for the desired mac address in the 4 address
--         nodes. */
--      LIST_FOREACH(wds, &nt->nt_wds_hash[hash], wds_hash) {
--              if (IEEE80211_ADDR_EQ(wds->wds_macaddr, macaddr)) {
--#ifdef IEEE80211_DEBUG_REFCNT
--                      return ieee80211_ref_node_debug(wds->wds_ni, func, line);
--#else
--                      return ieee80211_ref_node(wds->wds_ni);
--#endif 
--              }
--      }
-       return NULL;
- }
- struct ieee80211_node *
- #ifdef IEEE80211_DEBUG_REFCNT
--ieee80211_find_wds_node_debug(struct ieee80211_node_table *nt, const u_int8_t *macaddr, 
--                       const char* func, int line)
--#else
--ieee80211_find_wds_node(struct ieee80211_node_table *nt, const u_int8_t *macaddr)
--#endif
--{
--      struct ieee80211_node *ni;
--
--      IEEE80211_NODE_TABLE_LOCK_IRQ(nt);
--#ifdef IEEE80211_DEBUG_REFCNT
--      ni = ieee80211_find_wds_node_locked_debug(nt, macaddr, func, line);
--#else
--      ni = ieee80211_find_wds_node_locked(nt, macaddr);
--#endif
--      IEEE80211_NODE_TABLE_UNLOCK_IRQ(nt);
--      return ni;
--}
--#ifdef IEEE80211_DEBUG_REFCNT
--EXPORT_SYMBOL(ieee80211_find_wds_node_debug);
--#else
--EXPORT_SYMBOL(ieee80211_find_wds_node);
--#endif
--
--struct ieee80211_node *
--#ifdef IEEE80211_DEBUG_REFCNT
- ieee80211_find_node_debug(struct ieee80211_node_table *nt,
-       const u_int8_t *macaddr, const char *func, int line)
- #else
-@@ -1838,7 +1631,6 @@ ieee80211_node_table_cleanup(struct ieee
-               ic->ic_node_cleanup(ni);
- #endif
-       }
--      del_timer(&nt->nt_wds_aging_timer);
-       IEEE80211_SCAN_LOCK_DESTROY(nt);
-       IEEE80211_NODE_TABLE_LOCK_DESTROY(nt);
- }
-@@ -2404,8 +2196,6 @@ ieee80211_node_leave(struct ieee80211_no
-        * so no more references are generated
-        */
-       if (nt) {
--              ieee80211_remove_wds_addr(nt, ni->ni_macaddr);
--              ieee80211_del_wds_node(nt, ni);
-               IEEE80211_NODE_TABLE_LOCK_IRQ(nt);
-               node_table_leave_locked(nt, ni);
-               IEEE80211_NODE_TABLE_UNLOCK_IRQ(nt);
---- a/net80211/ieee80211_node.h
-+++ b/net80211/ieee80211_node.h
-@@ -231,13 +231,6 @@ void ieee80211_sta_leave(struct ieee8021
- #define WDS_AGING_STATIC      0xffff
- #define WDS_AGING_TIMER_VAL   (WDS_AGING_TIME / 2)
--struct ieee80211_wds_addr {
--      LIST_ENTRY(ieee80211_wds_addr) wds_hash;
--      u_int8_t        wds_macaddr[IEEE80211_ADDR_LEN];
--      struct ieee80211_node *wds_ni;
--      u_int16_t wds_agingcount;
--};
--
- /*
-  * Table of ieee80211_node instances.  Each ieee80211com
-  * has at least one for holding the scan candidates.
-@@ -250,11 +243,9 @@ struct ieee80211_node_table {
-       ieee80211_node_table_lock_t nt_nodelock;        /* on node table */
-       TAILQ_HEAD(, ieee80211_node) nt_node;   /* information of all nodes */
-       ATH_LIST_HEAD(, ieee80211_node) nt_hash[IEEE80211_NODE_HASHSIZE];
--      ATH_LIST_HEAD(, ieee80211_wds_addr) nt_wds_hash[IEEE80211_NODE_HASHSIZE];
-       ieee80211_scan_lock_t nt_scanlock;      /* on nt_scangen */
-       u_int nt_scangen;                       /* gen# for timeout scan */
-       int nt_inact_init;                      /* initial node inact setting */
--      struct timer_list nt_wds_aging_timer;   /* timer to age out wds entries */
- };
- /* Allocates a new ieee80211_node* that has a reference count of one, and 
-@@ -363,47 +354,6 @@ void
- ieee80211_unref_node(struct ieee80211_node **pni);
- #endif /* #ifdef IEEE80211_DEBUG_REFCNT */
--/* Increments reference count of ieee80211_node *ni */
--#ifdef IEEE80211_DEBUG_REFCNT
--#define ieee80211_add_wds_addr(_table, _node, _mac, _static) \
--      ieee80211_add_wds_addr_debug(_table, _node, _mac, _static, __func__, __LINE__)
--int ieee80211_add_wds_addr_debug(struct ieee80211_node_table *, struct ieee80211_node *,
--      const u_int8_t *, u_int8_t, const char* func, int line);
--#else
--int ieee80211_add_wds_addr(struct ieee80211_node_table *, struct ieee80211_node *,
--      const u_int8_t *, u_int8_t);
--#endif /* #ifdef IEEE80211_DEBUG_REFCNT */
--
--/* Decrements reference count of ieee80211_node *ni */
--#ifdef IEEE80211_DEBUG_REFCNT
--#define ieee80211_remove_wds_addr(_table, _mac) \
--      ieee80211_remove_wds_addr_debug(_table, _mac, __func__, __LINE__)
--void ieee80211_remove_wds_addr_debug(struct ieee80211_node_table *, const u_int8_t *,
--                             const char* func, int line);
--#else
--void ieee80211_remove_wds_addr(struct ieee80211_node_table *, const u_int8_t *);
--#endif /* #ifdef IEEE80211_DEBUG_REFCNT */
--
--/* Decrements reference count of node, if found */
--#ifdef IEEE80211_DEBUG_REFCNT
--#define ieee80211_del_wds_node(_table, _node) \
--      ieee80211_del_wds_node_debug(_table, _node, __func__, __LINE__)
--void ieee80211_del_wds_node_debug(struct ieee80211_node_table *, struct ieee80211_node *,
--                          const char* func, int line);
--#else
--void ieee80211_del_wds_node(struct ieee80211_node_table *, struct ieee80211_node *);
--#endif /* #ifdef IEEE80211_DEBUG_REFCNT */
--
--/* Increments reference count of node, if found */
--#ifdef IEEE80211_DEBUG_REFCNT
--#define ieee80211_find_wds_node(_table, _mac) \
--      ieee80211_find_wds_node_debug(_table, _mac, __func__, __LINE__)
--struct ieee80211_node *ieee80211_find_wds_node_debug(struct ieee80211_node_table *,
--      const u_int8_t *, const char* func, int line);
--#else
--struct ieee80211_node *ieee80211_find_wds_node(struct ieee80211_node_table *,
--      const u_int8_t *);
--#endif /* #ifdef IEEE80211_DEBUG_REFCNT */
- typedef void ieee80211_iter_func(void *, struct ieee80211_node *);
- void ieee80211_iterate_nodes(struct ieee80211_node_table *,
-       ieee80211_iter_func *, void *);