aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/wi/if_wi.c9
-rw-r--r--sys/i386/isa/if_wi.c9
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));