a241760189
Conflict resolution feature allows rejection of flows based on the previously added flows that conflict. For instance, a five tuple flow is added and then you add a new flow with only 4 tuple instead having same layer2 details then it will be rejected. Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com> Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com> Reviewed-by: Mike Baucom <michael.baucom@broadcom.com> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
79 lines
1.6 KiB
Bash
Executable File
79 lines
1.6 KiB
Bash
Executable File
#! /bin/sh -e
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright 2021 Mellanox Technologies, Ltd
|
|
|
|
# Parse rte_flow support of a driver directory,
|
|
# and optionally show difference with a doc file in .ini format.
|
|
|
|
dir=$1 # drivers/net/foo
|
|
ref=$2 # doc/guides/nics/features/foo.ini
|
|
|
|
if [ -z "$dir" ]; then
|
|
echo "directory argument is required" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# sorting order
|
|
export LC_COLLATE=C
|
|
|
|
# exclude exceptions
|
|
exclude() # <pattern>
|
|
{
|
|
case $(basename $dir) in
|
|
bnxt)
|
|
filter=$(sed -n "/$1/{N;/TYPE_NOT_SUPPORTED/P;}" \
|
|
$dir/tf_ulp/ulp_rte_handler_tbl.c |
|
|
grep -wo "$1[[:alnum:]_]*" | sort -u |
|
|
tr '\n' '|' | sed 's,.$,\n,')
|
|
grep -vE "$filter";;
|
|
*) cat
|
|
esac
|
|
}
|
|
|
|
# include exceptions
|
|
include() # <pattern>
|
|
{
|
|
case $(basename $dir) in
|
|
esac
|
|
}
|
|
|
|
# generate INI section
|
|
list() # <title> <pattern>
|
|
{
|
|
echo "[$1]"
|
|
git grep -who "$2[[:alnum:]_]*" $dir |
|
|
(exclude $2; include $2) | sort -u |
|
|
awk 'sub(/'$2'/, "") {printf "%-20s = Y\n", tolower($0)}'
|
|
}
|
|
|
|
rte_flow_support() # <category>
|
|
{
|
|
title="rte_flow $1s"
|
|
pattern=$(echo "RTE_FLOW_$1_TYPE_" | awk '{print toupper($0)}')
|
|
list "$title" "$pattern" | grep -vwE 'void|indirect|end'
|
|
}
|
|
|
|
if [ -z "$ref" ]; then # generate full tables
|
|
rte_flow_support item
|
|
echo
|
|
rte_flow_support action
|
|
exit 0
|
|
fi
|
|
|
|
# compare with reference input
|
|
rte_flow_compare() # <category>
|
|
{
|
|
section="rte_flow $1s]"
|
|
{
|
|
rte_flow_support $1
|
|
sed -n "/$section/,/]/p" "$ref" | sed '/^$/d'
|
|
} |
|
|
sed '/]/d' | # ignore section title
|
|
sed 's, *=.*,,' | # ignore value (better in doc than generated one)
|
|
sort | uniq -u | # show differences
|
|
sed "s,^,$1 ," # prefix with category name
|
|
}
|
|
|
|
rte_flow_compare item
|
|
rte_flow_compare action
|