Lines Matching refs:job
1161 fcsm_job_t *job; in fcsm_cleanup_port() local
1169 job = fcsm_alloc_job(KM_SLEEP); in fcsm_cleanup_port()
1170 ASSERT(job != NULL); in fcsm_cleanup_port()
1171 fcsm_init_job(job, fcsm->sm_instance, FCSM_JOB_THREAD_SHUTDOWN, in fcsm_cleanup_port()
1174 status = fcsm_process_job(job, 0); in fcsm_cleanup_port()
1177 ASSERT(job->job_result == FC_SUCCESS); in fcsm_cleanup_port()
1178 fcsm_dealloc_job(job); in fcsm_cleanup_port()
2322 fcsm_job_t *job = (fcsm_job_t *)buf; in fcsm_job_cache_constructor() local
2324 mutex_init(&job->job_mutex, NULL, MUTEX_DRIVER, NULL); in fcsm_job_cache_constructor()
2325 sema_init(&job->job_sema, 0, NULL, SEMA_DEFAULT, NULL); in fcsm_job_cache_constructor()
2334 fcsm_job_t *job = (fcsm_job_t *)buf; in fcsm_job_cache_destructor() local
2336 sema_destroy(&job->job_sema); in fcsm_job_cache_destructor()
2337 mutex_destroy(&job->job_mutex); in fcsm_job_cache_destructor()
2344 fcsm_job_t *job; in fcsm_alloc_job() local
2346 job = (fcsm_job_t *)kmem_cache_alloc(fcsm_job_cache, sleep); in fcsm_alloc_job()
2347 if (job != NULL) { in fcsm_alloc_job()
2348 job->job_code = FCSM_JOB_NONE; in fcsm_alloc_job()
2349 job->job_flags = 0; in fcsm_alloc_job()
2350 job->job_port_instance = -1; in fcsm_alloc_job()
2351 job->job_result = -1; in fcsm_alloc_job()
2352 job->job_arg = (opaque_t)0; in fcsm_alloc_job()
2353 job->job_caller_priv = (opaque_t)0; in fcsm_alloc_job()
2354 job->job_comp = NULL; in fcsm_alloc_job()
2355 job->job_comp_arg = (opaque_t)0; in fcsm_alloc_job()
2356 job->job_priv = (void *)0; in fcsm_alloc_job()
2357 job->job_priv_flags = 0; in fcsm_alloc_job()
2358 job->job_next = 0; in fcsm_alloc_job()
2361 return (job); in fcsm_alloc_job()
2365 fcsm_dealloc_job(fcsm_job_t *job) in fcsm_dealloc_job() argument
2367 kmem_cache_free(fcsm_job_cache, (void *)job); in fcsm_dealloc_job()
2372 fcsm_init_job(fcsm_job_t *job, int instance, uint32_t command, uint32_t flags, in fcsm_init_job() argument
2376 ASSERT(job != NULL); in fcsm_init_job()
2377 job->job_port_instance = instance; in fcsm_init_job()
2378 job->job_code = command; in fcsm_init_job()
2379 job->job_flags = flags; in fcsm_init_job()
2380 job->job_arg = arg; in fcsm_init_job()
2381 job->job_caller_priv = caller_priv; in fcsm_init_job()
2382 job->job_comp = comp; in fcsm_init_job()
2383 job->job_comp_arg = comp_arg; in fcsm_init_job()
2384 job->job_retry_count = 0; in fcsm_init_job()
2388 fcsm_process_job(fcsm_job_t *job, int priority_flag) in fcsm_process_job() argument
2393 ASSERT(job != NULL); in fcsm_process_job()
2394 ASSERT(!MUTEX_HELD(&job->job_mutex)); in fcsm_process_job()
2396 fcsm = ddi_get_soft_state(fcsm_state, job->job_port_instance); in fcsm_process_job()
2401 job->job_port_instance)); in fcsm_process_job()
2405 mutex_enter(&job->job_mutex); in fcsm_process_job()
2407 ASSERT(((job->job_flags & (FCSM_JOBFLAG_SYNC | FCSM_JOBFLAG_ASYNC)) == in fcsm_process_job()
2408 FCSM_JOBFLAG_SYNC) || ((job->job_flags & in fcsm_process_job()
2414 sync = job->job_flags & FCSM_JOBFLAG_SYNC; in fcsm_process_job()
2415 mutex_exit(&job->job_mutex); in fcsm_process_job()
2418 fcsm_enque_job(fcsm, job, priority_flag); in fcsm_process_job()
2428 (void *)job)); in fcsm_process_job()
2429 sema_p(&job->job_sema); in fcsm_process_job()
2436 fcsm_enque_job(fcsm_t *fcsm, fcsm_job_t *job, int priority_flag) in fcsm_enque_job() argument
2444 "enque_job: job 0x%p is high priority", job)); in fcsm_enque_job()
2448 fcsm->sm_job_head = fcsm->sm_job_tail = job; in fcsm_enque_job()
2451 job->job_next = fcsm->sm_job_head; in fcsm_enque_job()
2452 fcsm->sm_job_head = job; in fcsm_enque_job()
2456 "enque_job: job 0x%p is normal", job)); in fcsm_enque_job()
2460 fcsm->sm_job_head = fcsm->sm_job_tail = job; in fcsm_enque_job()
2463 fcsm->sm_job_tail->job_next = job; in fcsm_enque_job()
2464 fcsm->sm_job_tail = job; in fcsm_enque_job()
2466 job->job_next = NULL; in fcsm_enque_job()
2475 fcsm_retry_job(fcsm_t *fcsm, fcsm_job_t *job) in fcsm_retry_job() argument
2484 switch (job->job_code) { in fcsm_retry_job()
2489 if (job->job_result != FC_LOGINREQ) { in fcsm_retry_job()
2500 ASSERT(job->job_arg != NULL); in fcsm_retry_job()
2502 (fc_ct_header_t *)((fcio_t *)job->job_arg)->fcio_ibuf; in fcsm_retry_job()
2509 if (job->job_retry_count >= fcsm_max_job_retries) { in fcsm_retry_job()
2512 (void *)job, job->job_retry_count)); in fcsm_retry_job()
2520 mutex_enter(&job->job_mutex); in fcsm_retry_job()
2521 job->job_retry_count++; in fcsm_retry_job()
2522 jobflag = job->job_flags; in fcsm_retry_job()
2523 mutex_exit(&job->job_mutex); in fcsm_retry_job()
2527 job->job_retry_count, (void *)job)); in fcsm_retry_job()
2534 fcsm_enque_job(fcsm, job, 1); in fcsm_retry_job()
2556 fcsm_jobdone(fcsm_job_t *job) in fcsm_jobdone() argument
2560 fcsm = ddi_get_soft_state(fcsm_state, job->job_port_instance); in fcsm_jobdone()
2563 if (job->job_result != FC_SUCCESS) { in fcsm_jobdone()
2564 if (fcsm_retry_job(fcsm, job) == 0) { in fcsm_jobdone()
2570 if (job->job_comp) { in fcsm_jobdone()
2571 job->job_comp(job->job_comp_arg, job, job->job_result); in fcsm_jobdone()
2574 mutex_enter(&job->job_mutex); in fcsm_jobdone()
2575 if (job->job_flags & FCSM_JOBFLAG_SERIALIZE) { in fcsm_jobdone()
2576 mutex_exit(&job->job_mutex); in fcsm_jobdone()
2584 mutex_enter(&job->job_mutex); in fcsm_jobdone()
2587 if (job->job_flags & FCSM_JOBFLAG_SYNC) { in fcsm_jobdone()
2588 mutex_exit(&job->job_mutex); in fcsm_jobdone()
2589 sema_v(&job->job_sema); in fcsm_jobdone()
2591 mutex_exit(&job->job_mutex); in fcsm_jobdone()
2593 fcsm_dealloc_job(job); in fcsm_jobdone()
2600 fcsm_job_t *job; in fcsm_deque_job() local
2606 job = NULL; in fcsm_deque_job()
2609 job = fcsm->sm_job_head; in fcsm_deque_job()
2610 if (job->job_next == NULL) { in fcsm_deque_job()
2611 ASSERT(fcsm->sm_job_tail == job); in fcsm_deque_job()
2614 fcsm->sm_job_head = job->job_next; in fcsm_deque_job()
2615 job->job_next = NULL; in fcsm_deque_job()
2618 return (job); in fcsm_deque_job()
2626 fcsm_job_t *job; in fcsm_job_thread() local
2644 job = fcsm_deque_job(fcsm); in fcsm_job_thread()
2648 mutex_enter(&job->job_mutex); in fcsm_job_thread()
2649 if (job->job_flags & FCSM_JOBFLAG_SERIALIZE) { in fcsm_job_thread()
2650 mutex_exit(&job->job_mutex); in fcsm_job_thread()
2657 mutex_exit(&job->job_mutex); in fcsm_job_thread()
2660 ASSERT(fcsm->sm_instance == job->job_port_instance); in fcsm_job_thread()
2662 switch (job->job_code) { in fcsm_job_thread()
2666 job->job_result = FC_FAILURE; in fcsm_job_thread()
2667 fcsm_jobdone(job); in fcsm_job_thread()
2683 job->job_result = FC_SUCCESS; in fcsm_job_thread()
2689 fcsm_jobdone(job); in fcsm_job_thread()
2697 job->job_result = FC_SUCCESS; in fcsm_job_thread()
2698 fcsm_jobdone(job); in fcsm_job_thread()
2704 fcsm_job_login_mgmt_server(job); in fcsm_job_thread()
2710 fcsm_job_ct_passthru(job); in fcsm_job_thread()
2716 job->job_result = FC_FAILURE; in fcsm_job_thread()
2717 fcsm_jobdone(job); in fcsm_job_thread()
2772 fcsm_job_t *job; in fcsm_ct_intr() local
2777 job = cmd->cmd_job; in fcsm_ct_intr()
2778 ASSERT(job != NULL); in fcsm_ct_intr()
2780 fcio = job->job_arg; in fcsm_ct_intr()
2795 job->job_result = in fcsm_ct_intr()
2800 fcsm_jobdone(job); in fcsm_ct_intr()
2805 fcsm_job_ct_passthru(fcsm_job_t *job) in fcsm_job_ct_passthru() argument
2813 ASSERT(job != NULL); in fcsm_job_ct_passthru()
2814 ASSERT(job->job_port_instance != -1); in fcsm_job_ct_passthru()
2816 job->job_result = FC_FAILURE; in fcsm_job_ct_passthru()
2817 fcsm = ddi_get_soft_state(fcsm_state, job->job_port_instance); in fcsm_job_ct_passthru()
2819 fcsm_jobdone(job); in fcsm_job_ct_passthru()
2830 job->job_result = FC_BADDEV; in fcsm_job_ct_passthru()
2831 fcsm_jobdone(job); in fcsm_job_ct_passthru()
2835 fcio = job->job_arg; in fcsm_job_ct_passthru()
2849 mutex_enter(&job->job_mutex); in fcsm_job_ct_passthru()
2850 if (!(job->job_flags & FCSM_JOBFLAG_CTHEADER_BE)) { in fcsm_job_ct_passthru()
2851 job->job_flags |= FCSM_JOBFLAG_CTHEADER_BE; in fcsm_job_ct_passthru()
2861 mutex_exit(&job->job_mutex); in fcsm_job_ct_passthru()
2882 job->job_result = FC_BADCMD; in fcsm_job_ct_passthru()
2883 fcsm_jobdone(job); in fcsm_job_ct_passthru()
2897 if (fcsm_login_and_process_job(fcsm, job) != FC_SUCCESS) { in fcsm_job_ct_passthru()
2900 job->job_result = FC_FAILURE; in fcsm_job_ct_passthru()
2901 fcsm_jobdone(job); in fcsm_job_ct_passthru()
2913 job->job_result = FC_NOMEM; in fcsm_job_ct_passthru()
2914 fcsm_jobdone(job); in fcsm_job_ct_passthru()
2918 FCSM_INIT_CMD(cmd, job, FC_TRAN_INTR | FC_TRAN_CLASS3, FC_PKT_EXCHANGE, in fcsm_job_ct_passthru()
2928 job->job_result = status; in fcsm_job_ct_passthru()
2930 fcsm_jobdone(job); in fcsm_job_ct_passthru()
3134 fcsm_job_t *job; in fcsm_xlogi_intr() local
3138 job = cmd->cmd_job; in fcsm_xlogi_intr()
3139 ASSERT(job != NULL); in fcsm_xlogi_intr()
3154 job->job_result = in fcsm_xlogi_intr()
3159 fcsm_jobdone(job); in fcsm_xlogi_intr()
3163 fcsm_job_login_mgmt_server(fcsm_job_t *job) in fcsm_job_login_mgmt_server() argument
3169 ASSERT(job != NULL); in fcsm_job_login_mgmt_server()
3170 ASSERT(job->job_port_instance != -1); in fcsm_job_login_mgmt_server()
3172 fcsm = ddi_get_soft_state(fcsm_state, job->job_port_instance); in fcsm_job_login_mgmt_server()
3174 job->job_result = FC_NOMEM; in fcsm_job_login_mgmt_server()
3175 fcsm_jobdone(job); in fcsm_job_login_mgmt_server()
3185 job->job_result = FC_NOMEM; in fcsm_job_login_mgmt_server()
3186 fcsm_jobdone(job); in fcsm_job_login_mgmt_server()
3190 FCSM_INIT_CMD(cmd, job, FC_TRAN_INTR | FC_TRAN_CLASS3, FC_PKT_EXCHANGE, in fcsm_job_login_mgmt_server()
3200 job->job_result = status; in fcsm_job_login_mgmt_server()
3202 fcsm_jobdone(job); in fcsm_job_login_mgmt_server()
3210 job->job_result = status; in fcsm_job_login_mgmt_server()
3212 fcsm_jobdone(job); in fcsm_job_login_mgmt_server()
3222 fcsm_job_t *job; in fcsm_ct_passthru() local
3227 job = fcsm_alloc_job(sleep); in fcsm_ct_passthru()
3228 ASSERT(sleep == KM_NOSLEEP || job != NULL); in fcsm_ct_passthru()
3230 fcsm_init_job(job, instance, FCSM_JOB_CT_PASSTHRU, job_flags, in fcsm_ct_passthru()
3232 status = fcsm_process_job(job, 0); in fcsm_ct_passthru()
3235 fcsm_dealloc_job(job); in fcsm_ct_passthru()
3240 status = job->job_result; in fcsm_ct_passthru()
3241 fcsm_dealloc_job(job); in fcsm_ct_passthru()
3250 fcsm_ct_passthru_comp(opaque_t comp_arg, fcsm_job_t *job, int result) in fcsm_ct_passthru_comp() argument
3252 ASSERT(job != NULL); in fcsm_ct_passthru_comp()
3255 job->job_result, job->job_port_instance)); in fcsm_ct_passthru_comp()