@@ -167,20 +167,44 @@ void test_xdp_do_redirect(void)
167
167
168
168
if (!ASSERT_EQ (query_opts .feature_flags ,
169
169
NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
170
- NETDEV_XDP_ACT_NDO_XMIT | NETDEV_XDP_ACT_RX_SG |
171
- NETDEV_XDP_ACT_NDO_XMIT_SG ,
170
+ NETDEV_XDP_ACT_RX_SG ,
172
171
"veth_src query_opts.feature_flags" ))
173
172
goto out ;
174
173
175
174
err = bpf_xdp_query (ifindex_dst , XDP_FLAGS_DRV_MODE , & query_opts );
176
175
if (!ASSERT_OK (err , "veth_dst bpf_xdp_query" ))
177
176
goto out ;
178
177
178
+ if (!ASSERT_EQ (query_opts .feature_flags ,
179
+ NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
180
+ NETDEV_XDP_ACT_RX_SG ,
181
+ "veth_dst query_opts.feature_flags" ))
182
+ goto out ;
183
+
184
+ /* Enable GRO */
185
+ SYS ("ethtool -K veth_src gro on" );
186
+ SYS ("ethtool -K veth_dst gro on" );
187
+
188
+ err = bpf_xdp_query (ifindex_src , XDP_FLAGS_DRV_MODE , & query_opts );
189
+ if (!ASSERT_OK (err , "veth_src bpf_xdp_query gro on" ))
190
+ goto out ;
191
+
179
192
if (!ASSERT_EQ (query_opts .feature_flags ,
180
193
NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
181
194
NETDEV_XDP_ACT_NDO_XMIT | NETDEV_XDP_ACT_RX_SG |
182
195
NETDEV_XDP_ACT_NDO_XMIT_SG ,
183
- "veth_dst query_opts.feature_flags" ))
196
+ "veth_src query_opts.feature_flags gro on" ))
197
+ goto out ;
198
+
199
+ err = bpf_xdp_query (ifindex_dst , XDP_FLAGS_DRV_MODE , & query_opts );
200
+ if (!ASSERT_OK (err , "veth_dst bpf_xdp_query gro on" ))
201
+ goto out ;
202
+
203
+ if (!ASSERT_EQ (query_opts .feature_flags ,
204
+ NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
205
+ NETDEV_XDP_ACT_NDO_XMIT | NETDEV_XDP_ACT_RX_SG |
206
+ NETDEV_XDP_ACT_NDO_XMIT_SG ,
207
+ "veth_dst query_opts.feature_flags gro on" ))
184
208
goto out ;
185
209
186
210
memcpy (skel -> rodata -> expect_dst , & pkt_udp .eth .h_dest , ETH_ALEN );
0 commit comments