Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Oct 2021 18:01:00 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: ef3f98ae4778 - main - cxgbe: Only run ktls_tick when NIC TLS is enabled.
Message-ID:  <202110141801.19EI10bw091297@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=ef3f98ae4778a8d4463166c5ff3c7831099c6048

commit ef3f98ae4778a8d4463166c5ff3c7831099c6048
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2021-10-14 17:59:16 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2021-10-14 17:59:16 +0000

    cxgbe: Only run ktls_tick when NIC TLS is enabled.
    
    Previously the body of ktls_tick was a nop when NIC TLS was disabled,
    but the callout was still scheduled consuming power on otherwise-idle
    systems with Chelsio T6 adapters.  Now the callout only runs while NIC
    TLS is enabled on at least one interface of an adapter.
    
    Reported by:    mav
    Reviewed by:    np, mav
    Sponsored by:   Chelsio Communications
    Differential Revision:  https://reviews.freebsd.org/D32491
---
 sys/dev/cxgbe/t4_main.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c
index f728ddf5b212..66f48f2bf922 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -5393,11 +5393,9 @@ ktls_tick(void *arg)
 	uint32_t tstamp;
 
 	sc = arg;
-	if (sc->flags & KERN_TLS_ON) {
-		tstamp = tcp_ts_getticks();
-		t4_write_reg(sc, A_TP_SYNC_TIME_HI, tstamp >> 1);
-		t4_write_reg(sc, A_TP_SYNC_TIME_LO, tstamp << 31);
-	}
+	tstamp = tcp_ts_getticks();
+	t4_write_reg(sc, A_TP_SYNC_TIME_HI, tstamp >> 1);
+	t4_write_reg(sc, A_TP_SYNC_TIME_LO, tstamp << 31);
 	callout_schedule_sbt(&sc->ktls_tick, SBT_1MS, 0, C_HARDCLOCK);
 }
 
@@ -5417,10 +5415,14 @@ t4_config_kern_tls(struct adapter *sc, bool enable)
 		return (rc);
 	}
 
-	if (enable)
+	if (enable) {
 		sc->flags |= KERN_TLS_ON;
-	else
+		callout_reset_sbt(&sc->ktls_tick, SBT_1MS, 0, ktls_tick, sc,
+		    C_HARDCLOCK);
+	} else {
 		sc->flags &= ~KERN_TLS_ON;
+		callout_stop(&sc->ktls_tick);
+	}
 
 	return (rc);
 }
@@ -6468,11 +6470,6 @@ adapter_full_init(struct adapter *sc)
 		write_global_rss_key(sc);
 		t4_intr_enable(sc);
 	}
-#ifdef KERN_TLS
-	if (is_ktls(sc))
-		callout_reset_sbt(&sc->ktls_tick, SBT_1MS, 0, ktls_tick, sc,
-		    C_HARDCLOCK);
-#endif
 	return (0);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202110141801.19EI10bw091297>