Return-path: Received: from tama50.ecl.ntt.co.jp ([129.60.39.147]:45332 "EHLO tama50.ecl.ntt.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753250AbbJZIRm (ORCPT ); Mon, 26 Oct 2015 04:17:42 -0400 Subject: Re: [PATCH v2] net: tso: add support for IPv6 To: "Grumbach, Emmanuel" , "netdev@vger.kernel.org" References: <1445803107-18513-1-git-send-email-emmanuel.grumbach@intel.com> <1445803371-19778-1-git-send-email-emmanuel.grumbach@intel.com> <562DA5FF.6040307@lab.ntt.co.jp> <0BA3FCBA62E2DC44AF3030971E174FB32E8B07E2@hasmsx107.ger.corp.intel.com> <562DE0A4.80100@lab.ntt.co.jp> Cc: "linux-wireless@vger.kernel.org" , "egrumbach@gmail.com" From: Toshiaki Makita Message-ID: <562DE1A0.9010604@lab.ntt.co.jp> (sfid-20151026_091752_133200_10A34F6E) Date: Mon, 26 Oct 2015 17:17:36 +0900 MIME-Version: 1.0 In-Reply-To: <562DE0A4.80100@lab.ntt.co.jp> Content-Type: text/plain; charset=windows-1252 Sender: linux-wireless-owner@vger.kernel.org List-ID: On 2015/10/26 17:13, Toshiaki Makita wrote: > On 2015/10/26 16:47, Grumbach, Emmanuel wrote: >> On 10/26/2015 06:03 AM, Toshiaki Makita wrote: >>> On 2015/10/26 5:02, Emmanuel Grumbach wrote: >>>> Adding IPv6 for the TSO helper API is trivial: >>>> * Don't play with the id (which doesn't exist in IPv6) >>>> * Correctly update the payload_len (don't include the >>>> length of the IP header itself) >>> ... >>>> memcpy(hdr, skb->data, hdr_len); >>>> - iph = (struct iphdr *)(hdr + mac_hdr_len); >>>> - iph->id = htons(tso->ip_id); >>>> - iph->tot_len = htons(size + hdr_len - mac_hdr_len); >>>> + if (skb->protocol == htons(ETH_P_IP)) { >>> >>> I guess this should be vlan_get_protocol(skb). >> >> I truly don't know. I guess we could have VLANs, but I'd need to check >> how the packet would look like after it exits mac80211. > > I don't know much about mac80211. > > What I see is that mvneta has TSO in vlan_features and it uses > tso_build_hdr(). When vlan device is used, we cannot access network > protocol by skb->protocol without HW vlan acceleration. > So it looks like this change corrupts TSO functionality on mvneta. > >> If we need that, I'll likely do this check once in tso_start() and add a >> variable to struct tso_t. > > I'm not sure if an additional variable is needed. > At least, skb_network_offset()/ip_hdr() should correctly handle (skip) > vlan headers. Ah, sorry, I misread your suggestion. Additional variable would make sense to me. Toshiaki Makita