| From 798b3863a9ce9a76d11d86ad605ee01ac6e242bf Mon Sep 17 00:00:00 2001 |
| From: James Smart <jsmart2021@gmail.com> |
| Date: Sun, 12 Feb 2017 13:52:25 -0800 |
| Subject: [PATCH] scsi: lpfc: Correct WQ creation for pagesize |
| |
| 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/scsi/lpfc/lpfc_hw4.h b/drivers/scsi/lpfc/lpfc_hw4.h |
| index ee8022737591..55faa94637a9 100644 |
| --- a/drivers/scsi/lpfc/lpfc_hw4.h |
| +++ b/drivers/scsi/lpfc/lpfc_hw4.h |
| @@ -1185,6 +1185,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 |
| @@ -1256,6 +1257,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 |
| diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c |
| index 8214ebae9d50..b4593d926f69 100644 |
| --- a/drivers/scsi/lpfc/lpfc_sli.c |
| +++ b/drivers/scsi/lpfc/lpfc_sli.c |
| @@ -13678,7 +13678,7 @@ lpfc_wq_create(struct lpfc_hba *phba, struct lpfc_queue *wq, |
| 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; |
| } |
| @@ -13704,8 +13704,9 @@ lpfc_wq_create(struct lpfc_hba *phba, struct lpfc_queue *wq, |
| 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: |
| @@ -13891,7 +13892,7 @@ lpfc_rq_create(struct lpfc_hba *phba, struct lpfc_queue *hrq, |
| 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: |
| -- |
| 2.12.0 |
| |