Lines Matching refs:efc

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