xen-netback: require fewer guest Rx slots when not using GSO
authorDavid Vrabel <david.vrabel@citrix.com>
Tue, 8 Sep 2015 13:25:14 +0000 (14:25 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Sep 2015 19:34:35 +0000 (12:34 -0700)
commit1d5d48523900a4b0f25d6b52f1a93c84bd671186
treec95e0fefd5685977313ff4c0794d22906a163253
parent9b57ab8b58571ee57030210b74e2aabd1a18cff2
xen-netback: require fewer guest Rx slots when not using GSO

Commit f48da8b14d04ca87ffcffe68829afd45f926ec6a (xen-netback: fix
unlimited guest Rx internal queue and carrier flapping) introduced a
regression.

The PV frontend in IPXE only places 4 requests on the guest Rx ring.
Since netback required at least (MAX_SKB_FRAGS + 1) slots, IPXE could
not receive any packets.

a) If GSO is not enabled on the VIF, fewer guest Rx slots are required
   for the largest possible packet.  Calculate the required slots
   based on the maximum GSO size or the MTU.

   This calculation of the number of required slots relies on
   1650d5455bd2 (xen-netback: always fully coalesce guest Rx packets)
   which present in 4.0-rc1 and later.

b) Reduce the Rx stall detection to checking for at least one
   available Rx request.  This is fine since we're predominately
   concerned with detecting interfaces which are down and thus have
   zero available Rx requests.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/xen-netback/common.h
drivers/net/xen-netback/netback.c