diff --git a/drivers/net/ntb_netdev.c b/drivers/net/ntb_netdev.c index 8e6752fd89ac624fc1755d3b4a10465b0781d85a..14570b28d528d913975c45e18aa20ed29585a75a 100644 --- a/drivers/net/ntb_netdev.c +++ b/drivers/net/ntb_netdev.c @@ -78,11 +78,19 @@ static void ntb_netdev_event_handler(void *data, int status) 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, diff --git a/drivers/ntb/ntb_hw.h b/drivers/ntb/ntb_hw.h index bbdb7edca10cd8647e4b739dfab29f1ed33fc1e6..d1960ffb4bbc95d0ee02e13432470c9ddfc07707 100644 --- a/drivers/ntb/ntb_hw.h +++ b/drivers/ntb/ntb_hw.h @@ -45,6 +45,7 @@ * Contact Information: * Jon Mason */ +#include #define PCI_DEVICE_ID_INTEL_NTB_B2B_JSF 0x3725 #define PCI_DEVICE_ID_INTEL_NTB_PS_JSF 0x3726 @@ -83,9 +84,6 @@ static inline void writeq(u64 val, void __iomem *addr) #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 diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 3217f394d45b106051b282f824be1413b5efa65d..042fb3dd354f905e33a9936f414514f6b5e249d2 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -56,7 +56,6 @@ #include #include #include -#include #include "ntb_hw.h" #define NTB_TRANSPORT_VERSION 3 diff --git a/include/linux/ntb.h b/include/linux/ntb.h index f6a15205853b228e89b5ca6233638f7f4a421cc0..cbc792cd745ef2d854978805ca1e9bb958ec3b17 100644 --- a/include/linux/ntb.h +++ b/include/linux/ntb.h @@ -54,6 +54,11 @@ struct ntb_client { 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);