bnx2x: Manual setting for MRRS
authorEilon Greenstein <eilong@broadcom.com>
Thu, 12 Feb 2009 08:37:19 +0000 (08:37 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 Feb 2009 07:31:42 +0000 (23:31 -0800)
Allows better debug capabilities if the user wants to force an MRRS value

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bnx2x.h
drivers/net/bnx2x_init.h
drivers/net/bnx2x_main.c

index 9834a86d8139591afaa3eba7b67a196fc2f14960..891a58ed7591540b3551ae4292898ce39074fd43 100644 (file)
@@ -864,6 +864,7 @@ struct bnx2x {
 
        int                     pm_cap;
        int                     pcie_cap;
+       int                     mrrs;
 
        struct delayed_work     sp_task;
        struct work_struct      reset_task;
index a6c0b3abba290a9cd75c7b7c4a764874c4e55801..961db4916f259277fa3c2c012f690b665ccde53d 100644 (file)
@@ -572,7 +572,12 @@ static void bnx2x_init_pxp(struct bnx2x *bp)
                             bp->pcie_cap + PCI_EXP_DEVCTL, &devctl);
        DP(NETIF_MSG_HW, "read 0x%x from devctl\n", devctl);
        w_order = ((devctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5);
-       r_order = ((devctl & PCI_EXP_DEVCTL_READRQ) >> 12);
+       if (bp->mrrs == -1)
+               r_order = ((devctl & PCI_EXP_DEVCTL_READRQ) >> 12);
+       else {
+               DP(NETIF_MSG_HW, "force read order to %d\n", bp->mrrs);
+               r_order = bp->mrrs;
+       }
 
        if (r_order > MAX_RD_ORD) {
                DP(NETIF_MSG_HW, "read order of %d  order adjusted to %d\n",
index 60a4e94e68404a63176033c028e27623b931f64d..2e4d64df66f54966141b7f9a2c18e7d5bb79c889 100644 (file)
@@ -88,6 +88,11 @@ module_param(int_mode, int, 0);
 MODULE_PARM_DESC(int_mode, " Force interrupt mode (1 INT#x; 2 MSI)");
 
 module_param(poll, int, 0);
+
+static int mrrs = -1;
+module_param(mrrs, int, 0);
+MODULE_PARM_DESC(mrrs, " Force Max Read Req Size (0..3) (for debug)");
+
 module_param(debug, int, 0);
 MODULE_PARM_DESC(disable_tpa, "disable the TPA (LRO) feature");
 MODULE_PARM_DESC(poll, "use polling (for debug)");
@@ -8160,6 +8165,7 @@ static int __devinit bnx2x_init_bp(struct bnx2x *bp)
                bp->dev->features |= NETIF_F_LRO;
        }
 
+       bp->mrrs = mrrs;
 
        bp->tx_ring_size = MAX_TX_AVAIL;
        bp->rx_ring_size = MAX_RX_AVAIL;