cxgb4: Force cxgb4 driver as MASTER in kdump kernel
authorHariprasad Shenai <hariprasad@chelsio.com>
Tue, 14 Jun 2016 09:09:30 +0000 (14:39 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Jun 2016 21:46:04 +0000 (14:46 -0700)
When is_kdump_kernel() is true, Forcing cxgb4 driver as Master so we can
reinitialize the Firmware/Chip. Also reduce memory usage by disabling
offload.

Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c

index 477db477b133691bcbf82ebdcd7ce90913eb1102..c045f65d4106dfb58f533dcf75561ac179efa0e1 100644 (file)
@@ -64,6 +64,7 @@
 #include <net/bonding.h>
 #include <net/addrconf.h>
 #include <asm/uaccess.h>
+#include <linux/crash_dump.h>
 
 #include "cxgb4.h"
 #include "t4_regs.h"
@@ -3735,7 +3736,8 @@ static int adap_init0(struct adapter *adap)
                return ret;
 
        /* Contact FW, advertising Master capability */
-       ret = t4_fw_hello(adap, adap->mbox, adap->mbox, MASTER_MAY, &state);
+       ret = t4_fw_hello(adap, adap->mbox, adap->mbox,
+                         is_kdump_kernel() ? MASTER_MUST : MASTER_MAY, &state);
        if (ret < 0) {
                dev_err(adap->pdev_dev, "could not connect to FW, error %d\n",
                        ret);
@@ -4366,6 +4368,11 @@ static void cfg_queues(struct adapter *adap)
        if (q10g > netif_get_num_default_rss_queues())
                q10g = netif_get_num_default_rss_queues();
 
+       /* Reduce memory usage in kdump environment, disable all offload.
+        */
+       if (is_kdump_kernel())
+               adap->params.offload = 0;
+
        for_each_port(adap, i) {
                struct port_info *pi = adap2pinfo(adap, i);