diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_roce.c | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_roce.h | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_roce.c b/drivers/net/ethernet/emulex/benet/be_roce.c index 9cd5415fe017..aa7f94375108 100644 --- a/drivers/net/ethernet/emulex/benet/be_roce.c +++ b/drivers/net/ethernet/emulex/benet/be_roce.c | |||
@@ -35,6 +35,12 @@ static void _be_roce_dev_add(struct be_adapter *adapter) | |||
35 | 35 | ||
36 | if (!ocrdma_drv) | 36 | if (!ocrdma_drv) |
37 | return; | 37 | return; |
38 | |||
39 | if (ocrdma_drv->be_abi_version != BE_ROCE_ABI_VERSION) { | ||
40 | dev_warn(&pdev->dev, "Cannot initialize RoCE due to ocrdma ABI mismatch\n"); | ||
41 | return; | ||
42 | } | ||
43 | |||
38 | if (pdev->device == OC_DEVICE_ID5) { | 44 | if (pdev->device == OC_DEVICE_ID5) { |
39 | /* only msix is supported on these devices */ | 45 | /* only msix is supported on these devices */ |
40 | if (!msix_enabled(adapter)) | 46 | if (!msix_enabled(adapter)) |
diff --git a/drivers/net/ethernet/emulex/benet/be_roce.h b/drivers/net/ethernet/emulex/benet/be_roce.h index 2cd1129e19af..1bfb16164df8 100644 --- a/drivers/net/ethernet/emulex/benet/be_roce.h +++ b/drivers/net/ethernet/emulex/benet/be_roce.h | |||
@@ -21,6 +21,8 @@ | |||
21 | #include <linux/pci.h> | 21 | #include <linux/pci.h> |
22 | #include <linux/netdevice.h> | 22 | #include <linux/netdevice.h> |
23 | 23 | ||
24 | #define BE_ROCE_ABI_VERSION 1 | ||
25 | |||
24 | struct ocrdma_dev; | 26 | struct ocrdma_dev; |
25 | 27 | ||
26 | enum be_interrupt_mode { | 28 | enum be_interrupt_mode { |
@@ -52,6 +54,7 @@ struct be_dev_info { | |||
52 | /* ocrdma driver register's the callback functions with nic driver. */ | 54 | /* ocrdma driver register's the callback functions with nic driver. */ |
53 | struct ocrdma_driver { | 55 | struct ocrdma_driver { |
54 | unsigned char name[32]; | 56 | unsigned char name[32]; |
57 | u32 be_abi_version; | ||
55 | struct ocrdma_dev *(*add) (struct be_dev_info *dev_info); | 58 | struct ocrdma_dev *(*add) (struct be_dev_info *dev_info); |
56 | void (*remove) (struct ocrdma_dev *); | 59 | void (*remove) (struct ocrdma_dev *); |
57 | void (*state_change_handler) (struct ocrdma_dev *, u32 new_state); | 60 | void (*state_change_handler) (struct ocrdma_dev *, u32 new_state); |