[dpdk-dev,v3] net/i40e: fix allocating hash table on socket 0
Checks
Commit Message
Testpmd failed to start in another hugetlbfs mount point on
i40e, the root cause is that hash table is always allocated
on socket 0. Fix the issue by assigning scocket id during
hash parameter defination.
Fixes: 5c53c82c8174 ("net/i40e: store flow director filter")
Fixes: 425c3325f0b0 ("net/i40e: store tunnel filter")
Fixes: 078259773da9 ("net/i40e: store ethertype filter")
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
---
v3 changes:
Update commit log.
v2 changes:
Update commit log.
drivers/net/i40e/i40e_ethdev.c | 6 ++++++
1 file changed, 6 insertions(+)
Comments
On 2/17/2017 8:37 AM, Beilei Xing wrote:
> Testpmd failed to start in another hugetlbfs mount point on
> i40e,
Hi Beilei,
Can you please describe the failure more. And how to reproduce it.
I prefer initial patch title: "net/i40e: fix fail to start testpmd" but
with more details about when it fails to start.
the root cause is that hash table is always allocated
> on socket 0. Fix the issue by assigning scocket id during
> hash parameter defination.
>
> Fixes: 5c53c82c8174 ("net/i40e: store flow director filter")
> Fixes: 425c3325f0b0 ("net/i40e: store tunnel filter")
> Fixes: 078259773da9 ("net/i40e: store ethertype filter")
>
> Signed-off-by: Beilei Xing <beilei.xing@intel.com>
<...>
Hi
I reported the same issue 2 weeks ago
http://dpdk.org/ml/archives/dev/2017-February/056930.html
You can reproduce it forcing testpmd to allocate memory only from node 1,
for example:
/tmp/testpmd -d /home/micro/lib/librte_pmd_i40e.so -c 0xFFFC000 -w
0000:81:00.0 -w 0000:81:00.1 -n 4 --socket-mem=0,8192 -- -i
--socket-num=1
Ivan
On 20 February 2017 at 15:45, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> On 2/17/2017 8:37 AM, Beilei Xing wrote:
> > Testpmd failed to start in another hugetlbfs mount point on
> > i40e,
>
> Hi Beilei,
>
> Can you please describe the failure more. And how to reproduce it.
>
> I prefer initial patch title: "net/i40e: fix fail to start testpmd" but
> with more details about when it fails to start.
>
> the root cause is that hash table is always allocated
> > on socket 0. Fix the issue by assigning scocket id during
> > hash parameter defination.
> >
> > Fixes: 5c53c82c8174 ("net/i40e: store flow director filter")
> > Fixes: 425c3325f0b0 ("net/i40e: store tunnel filter")
> > Fixes: 078259773da9 ("net/i40e: store ethertype filter")
> >
> > Signed-off-by: Beilei Xing <beilei.xing@intel.com>
> <...>
>
On 2/20/2017 3:38 PM, Ivan Nardi wrote:
> Hi
> I reported the same issue 2 weeks ago
> http://dpdk.org/ml/archives/dev/2017-February/056930.html
>
> You can reproduce it forcing testpmd to allocate memory only from node
> 1, for example:
>
> /tmp/testpmd -d /home/micro/lib/librte_pmd_i40e.so -c 0xFFFC000 -w 0000:81:00.0 -w 0000:81:00.1 -n 4 --socket-mem=0,8192 -- -i --socket-num=1
Thanks Ivan,
I will update commit log with the information provided.
>
> Ivan
>
>
> On 20 February 2017 at 15:45, Ferruh Yigit <ferruh.yigit@intel.com
> <mailto:ferruh.yigit@intel.com>> wrote:
>
> On 2/17/2017 8:37 AM, Beilei Xing wrote:
> > Testpmd failed to start in another hugetlbfs mount point on
> > i40e,
>
> Hi Beilei,
>
> Can you please describe the failure more. And how to reproduce it.
>
> I prefer initial patch title: "net/i40e: fix fail to start testpmd" but
> with more details about when it fails to start.
>
> the root cause is that hash table is always allocated
> > on socket 0. Fix the issue by assigning scocket id during
> > hash parameter defination.
> >
> > Fixes: 5c53c82c8174 ("net/i40e: store flow director filter")
> > Fixes: 425c3325f0b0 ("net/i40e: store tunnel filter")
> > Fixes: 078259773da9 ("net/i40e: store ethertype filter")
> >
> > Signed-off-by: Beilei Xing <beilei.xing@intel.com <mailto:beilei.xing@intel.com>>
> <...>
>
>
On 2/17/2017 8:37 AM, Beilei Xing wrote:
> Testpmd failed to start in another hugetlbfs mount point on
> i40e, the root cause is that hash table is always allocated
> on socket 0. Fix the issue by assigning scocket id during
> hash parameter defination.
>
> Fixes: 5c53c82c8174 ("net/i40e: store flow director filter")
> Fixes: 425c3325f0b0 ("net/i40e: store tunnel filter")
> Fixes: 078259773da9 ("net/i40e: store ethertype filter")
>
> Signed-off-by: Beilei Xing <beilei.xing@intel.com>
net/i40e: fix memory allocation for hash table
...
Cc: stable@dpdk.org
Reported-by: Ivan Nardi <nardi.ivan@gmail.com>
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Applied to dpdk-next-net/master, thanks.
@@ -899,6 +899,8 @@ i40e_init_ethtype_filter_list(struct rte_eth_dev *dev)
.entries = I40E_MAX_ETHERTYPE_FILTER_NUM,
.key_len = sizeof(struct i40e_ethertype_filter_input),
.hash_func = rte_hash_crc,
+ .hash_func_init_val = 0,
+ .socket_id = rte_socket_id(),
};
/* Initialize ethertype filter rule list and hash */
@@ -942,6 +944,8 @@ i40e_init_tunnel_filter_list(struct rte_eth_dev *dev)
.entries = I40E_MAX_TUNNEL_FILTER_NUM,
.key_len = sizeof(struct i40e_tunnel_filter_input),
.hash_func = rte_hash_crc,
+ .hash_func_init_val = 0,
+ .socket_id = rte_socket_id(),
};
/* Initialize tunnel filter rule list and hash */
@@ -985,6 +989,8 @@ i40e_init_fdir_filter_list(struct rte_eth_dev *dev)
.entries = I40E_MAX_FDIR_FILTER_NUM,
.key_len = sizeof(struct rte_eth_fdir_input),
.hash_func = rte_hash_crc,
+ .hash_func_init_val = 0,
+ .socket_id = rte_socket_id(),
};
/* Initialize flow director filter rule list and hash */