Author: np
Date: Wed May 24 23:08:17 2017
New Revision: 318837
URL: https://svnweb.freebsd.org/changeset/base/318837

Log:
  MFC r316506:
  
  cxgbe(4): Program the global RSS key once instead of once per ifnet.

Modified:
  stable/11/sys/dev/cxgbe/t4_main.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/cxgbe/t4_main.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_main.c   Wed May 24 22:48:17 2017        
(r318836)
+++ stable/11/sys/dev/cxgbe/t4_main.c   Wed May 24 23:08:17 2017        
(r318837)
@@ -4238,6 +4238,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);
@@ -4263,6 +4267,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);
@@ -4370,8 +4382,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);
@@ -4401,17 +4411,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;) {
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to