svn commit: r280070 - head/sys/dev/wpi
Adrian Chadd
adrian at FreeBSD.org
Sun Mar 15 20:35:27 UTC 2015
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 at 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);
More information about the svn-src-all
mailing list