gianfar: Implement PAUSE frame generation support
authorMatei Pavaluca <matei.pavaluca@freescale.com>
Mon, 27 Oct 2014 08:42:44 +0000 (10:42 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Oct 2014 18:33:16 +0000 (14:33 -0400)
commit45b679c9a3ccd9e34f28e6ec677b812a860eb8eb
tree2be284741c04e285cc42a11b2a021c045bc44bd5
parent43ef8d29eebb6f533f11439d48a927426c5a1918
gianfar: Implement PAUSE frame generation support

The hardware can automatically generate pause frames when the number
of free buffers drops under a certain threshold, but in order to do this,
the address of the last free buffer needs to be written to a specific
register for each RX queue.

This has to be done in 'gfar_clean_rx_ring' which is called for each
RX queue. In order not to impact performance, by adding a register write
for each incoming packet, this operation is done only when the PAUSE frame
transmission is enabled.

Whenever the link is readjusted, this capability is turned on or off.

Signed-off-by: Matei Pavaluca <matei.pavaluca@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/gianfar.c
drivers/net/ethernet/freescale/gianfar.h
drivers/net/ethernet/freescale/gianfar_ethtool.c