[PATCH v4] mwifiex: Reduce endian conversion for REG Host Commands
For multiple REG Host Commands (e.g HostCmd_CMD_802_11_EEPROM_ACCESS, HostCmd_CMD_MAC_REG_ACCESS etc.) "cpu_to_leX"-converted values are saved to driver. So, "leX_to_cpu" conversion is required too many times afterwards in driver. This patch reduces the endian: conversion without saving "cpu_to_leX" converted values in driver. This will convert endianness in prepare command and command response path. Signed-off-by: Prasun Maiti --- Changes in v3: - Fixed the following warnings: * sta_ioctl.c:1339:34: warning: comparison of distinct pointer types lacks a cast [enabled by default] * sta_cmdresp.c:821:6: warning: comparison of distinct pointer types lacks a cast [enabled by default] Changes in v4: - Fixed the sparse compilation warnings: * warning: cast from restricted __le32 * warning: cast from restricted __le16 drivers/net/wireless/marvell/mwifiex/ioctl.h | 10 +++--- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 28 +++- drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 37 +++--- drivers/net/wireless/marvell/mwifiex/sta_ioctl.c | 21 ++-- 4 files changed, 46 insertions(+), 50 deletions(-) diff --git a/drivers/net/wireless/marvell/mwifiex/ioctl.h b/drivers/net/wireless/marvell/mwifiex/ioctl.h index a5a48c1..4ce9330 100644 --- a/drivers/net/wireless/marvell/mwifiex/ioctl.h +++ b/drivers/net/wireless/marvell/mwifiex/ioctl.h @@ -341,16 +341,16 @@ enum { }; struct mwifiex_ds_reg_rw { - __le32 type; - __le32 offset; - __le32 value; + u32 type; + u32 offset; + u32 value; }; #define MAX_EEPROM_DATA 256 struct mwifiex_ds_read_eeprom { - __le16 offset; - __le16 byte_count; + u16 offset; + u16 byte_count; u8 value[MAX_EEPROM_DATA]; }; diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index e436574..9df02ba 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -1130,9 +1130,8 @@ static int mwifiex_cmd_reg_access(struct host_cmd_ds_command *cmd, cmd->size = cpu_to_le16(sizeof(*mac_reg) + S_DS_GEN); mac_reg = &cmd->params.mac_reg; mac_reg->action = cpu_to_le16(cmd_action); - mac_reg->offset = - cpu_to_le16((u16) le32_to_cpu(reg_rw->offset)); - mac_reg->value = reg_rw->value; + mac_reg->offset = cpu_to_le16((u16) reg_rw->offset); + mac_reg->value = cpu_to_le32(reg_rw->value); break; } case HostCmd_CMD_BBP_REG_ACCESS: @@ -1142,9 +1141,8 @@ static int mwifiex_cmd_reg_access(struct host_cmd_ds_command *cmd, cmd->size = cpu_to_le16(sizeof(*bbp_reg) + S_DS_GEN); bbp_reg = &cmd->params.bbp_reg; bbp_reg->action = cpu_to_le16(cmd_action); - bbp_reg->offset = - cpu_to_le16((u16) le32_to_cpu(reg_rw->offset)); - bbp_reg->value = (u8) le32_to_cpu(reg_rw->value); + bbp_reg->offset = cpu_to_le16((u16) reg_rw->offset); + bbp_reg->value = (u8) reg_rw->value; break; } case HostCmd_CMD_RF_REG_ACCESS: @@ -1154,8 +1152,8 @@ static int mwifiex_cmd_reg_access(struct host_cmd_ds_command *cmd, cmd->size = cpu_to_le16(sizeof(*rf_reg) + S_DS_GEN); rf_reg = &cmd->params.rf_reg; rf_reg->action = cpu_to_le16(cmd_action); - rf_reg->offset = cpu_to_le16((u16) le32_to_cpu(reg_rw->offset)); - rf_reg->value = (u8) le32_to_cpu(reg_rw->value); + rf_reg->offset = cpu_to_le16((u16) reg_rw->offset); + rf_reg->value = (u8) reg_rw->value; break; } case HostCmd_CMD_PMIC_REG_ACCESS: @@ -1165,9 +1163,8 @@ static int mwifiex_cmd_reg_access(struct host_cmd_ds_command *cmd, cmd->size = cpu_to_le16(sizeof(*pmic_reg) + S_DS_GEN); pmic_reg = &cmd->params.pmic_reg; pmic_reg->action = cpu_to_le16(cmd_action); - pmic_reg->offset = - cpu_to_le16((u16) le32_to_cpu(reg_rw->offset)); - pmic_reg->value = (u8) le32_to_cpu(reg_rw->value); + pmic_reg->offset = cpu_to_le16((u16) reg_rw->offset); + pmic_reg->value = (u8) reg_rw->value; break; } case HostCmd_CMD_CAU_REG_ACCESS: @@ -1177,9 +1174,8 @@ static int mwifiex_cmd_reg_access(struct host_cmd_ds_command *cmd, cmd->size = cpu_to_le16(sizeof(*cau_reg) + S_DS_GEN); cau_reg = &cmd->params.rf_reg; cau_reg->action = cpu_to_le16(cmd_action); - cau_reg->offset = - cpu_to_le16((u16) le32_to_cpu(reg_rw->offset)); -
RE: [PATCH v4] mwifiex: Reduce endian conversion for REG Host Commands
Hi Kalle, > From: Prasun Maiti [mailto:prasunmait...@gmail.com] > Sent: Monday, June 27, 2016 3:43 PM > To: Amitkumar Karwar > Cc: Nishant Sarmukadam; Linux Wireless; Linux Next; Linux Kernel; Kalle > Valo > Subject: [PATCH v4] mwifiex: Reduce endian conversion for REG Host > Commands > > For multiple REG Host Commands (e.g HostCmd_CMD_802_11_EEPROM_ACCESS, > HostCmd_CMD_MAC_REG_ACCESS etc.) "cpu_to_leX"-converted values are saved > to driver. So, "leX_to_cpu" conversion is required too many times > afterwards in driver. > > This patch reduces the endian: conversion without saving "cpu_to_leX" > converted values in driver. This will convert endianness in prepare > command and command response path. > > Signed-off-by: Prasun Maiti > --- > Changes in v3: > - Fixed the following warnings: > * sta_ioctl.c:1339:34: warning: comparison of distinct pointer > types lacks a cast [enabled by default] > * sta_cmdresp.c:821:6: warning: comparison of distinct pointer > types lacks a cast [enabled by default] > > Changes in v4: > - Fixed the sparse compilation warnings: > * warning: cast from restricted __le32 > * warning: cast from restricted __le16 > > drivers/net/wireless/marvell/mwifiex/ioctl.h | 10 +++--- > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 28 +++ > - > drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 37 +++ > --- > drivers/net/wireless/marvell/mwifiex/sta_ioctl.c | 21 ++-- > 4 files changed, 46 insertions(+), 50 deletions(-) > > diff --git a/drivers/net/wireless/marvell/mwifiex/ioctl.h > b/drivers/net/wireless/marvell/mwifiex/ioctl.h > index a5a48c1..4ce9330 100644 > --- a/drivers/net/wireless/marvell/mwifiex/ioctl.h > +++ b/drivers/net/wireless/marvell/mwifiex/ioctl.h > @@ -341,16 +341,16 @@ enum { > }; > > struct mwifiex_ds_reg_rw { > - __le32 type; > - __le32 offset; > - __le32 value; > + u32 type; > + u32 offset; > + u32 value; > }; > > #define MAX_EEPROM_DATA 256 > > struct mwifiex_ds_read_eeprom { > - __le16 offset; > - __le16 byte_count; > + u16 offset; > + u16 byte_count; > u8 value[MAX_EEPROM_DATA]; > }; > > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index e436574..9df02ba 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -1130,9 +1130,8 @@ static int mwifiex_cmd_reg_access(struct > host_cmd_ds_command *cmd, > cmd->size = cpu_to_le16(sizeof(*mac_reg) + S_DS_GEN); > mac_reg = &cmd->params.mac_reg; > mac_reg->action = cpu_to_le16(cmd_action); > - mac_reg->offset = > - cpu_to_le16((u16) le32_to_cpu(reg_rw->offset)); > - mac_reg->value = reg_rw->value; > + mac_reg->offset = cpu_to_le16((u16) reg_rw->offset); > + mac_reg->value = cpu_to_le32(reg_rw->value); > break; > } > case HostCmd_CMD_BBP_REG_ACCESS: > @@ -1142,9 +1141,8 @@ static int mwifiex_cmd_reg_access(struct > host_cmd_ds_command *cmd, > cmd->size = cpu_to_le16(sizeof(*bbp_reg) + S_DS_GEN); > bbp_reg = &cmd->params.bbp_reg; > bbp_reg->action = cpu_to_le16(cmd_action); > - bbp_reg->offset = > - cpu_to_le16((u16) le32_to_cpu(reg_rw->offset)); > - bbp_reg->value = (u8) le32_to_cpu(reg_rw->value); > + bbp_reg->offset = cpu_to_le16((u16) reg_rw->offset); > + bbp_reg->value = (u8) reg_rw->value; > break; > } > case HostCmd_CMD_RF_REG_ACCESS: > @@ -1154,8 +1152,8 @@ static int mwifiex_cmd_reg_access(struct > host_cmd_ds_command *cmd, > cmd->size = cpu_to_le16(sizeof(*rf_reg) + S_DS_GEN); > rf_reg = &cmd->params.rf_reg; > rf_reg->action = cpu_to_le16(cmd_action); > - rf_reg->offset = cpu_to_le16((u16) le32_to_cpu(reg_rw- > >offset)); > - rf_reg->value = (u8) le32_to_cpu(reg_rw->value); > + rf_reg->offset = cpu_to_le16((u16) reg_rw->offset); > + rf_reg->value = (u8) reg_rw->value; > break; > } > case HostCmd_CMD_PMIC_REG_ACCESS: > @@ -1165,9 +1163,8 @@ static int mwifiex_cmd_reg_access(struct > host_cmd_ds_command *cmd, > cmd->size = cpu_to_le16(sizeof(*pmic_reg) + S_DS_GEN); >
Re: [PATCH v4] mwifiex: Reduce endian conversion for REG Host Commands
Amitkumar Karwar writes: >> From: Prasun Maiti [mailto:prasunmait...@gmail.com] >> Sent: Monday, June 27, 2016 3:43 PM >> To: Amitkumar Karwar >> Cc: Nishant Sarmukadam; Linux Wireless; Linux Next; Linux Kernel; Kalle >> Valo >> Subject: [PATCH v4] mwifiex: Reduce endian conversion for REG Host >> Commands >> >> For multiple REG Host Commands (e.g HostCmd_CMD_802_11_EEPROM_ACCESS, >> HostCmd_CMD_MAC_REG_ACCESS etc.) "cpu_to_leX"-converted values are saved >> to driver. So, "leX_to_cpu" conversion is required too many times >> afterwards in driver. >> >> This patch reduces the endian: conversion without saving "cpu_to_leX" >> converted values in driver. This will convert endianness in prepare >> command and command response path. >> >> Signed-off-by: Prasun Maiti [deleted almost 300 lines of unnecessary quotes] > Any specific reason for dropping this patch? > I can see the status as "Deferred" on patchwork. It's not dropped, "Deferred" means that the patch was postponed for some reason and I need to look at the patch more carefully. In this case I did it because I was hoping to see an Acked-by from you. -- Kalle Valo -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH v4] mwifiex: Reduce endian conversion for REG Host Commands
> From: linux-wireless-ow...@vger.kernel.org [mailto:linux-wireless- > ow...@vger.kernel.org] On Behalf Of Kalle Valo > Sent: Friday, July 08, 2016 7:10 PM > To: Amitkumar Karwar > Cc: Prasun Maiti; Nishant Sarmukadam; Linux Wireless; Linux Next; Linux > Kernel > Subject: Re: [PATCH v4] mwifiex: Reduce endian conversion for REG Host > Commands > > Amitkumar Karwar writes: > > >> From: Prasun Maiti [mailto:prasunmait...@gmail.com] > >> Sent: Monday, June 27, 2016 3:43 PM > >> To: Amitkumar Karwar > >> Cc: Nishant Sarmukadam; Linux Wireless; Linux Next; Linux Kernel; > >> Kalle Valo > >> Subject: [PATCH v4] mwifiex: Reduce endian conversion for REG Host > >> Commands > >> > >> For multiple REG Host Commands (e.g HostCmd_CMD_802_11_EEPROM_ACCESS, > >> HostCmd_CMD_MAC_REG_ACCESS etc.) "cpu_to_leX"-converted values are > >> saved to driver. So, "leX_to_cpu" conversion is required too many > >> times afterwards in driver. > >> > >> This patch reduces the endian: conversion without saving "cpu_to_leX" > >> converted values in driver. This will convert endianness in prepare > >> command and command response path. > >> > >> Signed-off-by: Prasun Maiti > > [deleted almost 300 lines of unnecessary quotes] > > > Any specific reason for dropping this patch? > > I can see the status as "Deferred" on patchwork. > > It's not dropped, "Deferred" means that the patch was postponed for some > reason and I need to look at the patch more carefully. In this case I > did it because I was hoping to see an Acked-by from you. Thanks for clarification. I will ack the patch. Regards, Amitkumar -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH v4] mwifiex: Reduce endian conversion for REG Host Commands
> From: Prasun Maiti [mailto:prasunmait...@gmail.com] > Sent: Monday, June 27, 2016 3:43 PM > To: Amitkumar Karwar > Cc: Nishant Sarmukadam; Linux Wireless; Linux Next; Linux Kernel; Kalle > Valo > Subject: [PATCH v4] mwifiex: Reduce endian conversion for REG Host > Commands > > For multiple REG Host Commands (e.g HostCmd_CMD_802_11_EEPROM_ACCESS, > HostCmd_CMD_MAC_REG_ACCESS etc.) "cpu_to_leX"-converted values are saved > to driver. So, "leX_to_cpu" conversion is required too many times > afterwards in driver. > > This patch reduces the endian: conversion without saving "cpu_to_leX" > converted values in driver. This will convert endianness in prepare > command and command response path. > > Signed-off-by: Prasun Maiti > --- > Changes in v3: > - Fixed the following warnings: > * sta_ioctl.c:1339:34: warning: comparison of distinct pointer > types lacks a cast [enabled by default] > * sta_cmdresp.c:821:6: warning: comparison of distinct pointer > types lacks a cast [enabled by default] > > Changes in v4: > - Fixed the sparse compilation warnings: > * warning: cast from restricted __le32 > * warning: cast from restricted __le16 > > drivers/net/wireless/marvell/mwifiex/ioctl.h | 10 +++--- > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 28 +++ > - > drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 37 +++ > --- > drivers/net/wireless/marvell/mwifiex/sta_ioctl.c | 21 ++-- > 4 files changed, 46 insertions(+), 50 deletions(-) > > diff --git a/drivers/net/wireless/marvell/mwifiex/ioctl.h > b/drivers/net/wireless/marvell/mwifiex/ioctl.h > index a5a48c1..4ce9330 100644 > --- a/drivers/net/wireless/marvell/mwifiex/ioctl.h > +++ b/drivers/net/wireless/marvell/mwifiex/ioctl.h > @@ -341,16 +341,16 @@ enum { > }; > > struct mwifiex_ds_reg_rw { > - __le32 type; > - __le32 offset; > - __le32 value; > + u32 type; > + u32 offset; > + u32 value; > }; > > #define MAX_EEPROM_DATA 256 > > struct mwifiex_ds_read_eeprom { > - __le16 offset; > - __le16 byte_count; > + u16 offset; > + u16 byte_count; > u8 value[MAX_EEPROM_DATA]; > }; > > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index e436574..9df02ba 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -1130,9 +1130,8 @@ static int mwifiex_cmd_reg_access(struct > host_cmd_ds_command *cmd, > cmd->size = cpu_to_le16(sizeof(*mac_reg) + S_DS_GEN); > mac_reg = &cmd->params.mac_reg; > mac_reg->action = cpu_to_le16(cmd_action); > - mac_reg->offset = > - cpu_to_le16((u16) le32_to_cpu(reg_rw->offset)); > - mac_reg->value = reg_rw->value; > + mac_reg->offset = cpu_to_le16((u16) reg_rw->offset); > + mac_reg->value = cpu_to_le32(reg_rw->value); > break; > } > case HostCmd_CMD_BBP_REG_ACCESS: > @@ -1142,9 +1141,8 @@ static int mwifiex_cmd_reg_access(struct > host_cmd_ds_command *cmd, > cmd->size = cpu_to_le16(sizeof(*bbp_reg) + S_DS_GEN); > bbp_reg = &cmd->params.bbp_reg; > bbp_reg->action = cpu_to_le16(cmd_action); > - bbp_reg->offset = > - cpu_to_le16((u16) le32_to_cpu(reg_rw->offset)); > - bbp_reg->value = (u8) le32_to_cpu(reg_rw->value); > + bbp_reg->offset = cpu_to_le16((u16) reg_rw->offset); > + bbp_reg->value = (u8) reg_rw->value; > break; > } > case HostCmd_CMD_RF_REG_ACCESS: > @@ -1154,8 +1152,8 @@ static int mwifiex_cmd_reg_access(struct > host_cmd_ds_command *cmd, > cmd->size = cpu_to_le16(sizeof(*rf_reg) + S_DS_GEN); > rf_reg = &cmd->params.rf_reg; > rf_reg->action = cpu_to_le16(cmd_action); > - rf_reg->offset = cpu_to_le16((u16) le32_to_cpu(reg_rw- > >offset)); > - rf_reg->value = (u8) le32_to_cpu(reg_rw->value); > + rf_reg->offset = cpu_to_le16((u16) reg_rw->offset); > + rf_reg->value = (u8) reg_rw->value; > break; > } > case HostCmd_CMD_PMIC_REG_ACCESS: > @@ -1165,9 +1163,8 @@ static int mwifiex_cmd_reg_access(struct > host_cmd_ds_command *cmd, > cmd->size = cpu_to_le16(sizeof(*pmic_reg) + S_DS_GEN); >