[dpdk-dev] Who can correct me about 82599 RSS Hash Function

Vladimir Medvedkin medvedkinv at gmail.com
Thu Dec 12 16:17:10 CET 2013


Hi,

First, I hope you configure
port_conf->rx_adv_conf.rss_conf.rss_key and .rss_hf
properly.
Secondly,

-for(j=0;j<8;j++){
+for(j=7;j>=0;j--){


Regards,
Vladimir

2013/12/11 chen_lp at neusoft.com <chen_lp at neusoft.com>

>
> I want calculate the NIC rss hash result by function,but the result is not
> right, I don't know where the wrong.
>
>
> struct mbf_cb{
>         uint32_t sip;
>         uint32_t dip;
>         uint16_t sport;
>         uint16_t dport;
> };
>
> static uint8_t test_rss[]={
>         0x6d,0x5a,0x56,0xda,0x25,0x5b,0x0e,0xc2,
>         0x41,0x67,0x25,0x3d,0x43,0xa3,0x8f,0xb0,
>         0xd0,0xca,0x2b,0xcb,0xae,0x7b,0x30,0xb4,
>         0x77,0xcb,0x2d,0xa3,0x80,0x30,0xf2,0x0c,
>         0x6a,0x42,0xb7,0x3b,0xbe,0xac,0x01,0xfa,
> };
>
> static uint8_t input_mask[]={
>         0x01,0x02,0x04,0x08,
>         0x10,0x20,0x40,0x80,
> };
>
>  mcb.sip=rte_cpu_to_be_32(IPv4(66,9,149,187));
>   mcb.dip=rte_cpu_to_be_32(IPv4(161,142,100,80));
>    mcb.sport=rte_cpu_to_be_16(2794);
>    mcb.dport=rte_cpu_to_be_16(1766);
>
>
> uint32_t compute_hash(uint8_t *input, int n)
> {
>         int i,j,k;
>         uint32_t result=0;
>         uint32_t *lk;
>         uint8_t rss_key[40];
>
>         memcpy(rss_key,test_rss,40);
>
>         lk=(uint32_t *)rss_key;
>         for(i=0;i<n;i++){
>                 for(j=0;j<8;j++){
>                         if((input_mask[j])&input[i]){
>                                 result^=*lk;
>                         }
>
>                         // shift k left 1 bit
>                         rss_key[0]=rss_key[0]<<1;
>                         for(k=1;k<40;k++){
>                                 if(rss_key[k]&0x80){
>                                         rss_key[k-1]|=0x01;
>                                 }
>                                 rss_key[k]=rss_key[k]<<1;
>                         }
>                 }
>         }
>         return result;
> }
>
> printf("rss_hash=%#x\n",compute_hash((uint8_t *)&mcb,sizeof(struct
> mbf_cb)));
>
> rss_hash=0x57476eca
>  but the right result is 0x51ccc178
>
>
>
>
>
>
>
>
> ---------------------------------------------------------------------------------------------------
> Confidentiality Notice: The information contained in this e-mail and any
> accompanying attachment(s)
> is intended only for the use of the intended recipient and may be
> confidential and/or privileged of
> Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader
> of this communication is
> not the intended recipient, unauthorized use, forwarding, printing,
>  storing, disclosure or copying
> is strictly prohibited, and may be unlawful.If you have received this
> communication in error,please
> immediately notify the sender by return e-mail, and delete the original
> message and all copies from
> your system. Thank you.
>
> ---------------------------------------------------------------------------------------------------
>


More information about the dev mailing list