Hi Alexander, This patch introduced a behavior change around GRO_DROP:
napi_skb_finish used to sometimes return GRO_DROP: > -static gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb) > +static gro_result_t napi_skb_finish(struct napi_struct *napi, > + struct sk_buff *skb, > + gro_result_t ret) > { > switch (ret) { > case GRO_NORMAL: > - if (netif_receive_skb_internal(skb)) > - ret = GRO_DROP; > + gro_normal_one(napi, skb); > But under your change, gro_normal_one and the various calls that makes never propagates its return value, and so GRO_DROP is never returned to the caller, even if something drops it. Was this intentional? Or should I start looking into how to restore it? Thanks, Jason