netdev_dbg(ndev, "Event %x, Link %x\n", status,
                   ntb_transport_link_query(dev->qp));
 
-       /* Currently, only link status event is supported */
-       if (status)
-               netif_carrier_on(ndev);
-       else
+       switch (status) {
+       case NTB_LINK_DOWN:
                netif_carrier_off(ndev);
+               break;
+       case NTB_LINK_UP:
+               if (!ntb_transport_link_query(dev->qp))
+                       return;
+
+               netif_carrier_on(ndev);
+               break;
+       default:
+               netdev_warn(ndev, "Unsupported event type %d\n", status);
+       }
 }
 
 static void ntb_netdev_rx_handler(struct ntb_transport_qp *qp, void *qp_data,
 
  * Contact Information:
  * Jon Mason <jon.mason@intel.com>
  */
+#include <linux/ntb.h>
 
 #define PCI_DEVICE_ID_INTEL_NTB_B2B_JSF                0x3725
 #define PCI_DEVICE_ID_INTEL_NTB_PS_JSF         0x3726
 #define NTB_BAR_MASK           ((1 << NTB_BAR_MMIO) | (1 << NTB_BAR_23) |\
                                 (1 << NTB_BAR_45))
 
-#define NTB_LINK_DOWN          0
-#define NTB_LINK_UP            1
-
 #define NTB_HB_TIMEOUT         msecs_to_jiffies(1000)
 
 #define NTB_MAX_NUM_MW         2
 
        void (*remove) (struct pci_dev *pdev);
 };
 
+enum {
+       NTB_LINK_DOWN = 0,
+       NTB_LINK_UP,
+};
+
 int ntb_register_client(struct ntb_client *drvr);
 void ntb_unregister_client(struct ntb_client *drvr);
 int ntb_register_client_dev(char *device_name);