• Vlad Buslov's avatar
    net/sched: act_ct: Always fill offloading tuple iifidx · 9bc64bd0
    Vlad Buslov authored
    Referenced commit doesn't always set iifidx when offloading the flow to
    hardware. Fix the following cases:
    
    - nf_conn_act_ct_ext_fill() is called before extension is created with
    nf_conn_act_ct_ext_add() in tcf_ct_act(). This can cause rule offload with
    unspecified iifidx when connection is offloaded after only single
    original-direction packet has been processed by tc data path. Always fill
    the new nf_conn_act_ct_ext instance after creating it in
    nf_conn_act_ct_ext_add().
    
    - Offloading of unidirectional UDP NEW connections is now supported, but ct
    flow iifidx field is not updated when connection is promoted to
    bidirectional which can result reply-direction iifidx to be zero when
    refreshing the connection. Fill in the extension and update flow iifidx
    before calling flow_offload_refresh().
    
    Fixes: 9795ded7 ("net/sched: act_ct: Fill offloading tuple iifidx")
    Reviewed-by: default avatarPaul Blakey <paulb@nvidia.com>
    Signed-off-by: default avatarVlad Buslov <vladbu@nvidia.com>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Fixes: 6a9bad00 ("net/sched: act_ct: offload UDP NEW connections")
    Link: https://lore.kernel.org/r/20231103151410.764271-1-vladbu@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    9bc64bd0
conntrack.c 51.8 KB