From mboxrd@z Thu Jan 1 00:00:00 1970 From: chen_lp Subject: Re: Who can correct me about 82599 RSS Hash Function Date: Fri, 13 Dec 2013 08:31:36 +0800 Message-ID: <52AA5568.7090902@neusoft.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1"; format="flowed" Content-Transfer-Encoding: quoted-printable Cc: "dev-VfR2kkLFssw@public.gmane.org" To: Vladimir Medvedkin Return-path: In-Reply-To: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" Thank you very much. Depending on your correct, the problem has been resolved. ? 2013?12?12? 23:17, Vladimir Medvedkin ??: > Hi, > > First, I hope you configure > port_conf->rx_adv_conf.rss_conf.rss_key and .rss_hf > properly. > Secondly, > > -for(j=3D0;j<8;j++){ > +for(j=3D7;j>=3D0;j--){ > > > Regards, > Vladimir > > 2013/12/11 chen_lp-YYSg24PYQUdBDgjK7y7TUQ@public.gmane.org = > > > > > 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[]=3D{ > 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[]=3D{ > 0x01,0x02,0x04,0x08, > 0x10,0x20,0x40,0x80, > }; > > mcb.sip=3Drte_cpu_to_be_32(IPv4(66,9,149,187)); > mcb.dip=3Drte_cpu_to_be_32(IPv4(161,142,100,80)); > mcb.sport=3Drte_cpu_to_be_16(2794); > mcb.dport=3Drte_cpu_to_be_16(1766); > > > uint32_t compute_hash(uint8_t *input, int n) > { > int i,j,k; > uint32_t result=3D0; > uint32_t *lk; > uint8_t rss_key[40]; > > memcpy(rss_key,test_rss,40); > > lk=3D(uint32_t *)rss_key; > for(i=3D0;i for(j=3D0;j<8;j++){ > if((input_mask[j])&input[i]){ > result^=3D*lk; > } > > // shift k left 1 bit > rss_key[0]=3Drss_key[0]<<1; > for(k=3D1;k<40;k++){ > if(rss_key[k]&0x80){ > rss_key[k-1]|=3D0x01; > } > rss_key[k]=3Drss_key[k]<<1; > } > } > } > return result; > } > > printf("rss_hash=3D%#x\n",compute_hash((uint8_t *)&mcb,sizeof(struct > mbf_cb))); > > rss_hash=3D0x57476eca > 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. > ---------------------------------------------------------------------= ------------------------------ > > ---------------------------------------------------------------------------= ------------------------ Confidentiality Notice: The information contained in this e-mail and any ac= companying attachment(s) = is intended only for the use of the intended recipient and may be confident= ial 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, storin= g, disclosure or copying = is strictly prohibited, and may be unlawful.If you have received this commu= nication in error,please = immediately notify the sender by return e-mail, and delete the original mes= sage and all copies from = your system. Thank you. = ---------------------------------------------------------------------------= ------------------------