#define DHDSDIO_MEM_DUMP_FNAME         "mem_dump"
 #endif
 
-#define QLEN           256     /* bulk rx and tx queue lengths */
-#define FCHI           (QLEN - 10)
-#define FCLOW          (FCHI / 2)
+#define TXQLEN         2048    /* bulk tx queue length */
+#define TXHI           (TXQLEN - 256)  /* turn on flow control above TXHI */
+#define TXLOW          (TXHI - 256)    /* turn off flow control below TXLOW */
 #define PRIOMASK       7
 
 #define TXRETRIES      2       /* # of retries for tx frames */
                }
                dhd_os_sdunlock_txq(bus->dhd);
 
-               if ((pktq_len(&bus->txq) >= FCHI) && dhd_doflow)
+               if ((pktq_len(&bus->txq) >= TXHI) && dhd_doflow)
                        dhd_txflowcontrol(bus->dhd, 0, ON);
 
 #ifdef DHD_DEBUG
 
        /* Deflow-control stack if needed */
        if (dhd_doflow && dhd->up && (dhd->busstate == DHD_BUS_DATA) &&
-           dhd->txoff && (pktq_len(&bus->txq) < FCLOW))
+           dhd->txoff && (pktq_len(&bus->txq) < TXLOW))
                dhd_txflowcontrol(dhd, 0, OFF);
 
        return cnt;
        /* Set core control so an SDIO reset does a backplane reset */
        OR_REG(&bus->regs->corecontrol, CC_BPRESEN);
 
-       pktq_init(&bus->txq, (PRIOMASK + 1), QLEN);
+       pktq_init(&bus->txq, (PRIOMASK + 1), TXQLEN);
 
        /* Locate an appropriately-aligned portion of hdrbuf */
        bus->rxhdr = (u8 *) roundup((unsigned long)&bus->hdrbuf[0], DHD_SDALIGN);