[PATCH] sky2: receive queue watermark tweak
This patch makes the receive performance on some systems go from 714MB/s to 941MB/s. It adjusts the watermark of the receive queue to be lower, thereby avoiding excess hardware flow control. This is most important on the systems which have little/no additional buffering. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
6771290102
commit
c3905bc4b7
@ -1062,11 +1062,16 @@ static int sky2_rx_start(struct sky2_port *sky2)
|
|||||||
sky2->rx_put = sky2->rx_next = 0;
|
sky2->rx_put = sky2->rx_next = 0;
|
||||||
sky2_qset(hw, rxq);
|
sky2_qset(hw, rxq);
|
||||||
|
|
||||||
|
/* On PCI express lowering the watermark gives better performance */
|
||||||
|
if (pci_find_capability(hw->pdev, PCI_CAP_ID_EXP))
|
||||||
|
sky2_write32(hw, Q_ADDR(rxq, Q_WM), BMU_WM_PEX);
|
||||||
|
|
||||||
|
/* These chips have no ram buffer?
|
||||||
|
* MAC Rx RAM Read is controlled by hardware */
|
||||||
if (hw->chip_id == CHIP_ID_YUKON_EC_U &&
|
if (hw->chip_id == CHIP_ID_YUKON_EC_U &&
|
||||||
(hw->chip_rev == CHIP_REV_YU_EC_U_A1 || hw->chip_rev == CHIP_REV_YU_EC_U_B0)) {
|
(hw->chip_rev == CHIP_REV_YU_EC_U_A1
|
||||||
/* MAC Rx RAM Read is controlled by hardware */
|
|| hw->chip_rev == CHIP_REV_YU_EC_U_B0))
|
||||||
sky2_write32(hw, Q_ADDR(rxq, Q_F), F_M_RX_RAM_DIS);
|
sky2_write32(hw, Q_ADDR(rxq, Q_F), F_M_RX_RAM_DIS);
|
||||||
}
|
|
||||||
|
|
||||||
sky2_prefetch_init(hw, rxq, sky2->rx_le_map, RX_LE_SIZE - 1);
|
sky2_prefetch_init(hw, rxq, sky2->rx_le_map, RX_LE_SIZE - 1);
|
||||||
|
|
||||||
|
@ -680,6 +680,7 @@ enum {
|
|||||||
BMU_FIFO_ENA | BMU_OP_ON,
|
BMU_FIFO_ENA | BMU_OP_ON,
|
||||||
|
|
||||||
BMU_WM_DEFAULT = 0x600,
|
BMU_WM_DEFAULT = 0x600,
|
||||||
|
BMU_WM_PEX = 0x80,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Tx BMU Control / Status Registers (Yukon-2) */
|
/* Tx BMU Control / Status Registers (Yukon-2) */
|
||||||
|
Loading…
Reference in New Issue
Block a user