sfxge(4): refactoring eliminating code analysis warnings
Addresses most of the warnings reported by the sfn windows driver. Submitted by: Richard Houldsworth <rhouldsworth at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18162
This commit is contained in:
parent
f2f1499740
commit
b20c54ffe6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=341043
@ -215,13 +215,17 @@ ef10_mcdi_read_response(
|
||||
{
|
||||
const efx_mcdi_transport_t *emtp = enp->en_mcdi.em_emtp;
|
||||
efsys_mem_t *esmp = emtp->emt_dma_mem;
|
||||
unsigned int pos;
|
||||
unsigned int pos = 0;
|
||||
efx_dword_t data;
|
||||
size_t remaining = length;
|
||||
|
||||
while (remaining > 0) {
|
||||
size_t chunk = MIN(remaining, sizeof (data));
|
||||
|
||||
for (pos = 0; pos < length; pos += sizeof (efx_dword_t)) {
|
||||
EFSYS_MEM_READD(esmp, offset + pos, &data);
|
||||
memcpy((uint8_t *)bufferp + pos, &data,
|
||||
MIN(sizeof (data), length - pos));
|
||||
memcpy((uint8_t *)bufferp + pos, &data, chunk);
|
||||
pos += chunk;
|
||||
remaining -= chunk;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1376,12 +1376,16 @@ ef10_nvram_partn_read_tlv(
|
||||
*/
|
||||
retry = 10;
|
||||
do {
|
||||
rc = ef10_nvram_read_tlv_segment(enp, partn, 0,
|
||||
seg_data, partn_size);
|
||||
} while ((rc == EAGAIN) && (--retry > 0));
|
||||
if ((rc = ef10_nvram_read_tlv_segment(enp, partn, 0,
|
||||
seg_data, partn_size)) != 0)
|
||||
--retry;
|
||||
} while ((rc == EAGAIN) && (retry > 0));
|
||||
|
||||
if (rc != 0) {
|
||||
/* Failed to obtain consistent segment data */
|
||||
if (rc == EAGAIN)
|
||||
rc = EIO;
|
||||
|
||||
goto fail4;
|
||||
}
|
||||
|
||||
|
@ -163,19 +163,22 @@ ef10_vpd_read(
|
||||
rc = ENOSPC;
|
||||
goto fail2;
|
||||
}
|
||||
memcpy(data, dvpd, dvpd_size);
|
||||
if (dvpd != NULL)
|
||||
memcpy(data, dvpd, dvpd_size);
|
||||
|
||||
/* Pad data with all-1s, consistent with update operations */
|
||||
memset(data + dvpd_size, 0xff, size - dvpd_size);
|
||||
|
||||
EFSYS_KMEM_FREE(enp->en_esip, dvpd_size, dvpd);
|
||||
if (dvpd != NULL)
|
||||
EFSYS_KMEM_FREE(enp->en_esip, dvpd_size, dvpd);
|
||||
|
||||
return (0);
|
||||
|
||||
fail2:
|
||||
EFSYS_PROBE(fail2);
|
||||
|
||||
EFSYS_KMEM_FREE(enp->en_esip, dvpd_size, dvpd);
|
||||
if (dvpd != NULL)
|
||||
EFSYS_KMEM_FREE(enp->en_esip, dvpd_size, dvpd);
|
||||
fail1:
|
||||
EFSYS_PROBE1(fail1, efx_rc_t, rc);
|
||||
|
||||
|
@ -988,6 +988,7 @@ siena_filter_build(
|
||||
|
||||
default:
|
||||
EFSYS_ASSERT(B_FALSE);
|
||||
EFX_ZERO_OWORD(*filter);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -1461,6 +1461,10 @@ efx_mcdi_get_phy_cfg(
|
||||
efx_mcdi_req_t req;
|
||||
uint8_t payload[MAX(MC_CMD_GET_PHY_CFG_IN_LEN,
|
||||
MC_CMD_GET_PHY_CFG_OUT_LEN)];
|
||||
#if EFSYS_OPT_NAMES
|
||||
const char *namep;
|
||||
size_t namelen;
|
||||
#endif
|
||||
efx_rc_t rc;
|
||||
|
||||
(void) memset(payload, 0, sizeof (payload));
|
||||
@ -1484,10 +1488,12 @@ efx_mcdi_get_phy_cfg(
|
||||
|
||||
encp->enc_phy_type = MCDI_OUT_DWORD(req, GET_PHY_CFG_OUT_TYPE);
|
||||
#if EFSYS_OPT_NAMES
|
||||
(void) strncpy(encp->enc_phy_name,
|
||||
MCDI_OUT2(req, char, GET_PHY_CFG_OUT_NAME),
|
||||
MIN(sizeof (encp->enc_phy_name) - 1,
|
||||
MC_CMD_GET_PHY_CFG_OUT_NAME_LEN));
|
||||
namep = MCDI_OUT2(req, char, GET_PHY_CFG_OUT_NAME);
|
||||
namelen = MIN(sizeof (encp->enc_phy_name) - 1,
|
||||
strnlen(namep, MC_CMD_GET_PHY_CFG_OUT_NAME_LEN));
|
||||
(void) memset(encp->enc_phy_name, 0,
|
||||
sizeof (encp->enc_phy_name));
|
||||
memcpy(encp->enc_phy_name, namep, namelen);
|
||||
#endif /* EFSYS_OPT_NAMES */
|
||||
(void) memset(encp->enc_phy_revision, 0,
|
||||
sizeof (encp->enc_phy_revision));
|
||||
|
@ -214,6 +214,7 @@ efx_phy_adv_cap_get(
|
||||
break;
|
||||
default:
|
||||
EFSYS_ASSERT(B_FALSE);
|
||||
*maskp = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -150,17 +150,21 @@ siena_mcdi_read_response(
|
||||
{
|
||||
efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);
|
||||
unsigned int pdur;
|
||||
unsigned int pos;
|
||||
unsigned int pos = 0;
|
||||
efx_dword_t data;
|
||||
size_t remaining = length;
|
||||
|
||||
EFSYS_ASSERT(emip->emi_port == 1 || emip->emi_port == 2);
|
||||
pdur = SIENA_MCDI_PDU(emip);
|
||||
|
||||
for (pos = 0; pos < length; pos += sizeof (efx_dword_t)) {
|
||||
while (remaining > 0) {
|
||||
size_t chunk = MIN(remaining, sizeof (data));
|
||||
|
||||
EFX_BAR_TBL_READD(enp, FR_CZ_MC_TREG_SMEM,
|
||||
pdur + ((offset + pos) >> 2), &data, B_FALSE);
|
||||
memcpy((uint8_t *)bufferp + pos, &data,
|
||||
MIN(sizeof (data), length - pos));
|
||||
memcpy((uint8_t *)bufferp + pos, &data, chunk);
|
||||
pos += chunk;
|
||||
remaining -= chunk;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -333,15 +333,20 @@ siena_nvram_get_dynamic_cfg(
|
||||
if ((rc = siena_nvram_partn_size(enp, partn, &size)) != 0)
|
||||
goto fail1;
|
||||
|
||||
if (size < SIENA_NVRAM_CHUNK) {
|
||||
rc = EINVAL;
|
||||
goto fail2;
|
||||
}
|
||||
|
||||
EFSYS_KMEM_ALLOC(enp->en_esip, size, dcfg);
|
||||
if (dcfg == NULL) {
|
||||
rc = ENOMEM;
|
||||
goto fail2;
|
||||
goto fail3;
|
||||
}
|
||||
|
||||
if ((rc = siena_nvram_partn_read(enp, partn, 0,
|
||||
(caddr_t)dcfg, SIENA_NVRAM_CHUNK)) != 0)
|
||||
goto fail3;
|
||||
goto fail4;
|
||||
|
||||
/* Verify the magic */
|
||||
if (EFX_DWORD_FIELD(dcfg->magic, EFX_DWORD_0)
|
||||
@ -376,7 +381,7 @@ siena_nvram_get_dynamic_cfg(
|
||||
if ((rc = siena_nvram_partn_read(enp, partn, SIENA_NVRAM_CHUNK,
|
||||
(caddr_t)dcfg + SIENA_NVRAM_CHUNK,
|
||||
region - SIENA_NVRAM_CHUNK)) != 0)
|
||||
goto fail4;
|
||||
goto fail5;
|
||||
}
|
||||
|
||||
/* Verify checksum */
|
||||
@ -418,13 +423,15 @@ siena_nvram_get_dynamic_cfg(
|
||||
|
||||
return (0);
|
||||
|
||||
fail5:
|
||||
EFSYS_PROBE(fail5);
|
||||
fail4:
|
||||
EFSYS_PROBE(fail4);
|
||||
fail3:
|
||||
EFSYS_PROBE(fail3);
|
||||
|
||||
EFSYS_KMEM_FREE(enp->en_esip, size, dcfg);
|
||||
|
||||
fail3:
|
||||
EFSYS_PROBE(fail3);
|
||||
fail2:
|
||||
EFSYS_PROBE(fail2);
|
||||
fail1:
|
||||
|
@ -65,21 +65,26 @@ siena_vpd_get_static(
|
||||
if ((rc = siena_nvram_partn_size(enp, partn, &size)) != 0)
|
||||
goto fail1;
|
||||
|
||||
if (size < SIENA_NVRAM_CHUNK) {
|
||||
rc = EINVAL;
|
||||
goto fail2;
|
||||
}
|
||||
|
||||
EFSYS_KMEM_ALLOC(enp->en_esip, size, scfg);
|
||||
if (scfg == NULL) {
|
||||
rc = ENOMEM;
|
||||
goto fail2;
|
||||
goto fail3;
|
||||
}
|
||||
|
||||
if ((rc = siena_nvram_partn_read(enp, partn, 0,
|
||||
(caddr_t)scfg, SIENA_NVRAM_CHUNK)) != 0)
|
||||
goto fail3;
|
||||
goto fail4;
|
||||
|
||||
/* Verify the magic number */
|
||||
if (EFX_DWORD_FIELD(scfg->magic, EFX_DWORD_0) !=
|
||||
SIENA_MC_STATIC_CONFIG_MAGIC) {
|
||||
rc = EINVAL;
|
||||
goto fail4;
|
||||
goto fail5;
|
||||
}
|
||||
|
||||
/* All future versions of the structure must be backwards compatible */
|
||||
@ -93,7 +98,7 @@ siena_vpd_get_static(
|
||||
if (hdr_length > size || vpd_offset > size || vpd_length > size ||
|
||||
vpd_length + vpd_offset > size) {
|
||||
rc = EINVAL;
|
||||
goto fail5;
|
||||
goto fail6;
|
||||
}
|
||||
|
||||
/* Read the remainder of scfg + static vpd */
|
||||
@ -102,7 +107,7 @@ siena_vpd_get_static(
|
||||
if ((rc = siena_nvram_partn_read(enp, partn, SIENA_NVRAM_CHUNK,
|
||||
(caddr_t)scfg + SIENA_NVRAM_CHUNK,
|
||||
region - SIENA_NVRAM_CHUNK)) != 0)
|
||||
goto fail6;
|
||||
goto fail7;
|
||||
}
|
||||
|
||||
/* Verify checksum */
|
||||
@ -111,7 +116,7 @@ siena_vpd_get_static(
|
||||
cksum += ((uint8_t *)scfg)[pos];
|
||||
if (cksum != 0) {
|
||||
rc = EINVAL;
|
||||
goto fail7;
|
||||
goto fail8;
|
||||
}
|
||||
|
||||
if (vpd_length == 0)
|
||||
@ -121,7 +126,7 @@ siena_vpd_get_static(
|
||||
EFSYS_KMEM_ALLOC(enp->en_esip, vpd_length, svpd);
|
||||
if (svpd == NULL) {
|
||||
rc = ENOMEM;
|
||||
goto fail8;
|
||||
goto fail9;
|
||||
}
|
||||
memcpy(svpd, (caddr_t)scfg + vpd_offset, vpd_length);
|
||||
}
|
||||
@ -133,6 +138,8 @@ siena_vpd_get_static(
|
||||
|
||||
return (0);
|
||||
|
||||
fail9:
|
||||
EFSYS_PROBE(fail9);
|
||||
fail8:
|
||||
EFSYS_PROBE(fail8);
|
||||
fail7:
|
||||
@ -143,11 +150,11 @@ siena_vpd_get_static(
|
||||
EFSYS_PROBE(fail5);
|
||||
fail4:
|
||||
EFSYS_PROBE(fail4);
|
||||
fail3:
|
||||
EFSYS_PROBE(fail3);
|
||||
|
||||
EFSYS_KMEM_FREE(enp->en_esip, size, scfg);
|
||||
|
||||
fail3:
|
||||
EFSYS_PROBE(fail3);
|
||||
fail2:
|
||||
EFSYS_PROBE(fail2);
|
||||
fail1:
|
||||
|
Loading…
Reference in New Issue
Block a user