svn commit: r316506 - head/sys/dev/cxgbe
Navdeep Parhar
np at FreeBSD.org
Tue Apr 4 23:14:04 UTC 2017
Author: np
Date: Tue Apr 4 23:14:03 2017
New Revision: 316506
URL: https://svnweb.freebsd.org/changeset/base/316506
Log:
cxgbe(4): Program the global RSS key once instead of once per ifnet.
MFC after: 3 days
Sponsored by: Chelsio Communications
Modified:
head/sys/dev/cxgbe/t4_main.c
Modified: head/sys/dev/cxgbe/t4_main.c
==============================================================================
--- head/sys/dev/cxgbe/t4_main.c Tue Apr 4 21:36:13 2017 (r316505)
+++ head/sys/dev/cxgbe/t4_main.c Tue Apr 4 23:14:03 2017 (r316506)
@@ -4223,6 +4223,10 @@ int
adapter_full_init(struct adapter *sc)
{
int rc, i;
+#ifdef RSS
+ uint32_t raw_rss_key[RSS_KEYSIZE / sizeof(uint32_t)];
+ uint32_t rss_key[RSS_KEYSIZE / sizeof(uint32_t)];
+#endif
ASSERT_SYNCHRONIZED_OP(sc);
ADAPTER_LOCK_ASSERT_NOTOWNED(sc);
@@ -4248,6 +4252,14 @@ adapter_full_init(struct adapter *sc)
taskqueue_start_threads(&sc->tq[i], 1, PI_NET, "%s tq%d",
device_get_nameunit(sc->dev), i);
}
+#ifdef RSS
+ MPASS(RSS_KEYSIZE == 40);
+ rss_getkey((void *)&raw_rss_key[0]);
+ for (i = 0; i < nitems(rss_key); i++) {
+ rss_key[i] = htobe32(raw_rss_key[nitems(rss_key) - 1 - i]);
+ }
+ t4_write_rss_key(sc, &rss_key[0], -1);
+#endif
if (!(sc->flags & IS_VF))
t4_intr_enable(sc);
@@ -4355,8 +4367,6 @@ vi_full_init(struct vi_info *vi)
int nbuckets = rss_getnumbuckets();
int hashconfig = rss_gethashconfig();
int extra;
- uint32_t raw_rss_key[RSS_KEYSIZE / sizeof(uint32_t)];
- uint32_t rss_key[RSS_KEYSIZE / sizeof(uint32_t)];
#endif
ASSERT_SYNCHRONIZED_OP(sc);
@@ -4386,17 +4396,10 @@ vi_full_init(struct vi_info *vi)
vi->rss_size);
}
#ifdef RSS
- MPASS(RSS_KEYSIZE == 40);
if (vi->nrxq != nbuckets) {
if_printf(ifp, "nrxq (%d) != kernel RSS buckets (%d);"
"performance will be impacted.\n", vi->nrxq, nbuckets);
}
-
- rss_getkey((void *)&raw_rss_key[0]);
- for (i = 0; i < nitems(rss_key); i++) {
- rss_key[i] = htobe32(raw_rss_key[nitems(rss_key) - 1 - i]);
- }
- t4_write_rss_key(sc, &rss_key[0], -1);
#endif
rss = malloc(vi->rss_size * sizeof (*rss), M_CXGBE, M_ZERO | M_WAITOK);
for (i = 0; i < vi->rss_size;) {
More information about the svn-src-all
mailing list