Hi Bjorn, Today's linux-next merge of the pci tree got a conflict in drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c between commit 8eee694c3e66 ("bnx2x: fix unload previous driver flow when flr-capable") from Linus' tree and commit 2a80eebcbf3e ("bnx2x: Use PCI Express Capability accessors") from the pci tree. The former removes the function updated by the latter, so I just removed the function (see below) and can carry the fix as necessary. -- Cheers, Stephen Rothwell sfr@canb.auug.org.au diff --cc drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index 2105498,281cf3f..0000000 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@@ -9372,29 -9378,28 +9366,25 @@@ static int __devinit bnx2x_prev_mark_pa return rc; } -static bool __devinit bnx2x_can_flr(struct bnx2x *bp) -{ - u32 cap; - struct pci_dev *dev = bp->pdev; - - pcie_capability_read_dword(dev, PCI_EXP_DEVCAP, &cap); - if (!(cap & PCI_EXP_DEVCAP_FLR)) - return false; - - return true; -} - static int __devinit bnx2x_do_flr(struct bnx2x *bp) { - int i, pos; + int i; u16 status; struct pci_dev *dev = bp->pdev; - /* probe the capability first */ - if (bnx2x_can_flr(bp)) - return -ENOTTY; + + if (CHIP_IS_E1x(bp)) { + BNX2X_DEV_INFO("FLR not supported in E1/E1H\n"); + return -EINVAL; + } + + /* only bootcode REQ_BC_VER_4_INITIATE_FLR and onwards support flr */ + if (bp->common.bc_ver < REQ_BC_VER_4_INITIATE_FLR) { + BNX2X_ERR("FLR not supported by BC_VER: 0x%x\n", + bp->common.bc_ver); + return -EINVAL; + } - pos = pci_pcie_cap(dev); - if (!pos) - return -ENOTTY; - /* Wait for Transaction Pending bit clean */ for (i = 0; i < 4; i++) { if (i)