diff mbox series

[v2,06/13] qla2xxx: Fix memory size truncation

Message ID 20200902072548.11491-7-njavali@marvell.com (mailing list archive)
State Superseded
Headers show
Series qla2xxx misc features and bug fixes | expand

Commit Message

Nilesh Javali Sept. 2, 2020, 7:25 a.m. UTC
From: Quinn Tran <qutran@marvell.com>

Memory size calculation for Extended Login use in hardware
offload was truncated when the setting was set with higher
value.

Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
---
 drivers/scsi/qla2xxx/qla_def.h | 2 +-
 drivers/scsi/qla2xxx/qla_mbx.c | 7 ++++---
 drivers/scsi/qla2xxx/qla_os.c  | 5 +++--
 3 files changed, 8 insertions(+), 6 deletions(-)

Comments

Himanshu Madhani Sept. 2, 2020, 3:46 p.m. UTC | #1
> On Sep 2, 2020, at 2:25 AM, Nilesh Javali <njavali@marvell.com> wrote:
> 
> From: Quinn Tran <qutran@marvell.com>
> 
> Memory size calculation for Extended Login use in hardware
> offload was truncated when the setting was set with higher
> value.
> 

I see code change makes sense but commit message does not. 

Does following makes sense? 

Memory size calculations for Extended Login used in hardware Offload got truncated.
Fix this by changing definition of exlogin_size to use uint32_t.

> Signed-off-by: Quinn Tran <qutran@marvell.com>
> Signed-off-by: Nilesh Javali <njavali@marvell.com>
> ---
> drivers/scsi/qla2xxx/qla_def.h | 2 +-
> drivers/scsi/qla2xxx/qla_mbx.c | 7 ++++---
> drivers/scsi/qla2xxx/qla_os.c  | 5 +++--
> 3 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
> index 074d8753cfc3..ad4a0ba7203c 100644
> --- a/drivers/scsi/qla2xxx/qla_def.h
> +++ b/drivers/scsi/qla2xxx/qla_def.h
> @@ -4216,7 +4216,7 @@ struct qla_hw_data {
> 	/* Extended Logins  */
> 	void		*exlogin_buf;
> 	dma_addr_t	exlogin_buf_dma;
> -	int		exlogin_size;
> +	uint32_t	exlogin_size;
> 
> #define ENABLE_EXCHANGE_OFFLD	BIT_2
> 
> diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
> index 989327868dd8..ab7dbbc99c22 100644
> --- a/drivers/scsi/qla2xxx/qla_mbx.c
> +++ b/drivers/scsi/qla2xxx/qla_mbx.c
> @@ -845,7 +845,7 @@ qla_get_exlogin_status(scsi_qla_host_t *vha, uint16_t *buf_sz,
>  * Context:
>  *	Kernel context.
>  */
> -#define CONFIG_XLOGINS_MEM	0x3
> +#define CONFIG_XLOGINS_MEM	0x9
> int
> qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr)
> {
> @@ -872,8 +872,9 @@ qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr)
> 	mcp->flags = 0;
> 	rval = qla2x00_mailbox_command(vha, mcp);
> 	if (rval != QLA_SUCCESS) {
> -		/*EMPTY*/
> -		ql_dbg(ql_dbg_mbx, vha, 0x111b, "Failed=%x.\n", rval);
> +		ql_dbg(ql_dbg_mbx, vha, 0x111b,
> +		       "EXlogin Failed=%x. MB0=%x MB11=%x\n",
> +		       rval, mcp->mb[0], mcp->mb[11]);
> 	} else {
> 		ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x118c,
> 		    "Done %s.\n", __func__);
> diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
> index 74e6a04850c0..31bfc0c088b7 100644
> --- a/drivers/scsi/qla2xxx/qla_os.c
> +++ b/drivers/scsi/qla2xxx/qla_os.c
> @@ -4379,11 +4379,12 @@ int
> qla2x00_set_exlogins_buffer(scsi_qla_host_t *vha)
> {
> 	int rval;
> -	uint16_t	size, max_cnt, temp;
> +	uint16_t	size, max_cnt;
> +	uint32_t temp;
> 	struct qla_hw_data *ha = vha->hw;
> 
> 	/* Return if we don't need to alloacate any extended logins */
> -	if (!ql2xexlogins)
> +	if (ql2xexlogins <= MAX_FIBRE_DEVICES_2400)
> 		return QLA_SUCCESS;
> 
> 	if (!IS_EXLOGIN_OFFLD_CAPABLE(ha))
> -- 
> 2.19.0.rc0
> 

Small nit for commit message, Otherwise 

Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>

--
Himanshu Madhani	 Oracle Linux Engineering
diff mbox series

Patch

diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 074d8753cfc3..ad4a0ba7203c 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -4216,7 +4216,7 @@  struct qla_hw_data {
 	/* Extended Logins  */
 	void		*exlogin_buf;
 	dma_addr_t	exlogin_buf_dma;
-	int		exlogin_size;
+	uint32_t	exlogin_size;
 
 #define ENABLE_EXCHANGE_OFFLD	BIT_2
 
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 989327868dd8..ab7dbbc99c22 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -845,7 +845,7 @@  qla_get_exlogin_status(scsi_qla_host_t *vha, uint16_t *buf_sz,
  * Context:
  *	Kernel context.
  */
-#define CONFIG_XLOGINS_MEM	0x3
+#define CONFIG_XLOGINS_MEM	0x9
 int
 qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr)
 {
@@ -872,8 +872,9 @@  qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr)
 	mcp->flags = 0;
 	rval = qla2x00_mailbox_command(vha, mcp);
 	if (rval != QLA_SUCCESS) {
-		/*EMPTY*/
-		ql_dbg(ql_dbg_mbx, vha, 0x111b, "Failed=%x.\n", rval);
+		ql_dbg(ql_dbg_mbx, vha, 0x111b,
+		       "EXlogin Failed=%x. MB0=%x MB11=%x\n",
+		       rval, mcp->mb[0], mcp->mb[11]);
 	} else {
 		ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x118c,
 		    "Done %s.\n", __func__);
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 74e6a04850c0..31bfc0c088b7 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -4379,11 +4379,12 @@  int
 qla2x00_set_exlogins_buffer(scsi_qla_host_t *vha)
 {
 	int rval;
-	uint16_t	size, max_cnt, temp;
+	uint16_t	size, max_cnt;
+	uint32_t temp;
 	struct qla_hw_data *ha = vha->hw;
 
 	/* Return if we don't need to alloacate any extended logins */
-	if (!ql2xexlogins)
+	if (ql2xexlogins <= MAX_FIBRE_DEVICES_2400)
 		return QLA_SUCCESS;
 
 	if (!IS_EXLOGIN_OFFLD_CAPABLE(ha))