summaryrefslogtreecommitdiffstats
path: root/c/src/libchip/network/smc91111.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/libchip/network/smc91111.c')
-rw-r--r--c/src/libchip/network/smc91111.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/c/src/libchip/network/smc91111.c b/c/src/libchip/network/smc91111.c
index 911f9a922b..660895bfc5 100644
--- a/c/src/libchip/network/smc91111.c
+++ b/c/src/libchip/network/smc91111.c
@@ -192,7 +192,8 @@ static void lan91cxx_recv(struct lan91cxx_priv_data *cpd, struct mbuf *m)
start = (char *)data;
mlen = n->m_len;
if ((data) && (mlen > 1)) {
- *((unsigned short *)data)++ = (val & 0xffff);
+ *(unsigned short *)data = (val & 0xffff);
+ data = (rxd_t *)((unsigned short *)data + 1);
plen -= 2;
mlen -= 2;
}
@@ -213,9 +214,10 @@ static void lan91cxx_recv(struct lan91cxx_priv_data *cpd, struct mbuf *m)
while (mlen >= sizeof(*data)) {
#ifdef LAN91CXX_32BIT_RX
val = get_data(cpd);
- *((unsigned short *)data)++ =
- (val >> 16) & 0xffff;
- *((unsigned short *)data)++ = (val & 0xffff);
+ *(unsigned short *)data = (val >> 16) & 0xffff;
+ data = (rxd_t *)((unsigned short *)data + 1);
+ *(unsigned short *)data = (val & 0xffff);
+ data = (rxd_t *)((unsigned short *)data + 1);
#else
*data++ = get_data(cpd);
#endif
@@ -250,7 +252,8 @@ static void lan91cxx_recv(struct lan91cxx_priv_data *cpd, struct mbuf *m)
#ifdef LAN91CXX_32BIT_RX
if (plen & 2) {
if (data) {
- *((unsigned short *)data)++ = (val >> 16) & 0xffff;
+ *(unsigned short *)data = (val >> 16) & 0xffff;
+ data = (rxd_t *)((unsigned short *)data + 1);
val <<= 16;
}
}