Re: [PATCH 11/12] pm80xx : Introduce read and write length for IOCTL payload structure.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 24, 2019 at 5:41 AM Deepak Ukey <deepak.ukey@xxxxxxxxxxxxx> wrote:
>
> From: Viswas G <Viswas.G@xxxxxxxxxxxxx>
>
> Removed the common length and introduce read and write length for
> IOCTL payload structure.
>
> Signed-off-by: Deepak Ukey <deepak.ukey@xxxxxxxxxxxxx>
> Signed-off-by: Viswas G <Viswas.G@xxxxxxxxxxxxx>
> Signed-off-by: Vishakha Channapattan <vishakhavc@xxxxxxxxxx>
> Signed-off-by: Bhavesh Jashnani <bjashnani@xxxxxxxxxx>
> Signed-off-by: Radha Ramachandran <radha@xxxxxxxxxx>
> Signed-off-by: Akshat Jain <akshatzen@xxxxxxxxxx>
> Signed-off-by: Yu Zheng <yuuzheng@xxxxxxxxxx>
Looks fine to me.
Acked-by: Jack Wang <jinpu.wang@xxxxxxxxxxxxxxx>
> ---
>  drivers/scsi/pm8001/pm8001_ctl.c  |  6 +++---
>  drivers/scsi/pm8001/pm8001_hwi.c  | 22 +++++++++++-----------
>  drivers/scsi/pm8001/pm8001_init.c | 12 ++++++------
>  drivers/scsi/pm8001/pm8001_sas.h  |  3 ++-
>  4 files changed, 22 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/scsi/pm8001/pm8001_ctl.c b/drivers/scsi/pm8001/pm8001_ctl.c
> index 669c60a8d123..63bd2a384d2e 100644
> --- a/drivers/scsi/pm8001/pm8001_ctl.c
> +++ b/drivers/scsi/pm8001/pm8001_ctl.c
> @@ -486,7 +486,7 @@ static ssize_t pm8001_ctl_bios_version_show(struct device *cdev,
>         pm8001_ha->nvmd_completion = &completion;
>         payload.minor_function = 7;
>         payload.offset = 0;
> -       payload.length = 4096;
> +       payload.rd_length = 4096;
>         payload.func_specific = kzalloc(4096, GFP_KERNEL);
>         if (!payload.func_specific)
>                 return -ENOMEM;
> @@ -697,7 +697,7 @@ static int pm8001_set_nvmd(struct pm8001_hba_info *pm8001_ha)
>         payload = (struct pm8001_ioctl_payload *)ioctlbuffer;
>         memcpy((u8 *)&payload->func_specific, (u8 *)pm8001_ha->fw_image->data,
>                                 pm8001_ha->fw_image->size);
> -       payload->length = pm8001_ha->fw_image->size;
> +       payload->wr_length = pm8001_ha->fw_image->size;
>         payload->id = 0;
>         payload->minor_function = 0x1;
>         pm8001_ha->nvmd_completion = &completion;
> @@ -743,7 +743,7 @@ static int pm8001_update_flash(struct pm8001_hba_info *pm8001_ha)
>                                         IOCTL_BUF_SIZE);
>                 for (loopNumber = 0; loopNumber < loopcount; loopNumber++) {
>                         payload = (struct pm8001_ioctl_payload *)ioctlbuffer;
> -                       payload->length = 1024*16;
> +                       payload->wr_length = 1024*16;
>                         payload->id = 0;
>                         fwControl =
>                               (struct fw_control_info *)&payload->func_specific;
> diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
> index f9395d9fd530..16dc7a92ad68 100644
> --- a/drivers/scsi/pm8001/pm8001_hwi.c
> +++ b/drivers/scsi/pm8001/pm8001_hwi.c
> @@ -4841,7 +4841,7 @@ int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>         if (!fw_control_context)
>                 return -ENOMEM;
>         fw_control_context->usrAddr = (u8 *)ioctl_payload->func_specific;
> -       fw_control_context->len = ioctl_payload->length;
> +       fw_control_context->len = ioctl_payload->rd_length;
>         circularQ = &pm8001_ha->inbnd_q_tbl[0];
>         memset(&nvmd_req, 0, sizeof(nvmd_req));
>         rc = pm8001_tag_alloc(pm8001_ha, &tag);
> @@ -4862,7 +4862,7 @@ int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>
>                 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | twi_addr << 16 |
>                         twi_page_size << 8 | TWI_DEVICE);
> -               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
> +               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
>                 nvmd_req.resp_addr_hi =
>                     cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
>                 nvmd_req.resp_addr_lo =
> @@ -4871,7 +4871,7 @@ int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>         }
>         case C_SEEPROM: {
>                 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | C_SEEPROM);
> -               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
> +               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
>                 nvmd_req.resp_addr_hi =
>                     cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
>                 nvmd_req.resp_addr_lo =
> @@ -4880,7 +4880,7 @@ int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>         }
>         case VPD_FLASH: {
>                 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | VPD_FLASH);
> -               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
> +               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
>                 nvmd_req.resp_addr_hi =
>                     cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
>                 nvmd_req.resp_addr_lo =
> @@ -4889,7 +4889,7 @@ int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>         }
>         case EXPAN_ROM: {
>                 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | EXPAN_ROM);
> -               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
> +               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
>                 nvmd_req.resp_addr_hi =
>                     cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
>                 nvmd_req.resp_addr_lo =
> @@ -4898,7 +4898,7 @@ int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>         }
>         case IOP_RDUMP: {
>                 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | IOP_RDUMP);
> -               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
> +               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->rd_length);
>                 nvmd_req.vpd_offset = cpu_to_le32(ioctl_payload->offset);
>                 nvmd_req.resp_addr_hi =
>                 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
> @@ -4938,7 +4938,7 @@ int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>         circularQ = &pm8001_ha->inbnd_q_tbl[0];
>         memcpy(pm8001_ha->memoryMap.region[NVMD].virt_ptr,
>                 &ioctl_payload->func_specific,
> -               ioctl_payload->length);
> +               ioctl_payload->wr_length);
>         memset(&nvmd_req, 0, sizeof(nvmd_req));
>         rc = pm8001_tag_alloc(pm8001_ha, &tag);
>         if (rc) {
> @@ -4957,7 +4957,7 @@ int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>                 nvmd_req.reserved[0] = cpu_to_le32(0xFEDCBA98);
>                 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | twi_addr << 16 |
>                         twi_page_size << 8 | TWI_DEVICE);
> -               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
> +               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->wr_length);
>                 nvmd_req.resp_addr_hi =
>                     cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
>                 nvmd_req.resp_addr_lo =
> @@ -4966,7 +4966,7 @@ int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>         }
>         case C_SEEPROM:
>                 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | C_SEEPROM);
> -               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
> +               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->wr_length);
>                 nvmd_req.reserved[0] = cpu_to_le32(0xFEDCBA98);
>                 nvmd_req.resp_addr_hi =
>                     cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
> @@ -4975,7 +4975,7 @@ int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>                 break;
>         case VPD_FLASH:
>                 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | VPD_FLASH);
> -               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
> +               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->wr_length);
>                 nvmd_req.reserved[0] = cpu_to_le32(0xFEDCBA98);
>                 nvmd_req.resp_addr_hi =
>                     cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
> @@ -4984,7 +4984,7 @@ int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha,
>                 break;
>         case EXPAN_ROM:
>                 nvmd_req.len_ir_vpdd = cpu_to_le32(IPMode | EXPAN_ROM);
> -               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->length);
> +               nvmd_req.resp_len = cpu_to_le32(ioctl_payload->wr_length);
>                 nvmd_req.reserved[0] = cpu_to_le32(0xFEDCBA98);
>                 nvmd_req.resp_addr_hi =
>                     cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi);
> diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
> index b74282bc1ed0..6e037638656d 100644
> --- a/drivers/scsi/pm8001/pm8001_init.c
> +++ b/drivers/scsi/pm8001/pm8001_init.c
> @@ -643,22 +643,22 @@ static void pm8001_init_sas_add(struct pm8001_hba_info *pm8001_ha)
>         if (pm8001_ha->chip_id == chip_8001) {
>                 if (deviceid == 0x8081 || deviceid == 0x0042) {
>                         payload.minor_function = 4;
> -                       payload.length = 4096;
> +                       payload.rd_length = 4096;
>                 } else {
>                         payload.minor_function = 0;
> -                       payload.length = 128;
> +                       payload.rd_length = 128;
>                 }
>         } else if ((pm8001_ha->chip_id == chip_8070 ||
>                         pm8001_ha->chip_id == chip_8072) &&
>                         pm8001_ha->pdev->subsystem_vendor == PCI_VENDOR_ID_ATTO) {
>                 payload.minor_function = 4;
> -               payload.length = 4096;
> +               payload.rd_length = 4096;
>         } else {
>                 payload.minor_function = 1;
> -               payload.length = 4096;
> +               payload.rd_length = 4096;
>         }
>         payload.offset = 0;
> -       payload.func_specific = kzalloc(payload.length, GFP_KERNEL);
> +       payload.func_specific = kzalloc(payload.rd_length, GFP_KERNEL);
>         if (!payload.func_specific) {
>                 PM8001_INIT_DBG(pm8001_ha, pm8001_printk("mem alloc fail\n"));
>                 return;
> @@ -728,7 +728,7 @@ static int pm8001_get_phy_settings_info(struct pm8001_hba_info *pm8001_ha)
>         /* SAS ADDRESS read from flash / EEPROM */
>         payload.minor_function = 6;
>         payload.offset = 0;
> -       payload.length = 4096;
> +       payload.rd_length = 4096;
>         payload.func_specific = kzalloc(4096, GFP_KERNEL);
>         if (!payload.func_specific)
>                 return -ENOMEM;
> diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
> index 47607a25f819..917a17f4d595 100644
> --- a/drivers/scsi/pm8001/pm8001_sas.h
> +++ b/drivers/scsi/pm8001/pm8001_sas.h
> @@ -164,10 +164,11 @@ struct pm8001_ioctl_payload {
>         u32     signature;
>         u16     major_function;
>         u16     minor_function;
> -       u16     length;
>         u16     status;
>         u16     offset;
>         u16     id;
> +       u32     wr_length;
> +       u32     rd_length;
>         u8      *func_specific;
>  };
>
> --
> 2.16.3
>



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux