| From 8ea73db486cda442f0671f4bc9c03a76be398a28 Mon Sep 17 00:00:00 2001 |
| From: James Smart <jsmart2021@gmail.com> |
| Date: Sun, 12 Feb 2017 13:52:25 -0800 |
| Subject: scsi: lpfc: Correct WQ creation for pagesize |
| |
| From: James Smart <jsmart2021@gmail.com> |
| |
| commit 8ea73db486cda442f0671f4bc9c03a76be398a28 upstream. |
| |
| Correct WQ creation for pagesize |
| |
| The driver was calculating the adapter command pagesize indicator from |
| the system pagesize. However, the buffers the driver allocates are only |
| one size (SLI4_PAGE_SIZE), so no calculation was necessary. |
| |
| Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> |
| Signed-off-by: James Smart <james.smart@broadcom.com> |
| Reviewed-by: Hannes Reinecke <hare@suse.com> |
| Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Cc: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/scsi/lpfc/lpfc_hw4.h | 2 ++ |
| drivers/scsi/lpfc/lpfc_sli.c | 9 +++++---- |
| 2 files changed, 7 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/scsi/lpfc/lpfc_hw4.h |
| +++ b/drivers/scsi/lpfc/lpfc_hw4.h |
| @@ -1186,6 +1186,7 @@ struct lpfc_mbx_wq_create { |
| #define lpfc_mbx_wq_create_page_size_SHIFT 0 |
| #define lpfc_mbx_wq_create_page_size_MASK 0x000000FF |
| #define lpfc_mbx_wq_create_page_size_WORD word1 |
| +#define LPFC_WQ_PAGE_SIZE_4096 0x1 |
| #define lpfc_mbx_wq_create_wqe_size_SHIFT 8 |
| #define lpfc_mbx_wq_create_wqe_size_MASK 0x0000000F |
| #define lpfc_mbx_wq_create_wqe_size_WORD word1 |
| @@ -1257,6 +1258,7 @@ struct rq_context { |
| #define lpfc_rq_context_page_size_SHIFT 0 /* Version 1 Only */ |
| #define lpfc_rq_context_page_size_MASK 0x000000FF |
| #define lpfc_rq_context_page_size_WORD word0 |
| +#define LPFC_RQ_PAGE_SIZE_4096 0x1 |
| uint32_t reserved1; |
| uint32_t word2; |
| #define lpfc_rq_context_cq_id_SHIFT 16 |
| --- a/drivers/scsi/lpfc/lpfc_sli.c |
| +++ b/drivers/scsi/lpfc/lpfc_sli.c |
| @@ -13718,7 +13718,7 @@ lpfc_wq_create(struct lpfc_hba *phba, st |
| LPFC_WQ_WQE_SIZE_128); |
| bf_set(lpfc_mbx_wq_create_page_size, |
| &wq_create->u.request_1, |
| - (PAGE_SIZE/SLI4_PAGE_SIZE)); |
| + LPFC_WQ_PAGE_SIZE_4096); |
| page = wq_create->u.request_1.page; |
| break; |
| } |
| @@ -13744,8 +13744,9 @@ lpfc_wq_create(struct lpfc_hba *phba, st |
| LPFC_WQ_WQE_SIZE_128); |
| break; |
| } |
| - bf_set(lpfc_mbx_wq_create_page_size, &wq_create->u.request_1, |
| - (PAGE_SIZE/SLI4_PAGE_SIZE)); |
| + bf_set(lpfc_mbx_wq_create_page_size, |
| + &wq_create->u.request_1, |
| + LPFC_WQ_PAGE_SIZE_4096); |
| page = wq_create->u.request_1.page; |
| break; |
| default: |
| @@ -13931,7 +13932,7 @@ lpfc_rq_create(struct lpfc_hba *phba, st |
| LPFC_RQE_SIZE_8); |
| bf_set(lpfc_rq_context_page_size, |
| &rq_create->u.request.context, |
| - (PAGE_SIZE/SLI4_PAGE_SIZE)); |
| + LPFC_RQ_PAGE_SIZE_4096); |
| } else { |
| switch (hrq->entry_count) { |
| default: |