DPDK usage discussions
 help / color / mirror / Atom feed
From: 胡林帆 <zhongdahulinfan@163.com>
To: "users@dpdk.org" <users@dpdk.org>
Subject: [dpdk-users]  i40e: The same PCTYPE with different input sets
Date: Mon, 18 Nov 2019 17:48:59 +0800 (GMT+08:00)
Message-ID: <26bcc01e.b611.16e7dea5680.Coremail.zhongdahulinfan@163.com> (raw)

Hi all,
    I'm using Intel XXV710, trying to set two flow director filter on the same flow type (RTE_ETH_FLOW_xxx).
First is based on TCP & dst IP: 


int tcp_dip_fdir_inset(void)
{
    int ret;
    struct rte_eth_fdir_filter_info info;


    memset(&info, 0, sizeof(info));


    /* TCP && dst IP matcher */
    info.info_type = RTE_ETH_FDIR_FILTER_INPUT_SET_SELECT;
    info.info.input_set_conf.op = RTE_ETH_INPUT_SET_SELECT;
    info.info.input_set_conf.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP;
    info.info.input_set_conf.inset_size = 1;
    info.info.input_set_conf.field[0] = RTE_ETH_INPUT_SET_L3_DST_IP4;
    ret = rte_eth_dev_filter_ctrl(port_id, RTE_ETH_FILTER_FDIR, RTE_ETH_FILTER_SET, &info);
}


Second is TCP & dst IP & dst port:


int tcp_dip_dport_fdir_inset(void)
{
    int ret;
    struct rte_eth_fdir_filter_info info;


    memset(&info, 0, sizeof(info));


    /* TCP && dst IP && dst port matcher */
    info.info_type = RTE_ETH_FDIR_FILTER_INPUT_SET_SELECT;
    info.info.input_set_conf.op = RTE_ETH_INPUT_SET_SELECT;
    info.info.input_set_conf.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP;
    info.info.input_set_conf.inset_size = 2;
    info.info.input_set_conf.field[0] = RTE_ETH_INPUT_SET_L3_DST_IP4;
    info.info.input_set_conf.field[1] = RTE_ETH_INPUT_SET_L4_TCP_DST_PORT;
    ret = rte_eth_dev_filter_ctrl(port_id, RTE_ETH_FILTER_FDIR, RTE_ETH_FILTER_SET, &info);
}


Then I set the flow director rules for the two input set.  I found that only the last one works!
So I went deep into the i40e PMD driver, and found that if I set two input set for a flow type (RTE_ETH_FLOW_xxx), 
then the second one will overide the first one. If I change op from RTE_ETH_INPUT_SET_SELECT to RTE_ETH_INPUT_SET_ADD, 
then I found that only tcp_dip_dport_fdir works:


int
i40e_fdir_filter_inset_select(struct i40e_pf *pf,
struct rte_eth_input_set_conf *conf)
{
if (conf->op == RTE_ETH_INPUT_SET_SELECT)
inset_reg &= I40E_REG_INSET_FLEX_PAYLOAD_WORDS;
else
input_set |= pf->fdir.input_set[pctype];
}


Intel® Ethernet Controller X710/ XXV710/XL710 Datasheet, part 7.1.9 describes the FD matching criteria:
Filter Match Criteria — A packet matches a filter entry if the following conditions are met:
a. The target VSI equals to the programmed DEST_VSI.
b. The identified PCTYPE equals to the programmed PCTYPE.
c. The received packet pattern matches the programmed one (the relevant fields for the PCTYPE
as defined by the FD input set listed in Table 7-5). 


My question is:
Can we use (TCP & dst IP) and (TCP & dst IP & dst port) flow director simultaneously?
Or to be more general, same PCTYPE with different input set?
| |
Linfan Hu
|
|
zhongdahulinfan@163.com
|
签名由网易邮箱大师定制

             reply	other threads:[~2019-11-19  9:03 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-18  9:48 胡林帆 [this message]
2019-11-20  7:43 ` 胡林帆
2019-11-20  8:02   ` Cao, Yahui
2019-11-20  9:05     ` 胡林帆
2019-11-19  1:39 胡林帆

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=26bcc01e.b611.16e7dea5680.Coremail.zhongdahulinfan@163.com \
    --to=zhongdahulinfan@163.com \
    --cc=users@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK usage discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/users/0 users/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 users users/ https://inbox.dpdk.org/users \
		users@dpdk.org
	public-inbox-index users

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.users


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git