diff mbox series

[net] iwlwifi: provide gso_type to GSO packets

Message ID 20210125150949.619309-1-eric.dumazet@gmail.com
State New
Headers show
Series [net] iwlwifi: provide gso_type to GSO packets | expand

Commit Message

Eric Dumazet Jan. 25, 2021, 3:09 p.m. UTC
From: Eric Dumazet <edumazet@google.com>

net/core/tso.c got recent support for USO, and this broke iwlfifi
because the driver implemented a limited form of GSO.

Providing ->gso_type allows for skb_is_gso_tcp() to provide
a correct result.

Fixes: 3d5b459ba0e3 ("net: tso: add UDP segmentation support")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Ben Greear <greearb@candelatech.com>
Bisected-by: Ben Greear <greearb@candelatech.com>
Tested-by: Ben Greear <greearb@candelatech.com>
Cc: Luca Coelho <luciano.coelho@intel.com>
Cc: linux-wireless@vger.kernel.org
Cc: Johannes Berg <johannes@sipsolutions.net>
---
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Ben Greear Jan. 25, 2021, 3:15 p.m. UTC | #1
On 1/25/21 7:09 AM, Eric Dumazet wrote:
> From: Eric Dumazet <edumazet@google.com>
> 
> net/core/tso.c got recent support for USO, and this broke iwlfifi
> because the driver implemented a limited form of GSO.
> 
> Providing ->gso_type allows for skb_is_gso_tcp() to provide
> a correct result.
> 
> Fixes: 3d5b459ba0e3 ("net: tso: add UDP segmentation support")
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Reported-by: Ben Greear <greearb@candelatech.com>
> Bisected-by: Ben Greear <greearb@candelatech.com>

I appreciate the credit, but the bisect and some other initial bug hunting was
done by people on this thread:

https://bugzilla.kernel.org/show_bug.cgi?id=209913

Thanks,
Ben

> Tested-by: Ben Greear <greearb@candelatech.com>
> Cc: Luca Coelho <luciano.coelho@intel.com>
> Cc: linux-wireless@vger.kernel.org
> Cc: Johannes Berg <johannes@sipsolutions.net>
> ---
>   drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
> index a983c215df310776ffe67f3b3ffa203eab609bfc..3712adc3ccc2511d46bcc855efbfba41c487d8e6 100644
> --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
> +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
> @@ -773,6 +773,7 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes,
>   
>   	next = skb_gso_segment(skb, netdev_flags);
>   	skb_shinfo(skb)->gso_size = mss;
> +	skb_shinfo(skb)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6;
>   	if (WARN_ON_ONCE(IS_ERR(next)))
>   		return -EINVAL;
>   	else if (next)
> @@ -795,6 +796,8 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes,
>   
>   		if (tcp_payload_len > mss) {
>   			skb_shinfo(tmp)->gso_size = mss;
> +			skb_shinfo(tmp)->gso_type = ipv4 ? SKB_GSO_TCPV4 :
> +							   SKB_GSO_TCPV6;
>   		} else {
>   			if (qos) {
>   				u8 *qc;
>
Eric Dumazet Jan. 25, 2021, 3:25 p.m. UTC | #2
On Mon, Jan 25, 2021 at 4:15 PM Ben Greear <greearb@candelatech.com> wrote:
>
> On 1/25/21 7:09 AM, Eric Dumazet wrote:
> > From: Eric Dumazet <edumazet@google.com>
> >
> > net/core/tso.c got recent support for USO, and this broke iwlfifi
> > because the driver implemented a limited form of GSO.
> >
> > Providing ->gso_type allows for skb_is_gso_tcp() to provide
> > a correct result.
> >
> > Fixes: 3d5b459ba0e3 ("net: tso: add UDP segmentation support")
> > Signed-off-by: Eric Dumazet <edumazet@google.com>
> > Reported-by: Ben Greear <greearb@candelatech.com>
> > Bisected-by: Ben Greear <greearb@candelatech.com>
>
> I appreciate the credit, but the bisect and some other initial bug hunting was
> done by people on this thread:
>
> https://bugzilla.kernel.org/show_bug.cgi?id=209913
>

Well, I do not think bugzilla can display full names/emails ?
patchwork-bot+netdevbpf@kernel.org Jan. 26, 2021, 11:20 p.m. UTC | #3
Hello:

This patch was applied to netdev/net.git (refs/heads/master):

On Mon, 25 Jan 2021 07:09:49 -0800 you wrote:
> From: Eric Dumazet <edumazet@google.com>

> 

> net/core/tso.c got recent support for USO, and this broke iwlfifi

> because the driver implemented a limited form of GSO.

> 

> Providing ->gso_type allows for skb_is_gso_tcp() to provide

> a correct result.

> 

> [...]


Here is the summary with links:
  - [net] iwlwifi: provide gso_type to GSO packets
    https://git.kernel.org/netdev/net/c/81a86e1bd8e7

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
Coelho, Luciano Jan. 27, 2021, 6:02 a.m. UTC | #4
On Tue, 2021-01-26 at 21:55 +0100, Johannes Berg wrote:
> On Tue, 2021-01-26 at 12:32 -0800, Jakub Kicinski wrote:

> > On Mon, 25 Jan 2021 07:09:49 -0800 Eric Dumazet wrote:

> > > From: Eric Dumazet <edumazet@google.com>

> > > 

> > > net/core/tso.c got recent support for USO, and this broke iwlfifi

> > > because the driver implemented a limited form of GSO.

> > > 

> > > Providing ->gso_type allows for skb_is_gso_tcp() to provide

> > > a correct result.

> > > 

> > > Fixes: 3d5b459ba0e3 ("net: tso: add UDP segmentation support")

> > > Signed-off-by: Eric Dumazet <edumazet@google.com>

> > > Reported-by: Ben Greear <greearb@candelatech.com>

> > > Bisected-by: Ben Greear <greearb@candelatech.com>

> > > Tested-by: Ben Greear <greearb@candelatech.com>

> > > Cc: Luca Coelho <luciano.coelho@intel.com>

> > > Cc: linux-wireless@vger.kernel.org

> > > Cc: Johannes Berg <johannes@sipsolutions.net>

> > 

> > Johannes, Eric tagged this for net, are you okay with me taking it?

> > No strong preference here.

> 

> I guess that really would normally go through Luca's and Kalle's trees,

> but yes, please just take it, it's been long and it won't conflict with

> anything.


Yes, that's fine by me too.  Just take it via net and we'll get it into
our trees eventually.

--
Cheers,
Luca.
diff mbox series

Patch

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index a983c215df310776ffe67f3b3ffa203eab609bfc..3712adc3ccc2511d46bcc855efbfba41c487d8e6 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -773,6 +773,7 @@  iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes,
 
 	next = skb_gso_segment(skb, netdev_flags);
 	skb_shinfo(skb)->gso_size = mss;
+	skb_shinfo(skb)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6;
 	if (WARN_ON_ONCE(IS_ERR(next)))
 		return -EINVAL;
 	else if (next)
@@ -795,6 +796,8 @@  iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes,
 
 		if (tcp_payload_len > mss) {
 			skb_shinfo(tmp)->gso_size = mss;
+			skb_shinfo(tmp)->gso_type = ipv4 ? SKB_GSO_TCPV4 :
+							   SKB_GSO_TCPV6;
 		} else {
 			if (qos) {
 				u8 *qc;