rum(4): sync rum_enable_tsf(_sync) with run(4).
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3611
This commit is contained in:
parent
a05022b22c
commit
d847071cf6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=288504
@ -1730,12 +1730,35 @@ rum_enable_tsf_sync(struct rum_softc *sc)
|
||||
|
||||
/* set beacon interval (in 1/16ms unit) */
|
||||
tmp |= vap->iv_bss->ni_intval * 16;
|
||||
tmp |= RT2573_TSF_TIMER_EN | RT2573_TBTT_TIMER_EN;
|
||||
|
||||
tmp |= RT2573_TSF_TICKING | RT2573_ENABLE_TBTT;
|
||||
if (vap->iv_opmode == IEEE80211_M_STA)
|
||||
tmp |= RT2573_TSF_MODE(1);
|
||||
else
|
||||
tmp |= RT2573_TSF_MODE(2) | RT2573_GENERATE_BEACON;
|
||||
switch (vap->iv_opmode) {
|
||||
case IEEE80211_M_STA:
|
||||
/*
|
||||
* Local TSF is always updated with remote TSF on beacon
|
||||
* reception.
|
||||
*/
|
||||
tmp |= RT2573_TSF_SYNC_MODE(RT2573_TSF_SYNC_MODE_STA);
|
||||
break;
|
||||
case IEEE80211_M_IBSS:
|
||||
/*
|
||||
* Local TSF is updated with remote TSF on beacon reception
|
||||
* only if the remote TSF is greater than local TSF.
|
||||
*/
|
||||
tmp |= RT2573_TSF_SYNC_MODE(RT2573_TSF_SYNC_MODE_IBSS);
|
||||
tmp |= RT2573_BCN_TX_EN;
|
||||
break;
|
||||
case IEEE80211_M_HOSTAP:
|
||||
/* SYNC with nobody */
|
||||
tmp |= RT2573_TSF_SYNC_MODE(RT2573_TSF_SYNC_MODE_HOSTAP);
|
||||
tmp |= RT2573_BCN_TX_EN;
|
||||
break;
|
||||
default:
|
||||
device_printf(sc->sc_dev,
|
||||
"Enabling TSF failed. undefined opmode %d\n",
|
||||
vap->iv_opmode);
|
||||
return;
|
||||
}
|
||||
|
||||
rum_write(sc, RT2573_TXRX_CSR9, tmp);
|
||||
}
|
||||
@ -1743,8 +1766,8 @@ rum_enable_tsf_sync(struct rum_softc *sc)
|
||||
static void
|
||||
rum_enable_tsf(struct rum_softc *sc)
|
||||
{
|
||||
rum_modbits(sc, RT2573_TXRX_CSR9,
|
||||
RT2573_TSF_TICKING | RT2573_TSF_MODE(2), 0x00ffffff);
|
||||
rum_modbits(sc, RT2573_TXRX_CSR9, RT2573_TSF_TIMER_EN |
|
||||
RT2573_TSF_SYNC_MODE(RT2573_TSF_SYNC_MODE_DIS), 0x00ffffff);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -124,11 +124,14 @@
|
||||
#define RT2573_MRR_CCK_FALLBACK (1 << 22)
|
||||
|
||||
/* possible flags for register TXRX_CSR9 */
|
||||
#define RT2573_TSF_TICKING (1 << 16)
|
||||
#define RT2573_TSF_MODE(x) (((x) & 0x3) << 17)
|
||||
/* TBTT stands for Target Beacon Transmission Time */
|
||||
#define RT2573_ENABLE_TBTT (1 << 19)
|
||||
#define RT2573_GENERATE_BEACON (1 << 20)
|
||||
#define RT2573_TSF_TIMER_EN (1 << 16)
|
||||
#define RT2573_TSF_SYNC_MODE(x) (((x) & 0x3) << 17)
|
||||
#define RT2573_TSF_SYNC_MODE_DIS 0
|
||||
#define RT2573_TSF_SYNC_MODE_STA 1
|
||||
#define RT2573_TSF_SYNC_MODE_IBSS 2
|
||||
#define RT2573_TSF_SYNC_MODE_HOSTAP 3
|
||||
#define RT2573_TBTT_TIMER_EN (1 << 19)
|
||||
#define RT2573_BCN_TX_EN (1 << 20)
|
||||
|
||||
/* possible flags for register PHY_CSR0 */
|
||||
#define RT2573_PA_PE_2GHZ (1 << 16)
|
||||
|
Loading…
Reference in New Issue
Block a user