ar71xx: re-enable descriptor splitting on ar716x after the previous bugfixes (#13072)
[openwrt/staging/jow.git] / target / linux / ar71xx / files / drivers / net / ethernet / atheros / ag71xx / ag71xx_main.c
index ed0403334139f561b7ddbabacb38e535130f9dac..2a7567ede5f6f007603de80a4fb469d37dad10f1 100644 (file)
@@ -704,7 +704,12 @@ static int ag71xx_fill_dma_desc(struct ag71xx_ring *ring, u32 addr, int len)
 
                if (cur_len > split) {
                        cur_len = split;
-                       if (len < split + 4)
+
+                       /*
+                        * TX will hang if DMA transfers <= 4 bytes,
+                        * make sure next segment is more than 4 bytes long.
+                        */
+                       if (len <= split + 4)
                                cur_len -= 4;
                }
 
@@ -1257,12 +1262,10 @@ static int ag71xx_probe(struct platform_device *pdev)
        ag->max_frame_len = pdata->max_frame_len;
        ag->desc_pktlen_mask = pdata->desc_pktlen_mask;
 
-#ifdef notyet
        if (!pdata->is_ar724x && !pdata->is_ar91xx) {
                ag->tx_ring.desc_split = AG71XX_TX_RING_SPLIT;
                ag->tx_ring.size *= AG71XX_TX_RING_DS_PER_PKT;
        }
-#endif
 
        ag->stop_desc = dma_alloc_coherent(NULL,
                sizeof(struct ag71xx_desc), &ag->stop_desc_dma, GFP_KERNEL);