diff options
author | adrian <adrian@FreeBSD.org> | 2016-01-01 00:21:07 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2016-01-01 00:21:07 +0000 |
commit | 9b181806d20526b3131763643956a41cb482b8e9 (patch) | |
tree | 46ec95cc9a7f66bbf2ba6cc409280a50e72bb355 /sys/net80211 | |
parent | ed55793422d36f8a8036159c0b7c8011bc2fe2fb (diff) | |
download | FreeBSD-src-9b181806d20526b3131763643956a41cb482b8e9.zip FreeBSD-src-9b181806d20526b3131763643956a41cb482b8e9.tar.gz |
[net80211] document the (not completely complete) set of places where
we're assuming hz=1000 and not gracefully handling when it isn't.
The math involved will return 0 for hz < 1000, which it is on some
platforms and on DragonflyBSD.
This doesn't fix it, it:
* converts one manual use over to use the macro, and
* comments where it needs some thought/fixing.
I'll think about this a bit more before fixing it.
Submitted by: imre@vdsz.com
Diffstat (limited to 'sys/net80211')
-rw-r--r-- | sys/net80211/ieee80211_freebsd.h | 2 | ||||
-rw-r--r-- | sys/net80211/ieee80211_scan_sw.c | 2 | ||||
-rw-r--r-- | sys/net80211/ieee80211_var.h | 1 |
3 files changed, 4 insertions, 1 deletions
diff --git a/sys/net80211/ieee80211_freebsd.h b/sys/net80211/ieee80211_freebsd.h index f660c17..6d47ccd 100644 --- a/sys/net80211/ieee80211_freebsd.h +++ b/sys/net80211/ieee80211_freebsd.h @@ -246,9 +246,11 @@ void ieee80211_vap_destroy(struct ieee80211vap *); (((_ifp)->if_flags & IFF_UP) && \ ((_ifp)->if_drv_flags & IFF_DRV_RUNNING)) +/* XXX TODO: cap these at 1, as hz may not be 1000 */ #define msecs_to_ticks(ms) (((ms)*hz)/1000) #define ticks_to_msecs(t) (1000*(t) / hz) #define ticks_to_secs(t) ((t) / hz) + #define time_after(a,b) ((long)(b) - (long)(a) < 0) #define time_before(a,b) time_after(b,a) #define time_after_eq(a,b) ((long)(a) - (long)(b) >= 0) diff --git a/sys/net80211/ieee80211_scan_sw.c b/sys/net80211/ieee80211_scan_sw.c index eb58386..163633c 100644 --- a/sys/net80211/ieee80211_scan_sw.c +++ b/sys/net80211/ieee80211_scan_sw.c @@ -641,7 +641,7 @@ scan_task(void *arg, int pending) * XXX Should use M_TXCB mechanism to eliminate this. */ cv_timedwait(&SCAN_PRIVATE(ss)->ss_scan_cv, - IEEE80211_LOCK_OBJ(ic), hz / 1000); + IEEE80211_LOCK_OBJ(ic), msecs_to_ticks(1)); if (SCAN_PRIVATE(ss)->ss_iflags & ISCAN_ABORT) goto done; } diff --git a/sys/net80211/ieee80211_var.h b/sys/net80211/ieee80211_var.h index cd27ead..1dd57ee 100644 --- a/sys/net80211/ieee80211_var.h +++ b/sys/net80211/ieee80211_var.h @@ -84,6 +84,7 @@ #define IEEE80211_MS_TO_TU(x) (((x) * 1000) / 1024) #define IEEE80211_TU_TO_MS(x) (((x) * 1024) / 1000) +/* XXX TODO: cap this at 1, in case hz is not 1000 */ #define IEEE80211_TU_TO_TICKS(x)(((x) * 1024 * hz) / (1000 * 1000)) /* |