Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Oct 2015 01:50:54 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r289125 - head/sys/dev/wpi
Message-ID:  <201510110150.t9B1osRr027249@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Sun Oct 11 01:50:54 2015
New Revision: 289125
URL: https://svnweb.freebsd.org/changeset/base/289125

Log:
  wpi(4): do not override iv_recv_mgmt() in non-adhoc modes.
  
  Tested:
  
  * Tested with Intel 3945BG, IBSS and STA modes
  
  Submitted by:	<s3erios@gmail.com>
  Differential Revision:	https://reviews.freebsd.org/D3764

Modified:
  head/sys/dev/wpi/if_wpi.c

Modified: head/sys/dev/wpi/if_wpi.c
==============================================================================
--- head/sys/dev/wpi/if_wpi.c	Sun Oct 11 01:31:18 2015	(r289124)
+++ head/sys/dev/wpi/if_wpi.c	Sun Oct 11 01:50:54 2015	(r289125)
@@ -176,7 +176,7 @@ static int	wpi_read_eeprom_group(struct 
 static struct ieee80211_node *wpi_node_alloc(struct ieee80211vap *,
 		    const uint8_t mac[IEEE80211_ADDR_LEN]);
 static void	wpi_node_free(struct ieee80211_node *);
-static void	wpi_recv_mgmt(struct ieee80211_node *, struct mbuf *, int,
+static void	wpi_ibss_recv_mgmt(struct ieee80211_node *, struct mbuf *, int,
 		    const struct ieee80211_rx_stats *,
 		    int, int);
 static void	wpi_restore_node(void *, struct ieee80211_node *);
@@ -640,8 +640,10 @@ wpi_vap_create(struct ieee80211com *ic, 
 	/* Override with driver methods. */
 	vap->iv_key_set = wpi_key_set;
 	vap->iv_key_delete = wpi_key_delete;
-	wvp->wv_recv_mgmt = vap->iv_recv_mgmt;
-	vap->iv_recv_mgmt = wpi_recv_mgmt;
+	if (opmode == IEEE80211_M_IBSS) {
+		wvp->wv_recv_mgmt = vap->iv_recv_mgmt;
+		vap->iv_recv_mgmt = wpi_ibss_recv_mgmt;
+	}
 	wvp->wv_newstate = vap->iv_newstate;
 	vap->iv_newstate = wpi_newstate;
 	vap->iv_update_beacon = wpi_update_beacon;
@@ -1664,7 +1666,7 @@ wpi_check_bss_filter(struct wpi_softc *s
 }
 
 static void
-wpi_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, int subtype,
+wpi_ibss_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, int subtype,
     const struct ieee80211_rx_stats *rxs,
     int rssi, int nf)
 {
@@ -1675,8 +1677,7 @@ wpi_recv_mgmt(struct ieee80211_node *ni,
 
 	wvp->wv_recv_mgmt(ni, m, subtype, rxs, rssi, nf);
 
-	if (vap->iv_opmode == IEEE80211_M_IBSS &&
-	    vap->iv_state == IEEE80211_S_RUN &&
+	if (vap->iv_state == IEEE80211_S_RUN &&
 	    (subtype == IEEE80211_FC0_SUBTYPE_BEACON ||
 	    subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP)) {
 		ni_tstamp = le64toh(ni->ni_tstamp.tsf);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510110150.t9B1osRr027249>