diff options
Diffstat (limited to 'c/src/libchip/network/smc91111.c')
-rw-r--r-- | c/src/libchip/network/smc91111.c | 13 |
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; } } |