Thread: [Madwifi-cvs] madwifi/ath if_ath.c,1.36.2.83,1.36.2.84 if_athvar.h,1.17.2.13,1.17.2.14
Status: Beta
Brought to you by:
otaku
From: Sebastian W. <to...@us...> - 2005-07-27 11:30:32
|
Update of /cvsroot/madwifi/madwifi/ath In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8709/ath Modified Files: Tag: BSD if_ath.c if_athvar.h Log Message: - fix setup of sc_diversity; the hal does not give us reliable status after attach, only after a reset - when setting diversity via the sysctl don't update sc_diversity until we know the hal requested worked - while here eliminate sc_hasdiversity and sc_hastpc; just query the hal each time since these are the only places we need to know - move ath_sysctlattach down so variables it depends on are setup - use any fixed tx antenna for beacons transmitted in adhoc mode - simplify ieee80211_ibss_merge and ic_newassoc Obtained from FreeBSD Index: if_ath.c =================================================================== RCS file: /cvsroot/madwifi/madwifi/ath/if_ath.c,v retrieving revision 1.36.2.83 retrieving revision 1.36.2.84 diff -C2 -d -r1.36.2.83 -r1.36.2.84 *** if_ath.c 8 Jul 2005 14:50:01 -0000 1.36.2.83 --- if_ath.c 27 Jul 2005 11:30:17 -0000 1.36.2.84 *************** *** 172,177 **** #endif static void ath_setup_stationkey(struct ieee80211_node *); ! static void ath_newassoc(struct ieee80211com *, ! struct ieee80211_node *, int); static int ath_getchannels(struct net_device *, u_int cc, HAL_BOOL outdoor, HAL_BOOL xchanmode); --- 172,176 ---- #endif static void ath_setup_stationkey(struct ieee80211_node *); ! static void ath_newassoc(struct ieee80211_node *, int); static int ath_getchannels(struct net_device *, u_int cc, HAL_BOOL outdoor, HAL_BOOL xchanmode); *************** *** 648,653 **** * support a global cap. */ ! sc->sc_hastpc = ath_hal_hastpc(ah); ! if (sc->sc_hastpc || ath_hal_hastxpowlimit(ah)) ic->ic_caps |= IEEE80211_C_TXPMGT; --- 647,651 ---- * support a global cap. */ ! if (ath_hal_hastpc(ah) || ath_hal_hastxpowlimit(ah)) ic->ic_caps |= IEEE80211_C_TXPMGT; *************** *** 673,680 **** * Query the hal about antenna support. */ - if (ath_hal_hasdiversity(ah)) { - sc->sc_hasdiversity = 1; - sc->sc_diversity = ath_hal_getdiversity(ah); - } sc->sc_defant = ath_hal_getdefantenna(ah); --- 671,674 ---- *************** *** 1081,1084 **** --- 1075,1083 ---- */ ath_update_txpow(sc); + /* + * Likewise this is set during reset so update + * state cached in the driver. + */ + sc->sc_diversity = ath_hal_getdiversity(ah); /* *************** *** 1251,1254 **** --- 1250,1254 ---- __func__, hal_status_desc[status], status); ath_update_txpow(sc); /* update tx power state */ + sc->sc_diversity = ath_hal_getdiversity(ah); if (ath_startrecv(sc) != 0) /* restart recv */ if_printf(dev, "%s: unable to start recv logic\n", __func__); *************** *** 2605,2614 **** "%s: stuck beacon time (%u missed)\n", __func__, sc->sc_bmisscount); ! ATH_SCHEDULE_TQUEUE(&sc->sc_bstuckq, &needmark); } return; } if (sc->sc_bmisscount != 0) { ! DPRINTF(sc, ATH_DEBUG_BEACON, "%s: resume beacon xmit after %u misses\n", __func__, sc->sc_bmisscount); --- 2605,2614 ---- "%s: stuck beacon time (%u missed)\n", __func__, sc->sc_bmisscount); ! ATH_SCHEDULE_TQUEUE(&sc->sc_bstuckq, &needmark); } return; } if (sc->sc_bmisscount != 0) { ! DPRINTF(sc, ATH_DEBUG_BEACON_PROC, "%s: resume beacon xmit after %u misses\n", __func__, sc->sc_bmisscount); *************** *** 3570,3574 **** "tstamp %llx\n", rstamp, tsf, ni->ni_tstamp.tsf); ! ieee80211_ibss_merge(ic, ni); } } --- 3570,3574 ---- "tstamp %llx\n", rstamp, tsf, ni->ni_tstamp.tsf); ! ieee80211_ibss_merge(ni); } } *************** *** 5052,5055 **** --- 5052,5056 ---- sc->sc_curchan = hchan; ath_update_txpow(sc); /* update tx power state */ + sc->sc_diversity = ath_hal_getdiversity(ah); /* *************** *** 5309,5314 **** */ static void ! ath_newassoc(struct ieee80211com *ic, struct ieee80211_node *ni, int isnew) { struct ath_softc *sc = ic->ic_dev->priv; --- 5310,5316 ---- */ static void ! ath_newassoc(struct ieee80211_node *ni, int isnew) { + struct ieee80211com *ic = ni->ni_ic; struct ath_softc *sc = ic->ic_dev->priv; *************** *** 6209,6215 **** break; case ATH_DIVERSITY: ! /* XXX validate? */ ! if (!sc->sc_hasdiversity) ! return -EINVAL; sc->sc_diversity = val; ath_hal_setdiversity(ah, val); --- 6211,6215 ---- break; case ATH_DIVERSITY: ! /* XXX validate? */ sc->sc_diversity = val; ath_hal_setdiversity(ah, val); *************** *** 6225,6230 **** case ATH_TPC: /* XXX validate? */ - if (!sc->sc_hastpc) - return -EINVAL; ath_hal_settpc(ah, val); break; --- 6225,6228 ---- Index: if_athvar.h =================================================================== RCS file: /cvsroot/madwifi/madwifi/ath/if_athvar.h,v retrieving revision 1.17.2.13 retrieving revision 1.17.2.14 diff -C2 -d -r1.17.2.13 -r1.17.2.14 *** if_athvar.h 8 Jul 2005 16:02:18 -0000 1.17.2.13 --- if_athvar.h 27 Jul 2005 11:30:19 -0000 1.17.2.14 *************** *** 263,270 **** sc_splitmic: 1, /* split TKIP MIC keys */ sc_needmib : 1, /* enable MIB stats intr */ - sc_hasdiversity : 1,/* rx diversity available */ sc_diversity : 1,/* enable rx diversity */ sc_hasveol : 1, /* tx VEOL support */ - sc_hastpc : 1, /* per-packet TPC support */ sc_ledstate: 1, /* LED on/off state */ sc_blinking: 1, /* LED blink operation active */ --- 263,268 ---- |