lpfc 8.3.39: Fixed bad book keeping in posting els sgls to port
Subsystems (2)
PATCH 14/22 lpfc 8.3.39: Fixed bad book keeping in posting els sgls to port
Fixed bad book keeping in posting els sgls to port
Signed-off-by James Smart <[email protected]>
---
lpfc_sli.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
drivers/scsi/lpfc/lpfc_sli.c +6 -7
@@ -5999,7 +5999,7 @@ lpfc_sli4_repost_els_sgl_list(struct lpfstruct lpfc_sglq *sglq_entry =NULL ;struct lpfc_sglq *sglq_entry_next =NULL ;struct lpfc_sglq *sglq_entry_first =NULL ; -int status, post_cnt =0 , num_posted =0 , block_cnt =0 ; +int status, total_cnt, post_cnt =0 , num_posted =0 , block_cnt =0 ;int last_xritag =NO_XRI ;LIST_HEAD (prep_sgl_list);LIST_HEAD (blck_sgl_list);
@@ -6011,6 +6011,7 @@ lpfc_sli4_repost_els_sgl_list(struct lpflist_splice_init (&phba->sli4_hba.lpfc_sgl_list, &allc_sgl_list);spin_unlock_irq (&phba->hbalock); + total_cnt = phba->sli4_hba.els_xri_cnt;list_for_each_entry_safe (sglq_entry, sglq_entry_next, &allc_sgl_list, list) {list_del_init (&sglq_entry->list);
@@ -6062,9 +6063,7 @@ lpfc_sli4_repost_els_sgl_list(struct lpf sglq_entry->sli4_xritag);list_add_tail (&sglq_entry->list, &free_sgl_list); -spin_lock_irq (&phba->hbalock); - phba->sli4_hba.els_xri_cnt--; -spin_unlock_irq (&phba->hbalock); + total_cnt--; } } }
@@ -6092,9 +6091,7 @@ lpfc_sli4_repost_els_sgl_list(struct lpf (sglq_entry_first->sli4_xritag + post_cnt - 1));list_splice_init (&blck_sgl_list, &free_sgl_list); -spin_lock_irq (&phba->hbalock); - phba->sli4_hba.els_xri_cnt -= post_cnt; -spin_unlock_irq (&phba->hbalock); + total_cnt -= post_cnt; }/* don't reset xirtag due to hole in xri block */
@@ -6104,6 +6101,8 @@ lpfc_sli4_repost_els_sgl_list(struct lpf/* reset els sgl post count for next round of posting */ post_cnt =0 ; } +/* update the number of XRIs posted for ELS */ + phba->sli4_hba.els_xri_cnt = total_cnt;/* free the els sgls failed to post */ lpfc_free_sgl_list (phba, &free_sgl_list);