enic: reconfigure resources for kdump crash kernel
authorGovindarajulu Varadarajan <_govind@gmx.com>
Sat, 3 Jan 2015 14:05:44 +0000 (19:35 +0530)
committerDavid S. Miller <davem@davemloft.net>
Mon, 5 Jan 2015 03:23:43 +0000 (22:23 -0500)
When running in kdump kernel, reduce number of resources used by the driver.
This will enable NIC to operate in low memory kdump kernel environment.

Also change the driver version to .83

Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cisco/enic/enic.h
drivers/net/ethernet/cisco/enic/enic_main.c

index d2a103547c67273608a8d8b9a098ad801d00a5ea..84b6a2b46aec474959c69e84288386dc1d499282 100644 (file)
@@ -33,7 +33,7 @@
 
 #define DRV_NAME               "enic"
 #define DRV_DESCRIPTION                "Cisco VIC Ethernet NIC Driver"
-#define DRV_VERSION            "2.1.1.67"
+#define DRV_VERSION            "2.1.1.83"
 #define DRV_COPYRIGHT          "Copyright 2008-2013 Cisco Systems, Inc"
 
 #define ENIC_BARS_MAX          6
index 142c9b5509ae7b84e82a684527775e0e728cbbb3..9027fc1cc5f7915d2ec5994291b0976174579fe3 100644 (file)
@@ -45,6 +45,7 @@
 #ifdef CONFIG_NET_RX_BUSY_POLL
 #include <net/busy_poll.h>
 #endif
+#include <linux/crash_dump.h>
 
 #include "cq_enet_desc.h"
 #include "vnic_dev.h"
@@ -2265,6 +2266,18 @@ static void enic_dev_deinit(struct enic *enic)
        enic_clear_intr_mode(enic);
 }
 
+static void enic_kdump_kernel_config(struct enic *enic)
+{
+       if (is_kdump_kernel()) {
+               dev_info(enic_get_dev(enic), "Running from within kdump kernel. Using minimal resources\n");
+               enic->rq_count = 1;
+               enic->wq_count = 1;
+               enic->config.rq_desc_count = ENIC_MIN_RQ_DESCS;
+               enic->config.wq_desc_count = ENIC_MIN_WQ_DESCS;
+               enic->config.mtu = min_t(u16, 1500, enic->config.mtu);
+       }
+}
+
 static int enic_dev_init(struct enic *enic)
 {
        struct device *dev = enic_get_dev(enic);
@@ -2294,6 +2307,10 @@ static int enic_dev_init(struct enic *enic)
 
        enic_get_res_counts(enic);
 
+       /* modify resource count if we are in kdump_kernel
+        */
+       enic_kdump_kernel_config(enic);
+
        /* Set interrupt mode based on resource counts and system
         * capabilities
         */
This page took 0.09316 seconds and 5 git commands to generate.