Lines Matching refs:efc

16 	struct efc *efc = arg;  in efc_domain_cb()  local
25 spin_lock_irqsave(&efc->lock, flags); in efc_domain_cb()
34 efc_log_debug(efc, "Domain found: wwn %016llX\n", fcf_wwn); in efc_domain_cb()
37 domain = efc->domain; in efc_domain_cb()
39 domain = efc_domain_alloc(efc, fcf_wwn); in efc_domain_cb()
41 efc_log_err(efc, "efc_domain_alloc() failed\n"); in efc_domain_cb()
54 efc->hold_frames = true; in efc_domain_cb()
91 efc_log_warn(efc, "unsupported event %#x\n", event); in efc_domain_cb()
93 spin_unlock_irqrestore(&efc->lock, flags); in efc_domain_cb()
95 if (efc->domain && domain->req_accept_frames) { in efc_domain_cb()
97 efc->hold_frames = false; in efc_domain_cb()
107 struct efc *efc = domain->efc; in _efc_domain_free() local
109 if (efc->domain_free_cb) in _efc_domain_free()
110 (*efc->domain_free_cb)(efc, efc->domain_free_cb_arg); in _efc_domain_free()
118 struct efc *efc; in efc_domain_free() local
120 efc = domain->efc; in efc_domain_free()
123 efc->hold_frames = false; in efc_domain_free()
125 efc_log_debug(efc, "Domain free: wwn %016llX\n", domain->fcf_wwn); in efc_domain_free()
128 efc->domain = NULL; in efc_domain_free()
133 efc_domain_alloc(struct efc *efc, uint64_t fcf_wwn) in efc_domain_alloc() argument
141 domain->efc = efc; in efc_domain_alloc()
151 efc->domain = domain; in efc_domain_alloc()
153 efc_log_debug(efc, "Domain allocated: wwn %016llX\n", domain->fcf_wwn); in efc_domain_alloc()
159 efc_register_domain_free_cb(struct efc *efc, in efc_register_domain_free_cb() argument
160 void (*callback)(struct efc *efc, void *arg), in efc_register_domain_free_cb() argument
164 efc->domain_free_cb = callback; in efc_register_domain_free_cb()
165 efc->domain_free_cb_arg = arg; in efc_register_domain_free_cb()
166 if (!efc->domain && callback) in efc_register_domain_free_cb()
167 (*callback)(efc, arg); in efc_register_domain_free_cb()
187 efc_log_warn(domain->efc, "%-20s %-20s not handled\n", in __efc_domain_common()
215 efc_log_warn(domain->efc, "%-20s %-20s not handled\n", in __efc_domain_common_shutdown()
222 struct efc *efc = NULL;\
226 WARN_ON(!domain->efc);\
227 efc = domain->efc
247 u64 my_wwnn = efc->req_wwnn; in __efc_domain_init()
248 u64 my_wwpn = efc->req_wwpn; in __efc_domain_init()
252 efc_log_debug(efc, "using default hardware WWN config\n"); in __efc_domain_init()
253 my_wwpn = efc->def_wwpn; in __efc_domain_init()
254 my_wwnn = efc->def_wwnn; in __efc_domain_init()
257 efc_log_debug(efc, "Create nport WWPN %016llX WWNN %016llX\n", in __efc_domain_init()
262 efc->enable_ini, efc->enable_tgt); in __efc_domain_init()
265 efc_log_err(efc, "efc_nport_alloc() failed\n"); in __efc_domain_init()
275 if (efc_cmd_nport_alloc(efc, nport, NULL, (uint8_t *)&bewwpn)) { in __efc_domain_init()
276 efc_log_err(efc, "Can't allocate port\n"); in __efc_domain_init()
295 if (efc_cmd_domain_alloc(efc, domain, drec->index)) { in __efc_domain_init()
296 efc_log_err(efc, in __efc_domain_init()
304 efc_log_debug(efc, "%s fc_id=%#x speed=%d\n", in __efc_domain_init()
315 if (efc->enable_ini) { in __efc_domain_init()
318 efc_log_debug(efc, "%d position map entries\n", in __efc_domain_init()
324 efc_log_debug(efc, "%#x -> %#x\n", in __efc_domain_init()
331 efc_log_err(efc, in __efc_domain_init()
343 if (efc_cmd_domain_alloc(efc, domain, drec->index)) { in __efc_domain_init()
344 efc_log_err(efc, in __efc_domain_init()
414 efc_log_err(efc, in __efc_domain_wait_alloc()
421 efc_log_err(efc, in __efc_domain_wait_alloc()
436 efc_log_err(efc, "%s recv'd waiting for DOMAIN_ALLOC_OK;", in __efc_domain_wait_alloc()
438 efc_log_err(efc, "shutting down domain\n"); in __efc_domain_wait_alloc()
447 efc_log_debug(efc, in __efc_domain_wait_alloc()
475 efc_log_debug(efc, "Requesting hw domain attach fc_id x%x\n", in __efc_domain_allocated()
481 efc_log_err(efc, "Sport lookup store failed: %d\n", rc); in __efc_domain_allocated()
490 rc = efc_cmd_domain_attach(efc, domain, fc_id); in __efc_domain_allocated()
492 efc_log_err(efc, "efc_hw_domain_attach failed: %d\n", in __efc_domain_allocated()
503 efc_log_err(efc, "%s: evt: %d should not happen\n", in __efc_domain_allocated()
508 efc_log_debug(efc, in __efc_domain_allocated()
531 if (efc_cmd_domain_free(efc, domain)) in __efc_domain_allocated()
532 efc_log_err(efc, "hw_domain_free failed\n"); in __efc_domain_allocated()
592 efc_log_debug(efc, in __efc_domain_wait_attach()
599 efc_log_err(efc, "%s: evt: %d should not happen\n", in __efc_domain_wait_attach()
635 efc_log_debug(domain->efc, in __efc_domain_ready()
660 if (efc_cmd_domain_free(efc, domain)) in __efc_domain_ready()
661 efc_log_err(efc, "hw_domain_free failed\n"); in __efc_domain_ready()
668 efc_log_err(efc, "%s: evt: %d should not happen\n", in __efc_domain_ready()
711 rc = efc_cmd_domain_free(efc, domain); in __efc_domain_wait_nports_free()
713 efc_log_err(efc, "efc_hw_domain_free() failed: %d\n", in __efc_domain_wait_nports_free()
745 efc_log_debug(efc, "Reallocating domain\n"); in __efc_domain_wait_shutdown()
747 domain = efc_domain_alloc(efc, fcf_wwn); in __efc_domain_wait_shutdown()
750 efc_log_err(efc, in __efc_domain_wait_shutdown()
807 if (efc_cmd_domain_free(efc, domain)) in __efc_domain_wait_domain_lost()
808 efc_log_err(efc, "hw_domain_free() failed\n"); in __efc_domain_wait_domain_lost()
814 efc_log_err(efc, "[domain] %-20s: failed\n", in __efc_domain_wait_domain_lost()
860 struct efc *efc = domain->efc; in efct_domain_process_pending() local
870 if (efc->hold_frames) in efct_domain_process_pending()
874 spin_lock_irqsave(&efc->pend_frames_lock, flags); in efct_domain_process_pending()
876 if (!list_empty(&efc->pend_frames)) { in efct_domain_process_pending()
877 seq = list_first_entry(&efc->pend_frames, in efct_domain_process_pending()
883 processed = efc->pend_frames_processed; in efct_domain_process_pending()
884 efc->pend_frames_processed = 0; in efct_domain_process_pending()
885 spin_unlock_irqrestore(&efc->pend_frames_lock, flags); in efct_domain_process_pending()
888 efc->pend_frames_processed++; in efct_domain_process_pending()
890 spin_unlock_irqrestore(&efc->pend_frames_lock, flags); in efct_domain_process_pending()
894 efc->tt.hw_seq_free(efc, seq); in efct_domain_process_pending()
900 efc_log_debug(efc, "%u domain frames held and processed\n", in efct_domain_process_pending()
905 efc_dispatch_frame(struct efc *efc, struct efc_hw_sequence *seq) in efc_dispatch_frame() argument
907 struct efc_domain *domain = efc->domain; in efc_dispatch_frame()
914 if (!domain || efc->hold_frames || !list_empty(&efc->pend_frames)) { in efc_dispatch_frame()
917 spin_lock_irqsave(&efc->pend_frames_lock, flags); in efc_dispatch_frame()
919 list_add_tail(&seq->list_entry, &efc->pend_frames); in efc_dispatch_frame()
920 spin_unlock_irqrestore(&efc->pend_frames_lock, flags); in efc_dispatch_frame()
933 efc->tt.hw_seq_free(efc, seq); in efc_dispatch_frame()
941 struct efc *efc = domain->efc; in efc_domain_dispatch_frame() local
949 efc_log_err(efc, "Sequence header or payload is null\n"); in efc_domain_dispatch_frame()
959 spin_lock_irqsave(&efc->lock, flags); in efc_domain_dispatch_frame()
965 efc_log_warn(efc, "FCP frame with invalid d_id x%x\n", in efc_domain_dispatch_frame()
973 efc_log_err(efc, "Physical nport is NULL\n"); in efc_domain_dispatch_frame()
989 efc_log_debug(efc, "sol data/ctrl frame without node\n"); in efc_domain_dispatch_frame()
995 efc_log_err(efc, "efc_node_alloc() failed\n"); in efc_domain_dispatch_frame()
1018 spin_unlock_irqrestore(&efc->lock, flags); in efc_domain_dispatch_frame()
1028 struct efc *efc = node->efc; in efc_node_dispatch_frame() local
1058 efc_log_err(efc, "Received ABTS:\n"); in efc_node_dispatch_frame()
1070 efc_log_err(efc, "Recvd FCP CMD. Drop IO\n"); in efc_node_dispatch_frame()
1086 efc_log_err(efc, "Unhandled frame rctl: %02x\n", hdr->fh_r_ctl); in efc_node_dispatch_frame()