1947dff12SThomas Monjalon#! /bin/sh -e 2947dff12SThomas Monjalon# SPDX-License-Identifier: BSD-3-Clause 3947dff12SThomas Monjalon# Copyright 2021 Mellanox Technologies, Ltd 4947dff12SThomas Monjalon 5947dff12SThomas Monjalon# Parse rte_flow support of a driver directory, 6947dff12SThomas Monjalon# and optionally show difference with a doc file in .ini format. 7947dff12SThomas Monjalon 8947dff12SThomas Monjalondir=$1 # drivers/net/foo 9947dff12SThomas Monjalonref=$2 # doc/guides/nics/features/foo.ini 10947dff12SThomas Monjalon 11947dff12SThomas Monjalonif [ -z "$dir" ]; then 12947dff12SThomas Monjalon echo "directory argument is required" >&2 13947dff12SThomas Monjalon exit 1 14947dff12SThomas Monjalonfi 15947dff12SThomas Monjalon 16947dff12SThomas Monjalon# sorting order 17947dff12SThomas Monjalonexport LC_COLLATE=C 18947dff12SThomas Monjalon 19947dff12SThomas Monjalon# exclude exceptions 20947dff12SThomas Monjalonexclude() # <pattern> 21947dff12SThomas Monjalon{ 22947dff12SThomas Monjalon case $(basename $dir) in 23947dff12SThomas Monjalon bnxt) 24947dff12SThomas Monjalon filter=$(sed -n "/$1/{N;/TYPE_NOT_SUPPORTED/P;}" \ 25a2417601SKishore Padmanabha $dir/tf_ulp/ulp_rte_handler_tbl.c | 26947dff12SThomas Monjalon grep -wo "$1[[:alnum:]_]*" | sort -u | 27947dff12SThomas Monjalon tr '\n' '|' | sed 's,.$,\n,') 28*bdf4a3c6SKishore Padmanabha exceptions='RTE_FLOW_ACTION_TYPE_SHARED' 29*bdf4a3c6SKishore Padmanabha grep -vE "$filter" | grep -vE $exceptions;; 30947dff12SThomas Monjalon *) cat 31947dff12SThomas Monjalon esac 32947dff12SThomas Monjalon} 33947dff12SThomas Monjalon 34947dff12SThomas Monjalon# include exceptions 35947dff12SThomas Monjaloninclude() # <pattern> 36947dff12SThomas Monjalon{ 37947dff12SThomas Monjalon case $(basename $dir) in 38947dff12SThomas Monjalon esac 39947dff12SThomas Monjalon} 40947dff12SThomas Monjalon 41947dff12SThomas Monjalon# generate INI section 42947dff12SThomas Monjalonlist() # <title> <pattern> 43947dff12SThomas Monjalon{ 44947dff12SThomas Monjalon echo "[$1]" 45947dff12SThomas Monjalon git grep -who "$2[[:alnum:]_]*" $dir | 46947dff12SThomas Monjalon (exclude $2; include $2) | sort -u | 47947dff12SThomas Monjalon awk 'sub(/'$2'/, "") {printf "%-20s = Y\n", tolower($0)}' 48947dff12SThomas Monjalon} 49947dff12SThomas Monjalon 50947dff12SThomas Monjalonrte_flow_support() # <category> 51947dff12SThomas Monjalon{ 52947dff12SThomas Monjalon title="rte_flow $1s" 53947dff12SThomas Monjalon pattern=$(echo "RTE_FLOW_$1_TYPE_" | awk '{print toupper($0)}') 54947dff12SThomas Monjalon list "$title" "$pattern" | grep -vwE 'void|indirect|end' 55947dff12SThomas Monjalon} 56947dff12SThomas Monjalon 57947dff12SThomas Monjalonif [ -z "$ref" ]; then # generate full tables 58947dff12SThomas Monjalon rte_flow_support item 59947dff12SThomas Monjalon echo 60947dff12SThomas Monjalon rte_flow_support action 61947dff12SThomas Monjalon exit 0 62947dff12SThomas Monjalonfi 63947dff12SThomas Monjalon 64947dff12SThomas Monjalon# compare with reference input 65947dff12SThomas Monjalonrte_flow_compare() # <category> 66947dff12SThomas Monjalon{ 67947dff12SThomas Monjalon section="rte_flow $1s]" 68947dff12SThomas Monjalon { 69947dff12SThomas Monjalon rte_flow_support $1 70947dff12SThomas Monjalon sed -n "/$section/,/]/p" "$ref" | sed '/^$/d' 71947dff12SThomas Monjalon } | 72947dff12SThomas Monjalon sed '/]/d' | # ignore section title 73947dff12SThomas Monjalon sed 's, *=.*,,' | # ignore value (better in doc than generated one) 74947dff12SThomas Monjalon sort | uniq -u | # show differences 75947dff12SThomas Monjalon sed "s,^,$1 ," # prefix with category name 76947dff12SThomas Monjalon} 77947dff12SThomas Monjalon 78947dff12SThomas Monjalonrte_flow_compare item 79947dff12SThomas Monjalonrte_flow_compare action 80