return IRQ_HANDLED;
 }
 
+int txgbe_test_hostif(struct wx *wx)
+{
+       struct txgbe_hic_ephy_getlink buffer;
+
+       if (wx->mac.type != wx_mac_aml)
+               return 0;
+
+       buffer.hdr.cmd = FW_PHY_GET_LINK_CMD;
+       buffer.hdr.buf_len = sizeof(struct txgbe_hic_ephy_getlink) -
+                            sizeof(struct wx_hic_hdr);
+       buffer.hdr.cmd_or_resp.cmd_resv = FW_CEM_CMD_RESERVED;
+
+       return wx_host_interface_command(wx, (u32 *)&buffer, sizeof(buffer),
+                                       WX_HI_COMMAND_TIMEOUT, true);
+}
+
 static int txgbe_identify_sfp_hostif(struct wx *wx, struct txgbe_hic_i2c_read *buffer)
 {
        buffer->hdr.cmd = FW_READ_SFP_INFO_CMD;
 
 
 void txgbe_gpio_init_aml(struct wx *wx);
 irqreturn_t txgbe_gpio_irq_handler_aml(int irq, void *data);
+int txgbe_test_hostif(struct wx *wx);
 int txgbe_set_phy_link(struct wx *wx);
 int txgbe_identify_sfp(struct wx *wx);
 void txgbe_setup_link(struct wx *wx);
 
        if (etrack_id < 0x20010)
                dev_warn(&pdev->dev, "Please upgrade the firmware to 0x20010 or above.\n");
 
+       err = txgbe_test_hostif(wx);
+       if (err != 0) {
+               dev_err(&pdev->dev, "Mismatched Firmware version\n");
+               err = -EIO;
+               goto err_release_hw;
+       }
+
        txgbe = devm_kzalloc(&pdev->dev, sizeof(*txgbe), GFP_KERNEL);
        if (!txgbe) {
                err = -ENOMEM;