[Madwifi-cvs] revision 3091 committed
Status: Beta
Brought to you by:
otaku
From: Bruno R. <svn...@ma...> - 2007-12-28 04:35:30
|
Project : madwifi Revision : 3091 Author : br1 (Bruno Randolf) Date : 2007-12-28 05:35:23 +0100 (Fri, 28 Dec 2007) Log Message : Added lots of debug to understand & test IBSS merges from the madwifi-dfs branch (benoit) r3086 Added MAC_FMT & MAC_ADDR macros that can be used as a drop-in replacement for ether_sprintf(). Fixed some use of ether_sprintf() that uses the same static buffer twice. - Without the functional changes. Affected Files: * madwifi/trunk/ath/if_ath.c updated * madwifi/trunk/net80211/ieee80211_beacon.c updated * madwifi/trunk/net80211/ieee80211_input.c updated * madwifi/trunk/net80211/ieee80211_node.c updated * madwifi/trunk/net80211/ieee80211_var.h updated Modified: madwifi/trunk/ath/if_ath.c =================================================================== --- madwifi/trunk/ath/if_ath.c 2007-12-28 03:14:13 UTC (rev 3090) +++ madwifi/trunk/ath/if_ath.c 2007-12-28 04:35:23 UTC (rev 3091) @@ -5941,6 +5941,11 @@ u_int64_t hw_tsf, beacon_tsf; u_int32_t hw_tu; + DPRINTF(sc, ATH_DEBUG_BEACON, + "%s: vap:%p[" MAC_FMT "] ni:%p[" MAC_FMT "]\n", + __func__, vap, MAC_ADDR(vap->iv_bss->ni_bssid), + ni, MAC_ADDR(ni->ni_macaddr)); + /* * Call up first so subsequent work can use information * potentially stored in the node (e.g. for ibss merge). @@ -6232,6 +6237,27 @@ sc->sc_hwmap[rs->rs_rate].ieeerate, rs->rs_rssi); + { + struct ieee80211_frame * wh = + (struct ieee80211_frame *) skb->data; + + /* only print beacons */ + + if ((skb->len >= sizeof(struct ieee80211_frame)) && + ((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) + == IEEE80211_FC0_TYPE_MGT) && + ((wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) + == IEEE80211_FC0_SUBTYPE_BEACON)) { + + DPRINTF(sc, ATH_DEBUG_BEACON, + "%s: RA:" MAC_FMT " TA:" MAC_FMT + " BSSID:" MAC_FMT "\n", + __func__, MAC_ADDR(wh->i_addr1), + MAC_ADDR(wh->i_addr2), + MAC_ADDR(wh->i_addr3)); + } + } + /* * Locate the node for sender, track state, and then * pass the (referenced) node up to the 802.11 layer @@ -8597,6 +8623,10 @@ if (stamode && nstate == IEEE80211_S_RUN) { sc->sc_curaid = ni->ni_associd; IEEE80211_ADDR_COPY(sc->sc_curbssid, ni->ni_bssid); + DPRINTF(sc, ATH_DEBUG_BEACON, + "%s: sc_curbssid " MAC_FMT " from " MAC_FMT "\n", + __func__, MAC_ADDR(sc->sc_curbssid), + MAC_ADDR(ni->ni_macaddr)); } else sc->sc_curaid = 0; @@ -8605,8 +8635,12 @@ sc->sc_curaid); ath_hal_setrxfilter(ah, rfilt); - if (stamode) + if (stamode) { + DPRINTF(sc, ATH_DEBUG_BEACON, + "%s: setassocid " MAC_FMT "\n", + __func__, MAC_ADDR(sc->sc_curbssid)); ath_hal_setassocid(ah, sc->sc_curbssid, sc->sc_curaid); + } if ((vap->iv_opmode != IEEE80211_M_STA) && (vap->iv_flags & IEEE80211_F_PRIVACY)) { Modified: madwifi/trunk/net80211/ieee80211_beacon.c =================================================================== --- madwifi/trunk/net80211/ieee80211_beacon.c 2007-12-28 03:14:13 UTC (rev 3090) +++ madwifi/trunk/net80211/ieee80211_beacon.c 2007-12-28 04:35:23 UTC (rev 3091) @@ -270,6 +270,9 @@ IEEE80211_ADDR_COPY(wh->i_addr1, ic->ic_dev->broadcast); IEEE80211_ADDR_COPY(wh->i_addr2, vap->iv_myaddr); IEEE80211_ADDR_COPY(wh->i_addr3, vap->iv_bss->ni_bssid); + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, + "%s: beacon bssid:" MAC_FMT "\n", + __func__, MAC_ADDR(wh->i_addr3)); *(u_int16_t *)wh->i_seq = 0; return skb; Modified: madwifi/trunk/net80211/ieee80211_input.c =================================================================== --- madwifi/trunk/net80211/ieee80211_input.c 2007-12-28 03:14:13 UTC (rev 3090) +++ madwifi/trunk/net80211/ieee80211_input.c 2007-12-28 04:35:23 UTC (rev 3091) @@ -2635,6 +2635,11 @@ frm = (u_int8_t *)&wh[1]; efrm = skb->data + skb->len; + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, + "%s: vap:%p[" MAC_FMT "] ni:%p[" MAC_FMT "]\n", + __func__, vap, MAC_ADDR(vap->iv_bss->ni_bssid), + ni, MAC_ADDR(ni->ni_macaddr)); + /* forward management frame to application */ if (vap->iv_opmode != IEEE80211_M_MONITOR) forward_mgmt_to_app(vap, subtype, skb, wh); @@ -3814,9 +3819,9 @@ vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); - printk("%s/%s[%s]: %s", - VAP_IC_DEV_NAME(vap), VAP_DEV_NAME(vap), - ether_sprintf(vap->iv_myaddr), + printk("%s/%s[" MAC_FMT "]: %s", + vap->iv_ic->ic_dev->name, vap->iv_dev->name, + MAC_ADDR(vap->iv_myaddr), buf); /* NB: no \n */ } EXPORT_SYMBOL(ieee80211_note); @@ -3831,10 +3836,10 @@ va_start(ap, fmt); vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); - printk("%s/%s[%s]: %s %s\n", - VAP_IC_DEV_NAME(vap), VAP_DEV_NAME(vap), - ether_sprintf(vap->iv_myaddr), - ether_sprintf(ieee80211_getbssid(vap, wh)), buf); + printk("%s/%s[" MAC_FMT "]: " MAC_FMT " %s\n", + vap->iv_ic->ic_dev->name, vap->iv_dev->name, + MAC_ADDR(vap->iv_myaddr), + MAC_ADDR(ieee80211_getbssid(vap, wh)), buf); } EXPORT_SYMBOL(ieee80211_note_frame); @@ -3848,10 +3853,10 @@ va_start(ap, fmt); vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); - printk("%s/%s[%s]: %s %s\n", - VAP_IC_DEV_NAME(vap), VAP_DEV_NAME(vap), - ether_sprintf(vap->iv_myaddr), - ether_sprintf(mac), buf); + printk("%s/%s[" MAC_FMT "]: " MAC_FMT " %s\n", + vap->iv_ic->ic_dev->name, vap->iv_dev->name, + MAC_ADDR(vap->iv_myaddr), + MAC_ADDR(mac), buf); } EXPORT_SYMBOL(ieee80211_note_mac); @@ -3865,13 +3870,13 @@ va_start(ap, fmt); vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); - printk("%s/%s[%s]: %s discard %s%sframe, %s\n", - VAP_IC_DEV_NAME(vap), VAP_DEV_NAME(vap), - ether_sprintf(vap->iv_myaddr), - ether_sprintf(ieee80211_getbssid(vap, wh)), - (type != NULL) ? type : "", - (type != NULL) ? " " : "", - buf); + printk("%s/%s[" MAC_FMT "]: " MAC_FMT " discard %s%sframe, %s\n", + vap->iv_ic->ic_dev->name, vap->iv_dev->name, + MAC_ADDR(vap->iv_myaddr), + MAC_ADDR(wh->i_addr2), + (type != NULL) ? type : "", + (type != NULL) ? " " : "", + buf); } static void @@ -3884,12 +3889,13 @@ va_start(ap, fmt); vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); - printk("%s/%s[%s]: %s discard %s%sinformation element, %s\n", - VAP_IC_DEV_NAME(vap), VAP_DEV_NAME(vap), - ether_sprintf(vap->iv_myaddr), - ether_sprintf(ieee80211_getbssid(vap, wh)), - (type != NULL) ? type : "", - (type != NULL) ? " " : "", + printk("%s/%s[" MAC_FMT "]: " + MAC_FMT " discard %s%sinformation element, %s\n", + vap->iv_ic->ic_dev->name, vap->iv_dev->name, + MAC_ADDR(vap->iv_myaddr), + MAC_ADDR(ieee80211_getbssid(vap, wh)), + (type != NULL) ? type : "", + (type != NULL) ? " " : "", buf); } @@ -3903,12 +3909,13 @@ va_start(ap, fmt); vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); - printk("%s/%s[%s]: %s discard %s%sframe, %s\n", - VAP_IC_DEV_NAME(vap), VAP_DEV_NAME(vap), - ether_sprintf(vap->iv_myaddr), - ether_sprintf(mac), - (type != NULL) ? type : "", - (type != NULL) ? " " : "", + printk("%s/%s[" MAC_FMT "]: " MAC_FMT " discard %s%sframe, %s\n", + vap->iv_ic->ic_dev->name, + vap->iv_dev->name, + MAC_ADDR(vap->iv_myaddr), + MAC_ADDR(mac), + (type != NULL) ? type : "", + (type != NULL) ? " " : "", buf); } #endif /* IEEE80211_DEBUG */ Modified: madwifi/trunk/net80211/ieee80211_node.c =================================================================== --- madwifi/trunk/net80211/ieee80211_node.c 2007-12-28 03:14:13 UTC (rev 3090) +++ madwifi/trunk/net80211/ieee80211_node.c 2007-12-28 04:35:23 UTC (rev 3091) @@ -306,12 +306,15 @@ "%s: creating ibss on channel %u\n", __func__, ieee80211_chan2ieee(ic, chan)); - /* Check to see if we already have a node for this mac + /* Check to see if we already have a node for this mac * NB: we gain a node reference here */ ni = ieee80211_find_node(&ic->ic_sta, vap->iv_myaddr); if (ni == NULL) { ni = ieee80211_alloc_node_table(vap, vap->iv_myaddr); + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, + "%s: ni:%p allocated for " MAC_FMT "\n", + __func__, ni, MAC_ADDR(vap->iv_myaddr)); if (ni == NULL) { /* XXX recovery? */ return; @@ -401,6 +404,9 @@ ieee80211_reset_erp(ic, ic->ic_curmode); ni = ieee80211_alloc_node_table(vap, vap->iv_myaddr); + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, + "%s: ni:%p allocated for " MAC_FMT "\n", + __func__, ni, MAC_ADDR(vap->iv_myaddr)); KASSERT(ni != NULL, ("unable to setup inital BSS node")); /* New reference for caller */ @@ -551,12 +557,17 @@ #ifdef IEEE80211_DEBUG struct ieee80211com *ic = ni->ni_ic; #endif + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, + "%s: ni:%p[" MAC_FMT "] iv_bss:%p[" MAC_FMT "]\n", + __func__, ni, MAC_ADDR(ni->ni_macaddr), + vap->iv_bss, MAC_ADDR(vap->iv_bss->ni_macaddr)); if (ni == vap->iv_bss || IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bss->ni_bssid)) { /* unchanged, nothing to do */ return 0; } + if (!check_bss(vap, ni)) { /* capabilities mismatch */ IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, @@ -676,6 +687,9 @@ ni = ieee80211_find_node(&ic->ic_sta, se->se_macaddr); if (ni == NULL) { ni = ieee80211_alloc_node_table(vap, se->se_macaddr); + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, + "%s: ni:%p allocated for " MAC_FMT "\n", + __func__, ni, MAC_ADDR(se->se_macaddr)); if (ni == NULL) { IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, "%s: Unable to allocate node for BSS: %s\n", __func__, @@ -1263,6 +1277,9 @@ #else ni = ieee80211_alloc_node_table(vap, macaddr); #endif + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, + "%s: ni:%p allocated for " MAC_FMT "\n", + __func__, ni, MAC_ADDR(macaddr)); } if (ni != NULL) { Modified: madwifi/trunk/net80211/ieee80211_var.h =================================================================== --- madwifi/trunk/net80211/ieee80211_var.h 2007-12-28 03:14:13 UTC (rev 3090) +++ madwifi/trunk/net80211/ieee80211_var.h 2007-12-28 04:35:23 UTC (rev 3091) @@ -665,4 +665,16 @@ size = roundup(size, sizeof(u_int32_t)); return size; } + +/* Macros to print MAC address used in 802.11 headers */ + +#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" +#define MAC_ADDR(addr) \ + ((unsigned char *)(addr)) [0], \ + ((unsigned char *)(addr)) [1], \ + ((unsigned char *)(addr)) [2], \ + ((unsigned char *)(addr)) [3], \ + ((unsigned char *)(addr)) [4], \ + ((unsigned char *)(addr)) [5] + #endif /* _NET80211_IEEE80211_VAR_H_ */ |