#ifndef __CXGB4_TC_FLOWER_H
#define __CXGB4_TC_FLOWER_H
#include <net/pkt_cls.h>
struct ch_tc_flower_stats { … };
struct ch_tc_flower_entry { … };
enum { … };
struct ch_tc_pedit_fields { … };
#define PEDIT_FIELDS(type, field, size, fs_field, offset) …
#define PEDIT_ETH_DMAC_MASK …
#define PEDIT_TCP_UDP_SPORT_MASK …
#define PEDIT_ETH_DMAC_31_0 …
#define PEDIT_ETH_DMAC_47_32_SMAC_15_0 …
#define PEDIT_ETH_SMAC_47_16 …
#define PEDIT_IP4_SRC …
#define PEDIT_IP4_DST …
#define PEDIT_IP6_SRC_31_0 …
#define PEDIT_IP6_SRC_63_32 …
#define PEDIT_IP6_SRC_95_64 …
#define PEDIT_IP6_SRC_127_96 …
#define PEDIT_IP6_DST_31_0 …
#define PEDIT_IP6_DST_63_32 …
#define PEDIT_IP6_DST_95_64 …
#define PEDIT_IP6_DST_127_96 …
#define PEDIT_TCP_SPORT_DPORT …
#define PEDIT_UDP_SPORT_DPORT …
enum cxgb4_action_natmode_flags { … };
struct cxgb4_natmode_config { … };
void cxgb4_process_flow_actions(struct net_device *in,
struct flow_action *actions,
struct ch_filter_specification *fs);
int cxgb4_validate_flow_actions(struct net_device *dev,
struct flow_action *actions,
struct netlink_ext_ack *extack,
u8 matchall_filter);
int cxgb4_tc_flower_replace(struct net_device *dev,
struct flow_cls_offload *cls);
int cxgb4_tc_flower_destroy(struct net_device *dev,
struct flow_cls_offload *cls);
int cxgb4_tc_flower_stats(struct net_device *dev,
struct flow_cls_offload *cls);
int cxgb4_flow_rule_replace(struct net_device *dev, struct flow_rule *rule,
u32 tc_prio, struct netlink_ext_ack *extack,
struct ch_filter_specification *fs, u32 *tid);
int cxgb4_flow_rule_destroy(struct net_device *dev, u32 tc_prio,
struct ch_filter_specification *fs, int tid);
int cxgb4_init_tc_flower(struct adapter *adap);
void cxgb4_cleanup_tc_flower(struct adapter *adap);
#endif