Message ID | 1466519967-15555-1-git-send-email-prasunmaiti87@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Kalle Valo |
Headers | show |
Hi, [auto build test WARNING on wireless-drivers-next/master] [also build test WARNING on v4.7-rc4 next-20160621] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Prasun-Maiti/mwifiex-Reduce-endian-conversion-for-REG-Host-Commands/20160621-224149 base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master config: tile-allyesconfig (attached as .config) compiler: tilegx-linux-gcc (GCC) 4.6.2 reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=tile All warnings (new ones prefixed by >>): drivers/net/wireless/marvell/mwifiex/sta_ioctl.c: In function 'mwifiex_eeprom_read': >> drivers/net/wireless/marvell/mwifiex/sta_ioctl.c:1339:34: warning: comparison of distinct pointer types lacks a cast [enabled by default] -- drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c: In function 'mwifiex_ret_reg_access': >> drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c:821:6: warning: comparison of distinct pointer types lacks a cast [enabled by default] vim +1339 drivers/net/wireless/marvell/mwifiex/sta_ioctl.c 1323 */ 1324 int 1325 mwifiex_eeprom_read(struct mwifiex_private *priv, u16 offset, u16 bytes, 1326 u8 *value) 1327 { 1328 int ret; 1329 struct mwifiex_ds_read_eeprom rd_eeprom; 1330 1331 rd_eeprom.offset = offset; 1332 rd_eeprom.byte_count = bytes; 1333 1334 /* Send request to firmware */ 1335 ret = mwifiex_send_cmd(priv, HostCmd_CMD_802_11_EEPROM_ACCESS, 1336 HostCmd_ACT_GEN_GET, 0, &rd_eeprom, true); 1337 1338 if (!ret) > 1339 memcpy(value, rd_eeprom.value, min(MAX_EEPROM_DATA, 1340 rd_eeprom.byte_count)); 1341 return ret; 1342 } 1343 1344 /* 1345 * This function sets a generic IE. In addition to generic IE, it can 1346 * also handle WPA, WPA2 and WAPI IEs. 1347 */ --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi, [auto build test WARNING on wireless-drivers-next/master] [also build test WARNING on v4.7-rc4 next-20160621] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Prasun-Maiti/mwifiex-Reduce-endian-conversion-for-REG-Host-Commands/20160621-224149 base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master config: sparc64-allyesconfig (attached as .config) compiler: sparc64-linux-gnu-gcc (Debian 5.3.1-8) 5.3.1 20160205 reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=sparc64 All warnings (new ones prefixed by >>): In file included from arch/sparc/include/asm/string.h:4:0, from include/linux/string.h:18, from include/linux/bitmap.h:8, from include/linux/cpumask.h:11, from include/linux/rcupdate.h:40, from include/linux/sysctl.h:25, from include/linux/timer.h:244, from drivers/net/wireless/marvell/mwifiex/decl.h:27, from drivers/net/wireless/marvell/mwifiex/sta_ioctl.c:20: drivers/net/wireless/marvell/mwifiex/sta_ioctl.c: In function 'mwifiex_eeprom_read': include/linux/kernel.h:742:17: warning: comparison of distinct pointer types lacks a cast (void) (&_min1 == &_min2); \ ^ arch/sparc/include/asm/string_64.h:25:48: note: in definition of macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^ >> drivers/net/wireless/marvell/mwifiex/sta_ioctl.c:1339:34: note: in expansion of macro 'min' memcpy(value, rd_eeprom.value, min(MAX_EEPROM_DATA, ^ -- In file included from arch/sparc/include/asm/string.h:4:0, from include/linux/string.h:18, from include/linux/bitmap.h:8, from include/linux/cpumask.h:11, from include/linux/rcupdate.h:40, from include/linux/sysctl.h:25, from include/linux/timer.h:244, from drivers/net/wireless/marvell/mwifiex/decl.h:27, from drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c:20: drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c: In function 'mwifiex_ret_reg_access': include/linux/kernel.h:742:17: warning: comparison of distinct pointer types lacks a cast (void) (&_min1 == &_min2); \ ^ arch/sparc/include/asm/string_64.h:25:48: note: in definition of macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^ >> drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c:821:6: note: in expansion of macro 'min' min(MAX_EEPROM_DATA, eeprom->byte_count)); ^ vim +/min +1339 drivers/net/wireless/marvell/mwifiex/sta_ioctl.c 1323 */ 1324 int 1325 mwifiex_eeprom_read(struct mwifiex_private *priv, u16 offset, u16 bytes, 1326 u8 *value) 1327 { 1328 int ret; 1329 struct mwifiex_ds_read_eeprom rd_eeprom; 1330 1331 rd_eeprom.offset = offset; 1332 rd_eeprom.byte_count = bytes; 1333 1334 /* Send request to firmware */ 1335 ret = mwifiex_send_cmd(priv, HostCmd_CMD_802_11_EEPROM_ACCESS, 1336 HostCmd_ACT_GEN_GET, 0, &rd_eeprom, true); 1337 1338 if (!ret) > 1339 memcpy(value, rd_eeprom.value, min(MAX_EEPROM_DATA, 1340 rd_eeprom.byte_count)); 1341 return ret; 1342 } 1343 1344 /* 1345 * This function sets a generic IE. In addition to generic IE, it can 1346 * also handle WPA, WPA2 and WAPI IEs. 1347 */ --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi, [auto build test WARNING on wireless-drivers-next/master] [also build test WARNING on v4.7-rc4 next-20160621] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Prasun-Maiti/mwifiex-Reduce-endian-conversion-for-REG-Host-Commands/20160621-224149 base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) include/linux/compiler.h:232:8: sparse: attribute 'no_sanitize_address': unknown attribute >> drivers/net/wireless/marvell/mwifiex/sta_ioctl.c:1339:17: sparse: incompatible types in comparison expression (different base types) In file included from include/linux/list.h:8:0, from include/linux/wait.h:6, from drivers/net/wireless/marvell/mwifiex/decl.h:26, from drivers/net/wireless/marvell/mwifiex/sta_ioctl.c:20: drivers/net/wireless/marvell/mwifiex/sta_ioctl.c: In function 'mwifiex_eeprom_read': include/linux/kernel.h:742:17: warning: comparison of distinct pointer types lacks a cast (void) (&_min1 == &_min2); \ ^ drivers/net/wireless/marvell/mwifiex/sta_ioctl.c:1339:34: note: in expansion of macro 'min' memcpy(value, rd_eeprom.value, min(MAX_EEPROM_DATA, ^~~ -- include/linux/compiler.h:232:8: sparse: attribute 'no_sanitize_address': unknown attribute >> drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c:820:25: sparse: incompatible types in comparison expression (different base types) In file included from include/linux/list.h:8:0, from include/linux/wait.h:6, from drivers/net/wireless/marvell/mwifiex/decl.h:26, from drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c:20: drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c: In function 'mwifiex_ret_reg_access': include/linux/kernel.h:742:17: warning: comparison of distinct pointer types lacks a cast (void) (&_min1 == &_min2); \ ^ drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c:821:6: note: in expansion of macro 'min' min(MAX_EEPROM_DATA, eeprom->byte_count)); ^~~ vim +1339 drivers/net/wireless/marvell/mwifiex/sta_ioctl.c 1323 */ 1324 int 1325 mwifiex_eeprom_read(struct mwifiex_private *priv, u16 offset, u16 bytes, 1326 u8 *value) 1327 { 1328 int ret; 1329 struct mwifiex_ds_read_eeprom rd_eeprom; 1330 1331 rd_eeprom.offset = offset; 1332 rd_eeprom.byte_count = bytes; 1333 1334 /* Send request to firmware */ 1335 ret = mwifiex_send_cmd(priv, HostCmd_CMD_802_11_EEPROM_ACCESS, 1336 HostCmd_ACT_GEN_GET, 0, &rd_eeprom, true); 1337 1338 if (!ret) > 1339 memcpy(value, rd_eeprom.value, min(MAX_EEPROM_DATA, 1340 rd_eeprom.byte_count)); 1341 return ret; 1342 } 1343 1344 /* 1345 * This function sets a generic IE. In addition to generic IE, it can 1346 * also handle WPA, WPA2 and WAPI IEs. 1347 */ --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Prasun Maiti <prasunmaiti87@gmail.com> writes: > 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 <prasunmaiti87@gmail.com> If you send a new version of the patch mark it as [PATCH v2] and always include a change log so that people don't need to guess what has changed: http://kernelnewbies.org/FirstKernelPatch#head-5c81b3c517a1d0bbc24f92594cb734e155fcbbcb So now you should send a v3 and include a changelog.
> If you send a new version of the patch mark it as [PATCH v2] and always > include a change log so that people don't need to guess what has > changed: > > http://kernelnewbies.org/FirstKernelPatch#head-5c81b3c517a1d0bbc24f92594cb734e155fcbbcb > > So now you should send a v3 and include a changelog. Hi Kalle Valo, In PATCH v3, the whole changes remains? Or only it contains last modification on PATCH v2 ? Please let me know about it.
Prasun Maiti <prasunmaiti87@gmail.com> writes: >> If you send a new version of the patch mark it as [PATCH v2] and always >> include a change log so that people don't need to guess what has >> changed: >> >> http://kernelnewbies.org/FirstKernelPatch#head-5c81b3c517a1d0bbc24f92594cb734e155fcbbcb >> >> So now you should send a v3 and include a changelog. > > Hi Kalle Valo, > > In PATCH v3, the whole changes remains? Or only it contains last > modification on PATCH v2 ? Please let me know about it. I haven't applied anything yet, so please send v3 as the full patch. But I see that you already did that.
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)); - cau_reg->value = (u8) le32_to_cpu(reg_rw->value); + cau_reg->offset = cpu_to_le16((u16) reg_rw->offset); + cau_reg->value = (u8) reg_rw->value; break; } case HostCmd_CMD_802_11_EEPROM_ACCESS: @@ -1190,8 +1186,8 @@ static int mwifiex_cmd_reg_access(struct host_cmd_ds_command *cmd, cmd->size = cpu_to_le16(sizeof(*cmd_eeprom) + S_DS_GEN); cmd_eeprom->action = cpu_to_le16(cmd_action); - cmd_eeprom->offset = rd_eeprom->offset; - cmd_eeprom->byte_count = rd_eeprom->byte_count; + cmd_eeprom->offset = cpu_to_le16(rd_eeprom->offset); + cmd_eeprom->byte_count = cpu_to_le16(rd_eeprom->byte_count); cmd_eeprom->value = 0; break; } diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c index d18c797..d7a9c79 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c @@ -781,44 +781,43 @@ static int mwifiex_ret_reg_access(u16 type, struct host_cmd_ds_command *resp, switch (type) { case HostCmd_CMD_MAC_REG_ACCESS: r.mac = &resp->params.mac_reg; - reg_rw->offset = cpu_to_le32((u32) le16_to_cpu(r.mac->offset)); - reg_rw->value = r.mac->value; + reg_rw->offset = (u32) le16_to_cpu(r.mac->offset); + reg_rw->value = le32_to_cpu(r.mac->value); break; case HostCmd_CMD_BBP_REG_ACCESS: r.bbp = &resp->params.bbp_reg; - reg_rw->offset = cpu_to_le32((u32) le16_to_cpu(r.bbp->offset)); - reg_rw->value = cpu_to_le32((u32) r.bbp->value); + reg_rw->offset = (u32) le16_to_cpu(r.bbp->offset); + reg_rw->value = (u32) r.bbp->value; break; case HostCmd_CMD_RF_REG_ACCESS: r.rf = &resp->params.rf_reg; - reg_rw->offset = cpu_to_le32((u32) le16_to_cpu(r.rf->offset)); - reg_rw->value = cpu_to_le32((u32) r.bbp->value); + reg_rw->offset = (u32) le16_to_cpu(r.rf->offset); + reg_rw->value = (u32) r.bbp->value; break; case HostCmd_CMD_PMIC_REG_ACCESS: r.pmic = &resp->params.pmic_reg; - reg_rw->offset = cpu_to_le32((u32) le16_to_cpu(r.pmic->offset)); - reg_rw->value = cpu_to_le32((u32) r.pmic->value); + reg_rw->offset = (u32) le16_to_cpu(r.pmic->offset); + reg_rw->value = (u32) r.pmic->value; break; case HostCmd_CMD_CAU_REG_ACCESS: r.rf = &resp->params.rf_reg; - reg_rw->offset = cpu_to_le32((u32) le16_to_cpu(r.rf->offset)); - reg_rw->value = cpu_to_le32((u32) r.rf->value); + reg_rw->offset = (u32) le16_to_cpu(r.rf->offset); + reg_rw->value = (u32) r.rf->value; break; case HostCmd_CMD_802_11_EEPROM_ACCESS: r.eeprom = &resp->params.eeprom; - pr_debug("info: EEPROM read len=%x\n", r.eeprom->byte_count); - if (le16_to_cpu(eeprom->byte_count) < - le16_to_cpu(r.eeprom->byte_count)) { - eeprom->byte_count = cpu_to_le16(0); + pr_debug("info: EEPROM read len=%x\n", le16_to_cpu(r.eeprom->byte_count)); + if (eeprom->byte_count < le16_to_cpu(r.eeprom->byte_count)) { + eeprom->byte_count = 0; pr_debug("info: EEPROM read length is too big\n"); return -1; } - eeprom->offset = r.eeprom->offset; - eeprom->byte_count = r.eeprom->byte_count; - if (le16_to_cpu(eeprom->byte_count) > 0) + eeprom->offset = le16_to_cpu(r.eeprom->offset); + eeprom->byte_count = le16_to_cpu(r.eeprom->byte_count); + if (eeprom->byte_count > 0) memcpy(&eeprom->value, &r.eeprom->value, - le16_to_cpu(r.eeprom->byte_count)); + min(MAX_EEPROM_DATA, eeprom->byte_count)); break; default: diff --git a/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c b/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c index 8e08626..d48379a5 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c @@ -1247,7 +1247,7 @@ static int mwifiex_reg_mem_ioctl_reg_rw(struct mwifiex_private *priv, { u16 cmd_no; - switch (le32_to_cpu(reg_rw->type)) { + switch (reg_rw->type) { case MWIFIEX_REG_MAC: cmd_no = HostCmd_CMD_MAC_REG_ACCESS; break; @@ -1282,9 +1282,9 @@ mwifiex_reg_write(struct mwifiex_private *priv, u32 reg_type, { struct mwifiex_ds_reg_rw reg_rw; - reg_rw.type = cpu_to_le32(reg_type); - reg_rw.offset = cpu_to_le32(reg_offset); - reg_rw.value = cpu_to_le32(reg_value); + reg_rw.type = reg_type; + reg_rw.offset = reg_offset; + reg_rw.value = reg_value; return mwifiex_reg_mem_ioctl_reg_rw(priv, ®_rw, HostCmd_ACT_GEN_SET); } @@ -1302,14 +1302,14 @@ mwifiex_reg_read(struct mwifiex_private *priv, u32 reg_type, int ret; struct mwifiex_ds_reg_rw reg_rw; - reg_rw.type = cpu_to_le32(reg_type); - reg_rw.offset = cpu_to_le32(reg_offset); + reg_rw.type = reg_type; + reg_rw.offset = reg_offset; ret = mwifiex_reg_mem_ioctl_reg_rw(priv, ®_rw, HostCmd_ACT_GEN_GET); if (ret) goto done; - *value = le32_to_cpu(reg_rw.value); + *value = reg_rw.value; done: return ret; @@ -1328,15 +1328,16 @@ mwifiex_eeprom_read(struct mwifiex_private *priv, u16 offset, u16 bytes, int ret; struct mwifiex_ds_read_eeprom rd_eeprom; - rd_eeprom.offset = cpu_to_le16((u16) offset); - rd_eeprom.byte_count = cpu_to_le16((u16) bytes); + rd_eeprom.offset = offset; + rd_eeprom.byte_count = bytes; /* Send request to firmware */ ret = mwifiex_send_cmd(priv, HostCmd_CMD_802_11_EEPROM_ACCESS, HostCmd_ACT_GEN_GET, 0, &rd_eeprom, true); if (!ret) - memcpy(value, rd_eeprom.value, MAX_EEPROM_DATA); + memcpy(value, rd_eeprom.value, min(MAX_EEPROM_DATA, + rd_eeprom.byte_count)); return ret; }
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 <prasunmaiti87@gmail.com> --- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 28 ++++++++--------- drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 35 +++++++++++----------- drivers/net/wireless/marvell/mwifiex/sta_ioctl.c | 21 ++++++------- 3 files changed, 40 insertions(+), 44 deletions(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html