mlx5_core 0000:02:00.0 ensX: arfs_add_rule: add rule(filter id=25581, rq idx=20) failed, err=-2

Hello Community,

I have 2 Mellanox MCX4121A-XCAT (Centos 7.5 “Kernel 4.4.165-1.el7.elrepo.x86_64”, Driver MLNX_OFED_LINUX-4.4-2.0.7.0).

I setting HowTo Configure aRFS on ConnectX-4 https://community.mellanox.com/s/article/howto-configure-arfs-on-connectx-4

When I enable aRFS “ethtool -K ensX ntuple on”. I have many mesages dmesg - type: [ 9390.587877] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=29909, rq idx=20) failed, err=-2

Help me please. where am I wrong?

Hi,

Please recheck the different sysfs value you must set in step 5 in the community link.

  1. Configure the RFS flow table entries (globally and per core).

Note: The functionality remains disabled until explicitly configured (by default it is 0).

The number of entries in the global flow table is set as follows:

/proc/sys/net/core/rps_sock_flow_entries

The number of entries in the per-queue flow table are set as follows:

/sys/class/net//queues/rx-/rps_flow_cnt

For example:

# echo 32768 > /proc/sys/net/core/rps_sock_flow_entries

# for f in /sys/class/net/ens6/queues/rx-*/rps_flow_cnt; do echo 32768 > $f; done

Thanks

Marc

Hi, March

I have 32 queues on a device.

I change the parameters:

echo 32768 > /proc/sys/net/core/rps_sock_flow_entries

for f in /sys/class/net/ens3f0/queues/rx-*/rps_flow_cnt; do echo 1024 > $f; done

But it’s not work for me.

dmesg

[509128.627358] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57783, rq idx=31) failed, err=-2

[509128.628059] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57586, rq idx=18) failed, err=-2

[509128.628262] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57784, rq idx=15) failed, err=-2

[509128.628279] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57785, rq idx=31) failed, err=-2

[509128.628758] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57786, rq idx=31) failed, err=-2

[509128.630362] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57787, rq idx=31) failed, err=-2

[509128.631112] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57141, rq idx=31) failed, err=-2

[509128.631679] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57788, rq idx=15) failed, err=-2

[509128.631687] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=55887, rq idx=31) failed, err=-2

[509128.631798] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=55142, rq idx=0) failed, err=-2

[509128.632474] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57789, rq idx=31) failed, err=-2

[509128.632697] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57569, rq idx=0) failed, err=-2

[509128.633645] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57790, rq idx=31) failed, err=-2

[509128.634147] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57167, rq idx=31) failed, err=-2

[509128.634249] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57791, rq idx=31) failed, err=-2

[509128.634441] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57272, rq idx=31) failed, err=-2

[509128.634664] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57505, rq idx=31) failed, err=-2

[509128.635378] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57793, rq idx=31) failed, err=-2

[509128.637496] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57348, rq idx=31) failed, err=-2

[509128.637750] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57796, rq idx=31) failed, err=-2

[509128.638452] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57799, rq idx=31) failed, err=-2

[509128.639243] mlx5_core 0000:02:00.0 ens3f0: arfs_add_rule: add rule(filter id=57802, rq idx=31) failed, err=-2

Maybe you are have another idea ?

Thank you.

Hi Alex,

The following upstream patch should fix the issue

[net-next,4/5] net/mlx5e: Add new counter for aRFS rule insertion failures - Patchwork [net-next,4/5] net/mlx5e: Add new counter for aRFS rule insertion failures - Patchwork

As written in the patches

Count aRFS rules insertion failure for ethtool output. In addition, move the error print into debug prints mechanism, as it could flood the dmesg and reduce system BW dramatically.

Yours,

Talat

Hi,

Please recheck the different sysfs value you must set in step 5 in the community link.

  1. Configure the RFS flow table entries (globally and per core).

Note: The functionality remains disabled until explicitly configured (by default it is 0).

The number of entries in the global flow table is set as follows:

/proc/sys/net/core/rps_sock_flow_entries

The number of entries in the per-queue flow table are set as follows:

/sys/class/net//queues/rx-/rps_flow_cnt

For example:

# echo 32768 > /proc/sys/net/core/rps_sock_flow_entries

# for f in /sys/class/net/ens6/queues/rx-*/rps_flow_cnt; do echo 32768 > $f; done

Thanks

Marc