• I
    xen: netfront: handle incoming GSO SKBs which are not CHECKSUM_PARTIAL · e0ce4af9
    Ian Campbell 提交于
    The Linux network stack expects all GSO SKBs to have ip_summed ==
    CHECKSUM_PARTIAL (which implies that the frame contains a partial
    checksum) and the Xen network ring protocol similarly expects an SKB
    which has GSO set to also have NETRX_csum_blank (which also implies a
    partial checksum).
    
    However there have been cases of buggy guests which mark a frame as
    GSO but do not set csum_blank. If we detect that we a receiving such a
    frame (which manifests as ip_summed != PARTIAL && skb_is_gso) then
    force the SKB to partial and recalculate the checksum, since we cannot
    rely on the peer having done so if they have not set csum_blank.
    
    Add an ethtool stat to track occurances of this event.
    Signed-off-by: NIan Campbell <ian.campbell@citrix.com>
    Cc: Jeremy Fitzhardinge <jeremy@goop.org>
    Cc: David Miller <davem@davemloft.net>
    Cc: xen-devel@lists.xensource.com
    Cc: netdev@vger.kernel.org
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    e0ce4af9
xen-netfront.c 46.8 KB