Lines Matching defs:nport
13 efc_nport_free_resources(struct efc_nport *nport, int evt, void *data)
15 struct efc *efc = nport->efc;
17 /* Clear the nport attached flag */
18 nport->attached = false;
21 if (nport->dma.virt) {
22 dma_free_coherent(&efc->pci->dev, nport->dma.size,
23 nport->dma.virt, nport->dma.phys);
24 memset(&nport->dma, 0, sizeof(struct efc_dma));
28 sli_resource_free(efc->sli, SLI4_RSRC_VPI, nport->indicator);
30 efc_nport_cb(efc, evt, nport);
34 efc_nport_get_mbox_status(struct efc_nport *nport, u8 *mqe, int status)
36 struct efc *efc = nport->efc;
42 nport->indicator, status, le16_to_cpu(hdr->status));
52 struct efc_nport *nport = arg;
56 rc = efc_nport_get_mbox_status(nport, mqe, status);
60 efc_nport_free_resources(nport, evt, mqe);
65 efc_nport_free_unreg_vpi(struct efc_nport *nport)
67 struct efc *efc = nport->efc;
71 rc = sli_cmd_unreg_vpi(efc->sli, data, nport->indicator,
75 efc_nport_free_resources(nport, EFC_EVT_NPORT_FREE_FAIL, data);
80 efc_nport_free_unreg_vpi_cb, nport);
83 efc_nport_free_resources(nport, EFC_EVT_NPORT_FREE_FAIL, data);
88 efc_nport_send_evt(struct efc_nport *nport, int evt, void *data)
90 struct efc *efc = nport->efc;
93 efc_nport_cb(efc, evt, nport);
95 /* Set the nport attached flag */
97 nport->attached = true;
100 if (nport->free_req_pending)
101 efc_nport_free_unreg_vpi(nport);
107 struct efc_nport *nport = arg;
109 if (efc_nport_get_mbox_status(nport, mqe, status)) {
110 efc_nport_free_resources(nport, EFC_EVT_NPORT_ALLOC_FAIL, mqe);
114 efc_nport_send_evt(nport, EFC_EVT_NPORT_ALLOC_OK, mqe);
119 efc_nport_alloc_init_vpi(struct efc_nport *nport)
121 struct efc *efc = nport->efc;
126 if (nport->free_req_pending) {
127 efc_nport_free_resources(nport, EFC_EVT_NPORT_FREE_OK, data);
132 nport->indicator, nport->domain->indicator);
135 efc_nport_free_resources(nport, EFC_EVT_NPORT_ALLOC_FAIL, data);
140 efc_nport_alloc_init_vpi_cb, nport);
143 efc_nport_free_resources(nport, EFC_EVT_NPORT_ALLOC_FAIL, data);
150 struct efc_nport *nport = arg;
153 if (efc_nport_get_mbox_status(nport, mqe, status)) {
154 efc_nport_free_resources(nport, EFC_EVT_NPORT_ALLOC_FAIL, mqe);
158 payload = nport->dma.virt;
160 memcpy(&nport->sli_wwpn, payload + SLI4_READ_SPARM64_WWPN_OFFSET,
161 sizeof(nport->sli_wwpn));
162 memcpy(&nport->sli_wwnn, payload + SLI4_READ_SPARM64_WWNN_OFFSET,
163 sizeof(nport->sli_wwnn));
165 dma_free_coherent(&efc->pci->dev, nport->dma.size, nport->dma.virt,
166 nport->dma.phys);
167 memset(&nport->dma, 0, sizeof(struct efc_dma));
168 efc_nport_alloc_init_vpi(nport);
173 efc_nport_alloc_read_sparm64(struct efc *efc, struct efc_nport *nport)
179 nport->dma.size = EFC_SPARAM_DMA_SZ;
180 nport->dma.virt = dma_alloc_coherent(&efc->pci->dev,
181 nport->dma.size, &nport->dma.phys,
183 if (!nport->dma.virt) {
185 efc_nport_free_resources(nport, EFC_EVT_NPORT_ALLOC_FAIL, data);
190 &nport->dma, nport->indicator);
193 efc_nport_free_resources(nport, EFC_EVT_NPORT_ALLOC_FAIL, data);
198 efc_nport_alloc_read_sparm64_cb, nport);
201 efc_nport_free_resources(nport, EFC_EVT_NPORT_ALLOC_FAIL, data);
206 efc_cmd_nport_alloc(struct efc *efc, struct efc_nport *nport,
211 nport->indicator = U32_MAX;
212 nport->free_req_pending = false;
215 memcpy(&nport->sli_wwpn, wwpn, sizeof(nport->sli_wwpn));
222 &nport->indicator, &index)) {
233 efc_nport_alloc_read_sparm64(efc, nport);
235 efc_nport_alloc_init_vpi(nport);
239 sli_resource_free(efc->sli, SLI4_RSRC_VPI, nport->indicator);
250 struct efc_nport *nport = arg;
252 nport->attaching = false;
253 if (efc_nport_get_mbox_status(nport, mqe, status)) {
254 efc_nport_free_resources(nport, EFC_EVT_NPORT_ATTACH_FAIL, mqe);
258 efc_nport_send_evt(nport, EFC_EVT_NPORT_ATTACH_OK, mqe);
263 efc_cmd_nport_attach(struct efc *efc, struct efc_nport *nport, u32 fc_id)
268 if (!nport) {
269 efc_log_err(efc, "bad param(s) nport=%p\n", nport);
273 nport->fc_id = fc_id;
276 rc = sli_cmd_reg_vpi(efc->sli, buf, nport->fc_id,
277 nport->sli_wwpn, nport->indicator,
278 nport->domain->indicator, false);
281 efc_nport_free_resources(nport, EFC_EVT_NPORT_ATTACH_FAIL, buf);
286 efc_nport_attach_reg_vpi_cb, nport);
289 efc_nport_free_resources(nport, EFC_EVT_NPORT_ATTACH_FAIL, buf);
291 nport->attaching = true;
298 efc_cmd_nport_free(struct efc *efc, struct efc_nport *nport)
300 if (!nport) {
301 efc_log_err(efc, "bad parameter(s) nport=%p\n", nport);
306 if (nport->attached)
307 efc_nport_free_unreg_vpi(nport);
308 else if (nport->attaching)
309 nport->free_req_pending = true;
311 efc_sm_post_event(&nport->sm, EFC_EVT_NPORT_FREE_OK, NULL);
358 /* Send alloc/attach ok to the physical nport */
359 efc_nport_send_evt(domain->nport, port_evt, NULL);
426 struct efc_nport *nport = domain->nport;
436 domain->fcf_indicator, nport->indicator);
459 if (!domain || !domain->nport) {
460 efc_log_err(efc, "bad parameter(s) domain=%p nport=%p\n",
461 domain, domain ? domain->nport : NULL);
523 domain->nport->fc_id = fc_id;
527 domain->nport->indicator, domain->nport->sli_wwpn,
528 domain->nport->fc_id);
607 struct efc_nport *nport)
618 rnode->nport = NULL;
628 rnode->nport = nport;
680 rnode->nport->indicator, rnode->fc_id, sparms, 0, 0))
697 if (rnode->nport) {
764 if (rnode->nport) {