• J
    i40e: correctly honor the mask fields for ETHTOOL_SRXCLSRLINS · faa16e0f
    Jacob Keller 提交于
    The current implementation of .set_rxnfc does not properly read the mask
    field for filter entries. This results in incorrect driver behavior, as
    we do not reject filters which have masks set to ignore some fields. The
    current implementation simply assumes that every part of the tuple or
    "input set" is specified. This results in filters not behaving as
    expected, and not working correctly.
    
    As a first step in supporting some partial filters, add code which
    checks the mask fields and rejects any filters which do not have an
    acceptable mask. For now, we just assume that all fields must be set.
    
    This will get the driver one step towards allowing some partial filters.
    At a minimum, the ethtool commands which previously installed filters
    that would not function will now return a non-zero exit code indicating
    failure instead.
    
    We should now be meeting the minimum requirements of the .set_rxnfc API,
    by ensuring that all filters we program have a valid mask value for each
    field.
    
    Finally, add code to report the mask correctly so that the ethtool
    command properly reports the mask to the user.
    
    Note that the typecast to (__be16) when checking source and destination
    port masks is required because the ~ bitwise negation operator does not
    correctly handle variables other than integer size.
    
    Change-Id: Ia020149e07c87aa3fcec7b2283621b887ef0546f
    Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
    Tested-by: NAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
    faa16e0f
i40e_ethtool.c 98.7 KB