From 50a31b48875f806435bbd32f9140feee0df17047 Mon Sep 17 00:00:00 2001
From: Adrian Chadd <adrian@FreeBSD.org>
Date: Sat, 3 Oct 2015 17:34:11 +0000
Subject: [PATCH] rum(4): add support for AHDEMO mode.

Submitted by:	<s3erios@gmail.com>
Differential Revision:	https://reviews.freebsd.org/D3627
---
 sys/dev/usb/wlan/if_rum.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/sys/dev/usb/wlan/if_rum.c b/sys/dev/usb/wlan/if_rum.c
index f7ba3a5ff4df..cd46bd9b9e31 100644
--- a/sys/dev/usb/wlan/if_rum.c
+++ b/sys/dev/usb/wlan/if_rum.c
@@ -489,6 +489,7 @@ rum_attach(device_t self)
 	    | IEEE80211_C_IBSS		/* IBSS mode supported */
 	    | IEEE80211_C_MONITOR	/* monitor mode supported */
 	    | IEEE80211_C_HOSTAP	/* HostAp mode supported */
+	    | IEEE80211_C_AHDEMO	/* adhoc demo mode */
 	    | IEEE80211_C_TXPMGT	/* tx power management */
 	    | IEEE80211_C_SHPREAMBLE	/* short preamble supported */
 	    | IEEE80211_C_SHSLOT	/* short slot time supported */
@@ -795,7 +796,8 @@ rum_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
 				goto run_fail;
 		}
 
-		if (vap->iv_opmode != IEEE80211_M_MONITOR) {
+		if (vap->iv_opmode != IEEE80211_M_MONITOR &&
+		    vap->iv_opmode != IEEE80211_M_AHDEMO) {
 			if ((ret = rum_enable_tsf_sync(sc)) != 0)
 				goto run_fail;
 		} else
@@ -2360,7 +2362,10 @@ rum_scan_end(struct ieee80211com *ic)
 	struct rum_softc *sc = ic->ic_softc;
 
 	RUM_LOCK(sc);
-	rum_enable_tsf_sync(sc);
+	if (ic->ic_opmode != IEEE80211_M_AHDEMO)
+		rum_enable_tsf_sync(sc);
+	else
+		rum_enable_tsf(sc);
 	rum_set_bssid(sc, sc->sc_bssid);
 	RUM_UNLOCK(sc);