BNX2X: limit queues to 2
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 23 Feb 2015 21:24:49 +0000 (16:24 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 2 Mar 2015 16:59:10 +0000 (11:59 -0500)
Linux does not need to do this.  Something we're doing is wrong still.  If we
run with 8 queues, we get the dreaded MC assert.  With 4 total, we're okay (for
now).

For now, we're limiting to four queues.  I tried looking for other diffs
between Linux and Akaros with 8 queues, but haven't found the problem yet.

But that total includes both functions, so we have only two per controller.

kern/drivers/net/bnx2x/akaros_compat.h
kern/drivers/net/bnx2x/bnx2x_cmn.c
kern/drivers/net/bnx2x/bnx2x_dev.c
kern/drivers/net/bnx2x/bnx2x_main.c

index b51fe0c..d0c18a2 100644 (file)
 /* temporary dumping ground */
 #include "compat_todo.h"
 
+//#define CONFIG_DCB
+//#define CONFIG_NET_RX_BUSY_POLL 1
+//#define CONFIG_NET_POLL_CONTROLLER 1
+//#define CONFIG_INET 1        // will deal with this manually
+#define CONFIG_PCI_MSI 1
+
 #define __rcu
 #define rcu_read_lock()
 #define rcu_read_unlock()
index 6c1fa9d..458b0d1 100644 (file)
@@ -60,6 +60,9 @@ static int bnx2x_calc_num_queues(struct bnx2x *bp)
                nq = 1;
 
        nq = CLAMP(nq, 1, BNX2X_MAX_QUEUES(bp));
+       /* AKAROS_PORT XME.  For some reason, we can't handle 8 queues.  The linux
+        * driver can...  We can handle 4 *total* queues, one per function. */
+       nq = MIN(nq, 2);
        return nq;
 }
 
index 495c233..e96f087 100644 (file)
@@ -320,6 +320,9 @@ static int bnx2x_reset(struct bnx2x *ctlr)
         * mmio mappings that have to happen at boot (in akaros), instead of during
         * devether's attach (at runtime) */
 
+       /* shut it up for now.  too much stats output */
+       ctlr->msg_enable = 0;
+
 //extern int bnx2x_attach(struct bnx2x *sc);
 //     bnx2x_attach(ctlr);
 //
index f8d41b3..e5e2bc7 100644 (file)
@@ -10962,6 +10962,8 @@ static void bnx2x_get_common_hwinfo(struct bnx2x *bp)
 #if 0 // AKAROS_PORT no power mgmt cap
        pci_read_config_word(bp->pdev, bp->pdev->pm_cap + PCI_PM_PMC, &pmc);
        bp->flags |= (pmc & PCI_PM_CAP_PME_D3cold) ? 0 : NO_WOL_FLAG;
+#else
+       bp->flags |= NO_WOL_FLAG;
 #endif
 
        BNX2X_DEV_INFO("%sWoL capable\n",
@@ -12892,7 +12894,7 @@ static int bnx2x_init_dev(struct bnx2x *bp, struct pci_device *pdev,
        pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS,
                               PCICFG_VENDOR_ID_OFFSET);
 
-#if 0 // AKAROS_PORT
+#if 0 // AKAROS_PORT Linux fails this too.
        /* AER (Advanced Error reporting) configuration */
        rc = pci_enable_pcie_error_reporting(pdev);
        if (!rc)