提交 8903b9eb 编写于 作者: C Casey Leedom 提交者: Bjorn Helgaas

bnx2x: Use pci_wait_for_pending_transaction() instead of for loop

New routine has been added to avoid duplication of code to wait for
pending PCI transactions to complete.  This makes use of that routine.
Signed-off-by: NCasey Leedom <leedom@chelsio.com>
Signed-off-by: NVipul Pandya <vipul@chelsio.com>
Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
Acked-by: NEilon Greenstein <eilong@broadcom.com>
Acked-by: NDavid S. Miller <davem@davemloft.net>
上级 2c6217e0
...@@ -9935,8 +9935,6 @@ static int bnx2x_prev_mark_path(struct bnx2x *bp, bool after_undi) ...@@ -9935,8 +9935,6 @@ static int bnx2x_prev_mark_path(struct bnx2x *bp, bool after_undi)
static int bnx2x_do_flr(struct bnx2x *bp) static int bnx2x_do_flr(struct bnx2x *bp)
{ {
int i;
u16 status;
struct pci_dev *dev = bp->pdev; struct pci_dev *dev = bp->pdev;
if (CHIP_IS_E1x(bp)) { if (CHIP_IS_E1x(bp)) {
...@@ -9951,20 +9949,8 @@ static int bnx2x_do_flr(struct bnx2x *bp) ...@@ -9951,20 +9949,8 @@ static int bnx2x_do_flr(struct bnx2x *bp)
return -EINVAL; return -EINVAL;
} }
/* Wait for Transaction Pending bit clean */ if (!pci_wait_for_pending_transaction(dev))
for (i = 0; i < 4; i++) { dev_err(&dev->dev, "transaction is not cleared; proceeding with reset anyway\n");
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:
BNX2X_DEV_INFO("Initiating FLR\n"); BNX2X_DEV_INFO("Initiating FLR\n");
bnx2x_fw_command(bp, DRV_MSG_CODE_INITIATE_FLR, 0); bnx2x_fw_command(bp, DRV_MSG_CODE_INITIATE_FLR, 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册