--- if_iwn.c.orig	2009-10-27 21:11:54.000000000 -0400
+++ if_iwn.c	2009-10-27 22:59:29.000000000 -0400
@@ -3000,6 +3000,7 @@
 		return ENETDOWN;
 	}
 
+	IEEE80211_UNLOCK(ic);
 	IWN_LOCK(sc);
 	if (params == NULL)
 		txq = &sc->txq[M_WME_GETAC(m)];
@@ -3025,6 +3026,7 @@
 		ifp->if_oerrors++;
 	}
 	IWN_UNLOCK(sc);
+	IEEE80211_LOCK(ic);
 	return error;
 }
 
@@ -3355,9 +3357,7 @@
 		cmd.ac[i].txoplimit =
 		    htole16(IWN_TXOP_TO_US(wmep->wmep_txopLimit));
 	}
-	IWN_LOCK(sc);
 	(void) iwn_cmd(sc, IWN_CMD_EDCA_PARAMS, &cmd, sizeof cmd, 1 /*async*/);
-	IWN_UNLOCK(sc);
 	return 0;
 #undef IWN_TXOP_TO_US
 #undef IWN_EXP2
