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)