Re: [PATCH net 2/5] i40e: Implement ndo_gso_check()
From: Jesse Gross <hidden>
Date: 2014-11-20 20:14:47
Also in:
lkml
On Thu, Nov 20, 2014 at 11:16 AM, Joe Stringer [off-list ref] wrote:
On Tuesday, November 04, 2014 15:45:22 Jesse Gross wrote:quoted
On Tue, Nov 4, 2014 at 1:56 PM, Joe Stringer [off-list ref] wrote:quoted
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.cb/drivers/net/ethernet/intel/i40e/i40e_main.c index c3a7f4a..21829b5 100644--- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c +static bool i40e_gso_check(struct sk_buff *skb, struct net_device *dev) +{ + if ((skb_shinfo(skb)->gso_type & SKB_GSO_UDP_TUNNEL) && + (skb->inner_protocol_type != ENCAP_TYPE_ETHER || + skb->inner_protocol != htons(ETH_P_TEB) || + skb_inner_mac_header(skb) - skb_transport_header(skb) > 64)) + return false;I think it may be possible to even support a few more things here. According to the datasheet here: http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/xl71 0-10-40-controller-datasheet.pdf This can actually support 64 bytes beyond the tunnel header, which would make for a total of 80 bytes. It looks like it can also support IPv4 or IPv6 beyond just Ethernet as the encapsulated protocol. Intel guys, can you confirm that this is correct?I'm just respinning this for v4/6 beyond GRE/UDP tunnel and IPIP, and I found the description of max protocol parsing size of 480B (with individual header limit of 255B). I couldn't find where you get this 64/80 number or which headers it maps to. Could you (or one of the intel guys) expand on this?
The number that I gave was from the section on Geneve support (on page 708), which says that it can support up to 64 bytes of options (this was also my understanding from previous conversations with Intel guys). I searched for 480 byte limit and it seems like it for receive instead of transmit, which could conceivably be different.