#define PCS_POWER_STATE_DOWN   0x6
 #define PCS_POWER_STATE_UP     0x4
 
+#define RFE_RD_FIFO_TH_3_DWORDS        0x3
+
 static void pci11x1x_strap_get_status(struct lan743x_adapter *adapter)
 {
        u32 chip_rev;
        lan743x_pci_cleanup(adapter);
 }
 
+static void pci11x1x_set_rfe_rd_fifo_threshold(struct lan743x_adapter *adapter)
+{
+       u16 rev = adapter->csr.id_rev & ID_REV_CHIP_REV_MASK_;
+
+       if (rev == ID_REV_CHIP_REV_PCI11X1X_B0_) {
+               u32 misc_ctl;
+
+               misc_ctl = lan743x_csr_read(adapter, MISC_CTL_0);
+               misc_ctl &= ~MISC_CTL_0_RFE_READ_FIFO_MASK_;
+               misc_ctl |= FIELD_PREP(MISC_CTL_0_RFE_READ_FIFO_MASK_,
+                                      RFE_RD_FIFO_TH_3_DWORDS);
+               lan743x_csr_write(adapter, MISC_CTL_0, misc_ctl);
+       }
+}
+
 static int lan743x_hardware_init(struct lan743x_adapter *adapter,
                                 struct pci_dev *pdev)
 {
                pci11x1x_strap_get_status(adapter);
                spin_lock_init(&adapter->eth_syslock_spinlock);
                mutex_init(&adapter->sgmii_rw_lock);
+               pci11x1x_set_rfe_rd_fifo_threshold(adapter);
        } else {
                adapter->max_tx_channels = LAN743X_MAX_TX_CHANNELS;
                adapter->used_tx_channels = LAN743X_USED_TX_CHANNELS;
 
 #define ID_REV_CHIP_REV_MASK_          (0x0000FFFF)
 #define ID_REV_CHIP_REV_A0_            (0x00000000)
 #define ID_REV_CHIP_REV_B0_            (0x00000010)
+#define ID_REV_CHIP_REV_PCI11X1X_B0_   (0x000000B0)
 
 #define FPGA_REV                       (0x04)
 #define FPGA_REV_GET_MINOR_(fpga_rev)  (((fpga_rev) >> 8) & 0x000000FF)
 #define SGMII_CTL_LINK_STATUS_SOURCE_  BIT(8)
 #define SGMII_CTL_SGMII_POWER_DN_      BIT(1)
 
+#define MISC_CTL_0                     (0x920)
+#define MISC_CTL_0_RFE_READ_FIFO_MASK_ GENMASK(6, 4)
+
 /* Vendor Specific SGMII MMD details */
 #define SR_VSMMD_PCS_ID1               0x0004
 #define SR_VSMMD_PCS_ID2               0x0005