|
@@ -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
|
|
|
*/
|