Ethernet Products
Determine ramifications of Intel® Ethernet products and technologies
Announcements
For support on Altera products please visit the Altera Community Forums.
5821 Discussions

RSS Processing for GTP-U Traffic Using DDP on Intel E810-C for QSFP28 (1592)

jung1
Beginner
430 Views

Hello,

I applied the configuration to my Intel E810 based on the Intel Ethernet Controller E800 Series DDP for Telecommunications Technology Guide[January 2026 Doc.No.:618651, Rev.:3.8].

 

DPDK:24.11

S/W Release: 29.4

ice Kernel Driver: 1.15.4

iavf kernel Driver: 4.12.5

NVM version: 4.60

Firmware: 1.7.6.2

DDP OS Pkg: 1.3.36.0

DDP Comms Pkg: 1.3.46.0

DDP Wireless Edge: 1.3.14.0

 

The purpose of this configuration is to distribute GTP-U traffic across multiple queues using RSS based on the inner IP header.

However, although I followed the documentation, I continuously encounter errors in the rte_flow_create() and rte_flow_validate() APIs.

The environment I am using is as follows:

 

System Environment

Linux

# cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.3 LTS (Noble Numbat)"

# uname -a
Linux RM-DPI 6.8.0-100-generic

 

DPDK

dpdk-stable-24.11.1

 

NIC Information (Intel E810-C for QSFP28 1592)

 

Driver / Firmware

# ethtool -i enp13s0f0np0
driver: ice
version: 1.15.4
firmware-version: 4.60 0x8001e8b1 1.3682.0
bus-info: 0000:0d:00.0

 

 

devlink Information

# devlink dev info pci/0000:0d:00.0
pci/0000:0d:00.0:
driver ice
serial_number 00-01-00-ff-ff-00-00-00
versions:
fixed:
board.id K91258-000
running:
fw.mgmt 7.6.2
fw.mgmt.api 1.7.11
fw.mgmt.build 0x58ac192a
fw.mgmt.srev 12
fw.undi 1.3682.0
fw.undi.srev 12
fw.psid.api 4.60
fw.bundle_id 0x8001e8b1
fw.app.name ICE COMMS Package
fw.app 1.3.46.0
fw.app.bundle_id 0xc0000002
fw.netlist 4.3.2000-3.25.0
fw.netlist.build 0xa2703c1c
stored:
fw.mgmt.srev 12
fw.undi 1.3682.0
fw.undi.srev 12
fw.psid.api 4.60
fw.bundle_id 0x8001e8b1
fw.netlist 4.3.2000-3.25.0
fw.netlist.build 0xa2703c1c

 

 

DDP Package

ice_comms-1.3.46.0.pkg
 
 

 

When running our developed application or dpdk-testpmd,  the DDP COMMS package loads successfully:

"ICE_INIT: ice_load_pkg_type(): Active package is: 1.3.46.0, ICE COMMS Package (single VLAN mode)"

 

Issue Description

When creating an RSS flow rule for GTP-U traffic (based on inner IPv4), the following error occurs:

 

In Our Application

Flow create begin. (port id: 0)

pattern[0].type: 6
pattern[1].type: 8
pattern[2].type: 11
pattern[3].type: 22
pattern[4].type: 8
pattern[5].type: 0
rss_conf.type: 8388608
action[0].type: 9
action[1].type: 0
Validation Failed! Type: 10, Message: Invalid input set
EAL: Error - exiting with code: 1
Port 0 gtp_rss error.

 

In testpmd

Command:

"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 end queues 0 1 2 3 end / end"

Error messages:

ICE_DRIVER: ice_flow_create(): Failed to create flow
port_flow_complain(): Caught PMD error type 10 (item specification):
Invalid input set: Invalid argument

 

Development Goal

We are developing an application that distributes received GTP-U traffic into 8 RX queues
[0,1,2,3,4,5,6,7] based on the inner IPv4 header.

Below is the core function used to create the GTP RSS flow:

(Flow generation function omitted here for brevity — identical to the attached source.)

The flow create source is:

struct rte_flow * generate_gtp_rss_flow(uint16_t port_id, uint16_t rx_queues[])
{
struct rte_flow_error error;
struct rte_flow_attr attr;
struct rte_flow_action_rss rss_conf;
struct rte_flow *flow = NULL;

memset(&error, 0, sizeof(struct rte_flow_error));
memset(&rss_conf, 0, sizeof(struct rte_flow_action_rss));

/* 1. Attribute 설정 (수신 패킷에 적용) */
memset(&attr, 0, sizeof(struct rte_flow_attr));
attr.ingress = 1;

/* 2. Pattern 설정 (L2 -> L3 -> L4 -> GTPU -> Inner L3) */
#define PATTERN_NUMS 6
struct rte_flow_item pattern[PATTERN_NUMS]; // eth, ipv4, udp, gtpu, ipv4, end
memset(pattern, 0, sizeof(pattern));

// Ethernet
pattern[0].type = RTE_FLOW_ITEM_TYPE_ETH;
// Outer IPv4
pattern[1].type = RTE_FLOW_ITEM_TYPE_IPV4;
// Outer UDP
pattern[2].type = RTE_FLOW_ITEM_TYPE_UDP;
// GTPU
pattern[3].type = RTE_FLOW_ITEM_TYPE_GTPU;
// Inner IPv4 (DDP Comms 패키지 필요)
pattern[4].type = RTE_FLOW_ITEM_TYPE_IPV4;
// End
pattern[5].type = RTE_FLOW_ITEM_TYPE_END;

int i;
for(i = 0; i < PATTERN_NUMS; i++) {
printf("pattern[%d].type: %d\n", i, pattern[i].type);
}

/* 3. Action 설정 (RSS 분산) */
#define ACTION_NUMS 2
struct rte_flow_action action[ACTION_NUMS];
memset(action, 0, sizeof(action));
rss_conf = (struct rte_flow_action_rss){
.level = 2,
.types = RTE_ETH_RSS_IPV4, // Inner IPv4에 RSS 적용
.queue_num = 8, // 분산할 큐 개수
.queue = rx_queues, // 큐 인덱스 배열
.func = RTE_ETH_HASH_FUNCTION_DEFAULT,
};

action[0].type = RTE_FLOW_ACTION_TYPE_RSS;
action[0].conf = &rss_conf;
action[1].type = RTE_FLOW_ACTION_TYPE_END;

printf("rss_conf.type: %lu\n", rss_conf.types);
for(i = 0; i < ACTION_NUMS; i++) {
printf("action[%d].type: %d\n", i, action[i].type);
}

/* 4. 룰 생성 요청 */
int ret = rte_flow_validate(port_id, &attr, pattern, action, &error);
if(ret == 0) {
printf("Validation Success: This NIC supports GTP RSS with DDP.\n");

flow = rte_flow_create(port_id, &attr, pattern, action, &error);
if (!flow) {
printf("Flow create failed: %s (Type: %d) (%d/%s)\n", error.message ? error.message : "unknown", error.type, rte_errno, rte_strerror(rte_errno));
}

printf("Flow create success.\n");
}
else {
printf("Validation Failed! Type: %d, Message: %s\n", error.type, error.message);
}

return flow;
}

 

 

Request for Support

  • Is the above flow pattern correct for inner IPv4 RSS using the ICE COMMS DDP package?

  • Is .level =2 appropriate for inner header RSS in GTP-U?

  • Is additional configuration required to enable inner RSS for GTP-U?

  • Does the ICE driver version (1.15.4) fully support this feature with DPDK 24.11.1?

  • Is there any limitation regarding RSS types for inner headers?

Your assistance is urgently needed.

I look forward to your response.

Thank you.

0 Kudos
6 Replies
Subhashish
Employee
410 Views

Hello jung1,


Thank you for posting your query in Intel Ethernet Community Forum.


We are reviewing the details shared. Meanwhile, just to ensure we have the correct product, because from your description, the PN# belongs to the E810CQDA2 Adapter but the revision is not a valid one that we have and pointing towards any OEM SKU.

To confirm this, could you please help share the SSU logs from your system using the below guide:


https://www.intel.com/content/www/us/en/support/articles/000008563/ethernet-products.html


Also, can you help share the clear images of the adapter from front and rear side with all the markings in label clearly visible.



Regards,

Subhashish_Intel.


0 Kudos
TejasMohan
Employee
379 Views

Hello jung1,

 

Greetings from Intel!

Thank you for your patience.

 

Kindly let us know if you can update to the latest versions of ICE, NVM, DDP, etc., as mentioned in Table 7.0 – DPDK Compatibility of the Intel® Ethernet Controller E800 Series DDP for Telecommunications Technology Guide (January 2026, Doc. No.: 618651, Rev. 3.8).

 

You may refer to the same in page 72 of the document linked below for the relevant details:

https://www.intel.com/content/www/us/en/content-details/618651/intel-ethernet-controller-e800-series-dynamic-device-personalization-package-ddp-for-telecommunications-technology-guide.html

 

Please don’t hesitate to contact us if you need any further assistance.

Thank you for choosing Intel products and services.

 

Best regards,

Tejas

Intel Customer Support Technician

 

0 Kudos
idog
Beginner
345 Views

Hi

I also fail to use specific queues but not specifying the queue numbers works

i.e. this should work

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 end queues end / end

DDP guide say it will use all queues

NOTE
The number of queues is 0. RSS spreads traffic across all receive queue...

Thanx

Ido

0 Kudos
Subhashish
Employee
301 Views

Hello jung1,


This is regarding the ongoing issue. We just wanted to check if you have reviewed our suggestion and attempted to update the drivers as suggested earlier.


Regards,

Subhashish_Intel.


0 Kudos
Subhashish
Employee
129 Views

Hello jung1,


This is regarding the ongoing issue. We do not mean to rush you but just wanted to check if you have reviewed our last suggestion and tried the driver updates. If yes, please share the findings.


We remain attentive.


Regards,

Subhashish_Intel.


0 Kudos
Subhashish
Employee
86 Views

Hello Jung1,


This is regarding the ongoing issue.


We have requested to check and update the drivers earlier as per our findings. We hope you have reviewed and and updated those. If we don't hear back from you soon, we'll assume the issue has been resolved and will proceed to close the case.

 

Please feel free to respond to this email at your earliest convenience.



Regards,

Subhashish_Intel.




0 Kudos
Reply