|
 |
ddba73 |
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
|
|
 |
ddba73 |
index 86e9451..5097083 100644
|
|
 |
ddba73 |
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
|
|
 |
ddba73 |
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
|
|
 |
ddba73 |
@@ -2581,4 +2581,9 @@ void bnx2x_set_rx_ts(struct bnx2x *bp, struct sk_buff *skb);
|
|
 |
ddba73 |
#define BNX2X_MAX_PHC_DRIFT 31000000
|
|
 |
ddba73 |
#define BNX2X_PTP_TX_TIMEOUT
|
|
 |
ddba73 |
|
|
 |
ddba73 |
+static inline int dup_is_kdump_kernel(void)
|
|
 |
ddba73 |
+{
|
|
 |
ddba73 |
+ return reset_devices;
|
|
 |
ddba73 |
+}
|
|
 |
ddba73 |
+
|
|
 |
ddba73 |
#endif /* bnx2x.h */
|
|
 |
ddba73 |
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
|
 |
ddba73 |
index 66717c5..bd1fed9 100644
|
|
 |
ddba73 |
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
|
 |
ddba73 |
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
|
 |
ddba73 |
@@ -65,7 +65,7 @@ static int bnx2x_calc_num_queues(struct bnx2x *bp)
|
|
 |
ddba73 |
int nq = bnx2x_num_queues ? : netif_get_num_default_rss_queues();
|
|
 |
ddba73 |
|
|
 |
ddba73 |
/* Reduce memory usage in kdump environment by using only one queue */
|
|
 |
ddba73 |
- if (is_kdump_kernel())
|
|
 |
ddba73 |
+ if (dup_is_kdump_kernel())
|
|
 |
ddba73 |
nq = 1;
|
|
 |
ddba73 |
|
|
 |
ddba73 |
nq = clamp(nq, 1, BNX2X_MAX_QUEUES(bp));
|
|
 |
ddba73 |
@@ -1647,6 +1647,44 @@ void bnx2x_free_irq(struct bnx2x *bp)
|
|
 |
ddba73 |
}
|
|
 |
ddba73 |
}
|
|
 |
ddba73 |
|
|
 |
ddba73 |
+/**
|
|
 |
ddba73 |
+ * pci_enable_msix_range - configure device's MSI-X capability structure
|
|
 |
ddba73 |
+ * @dev: pointer to the pci_dev data structure of MSI-X device function
|
|
 |
ddba73 |
+ * @entries: pointer to an array of MSI-X entries
|
|
 |
ddba73 |
+ * @minvec: minimum number of MSI-X irqs requested
|
|
 |
ddba73 |
+ * @maxvec: maximum number of MSI-X irqs requested
|
|
 |
ddba73 |
+ *
|
|
 |
ddba73 |
+ * Setup the MSI-X capability structure of device function with a maximum
|
|
 |
ddba73 |
+ * possible number of interrupts in the range between @minvec and @maxvec
|
|
 |
ddba73 |
+ * upon its software driver call to request for MSI-X mode enabled on its
|
|
 |
ddba73 |
+ * hardware device function. It returns a negative errno if an error occurs.
|
|
 |
ddba73 |
+ * If it succeeds, it returns the actual number of interrupts allocated and
|
|
 |
ddba73 |
+ * indicates the successful configuration of MSI-X capability structure
|
|
 |
ddba73 |
+ * with new allocated MSI-X interrupts.
|
|
 |
ddba73 |
+ **/
|
|
 |
ddba73 |
+static int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries,
|
|
 |
ddba73 |
+ int minvec, int maxvec)
|
|
 |
ddba73 |
+{
|
|
 |
ddba73 |
+ int nvec = maxvec;
|
|
 |
ddba73 |
+ int rc;
|
|
 |
ddba73 |
+
|
|
 |
ddba73 |
+ if (maxvec < minvec)
|
|
 |
ddba73 |
+ return -ERANGE;
|
|
 |
ddba73 |
+
|
|
 |
ddba73 |
+ do {
|
|
 |
ddba73 |
+ rc = pci_enable_msix(dev, entries, nvec);
|
|
 |
ddba73 |
+ if (rc < 0) {
|
|
 |
ddba73 |
+ return rc;
|
|
 |
ddba73 |
+ } else if (rc > 0) {
|
|
 |
ddba73 |
+ if (rc < minvec)
|
|
 |
ddba73 |
+ return -ENOSPC;
|
|
 |
ddba73 |
+ nvec = rc;
|
|
 |
ddba73 |
+ }
|
|
 |
ddba73 |
+ } while (rc);
|
|
 |
ddba73 |
+
|
|
 |
ddba73 |
+ return nvec;
|
|
 |
ddba73 |
+}
|
|
 |
ddba73 |
+
|
|
 |
ddba73 |
int bnx2x_enable_msix(struct bnx2x *bp)
|
|
 |
ddba73 |
{
|
|
 |
ddba73 |
int msix_vec = 0, i, rc;
|
|
 |
ddba73 |
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
|
 |
ddba73 |
index e22c363..491ffe0 100644
|
|
 |
ddba73 |
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
|
 |
ddba73 |
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
|
 |
ddba73 |
@@ -11972,7 +11972,7 @@ static int bnx2x_init_bp(struct bnx2x *bp)
|
|
 |
ddba73 |
bp->disable_tpa = disable_tpa;
|
|
 |
ddba73 |
bp->disable_tpa |= IS_MF_STORAGE_SD(bp) || IS_MF_FCOE_AFEX(bp);
|
|
 |
ddba73 |
/* Reduce memory usage in kdump environment by disabling TPA */
|
|
 |
ddba73 |
- bp->disable_tpa |= is_kdump_kernel();
|
|
 |
ddba73 |
+ bp->disable_tpa |= dup_is_kdump_kernel();
|
|
 |
ddba73 |
|
|
 |
ddba73 |
/* Set TPA flags */
|
|
 |
ddba73 |
if (bp->disable_tpa) {
|