}
 
        /* 3 1. pick up first frame */
-       do {
-               rtw_free_xmitframe(pxmitpriv, pxmitframe);
-
-               pxmitframe = rtw_dequeue_xframe(pxmitpriv, pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry);
-               if (pxmitframe == NULL) {
-                       /*  no more xmit frame, release xmit buffer */
-                       rtw_free_xmitbuf(pxmitpriv, pxmitbuf);
-                       return false;
-               }
+       rtw_free_xmitframe(pxmitpriv, pxmitframe);
 
-               pxmitframe->pxmitbuf = pxmitbuf;
-               pxmitframe->buf_addr = pxmitbuf->pbuf;
-               pxmitbuf->priv_data = pxmitframe;
+       pxmitframe = rtw_dequeue_xframe(pxmitpriv, pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry);
+       if (pxmitframe == NULL) {
+               /*  no more xmit frame, release xmit buffer */
+               rtw_free_xmitbuf(pxmitpriv, pxmitbuf);
+               return false;
+       }
 
-               pxmitframe->agg_num = 1; /*  alloc xmitframe should assign to 1. */
-               pxmitframe->pkt_offset = 1; /*  first frame of aggregation, reserve offset */
+       pxmitframe->pxmitbuf = pxmitbuf;
+       pxmitframe->buf_addr = pxmitbuf->pbuf;
+       pxmitbuf->priv_data = pxmitframe;
 
-               rtw_xmitframe_coalesce(adapt, pxmitframe->pkt, pxmitframe);
+       pxmitframe->agg_num = 1; /*  alloc xmitframe should assign to 1. */
+       pxmitframe->pkt_offset = 1; /*  first frame of aggregation, reserve offset */
 
-               /*  always return ndis_packet after rtw_xmitframe_coalesce */
-               rtw_os_xmit_complete(adapt, pxmitframe);
+       rtw_xmitframe_coalesce(adapt, pxmitframe->pkt, pxmitframe);
 
-               break;
-       } while (1);
+       /*  always return ndis_packet after rtw_xmitframe_coalesce */
+       rtw_os_xmit_complete(adapt, pxmitframe);
 
        /* 3 2. aggregate same priority and same DA(AP or STA) frames */
        pfirstframe = pxmitframe;