--- a/ath/if_ath.c
+++ b/ath/if_ath.c
@@ -1260,7 +1260,10 @@ ath_vap_create(struct ieee80211com *ic,
 	case IEEE80211_M_IBSS:
 		if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA))
 			return NULL;
-		ic_opmode = opmode;
+		if (ic->ic_opmode == IEEE80211_M_HOSTAP)
+			ic_opmode = ic->ic_opmode;
+		else
+			ic_opmode = opmode;
 		break;
 	case IEEE80211_M_AHDEMO:
 	case IEEE80211_M_MONITOR:
@@ -1455,7 +1458,7 @@ ath_vap_create(struct ieee80211com *ic,
 	 * frames.  Other modes carry over directly to the HAL.
 	 */
 	if (ic->ic_opmode == IEEE80211_M_AHDEMO)
-		sc->sc_opmode = HAL_M_IBSS;
+		sc->sc_opmode = HAL_M_HOSTAP;
 	else
 		sc->sc_opmode = (HAL_OPMODE) ic->ic_opmode;	/* NB: compatible */