>-----Original Message-----
>From: Alexander Duyck [mailto:alexander.h.du...@redhat.com]
>Sent: Tuesday, April 28, 2015 3:41 AM
>To: Du, Fan; Kirsher, Jeffrey T
>Cc: e1000-devel@lists.sourceforge.net; intel-wired-...@lists.osuosl.org
>Subject: Re: [Intel-wired-lan] [PATCH 1/2] ixgbe: Specify rx hash type wrt rx 
>desc
>RSS type
>
>
>On 04/23/2015 12:31 AM, Fan Du wrote:
>> RSS could be leveraged by taking account L4 src/dst ports
>> as ingredients, thus ingress skb rx hash type should honor
>> such the real configuration.
>>
>> Signed-off-by: Fan Du <fan...@intel.com>
>> ---
>>   drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |   25
>+++++++++++++++++++++----
>>   1 files changed, 21 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
>b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
>> index d3f4b0c..5df896b 100644
>> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
>> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
>> @@ -1357,14 +1357,31 @@ static int __ixgbe_notify_dca(struct device *dev,
>void *data)
>>   }
>>
>>   #endif /* CONFIG_IXGBE_DCA */
>> +
>> +#define IXGBE_RSS_L4_TYPES_MASK \
>> +    ((1ul << IXGBE_RXDADV_RSSTYPE_IPV4_TCP) | \
>> +     (1ul << IXGBE_RXDADV_RSSTYPE_IPV4_UDP) | \
>> +     (1ul << IXGBE_RXDADV_RSSTYPE_IPV6_TCP) | \
>> +     (1ul << IXGBE_RXDADV_RSSTYPE_IPV6_UDP))
>> +
>>   static inline void ixgbe_rx_hash(struct ixgbe_ring *ring,
>>                               union ixgbe_adv_rx_desc *rx_desc,
>>                               struct sk_buff *skb)
>>   {
>> -    if (ring->netdev->features & NETIF_F_RXHASH)
>> -            skb_set_hash(skb,
>> -                         le32_to_cpu(rx_desc->wb.lower.hi_dword.rss),
>> -                         PKT_HASH_TYPE_L3);
>> +    u16 rss_type;
>> +
>> +    if (!(ring->netdev->features & NETIF_F_RXHASH))
>> +            return;
>> +
>> +    rss_type = le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.pkt_info) &
>> +               IXGBE_RXDADV_RSSTYPE_MASK;
>> +
>> +    if (!rss_type)
>> +            return;
>> +
>> +    skb_set_hash(skb, le32_to_cpu(rx_desc->wb.lower.hi_dword.rss),
>> +                 (IXGBE_RSS_L4_TYPES_MASK & (1ul << rss_type)) ?
>> +                 PKT_HASH_TYPE_L4 : PKT_HASH_TYPE_L3);
>>   }
>>
>>   #ifdef IXGBE_FCOE
>
>The patch itself here is fine, however there is a complication in that
>with the current configuration ntuple filters will cause the RSS hash to
>be overwritten with the signature and bucket hash values.  In order to
>resolve that you need to update ixgbe_init_fdir_perfect_82599 so that it
>doesn't set the IXGBE_FDIRCTRL_REPORT_STATUS bit.  Otherwise there is
>the potential for an IPv4 rule to be defined that would set the same
>hash value for multiple flows.


Yes, flow director filters mechanism could set its own hash value, which is
unionized with RSS hash value. But by my understanding, if a packet is
filtered by flow director, RSS_TYPE in the write back descriptor won't be
set, meaning rss_type is ZERO, and here the patch has covered this by
checking whether rss_type is true or not.   


>- Alex

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to