Ticket 11 discussion

Page 1.0 of 1.36
  • Jesse Brandeburg

    Hi, thanks for the report, this is not a bug, UDP fragmentation offload is not supported in any of the intel wired ethernet hardware. I think you might be confusing the rx ip fragment checksum offload calculation in hardware with the UFO feature, which is actual transmit fragmentation for IP fragments (UDP)

    Maybe you can point me to the portion of the data sheet that has the issue that confused you and I can follow up with our documentation guys to see if we can get it clarified (if necessary)

  • Gilad Rom

    Gilad Rom - 2009-04-06

    Sorry if I might have used the wrong term - I'm talking about TSO,
    but using UDP. I was under the impression that this feature is enabled
    by using the ethtool ufo on command?

    The document I'm referring to is the "Intel® 82576 Gigabit Ethernet
    Controller Datasheet", section 7.2.4 (TCP/UDP Segmentation).

  • Jesse Brandeburg

    UFO and the way our hardware implements TSO for udp packets are different things.

    We do not have software support currently for TSO of udp packets, I think that it should work and have prototyped some code for other adapters to test out this feature. It is kind of crippled in that it doesn't generate true ip fragments, it generates a unique datagram for each packet, which would mess up UDP applications that were not expecting packets to come in this way.

    However if you have an application that can handle sending large chunks of data (don't need UFO) with the tso flag set in the skb, then the driver should be able to be modified to do the header replication in hardware. This of course assumes that the receiving end doesn't care that the data has a udp header per packet.

    for reference, UFO is for other vendor's hardware that can generate a packet stream like:

    input to driver
    skb > MTU size with UDP header

    output from hardware
    UDP packet with MF set
    IP frag
    IP frag
    IP frag

  • Gilad Rom

    Gilad Rom - 2009-04-06

    Thanks for the clarification.

    I am actually interested in generating a UDP header per packet, as my packets are all < MTU.
    Afaik, there's great savings involved, especially when it comes to CPU utilization, PCI bus utilization, etc.

    So, I figured I'd generate one big packet with a single header, and use one sendmsg() syscall
    to hand it down to the stack, have the driver break it into chunks, create the headers and send
    a bunch of < MTU sized UDP packets.

    I would greatly appreciate any driver patches or code samples you may
    have to test this feature out.

  • Jesse Brandeburg

    not really a bug, but a feature request, so I'm moving it over to features. I'll try to get something out shortly.

    What I had working before was a pktgen.c patch and a driver patch for ixgbe to try to enable udp segementation using tso methods.

  • Gilad Rom

    Gilad Rom - 2009-04-14

    Any news on the ixgbe TSO patch front? Really looking forward to it... ;)

  • Jesse Brandeburg

    I've got a patch to implement the change in the driver, with a pktgen change to demo how to use it. I've also verified that it works correctly in the 82576 hardware to segment UDP frames and update the IP header for each frame.

    The kernel will also need a modification to add a new NETIF_F flag to indicate the hardware can segment UDP frames with TSO style.

  • Jesse Brandeburg

    giladr: I'm sure you're long past this, but I still have those patches around if you never got them.

  • Jesse Brandeburg

    • status: open --> closed
    • group: --> Next_Release_(example)

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks