diff mbox series

[net-next,2/3] r8169: use new helper tcp_v6_gso_csum_prep

Message ID 02ea88e7-1a79-f779-d58c-bb1dced0b3b4@gmail.com
State Awaiting Upstream
Headers show
Series None | expand

Commit Message

Heiner Kallweit Feb. 17, 2020, 9:40 p.m. UTC
Simplify the code by using new helper tcp_v6_gso_csum_prep.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 26 ++---------------------
 1 file changed, 2 insertions(+), 24 deletions(-)

Comments

Alexander H Duyck Feb. 18, 2020, 6:37 p.m. UTC | #1
On Mon, Feb 17, 2020 at 1:42 PM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>
> Simplify the code by using new helper tcp_v6_gso_csum_prep.
>
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> ---
>  drivers/net/ethernet/realtek/r8169_main.c | 26 ++---------------------
>  1 file changed, 2 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 5a9143b50..75ba10069 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -4108,29 +4108,6 @@ static bool rtl_test_hw_pad_bug(struct rtl8169_private *tp, struct sk_buff *skb)
>         return skb->len < ETH_ZLEN && tp->mac_version == RTL_GIGA_MAC_VER_34;
>  }
>
> -/* msdn_giant_send_check()
> - * According to the document of microsoft, the TCP Pseudo Header excludes the
> - * packet length for IPv6 TCP large packets.
> - */
> -static int msdn_giant_send_check(struct sk_buff *skb)
> -{
> -       const struct ipv6hdr *ipv6h;
> -       struct tcphdr *th;
> -       int ret;
> -
> -       ret = skb_cow_head(skb, 0);
> -       if (ret)
> -               return ret;
> -
> -       ipv6h = ipv6_hdr(skb);
> -       th = tcp_hdr(skb);
> -
> -       th->check = 0;
> -       th->check = ~tcp_v6_check(0, &ipv6h->saddr, &ipv6h->daddr, 0);
> -
> -       return ret;
> -}
> -
>  static void rtl8169_tso_csum_v1(struct sk_buff *skb, u32 *opts)
>  {
>         u32 mss = skb_shinfo(skb)->gso_size;
> @@ -4163,9 +4140,10 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
>                         break;
>
>                 case htons(ETH_P_IPV6):
> -                       if (msdn_giant_send_check(skb))
> +                       if (skb_cow_head(skb, 0))
>                                 return false;
>
> +                       tcp_v6_gso_csum_prep(skb, false);
>                         opts[0] |= TD1_GTSENV6;
>                         break;
>

This change looks more or less identical to the one you made in
"drivers/net/usb/r8152.c" for patch 3. If you have to resubmit it
might make sense to pull that change out and include it here since
they are both essentially the same change.
Heiner Kallweit Feb. 18, 2020, 6:45 p.m. UTC | #2
On 18.02.2020 19:37, Alexander Duyck wrote:
> On Mon, Feb 17, 2020 at 1:42 PM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>>
>> Simplify the code by using new helper tcp_v6_gso_csum_prep.
>>
>> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
>> ---
>>  drivers/net/ethernet/realtek/r8169_main.c | 26 ++---------------------
>>  1 file changed, 2 insertions(+), 24 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>> index 5a9143b50..75ba10069 100644
>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>> @@ -4108,29 +4108,6 @@ static bool rtl_test_hw_pad_bug(struct rtl8169_private *tp, struct sk_buff *skb)
>>         return skb->len < ETH_ZLEN && tp->mac_version == RTL_GIGA_MAC_VER_34;
>>  }
>>
>> -/* msdn_giant_send_check()
>> - * According to the document of microsoft, the TCP Pseudo Header excludes the
>> - * packet length for IPv6 TCP large packets.
>> - */
>> -static int msdn_giant_send_check(struct sk_buff *skb)
>> -{
>> -       const struct ipv6hdr *ipv6h;
>> -       struct tcphdr *th;
>> -       int ret;
>> -
>> -       ret = skb_cow_head(skb, 0);
>> -       if (ret)
>> -               return ret;
>> -
>> -       ipv6h = ipv6_hdr(skb);
>> -       th = tcp_hdr(skb);
>> -
>> -       th->check = 0;
>> -       th->check = ~tcp_v6_check(0, &ipv6h->saddr, &ipv6h->daddr, 0);
>> -
>> -       return ret;
>> -}
>> -
>>  static void rtl8169_tso_csum_v1(struct sk_buff *skb, u32 *opts)
>>  {
>>         u32 mss = skb_shinfo(skb)->gso_size;
>> @@ -4163,9 +4140,10 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
>>                         break;
>>
>>                 case htons(ETH_P_IPV6):
>> -                       if (msdn_giant_send_check(skb))
>> +                       if (skb_cow_head(skb, 0))
>>                                 return false;
>>
>> +                       tcp_v6_gso_csum_prep(skb, false);
>>                         opts[0] |= TD1_GTSENV6;
>>                         break;
>>
> 
> This change looks more or less identical to the one you made in
> "drivers/net/usb/r8152.c" for patch 3. If you have to resubmit it
> might make sense to pull that change out and include it here since
> they are both essentially the same change.
> 
Right, it's the same change. I just treated r8169 separately because
I happen to be maintainer of it.
diff mbox series

Patch

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 5a9143b50..75ba10069 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4108,29 +4108,6 @@  static bool rtl_test_hw_pad_bug(struct rtl8169_private *tp, struct sk_buff *skb)
 	return skb->len < ETH_ZLEN && tp->mac_version == RTL_GIGA_MAC_VER_34;
 }
 
-/* msdn_giant_send_check()
- * According to the document of microsoft, the TCP Pseudo Header excludes the
- * packet length for IPv6 TCP large packets.
- */
-static int msdn_giant_send_check(struct sk_buff *skb)
-{
-	const struct ipv6hdr *ipv6h;
-	struct tcphdr *th;
-	int ret;
-
-	ret = skb_cow_head(skb, 0);
-	if (ret)
-		return ret;
-
-	ipv6h = ipv6_hdr(skb);
-	th = tcp_hdr(skb);
-
-	th->check = 0;
-	th->check = ~tcp_v6_check(0, &ipv6h->saddr, &ipv6h->daddr, 0);
-
-	return ret;
-}
-
 static void rtl8169_tso_csum_v1(struct sk_buff *skb, u32 *opts)
 {
 	u32 mss = skb_shinfo(skb)->gso_size;
@@ -4163,9 +4140,10 @@  static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
 			break;
 
 		case htons(ETH_P_IPV6):
-			if (msdn_giant_send_check(skb))
+			if (skb_cow_head(skb, 0))
 				return false;
 
+			tcp_v6_gso_csum_prep(skb, false);
 			opts[0] |= TD1_GTSENV6;
 			break;