git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/qede: fix incorrect link status update
[dpdk.git]
/
drivers
/
net
/
sfc
/
base
/
ef10_mcdi.c
diff --git
a/drivers/net/sfc/base/ef10_mcdi.c
b/drivers/net/sfc/base/ef10_mcdi.c
index
b533033
..
8a3fc3b
100644
(file)
--- a/
drivers/net/sfc/base/ef10_mcdi.c
+++ b/
drivers/net/sfc/base/ef10_mcdi.c
@@
-188,13
+188,17
@@
ef10_mcdi_read_response(
{
const efx_mcdi_transport_t *emtp = enp->en_mcdi.em_emtp;
efsys_mem_t *esmp = emtp->emt_dma_mem;
{
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;
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);
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;
}
}
}
}