View | Details | Raw Unified | Return to bug 212841 | Differences between
and this patch

Collapse All | Expand All

(-)mps.c (-9 / +19 lines)
Lines 989-996 Link Here
989
{
989
{
990
	MPI2_DEFAULT_REPLY *reply;
990
	MPI2_DEFAULT_REPLY *reply;
991
	MPI2_IOC_FACTS_REQUEST request;
991
	MPI2_IOC_FACTS_REQUEST request;
992
	int error, req_sz, reply_sz;
992
	int error, req_sz, reply_sz, retry = 0;
993
993
	
994
	MPS_FUNCTRACE(sc);
994
	MPS_FUNCTRACE(sc);
995
995
996
	req_sz = sizeof(MPI2_IOC_FACTS_REQUEST);
996
	req_sz = sizeof(MPI2_IOC_FACTS_REQUEST);
Lines 999-1006 Link Here
999
999
1000
	bzero(&request, req_sz);
1000
	bzero(&request, req_sz);
1001
	request.Function = MPI2_FUNCTION_IOC_FACTS;
1001
	request.Function = MPI2_FUNCTION_IOC_FACTS;
1002
	error = mps_request_sync(sc, &request, reply, req_sz, reply_sz, 5);
1002
	while(retry < 5){
1003
1003
		error = mps_request_sync(sc, &request, reply, req_sz, reply_sz, 5);
1004
		if(!error)
1005
			break;
1006
		mps_dprint(sc, MPS_FAULT, "mps_request_sync failed retry %d\n",retry);
1007
                retry++;
1008
	}
1004
	return (error);
1009
	return (error);
1005
}
1010
}
1006
1011
Lines 1009-1015 Link Here
1009
{
1014
{
1010
	MPI2_IOC_INIT_REQUEST	init;
1015
	MPI2_IOC_INIT_REQUEST	init;
1011
	MPI2_DEFAULT_REPLY	reply;
1016
	MPI2_DEFAULT_REPLY	reply;
1012
	int req_sz, reply_sz, error;
1017
	int req_sz, reply_sz, error, retry = 0;
1013
	struct timeval now;
1018
	struct timeval now;
1014
	uint64_t time_in_msec;
1019
	uint64_t time_in_msec;
1015
1020
Lines 1044-1054 Link Here
1044
	time_in_msec = (now.tv_sec * 1000 + now.tv_usec/1000);
1049
	time_in_msec = (now.tv_sec * 1000 + now.tv_usec/1000);
1045
	init.TimeStamp.High = htole32((time_in_msec >> 32) & 0xFFFFFFFF);
1050
	init.TimeStamp.High = htole32((time_in_msec >> 32) & 0xFFFFFFFF);
1046
	init.TimeStamp.Low = htole32(time_in_msec & 0xFFFFFFFF);
1051
	init.TimeStamp.Low = htole32(time_in_msec & 0xFFFFFFFF);
1052
	while(retry < 5){
1053
		error = mps_request_sync(sc, &init, &reply, req_sz, reply_sz, 5);
1054
		if ((reply.IOCStatus & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS)
1055
        	        error = ENXIO;
1056
                if(!error)
1057
                        break;
1058
                mps_dprint(sc, MPS_FAULT, "mps_request_sync failed retry %d\n",retry);
1059
                retry++;
1060
        }
1047
1061
1048
	error = mps_request_sync(sc, &init, &reply, req_sz, reply_sz, 5);
1049
	if ((reply.IOCStatus & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS)
1050
		error = ENXIO;
1051
1052
	mps_dprint(sc, MPS_INIT, "IOCInit status= 0x%x\n", reply.IOCStatus);
1062
	mps_dprint(sc, MPS_INIT, "IOCInit status= 0x%x\n", reply.IOCStatus);
1053
	return (error);
1063
	return (error);
1054
}
1064
}

Return to bug 212841