S2io: Check for register initialization completion before accesing device registers
- Making sure register initialisation is complete before proceeding further. The driver must wait until initialization is complete before attempting to access any other device registers. Signed-off-by: Surjit Reang <surjit.reang@neterion.com> Signed-off-by: Sreenivasa Honnur <sreenivasa.honnur@neterion.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
committed by
Jeff Garzik
parent
17cf803a57
commit
7962024e9d
@ -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);
|
||||
|
Reference in New Issue
Block a user