atl1: change cmb write threshold
authorJay Cliburn <jacliburn@bellsouth.net>
Thu, 19 Jul 2007 23:45:12 +0000 (18:45 -0500)
committerJeff Garzik <jeff@garzik.org>
Tue, 24 Jul 2007 20:28:41 +0000 (16:28 -0400)
Change the threshold number of descriptors used to trigger CMB writes.
The vendor reports that under certain conditions this will reduce the
number of unnecessary tx interrupts and improve rx performance.

This change is lifted directly from vendor version 1.2.40.2 of the L1
driver.

Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/atl1/atl1_main.c

index 3b8f633ec05e503af1106df7c5809e53fc9554d4..6aa2dc32727ec6c53cddc682b48e23bbb4304f33 100644 (file)
@@ -917,7 +917,10 @@ static u32 atl1_configure(struct atl1_adapter *adapter)
        iowrite32(value, hw->hw_addr + REG_DMA_CTRL);
 
        /* config CMB / SMB */
-       value = hw->cmb_rrd | ((u32) hw->cmb_tpd << 16);
+       value = (hw->cmb_tpd > adapter->tpd_ring.count) ?
+               hw->cmb_tpd : adapter->tpd_ring.count;
+       value <<= 16;
+       value |= hw->cmb_rrd;
        iowrite32(value, hw->hw_addr + REG_CMB_WRITE_TH);
        value = hw->cmb_rx_timer | ((u32) hw->cmb_tx_timer << 16);
        iowrite32(value, hw->hw_addr + REG_CMB_WRITE_TIMER);