On 14.5.2023. 11:24, Alexander Bluhm wrote:
> On Sat, May 13, 2023 at 01:32:07AM +0200, Alexander Bluhm wrote:
>> I have not yet investigated where the dropped counter 83 comes from.
>> If you see that also, please report what you did.
> This is an ENOBUFS error in this chunk.
>
> /* network interface hardware will do TSO */
> if (in_ifcap_cksum(*mp, ifp, ifcap)) {
> if (ISSET(ifcap, IFCAP_TSOv4)) {
> in_hdr_cksum_out(*mp, ifp);
> in_proto_cksum_out(*mp, ifp);
> }
> if (ISSET(ifcap, IFCAP_TSOv6))
> in6_proto_cksum_out(*mp, ifp);
> if ((error = ifp->if_output(ifp, *mp, dst, rt))) {
> tcpstat_inc(tcps_outbadtso);
> goto done;
> }
> tcpstat_inc(tcps_outhwtso);
> goto done;
> }
>
> As the error from ifp->if_output() has nothing todo with TSO, I
> remove the counting there.
>
> Updated diff, please test if you have ix(4) interfaces doing TCP
> output.
Hi,
I've tested this on openbsd box with 4 iperf3's. 2 for ip4 and 2 for ip6
and with 16 tcp streams per iperf. When testing over ix(4) there is big
differences in output performance. When testing ix/veb/vport there is
differences in output performance but not that big.
When testing over vport I'm getting "software chopped" which should be
expected.
r620-1# netstat -sp tcp | grep TSO
7921175 output TSO packets software chopped
3739630121 output TSO packets hardware processed
915829954 output TSO packets generated
0 output TSO packets dropped
With previous diff I could easily trigger "TSO packet dropped" but with
this one I couldn't.