Commit d4b69bad authored by John Hurley's avatar John Hurley Committed by David S. Miller

nfp: flower: remove unnecessary code in flow lookup

Recent changes to NFP mean that stats updates from fw to driver no longer
require a flow lookup and (because egdev offload has been removed) the
ingress netdev for a lookup is now always known.

Remove obsolete code in a flow lookup that matches on host context and
that allows for a netdev to be NULL.
Signed-off-by: default avatarJohn Hurley <john.hurley@netronome.com>
Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4f63fde3
...@@ -20,7 +20,6 @@ struct nfp_fl_pre_lag; ...@@ -20,7 +20,6 @@ struct nfp_fl_pre_lag;
struct net_device; struct net_device;
struct nfp_app; struct nfp_app;
#define NFP_FL_STATS_CTX_DONT_CARE cpu_to_be32(0xffffffff)
#define NFP_FL_STATS_ELEM_RS FIELD_SIZEOF(struct nfp_fl_stats_id, \ #define NFP_FL_STATS_ELEM_RS FIELD_SIZEOF(struct nfp_fl_stats_id, \
init_unalloc) init_unalloc)
#define NFP_FLOWER_MASK_ENTRY_RS 256 #define NFP_FLOWER_MASK_ENTRY_RS 256
...@@ -242,7 +241,7 @@ int nfp_modify_flow_metadata(struct nfp_app *app, ...@@ -242,7 +241,7 @@ int nfp_modify_flow_metadata(struct nfp_app *app,
struct nfp_fl_payload * struct nfp_fl_payload *
nfp_flower_search_fl_table(struct nfp_app *app, unsigned long tc_flower_cookie, nfp_flower_search_fl_table(struct nfp_app *app, unsigned long tc_flower_cookie,
struct net_device *netdev, __be32 host_ctx); struct net_device *netdev);
struct nfp_fl_payload * struct nfp_fl_payload *
nfp_flower_remove_fl_table(struct nfp_app *app, unsigned long tc_flower_cookie); nfp_flower_remove_fl_table(struct nfp_app *app, unsigned long tc_flower_cookie);
......
...@@ -21,7 +21,6 @@ struct nfp_mask_id_table { ...@@ -21,7 +21,6 @@ struct nfp_mask_id_table {
struct nfp_fl_flow_table_cmp_arg { struct nfp_fl_flow_table_cmp_arg {
struct net_device *netdev; struct net_device *netdev;
unsigned long cookie; unsigned long cookie;
__be32 host_ctx;
}; };
static int nfp_release_stats_entry(struct nfp_app *app, u32 stats_context_id) static int nfp_release_stats_entry(struct nfp_app *app, u32 stats_context_id)
...@@ -76,14 +75,13 @@ static int nfp_get_stats_entry(struct nfp_app *app, u32 *stats_context_id) ...@@ -76,14 +75,13 @@ static int nfp_get_stats_entry(struct nfp_app *app, u32 *stats_context_id)
/* Must be called with either RTNL or rcu_read_lock */ /* Must be called with either RTNL or rcu_read_lock */
struct nfp_fl_payload * struct nfp_fl_payload *
nfp_flower_search_fl_table(struct nfp_app *app, unsigned long tc_flower_cookie, nfp_flower_search_fl_table(struct nfp_app *app, unsigned long tc_flower_cookie,
struct net_device *netdev, __be32 host_ctx) struct net_device *netdev)
{ {
struct nfp_fl_flow_table_cmp_arg flower_cmp_arg; struct nfp_fl_flow_table_cmp_arg flower_cmp_arg;
struct nfp_flower_priv *priv = app->priv; struct nfp_flower_priv *priv = app->priv;
flower_cmp_arg.netdev = netdev; flower_cmp_arg.netdev = netdev;
flower_cmp_arg.cookie = tc_flower_cookie; flower_cmp_arg.cookie = tc_flower_cookie;
flower_cmp_arg.host_ctx = host_ctx;
return rhashtable_lookup_fast(&priv->flow_table, &flower_cmp_arg, return rhashtable_lookup_fast(&priv->flow_table, &flower_cmp_arg,
nfp_flower_table_params); nfp_flower_table_params);
...@@ -307,8 +305,7 @@ int nfp_compile_flow_metadata(struct nfp_app *app, ...@@ -307,8 +305,7 @@ int nfp_compile_flow_metadata(struct nfp_app *app,
priv->stats[stats_cxt].bytes = 0; priv->stats[stats_cxt].bytes = 0;
priv->stats[stats_cxt].used = jiffies; priv->stats[stats_cxt].used = jiffies;
check_entry = nfp_flower_search_fl_table(app, flow->cookie, netdev, check_entry = nfp_flower_search_fl_table(app, flow->cookie, netdev);
NFP_FL_STATS_CTX_DONT_CARE);
if (check_entry) { if (check_entry) {
if (nfp_release_stats_entry(app, stats_cxt)) if (nfp_release_stats_entry(app, stats_cxt))
return -EINVAL; return -EINVAL;
...@@ -353,9 +350,7 @@ static int nfp_fl_obj_cmpfn(struct rhashtable_compare_arg *arg, ...@@ -353,9 +350,7 @@ static int nfp_fl_obj_cmpfn(struct rhashtable_compare_arg *arg,
const struct nfp_fl_flow_table_cmp_arg *cmp_arg = arg->key; const struct nfp_fl_flow_table_cmp_arg *cmp_arg = arg->key;
const struct nfp_fl_payload *flow_entry = obj; const struct nfp_fl_payload *flow_entry = obj;
if ((!cmp_arg->netdev || flow_entry->ingress_dev == cmp_arg->netdev) && if (flow_entry->ingress_dev == cmp_arg->netdev)
(cmp_arg->host_ctx == NFP_FL_STATS_CTX_DONT_CARE ||
flow_entry->meta.host_ctx_id == cmp_arg->host_ctx))
return flow_entry->tc_flower_cookie != cmp_arg->cookie; return flow_entry->tc_flower_cookie != cmp_arg->cookie;
return 1; return 1;
......
...@@ -512,8 +512,7 @@ nfp_flower_del_offload(struct nfp_app *app, struct net_device *netdev, ...@@ -512,8 +512,7 @@ nfp_flower_del_offload(struct nfp_app *app, struct net_device *netdev,
if (nfp_netdev_is_nfp_repr(netdev)) if (nfp_netdev_is_nfp_repr(netdev))
port = nfp_port_from_netdev(netdev); port = nfp_port_from_netdev(netdev);
nfp_flow = nfp_flower_search_fl_table(app, flow->cookie, netdev, nfp_flow = nfp_flower_search_fl_table(app, flow->cookie, netdev);
NFP_FL_STATS_CTX_DONT_CARE);
if (!nfp_flow) if (!nfp_flow)
return -ENOENT; return -ENOENT;
...@@ -561,8 +560,7 @@ nfp_flower_get_stats(struct nfp_app *app, struct net_device *netdev, ...@@ -561,8 +560,7 @@ nfp_flower_get_stats(struct nfp_app *app, struct net_device *netdev,
struct nfp_fl_payload *nfp_flow; struct nfp_fl_payload *nfp_flow;
u32 ctx_id; u32 ctx_id;
nfp_flow = nfp_flower_search_fl_table(app, flow->cookie, netdev, nfp_flow = nfp_flower_search_fl_table(app, flow->cookie, netdev);
NFP_FL_STATS_CTX_DONT_CARE);
if (!nfp_flow) if (!nfp_flow)
return -EINVAL; return -EINVAL;
......
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