2025-09-08, 10:14:57 +0000, Hangbin Liu wrote: > On Mon, Sep 08, 2025 at 11:36:21AM +0200, Sabrina Dubroca wrote: > > > The esp-hw-offload is fixed on netdevsim > > > > > > # ethtool -k eni0np1 | grep -i esp-hw-offload > > > esp-hw-offload: on [fixed] > > > > > > There is no way to disable it. > > > > I don't think this is intentional. nsim_ipsec_init only adds > > NSIM_ESP_FEATURES to ->features but not to ->hw_features, but I think > > it was just forgotten. I added a few in 494bd83bb519 ("netdevsim: add > > more hw_features"), extending nsim_ipsec_init (and nsim_macsec_init > > since I made the same mistake) to also add features to ->hw_features > > would make sense to me. > > This could be done in another patch. If it's not needed for this series, sure. > > > After we add the netdevsim to bond, > > > the bond also shows "esp-hw-offload off" as the flag is inherit > > > in dev->hw_enc_features, not dev->features. > > > > Did you mean dev->hw_features? > > No, the xfrm_features in patch 01 updates dev->hw_enc_features, not > dev->hw_features. Ok. But hw_enc_features is not the reason ethtool shows "esp-hw-offload off". This line is: bond_dev->hw_features |= BOND_XFRM_FEATURES; (from bond_setup) > Do you think if we should update dev->hw_features in the > patch? For dev->hw_features (and dev->features) maybe not, since that depends on the upper device's features and implementation. I'm not sure we can have a common function without changing the behavior on at least one type of device. But maybe ndo_fix_features could use a common netdev_fix_features_from_lowers? bond/team/bridge have very similar implementations. > > > It looks the only way to check if bond dev->hw_enc_features has NETIF_F_HW_ESP > > > is try set xfrm offload. As > > > > Was this test meant to check hw_enc_features? > > > > To check hw_enc_features, I think the only way would be sending GSO > > packets, since it's only used in those situations. > > Oh.. That would make the test complex. Can we ignore this test first? Ok for me. > BTW, I'm a bit lost in the callbacks.gso_segment. e.g. > > esp4_gso_segment > - xfrm4_outer_mode_gso_segment > - xfrm4_transport_gso_segment > - ops->callbacks.gso_segment > > But who calls esp4_gso_segment? I can't find where the features is assigned. inet_gso_segment via inet_offloads[] (ESP is a L4 proto like UDP etc). -- Sabrina