From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx2.evs.tv (mx2.evs.tv [213.177.77.7]) by dpdk.org (Postfix) with ESMTP id 6A0635955 for ; Mon, 7 Sep 2015 09:10:49 +0200 (CEST) From: "VERDOUX, Sylvain" To: "dev@dpdk.org" Thread-Topic: X710 : ntuple or flow director filtering problems Thread-Index: AdDpOXRDoh/vs77CTc61Jbd2wz1i9w== Date: Mon, 7 Sep 2015 07:10:48 +0000 Message-ID: <294AEAFC4B0A3E498038549EC65E9D1B013F5C94C8@BELGSMBX02.EVS.TV> Accept-Language: fr-FR, fr-BE, en-US Content-Language: fr-FR X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tm-as-product-ver: SMEX-10.2.0.3262-8.000.1202-21798.005 x-tm-as-result: No--53.373600-0.000000-31 x-tm-as-user-approved-sender: Yes x-tm-as-user-blocked-sender: No MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] X710 : ntuple or flow director filtering problems X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Sep 2015 07:10:49 -0000 Hello all, I'm currently trying hardware filtering on an Intel X710 NIC and i face sev= eral problems. I will briefly try to present what I want to achieve : I hav= e 2 multicast streams coming on one port of my NIC with 2 different multica= st groups/ports, and I want to filter and redirect them to 2 RX queues to b= e able to retrieve packets into 2 different processes. To do that, I first tried a simple 2-tuple filter with IP/port. But when us= ing rte_eth_dev_filter_supported(portid, RTE_ETH_FILTER_NTUPLE) I get an er= ror (error=3D-22 invalid argument ?) which I find strange because when usin= g ethtool -k on the interface, I have ntuple-filters: on, so I guessed it w= as supported on this NIC. Then I wanted to try flow director filters (should be supported as stated b= y the Intel documentation on this NIC). I tried using testpmd app to see wh= at was supported and it seems signature mode is not. Perfect mode is accept= ed but I can't apply any mask on filters fields. In my own program, I confi= gure the port's fdir_conf as follows : struct rte_fdir_conf fdir_conf { .mode =3D RTE_FDIR_MODE_PERFECT, .pballoc =3D RTE_FDIR_PBALLOC_64K, .status =3D RTE_FDIR_REPORT_STATUS, .drop_queue =3D 127, .mask =3D { .vlan_tci_mask =3D 0x0, .ipv4_mask =3D { .src_ip =3D 0xFFFFFFFF, .dst_ip =3D 0xFFFFFFFF, }, .ipv6_mask =3D { .src_ip =3D {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x= FFFFFFFF}, .dst_ip =3D {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x= FFFFFFFF}, }, .src_port_mask =3D 0xFFFF, .dst_port_mask =3D 0xFFFF, }, }; When I then use rte_eth_dev_fdir_set_masks or rte_eth_dev_fdir_add_perfect_= filter functions they return an -95 error (unsupported by hardware ?). So I= looked into the testpmd code and found that it is using rte_eth_dev_filter= _ctrl function. This one using a fdir filter is accepted but I'm unable to = set the filter properly. Indeed, I just want to filter on dst_ip and dst_po= rt so I don't really know what to set in filter's other fields (flexbytes, = src_ip ...) as I can't apply a mask. I hope someone could help me on this topic (I know should miss something, b= ut what?). Thanks a lot, Best regards, Sylvain