Commit 0b27f865 authored by Maxime Chevallier's avatar Maxime Chevallier Committed by David S. Miller

net: mvpp2: cls: Make the flow definitions const

The cls_flow table represent the overall configuration of the
classifier, used to match the different traffic classes in the Parsing
and Classification engines.

This configuration is static, and applies to all PPv2 instances, we must
therefore keep it const so that no modifications of this table are
performed at runtime.
Signed-off-by: default avatarMaxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 93c2589c
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
} \ } \
} }
static struct mvpp2_cls_flow cls_flows[MVPP2_N_PRS_FLOWS] = { static const struct mvpp2_cls_flow cls_flows[MVPP2_N_PRS_FLOWS] = {
/* TCP over IPv4 flows, Not fragmented, no vlan tag */ /* TCP over IPv4 flows, Not fragmented, no vlan tag */
MVPP2_DEF_FLOW(TCP_V4_FLOW, MVPP2_FL_IP4_TCP_NF_UNTAG, MVPP2_DEF_FLOW(TCP_V4_FLOW, MVPP2_FL_IP4_TCP_NF_UNTAG,
MVPP22_CLS_HEK_IP4_5T, MVPP22_CLS_HEK_IP4_5T,
...@@ -463,7 +463,7 @@ static void mvpp2_cls_flow_lu_type_set(struct mvpp2_cls_flow_entry *fe, ...@@ -463,7 +463,7 @@ static void mvpp2_cls_flow_lu_type_set(struct mvpp2_cls_flow_entry *fe,
/* Initialize the parser entry for the given flow */ /* Initialize the parser entry for the given flow */
static void mvpp2_cls_flow_prs_init(struct mvpp2 *priv, static void mvpp2_cls_flow_prs_init(struct mvpp2 *priv,
struct mvpp2_cls_flow *flow) const struct mvpp2_cls_flow *flow)
{ {
mvpp2_prs_add_flow(priv, flow->flow_id, flow->prs_ri.ri, mvpp2_prs_add_flow(priv, flow->flow_id, flow->prs_ri.ri,
flow->prs_ri.ri_mask); flow->prs_ri.ri_mask);
...@@ -471,7 +471,7 @@ static void mvpp2_cls_flow_prs_init(struct mvpp2 *priv, ...@@ -471,7 +471,7 @@ static void mvpp2_cls_flow_prs_init(struct mvpp2 *priv,
/* Initialize the Lookup Id table entry for the given flow */ /* Initialize the Lookup Id table entry for the given flow */
static void mvpp2_cls_flow_lkp_init(struct mvpp2 *priv, static void mvpp2_cls_flow_lkp_init(struct mvpp2 *priv,
struct mvpp2_cls_flow *flow) const struct mvpp2_cls_flow *flow)
{ {
struct mvpp2_cls_lookup_entry le; struct mvpp2_cls_lookup_entry le;
...@@ -493,7 +493,8 @@ static void mvpp2_cls_flow_lkp_init(struct mvpp2 *priv, ...@@ -493,7 +493,8 @@ static void mvpp2_cls_flow_lkp_init(struct mvpp2 *priv,
} }
/* Initialize the flow table entries for the given flow */ /* Initialize the flow table entries for the given flow */
static void mvpp2_cls_flow_init(struct mvpp2 *priv, struct mvpp2_cls_flow *flow) static void mvpp2_cls_flow_init(struct mvpp2 *priv,
const struct mvpp2_cls_flow *flow)
{ {
struct mvpp2_cls_flow_entry fe; struct mvpp2_cls_flow_entry fe;
int i; int i;
...@@ -597,7 +598,7 @@ static int mvpp2_flow_set_hek_fields(struct mvpp2_cls_flow_entry *fe, ...@@ -597,7 +598,7 @@ static int mvpp2_flow_set_hek_fields(struct mvpp2_cls_flow_entry *fe,
return 0; return 0;
} }
struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow) const struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow)
{ {
if (flow >= MVPP2_N_PRS_FLOWS) if (flow >= MVPP2_N_PRS_FLOWS)
return NULL; return NULL;
...@@ -619,8 +620,8 @@ struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow) ...@@ -619,8 +620,8 @@ struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow)
static int mvpp2_port_rss_hash_opts_set(struct mvpp2_port *port, int flow_type, static int mvpp2_port_rss_hash_opts_set(struct mvpp2_port *port, int flow_type,
u16 requested_opts) u16 requested_opts)
{ {
const struct mvpp2_cls_flow *flow;
struct mvpp2_cls_flow_entry fe; struct mvpp2_cls_flow_entry fe;
struct mvpp2_cls_flow *flow;
int i, engine, flow_index; int i, engine, flow_index;
u16 hash_opts; u16 hash_opts;
...@@ -708,8 +709,8 @@ u16 mvpp2_flow_get_hek_fields(struct mvpp2_cls_flow_entry *fe) ...@@ -708,8 +709,8 @@ u16 mvpp2_flow_get_hek_fields(struct mvpp2_cls_flow_entry *fe)
*/ */
static u16 mvpp2_port_rss_hash_opts_get(struct mvpp2_port *port, int flow_type) static u16 mvpp2_port_rss_hash_opts_get(struct mvpp2_port *port, int flow_type)
{ {
const struct mvpp2_cls_flow *flow;
struct mvpp2_cls_flow_entry fe; struct mvpp2_cls_flow_entry fe;
struct mvpp2_cls_flow *flow;
int i, flow_index; int i, flow_index;
u16 hash_opts = 0; u16 hash_opts = 0;
...@@ -734,7 +735,7 @@ static u16 mvpp2_port_rss_hash_opts_get(struct mvpp2_port *port, int flow_type) ...@@ -734,7 +735,7 @@ static u16 mvpp2_port_rss_hash_opts_get(struct mvpp2_port *port, int flow_type)
static void mvpp2_cls_port_init_flows(struct mvpp2 *priv) static void mvpp2_cls_port_init_flows(struct mvpp2 *priv)
{ {
struct mvpp2_cls_flow *flow; const struct mvpp2_cls_flow *flow;
int i; int i;
for (i = 0; i < MVPP2_N_PRS_FLOWS; i++) { for (i = 0; i < MVPP2_N_PRS_FLOWS; i++) {
......
...@@ -223,7 +223,7 @@ int mvpp2_cls_flow_eng_get(struct mvpp2_cls_flow_entry *fe); ...@@ -223,7 +223,7 @@ int mvpp2_cls_flow_eng_get(struct mvpp2_cls_flow_entry *fe);
u16 mvpp2_flow_get_hek_fields(struct mvpp2_cls_flow_entry *fe); u16 mvpp2_flow_get_hek_fields(struct mvpp2_cls_flow_entry *fe);
struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow); const struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow);
u32 mvpp2_cls_flow_hits(struct mvpp2 *priv, int index); u32 mvpp2_cls_flow_hits(struct mvpp2 *priv, int index);
......
...@@ -58,7 +58,7 @@ DEFINE_SHOW_ATTRIBUTE(mvpp2_dbgfs_flow_dec_hits); ...@@ -58,7 +58,7 @@ DEFINE_SHOW_ATTRIBUTE(mvpp2_dbgfs_flow_dec_hits);
static int mvpp2_dbgfs_flow_type_show(struct seq_file *s, void *unused) static int mvpp2_dbgfs_flow_type_show(struct seq_file *s, void *unused)
{ {
struct mvpp2_dbgfs_flow_entry *entry = s->private; struct mvpp2_dbgfs_flow_entry *entry = s->private;
struct mvpp2_cls_flow *f; const struct mvpp2_cls_flow *f;
const char *flow_name; const char *flow_name;
f = mvpp2_cls_flow_get(entry->flow); f = mvpp2_cls_flow_get(entry->flow);
...@@ -115,8 +115,8 @@ static const struct file_operations mvpp2_dbgfs_flow_type_fops = { ...@@ -115,8 +115,8 @@ static const struct file_operations mvpp2_dbgfs_flow_type_fops = {
static int mvpp2_dbgfs_flow_id_show(struct seq_file *s, void *unused) static int mvpp2_dbgfs_flow_id_show(struct seq_file *s, void *unused)
{ {
struct mvpp2_dbgfs_flow_entry *entry = s->private; const struct mvpp2_dbgfs_flow_entry *entry = s->private;
struct mvpp2_cls_flow *f; const struct mvpp2_cls_flow *f;
f = mvpp2_cls_flow_get(entry->flow); f = mvpp2_cls_flow_get(entry->flow);
if (!f) if (!f)
...@@ -134,7 +134,7 @@ static int mvpp2_dbgfs_port_flow_hash_opt_show(struct seq_file *s, void *unused) ...@@ -134,7 +134,7 @@ static int mvpp2_dbgfs_port_flow_hash_opt_show(struct seq_file *s, void *unused)
struct mvpp2_dbgfs_port_flow_entry *entry = s->private; struct mvpp2_dbgfs_port_flow_entry *entry = s->private;
struct mvpp2_port *port = entry->port; struct mvpp2_port *port = entry->port;
struct mvpp2_cls_flow_entry fe; struct mvpp2_cls_flow_entry fe;
struct mvpp2_cls_flow *f; const struct mvpp2_cls_flow *f;
int flow_index; int flow_index;
u16 hash_opts; u16 hash_opts;
...@@ -181,7 +181,7 @@ static int mvpp2_dbgfs_port_flow_engine_show(struct seq_file *s, void *unused) ...@@ -181,7 +181,7 @@ static int mvpp2_dbgfs_port_flow_engine_show(struct seq_file *s, void *unused)
struct mvpp2_dbgfs_port_flow_entry *entry = s->private; struct mvpp2_dbgfs_port_flow_entry *entry = s->private;
struct mvpp2_port *port = entry->port; struct mvpp2_port *port = entry->port;
struct mvpp2_cls_flow_entry fe; struct mvpp2_cls_flow_entry fe;
struct mvpp2_cls_flow *f; const struct mvpp2_cls_flow *f;
int flow_index, engine; int flow_index, engine;
f = mvpp2_cls_flow_get(entry->dbg_fe->flow); f = mvpp2_cls_flow_get(entry->dbg_fe->flow);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment