Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Jul 2012 07:22:51 +0000 (UTC)
From:      Monthadar Al Jaberi <monthadar@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r238938 - head/sys/dev/wtap
Message-ID:  <201207310722.q6V7Mp43099707@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: monthadar
Date: Tue Jul 31 07:22:50 2012
New Revision: 238938
URL: http://svn.freebsd.org/changeset/base/238938

Log:
  Fix wtap to not panic in wtap_beacon_intrp.
  
  * Changed KASSERT to be debug printf (DWTAP_PRINTF). If state is not
  IEEE80211_S_RUN we return without scheduling a new callout;
  * When net80211 stack changes state to IEEE802_11_INIT we stop the
  beacon callout task;

Modified:
  head/sys/dev/wtap/if_wtap.c

Modified: head/sys/dev/wtap/if_wtap.c
==============================================================================
--- head/sys/dev/wtap/if_wtap.c	Tue Jul 31 05:51:48 2012	(r238937)
+++ head/sys/dev/wtap/if_wtap.c	Tue Jul 31 07:22:50 2012	(r238938)
@@ -230,8 +230,10 @@ wtap_beacon_intrp(void *arg)
 	struct ieee80211vap *vap = arg;
 	struct mbuf *m;
 
-	KASSERT(vap->iv_state >= IEEE80211_S_RUN,
-	    ("not running, state %d", vap->iv_state));
+	if (vap->iv_state < IEEE80211_S_RUN) {
+	    DWTAP_PRINTF("Skip beacon, not running, state %d", vap->iv_state);
+	    return ;
+	}
 	DWTAP_PRINTF("[%d] beacon intrp\n", avp->id);	//burst mode
 	/*
 	 * Update dynamic beacon contents.  If this returns
@@ -289,6 +291,8 @@ wtap_newstate(struct ieee80211vap *vap, 
 		default:
 			goto bad;
 		}
+	} else if (nstate == IEEE80211_S_INIT) {
+		callout_stop(&avp->av_swba);
 	}
 	return 0;
 bad:



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