** Description changed: + + == SRU Justification == + Commit 66aa0678ef is request to fix four issues with the ibmveth driver. + The issues are as follows: + - Issue 1: ibmveth doesn't support largesend and checksum offload features when configured as "Trunk". + - Issue 2: SYN packet drops seen at destination VM. When the packet + originates, it has CHECKSUM_PARTIAL flag set and as it gets delivered to IO + server's inbound Trunk ibmveth, on validating "checksum good" bits in ibmveth + receive routine, SKB's ip_summed field is set with CHECKSUM_UNNECESSARY flag. + - Issue 3: First packet of a TCP connection will be dropped, if there is + no OVS flow cached in datapath. + - Issue 4: ibmveth driver doesn't have support for SKB's with frag_list. + + The details for the fixes to these issues are described in the commits + git log. + + + == Comment: #0 - BRYANT G. LY <[email protected]> - 2017-05-22 08:40:16 == ---Problem Description--- - - Issue 1: ibmveth doesn't support largesend and checksum offload features - when configured as "Trunk". Driver has explicit checks to prevent - enabling these offloads. + - Issue 1: ibmveth doesn't support largesend and checksum offload features + when configured as "Trunk". Driver has explicit checks to prevent + enabling these offloads. - - Issue 2: SYN packet drops seen at destination VM. When the packet - originates, it has CHECKSUM_PARTIAL flag set and as it gets delivered to - IO server's inbound Trunk ibmveth, on validating "checksum good" bits - in ibmveth receive routine, SKB's ip_summed field is set with - CHECKSUM_UNNECESSARY flag. This packet is then bridged by OVS (or Linux - Bridge) and delivered to outbound Trunk ibmveth. At this point the - outbound ibmveth transmit routine will not set "no checksum" and - "checksum good" bits in transmit buffer descriptor, as it does so only - when the ip_summed field is CHECKSUM_PARTIAL. When this packet gets - delivered to destination VM, TCP layer receives the packet with checksum - value of 0 and with no checksum related flags in ip_summed field. This - leads to packet drops. So, TCP connections never goes through fine. + - Issue 2: SYN packet drops seen at destination VM. When the packet + originates, it has CHECKSUM_PARTIAL flag set and as it gets delivered to + IO server's inbound Trunk ibmveth, on validating "checksum good" bits + in ibmveth receive routine, SKB's ip_summed field is set with + CHECKSUM_UNNECESSARY flag. This packet is then bridged by OVS (or Linux + Bridge) and delivered to outbound Trunk ibmveth. At this point the + outbound ibmveth transmit routine will not set "no checksum" and + "checksum good" bits in transmit buffer descriptor, as it does so only + when the ip_summed field is CHECKSUM_PARTIAL. When this packet gets + delivered to destination VM, TCP layer receives the packet with checksum + value of 0 and with no checksum related flags in ip_summed field. This + leads to packet drops. So, TCP connections never goes through fine. - - Issue 3: First packet of a TCP connection will be dropped, if there is - no OVS flow cached in datapath. OVS while trying to identify the flow, - computes the checksum. The computed checksum will be invalid at the - receiving end, as ibmveth transmit routine zeroes out the pseudo - checksum value in the packet. This leads to packet drop. + - Issue 3: First packet of a TCP connection will be dropped, if there is + no OVS flow cached in datapath. OVS while trying to identify the flow, + computes the checksum. The computed checksum will be invalid at the + receiving end, as ibmveth transmit routine zeroes out the pseudo + checksum value in the packet. This leads to packet drop. - - Issue 4: ibmveth driver doesn't have support for SKB's with frag_list. - When Physical NIC has GRO enabled and when OVS bridges these packets, - OVS vport send code will end up calling dev_queue_xmit, which in turn - calls validate_xmit_skb. - In validate_xmit_skb routine, the larger packets will get segmented into - MSS sized segments, if SKB has a frag_list and if the driver to which - they are delivered to doesn't support NETIF_F_FRAGLIST feature. - - Contact Information = Bryant G. Ly/[email protected] - + - Issue 4: ibmveth driver doesn't have support for SKB's with frag_list. + When Physical NIC has GRO enabled and when OVS bridges these packets, + OVS vport send code will end up calling dev_queue_xmit, which in turn + calls validate_xmit_skb. + In validate_xmit_skb routine, the larger packets will get segmented into + MSS sized segments, if SKB has a frag_list and if the driver to which + they are delivered to doesn't support NETIF_F_FRAGLIST feature. + + Contact Information = Bryant G. Ly/[email protected] + ---uname output--- 4.8.0-51.54 - - Machine Type = p8 - + + Machine Type = p8 + ---Debugger--- A debugger is not configured - + ---Steps to Reproduce--- - Increases performance greatly + Increases performance greatly - The patch has been accepted upstream: + The patch has been accepted upstream: https://patchwork.ozlabs.org/patch/764533/
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1692538 Title: Ubuntu 16.04.02: ibmveth: Support to enable LSO/CSO for Trunk VEA To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-power-systems/+bug/1692538/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
