[dpdk-dev] Broken RSS hash computation on Intel 82574L

Martin Drašar drasar at ics.muni.cz
Mon Aug 31 14:15:31 CEST 2015


Hi,

I am using RSS to get identical hash for both directions of a flow.
Everything is working as it should with the Intel 82599ES, but when I
run the same code with the Intel 82574L, then the hash is not calculated
correctly and returns 0 as a hash value for all flows.

I could use the Toeplitz hash implementation from 2.1.0, but I would
rather do it in hardware, because according to specification, 82574L can
do RSS in hardware.

Any ideas what might be wrong?

Thanks in advance,
Martin

conf:
#define RSS_HASH_KEY_LENGTH 40
static uint8_t hash_key[RSS_HASH_KEY_LENGTH] = {
        0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A,
        0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A,
        0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A,
        0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A,
        0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A };

static const struct rte_eth_conf port_conf = {
  .link_speed  = 0,
  .link_duplex = 0,
  .rxmode = {
    .mq_mode        = ETH_RSS,
    .max_rx_pkt_len = 0,
    .split_hdr_size = 0,
    .header_split   = 0,
    .hw_ip_checksum = 0,
    .hw_vlan_filter = 0,
    .hw_vlan_strip  = 0,
    .hw_vlan_extend = 0,
    .jumbo_frame    = 0,
    .hw_strip_crc   = 0,
  },
  .txmode = {
    .mq_mode = ETH_DCB_NONE,
  },
  .lpbk_mode = 0,
  .rx_adv_conf = {
    .rss_conf = {
      .rss_key     = hash_key,
      .rss_key_len = RSS_HASH_KEY_LENGTH,
      .rss_hf      = ETH_RSS_PROTO_MASK,
      },
    },
};


More information about the dev mailing list