Lines 2115-2125
Link Here
|
2115 |
{ |
2115 |
{ |
2116 |
struct wpi_beacon_missed *miss = |
2116 |
struct wpi_beacon_missed *miss = |
2117 |
(struct wpi_beacon_missed *)(desc + 1); |
2117 |
(struct wpi_beacon_missed *)(desc + 1); |
2118 |
uint32_t misses; |
2118 |
uint32_t expected, misses, received; |
2119 |
|
2119 |
|
2120 |
bus_dmamap_sync(sc->rxq.data_dmat, data->map, |
2120 |
bus_dmamap_sync(sc->rxq.data_dmat, data->map, |
2121 |
BUS_DMASYNC_POSTREAD); |
2121 |
BUS_DMASYNC_POSTREAD); |
|
|
2122 |
|
2122 |
misses = le32toh(miss->consecutive); |
2123 |
misses = le32toh(miss->consecutive); |
|
|
2124 |
expected = le32toh(miss->expected); |
2125 |
received = le32toh(miss->received); |
2123 |
|
2126 |
|
2124 |
DPRINTF(sc, WPI_DEBUG_BMISS, |
2127 |
DPRINTF(sc, WPI_DEBUG_BMISS, |
2125 |
"%s: beacons missed %d/%d\n", __func__, misses, |
2128 |
"%s: beacons missed %d/%d\n", __func__, misses, |
Lines 2127-2133
Link Here
|
2127 |
|
2130 |
|
2128 |
if (vap->iv_state == IEEE80211_S_RUN && |
2131 |
if (vap->iv_state == IEEE80211_S_RUN && |
2129 |
(ic->ic_flags & IEEE80211_F_SCAN) == 0 && |
2132 |
(ic->ic_flags & IEEE80211_F_SCAN) == 0 && |
2130 |
misses >= vap->iv_bmissthreshold) |
2133 |
(misses >= vap->iv_bmissthreshold || |
|
|
2134 |
(received == 0 && |
2135 |
expected >= vap->iv_bmissthreshold))) |
2131 |
ieee80211_beacon_miss(ic); |
2136 |
ieee80211_beacon_miss(ic); |
2132 |
|
2137 |
|
2133 |
break; |
2138 |
break; |