From: Sunil Kumar Kori <skori@marvell.com>
In this commit, check is added for event device, Rx,
Tx, Crypto and Timer adapters tables for all supported
drivers.
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
---
v6:
- Rebased to 21.11 rc2
- Added feature matrices for all supported drivers
- Added doc vs code check script
v5:
- Rebased to 21.11
- Added feature matrix for cnxk.
v4:
- Rebased to 20.02
v3:
- Removed .txt files to generate tables.
- Use conf.py script to generate tables.
- Add .ini file for all supported PMDs.
v2:
- Review comments incorporated
devtools/check-doc-vs-code.sh | 35 ++++++++
devtools/parse-event-support.sh | 149 ++++++++++++++++++++++++++++++++
2 files changed, 184 insertions(+)
create mode 100755 devtools/parse-event-support.sh
@@ -66,11 +66,35 @@ check_rte_flow() # <driver>
fi
}
+all_event_drivers()
+{
+ find $rootdir/drivers/event -mindepth 1 -maxdepth 1 -type d |
+ sed 's,.*/,,' |
+ sort
+}
+
+check_event_dev() # <driver>
+{
+ code=$rootdir/drivers/event/$1
+ doc=$rootdir/doc/guides/eventdevs/features/$1.ini
+ [ -d $code ] || return 0
+ [ -f $doc ] || return 0
+ report=$($selfdir/parse-event-support.sh $code $doc)
+ if [ -n "$report" ]; then
+ error "doc out of sync for $1"
+ echo "$report" | sed 's,^,\t,'
+ fi
+}
+
if [ -z "$trusted_commit" ]; then
# check all
for driver in $(all_net_drivers); do
check_rte_flow $driver
done
+
+ for driver in $(all_event_drivers); do
+ check_event_dev $driver
+ done
exit $result
fi
@@ -81,4 +105,15 @@ if has_code_change 'RTE_FLOW_.*_TYPE_' ||
check_rte_flow $driver
done
fi
+
+if has_code_change 'RTE_EVENT_DEV_CAP_*' ||
+ has_code_change 'RTE_EVENT_ETH_RX_ADAPTER_CAP_*' ||
+ has_code_change 'RTE_EVENT_ETH_TX_ADAPTER_CAP_*' ||
+ has_code_change 'RTE_EVENT_CRYPTO_ADAPTER_CAP_*' ||
+ has_code_change 'RTE_EVENT_TIMER_ADAPTER_CAP_*' ||
+ has_file_change 'doc/guides/eventdevs/features'; then
+ for driver in $(all_event_drivers); do
+ check_event_dev $driver
+ done
+fi
exit $result
new file mode 100755
@@ -0,0 +1,149 @@
+#! /bin/sh -e
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(C) 2021 Marvell.
+
+# Parse event dev support of a driver directory,
+# and optionally show difference with a doc file in .ini format.
+
+dir=$1 # drivers/event/foo
+ref=$2 # doc/guides/eventdevs/features/foo.ini
+
+if [ -z "$dir" ]; then
+ echo "directory argument is required" >&2
+ exit 1
+fi
+
+# sorting order
+export LC_COLLATE=C
+
+# generate INI section
+list() # <title> <pattern>
+{
+ echo "[$1]"
+ git grep -who "$2[[:alnum:]_]*" $dir | sort -u |
+ awk 'sub(/'$2'/, "") {printf "%-20s = Y\n", tolower($0)}'
+}
+
+event_dev_sched_support()
+{
+ title="Scheduling Features"
+ pattern=$(echo "RTE_EVENT_DEV_CAP_" | awk '{print toupper($0)}')
+ list "$title" "$pattern" | grep -vwE 'void|indirect|end'
+}
+
+event_dev_rx_adptr_support()
+{
+ title="Eth Rx adapter Features"
+ pattern=$(echo "RTE_EVENT_ETH_RX_ADAPTER_CAP_" |
+ awk '{print toupper($0)}')
+ list "$title" "$pattern" | grep -vwE 'void|indirect|end'
+}
+
+event_dev_tx_adptr_support()
+{
+ title="Eth Tx adapter Features"
+ pattern=$(echo "RTE_EVENT_ETH_TX_ADAPTER_CAP_" |
+ awk '{print toupper($0)}')
+ list "$title" "$pattern" | grep -vwE 'void|indirect|end'
+}
+
+event_dev_crypto_adptr_support()
+{
+ title="Crypto adapter Features"
+ pattern=$(echo "RTE_EVENT_CRYPTO_ADAPTER_CAP_" |
+ awk '{print toupper($0)}')
+ list "$title" "$pattern" | grep -vwE 'void|indirect|end'
+}
+
+event_dev_timer_adptr_support()
+{
+ title="Timer adapter Features"
+ pattern=$(echo "RTE_EVENT_TIMER_ADAPTER_CAP_" |
+ awk '{print toupper($0)}')
+ list "$title" "$pattern" | grep -vwE 'void|indirect|end'
+}
+
+if [ -z "$ref" ]; then # generate full tables
+ event_dev_sched_support
+ echo
+ event_dev_rx_adptr_support
+ echo
+ event_dev_tx_adptr_support
+ echo
+ event_dev_crypto_adptr_support
+ echo
+ event_dev_timer_adptr_support
+ exit 0
+fi
+
+# compare with reference input
+event_dev_sched_compare()
+{
+ section="Scheduling Features]"
+ {
+ event_dev_sched_support
+ 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,^,Scheduling Features ," # prefix with category name
+}
+
+event_dev_rx_adptr_compare()
+{
+ section="Eth Rx adapter Features]"
+ {
+ event_dev_rx_adptr_support
+ 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,^,Eth Rx adapter Features ," # prefix with category name
+}
+
+event_dev_tx_adptr_compare()
+{
+ section="Eth Tx adapter Features]"
+ {
+ event_dev_tx_adptr_support
+ 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,^,Eth Tx adapter Features ," # prefix with category name
+}
+
+event_dev_crypto_adptr_compare()
+{
+ section="Crypto adapter Features]"
+ {
+ event_dev_crypto_adptr_support
+ 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,^,Crypto adapter Features ," # prefix with category name
+}
+
+event_dev_crypto_adptr_compare()
+{
+ section="Timer adapter Features]"
+ {
+ event_dev_timer_adptr_support
+ 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,^,Timer adapter Features ," # prefix with category name
+}
+
+event_dev_sched_compare
+event_dev_rx_adptr_compare
+event_dev_tx_adptr_compare
+event_dev_crypto_adptr_compare
+event_dev_crypto_adptr_compare