View | Details | Raw Unified | Return to bug 197143 | Differences between
and this patch

Collapse All | Expand All

(-)sys/dev/wpi/if_wpi.c (-3 / +9 lines)
Lines 1651-1656 Link Here
1651
	sc->sc_node_free(ni);
1651
	sc->sc_node_free(ni);
1652
}
1652
}
1653
1653
1654
static __inline int
1655
wpi_check_bss_filter(struct wpi_softc *sc)
1656
{
1657
	return (sc->rxon.filter & htole32(WPI_FILTER_BSS)) != 0;
1658
}
1659
1654
/**
1660
/**
1655
 * Called by net80211 when ever there is a change to 80211 state machine
1661
 * Called by net80211 when ever there is a change to 80211 state machine
1656
 */
1662
 */
Lines 1681-1687 Link Here
1681
	switch (nstate) {
1687
	switch (nstate) {
1682
	case IEEE80211_S_SCAN:
1688
	case IEEE80211_S_SCAN:
1683
		WPI_RXON_LOCK(sc);
1689
		WPI_RXON_LOCK(sc);
1684
		if ((sc->rxon.filter & htole32(WPI_FILTER_BSS)) &&
1690
		if (wpi_check_bss_filter(sc) != 0 &&
1685
		    vap->iv_opmode != IEEE80211_M_STA) {
1691
		    vap->iv_opmode != IEEE80211_M_STA) {
1686
			sc->rxon.filter &= ~htole32(WPI_FILTER_BSS);
1692
			sc->rxon.filter &= ~htole32(WPI_FILTER_BSS);
1687
			if ((error = wpi_send_rxon(sc, 0, 1)) != 0) {
1693
			if ((error = wpi_send_rxon(sc, 0, 1)) != 0) {
Lines 1749-1755 Link Here
1749
{
1755
{
1750
	struct wpi_softc *sc = arg;
1756
	struct wpi_softc *sc = arg;
1751
1757
1752
	if (!(sc->rxon.filter & htole32(WPI_FILTER_BSS)))
1758
	if (wpi_check_bss_filter(sc) == 0)
1753
		return;
1759
		return;
1754
1760
1755
	wpi_power_calibration(sc);
1761
	wpi_power_calibration(sc);
Lines 3642-3648 Link Here
3642
	if (async)
3648
	if (async)
3643
		WPI_RXON_LOCK_ASSERT(sc);
3649
		WPI_RXON_LOCK_ASSERT(sc);
3644
3650
3645
	if (assoc && (sc->rxon.filter & htole32(WPI_FILTER_BSS))) {
3651
	if (assoc && wpi_check_bss_filter(sc) != 0) {
3646
		struct wpi_assoc rxon_assoc;
3652
		struct wpi_assoc rxon_assoc;
3647
3653
3648
		rxon_assoc.flags = sc->rxon.flags;
3654
		rxon_assoc.flags = sc->rxon.flags;

Return to bug 197143