lkml.org 
[lkml]   [2013]   [Nov]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.8 34/91] sctp: Perform software checksum if packet has to be fragmented.
    Date
    3.8.13.13 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Vlad Yasevich <vyasevich@gmail.com>

    [ Upstream commit d2dbbba77e95dff4b4f901fee236fef6d9552072 ]

    IP/IPv6 fragmentation knows how to compute only TCP/UDP checksum.
    This causes problems if SCTP packets has to be fragmented and
    ipsummed has been set to PARTIAL due to checksum offload support.
    This condition can happen when retransmitting after MTU discover,
    or when INIT or other control chunks are larger then MTU.
    Check for the rare fragmentation condition in SCTP and use software
    checksum calculation in this case.

    CC: Fan Du <fan.du@windriver.com>
    Signed-off-by: Vlad Yasevich <vyasevich@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    net/sctp/output.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/net/sctp/output.c b/net/sctp/output.c
    index 0c04637..d111b63 100644
    --- a/net/sctp/output.c
    +++ b/net/sctp/output.c
    @@ -551,7 +551,7 @@ int sctp_packet_transmit(struct sctp_packet *packet)
    */
    if (!sctp_checksum_disable) {
    if (!(dst->dev->features & NETIF_F_SCTP_CSUM) ||
    - (dst_xfrm(dst) != NULL)) {
    + (dst_xfrm(dst) != NULL) || packet->ipfragok) {
    __u32 crc32 = sctp_start_cksum((__u8 *)sh, cksum_buf_len);

    /* 3) Put the resultant value into the checksum field in the
    --
    1.8.1.2


    \
     
     \ /
      Last update: 2013-11-08 04:01    [W:4.621 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site