openvswitch: Change ovs_flow_tbl_lookup_xx() APIs
API changes only for code readability. No functional chnages. This patch removes the underscored version. Added a new API ovs_flow_tbl_lookup_stats() that returns the n_mask_hits. Reported by: Ben Pfaff <blp@nicira.com> Reviewed-by: Thomas Graf <tgraf@redhat.com> Signed-off-by: Andy Zhou <azhou@nicira.com> Signed-off-by: Jesse Gross <jesse@nicira.com>
This commit is contained in:
Родитель
8f49ce1135
Коммит
5bb506324d
|
@ -234,7 +234,7 @@ void ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look up flow. */
|
/* Look up flow. */
|
||||||
flow = ovs_flow_tbl_lookup(&dp->table, &key, &n_mask_hit);
|
flow = ovs_flow_tbl_lookup_stats(&dp->table, &key, &n_mask_hit);
|
||||||
if (unlikely(!flow)) {
|
if (unlikely(!flow)) {
|
||||||
struct dp_upcall_info upcall;
|
struct dp_upcall_info upcall;
|
||||||
|
|
||||||
|
@ -751,14 +751,6 @@ static struct sk_buff *ovs_flow_cmd_build_info(struct sw_flow *flow,
|
||||||
return skb;
|
return skb;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct sw_flow *__ovs_flow_tbl_lookup(struct flow_table *tbl,
|
|
||||||
const struct sw_flow_key *key)
|
|
||||||
{
|
|
||||||
u32 __always_unused n_mask_hit;
|
|
||||||
|
|
||||||
return ovs_flow_tbl_lookup(tbl, key, &n_mask_hit);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ovs_flow_cmd_new_or_set(struct sk_buff *skb, struct genl_info *info)
|
static int ovs_flow_cmd_new_or_set(struct sk_buff *skb, struct genl_info *info)
|
||||||
{
|
{
|
||||||
struct nlattr **a = info->attrs;
|
struct nlattr **a = info->attrs;
|
||||||
|
@ -809,7 +801,7 @@ static int ovs_flow_cmd_new_or_set(struct sk_buff *skb, struct genl_info *info)
|
||||||
goto err_unlock_ovs;
|
goto err_unlock_ovs;
|
||||||
|
|
||||||
/* Check if this is a duplicate flow */
|
/* Check if this is a duplicate flow */
|
||||||
flow = __ovs_flow_tbl_lookup(&dp->table, &key);
|
flow = ovs_flow_tbl_lookup(&dp->table, &key);
|
||||||
if (!flow) {
|
if (!flow) {
|
||||||
/* Bail out if we're not allowed to create a new flow. */
|
/* Bail out if we're not allowed to create a new flow. */
|
||||||
error = -ENOENT;
|
error = -ENOENT;
|
||||||
|
@ -921,7 +913,7 @@ static int ovs_flow_cmd_get(struct sk_buff *skb, struct genl_info *info)
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
flow = __ovs_flow_tbl_lookup(&dp->table, &key);
|
flow = ovs_flow_tbl_lookup(&dp->table, &key);
|
||||||
if (!flow || !ovs_flow_cmp_unmasked_key(flow, &match)) {
|
if (!flow || !ovs_flow_cmp_unmasked_key(flow, &match)) {
|
||||||
err = -ENOENT;
|
err = -ENOENT;
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
@ -969,7 +961,7 @@ static int ovs_flow_cmd_del(struct sk_buff *skb, struct genl_info *info)
|
||||||
if (err)
|
if (err)
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
||||||
flow = __ovs_flow_tbl_lookup(&dp->table, &key);
|
flow = ovs_flow_tbl_lookup(&dp->table, &key);
|
||||||
if (!flow || !ovs_flow_cmp_unmasked_key(flow, &match)) {
|
if (!flow || !ovs_flow_cmp_unmasked_key(flow, &match)) {
|
||||||
err = -ENOENT;
|
err = -ENOENT;
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
|
@ -429,7 +429,7 @@ static struct sw_flow *masked_flow_lookup(struct table_instance *ti,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct sw_flow *ovs_flow_tbl_lookup(struct flow_table *tbl,
|
struct sw_flow *ovs_flow_tbl_lookup_stats(struct flow_table *tbl,
|
||||||
const struct sw_flow_key *key,
|
const struct sw_flow_key *key,
|
||||||
u32 *n_mask_hit)
|
u32 *n_mask_hit)
|
||||||
{
|
{
|
||||||
|
@ -447,6 +447,14 @@ struct sw_flow *ovs_flow_tbl_lookup(struct flow_table *tbl,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct sw_flow *ovs_flow_tbl_lookup(struct flow_table *tbl,
|
||||||
|
const struct sw_flow_key *key)
|
||||||
|
{
|
||||||
|
u32 __always_unused n_mask_hit;
|
||||||
|
|
||||||
|
return ovs_flow_tbl_lookup_stats(tbl, key, &n_mask_hit);
|
||||||
|
}
|
||||||
|
|
||||||
int ovs_flow_tbl_num_masks(const struct flow_table *table)
|
int ovs_flow_tbl_num_masks(const struct flow_table *table)
|
||||||
{
|
{
|
||||||
struct sw_flow_mask *mask;
|
struct sw_flow_mask *mask;
|
||||||
|
|
|
@ -69,9 +69,11 @@ void ovs_flow_tbl_remove(struct flow_table *table, struct sw_flow *flow);
|
||||||
int ovs_flow_tbl_num_masks(const struct flow_table *table);
|
int ovs_flow_tbl_num_masks(const struct flow_table *table);
|
||||||
struct sw_flow *ovs_flow_tbl_dump_next(struct table_instance *table,
|
struct sw_flow *ovs_flow_tbl_dump_next(struct table_instance *table,
|
||||||
u32 *bucket, u32 *idx);
|
u32 *bucket, u32 *idx);
|
||||||
struct sw_flow *ovs_flow_tbl_lookup(struct flow_table *,
|
struct sw_flow *ovs_flow_tbl_lookup_stats(struct flow_table *,
|
||||||
const struct sw_flow_key *,
|
const struct sw_flow_key *,
|
||||||
u32 *n_mask_hit);
|
u32 *n_mask_hit);
|
||||||
|
struct sw_flow *ovs_flow_tbl_lookup(struct flow_table *,
|
||||||
|
const struct sw_flow_key *);
|
||||||
|
|
||||||
bool ovs_flow_cmp_unmasked_key(const struct sw_flow *flow,
|
bool ovs_flow_cmp_unmasked_key(const struct sw_flow *flow,
|
||||||
struct sw_flow_match *match);
|
struct sw_flow_match *match);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче