]> git.baikalelectronics.ru Git - kernel.git/commit
sfc: Fix maximum number of TSO segments and minimum TX queue size
authorBen Hutchings <bhutchings@solarflare.com>
Mon, 30 Jul 2012 15:57:44 +0000 (15:57 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 Aug 2012 07:19:17 +0000 (00:19 -0700)
commitabc2d9ffafa3f365ca2cecde3b6f202e65ebae86
tree94c11a47268450c5ba913eeba5c2f7a0e3780126
parent28f662152a9099fc7612732c1aed116e5f5c6bb2
sfc: Fix maximum number of TSO segments and minimum TX queue size

Currently an skb requiring TSO may not fit within a minimum-size TX
queue.  The TX queue selected for the skb may stall and trigger the TX
watchdog repeatedly (since the problem skb will be retried after the
TX reset).  This issue is designated as CVE-2012-3412.

Set the maximum number of TSO segments for our devices to 100.  This
should make no difference to behaviour unless the actual MSS is less
than about 700.  Increase the minimum TX queue size accordingly to
allow for 2 worst-case skbs, so that there will definitely be space
to add an skb after we wake a queue.

To avoid invalidating existing configurations, change
efx_ethtool_set_ringparam() to fix up values that are too small rather
than returning -EINVAL.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/sfc/efx.c
drivers/net/ethernet/sfc/efx.h
drivers/net/ethernet/sfc/ethtool.c
drivers/net/ethernet/sfc/tx.c