fefee7a619
Add flow operations to match packets based on destination MAC address. Allocate and program hardware MPS table with the destination MAC address to be matched against. The returned MPS index is then used while offloading flows to LETCAM (maskfull) and HASH (maskless) filter regions. Also update existing mac_addr_set() to use the new MPS table API. Signed-off-by: Shagun Agrawal <shaguna@chelsio.com> Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2018 Chelsio Communications.
|
|
* All rights reserved.
|
|
*/
|
|
#ifndef _CXGBE_FLOW_H_
|
|
#define _CXGBE_FLOW_H_
|
|
|
|
#include <rte_flow_driver.h>
|
|
#include "cxgbe_filter.h"
|
|
#include "mps_tcam.h"
|
|
#include "cxgbe.h"
|
|
|
|
#define CXGBE_FLOW_POLL_US 10
|
|
#define CXGBE_FLOW_POLL_CNT 10
|
|
|
|
struct chrte_fparse {
|
|
int (*fptr)(const void *mask, /* currently supported mask */
|
|
const struct rte_flow_item *item, /* user input */
|
|
struct ch_filter_specification *fs, /* where to parse */
|
|
struct rte_flow_error *e);
|
|
const void *dmask; /* Specify what is supported by chelsio by default*/
|
|
};
|
|
|
|
struct rte_flow {
|
|
struct filter_entry *f;
|
|
struct ch_filter_specification fs; /* temp, to create filter */
|
|
struct chrte_fparse *item_parser;
|
|
/*
|
|
* filter_entry doesn't store user priority.
|
|
* Post creation of filter this will indicate the
|
|
* flow index (fidx) for both hash and tcam filters
|
|
*/
|
|
unsigned int fidx;
|
|
struct rte_eth_dev *dev;
|
|
};
|
|
|
|
int
|
|
cxgbe_dev_filter_ctrl(struct rte_eth_dev *dev,
|
|
enum rte_filter_type filter_type,
|
|
enum rte_filter_op filter_op,
|
|
void *arg);
|
|
|
|
#endif /* _CXGBE_FLOW_H_ */
|