0 Replies Latest reply on Mar 8, 2015 11:30 PM by janaki

    While disabling the Virtual kernel mode driver running with heavy traffic, API modify_qp() is not responding properly. It gets hanged

      Hi All,

       

      I am working Virtual Kernel mode Windows WMI driver, for windows server 2012 R2 and using Mellanox 4.8 stack.

       

      While disabling the Virtual kernel mode driver running with heavy traffic, API modify_qp() is not responding properly. It gets hanged.

       

      In case of less traffic,it is responding fine. While running IPERF, traffic carried nearly 15 Gbps per second, Modify_QP is not responding  in some scenario (2 out of 10).

       

      code:

       

      AcquireWriteLock(&Adapter->IBListLock, &lockState);

      listEntry = Adapter->IBListHead.Flink;

      while (listEntry != &Adapter->IBListHead) {

      pviConnectInfo = (PVI_CONNECT_INFO *)CONTAINING_RECORD(listEntry, PVI_CONNECT_INFO, listEntry);

       

      if (pviConnectInfo->qp && pviConnectInfo->p_ifc) {

      qp_mod.req_state = IB_QPS_ERROR;

      ibStatus = pviConnectInfo->p_ifc->modify_qp(pviConnectInfo->qp, &qp_mod);

      if (ibStatus != IB_SUCCESS) {

      DEBUGP(VNIC_ERROR, (FUNCTION": %s: failed to move QP %p to ERROR state, error 0x%x\n",

      Adapter->vnic_name, pviConnectInfo->qp, ibStatus));

      }

      }

       

      listEntry = listEntry->Flink;

      }

      ReleaseLock(&Adapter->IBListLock, &lockState);

       

      Here in this case,Modify_qp() fails to respond immediately (that is,it fails to move to error state)and it gets hanged, then i am getting BSOD and it is showing "watchdog timeout" . The reason is NdisAcquireReadWriteLock() acquired prolonged period, more than 25 micro seconds.

       

      Please suggest me how to resolve and handle this issue.

       

      Regards,

      Janaki