Author: adrian
Date: Wed Mar 18 05:05:30 2015
New Revision: 280204
URL: https://svnweb.freebsd.org/changeset/base/280204

Log:
  Fix ixgbe(4) to compile - with RSS; with ix+ixv in the kernel.
  
  * Fix the multiple same-named devclasses; the duplicate name
    trips up the linker.
  
  * Re-do the taskqueue stuff to use the new cpuset API, not the old
    pinned API.
  
  * Add includes for the new location of the RSS configuration routines.
  
  This allows ixgbe to compile as a module /and/ linked into the kernel,
  along with RSS working.
  
  Sponsored by: Norse Corp, Inc.

Modified:
  head/sys/dev/ixgbe/if_ix.c
  head/sys/dev/ixgbe/if_ixv.c
  head/sys/dev/ixgbe/ix_txrx.c

Modified: head/sys/dev/ixgbe/if_ix.c
==============================================================================
--- head/sys/dev/ixgbe/if_ix.c  Wed Mar 18 05:03:07 2015        (r280203)
+++ head/sys/dev/ixgbe/if_ix.c  Wed Mar 18 05:05:30 2015        (r280204)
@@ -42,6 +42,7 @@
 #include "ixgbe.h"
 
 #ifdef RSS
+#include <net/rss_config.h>
 #include <netinet/in_rss.h>
 #endif
 
@@ -191,7 +192,7 @@ extern void ixgbe_stop_mac_link_on_d3_82
  *  FreeBSD Device Interface Entry Points
  *********************************************************************/
 
-static device_method_t ixgbe_methods[] = {
+static device_method_t ix_methods[] = {
        /* Device interface */
        DEVMETHOD(device_probe, ixgbe_probe),
        DEVMETHOD(device_attach, ixgbe_attach),
@@ -200,15 +201,15 @@ static device_method_t ixgbe_methods[] =
        DEVMETHOD_END
 };
 
-static driver_t ixgbe_driver = {
-       "ix", ixgbe_methods, sizeof(struct adapter),
+static driver_t ix_driver = {
+       "ix", ix_methods, sizeof(struct adapter),
 };
 
-devclass_t ixgbe_devclass;
-DRIVER_MODULE(ixgbe, pci, ixgbe_driver, ixgbe_devclass, 0, 0);
+devclass_t ix_devclass;
+DRIVER_MODULE(ix, pci, ix_driver, ix_devclass, 0, 0);
 
-MODULE_DEPEND(ixgbe, pci, 1, 1, 1);
-MODULE_DEPEND(ixgbe, ether, 1, 1, 1);
+MODULE_DEPEND(ix, pci, 1, 1, 1);
+MODULE_DEPEND(ix, ether, 1, 1, 1);
 
 /*
 ** TUNEABLE PARAMETERS:
@@ -2110,6 +2111,9 @@ ixgbe_allocate_msix(struct adapter *adap
        struct          tx_ring *txr = adapter->tx_rings;
        int             error, rid, vector = 0;
        int             cpu_id = 0;
+#ifdef RSS
+       cpuset_t        cpu_mask;
+#endif
 
 #ifdef RSS
        /*
@@ -2199,8 +2203,9 @@ ixgbe_allocate_msix(struct adapter *adap
                que->tq = taskqueue_create_fast("ixgbe_que", M_NOWAIT,
                    taskqueue_thread_enqueue, &que->tq);
 #ifdef RSS
-               taskqueue_start_threads_pinned(&que->tq, 1, PI_NET,
-                   cpu_id,
+               CPU_SETOF(cpu_id, &cpu_mask);
+               taskqueue_start_threads_cpuset(&que->tq, 1, PI_NET,
+                   &cpu_mask,
                    "%s (bucket %d)",
                    device_get_nameunit(adapter->dev),
                    cpu_id);

Modified: head/sys/dev/ixgbe/if_ixv.c
==============================================================================
--- head/sys/dev/ixgbe/if_ixv.c Wed Mar 18 05:03:07 2015        (r280203)
+++ head/sys/dev/ixgbe/if_ixv.c Wed Mar 18 05:05:30 2015        (r280204)
@@ -142,10 +142,11 @@ static driver_t ixv_driver = {
        "ixv", ixv_methods, sizeof(struct adapter),
 };
 
-devclass_t ixgbe_devclass;
-DRIVER_MODULE(ixv, pci, ixv_driver, ixgbe_devclass, 0, 0);
+devclass_t ixv_devclass;
+DRIVER_MODULE(ixv, pci, ixv_driver, ixv_devclass, 0, 0);
 MODULE_DEPEND(ixv, pci, 1, 1, 1);
 MODULE_DEPEND(ixv, ether, 1, 1, 1);
+/* XXX depend on 'ix' ? */
 
 /*
 ** TUNEABLE PARAMETERS:

Modified: head/sys/dev/ixgbe/ix_txrx.c
==============================================================================
--- head/sys/dev/ixgbe/ix_txrx.c        Wed Mar 18 05:03:07 2015        
(r280203)
+++ head/sys/dev/ixgbe/ix_txrx.c        Wed Mar 18 05:05:30 2015        
(r280204)
@@ -42,6 +42,7 @@
 #include "ixgbe.h"
 
 #ifdef RSS
+#include <net/rss_config.h>
 #include <netinet/in_rss.h>
 #endif
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to