Message ID | 20230207162303.140750-1-pawel.chmielewski@intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,v2,1/1] ice: add support BIG TCP on IPv6 | expand |
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Pawel Chmielewski > Sent: Tuesday, February 7, 2023 9:53 PM > To: netdev@vger.kernel.org > Cc: intel-wired-lan@osuosl.org > Subject: [Intel-wired-lan] [PATCH net-next v2 1/1] ice: add support BIG TCP > on IPv6 > > Enable sending BIG TCP packets on IPv6 in the ice driver using generic > ipv6_hopopt_jumbo_remove helper for stripping HBH header. > > Tested: > netperf -t TCP_RR -H 2001:db8:0:f101::1 -- -r80000,80000 -O > MIN_LATENCY,P90_LATENCY,P99_LATENCY,TRANSACTION_RATE > > Tested on two different setups. In both cases, the following settings were > applied after loading the changed driver: > > ip link set dev enp175s0f1np1 gso_max_size 130000 ip link set dev > enp175s0f1np1 gro_max_size 130000 ip link set dev enp175s0f1np1 mtu 9000 > > First setup: > Before: > Minimum 90th 99th Transaction > Latency Percentile Percentile Rate Microseconds > Latency Latency Tran/s > Microseconds Microseconds > 134 279 410 3961.584 > > After: > Minimum 90th 99th Transaction > Latency Percentile Percentile Rate Microseconds > Latency Latency Tran/s > Microseconds Microseconds > 135 178 216 6093.404 > > The other setup: > Before: > Minimum 90th 99th Transaction > Latency Percentile Percentile Rate > Microseconds Latency Latency Tran/s > Microseconds Microseconds > 218 414 478 2944.765 > > After: > Minimum 90th 99th Transaction > Latency Percentile Percentile Rate > Microseconds Latency Latency Tran/s > Microseconds Microseconds > 146 238 266 4700.596 > > Signed-off-by: Pawel Chmielewski <pawel.chmielewski@intel.com> > --- > > Changes since v1: > * Added testing results > --- > drivers/net/ethernet/intel/ice/ice.h | 2 ++ > drivers/net/ethernet/intel/ice/ice_main.c | 2 ++ > drivers/net/ethernet/intel/ice/ice_txrx.c | 3 +++ > 3 files changed, 7 insertions(+) > Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h index 3d26ff4122e0..c774fdd482cd 100644 --- a/drivers/net/ethernet/intel/ice/ice.h +++ b/drivers/net/ethernet/intel/ice/ice.h @@ -122,6 +122,8 @@ #define ICE_MAX_MTU (ICE_AQ_SET_MAC_FRAME_SIZE_MAX - ICE_ETH_PKT_HDR_PAD) +#define ICE_MAX_TSO_SIZE 131072 + #define ICE_UP_TABLE_TRANSLATE(val, i) \ (((val) << ICE_AQ_VSI_UP_TABLE_UP##i##_S) & \ ICE_AQ_VSI_UP_TABLE_UP##i##_M) diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index 22b8ad058286..8c74a48ad0d3 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -3421,6 +3421,8 @@ static void ice_set_netdev_features(struct net_device *netdev) * be changed at runtime */ netdev->hw_features |= NETIF_F_RXFCS; + + netif_set_tso_max_size(netdev, ICE_MAX_TSO_SIZE); } /** diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c index ccf09c957a1c..bef927afb766 100644 --- a/drivers/net/ethernet/intel/ice/ice_txrx.c +++ b/drivers/net/ethernet/intel/ice/ice_txrx.c @@ -2297,6 +2297,9 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct ice_tx_ring *tx_ring) ice_trace(xmit_frame_ring, tx_ring, skb); + if (unlikely(ipv6_hopopt_jumbo_remove(skb))) + goto out_drop; + count = ice_xmit_desc_count(skb); if (ice_chk_linearize(skb, count)) { if (__skb_linearize(skb))
Enable sending BIG TCP packets on IPv6 in the ice driver using generic ipv6_hopopt_jumbo_remove helper for stripping HBH header. Tested: netperf -t TCP_RR -H 2001:db8:0:f101::1 -- -r80000,80000 -O MIN_LATENCY,P90_LATENCY,P99_LATENCY,TRANSACTION_RATE Tested on two different setups. In both cases, the following settings were applied after loading the changed driver: ip link set dev enp175s0f1np1 gso_max_size 130000 ip link set dev enp175s0f1np1 gro_max_size 130000 ip link set dev enp175s0f1np1 mtu 9000 First setup: Before: Minimum 90th 99th Transaction Latency Percentile Percentile Rate Microseconds Latency Latency Tran/s Microseconds Microseconds 134 279 410 3961.584 After: Minimum 90th 99th Transaction Latency Percentile Percentile Rate Microseconds Latency Latency Tran/s Microseconds Microseconds 135 178 216 6093.404 The other setup: Before: Minimum 90th 99th Transaction Latency Percentile Percentile Rate Microseconds Latency Latency Tran/s Microseconds Microseconds 218 414 478 2944.765 After: Minimum 90th 99th Transaction Latency Percentile Percentile Rate Microseconds Latency Latency Tran/s Microseconds Microseconds 146 238 266 4700.596 Signed-off-by: Pawel Chmielewski <pawel.chmielewski@intel.com> --- Changes since v1: * Added testing results --- drivers/net/ethernet/intel/ice/ice.h | 2 ++ drivers/net/ethernet/intel/ice/ice_main.c | 2 ++ drivers/net/ethernet/intel/ice/ice_txrx.c | 3 +++ 3 files changed, 7 insertions(+)