h_qp->p_irp_que->state = NDI_CM_IDLE; \r
/* the IRP "has" 2 QP references, taken in __ndi_ats_query */\r
if ( h_ioctl )\r
- __ndi_complete_irp( h_qp, h_ioctl, STATUS_HOST_UNREACHABLE );\r
+ {\r
+ if( p_query_rec->status == IB_TIMEOUT )\r
+ {\r
+ __ndi_complete_irp( h_qp, h_ioctl, STATUS_TIMEOUT );\r
+ }\r
+ else\r
+ {\r
+ __ndi_complete_irp( h_qp, h_ioctl, STATUS_HOST_UNREACHABLE );\r
+ }\r
+ }\r
deref_al_obj( &h_qp->obj ); /* release IRP SA reference */\r
\r
exit: \r
h_ioctl = IoCsqRemoveNextIrp( &h_qp->p_irp_que->csq, NULL );\r
if( !h_ioctl || p_query_rec->status != IB_SUCCESS || !p_query_rec->result_cnt )\r
{\r
+ NTSTATUS status;\r
+ if( p_query_rec->status == IB_TIMEOUT )\r
+ {\r
+ status = STATUS_TIMEOUT;\r
+ }\r
+ else\r
+ {\r
+ status = STATUS_HOST_UNREACHABLE;\r
+ }\r
h_qp->p_irp_que->state = NDI_CM_IDLE; \r
if ( h_ioctl )\r
- __ndi_complete_irp( h_qp, h_ioctl, STATUS_HOST_UNREACHABLE );\r
+ __ndi_complete_irp( h_qp, h_ioctl, status );\r
deref_al_obj( &h_qp->obj ); /* release IRP SA reference */\r
cl_free( p_req );\r
goto exit; /* ATS request failed */\r