• John Hurley's avatar
    nfp: flower: fix ethernet check on match fields · fd262a6d
    John Hurley authored
    NFP firmware does not explicitly match on an ethernet type field. Rather,
    each rule has a bitmask of match fields that can be used to infer the
    ethernet type.
    
    Currently, if a flower rule contains an unknown ethernet type, a check is
    carried out for matches on other fields of the packet. If matches on
    layer 3 or 4 are found, then the offload is rejected as firmware will not
    be able to extract these fields from a packet with an ethernet type it
    does not currently understand.
    
    However, if a rule contains an unknown ethernet type without any L3 (or
    above) matches then this will effectively be offloaded as a rule with a
    wildcarded ethertype. This can lead to misclassifications on the firmware.
    
    Fix this issue by rejecting all flower rules that specify a match on an
    unknown ethernet type.
    
    Further ensure correct offloads by moving the 'L3 and above' check to any
    rule that does not specify an ethernet type and rejecting rules with
    further matches. This means that we can still offload rules with a
    wildcarded ethertype if they only match on L2 fields but will prevent
    rules which match on further fields that we cannot be sure if the firmware
    will be able to extract.
    
    Fixes: af9d842c ("nfp: extend flower add flow offload")
    Signed-off-by: default avatarJohn Hurley <john.hurley@netronome.com>
    Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    fd262a6d
offload.c 41.5 KB