aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_roce.c6
-rw-r--r--drivers/net/ethernet/emulex/benet/be_roce.h3
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
24struct ocrdma_dev; 26struct ocrdma_dev;
25 27
26enum be_interrupt_mode { 28enum 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. */
53struct ocrdma_driver { 55struct 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);