|
@@ -84,7 +84,7 @@
|
|
|
#include "s2io.h"
|
|
|
#include "s2io-regs.h"
|
|
|
|
|
|
-#define DRV_VERSION "2.0.26.6"
|
|
|
+#define DRV_VERSION "2.0.26.10"
|
|
|
|
|
|
/* S2io Driver name & version. */
|
|
|
static char s2io_driver_name[] = "Neterion";
|
|
@@ -1100,6 +1100,20 @@ static int init_nic(struct s2io_nic *nic)
|
|
|
msleep(500);
|
|
|
val64 = readq(&bar0->sw_reset);
|
|
|
|
|
|
+ /* Ensure that it's safe to access registers by checking
|
|
|
+ * RIC_RUNNING bit is reset. Check is valid only for XframeII.
|
|
|
+ */
|
|
|
+ if (nic->device_type == XFRAME_II_DEVICE) {
|
|
|
+ for (i = 0; i < 50; i++) {
|
|
|
+ val64 = readq(&bar0->adapter_status);
|
|
|
+ if (!(val64 & ADAPTER_STATUS_RIC_RUNNING))
|
|
|
+ break;
|
|
|
+ msleep(10);
|
|
|
+ }
|
|
|
+ if (i == 50)
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
/* Enable Receiving broadcasts */
|
|
|
add = &bar0->mac_cfg;
|
|
|
val64 = readq(&bar0->mac_cfg);
|