Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Mar 2015 20:35:26 +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: r280070 - head/sys/dev/wpi
Message-ID:  <201503152035.t2FKZQaO064275@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Sun Mar 15 20:35:25 2015
New Revision: 280070
URL: https://svnweb.freebsd.org/changeset/base/280070

Log:
  Wrap node addition in STA mode into wpi_add_sta_node().
  
  PR:		kern/197143
  Submitted by:	Andriy Voskoboinyk <s3erios@gmail.com>

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

Modified: head/sys/dev/wpi/if_wpi.c
==============================================================================
--- head/sys/dev/wpi/if_wpi.c	Sun Mar 15 20:34:26 2015	(r280069)
+++ head/sys/dev/wpi/if_wpi.c	Sun Mar 15 20:35:25 2015	(r280070)
@@ -1527,6 +1527,14 @@ wpi_add_node_entry_adhoc(struct wpi_soft
 }
 
 static __inline int
+wpi_add_node_entry_sta(struct wpi_softc *sc)
+{
+	sc->nodesmsk |= 1 << WPI_ID_BSS;
+
+	return WPI_ID_BSS;
+}
+
+static __inline int
 wpi_check_node_entry(struct wpi_softc *sc, uint8_t id)
 {
 	if (id == WPI_ID_UNDEFINED)
@@ -1570,7 +1578,7 @@ wpi_node_free(struct ieee80211_node *ni)
 	struct wpi_softc *sc = ic->ic_ifp->if_softc;
 	struct wpi_node *wn = WPI_NODE(ni);
 
-	if (wn->id >= WPI_ID_IBSS_MIN && wn->id <= WPI_ID_IBSS_MAX) {
+	if (wn->id != WPI_ID_UNDEFINED) {
 		WPI_LOCK(sc);
 		if (wpi_check_node_entry(sc, wn->id)) {
 			wpi_del_node_entry(sc, wn->id);
@@ -3032,6 +3040,25 @@ wpi_add_broadcast_node(struct wpi_softc 
 }
 
 static int
+wpi_add_sta_node(struct wpi_softc *sc, struct ieee80211_node *ni)
+{
+	struct wpi_node *wn = WPI_NODE(ni);
+	int error;
+
+	DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_DOING, __func__);
+
+	wn->id = wpi_add_node_entry_sta(sc);
+
+	if ((error = wpi_add_node(sc, ni)) != 0) {
+		wpi_del_node_entry(sc, wn->id);
+		wn->id = WPI_ID_UNDEFINED;
+		return error;
+	}
+
+	return 0;
+}
+
+static int
 wpi_add_ibss_node(struct wpi_softc *sc, struct ieee80211_node *ni)
 {
 	struct wpi_node *wn = WPI_NODE(ni);
@@ -4011,8 +4038,8 @@ wpi_run(struct wpi_softc *sc, struct iee
 
 	if (vap->iv_opmode == IEEE80211_M_STA) {
 		/* Add BSS node. */
-		((struct wpi_node *)ni)->id = WPI_ID_BSS;
-		if ((error = wpi_add_node(sc, ni)) != 0) {
+		error = wpi_add_sta_node(sc, ni);
+		if (error != 0) {
 			device_printf(sc->sc_dev,
 			    "%s: could not add BSS node, error %d\n", __func__,
 			    error);



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