diff options
author | Rafael Vanoni <rafael.vanoni@sun.com> | 2009-11-13 01:32:32 -0800 |
---|---|---|
committer | Rafael Vanoni <rafael.vanoni@sun.com> | 2009-11-13 01:32:32 -0800 |
commit | d3d50737e566cade9a08d73d2af95105ac7cd960 (patch) | |
tree | 399b76a3f6bf107e2ff506d8f9c3333654b29fc7 /usr/src/uts/common/io/mac/mac_sched.c | |
parent | 1eff5f7761619411b3c31280fcd96cefc32968b7 (diff) | |
download | illumos-joyent-d3d50737e566cade9a08d73d2af95105ac7cd960.tar.gz |
PSARC/2009/396 Tickless Kernel Architecture / lbolt decoupling
6860030 tickless clock requires a clock() decoupled lbolt / lbolt64
Portions contributed by Chad Mynhier <cmynhier@gmail.com>
Diffstat (limited to 'usr/src/uts/common/io/mac/mac_sched.c')
-rw-r--r-- | usr/src/uts/common/io/mac/mac_sched.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/usr/src/uts/common/io/mac/mac_sched.c b/usr/src/uts/common/io/mac/mac_sched.c index ff3cba81ed..b8ebe45a82 100644 --- a/usr/src/uts/common/io/mac/mac_sched.c +++ b/usr/src/uts/common/io/mac/mac_sched.c @@ -274,8 +274,9 @@ boolean_t mac_latency_optimize = B_TRUE; ASSERT(MUTEX_HELD(&(mac_srs)->srs_lock)); \ ASSERT(((mac_srs)->srs_type & SRST_TX) || \ MUTEX_HELD(&(mac_srs)->srs_bw->mac_bw_lock)); \ - if ((mac_srs)->srs_bw->mac_bw_curr_time != lbolt) { \ - (mac_srs)->srs_bw->mac_bw_curr_time = lbolt; \ + clock_t now = ddi_get_lbolt(); \ + if ((mac_srs)->srs_bw->mac_bw_curr_time != now) { \ + (mac_srs)->srs_bw->mac_bw_curr_time = now; \ (mac_srs)->srs_bw->mac_bw_used = 0; \ if ((mac_srs)->srs_bw->mac_bw_state & SRS_BW_ENFORCED) \ (mac_srs)->srs_bw->mac_bw_state &= ~SRS_BW_ENFORCED; \ @@ -1813,14 +1814,16 @@ mac_rx_srs_drain_bw(mac_soft_ring_set_t *mac_srs, uint_t proc_type) int cnt = 0; mac_client_impl_t *mcip = mac_srs->srs_mcip; mac_srs_rx_t *srs_rx = &mac_srs->srs_rx; + clock_t now; ASSERT(MUTEX_HELD(&mac_srs->srs_lock)); ASSERT(mac_srs->srs_type & SRST_BW_CONTROL); again: /* Check if we are doing B/W control */ mutex_enter(&mac_srs->srs_bw->mac_bw_lock); - if (mac_srs->srs_bw->mac_bw_curr_time != lbolt) { - mac_srs->srs_bw->mac_bw_curr_time = lbolt; + now = ddi_get_lbolt(); + if (mac_srs->srs_bw->mac_bw_curr_time != now) { + mac_srs->srs_bw->mac_bw_curr_time = now; mac_srs->srs_bw->mac_bw_used = 0; if (mac_srs->srs_bw->mac_bw_state & SRS_BW_ENFORCED) mac_srs->srs_bw->mac_bw_state &= ~SRS_BW_ENFORCED; @@ -2860,6 +2863,7 @@ mac_tx_bw_mode(mac_soft_ring_set_t *mac_srs, mblk_t *mp_chain, mblk_t *tail; mac_tx_cookie_t cookie = NULL; mac_srs_tx_t *srs_tx = &mac_srs->srs_tx; + clock_t now; ASSERT(TX_BANDWIDTH_MODE(mac_srs)); ASSERT(mac_srs->srs_type & SRST_BW_CONTROL); @@ -2886,8 +2890,9 @@ mac_tx_bw_mode(mac_soft_ring_set_t *mac_srs, mblk_t *mp_chain, return (cookie); } MAC_COUNT_CHAIN(mac_srs, mp_chain, tail, cnt, sz); - if (mac_srs->srs_bw->mac_bw_curr_time != lbolt) { - mac_srs->srs_bw->mac_bw_curr_time = lbolt; + now = ddi_get_lbolt(); + if (mac_srs->srs_bw->mac_bw_curr_time != now) { + mac_srs->srs_bw->mac_bw_curr_time = now; mac_srs->srs_bw->mac_bw_used = 0; } else if (mac_srs->srs_bw->mac_bw_used > mac_srs->srs_bw->mac_bw_limit) { @@ -2962,6 +2967,7 @@ mac_tx_srs_drain(mac_soft_ring_set_t *mac_srs, uint_t proc_type) boolean_t is_subflow; mac_tx_stats_t stats; mac_srs_tx_t *srs_tx = &mac_srs->srs_tx; + clock_t now; saved_pkt_count = 0; ASSERT(mutex_owned(&mac_srs->srs_lock)); @@ -3028,8 +3034,9 @@ mac_tx_srs_drain(mac_soft_ring_set_t *mac_srs, uint_t proc_type) mac_srs->srs_bw->mac_bw_limit) continue; - if (mac_srs->srs_bw->mac_bw_curr_time != lbolt) { - mac_srs->srs_bw->mac_bw_curr_time = lbolt; + now = ddi_get_lbolt(); + if (mac_srs->srs_bw->mac_bw_curr_time != now) { + mac_srs->srs_bw->mac_bw_curr_time = now; mac_srs->srs_bw->mac_bw_used = sz; continue; } @@ -3114,8 +3121,9 @@ mac_tx_srs_drain(mac_soft_ring_set_t *mac_srs, uint_t proc_type) mac_srs->srs_bw->mac_bw_limit) continue; - if (mac_srs->srs_bw->mac_bw_curr_time != lbolt) { - mac_srs->srs_bw->mac_bw_curr_time = lbolt; + now = ddi_get_lbolt(); + if (mac_srs->srs_bw->mac_bw_curr_time != now) { + mac_srs->srs_bw->mac_bw_curr_time = now; mac_srs->srs_bw->mac_bw_used = 0; continue; } |