Print this page
XXXX introduce drv_sectohz


 305         /* if interrupts are not enabled, poll when results are available */
 306         if (!(qlge->flags & INTERRUPTS_ENABLED)) {
 307                 rtn_val = ql_issue_mailbox_cmd_and_poll_rsp(qlge, mbx_cmd,
 308                     &qlge->received_mbx_cmds);
 309                 if (rtn_val == DDI_SUCCESS) {
 310                         for (i = 0; i < NUM_MAILBOX_REGS; i++)
 311                                 mbx_cmd->mb[i] = qlge->received_mbx_cmds.mb[i];
 312                 }
 313         } else {
 314                 rtn_val = ql_issue_mailbox_cmd(qlge, mbx_cmd);
 315                 if (rtn_val != DDI_SUCCESS) {
 316                         cmn_err(CE_WARN, "%s(%d) ql_issue_mailbox_cmd failed",
 317                             __func__, qlge->instance);
 318                         goto err;
 319                 }
 320                 qlge->mbx_wait_completion = 1;
 321                 while (!done && qlge->mbx_wait_completion && !ddi_in_panic()) {
 322                         /* default 5 seconds from now to timeout */
 323                         timer = ddi_get_lbolt();
 324                         if (mbx_cmd->timeout) {
 325                                 timer +=
 326                                     mbx_cmd->timeout * drv_usectohz(1000000);
 327                         } else {
 328                                 timer += 5 * drv_usectohz(1000000);
 329                         }
 330                         if (cv_timedwait(&qlge->cv_mbx_intr, &qlge->mbx_mutex,
 331                             timer) == -1) {
 332                                 /*
 333                                  * The timeout time 'timer' was
 334                                  * reached or expired without the condition
 335                                  * being signaled.
 336                                  */
 337                                 cmn_err(CE_WARN, "%s(%d) Wait for Mailbox cmd "
 338                                     "complete timeout.",
 339                                     __func__, qlge->instance);
 340                                 rtn_val = DDI_FAILURE;
 341                                 done = 1;
 342                         } else {
 343                                 QL_PRINT(DBG_MBX,
 344                                     ("%s(%d) mailbox completion signal received"
 345                                     " \n", __func__, qlge->instance));
 346                                 for (i = 0; i < NUM_MAILBOX_REGS; i++) {
 347                                         mbx_cmd->mb[i] =
 348                                             qlge->received_mbx_cmds.mb[i];




 305         /* if interrupts are not enabled, poll when results are available */
 306         if (!(qlge->flags & INTERRUPTS_ENABLED)) {
 307                 rtn_val = ql_issue_mailbox_cmd_and_poll_rsp(qlge, mbx_cmd,
 308                     &qlge->received_mbx_cmds);
 309                 if (rtn_val == DDI_SUCCESS) {
 310                         for (i = 0; i < NUM_MAILBOX_REGS; i++)
 311                                 mbx_cmd->mb[i] = qlge->received_mbx_cmds.mb[i];
 312                 }
 313         } else {
 314                 rtn_val = ql_issue_mailbox_cmd(qlge, mbx_cmd);
 315                 if (rtn_val != DDI_SUCCESS) {
 316                         cmn_err(CE_WARN, "%s(%d) ql_issue_mailbox_cmd failed",
 317                             __func__, qlge->instance);
 318                         goto err;
 319                 }
 320                 qlge->mbx_wait_completion = 1;
 321                 while (!done && qlge->mbx_wait_completion && !ddi_in_panic()) {
 322                         /* default 5 seconds from now to timeout */
 323                         timer = ddi_get_lbolt();
 324                         if (mbx_cmd->timeout) {
 325                                 timer += drv_sectohz(mbx_cmd->timeout);

 326                         } else {
 327                                 timer += drv_sectohz(5);
 328                         }
 329                         if (cv_timedwait(&qlge->cv_mbx_intr, &qlge->mbx_mutex,
 330                             timer) == -1) {
 331                                 /*
 332                                  * The timeout time 'timer' was
 333                                  * reached or expired without the condition
 334                                  * being signaled.
 335                                  */
 336                                 cmn_err(CE_WARN, "%s(%d) Wait for Mailbox cmd "
 337                                     "complete timeout.",
 338                                     __func__, qlge->instance);
 339                                 rtn_val = DDI_FAILURE;
 340                                 done = 1;
 341                         } else {
 342                                 QL_PRINT(DBG_MBX,
 343                                     ("%s(%d) mailbox completion signal received"
 344                                     " \n", __func__, qlge->instance));
 345                                 for (i = 0; i < NUM_MAILBOX_REGS; i++) {
 346                                         mbx_cmd->mb[i] =
 347                                             qlge->received_mbx_cmds.mb[i];