diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_els.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 245 |
1 files changed, 103 insertions, 142 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index a7302480bc4a..b8b34cf5c3d2 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -55,7 +55,7 @@ static void lpfc_register_new_vport(struct lpfc_hba *phba, | |||
55 | static int lpfc_max_els_tries = 3; | 55 | static int lpfc_max_els_tries = 3; |
56 | 56 | ||
57 | /** | 57 | /** |
58 | * lpfc_els_chk_latt: Check host link attention event for a vport. | 58 | * lpfc_els_chk_latt - Check host link attention event for a vport |
59 | * @vport: pointer to a host virtual N_Port data structure. | 59 | * @vport: pointer to a host virtual N_Port data structure. |
60 | * | 60 | * |
61 | * This routine checks whether there is an outstanding host link | 61 | * This routine checks whether there is an outstanding host link |
@@ -116,7 +116,7 @@ lpfc_els_chk_latt(struct lpfc_vport *vport) | |||
116 | } | 116 | } |
117 | 117 | ||
118 | /** | 118 | /** |
119 | * lpfc_prep_els_iocb: Allocate and prepare a lpfc iocb data structure. | 119 | * lpfc_prep_els_iocb - Allocate and prepare a lpfc iocb data structure |
120 | * @vport: pointer to a host virtual N_Port data structure. | 120 | * @vport: pointer to a host virtual N_Port data structure. |
121 | * @expectRsp: flag indicating whether response is expected. | 121 | * @expectRsp: flag indicating whether response is expected. |
122 | * @cmdSize: size of the ELS command. | 122 | * @cmdSize: size of the ELS command. |
@@ -290,7 +290,7 @@ els_iocb_free_pcmb_exit: | |||
290 | } | 290 | } |
291 | 291 | ||
292 | /** | 292 | /** |
293 | * lpfc_issue_fabric_reglogin: Issue fabric registration login for a vport. | 293 | * lpfc_issue_fabric_reglogin - Issue fabric registration login for a vport |
294 | * @vport: pointer to a host virtual N_Port data structure. | 294 | * @vport: pointer to a host virtual N_Port data structure. |
295 | * | 295 | * |
296 | * This routine issues a fabric registration login for a @vport. An | 296 | * This routine issues a fabric registration login for a @vport. An |
@@ -386,7 +386,7 @@ fail: | |||
386 | } | 386 | } |
387 | 387 | ||
388 | /** | 388 | /** |
389 | * lpfc_cmpl_els_flogi_fabric: Completion function for flogi to a fabric port. | 389 | * lpfc_cmpl_els_flogi_fabric - Completion function for flogi to a fabric port |
390 | * @vport: pointer to a host virtual N_Port data structure. | 390 | * @vport: pointer to a host virtual N_Port data structure. |
391 | * @ndlp: pointer to a node-list data structure. | 391 | * @ndlp: pointer to a node-list data structure. |
392 | * @sp: pointer to service parameter data structure. | 392 | * @sp: pointer to service parameter data structure. |
@@ -509,7 +509,7 @@ lpfc_cmpl_els_flogi_fabric(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, | |||
509 | } | 509 | } |
510 | 510 | ||
511 | /** | 511 | /** |
512 | * lpfc_cmpl_els_flogi_nport: Completion function for flogi to an N_Port. | 512 | * lpfc_cmpl_els_flogi_nport - Completion function for flogi to an N_Port |
513 | * @vport: pointer to a host virtual N_Port data structure. | 513 | * @vport: pointer to a host virtual N_Port data structure. |
514 | * @ndlp: pointer to a node-list data structure. | 514 | * @ndlp: pointer to a node-list data structure. |
515 | * @sp: pointer to service parameter data structure. | 515 | * @sp: pointer to service parameter data structure. |
@@ -626,7 +626,7 @@ fail: | |||
626 | } | 626 | } |
627 | 627 | ||
628 | /** | 628 | /** |
629 | * lpfc_cmpl_els_flogi: Completion callback function for flogi. | 629 | * lpfc_cmpl_els_flogi - Completion callback function for flogi |
630 | * @phba: pointer to lpfc hba data structure. | 630 | * @phba: pointer to lpfc hba data structure. |
631 | * @cmdiocb: pointer to lpfc command iocb data structure. | 631 | * @cmdiocb: pointer to lpfc command iocb data structure. |
632 | * @rspiocb: pointer to lpfc response iocb data structure. | 632 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -751,7 +751,7 @@ out: | |||
751 | } | 751 | } |
752 | 752 | ||
753 | /** | 753 | /** |
754 | * lpfc_issue_els_flogi: Issue an flogi iocb command for a vport. | 754 | * lpfc_issue_els_flogi - Issue an flogi iocb command for a vport |
755 | * @vport: pointer to a host virtual N_Port data structure. | 755 | * @vport: pointer to a host virtual N_Port data structure. |
756 | * @ndlp: pointer to a node-list data structure. | 756 | * @ndlp: pointer to a node-list data structure. |
757 | * @retry: number of retries to the command IOCB. | 757 | * @retry: number of retries to the command IOCB. |
@@ -849,7 +849,7 @@ lpfc_issue_els_flogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, | |||
849 | } | 849 | } |
850 | 850 | ||
851 | /** | 851 | /** |
852 | * lpfc_els_abort_flogi: Abort all outstanding flogi iocbs. | 852 | * lpfc_els_abort_flogi - Abort all outstanding flogi iocbs |
853 | * @phba: pointer to lpfc hba data structure. | 853 | * @phba: pointer to lpfc hba data structure. |
854 | * | 854 | * |
855 | * This routine aborts all the outstanding Fabric Login (FLOGI) IOCBs | 855 | * This routine aborts all the outstanding Fabric Login (FLOGI) IOCBs |
@@ -898,7 +898,7 @@ lpfc_els_abort_flogi(struct lpfc_hba *phba) | |||
898 | } | 898 | } |
899 | 899 | ||
900 | /** | 900 | /** |
901 | * lpfc_initial_flogi: Issue an initial fabric login for a vport. | 901 | * lpfc_initial_flogi - Issue an initial fabric login for a vport |
902 | * @vport: pointer to a host virtual N_Port data structure. | 902 | * @vport: pointer to a host virtual N_Port data structure. |
903 | * | 903 | * |
904 | * This routine issues an initial Fabric Login (FLOGI) for the @vport | 904 | * This routine issues an initial Fabric Login (FLOGI) for the @vport |
@@ -949,7 +949,7 @@ lpfc_initial_flogi(struct lpfc_vport *vport) | |||
949 | } | 949 | } |
950 | 950 | ||
951 | /** | 951 | /** |
952 | * lpfc_initial_fdisc: Issue an initial fabric discovery for a vport. | 952 | * lpfc_initial_fdisc - Issue an initial fabric discovery for a vport |
953 | * @vport: pointer to a host virtual N_Port data structure. | 953 | * @vport: pointer to a host virtual N_Port data structure. |
954 | * | 954 | * |
955 | * This routine issues an initial Fabric Discover (FDISC) for the @vport | 955 | * This routine issues an initial Fabric Discover (FDISC) for the @vport |
@@ -998,7 +998,7 @@ lpfc_initial_fdisc(struct lpfc_vport *vport) | |||
998 | } | 998 | } |
999 | 999 | ||
1000 | /** | 1000 | /** |
1001 | * lpfc_more_plogi: Check and issue remaining plogis for a vport. | 1001 | * lpfc_more_plogi - Check and issue remaining plogis for a vport |
1002 | * @vport: pointer to a host virtual N_Port data structure. | 1002 | * @vport: pointer to a host virtual N_Port data structure. |
1003 | * | 1003 | * |
1004 | * This routine checks whether there are more remaining Port Logins | 1004 | * This routine checks whether there are more remaining Port Logins |
@@ -1031,7 +1031,7 @@ lpfc_more_plogi(struct lpfc_vport *vport) | |||
1031 | } | 1031 | } |
1032 | 1032 | ||
1033 | /** | 1033 | /** |
1034 | * lpfc_plogi_confirm_nport: Confirm pologi wwpn matches stored ndlp. | 1034 | * lpfc_plogi_confirm_nport - Confirm pologi wwpn matches stored ndlp |
1035 | * @phba: pointer to lpfc hba data structure. | 1035 | * @phba: pointer to lpfc hba data structure. |
1036 | * @prsp: pointer to response IOCB payload. | 1036 | * @prsp: pointer to response IOCB payload. |
1037 | * @ndlp: pointer to a node-list data structure. | 1037 | * @ndlp: pointer to a node-list data structure. |
@@ -1165,7 +1165,7 @@ lpfc_plogi_confirm_nport(struct lpfc_hba *phba, uint32_t *prsp, | |||
1165 | } | 1165 | } |
1166 | 1166 | ||
1167 | /** | 1167 | /** |
1168 | * lpfc_end_rscn: Check and handle more rscn for a vport. | 1168 | * lpfc_end_rscn - Check and handle more rscn for a vport |
1169 | * @vport: pointer to a host virtual N_Port data structure. | 1169 | * @vport: pointer to a host virtual N_Port data structure. |
1170 | * | 1170 | * |
1171 | * This routine checks whether more Registration State Change | 1171 | * This routine checks whether more Registration State Change |
@@ -1197,7 +1197,7 @@ lpfc_end_rscn(struct lpfc_vport *vport) | |||
1197 | } | 1197 | } |
1198 | 1198 | ||
1199 | /** | 1199 | /** |
1200 | * lpfc_cmpl_els_plogi: Completion callback function for plogi. | 1200 | * lpfc_cmpl_els_plogi - Completion callback function for plogi |
1201 | * @phba: pointer to lpfc hba data structure. | 1201 | * @phba: pointer to lpfc hba data structure. |
1202 | * @cmdiocb: pointer to lpfc command iocb data structure. | 1202 | * @cmdiocb: pointer to lpfc command iocb data structure. |
1203 | * @rspiocb: pointer to lpfc response iocb data structure. | 1203 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -1322,7 +1322,7 @@ out: | |||
1322 | } | 1322 | } |
1323 | 1323 | ||
1324 | /** | 1324 | /** |
1325 | * lpfc_issue_els_plogi: Issue an plogi iocb command for a vport. | 1325 | * lpfc_issue_els_plogi - Issue an plogi iocb command for a vport |
1326 | * @vport: pointer to a host virtual N_Port data structure. | 1326 | * @vport: pointer to a host virtual N_Port data structure. |
1327 | * @did: destination port identifier. | 1327 | * @did: destination port identifier. |
1328 | * @retry: number of retries to the command IOCB. | 1328 | * @retry: number of retries to the command IOCB. |
@@ -1401,7 +1401,7 @@ lpfc_issue_els_plogi(struct lpfc_vport *vport, uint32_t did, uint8_t retry) | |||
1401 | } | 1401 | } |
1402 | 1402 | ||
1403 | /** | 1403 | /** |
1404 | * lpfc_cmpl_els_prli: Completion callback function for prli. | 1404 | * lpfc_cmpl_els_prli - Completion callback function for prli |
1405 | * @phba: pointer to lpfc hba data structure. | 1405 | * @phba: pointer to lpfc hba data structure. |
1406 | * @cmdiocb: pointer to lpfc command iocb data structure. | 1406 | * @cmdiocb: pointer to lpfc command iocb data structure. |
1407 | * @rspiocb: pointer to lpfc response iocb data structure. | 1407 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -1472,7 +1472,7 @@ out: | |||
1472 | } | 1472 | } |
1473 | 1473 | ||
1474 | /** | 1474 | /** |
1475 | * lpfc_issue_els_prli: Issue a prli iocb command for a vport. | 1475 | * lpfc_issue_els_prli - Issue a prli iocb command for a vport |
1476 | * @vport: pointer to a host virtual N_Port data structure. | 1476 | * @vport: pointer to a host virtual N_Port data structure. |
1477 | * @ndlp: pointer to a node-list data structure. | 1477 | * @ndlp: pointer to a node-list data structure. |
1478 | * @retry: number of retries to the command IOCB. | 1478 | * @retry: number of retries to the command IOCB. |
@@ -1562,7 +1562,7 @@ lpfc_issue_els_prli(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, | |||
1562 | } | 1562 | } |
1563 | 1563 | ||
1564 | /** | 1564 | /** |
1565 | * lpfc_rscn_disc: Perform rscn discovery for a vport. | 1565 | * lpfc_rscn_disc - Perform rscn discovery for a vport |
1566 | * @vport: pointer to a host virtual N_Port data structure. | 1566 | * @vport: pointer to a host virtual N_Port data structure. |
1567 | * | 1567 | * |
1568 | * This routine performs Registration State Change Notification (RSCN) | 1568 | * This routine performs Registration State Change Notification (RSCN) |
@@ -1588,7 +1588,7 @@ lpfc_rscn_disc(struct lpfc_vport *vport) | |||
1588 | } | 1588 | } |
1589 | 1589 | ||
1590 | /** | 1590 | /** |
1591 | * lpfc_adisc_done: Complete the adisc phase of discovery. | 1591 | * lpfc_adisc_done - Complete the adisc phase of discovery |
1592 | * @vport: pointer to lpfc_vport hba data structure that finished all ADISCs. | 1592 | * @vport: pointer to lpfc_vport hba data structure that finished all ADISCs. |
1593 | * | 1593 | * |
1594 | * This function is called when the final ADISC is completed during discovery. | 1594 | * This function is called when the final ADISC is completed during discovery. |
@@ -1639,7 +1639,7 @@ lpfc_adisc_done(struct lpfc_vport *vport) | |||
1639 | } | 1639 | } |
1640 | 1640 | ||
1641 | /** | 1641 | /** |
1642 | * lpfc_more_adisc: Issue more adisc as needed. | 1642 | * lpfc_more_adisc - Issue more adisc as needed |
1643 | * @vport: pointer to a host virtual N_Port data structure. | 1643 | * @vport: pointer to a host virtual N_Port data structure. |
1644 | * | 1644 | * |
1645 | * This routine determines whether there are more ndlps on a @vport | 1645 | * This routine determines whether there are more ndlps on a @vport |
@@ -1672,7 +1672,7 @@ lpfc_more_adisc(struct lpfc_vport *vport) | |||
1672 | } | 1672 | } |
1673 | 1673 | ||
1674 | /** | 1674 | /** |
1675 | * lpfc_cmpl_els_adisc: Completion callback function for adisc. | 1675 | * lpfc_cmpl_els_adisc - Completion callback function for adisc |
1676 | * @phba: pointer to lpfc hba data structure. | 1676 | * @phba: pointer to lpfc hba data structure. |
1677 | * @cmdiocb: pointer to lpfc command iocb data structure. | 1677 | * @cmdiocb: pointer to lpfc command iocb data structure. |
1678 | * @rspiocb: pointer to lpfc response iocb data structure. | 1678 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -1760,7 +1760,7 @@ out: | |||
1760 | } | 1760 | } |
1761 | 1761 | ||
1762 | /** | 1762 | /** |
1763 | * lpfc_issue_els_adisc: Issue an address discover iocb to an node on a vport. | 1763 | * lpfc_issue_els_adisc - Issue an address discover iocb to an node on a vport |
1764 | * @vport: pointer to a virtual N_Port data structure. | 1764 | * @vport: pointer to a virtual N_Port data structure. |
1765 | * @ndlp: pointer to a node-list data structure. | 1765 | * @ndlp: pointer to a node-list data structure. |
1766 | * @retry: number of retries to the command IOCB. | 1766 | * @retry: number of retries to the command IOCB. |
@@ -1833,7 +1833,7 @@ lpfc_issue_els_adisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, | |||
1833 | } | 1833 | } |
1834 | 1834 | ||
1835 | /** | 1835 | /** |
1836 | * lpfc_cmpl_els_logo: Completion callback function for logo. | 1836 | * lpfc_cmpl_els_logo - Completion callback function for logo |
1837 | * @phba: pointer to lpfc hba data structure. | 1837 | * @phba: pointer to lpfc hba data structure. |
1838 | * @cmdiocb: pointer to lpfc command iocb data structure. | 1838 | * @cmdiocb: pointer to lpfc command iocb data structure. |
1839 | * @rspiocb: pointer to lpfc response iocb data structure. | 1839 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -1910,7 +1910,7 @@ out: | |||
1910 | } | 1910 | } |
1911 | 1911 | ||
1912 | /** | 1912 | /** |
1913 | * lpfc_issue_els_logo: Issue a logo to an node on a vport. | 1913 | * lpfc_issue_els_logo - Issue a logo to an node on a vport |
1914 | * @vport: pointer to a virtual N_Port data structure. | 1914 | * @vport: pointer to a virtual N_Port data structure. |
1915 | * @ndlp: pointer to a node-list data structure. | 1915 | * @ndlp: pointer to a node-list data structure. |
1916 | * @retry: number of retries to the command IOCB. | 1916 | * @retry: number of retries to the command IOCB. |
@@ -1991,7 +1991,7 @@ lpfc_issue_els_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, | |||
1991 | } | 1991 | } |
1992 | 1992 | ||
1993 | /** | 1993 | /** |
1994 | * lpfc_cmpl_els_cmd: Completion callback function for generic els command. | 1994 | * lpfc_cmpl_els_cmd - Completion callback function for generic els command |
1995 | * @phba: pointer to lpfc hba data structure. | 1995 | * @phba: pointer to lpfc hba data structure. |
1996 | * @cmdiocb: pointer to lpfc command iocb data structure. | 1996 | * @cmdiocb: pointer to lpfc command iocb data structure. |
1997 | * @rspiocb: pointer to lpfc response iocb data structure. | 1997 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -2031,7 +2031,7 @@ lpfc_cmpl_els_cmd(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
2031 | } | 2031 | } |
2032 | 2032 | ||
2033 | /** | 2033 | /** |
2034 | * lpfc_issue_els_scr: Issue a scr to an node on a vport. | 2034 | * lpfc_issue_els_scr - Issue a scr to an node on a vport |
2035 | * @vport: pointer to a host virtual N_Port data structure. | 2035 | * @vport: pointer to a host virtual N_Port data structure. |
2036 | * @nportid: N_Port identifier to the remote node. | 2036 | * @nportid: N_Port identifier to the remote node. |
2037 | * @retry: number of retries to the command IOCB. | 2037 | * @retry: number of retries to the command IOCB. |
@@ -2125,7 +2125,7 @@ lpfc_issue_els_scr(struct lpfc_vport *vport, uint32_t nportid, uint8_t retry) | |||
2125 | } | 2125 | } |
2126 | 2126 | ||
2127 | /** | 2127 | /** |
2128 | * lpfc_issue_els_farpr: Issue a farp to an node on a vport. | 2128 | * lpfc_issue_els_farpr - Issue a farp to an node on a vport |
2129 | * @vport: pointer to a host virtual N_Port data structure. | 2129 | * @vport: pointer to a host virtual N_Port data structure. |
2130 | * @nportid: N_Port identifier to the remote node. | 2130 | * @nportid: N_Port identifier to the remote node. |
2131 | * @retry: number of retries to the command IOCB. | 2131 | * @retry: number of retries to the command IOCB. |
@@ -2236,7 +2236,7 @@ lpfc_issue_els_farpr(struct lpfc_vport *vport, uint32_t nportid, uint8_t retry) | |||
2236 | } | 2236 | } |
2237 | 2237 | ||
2238 | /** | 2238 | /** |
2239 | * lpfc_cancel_retry_delay_tmo: Cancel the timer with delayed iocb-cmd retry. | 2239 | * lpfc_cancel_retry_delay_tmo - Cancel the timer with delayed iocb-cmd retry |
2240 | * @vport: pointer to a host virtual N_Port data structure. | 2240 | * @vport: pointer to a host virtual N_Port data structure. |
2241 | * @nlp: pointer to a node-list data structure. | 2241 | * @nlp: pointer to a node-list data structure. |
2242 | * | 2242 | * |
@@ -2291,7 +2291,7 @@ lpfc_cancel_retry_delay_tmo(struct lpfc_vport *vport, struct lpfc_nodelist *nlp) | |||
2291 | } | 2291 | } |
2292 | 2292 | ||
2293 | /** | 2293 | /** |
2294 | * lpfc_els_retry_delay: Timer function with a ndlp delayed function timer. | 2294 | * lpfc_els_retry_delay - Timer function with a ndlp delayed function timer |
2295 | * @ptr: holder for the pointer to the timer function associated data (ndlp). | 2295 | * @ptr: holder for the pointer to the timer function associated data (ndlp). |
2296 | * | 2296 | * |
2297 | * This routine is invoked by the ndlp delayed-function timer to check | 2297 | * This routine is invoked by the ndlp delayed-function timer to check |
@@ -2333,7 +2333,7 @@ lpfc_els_retry_delay(unsigned long ptr) | |||
2333 | } | 2333 | } |
2334 | 2334 | ||
2335 | /** | 2335 | /** |
2336 | * lpfc_els_retry_delay_handler: Work thread handler for ndlp delayed function. | 2336 | * lpfc_els_retry_delay_handler - Work thread handler for ndlp delayed function |
2337 | * @ndlp: pointer to a node-list data structure. | 2337 | * @ndlp: pointer to a node-list data structure. |
2338 | * | 2338 | * |
2339 | * This routine is the worker-thread handler for processing the @ndlp delayed | 2339 | * This routine is the worker-thread handler for processing the @ndlp delayed |
@@ -2404,7 +2404,7 @@ lpfc_els_retry_delay_handler(struct lpfc_nodelist *ndlp) | |||
2404 | } | 2404 | } |
2405 | 2405 | ||
2406 | /** | 2406 | /** |
2407 | * lpfc_els_retry: Make retry decision on an els command iocb. | 2407 | * lpfc_els_retry - Make retry decision on an els command iocb |
2408 | * @phba: pointer to lpfc hba data structure. | 2408 | * @phba: pointer to lpfc hba data structure. |
2409 | * @cmdiocb: pointer to lpfc command iocb data structure. | 2409 | * @cmdiocb: pointer to lpfc command iocb data structure. |
2410 | * @rspiocb: pointer to lpfc response iocb data structure. | 2410 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -2732,7 +2732,7 @@ lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
2732 | } | 2732 | } |
2733 | 2733 | ||
2734 | /** | 2734 | /** |
2735 | * lpfc_els_free_data: Free lpfc dma buffer and data structure with an iocb. | 2735 | * lpfc_els_free_data - Free lpfc dma buffer and data structure with an iocb |
2736 | * @phba: pointer to lpfc hba data structure. | 2736 | * @phba: pointer to lpfc hba data structure. |
2737 | * @buf_ptr1: pointer to the lpfc DMA buffer data structure. | 2737 | * @buf_ptr1: pointer to the lpfc DMA buffer data structure. |
2738 | * | 2738 | * |
@@ -2764,7 +2764,7 @@ lpfc_els_free_data(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr1) | |||
2764 | } | 2764 | } |
2765 | 2765 | ||
2766 | /** | 2766 | /** |
2767 | * lpfc_els_free_bpl: Free lpfc dma buffer and data structure with bpl. | 2767 | * lpfc_els_free_bpl - Free lpfc dma buffer and data structure with bpl |
2768 | * @phba: pointer to lpfc hba data structure. | 2768 | * @phba: pointer to lpfc hba data structure. |
2769 | * @buf_ptr: pointer to the lpfc dma buffer data structure. | 2769 | * @buf_ptr: pointer to the lpfc dma buffer data structure. |
2770 | * | 2770 | * |
@@ -2784,7 +2784,7 @@ lpfc_els_free_bpl(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr) | |||
2784 | } | 2784 | } |
2785 | 2785 | ||
2786 | /** | 2786 | /** |
2787 | * lpfc_els_free_iocb: Free a command iocb and its associated resources. | 2787 | * lpfc_els_free_iocb - Free a command iocb and its associated resources |
2788 | * @phba: pointer to lpfc hba data structure. | 2788 | * @phba: pointer to lpfc hba data structure. |
2789 | * @elsiocb: pointer to lpfc els command iocb data structure. | 2789 | * @elsiocb: pointer to lpfc els command iocb data structure. |
2790 | * | 2790 | * |
@@ -2877,7 +2877,7 @@ lpfc_els_free_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *elsiocb) | |||
2877 | } | 2877 | } |
2878 | 2878 | ||
2879 | /** | 2879 | /** |
2880 | * lpfc_cmpl_els_logo_acc: Completion callback function to logo acc response. | 2880 | * lpfc_cmpl_els_logo_acc - Completion callback function to logo acc response |
2881 | * @phba: pointer to lpfc hba data structure. | 2881 | * @phba: pointer to lpfc hba data structure. |
2882 | * @cmdiocb: pointer to lpfc command iocb data structure. | 2882 | * @cmdiocb: pointer to lpfc command iocb data structure. |
2883 | * @rspiocb: pointer to lpfc response iocb data structure. | 2883 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -2931,7 +2931,7 @@ lpfc_cmpl_els_logo_acc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
2931 | } | 2931 | } |
2932 | 2932 | ||
2933 | /** | 2933 | /** |
2934 | * lpfc_mbx_cmpl_dflt_rpi: Completion callbk func for unreg dflt rpi mbox cmd. | 2934 | * lpfc_mbx_cmpl_dflt_rpi - Completion callbk func for unreg dflt rpi mbox cmd |
2935 | * @phba: pointer to lpfc hba data structure. | 2935 | * @phba: pointer to lpfc hba data structure. |
2936 | * @pmb: pointer to the driver internal queue element for mailbox command. | 2936 | * @pmb: pointer to the driver internal queue element for mailbox command. |
2937 | * | 2937 | * |
@@ -2965,7 +2965,7 @@ lpfc_mbx_cmpl_dflt_rpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) | |||
2965 | } | 2965 | } |
2966 | 2966 | ||
2967 | /** | 2967 | /** |
2968 | * lpfc_cmpl_els_rsp: Completion callback function for els response iocb cmd. | 2968 | * lpfc_cmpl_els_rsp - Completion callback function for els response iocb cmd |
2969 | * @phba: pointer to lpfc hba data structure. | 2969 | * @phba: pointer to lpfc hba data structure. |
2970 | * @cmdiocb: pointer to lpfc command iocb data structure. | 2970 | * @cmdiocb: pointer to lpfc command iocb data structure. |
2971 | * @rspiocb: pointer to lpfc response iocb data structure. | 2971 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -3136,7 +3136,7 @@ out: | |||
3136 | } | 3136 | } |
3137 | 3137 | ||
3138 | /** | 3138 | /** |
3139 | * lpfc_els_rsp_acc: Prepare and issue an acc response iocb command. | 3139 | * lpfc_els_rsp_acc - Prepare and issue an acc response iocb command |
3140 | * @vport: pointer to a host virtual N_Port data structure. | 3140 | * @vport: pointer to a host virtual N_Port data structure. |
3141 | * @flag: the els command code to be accepted. | 3141 | * @flag: the els command code to be accepted. |
3142 | * @oldiocb: pointer to the original lpfc command iocb data structure. | 3142 | * @oldiocb: pointer to the original lpfc command iocb data structure. |
@@ -3275,7 +3275,7 @@ lpfc_els_rsp_acc(struct lpfc_vport *vport, uint32_t flag, | |||
3275 | } | 3275 | } |
3276 | 3276 | ||
3277 | /** | 3277 | /** |
3278 | * lpfc_els_rsp_reject: Propare and issue a rjt response iocb command. | 3278 | * lpfc_els_rsp_reject - Propare and issue a rjt response iocb command |
3279 | * @vport: pointer to a virtual N_Port data structure. | 3279 | * @vport: pointer to a virtual N_Port data structure. |
3280 | * @rejectError: | 3280 | * @rejectError: |
3281 | * @oldiocb: pointer to the original lpfc command iocb data structure. | 3281 | * @oldiocb: pointer to the original lpfc command iocb data structure. |
@@ -3356,7 +3356,7 @@ lpfc_els_rsp_reject(struct lpfc_vport *vport, uint32_t rejectError, | |||
3356 | } | 3356 | } |
3357 | 3357 | ||
3358 | /** | 3358 | /** |
3359 | * lpfc_els_rsp_adisc_acc: Prepare and issue acc response to adisc iocb cmd. | 3359 | * lpfc_els_rsp_adisc_acc - Prepare and issue acc response to adisc iocb cmd |
3360 | * @vport: pointer to a virtual N_Port data structure. | 3360 | * @vport: pointer to a virtual N_Port data structure. |
3361 | * @oldiocb: pointer to the original lpfc command iocb data structure. | 3361 | * @oldiocb: pointer to the original lpfc command iocb data structure. |
3362 | * @ndlp: pointer to a node-list data structure. | 3362 | * @ndlp: pointer to a node-list data structure. |
@@ -3431,7 +3431,7 @@ lpfc_els_rsp_adisc_acc(struct lpfc_vport *vport, struct lpfc_iocbq *oldiocb, | |||
3431 | } | 3431 | } |
3432 | 3432 | ||
3433 | /** | 3433 | /** |
3434 | * lpfc_els_rsp_prli_acc: Prepare and issue acc response to prli iocb cmd. | 3434 | * lpfc_els_rsp_prli_acc - Prepare and issue acc response to prli iocb cmd |
3435 | * @vport: pointer to a virtual N_Port data structure. | 3435 | * @vport: pointer to a virtual N_Port data structure. |
3436 | * @oldiocb: pointer to the original lpfc command iocb data structure. | 3436 | * @oldiocb: pointer to the original lpfc command iocb data structure. |
3437 | * @ndlp: pointer to a node-list data structure. | 3437 | * @ndlp: pointer to a node-list data structure. |
@@ -3529,7 +3529,7 @@ lpfc_els_rsp_prli_acc(struct lpfc_vport *vport, struct lpfc_iocbq *oldiocb, | |||
3529 | } | 3529 | } |
3530 | 3530 | ||
3531 | /** | 3531 | /** |
3532 | * lpfc_els_rsp_rnid_acc: Issue rnid acc response iocb command. | 3532 | * lpfc_els_rsp_rnid_acc - Issue rnid acc response iocb command |
3533 | * @vport: pointer to a virtual N_Port data structure. | 3533 | * @vport: pointer to a virtual N_Port data structure. |
3534 | * @format: rnid command format. | 3534 | * @format: rnid command format. |
3535 | * @oldiocb: pointer to the original lpfc command iocb data structure. | 3535 | * @oldiocb: pointer to the original lpfc command iocb data structure. |
@@ -3635,7 +3635,7 @@ lpfc_els_rsp_rnid_acc(struct lpfc_vport *vport, uint8_t format, | |||
3635 | } | 3635 | } |
3636 | 3636 | ||
3637 | /** | 3637 | /** |
3638 | * lpfc_els_disc_adisc: Issue remaining adisc iocbs to npr nodes of a vport. | 3638 | * lpfc_els_disc_adisc - Issue remaining adisc iocbs to npr nodes of a vport |
3639 | * @vport: pointer to a host virtual N_Port data structure. | 3639 | * @vport: pointer to a host virtual N_Port data structure. |
3640 | * | 3640 | * |
3641 | * This routine issues Address Discover (ADISC) ELS commands to those | 3641 | * This routine issues Address Discover (ADISC) ELS commands to those |
@@ -3693,7 +3693,7 @@ lpfc_els_disc_adisc(struct lpfc_vport *vport) | |||
3693 | } | 3693 | } |
3694 | 3694 | ||
3695 | /** | 3695 | /** |
3696 | * lpfc_els_disc_plogi: Issue plogi for all npr nodes of a vport before adisc. | 3696 | * lpfc_els_disc_plogi - Issue plogi for all npr nodes of a vport before adisc |
3697 | * @vport: pointer to a host virtual N_Port data structure. | 3697 | * @vport: pointer to a host virtual N_Port data structure. |
3698 | * | 3698 | * |
3699 | * This routine issues Port Login (PLOGI) ELS commands to all the N_Ports | 3699 | * This routine issues Port Login (PLOGI) ELS commands to all the N_Ports |
@@ -3752,7 +3752,7 @@ lpfc_els_disc_plogi(struct lpfc_vport *vport) | |||
3752 | } | 3752 | } |
3753 | 3753 | ||
3754 | /** | 3754 | /** |
3755 | * lpfc_els_flush_rscn: Clean up any rscn activities with a vport. | 3755 | * lpfc_els_flush_rscn - Clean up any rscn activities with a vport |
3756 | * @vport: pointer to a host virtual N_Port data structure. | 3756 | * @vport: pointer to a host virtual N_Port data structure. |
3757 | * | 3757 | * |
3758 | * This routine cleans up any Registration State Change Notification | 3758 | * This routine cleans up any Registration State Change Notification |
@@ -3791,7 +3791,7 @@ lpfc_els_flush_rscn(struct lpfc_vport *vport) | |||
3791 | } | 3791 | } |
3792 | 3792 | ||
3793 | /** | 3793 | /** |
3794 | * lpfc_rscn_payload_check: Check whether there is a pending rscn to a did. | 3794 | * lpfc_rscn_payload_check - Check whether there is a pending rscn to a did |
3795 | * @vport: pointer to a host virtual N_Port data structure. | 3795 | * @vport: pointer to a host virtual N_Port data structure. |
3796 | * @did: remote destination port identifier. | 3796 | * @did: remote destination port identifier. |
3797 | * | 3797 | * |
@@ -3866,7 +3866,7 @@ return_did_out: | |||
3866 | } | 3866 | } |
3867 | 3867 | ||
3868 | /** | 3868 | /** |
3869 | * lpfc_rscn_recovery_check: Send recovery event to vport nodes matching rscn | 3869 | * lpfc_rscn_recovery_check - Send recovery event to vport nodes matching rscn |
3870 | * @vport: pointer to a host virtual N_Port data structure. | 3870 | * @vport: pointer to a host virtual N_Port data structure. |
3871 | * | 3871 | * |
3872 | * This routine sends recovery (NLP_EVT_DEVICE_RECOVERY) event to the | 3872 | * This routine sends recovery (NLP_EVT_DEVICE_RECOVERY) event to the |
@@ -3895,7 +3895,7 @@ lpfc_rscn_recovery_check(struct lpfc_vport *vport) | |||
3895 | } | 3895 | } |
3896 | 3896 | ||
3897 | /** | 3897 | /** |
3898 | * lpfc_send_rscn_event: Send an RSCN event to management application. | 3898 | * lpfc_send_rscn_event - Send an RSCN event to management application |
3899 | * @vport: pointer to a host virtual N_Port data structure. | 3899 | * @vport: pointer to a host virtual N_Port data structure. |
3900 | * @cmdiocb: pointer to lpfc command iocb data structure. | 3900 | * @cmdiocb: pointer to lpfc command iocb data structure. |
3901 | * | 3901 | * |
@@ -3938,7 +3938,7 @@ lpfc_send_rscn_event(struct lpfc_vport *vport, | |||
3938 | } | 3938 | } |
3939 | 3939 | ||
3940 | /** | 3940 | /** |
3941 | * lpfc_els_rcv_rscn: Process an unsolicited rscn iocb. | 3941 | * lpfc_els_rcv_rscn - Process an unsolicited rscn iocb |
3942 | * @vport: pointer to a host virtual N_Port data structure. | 3942 | * @vport: pointer to a host virtual N_Port data structure. |
3943 | * @cmdiocb: pointer to lpfc command iocb data structure. | 3943 | * @cmdiocb: pointer to lpfc command iocb data structure. |
3944 | * @ndlp: pointer to a node-list data structure. | 3944 | * @ndlp: pointer to a node-list data structure. |
@@ -4134,7 +4134,7 @@ lpfc_els_rcv_rscn(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, | |||
4134 | } | 4134 | } |
4135 | 4135 | ||
4136 | /** | 4136 | /** |
4137 | * lpfc_els_handle_rscn: Handle rscn for a vport. | 4137 | * lpfc_els_handle_rscn - Handle rscn for a vport |
4138 | * @vport: pointer to a host virtual N_Port data structure. | 4138 | * @vport: pointer to a host virtual N_Port data structure. |
4139 | * | 4139 | * |
4140 | * This routine handles the Registration State Configuration Notification | 4140 | * This routine handles the Registration State Configuration Notification |
@@ -4222,7 +4222,7 @@ lpfc_els_handle_rscn(struct lpfc_vport *vport) | |||
4222 | } | 4222 | } |
4223 | 4223 | ||
4224 | /** | 4224 | /** |
4225 | * lpfc_els_rcv_flogi: Process an unsolicited flogi iocb. | 4225 | * lpfc_els_rcv_flogi - Process an unsolicited flogi iocb |
4226 | * @vport: pointer to a host virtual N_Port data structure. | 4226 | * @vport: pointer to a host virtual N_Port data structure. |
4227 | * @cmdiocb: pointer to lpfc command iocb data structure. | 4227 | * @cmdiocb: pointer to lpfc command iocb data structure. |
4228 | * @ndlp: pointer to a node-list data structure. | 4228 | * @ndlp: pointer to a node-list data structure. |
@@ -4336,7 +4336,7 @@ lpfc_els_rcv_flogi(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, | |||
4336 | } | 4336 | } |
4337 | 4337 | ||
4338 | /** | 4338 | /** |
4339 | * lpfc_els_rcv_rnid: Process an unsolicited rnid iocb. | 4339 | * lpfc_els_rcv_rnid - Process an unsolicited rnid iocb |
4340 | * @vport: pointer to a host virtual N_Port data structure. | 4340 | * @vport: pointer to a host virtual N_Port data structure. |
4341 | * @cmdiocb: pointer to lpfc command iocb data structure. | 4341 | * @cmdiocb: pointer to lpfc command iocb data structure. |
4342 | * @ndlp: pointer to a node-list data structure. | 4342 | * @ndlp: pointer to a node-list data structure. |
@@ -4391,7 +4391,7 @@ lpfc_els_rcv_rnid(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, | |||
4391 | } | 4391 | } |
4392 | 4392 | ||
4393 | /** | 4393 | /** |
4394 | * lpfc_els_rcv_lirr: Process an unsolicited lirr iocb. | 4394 | * lpfc_els_rcv_lirr - Process an unsolicited lirr iocb |
4395 | * @vport: pointer to a host virtual N_Port data structure. | 4395 | * @vport: pointer to a host virtual N_Port data structure. |
4396 | * @cmdiocb: pointer to lpfc command iocb data structure. | 4396 | * @cmdiocb: pointer to lpfc command iocb data structure. |
4397 | * @ndlp: pointer to a node-list data structure. | 4397 | * @ndlp: pointer to a node-list data structure. |
@@ -4419,7 +4419,7 @@ lpfc_els_rcv_lirr(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, | |||
4419 | } | 4419 | } |
4420 | 4420 | ||
4421 | /** | 4421 | /** |
4422 | * lpfc_els_rsp_rps_acc: Completion callbk func for MBX_READ_LNK_STAT mbox cmd. | 4422 | * lpfc_els_rsp_rps_acc - Completion callbk func for MBX_READ_LNK_STAT mbox cmd |
4423 | * @phba: pointer to lpfc hba data structure. | 4423 | * @phba: pointer to lpfc hba data structure. |
4424 | * @pmb: pointer to the driver internal queue element for mailbox command. | 4424 | * @pmb: pointer to the driver internal queue element for mailbox command. |
4425 | * | 4425 | * |
@@ -4513,7 +4513,7 @@ lpfc_els_rsp_rps_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) | |||
4513 | } | 4513 | } |
4514 | 4514 | ||
4515 | /** | 4515 | /** |
4516 | * lpfc_els_rcv_rps: Process an unsolicited rps iocb. | 4516 | * lpfc_els_rcv_rps - Process an unsolicited rps iocb |
4517 | * @vport: pointer to a host virtual N_Port data structure. | 4517 | * @vport: pointer to a host virtual N_Port data structure. |
4518 | * @cmdiocb: pointer to lpfc command iocb data structure. | 4518 | * @cmdiocb: pointer to lpfc command iocb data structure. |
4519 | * @ndlp: pointer to a node-list data structure. | 4519 | * @ndlp: pointer to a node-list data structure. |
@@ -4590,7 +4590,7 @@ reject_out: | |||
4590 | } | 4590 | } |
4591 | 4591 | ||
4592 | /** | 4592 | /** |
4593 | * lpfc_els_rsp_rpl_acc: Issue an accept rpl els command. | 4593 | * lpfc_els_rsp_rpl_acc - Issue an accept rpl els command |
4594 | * @vport: pointer to a host virtual N_Port data structure. | 4594 | * @vport: pointer to a host virtual N_Port data structure. |
4595 | * @cmdsize: size of the ELS command. | 4595 | * @cmdsize: size of the ELS command. |
4596 | * @oldiocb: pointer to the original lpfc command iocb data structure. | 4596 | * @oldiocb: pointer to the original lpfc command iocb data structure. |
@@ -4662,7 +4662,7 @@ lpfc_els_rsp_rpl_acc(struct lpfc_vport *vport, uint16_t cmdsize, | |||
4662 | } | 4662 | } |
4663 | 4663 | ||
4664 | /** | 4664 | /** |
4665 | * lpfc_els_rcv_rpl: Process an unsolicited rpl iocb. | 4665 | * lpfc_els_rcv_rpl - Process an unsolicited rpl iocb |
4666 | * @vport: pointer to a host virtual N_Port data structure. | 4666 | * @vport: pointer to a host virtual N_Port data structure. |
4667 | * @cmdiocb: pointer to lpfc command iocb data structure. | 4667 | * @cmdiocb: pointer to lpfc command iocb data structure. |
4668 | * @ndlp: pointer to a node-list data structure. | 4668 | * @ndlp: pointer to a node-list data structure. |
@@ -4721,7 +4721,7 @@ lpfc_els_rcv_rpl(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, | |||
4721 | } | 4721 | } |
4722 | 4722 | ||
4723 | /** | 4723 | /** |
4724 | * lpfc_els_rcv_farp: Process an unsolicited farp request els command. | 4724 | * lpfc_els_rcv_farp - Process an unsolicited farp request els command |
4725 | * @vport: pointer to a virtual N_Port data structure. | 4725 | * @vport: pointer to a virtual N_Port data structure. |
4726 | * @cmdiocb: pointer to lpfc command iocb data structure. | 4726 | * @cmdiocb: pointer to lpfc command iocb data structure. |
4727 | * @ndlp: pointer to a node-list data structure. | 4727 | * @ndlp: pointer to a node-list data structure. |
@@ -4804,7 +4804,7 @@ lpfc_els_rcv_farp(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, | |||
4804 | } | 4804 | } |
4805 | 4805 | ||
4806 | /** | 4806 | /** |
4807 | * lpfc_els_rcv_farpr: Process an unsolicited farp response iocb. | 4807 | * lpfc_els_rcv_farpr - Process an unsolicited farp response iocb |
4808 | * @vport: pointer to a host virtual N_Port data structure. | 4808 | * @vport: pointer to a host virtual N_Port data structure. |
4809 | * @cmdiocb: pointer to lpfc command iocb data structure. | 4809 | * @cmdiocb: pointer to lpfc command iocb data structure. |
4810 | * @ndlp: pointer to a node-list data structure. | 4810 | * @ndlp: pointer to a node-list data structure. |
@@ -4842,7 +4842,7 @@ lpfc_els_rcv_farpr(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, | |||
4842 | } | 4842 | } |
4843 | 4843 | ||
4844 | /** | 4844 | /** |
4845 | * lpfc_els_rcv_fan: Process an unsolicited fan iocb command. | 4845 | * lpfc_els_rcv_fan - Process an unsolicited fan iocb command |
4846 | * @vport: pointer to a host virtual N_Port data structure. | 4846 | * @vport: pointer to a host virtual N_Port data structure. |
4847 | * @cmdiocb: pointer to lpfc command iocb data structure. | 4847 | * @cmdiocb: pointer to lpfc command iocb data structure. |
4848 | * @fan_ndlp: pointer to a node-list data structure. | 4848 | * @fan_ndlp: pointer to a node-list data structure. |
@@ -4890,7 +4890,7 @@ lpfc_els_rcv_fan(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, | |||
4890 | } | 4890 | } |
4891 | 4891 | ||
4892 | /** | 4892 | /** |
4893 | * lpfc_els_timeout: Handler funciton to the els timer. | 4893 | * lpfc_els_timeout - Handler funciton to the els timer |
4894 | * @ptr: holder for the timer function associated data. | 4894 | * @ptr: holder for the timer function associated data. |
4895 | * | 4895 | * |
4896 | * This routine is invoked by the ELS timer after timeout. It posts the ELS | 4896 | * This routine is invoked by the ELS timer after timeout. It posts the ELS |
@@ -4919,7 +4919,7 @@ lpfc_els_timeout(unsigned long ptr) | |||
4919 | } | 4919 | } |
4920 | 4920 | ||
4921 | /** | 4921 | /** |
4922 | * lpfc_els_timeout_handler: Process an els timeout event. | 4922 | * lpfc_els_timeout_handler - Process an els timeout event |
4923 | * @vport: pointer to a virtual N_Port data structure. | 4923 | * @vport: pointer to a virtual N_Port data structure. |
4924 | * | 4924 | * |
4925 | * This routine is the actual handler function that processes an ELS timeout | 4925 | * This routine is the actual handler function that processes an ELS timeout |
@@ -4994,7 +4994,7 @@ lpfc_els_timeout_handler(struct lpfc_vport *vport) | |||
4994 | } | 4994 | } |
4995 | 4995 | ||
4996 | /** | 4996 | /** |
4997 | * lpfc_els_flush_cmd: Clean up the outstanding els commands to a vport. | 4997 | * lpfc_els_flush_cmd - Clean up the outstanding els commands to a vport |
4998 | * @vport: pointer to a host virtual N_Port data structure. | 4998 | * @vport: pointer to a host virtual N_Port data structure. |
4999 | * | 4999 | * |
5000 | * This routine is used to clean up all the outstanding ELS commands on a | 5000 | * This routine is used to clean up all the outstanding ELS commands on a |
@@ -5058,25 +5058,15 @@ lpfc_els_flush_cmd(struct lpfc_vport *vport) | |||
5058 | } | 5058 | } |
5059 | spin_unlock_irq(&phba->hbalock); | 5059 | spin_unlock_irq(&phba->hbalock); |
5060 | 5060 | ||
5061 | while (!list_empty(&completions)) { | 5061 | /* Cancell all the IOCBs from the completions list */ |
5062 | piocb = list_get_first(&completions, struct lpfc_iocbq, list); | 5062 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, |
5063 | cmd = &piocb->iocb; | 5063 | IOERR_SLI_ABORTED); |
5064 | list_del_init(&piocb->list); | ||
5065 | |||
5066 | if (!piocb->iocb_cmpl) | ||
5067 | lpfc_sli_release_iocbq(phba, piocb); | ||
5068 | else { | ||
5069 | cmd->ulpStatus = IOSTAT_LOCAL_REJECT; | ||
5070 | cmd->un.ulpWord[4] = IOERR_SLI_ABORTED; | ||
5071 | (piocb->iocb_cmpl) (phba, piocb, piocb); | ||
5072 | } | ||
5073 | } | ||
5074 | 5064 | ||
5075 | return; | 5065 | return; |
5076 | } | 5066 | } |
5077 | 5067 | ||
5078 | /** | 5068 | /** |
5079 | * lpfc_els_flush_all_cmd: Clean up all the outstanding els commands to a HBA. | 5069 | * lpfc_els_flush_all_cmd - Clean up all the outstanding els commands to a HBA |
5080 | * @phba: pointer to lpfc hba data structure. | 5070 | * @phba: pointer to lpfc hba data structure. |
5081 | * | 5071 | * |
5082 | * This routine is used to clean up all the outstanding ELS commands on a | 5072 | * This routine is used to clean up all the outstanding ELS commands on a |
@@ -5121,23 +5111,16 @@ lpfc_els_flush_all_cmd(struct lpfc_hba *phba) | |||
5121 | lpfc_sli_issue_abort_iotag(phba, pring, piocb); | 5111 | lpfc_sli_issue_abort_iotag(phba, pring, piocb); |
5122 | } | 5112 | } |
5123 | spin_unlock_irq(&phba->hbalock); | 5113 | spin_unlock_irq(&phba->hbalock); |
5124 | while (!list_empty(&completions)) { | 5114 | |
5125 | piocb = list_get_first(&completions, struct lpfc_iocbq, list); | 5115 | /* Cancel all the IOCBs from the completions list */ |
5126 | cmd = &piocb->iocb; | 5116 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, |
5127 | list_del_init(&piocb->list); | 5117 | IOERR_SLI_ABORTED); |
5128 | if (!piocb->iocb_cmpl) | 5118 | |
5129 | lpfc_sli_release_iocbq(phba, piocb); | ||
5130 | else { | ||
5131 | cmd->ulpStatus = IOSTAT_LOCAL_REJECT; | ||
5132 | cmd->un.ulpWord[4] = IOERR_SLI_ABORTED; | ||
5133 | (piocb->iocb_cmpl) (phba, piocb, piocb); | ||
5134 | } | ||
5135 | } | ||
5136 | return; | 5119 | return; |
5137 | } | 5120 | } |
5138 | 5121 | ||
5139 | /** | 5122 | /** |
5140 | * lpfc_send_els_failure_event: Posts an ELS command failure event. | 5123 | * lpfc_send_els_failure_event - Posts an ELS command failure event |
5141 | * @phba: Pointer to hba context object. | 5124 | * @phba: Pointer to hba context object. |
5142 | * @cmdiocbp: Pointer to command iocb which reported error. | 5125 | * @cmdiocbp: Pointer to command iocb which reported error. |
5143 | * @rspiocbp: Pointer to response iocb which reported error. | 5126 | * @rspiocbp: Pointer to response iocb which reported error. |
@@ -5204,7 +5187,7 @@ lpfc_send_els_failure_event(struct lpfc_hba *phba, | |||
5204 | } | 5187 | } |
5205 | 5188 | ||
5206 | /** | 5189 | /** |
5207 | * lpfc_send_els_event: Posts unsolicited els event. | 5190 | * lpfc_send_els_event - Posts unsolicited els event |
5208 | * @vport: Pointer to vport object. | 5191 | * @vport: Pointer to vport object. |
5209 | * @ndlp: Pointer FC node object. | 5192 | * @ndlp: Pointer FC node object. |
5210 | * @cmd: ELS command code. | 5193 | * @cmd: ELS command code. |
@@ -5284,7 +5267,7 @@ lpfc_send_els_event(struct lpfc_vport *vport, | |||
5284 | 5267 | ||
5285 | 5268 | ||
5286 | /** | 5269 | /** |
5287 | * lpfc_els_unsol_buffer: Process an unsolicited event data buffer. | 5270 | * lpfc_els_unsol_buffer - Process an unsolicited event data buffer |
5288 | * @phba: pointer to lpfc hba data structure. | 5271 | * @phba: pointer to lpfc hba data structure. |
5289 | * @pring: pointer to a SLI ring. | 5272 | * @pring: pointer to a SLI ring. |
5290 | * @vport: pointer to a host virtual N_Port data structure. | 5273 | * @vport: pointer to a host virtual N_Port data structure. |
@@ -5592,7 +5575,7 @@ dropit: | |||
5592 | } | 5575 | } |
5593 | 5576 | ||
5594 | /** | 5577 | /** |
5595 | * lpfc_find_vport_by_vpid: Find a vport on a HBA through vport identifier. | 5578 | * lpfc_find_vport_by_vpid - Find a vport on a HBA through vport identifier |
5596 | * @phba: pointer to lpfc hba data structure. | 5579 | * @phba: pointer to lpfc hba data structure. |
5597 | * @vpi: host virtual N_Port identifier. | 5580 | * @vpi: host virtual N_Port identifier. |
5598 | * | 5581 | * |
@@ -5622,7 +5605,7 @@ lpfc_find_vport_by_vpid(struct lpfc_hba *phba, uint16_t vpi) | |||
5622 | } | 5605 | } |
5623 | 5606 | ||
5624 | /** | 5607 | /** |
5625 | * lpfc_els_unsol_event: Process an unsolicited event from an els sli ring. | 5608 | * lpfc_els_unsol_event - Process an unsolicited event from an els sli ring |
5626 | * @phba: pointer to lpfc hba data structure. | 5609 | * @phba: pointer to lpfc hba data structure. |
5627 | * @pring: pointer to a SLI ring. | 5610 | * @pring: pointer to a SLI ring. |
5628 | * @elsiocb: pointer to lpfc els iocb data structure. | 5611 | * @elsiocb: pointer to lpfc els iocb data structure. |
@@ -5710,7 +5693,7 @@ lpfc_els_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, | |||
5710 | } | 5693 | } |
5711 | 5694 | ||
5712 | /** | 5695 | /** |
5713 | * lpfc_do_scr_ns_plogi: Issue a plogi to the name server for scr. | 5696 | * lpfc_do_scr_ns_plogi - Issue a plogi to the name server for scr |
5714 | * @phba: pointer to lpfc hba data structure. | 5697 | * @phba: pointer to lpfc hba data structure. |
5715 | * @vport: pointer to a virtual N_Port data structure. | 5698 | * @vport: pointer to a virtual N_Port data structure. |
5716 | * | 5699 | * |
@@ -5781,7 +5764,7 @@ lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport) | |||
5781 | } | 5764 | } |
5782 | 5765 | ||
5783 | /** | 5766 | /** |
5784 | * lpfc_cmpl_reg_new_vport: Completion callback function to register new vport. | 5767 | * lpfc_cmpl_reg_new_vport - Completion callback function to register new vport |
5785 | * @phba: pointer to lpfc hba data structure. | 5768 | * @phba: pointer to lpfc hba data structure. |
5786 | * @pmb: pointer to the driver internal queue element for mailbox command. | 5769 | * @pmb: pointer to the driver internal queue element for mailbox command. |
5787 | * | 5770 | * |
@@ -5850,7 +5833,7 @@ lpfc_cmpl_reg_new_vport(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) | |||
5850 | } | 5833 | } |
5851 | 5834 | ||
5852 | /** | 5835 | /** |
5853 | * lpfc_register_new_vport: Register a new vport with a HBA. | 5836 | * lpfc_register_new_vport - Register a new vport with a HBA |
5854 | * @phba: pointer to lpfc hba data structure. | 5837 | * @phba: pointer to lpfc hba data structure. |
5855 | * @vport: pointer to a host virtual N_Port data structure. | 5838 | * @vport: pointer to a host virtual N_Port data structure. |
5856 | * @ndlp: pointer to a node-list data structure. | 5839 | * @ndlp: pointer to a node-list data structure. |
@@ -5899,7 +5882,7 @@ mbox_err_exit: | |||
5899 | } | 5882 | } |
5900 | 5883 | ||
5901 | /** | 5884 | /** |
5902 | * lpfc_cmpl_els_fdisc: Completion function for fdisc iocb command. | 5885 | * lpfc_cmpl_els_fdisc - Completion function for fdisc iocb command |
5903 | * @phba: pointer to lpfc hba data structure. | 5886 | * @phba: pointer to lpfc hba data structure. |
5904 | * @cmdiocb: pointer to lpfc command iocb data structure. | 5887 | * @cmdiocb: pointer to lpfc command iocb data structure. |
5905 | * @rspiocb: pointer to lpfc response iocb data structure. | 5888 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -6007,7 +5990,7 @@ out: | |||
6007 | } | 5990 | } |
6008 | 5991 | ||
6009 | /** | 5992 | /** |
6010 | * lpfc_issue_els_fdisc: Issue a fdisc iocb command. | 5993 | * lpfc_issue_els_fdisc - Issue a fdisc iocb command |
6011 | * @vport: pointer to a virtual N_Port data structure. | 5994 | * @vport: pointer to a virtual N_Port data structure. |
6012 | * @ndlp: pointer to a node-list data structure. | 5995 | * @ndlp: pointer to a node-list data structure. |
6013 | * @retry: number of retries to the command IOCB. | 5996 | * @retry: number of retries to the command IOCB. |
@@ -6101,7 +6084,7 @@ lpfc_issue_els_fdisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, | |||
6101 | } | 6084 | } |
6102 | 6085 | ||
6103 | /** | 6086 | /** |
6104 | * lpfc_cmpl_els_npiv_logo: Completion function with vport logo. | 6087 | * lpfc_cmpl_els_npiv_logo - Completion function with vport logo |
6105 | * @phba: pointer to lpfc hba data structure. | 6088 | * @phba: pointer to lpfc hba data structure. |
6106 | * @cmdiocb: pointer to lpfc command iocb data structure. | 6089 | * @cmdiocb: pointer to lpfc command iocb data structure. |
6107 | * @rspiocb: pointer to lpfc response iocb data structure. | 6090 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -6136,7 +6119,7 @@ lpfc_cmpl_els_npiv_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
6136 | } | 6119 | } |
6137 | 6120 | ||
6138 | /** | 6121 | /** |
6139 | * lpfc_issue_els_npiv_logo: Issue a logo off a vport. | 6122 | * lpfc_issue_els_npiv_logo - Issue a logo off a vport |
6140 | * @vport: pointer to a virtual N_Port data structure. | 6123 | * @vport: pointer to a virtual N_Port data structure. |
6141 | * @ndlp: pointer to a node-list data structure. | 6124 | * @ndlp: pointer to a node-list data structure. |
6142 | * | 6125 | * |
@@ -6197,7 +6180,7 @@ lpfc_issue_els_npiv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) | |||
6197 | } | 6180 | } |
6198 | 6181 | ||
6199 | /** | 6182 | /** |
6200 | * lpfc_fabric_block_timeout: Handler function to the fabric block timer. | 6183 | * lpfc_fabric_block_timeout - Handler function to the fabric block timer |
6201 | * @ptr: holder for the timer function associated data. | 6184 | * @ptr: holder for the timer function associated data. |
6202 | * | 6185 | * |
6203 | * This routine is invoked by the fabric iocb block timer after | 6186 | * This routine is invoked by the fabric iocb block timer after |
@@ -6226,7 +6209,7 @@ lpfc_fabric_block_timeout(unsigned long ptr) | |||
6226 | } | 6209 | } |
6227 | 6210 | ||
6228 | /** | 6211 | /** |
6229 | * lpfc_resume_fabric_iocbs: Issue a fabric iocb from driver internal list. | 6212 | * lpfc_resume_fabric_iocbs - Issue a fabric iocb from driver internal list |
6230 | * @phba: pointer to lpfc hba data structure. | 6213 | * @phba: pointer to lpfc hba data structure. |
6231 | * | 6214 | * |
6232 | * This routine issues one fabric iocb from the driver internal list to | 6215 | * This routine issues one fabric iocb from the driver internal list to |
@@ -6285,7 +6268,7 @@ repeat: | |||
6285 | } | 6268 | } |
6286 | 6269 | ||
6287 | /** | 6270 | /** |
6288 | * lpfc_unblock_fabric_iocbs: Unblock issuing fabric iocb command. | 6271 | * lpfc_unblock_fabric_iocbs - Unblock issuing fabric iocb command |
6289 | * @phba: pointer to lpfc hba data structure. | 6272 | * @phba: pointer to lpfc hba data structure. |
6290 | * | 6273 | * |
6291 | * This routine unblocks the issuing fabric iocb command. The function | 6274 | * This routine unblocks the issuing fabric iocb command. The function |
@@ -6303,7 +6286,7 @@ lpfc_unblock_fabric_iocbs(struct lpfc_hba *phba) | |||
6303 | } | 6286 | } |
6304 | 6287 | ||
6305 | /** | 6288 | /** |
6306 | * lpfc_block_fabric_iocbs: Block issuing fabric iocb command. | 6289 | * lpfc_block_fabric_iocbs - Block issuing fabric iocb command |
6307 | * @phba: pointer to lpfc hba data structure. | 6290 | * @phba: pointer to lpfc hba data structure. |
6308 | * | 6291 | * |
6309 | * This routine blocks the issuing fabric iocb for a specified amount of | 6292 | * This routine blocks the issuing fabric iocb for a specified amount of |
@@ -6325,7 +6308,7 @@ lpfc_block_fabric_iocbs(struct lpfc_hba *phba) | |||
6325 | } | 6308 | } |
6326 | 6309 | ||
6327 | /** | 6310 | /** |
6328 | * lpfc_cmpl_fabric_iocb: Completion callback function for fabric iocb. | 6311 | * lpfc_cmpl_fabric_iocb - Completion callback function for fabric iocb |
6329 | * @phba: pointer to lpfc hba data structure. | 6312 | * @phba: pointer to lpfc hba data structure. |
6330 | * @cmdiocb: pointer to lpfc command iocb data structure. | 6313 | * @cmdiocb: pointer to lpfc command iocb data structure. |
6331 | * @rspiocb: pointer to lpfc response iocb data structure. | 6314 | * @rspiocb: pointer to lpfc response iocb data structure. |
@@ -6384,7 +6367,7 @@ lpfc_cmpl_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
6384 | } | 6367 | } |
6385 | 6368 | ||
6386 | /** | 6369 | /** |
6387 | * lpfc_issue_fabric_iocb: Issue a fabric iocb command. | 6370 | * lpfc_issue_fabric_iocb - Issue a fabric iocb command |
6388 | * @phba: pointer to lpfc hba data structure. | 6371 | * @phba: pointer to lpfc hba data structure. |
6389 | * @iocb: pointer to lpfc command iocb data structure. | 6372 | * @iocb: pointer to lpfc command iocb data structure. |
6390 | * | 6373 | * |
@@ -6453,7 +6436,7 @@ lpfc_issue_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *iocb) | |||
6453 | } | 6436 | } |
6454 | 6437 | ||
6455 | /** | 6438 | /** |
6456 | * lpfc_fabric_abort_vport: Abort a vport's iocbs from driver fabric iocb list. | 6439 | * lpfc_fabric_abort_vport - Abort a vport's iocbs from driver fabric iocb list |
6457 | * @vport: pointer to a virtual N_Port data structure. | 6440 | * @vport: pointer to a virtual N_Port data structure. |
6458 | * | 6441 | * |
6459 | * This routine aborts all the IOCBs associated with a @vport from the | 6442 | * This routine aborts all the IOCBs associated with a @vport from the |
@@ -6468,7 +6451,6 @@ static void lpfc_fabric_abort_vport(struct lpfc_vport *vport) | |||
6468 | LIST_HEAD(completions); | 6451 | LIST_HEAD(completions); |
6469 | struct lpfc_hba *phba = vport->phba; | 6452 | struct lpfc_hba *phba = vport->phba; |
6470 | struct lpfc_iocbq *tmp_iocb, *piocb; | 6453 | struct lpfc_iocbq *tmp_iocb, *piocb; |
6471 | IOCB_t *cmd; | ||
6472 | 6454 | ||
6473 | spin_lock_irq(&phba->hbalock); | 6455 | spin_lock_irq(&phba->hbalock); |
6474 | list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, | 6456 | list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, |
@@ -6481,19 +6463,13 @@ static void lpfc_fabric_abort_vport(struct lpfc_vport *vport) | |||
6481 | } | 6463 | } |
6482 | spin_unlock_irq(&phba->hbalock); | 6464 | spin_unlock_irq(&phba->hbalock); |
6483 | 6465 | ||
6484 | while (!list_empty(&completions)) { | 6466 | /* Cancel all the IOCBs from the completions list */ |
6485 | piocb = list_get_first(&completions, struct lpfc_iocbq, list); | 6467 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, |
6486 | list_del_init(&piocb->list); | 6468 | IOERR_SLI_ABORTED); |
6487 | |||
6488 | cmd = &piocb->iocb; | ||
6489 | cmd->ulpStatus = IOSTAT_LOCAL_REJECT; | ||
6490 | cmd->un.ulpWord[4] = IOERR_SLI_ABORTED; | ||
6491 | (piocb->iocb_cmpl) (phba, piocb, piocb); | ||
6492 | } | ||
6493 | } | 6469 | } |
6494 | 6470 | ||
6495 | /** | 6471 | /** |
6496 | * lpfc_fabric_abort_nport: Abort a ndlp's iocbs from driver fabric iocb list. | 6472 | * lpfc_fabric_abort_nport - Abort a ndlp's iocbs from driver fabric iocb list |
6497 | * @ndlp: pointer to a node-list data structure. | 6473 | * @ndlp: pointer to a node-list data structure. |
6498 | * | 6474 | * |
6499 | * This routine aborts all the IOCBs associated with an @ndlp from the | 6475 | * This routine aborts all the IOCBs associated with an @ndlp from the |
@@ -6506,10 +6482,9 @@ static void lpfc_fabric_abort_vport(struct lpfc_vport *vport) | |||
6506 | void lpfc_fabric_abort_nport(struct lpfc_nodelist *ndlp) | 6482 | void lpfc_fabric_abort_nport(struct lpfc_nodelist *ndlp) |
6507 | { | 6483 | { |
6508 | LIST_HEAD(completions); | 6484 | LIST_HEAD(completions); |
6509 | struct lpfc_hba *phba = ndlp->vport->phba; | 6485 | struct lpfc_hba *phba = ndlp->phba; |
6510 | struct lpfc_iocbq *tmp_iocb, *piocb; | 6486 | struct lpfc_iocbq *tmp_iocb, *piocb; |
6511 | struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; | 6487 | struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; |
6512 | IOCB_t *cmd; | ||
6513 | 6488 | ||
6514 | spin_lock_irq(&phba->hbalock); | 6489 | spin_lock_irq(&phba->hbalock); |
6515 | list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, | 6490 | list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, |
@@ -6521,19 +6496,13 @@ void lpfc_fabric_abort_nport(struct lpfc_nodelist *ndlp) | |||
6521 | } | 6496 | } |
6522 | spin_unlock_irq(&phba->hbalock); | 6497 | spin_unlock_irq(&phba->hbalock); |
6523 | 6498 | ||
6524 | while (!list_empty(&completions)) { | 6499 | /* Cancel all the IOCBs from the completions list */ |
6525 | piocb = list_get_first(&completions, struct lpfc_iocbq, list); | 6500 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, |
6526 | list_del_init(&piocb->list); | 6501 | IOERR_SLI_ABORTED); |
6527 | |||
6528 | cmd = &piocb->iocb; | ||
6529 | cmd->ulpStatus = IOSTAT_LOCAL_REJECT; | ||
6530 | cmd->un.ulpWord[4] = IOERR_SLI_ABORTED; | ||
6531 | (piocb->iocb_cmpl) (phba, piocb, piocb); | ||
6532 | } | ||
6533 | } | 6502 | } |
6534 | 6503 | ||
6535 | /** | 6504 | /** |
6536 | * lpfc_fabric_abort_hba: Abort all iocbs on driver fabric iocb list. | 6505 | * lpfc_fabric_abort_hba - Abort all iocbs on driver fabric iocb list |
6537 | * @phba: pointer to lpfc hba data structure. | 6506 | * @phba: pointer to lpfc hba data structure. |
6538 | * | 6507 | * |
6539 | * This routine aborts all the IOCBs currently on the driver internal | 6508 | * This routine aborts all the IOCBs currently on the driver internal |
@@ -6546,20 +6515,12 @@ void lpfc_fabric_abort_nport(struct lpfc_nodelist *ndlp) | |||
6546 | void lpfc_fabric_abort_hba(struct lpfc_hba *phba) | 6515 | void lpfc_fabric_abort_hba(struct lpfc_hba *phba) |
6547 | { | 6516 | { |
6548 | LIST_HEAD(completions); | 6517 | LIST_HEAD(completions); |
6549 | struct lpfc_iocbq *piocb; | ||
6550 | IOCB_t *cmd; | ||
6551 | 6518 | ||
6552 | spin_lock_irq(&phba->hbalock); | 6519 | spin_lock_irq(&phba->hbalock); |
6553 | list_splice_init(&phba->fabric_iocb_list, &completions); | 6520 | list_splice_init(&phba->fabric_iocb_list, &completions); |
6554 | spin_unlock_irq(&phba->hbalock); | 6521 | spin_unlock_irq(&phba->hbalock); |
6555 | 6522 | ||
6556 | while (!list_empty(&completions)) { | 6523 | /* Cancel all the IOCBs from the completions list */ |
6557 | piocb = list_get_first(&completions, struct lpfc_iocbq, list); | 6524 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, |
6558 | list_del_init(&piocb->list); | 6525 | IOERR_SLI_ABORTED); |
6559 | |||
6560 | cmd = &piocb->iocb; | ||
6561 | cmd->ulpStatus = IOSTAT_LOCAL_REJECT; | ||
6562 | cmd->un.ulpWord[4] = IOERR_SLI_ABORTED; | ||
6563 | (piocb->iocb_cmpl) (phba, piocb, piocb); | ||
6564 | } | ||
6565 | } | 6526 | } |