lkml.org 
[lkml]   [2018]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.15 099/189] i40e: fix reported mask for ntuple filters
    Date
    From: Jacob Keller <jacob.e.keller@intel.com>

    [ Upstream commit 40339af33c703bacb336493157d43c86a8bf2fed ]

    In commit 36777d9fa24c ("i40e: check current configured input set when
    adding ntuple filters") some code was added to report the input set
    mask for a given filter when reporting it to the user.

    This code is necessary so that the reported filter correctly displays
    that it is or is not masking certain fields.

    Unfortunately the code was incorrect. Development error accidentally
    swapped the mask values for the IPv4 addresses with the L4 port numbers.
    The port numbers are only 16bits wide while IPv4 addresses are 32 bits.
    Unfortunately we assigned only 16 bits to the IPv4 address masks.
    Additionally we assigned 32bit value 0xFFFFFFF to the TCP port numbers.
    This second part does not matter as the value would be truncated to
    16bits regardless, but it is unnecessary.

    Fix the reported masks to properly report that the entire field is
    masked.

    Fixes: 36777d9fa24c ("i40e: check current configured input set when adding ntuple filters")
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
    index 28daf7e7ccbe..040e0dc6cb7a 100644
    --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
    +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
    @@ -2740,16 +2740,16 @@ static int i40e_get_ethtool_fdir_entry(struct i40e_pf *pf,

    no_input_set:
    if (input_set & I40E_L3_SRC_MASK)
    - fsp->m_u.tcp_ip4_spec.ip4src = htonl(0xFFFF);
    + fsp->m_u.tcp_ip4_spec.ip4src = htonl(0xFFFFFFFF);

    if (input_set & I40E_L3_DST_MASK)
    - fsp->m_u.tcp_ip4_spec.ip4dst = htonl(0xFFFF);
    + fsp->m_u.tcp_ip4_spec.ip4dst = htonl(0xFFFFFFFF);

    if (input_set & I40E_L4_SRC_MASK)
    - fsp->m_u.tcp_ip4_spec.psrc = htons(0xFFFFFFFF);
    + fsp->m_u.tcp_ip4_spec.psrc = htons(0xFFFF);

    if (input_set & I40E_L4_DST_MASK)
    - fsp->m_u.tcp_ip4_spec.pdst = htons(0xFFFFFFFF);
    + fsp->m_u.tcp_ip4_spec.pdst = htons(0xFFFF);

    if (rule->dest_ctl == I40E_FILTER_PROGRAM_DESC_DEST_DROP_PACKET)
    fsp->ring_cookie = RX_CLS_FLOW_DISC;
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-04-09 05:54    [W:2.289 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site