* [Intel-wired-lan] [PATCH net-next 1/6] net: add inline function skb_csum_is_sctp
@ 2021-01-16 6:13 ` Xin Long
0 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: intel-wired-lan
This patch is to define a inline function skb_csum_is_sctp(), and
also replace all places where it checks if it's a SCTP CSUM skb.
This function would be used later in many networking drivers in
the following patches.
Suggested-by: Alexander Duyck <alexander.duyck@gmail.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 2 +-
include/linux/skbuff.h | 5 +++++
net/core/dev.c | 2 +-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
index ac4cd5d..162a1ff 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
@@ -979,7 +979,7 @@ static int ionic_tx_calc_csum(struct ionic_queue *q, struct sk_buff *skb)
stats->vlan_inserted++;
}
- if (skb->csum_not_inet)
+ if (skb_csum_is_sctp(skb))
stats->crc32_csum++;
else
stats->csum++;
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index c9568cf..46f901a 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4621,6 +4621,11 @@ static inline void skb_reset_redirect(struct sk_buff *skb)
#endif
}
+static inline bool skb_csum_is_sctp(struct sk_buff *skb)
+{
+ return skb->csum_not_inet;
+}
+
static inline void skb_set_kcov_handle(struct sk_buff *skb,
const u64 kcov_handle)
{
diff --git a/net/core/dev.c b/net/core/dev.c
index 0a31d4e..bbd306f 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3617,7 +3617,7 @@ static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb,
int skb_csum_hwoffload_help(struct sk_buff *skb,
const netdev_features_t features)
{
- if (unlikely(skb->csum_not_inet))
+ if (unlikely(skb_csum_is_sctp(skb)))
return !!(features & NETIF_F_SCTP_CRC) ? 0 :
skb_crc32c_csum_help(skb);
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH net-next 2/6] net: igb: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-16 6:13 ` Xin Long
-1 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: network dev, linux-sctp
Cc: Marcelo Ricardo Leitner, Neil Horman, davem, Jakub Kicinski,
Alexander Duyck, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP
CRC checksum offload packet, and there is no need to parse the
packet to check its proto field, especially when it's a UDP or
GRE encapped packet.
So this patch also makes igb support SCTP CRC checksum offload
for UDP and GRE encapped packets.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/igb/igb_main.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 03f78fd..8757ad0 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -5959,15 +5959,6 @@ static int igb_tso(struct igb_ring *tx_ring,
return 1;
}
-static inline bool igb_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static void igb_tx_csum(struct igb_ring *tx_ring, struct igb_tx_buffer *first)
{
struct sk_buff *skb = first->skb;
@@ -5990,10 +5981,7 @@ static void igb_tx_csum(struct igb_ring *tx_ring, struct igb_tx_buffer *first)
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if (((first->protocol == htons(ETH_P_IP)) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- ((first->protocol == htons(ETH_P_IPV6)) &&
- igb_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = E1000_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 2/6] net: igb: use skb_csum_is_sctp instead of protocol check
@ 2021-01-16 6:13 ` Xin Long
0 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP
CRC checksum offload packet, and there is no need to parse the
packet to check its proto field, especially when it's a UDP or
GRE encapped packet.
So this patch also makes igb support SCTP CRC checksum offload
for UDP and GRE encapped packets.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/igb/igb_main.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 03f78fd..8757ad0 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -5959,15 +5959,6 @@ static int igb_tso(struct igb_ring *tx_ring,
return 1;
}
-static inline bool igb_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static void igb_tx_csum(struct igb_ring *tx_ring, struct igb_tx_buffer *first)
{
struct sk_buff *skb = first->skb;
@@ -5990,10 +5981,7 @@ static void igb_tx_csum(struct igb_ring *tx_ring, struct igb_tx_buffer *first)
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if (((first->protocol == htons(ETH_P_IP)) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- ((first->protocol == htons(ETH_P_IPV6)) &&
- igb_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = E1000_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH net-next 3/6] net: igbvf: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-16 6:13 ` Xin Long
-1 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: network dev, linux-sctp
Cc: Marcelo Ricardo Leitner, Neil Horman, davem, Jakub Kicinski,
Alexander Duyck, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
checksum offload packet, and yet it also makes igbvf support SCTP
CRC checksum offload for UDP and GRE encapped packets, just as it
does in igb driver.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/igbvf/netdev.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c
index 30fdea2..fb3fbcb 100644
--- a/drivers/net/ethernet/intel/igbvf/netdev.c
+++ b/drivers/net/ethernet/intel/igbvf/netdev.c
@@ -2072,15 +2072,6 @@ static int igbvf_tso(struct igbvf_ring *tx_ring,
return 1;
}
-static inline bool igbvf_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static bool igbvf_tx_csum(struct igbvf_ring *tx_ring, struct sk_buff *skb,
u32 tx_flags, __be16 protocol)
{
@@ -2102,10 +2093,7 @@ static bool igbvf_tx_csum(struct igbvf_ring *tx_ring, struct sk_buff *skb,
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if (((protocol == htons(ETH_P_IP)) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- ((protocol == htons(ETH_P_IPV6)) &&
- igbvf_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = E1000_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 3/6] net: igbvf: use skb_csum_is_sctp instead of protocol check
@ 2021-01-16 6:13 ` Xin Long
0 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
checksum offload packet, and yet it also makes igbvf support SCTP
CRC checksum offload for UDP and GRE encapped packets, just as it
does in igb driver.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/igbvf/netdev.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c
index 30fdea2..fb3fbcb 100644
--- a/drivers/net/ethernet/intel/igbvf/netdev.c
+++ b/drivers/net/ethernet/intel/igbvf/netdev.c
@@ -2072,15 +2072,6 @@ static int igbvf_tso(struct igbvf_ring *tx_ring,
return 1;
}
-static inline bool igbvf_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static bool igbvf_tx_csum(struct igbvf_ring *tx_ring, struct sk_buff *skb,
u32 tx_flags, __be16 protocol)
{
@@ -2102,10 +2093,7 @@ static bool igbvf_tx_csum(struct igbvf_ring *tx_ring, struct sk_buff *skb,
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if (((protocol == htons(ETH_P_IP)) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- ((protocol == htons(ETH_P_IPV6)) &&
- igbvf_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = E1000_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH net-next 4/6] net: igc: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-16 6:13 ` Xin Long
-1 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: network dev, linux-sctp
Cc: Marcelo Ricardo Leitner, Neil Horman, davem, Jakub Kicinski,
Alexander Duyck, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
checksum offload packet, and yet it also makes igc support SCTP
CRC checksum offload for UDP and GRE encapped packets, just as it
does in igb driver.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/igc/igc_main.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index afd6a62..43aec42 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -949,15 +949,6 @@ static void igc_tx_ctxtdesc(struct igc_ring *tx_ring,
}
}
-static inline bool igc_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static void igc_tx_csum(struct igc_ring *tx_ring, struct igc_tx_buffer *first)
{
struct sk_buff *skb = first->skb;
@@ -980,10 +971,7 @@ static void igc_tx_csum(struct igc_ring *tx_ring, struct igc_tx_buffer *first)
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if ((first->protocol == htons(ETH_P_IP) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- (first->protocol == htons(ETH_P_IPV6) &&
- igc_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = IGC_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 4/6] net: igc: use skb_csum_is_sctp instead of protocol check
@ 2021-01-16 6:13 ` Xin Long
0 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
checksum offload packet, and yet it also makes igc support SCTP
CRC checksum offload for UDP and GRE encapped packets, just as it
does in igb driver.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/igc/igc_main.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index afd6a62..43aec42 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -949,15 +949,6 @@ static void igc_tx_ctxtdesc(struct igc_ring *tx_ring,
}
}
-static inline bool igc_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static void igc_tx_csum(struct igc_ring *tx_ring, struct igc_tx_buffer *first)
{
struct sk_buff *skb = first->skb;
@@ -980,10 +971,7 @@ static void igc_tx_csum(struct igc_ring *tx_ring, struct igc_tx_buffer *first)
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if ((first->protocol == htons(ETH_P_IP) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- (first->protocol == htons(ETH_P_IPV6) &&
- igc_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = IGC_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH net-next 5/6] net: ixgbe: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-16 6:13 ` Xin Long
-1 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: network dev, linux-sctp
Cc: Marcelo Ricardo Leitner, Neil Horman, davem, Jakub Kicinski,
Alexander Duyck, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
checksum offload packet, and yet it also makes ixgbe support SCTP
CRC checksum offload for UDP and GRE encapped packets, just as it
does in igb driver.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 6cbbe09..2973c54 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -8040,15 +8040,6 @@ static int ixgbe_tso(struct ixgbe_ring *tx_ring,
return 1;
}
-static inline bool ixgbe_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static void ixgbe_tx_csum(struct ixgbe_ring *tx_ring,
struct ixgbe_tx_buffer *first,
struct ixgbe_ipsec_tx_data *itd)
@@ -8074,10 +8065,7 @@ static void ixgbe_tx_csum(struct ixgbe_ring *tx_ring,
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if (((first->protocol == htons(ETH_P_IP)) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- ((first->protocol == htons(ETH_P_IPV6)) &&
- ixgbe_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 5/6] net: ixgbe: use skb_csum_is_sctp instead of protocol check
@ 2021-01-16 6:13 ` Xin Long
0 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
checksum offload packet, and yet it also makes ixgbe support SCTP
CRC checksum offload for UDP and GRE encapped packets, just as it
does in igb driver.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 6cbbe09..2973c54 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -8040,15 +8040,6 @@ static int ixgbe_tso(struct ixgbe_ring *tx_ring,
return 1;
}
-static inline bool ixgbe_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static void ixgbe_tx_csum(struct ixgbe_ring *tx_ring,
struct ixgbe_tx_buffer *first,
struct ixgbe_ipsec_tx_data *itd)
@@ -8074,10 +8065,7 @@ static void ixgbe_tx_csum(struct ixgbe_ring *tx_ring,
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if (((first->protocol == htons(ETH_P_IP)) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- ((first->protocol == htons(ETH_P_IPV6)) &&
- ixgbe_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH net-next 6/6] net: ixgbevf: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-16 6:13 ` Xin Long
-1 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: network dev, linux-sctp
Cc: Marcelo Ricardo Leitner, Neil Horman, davem, Jakub Kicinski,
Alexander Duyck, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
checksum offload packet, and yet it also makes ixgbevf support SCTP
CRC checksum offload for UDP and GRE encapped packets, just as it
does in igb driver.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 4061cd7..cd9d79f 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -3844,15 +3844,6 @@ static int ixgbevf_tso(struct ixgbevf_ring *tx_ring,
return 1;
}
-static inline bool ixgbevf_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static void ixgbevf_tx_csum(struct ixgbevf_ring *tx_ring,
struct ixgbevf_tx_buffer *first,
struct ixgbevf_ipsec_tx_data *itd)
@@ -3873,10 +3864,7 @@ static void ixgbevf_tx_csum(struct ixgbevf_ring *tx_ring,
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if (((first->protocol == htons(ETH_P_IP)) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- ((first->protocol == htons(ETH_P_IPV6)) &&
- ixgbevf_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 6/6] net: ixgbevf: use skb_csum_is_sctp instead of protocol check
@ 2021-01-16 6:13 ` Xin Long
0 siblings, 0 replies; 30+ messages in thread
From: Xin Long @ 2021-01-16 6:13 UTC (permalink / raw)
To: intel-wired-lan
Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
checksum offload packet, and yet it also makes ixgbevf support SCTP
CRC checksum offload for UDP and GRE encapped packets, just as it
does in igb driver.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 4061cd7..cd9d79f 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -3844,15 +3844,6 @@ static int ixgbevf_tso(struct ixgbevf_ring *tx_ring,
return 1;
}
-static inline bool ixgbevf_ipv6_csum_is_sctp(struct sk_buff *skb)
-{
- unsigned int offset = 0;
-
- ipv6_find_hdr(skb, &offset, IPPROTO_SCTP, NULL, NULL);
-
- return offset == skb_checksum_start_offset(skb);
-}
-
static void ixgbevf_tx_csum(struct ixgbevf_ring *tx_ring,
struct ixgbevf_tx_buffer *first,
struct ixgbevf_ipsec_tx_data *itd)
@@ -3873,10 +3864,7 @@ static void ixgbevf_tx_csum(struct ixgbevf_ring *tx_ring,
break;
case offsetof(struct sctphdr, checksum):
/* validate that this is actually an SCTP request */
- if (((first->protocol == htons(ETH_P_IP)) &&
- (ip_hdr(skb)->protocol == IPPROTO_SCTP)) ||
- ((first->protocol == htons(ETH_P_IPV6)) &&
- ixgbevf_ipv6_csum_is_sctp(skb))) {
+ if (skb_csum_is_sctp(skb)) {
type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_SCTP;
break;
}
--
2.1.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH net-next 6/6] net: ixgbevf: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-19 22:25 ` Alexander Duyck
-1 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:25 UTC (permalink / raw)
To: Xin Long
Cc: network dev, linux-sctp @ vger . kernel . org,
Marcelo Ricardo Leitner, Neil Horman, David Miller,
Jakub Kicinski, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
> checksum offload packet, and yet it also makes ixgbevf support SCTP
> CRC checksum offload for UDP and GRE encapped packets, just as it
> does in igb driver.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 6/6] net: ixgbevf: use skb_csum_is_sctp instead of protocol check
@ 2021-01-19 22:25 ` Alexander Duyck
0 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:25 UTC (permalink / raw)
To: intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
> checksum offload packet, and yet it also makes ixgbevf support SCTP
> CRC checksum offload for UDP and GRE encapped packets, just as it
> does in igb driver.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH net-next 5/6] net: ixgbe: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-19 22:25 ` Alexander Duyck
-1 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:25 UTC (permalink / raw)
To: Xin Long
Cc: network dev, linux-sctp @ vger . kernel . org,
Marcelo Ricardo Leitner, Neil Horman, David Miller,
Jakub Kicinski, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
> checksum offload packet, and yet it also makes ixgbe support SCTP
> CRC checksum offload for UDP and GRE encapped packets, just as it
> does in igb driver.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 5/6] net: ixgbe: use skb_csum_is_sctp instead of protocol check
@ 2021-01-19 22:25 ` Alexander Duyck
0 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:25 UTC (permalink / raw)
To: intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
> checksum offload packet, and yet it also makes ixgbe support SCTP
> CRC checksum offload for UDP and GRE encapped packets, just as it
> does in igb driver.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH net-next 4/6] net: igc: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-19 22:24 ` Alexander Duyck
-1 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:24 UTC (permalink / raw)
To: Xin Long
Cc: network dev, linux-sctp @ vger . kernel . org,
Marcelo Ricardo Leitner, Neil Horman, David Miller,
Jakub Kicinski, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
> checksum offload packet, and yet it also makes igc support SCTP
> CRC checksum offload for UDP and GRE encapped packets, just as it
> does in igb driver.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 4/6] net: igc: use skb_csum_is_sctp instead of protocol check
@ 2021-01-19 22:24 ` Alexander Duyck
0 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:24 UTC (permalink / raw)
To: intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
> checksum offload packet, and yet it also makes igc support SCTP
> CRC checksum offload for UDP and GRE encapped packets, just as it
> does in igb driver.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH net-next 3/6] net: igbvf: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-19 22:24 ` Alexander Duyck
-1 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:24 UTC (permalink / raw)
To: Xin Long
Cc: network dev, linux-sctp @ vger . kernel . org,
Marcelo Ricardo Leitner, Neil Horman, David Miller,
Jakub Kicinski, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
> checksum offload packet, and yet it also makes igbvf support SCTP
> CRC checksum offload for UDP and GRE encapped packets, just as it
> does in igb driver.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 3/6] net: igbvf: use skb_csum_is_sctp instead of protocol check
@ 2021-01-19 22:24 ` Alexander Duyck
0 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:24 UTC (permalink / raw)
To: intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP CRC
> checksum offload packet, and yet it also makes igbvf support SCTP
> CRC checksum offload for UDP and GRE encapped packets, just as it
> does in igb driver.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH net-next 2/6] net: igb: use skb_csum_is_sctp instead of protocol check
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-19 22:24 ` Alexander Duyck
-1 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:24 UTC (permalink / raw)
To: Xin Long
Cc: network dev, linux-sctp @ vger . kernel . org,
Marcelo Ricardo Leitner, Neil Horman, David Miller,
Jakub Kicinski, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP
> CRC checksum offload packet, and there is no need to parse the
> packet to check its proto field, especially when it's a UDP or
> GRE encapped packet.
>
> So this patch also makes igb support SCTP CRC checksum offload
> for UDP and GRE encapped packets.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 2/6] net: igb: use skb_csum_is_sctp instead of protocol check
@ 2021-01-19 22:24 ` Alexander Duyck
0 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:24 UTC (permalink / raw)
To: intel-wired-lan
On Fri, Jan 15, 2021 at 10:14 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> Using skb_csum_is_sctp is a easier way to validate it's a SCTP
> CRC checksum offload packet, and there is no need to parse the
> packet to check its proto field, especially when it's a UDP or
> GRE encapped packet.
>
> So this patch also makes igb support SCTP CRC checksum offload
> for UDP and GRE encapped packets.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH net-next 1/6] net: add inline function skb_csum_is_sctp
2021-01-16 6:13 ` [Intel-wired-lan] " Xin Long
@ 2021-01-19 22:23 ` Alexander Duyck
-1 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:23 UTC (permalink / raw)
To: Xin Long
Cc: network dev, linux-sctp @ vger . kernel . org,
Marcelo Ricardo Leitner, Neil Horman, David Miller,
Jakub Kicinski, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
On Fri, Jan 15, 2021 at 10:13 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> This patch is to define a inline function skb_csum_is_sctp(), and
> also replace all places where it checks if it's a SCTP CSUM skb.
> This function would be used later in many networking drivers in
> the following patches.
>
> Suggested-by: Alexander Duyck <alexander.duyck@gmail.com>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
One minor nit. If you had to resubmit this I might move the ionic
driver code into a separate patch. However It can probably be accepted
as is.
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
> ---
> drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 2 +-
> include/linux/skbuff.h | 5 +++++
> net/core/dev.c | 2 +-
> 3 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
> index ac4cd5d..162a1ff 100644
> --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
> +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
> @@ -979,7 +979,7 @@ static int ionic_tx_calc_csum(struct ionic_queue *q, struct sk_buff *skb)
> stats->vlan_inserted++;
> }
>
> - if (skb->csum_not_inet)
> + if (skb_csum_is_sctp(skb))
> stats->crc32_csum++;
> else
> stats->csum++;
> diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
> index c9568cf..46f901a 100644
> --- a/include/linux/skbuff.h
> +++ b/include/linux/skbuff.h
> @@ -4621,6 +4621,11 @@ static inline void skb_reset_redirect(struct sk_buff *skb)
> #endif
> }
>
> +static inline bool skb_csum_is_sctp(struct sk_buff *skb)
> +{
> + return skb->csum_not_inet;
> +}
> +
> static inline void skb_set_kcov_handle(struct sk_buff *skb,
> const u64 kcov_handle)
> {
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 0a31d4e..bbd306f 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -3617,7 +3617,7 @@ static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb,
> int skb_csum_hwoffload_help(struct sk_buff *skb,
> const netdev_features_t features)
> {
> - if (unlikely(skb->csum_not_inet))
> + if (unlikely(skb_csum_is_sctp(skb)))
> return !!(features & NETIF_F_SCTP_CRC) ? 0 :
> skb_crc32c_csum_help(skb);
>
> --
> 2.1.0
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 1/6] net: add inline function skb_csum_is_sctp
@ 2021-01-19 22:23 ` Alexander Duyck
0 siblings, 0 replies; 30+ messages in thread
From: Alexander Duyck @ 2021-01-19 22:23 UTC (permalink / raw)
To: intel-wired-lan
On Fri, Jan 15, 2021 at 10:13 PM Xin Long <lucien.xin@gmail.com> wrote:
>
> This patch is to define a inline function skb_csum_is_sctp(), and
> also replace all places where it checks if it's a SCTP CSUM skb.
> This function would be used later in many networking drivers in
> the following patches.
>
> Suggested-by: Alexander Duyck <alexander.duyck@gmail.com>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
One minor nit. If you had to resubmit this I might move the ionic
driver code into a separate patch. However It can probably be accepted
as is.
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
> ---
> drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 2 +-
> include/linux/skbuff.h | 5 +++++
> net/core/dev.c | 2 +-
> 3 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
> index ac4cd5d..162a1ff 100644
> --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
> +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
> @@ -979,7 +979,7 @@ static int ionic_tx_calc_csum(struct ionic_queue *q, struct sk_buff *skb)
> stats->vlan_inserted++;
> }
>
> - if (skb->csum_not_inet)
> + if (skb_csum_is_sctp(skb))
> stats->crc32_csum++;
> else
> stats->csum++;
> diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
> index c9568cf..46f901a 100644
> --- a/include/linux/skbuff.h
> +++ b/include/linux/skbuff.h
> @@ -4621,6 +4621,11 @@ static inline void skb_reset_redirect(struct sk_buff *skb)
> #endif
> }
>
> +static inline bool skb_csum_is_sctp(struct sk_buff *skb)
> +{
> + return skb->csum_not_inet;
> +}
> +
> static inline void skb_set_kcov_handle(struct sk_buff *skb,
> const u64 kcov_handle)
> {
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 0a31d4e..bbd306f 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -3617,7 +3617,7 @@ static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb,
> int skb_csum_hwoffload_help(struct sk_buff *skb,
> const netdev_features_t features)
> {
> - if (unlikely(skb->csum_not_inet))
> + if (unlikely(skb_csum_is_sctp(skb)))
> return !!(features & NETIF_F_SCTP_CRC) ? 0 :
> skb_crc32c_csum_help(skb);
>
> --
> 2.1.0
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH net-next 1/6] net: add inline function skb_csum_is_sctp
2021-01-19 22:23 ` [Intel-wired-lan] " Alexander Duyck
@ 2021-01-19 23:35 ` Shannon Nelson
-1 siblings, 0 replies; 30+ messages in thread
From: Shannon Nelson @ 2021-01-19 23:35 UTC (permalink / raw)
To: Alexander Duyck, Xin Long
Cc: network dev, linux-sctp @ vger . kernel . org,
Marcelo Ricardo Leitner, Neil Horman, David Miller,
Jakub Kicinski, Jesse Brandeburg, Tony Nguyen, intel-wired-lan
On 1/19/21 2:23 PM, Alexander Duyck wrote:
> On Fri, Jan 15, 2021 at 10:13 PM Xin Long <lucien.xin@gmail.com> wrote:
>> This patch is to define a inline function skb_csum_is_sctp(), and
>> also replace all places where it checks if it's a SCTP CSUM skb.
>> This function would be used later in many networking drivers in
>> the following patches.
>>
>> Suggested-by: Alexander Duyck <alexander.duyck@gmail.com>
>> Signed-off-by: Xin Long <lucien.xin@gmail.com>
> One minor nit. If you had to resubmit this I might move the ionic
> driver code into a separate patch. However It can probably be accepted
> as is.
>
> Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
Alex has a good point - if you repost, please split out the ionic bits
to a separate patch.
Either way, for ionic:
Acked-by: Shannon Nelson <snelson@pensando.io>
>> ---
>> drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 2 +-
>> include/linux/skbuff.h | 5 +++++
>> net/core/dev.c | 2 +-
>> 3 files changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
>> index ac4cd5d..162a1ff 100644
>> --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
>> +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
>> @@ -979,7 +979,7 @@ static int ionic_tx_calc_csum(struct ionic_queue *q, struct sk_buff *skb)
>> stats->vlan_inserted++;
>> }
>>
>> - if (skb->csum_not_inet)
>> + if (skb_csum_is_sctp(skb))
>> stats->crc32_csum++;
>> else
>> stats->csum++;
>> diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
>> index c9568cf..46f901a 100644
>> --- a/include/linux/skbuff.h
>> +++ b/include/linux/skbuff.h
>> @@ -4621,6 +4621,11 @@ static inline void skb_reset_redirect(struct sk_buff *skb)
>> #endif
>> }
>>
>> +static inline bool skb_csum_is_sctp(struct sk_buff *skb)
>> +{
>> + return skb->csum_not_inet;
>> +}
>> +
>> static inline void skb_set_kcov_handle(struct sk_buff *skb,
>> const u64 kcov_handle)
>> {
>> diff --git a/net/core/dev.c b/net/core/dev.c
>> index 0a31d4e..bbd306f 100644
>> --- a/net/core/dev.c
>> +++ b/net/core/dev.c
>> @@ -3617,7 +3617,7 @@ static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb,
>> int skb_csum_hwoffload_help(struct sk_buff *skb,
>> const netdev_features_t features)
>> {
>> - if (unlikely(skb->csum_not_inet))
>> + if (unlikely(skb_csum_is_sctp(skb)))
>> return !!(features & NETIF_F_SCTP_CRC) ? 0 :
>> skb_crc32c_csum_help(skb);
>>
>> --
>> 2.1.0
>>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [Intel-wired-lan] [PATCH net-next 1/6] net: add inline function skb_csum_is_sctp
@ 2021-01-19 23:35 ` Shannon Nelson
0 siblings, 0 replies; 30+ messages in thread
From: Shannon Nelson @ 2021-01-19 23:35 UTC (permalink / raw)
To: intel-wired-lan
On 1/19/21 2:23 PM, Alexander Duyck wrote:
> On Fri, Jan 15, 2021 at 10:13 PM Xin Long <lucien.xin@gmail.com> wrote:
>> This patch is to define a inline function skb_csum_is_sctp(), and
>> also replace all places where it checks if it's a SCTP CSUM skb.
>> This function would be used later in many networking drivers in
>> the following patches.
>>
>> Suggested-by: Alexander Duyck <alexander.duyck@gmail.com>
>> Signed-off-by: Xin Long <lucien.xin@gmail.com>
> One minor nit. If you had to resubmit this I might move the ionic
> driver code into a separate patch. However It can probably be accepted
> as is.
>
> Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
Alex has a good point - if you repost, please split out the ionic bits
to a separate patch.
Either way, for ionic:
Acked-by: Shannon Nelson <snelson@pensando.io>
>> ---
>> drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 2 +-
>> include/linux/skbuff.h | 5 +++++
>> net/core/dev.c | 2 +-
>> 3 files changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
>> index ac4cd5d..162a1ff 100644
>> --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
>> +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
>> @@ -979,7 +979,7 @@ static int ionic_tx_calc_csum(struct ionic_queue *q, struct sk_buff *skb)
>> stats->vlan_inserted++;
>> }
>>
>> - if (skb->csum_not_inet)
>> + if (skb_csum_is_sctp(skb))
>> stats->crc32_csum++;
>> else
>> stats->csum++;
>> diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
>> index c9568cf..46f901a 100644
>> --- a/include/linux/skbuff.h
>> +++ b/include/linux/skbuff.h
>> @@ -4621,6 +4621,11 @@ static inline void skb_reset_redirect(struct sk_buff *skb)
>> #endif
>> }
>>
>> +static inline bool skb_csum_is_sctp(struct sk_buff *skb)
>> +{
>> + return skb->csum_not_inet;
>> +}
>> +
>> static inline void skb_set_kcov_handle(struct sk_buff *skb,
>> const u64 kcov_handle)
>> {
>> diff --git a/net/core/dev.c b/net/core/dev.c
>> index 0a31d4e..bbd306f 100644
>> --- a/net/core/dev.c
>> +++ b/net/core/dev.c
>> @@ -3617,7 +3617,7 @@ static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb,
>> int skb_csum_hwoffload_help(struct sk_buff *skb,
>> const netdev_features_t features)
>> {
>> - if (unlikely(skb->csum_not_inet))
>> + if (unlikely(skb_csum_is_sctp(skb)))
>> return !!(features & NETIF_F_SCTP_CRC) ? 0 :
>> skb_crc32c_csum_help(skb);
>>
>> --
>> 2.1.0
>>
^ permalink raw reply [flat|nested] 30+ messages in thread