[Madwifi-cvs] revision 2950 committed
Status: Beta
Brought to you by:
otaku
From: benoit <svn...@ma...> - 2007-11-24 17:42:01
|
Project : madwifi Revision : 2950 Author : benoit Date : 2007-11-24 18:41:56 +0100 (Sat, 24 Nov 2007) Log Message : API change for _recv_mgmt(). No functionnal changes (will be done in a later commit). Requesting peer review for refcounting. Affected Files: * madwifi/branches/madwifi-dfs/ath/if_ath.c updated * madwifi/branches/madwifi-dfs/ath/if_athvar.h updated * madwifi/branches/madwifi-dfs/net80211/ieee80211_input.c updated * madwifi/branches/madwifi-dfs/net80211/ieee80211_proto.h updated * madwifi/branches/madwifi-dfs/net80211/ieee80211_var.h updated Modified: madwifi/branches/madwifi-dfs/ath/if_ath.c =================================================================== --- madwifi/branches/madwifi-dfs/ath/if_ath.c 2007-11-24 16:47:40 UTC (rev 2949) +++ madwifi/branches/madwifi-dfs/ath/if_ath.c 2007-11-24 17:41:56 UTC (rev 2950) @@ -185,8 +185,8 @@ static u_int8_t ath_node_getrssi(const struct ieee80211_node *); static int ath_rxbuf_init(struct ath_softc *, struct ath_buf *); -static void ath_recv_mgmt(struct ieee80211_node *, struct sk_buff *, int, - int, u_int64_t); +static void ath_recv_mgmt(struct ieee80211vap *, struct ieee80211_node *, + struct sk_buff *, int, int, u_int64_t); static void ath_setdefantenna(struct ath_softc *, u_int); static struct ath_txq *ath_txq_setup(struct ath_softc *, int, int); static void ath_rx_tasklet(TQUEUE_ARG); @@ -6099,19 +6099,22 @@ * including those belonging to other BSS. */ static void -ath_recv_mgmt(struct ieee80211_node *ni, struct sk_buff *skb, - int subtype, int rssi, u_int64_t rtsf) +ath_recv_mgmt(struct ieee80211vap * vap, struct ieee80211_node *ni_or_null, + struct sk_buff *skb, int subtype, int rssi, u_int64_t rtsf) { - struct ath_softc *sc = ni->ni_ic->ic_dev->priv; - struct ieee80211vap *vap = ni->ni_vap; + struct ath_softc *sc = vap->iv_ic->ic_dev->priv; + struct ieee80211_node * ni = ni_or_null; u_int64_t hw_tsf, beacon_tsf; u_int32_t hw_tu, beacon_tu, intval; int do_merge = 0; + if (ni_or_null == NULL) + ni = vap->iv_bss; + /*Call up first so subsequent work can use information * potentially stored in the node (e.g. for ibss merge). */ - sc->sc_recv_mgmt(ni, skb, subtype, rssi, rtsf); + sc->sc_recv_mgmt(vap, ni_or_null, skb, subtype, rssi, rtsf); switch (subtype) { case IEEE80211_FC0_SUBTYPE_BEACON: /* update RSSI statistics for use by the HAL */ Modified: madwifi/branches/madwifi-dfs/ath/if_athvar.h =================================================================== --- madwifi/branches/madwifi-dfs/ath/if_athvar.h 2007-11-24 16:47:40 UTC (rev 2949) +++ madwifi/branches/madwifi-dfs/ath/if_athvar.h 2007-11-24 17:41:56 UTC (rev 2950) @@ -615,7 +615,8 @@ int devid; int sc_debug; int sc_default_ieee80211_debug; /* default debug flags for new VAPs */ - void (*sc_recv_mgmt)(struct ieee80211_node *, struct sk_buff *, int, int, u_int64_t); + void (*sc_recv_mgmt)(struct ieee80211vap *, struct ieee80211_node *, + struct sk_buff *, int, int, u_int64_t); #ifdef IEEE80211_DEBUG_REFCNT void (*sc_node_cleanup_debug)(struct ieee80211_node *, const char* func, int line); void (*sc_node_free_debug)(struct ieee80211_node *, const char* func, int line); Modified: madwifi/branches/madwifi-dfs/net80211/ieee80211_input.c =================================================================== --- madwifi/branches/madwifi-dfs/net80211/ieee80211_input.c 2007-11-24 16:47:40 UTC (rev 2949) +++ madwifi/branches/madwifi-dfs/net80211/ieee80211_input.c 2007-11-24 17:41:56 UTC (rev 2950) @@ -813,7 +813,7 @@ wh = (struct ieee80211_frame *)skb->data; wh->i_fc[1] &= ~IEEE80211_FC1_PROT; } - ic->ic_recv_mgmt(ni, skb, subtype, rssi, rtsf); + ic->ic_recv_mgmt(vap, ni_or_null, skb, subtype, rssi, rtsf); goto out; case IEEE80211_FC0_TYPE_CTL: @@ -2959,12 +2959,13 @@ * Context: SoftIRQ */ void -ieee80211_recv_mgmt(struct ieee80211_node *ni, struct sk_buff *skb, +ieee80211_recv_mgmt(struct ieee80211vap *vap, + struct ieee80211_node *ni_or_null, struct sk_buff *skb, int subtype, int rssi, u_int64_t rtsf) { #define ISPROBE(_st) ((_st) == IEEE80211_FC0_SUBTYPE_PROBE_RESP) #define ISREASSOC(_st) ((_st) == IEEE80211_FC0_SUBTYPE_REASSOC_RESP) - struct ieee80211vap *vap = ni->ni_vap; + struct ieee80211_node * ni = ni_or_null; struct ieee80211com *ic = vap->iv_ic; struct ieee80211_frame *wh; u_int8_t *frm, *efrm; @@ -2973,6 +2974,9 @@ int reassoc, resp, allocbs = 0; u_int8_t qosinfo; + if (ni_or_null == NULL) + ni = vap->iv_bss; + wh = (struct ieee80211_frame *) skb->data; frm = (u_int8_t *)&wh[1]; efrm = skb->data + skb->len; Modified: madwifi/branches/madwifi-dfs/net80211/ieee80211_proto.h =================================================================== --- madwifi/branches/madwifi-dfs/net80211/ieee80211_proto.h 2007-11-24 16:47:40 UTC (rev 2949) +++ madwifi/branches/madwifi-dfs/net80211/ieee80211_proto.h 2007-11-24 17:41:56 UTC (rev 2950) @@ -69,8 +69,8 @@ const u_int8_t *, int); void ieee80211_saveie(u_int8_t **, const u_int8_t *); void ieee80211_saveath(struct ieee80211_node *, u_int8_t *); -void ieee80211_recv_mgmt(struct ieee80211_node *, struct sk_buff *, - int, int, u_int64_t); +void ieee80211_recv_mgmt(struct ieee80211vap *, struct ieee80211_node *, + struct sk_buff *, int, int, u_int64_t); void ieee80211_sta_pwrsave(struct ieee80211vap *, int); int ieee80211_hardstart(struct sk_buff *, struct net_device *); void ieee80211_parent_queue_xmit(struct sk_buff *); Modified: madwifi/branches/madwifi-dfs/net80211/ieee80211_var.h =================================================================== --- madwifi/branches/madwifi-dfs/net80211/ieee80211_var.h 2007-11-24 16:47:40 UTC (rev 2949) +++ madwifi/branches/madwifi-dfs/net80211/ieee80211_var.h 2007-11-24 17:41:56 UTC (rev 2950) @@ -398,8 +398,8 @@ /* Send/recv 802.11 management frame */ int (*ic_send_mgmt)(struct ieee80211_node *, int, int); - void (*ic_recv_mgmt)(struct ieee80211_node *, struct sk_buff *, int, - int, u_int64_t); + void (*ic_recv_mgmt)(struct ieee80211vap *, struct ieee80211_node *, + struct sk_buff *, int, int, u_int64_t); /* Send management frame to driver (like hardstart) */ int (*ic_mgtstart)(struct ieee80211com *, struct sk_buff *); |