diff -urN a/drivers/ar6000/ar6000/ar6000_drv.c b/drivers/ar6000/ar6000/ar6000_drv.c
--- a/drivers/ar6000/ar6000/ar6000_drv.c	2009-03-31 22:06:55.000000000 +0400
+++ b/drivers/ar6000/ar6000/ar6000_drv.c	2009-03-31 23:18:06.000000000 +0400
@@ -1310,6 +1310,13 @@
             connect.ConnectionFlags |=
                         ((A_UINT16)reduce_credit_dribble - 1) & HTC_CONNECT_FLAGS_THRESHOLD_LEVEL_MASK;
         }
+
+            /*
+             * Only one data packet can be stored in driver queue.
+             * In this case, will be used kernel data priority mechanism.
+             */
+        connect.MaxSendQueueDepth = 1;
+
             /* connect to best-effort service */
         connect.ServiceID = WMI_DATA_BE_SVC;
 
@@ -1786,9 +1793,10 @@
     AR_SOFTC_T *ar = (AR_SOFTC_T *)Context;
 
     if (Endpoint == arWMIStream2EndpointID(ar,WMI_CONTROL_PRI)) {
-        /* FIXME: what do for it?  */
+        AR6000_SPIN_LOCK(&ar->arLock,0);
+        ar->arWMIControlEpFull = FALSE;
+        AR6000_SPIN_UNLOCK(&ar->arLock,0);
     } else {
-        /* Wake up interface, rescheduling prevented.  */
         if (ar->arConnected == TRUE || bypasswmi)
             netif_wake_queue(ar->arNetDev);
     }
@@ -1835,11 +1843,6 @@
 
     if (streamID == WMI_CONTROL_PRI)
     {
-        if (ar->arWMIControlEpFull) {
-                /* since this packet completed, the WMI EP is no longer full */
-            ar->arWMIControlEpFull = FALSE;
-        }
-
         if (ar->arTxPending[streamID] == 0) {
             wakeEvent = TRUE;
         }
diff -urN a/drivers/ar6000/include/htc_api.h b/drivers/ar6000/include/htc_api.h
--- a/drivers/ar6000/include/htc_api.h	2009-03-31 22:06:55.000000000 +0400
+++ b/drivers/ar6000/include/htc_api.h	2009-03-28 15:59:44.000000000 +0300
@@ -95,7 +95,7 @@
     HTC_EP_RECV_PKT          EpRecv;        /* receive callback for connected endpoint */
     HTC_EP_RECV_REFILL       EpRecvRefill;  /* OPTIONAL receive re-fill callback for connected endpoint */
     HTC_EP_SEND_QUEUE_FULL   EpSendFull;    /* OPTIONAL send full callback */
-    HTC_EP_SEND_QUEUE_AVAIL  EpSendAvail;    /* OPTIONAL send available callback */
+    HTC_EP_SEND_QUEUE_AVAIL  EpSendAvail;   /* OPTIONAL send available callback */
 } HTC_EP_CALLBACKS;
 
 /* service connection information */
