#include <linux/kernel.h>
#include <linux/list.h>
#include "prestera.h"
#include "prestera_acl.h"
#include "prestera_flow.h"
#include "prestera_flower.h"
#include "prestera_matchall.h"
#include "prestera_span.h"
static LIST_HEAD(prestera_block_cb_list);
static int prestera_flow_block_mall_cb(struct prestera_flow_block *block,
struct tc_cls_matchall_offload *f)
{ … }
static int prestera_flow_block_flower_cb(struct prestera_flow_block *block,
struct flow_cls_offload *f)
{ … }
static int prestera_flow_block_cb(enum tc_setup_type type,
void *type_data, void *cb_priv)
{ … }
static void prestera_flow_block_destroy(void *cb_priv)
{ … }
static struct prestera_flow_block *
prestera_flow_block_create(struct prestera_switch *sw,
struct net *net,
bool ingress)
{ … }
static void prestera_flow_block_release(void *cb_priv)
{ … }
static bool
prestera_flow_block_is_bound(const struct prestera_flow_block *block)
{ … }
static struct prestera_flow_block_binding *
prestera_flow_block_lookup(struct prestera_flow_block *block,
struct prestera_port *port)
{ … }
static int prestera_flow_block_bind(struct prestera_flow_block *block,
struct prestera_port *port)
{ … }
static int prestera_flow_block_unbind(struct prestera_flow_block *block,
struct prestera_port *port)
{ … }
static struct prestera_flow_block *
prestera_flow_block_get(struct prestera_switch *sw,
struct flow_block_offload *f,
bool *register_block,
bool ingress)
{ … }
static void prestera_flow_block_put(struct prestera_flow_block *block)
{ … }
static int prestera_setup_flow_block_bind(struct prestera_port *port,
struct flow_block_offload *f, bool ingress)
{ … }
static void prestera_setup_flow_block_unbind(struct prestera_port *port,
struct flow_block_offload *f, bool ingress)
{ … }
static int prestera_setup_flow_block_clsact(struct prestera_port *port,
struct flow_block_offload *f,
bool ingress)
{ … }
int prestera_flow_block_setup(struct prestera_port *port,
struct flow_block_offload *f)
{ … }