|
@@ -9935,8 +9935,6 @@ static int bnx2x_prev_mark_path(struct bnx2x *bp, bool after_undi)
|
|
|
|
|
|
static int bnx2x_do_flr(struct bnx2x *bp)
|
|
|
{
|
|
|
- int i;
|
|
|
- u16 status;
|
|
|
struct pci_dev *dev = bp->pdev;
|
|
|
|
|
|
if (CHIP_IS_E1x(bp)) {
|
|
@@ -9951,20 +9949,8 @@ static int bnx2x_do_flr(struct bnx2x *bp)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- /* Wait for Transaction Pending bit clean */
|
|
|
- for (i = 0; i < 4; i++) {
|
|
|
- if (i)
|
|
|
- msleep((1 << (i - 1)) * 100);
|
|
|
-
|
|
|
- pcie_capability_read_word(dev, PCI_EXP_DEVSTA, &status);
|
|
|
- if (!(status & PCI_EXP_DEVSTA_TRPND))
|
|
|
- goto clear;
|
|
|
- }
|
|
|
-
|
|
|
- dev_err(&dev->dev,
|
|
|
- "transaction is not cleared; proceeding with reset anyway\n");
|
|
|
-
|
|
|
-clear:
|
|
|
+ if (!pci_wait_for_pending_transaction(dev))
|
|
|
+ dev_err(&dev->dev, "transaction is not cleared; proceeding with reset anyway\n");
|
|
|
|
|
|
BNX2X_DEV_INFO("Initiating FLR\n");
|
|
|
bnx2x_fw_command(bp, DRV_MSG_CODE_INITIATE_FLR, 0);
|