diff options
| -rw-r--r-- | sys/dev/wi/if_wi.c | 9 | ||||
| -rw-r--r-- | sys/i386/isa/if_wi.c | 9 |
2 files changed, 14 insertions, 4 deletions
diff --git a/sys/dev/wi/if_wi.c b/sys/dev/wi/if_wi.c index a75353ebae3b..0cb88a464ed8 100644 --- a/sys/dev/wi/if_wi.c +++ b/sys/dev/wi/if_wi.c @@ -391,8 +391,13 @@ static void wi_rxeof(sc) bcopy((char *)&rx_frame.wi_addr1, (char *)&eh->ether_dhost, ETHER_ADDR_LEN); - bcopy((char *)&rx_frame.wi_addr2, - (char *)&eh->ether_shost, ETHER_ADDR_LEN); + if (sc->wi_ptype == WI_PORTTYPE_ADHOC) { + bcopy((char *)&rx_frame.wi_addr2, + (char *)&eh->ether_shost, ETHER_ADDR_LEN); + } else { + bcopy((char *)&rx_frame.wi_addr3, + (char *)&eh->ether_shost, ETHER_ADDR_LEN); + } bcopy((char *)&rx_frame.wi_type, (char *)&eh->ether_type, sizeof(u_int16_t)); diff --git a/sys/i386/isa/if_wi.c b/sys/i386/isa/if_wi.c index a75353ebae3b..0cb88a464ed8 100644 --- a/sys/i386/isa/if_wi.c +++ b/sys/i386/isa/if_wi.c @@ -391,8 +391,13 @@ static void wi_rxeof(sc) bcopy((char *)&rx_frame.wi_addr1, (char *)&eh->ether_dhost, ETHER_ADDR_LEN); - bcopy((char *)&rx_frame.wi_addr2, - (char *)&eh->ether_shost, ETHER_ADDR_LEN); + if (sc->wi_ptype == WI_PORTTYPE_ADHOC) { + bcopy((char *)&rx_frame.wi_addr2, + (char *)&eh->ether_shost, ETHER_ADDR_LEN); + } else { + bcopy((char *)&rx_frame.wi_addr3, + (char *)&eh->ether_shost, ETHER_ADDR_LEN); + } bcopy((char *)&rx_frame.wi_type, (char *)&eh->ether_type, sizeof(u_int16_t)); |
