On Mon, Nov 22, 2021 at 1:33 PM <sk...@marvell.com> wrote:
>
> From: Sunil Kumar Kori <sk...@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 <sk...@marvell.com>

Following errors[2] need to be taken care in
devtools/parse-event-support.sh by detecting it is using a common Rx
adapter or not?
I have spent some time fixing it, Please find below a test patch for same[1].
Please send the next version with fix. I am planning to merge all doc
patches(1-10) to next-event-dev tree and delegate this
patch(11/11) to Thomas as he is the maintainer for tooling.

[2]
doc out of sync for dsw
        Eth Rx adapter Features event_vector
        Eth Rx adapter Features multi_eventq
        Eth Rx adapter Features override_flow_id
doc out of sync for sw
        Eth Rx adapter Features event_vector
        Eth Rx adapter Features multi_eventq
        Eth Rx adapter Features override_flow_id


> ---
> v7:
>  - Rebased to 21.11 rc3
>  - Fix Tx adapter capabilities for SW driver
> 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
>
> diff --git a/devtools/check-doc-vs-code.sh b/devtools/check-doc-vs-code.sh
> index c58c239c87..608d6e0e2e 100755
> --- a/devtools/check-doc-vs-code.sh
> +++ b/devtools/check-doc-vs-code.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
> diff --git a/devtools/parse-event-support.sh b/devtools/parse-event-support.sh
> new file mode 100755
> index 0000000000..d756977eec
> --- /dev/null
> +++ b/devtools/parse-event-support.sh
> @@ -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'

void| in... copy-paste issue from rte_flow.

> +}
> +
> +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()

event_dev_crypto_timer_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

event_dev_crypto_timer_compare

[1

 event_dev_crypto_adptr_support()
@@ -52,7 +65,7 @@ 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'
+       list "$title" "$pattern" ""
 }

 event_dev_timer_adptr_support()
@@ -60,7 +73,7 @@ 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'
+       list "$title" "$pattern" ""
 }

 if [ -z "$ref" ]; then # generate full tables
@@ -129,7 +142,7 @@ event_dev_crypto_adptr_compare()
        sed "s,^,Crypto adapter Features ," # prefix with category name
 }

-event_dev_crypto_adptr_compare()
+event_dev_timer_adptr_compare()
 {
        section="Timer adapter Features]"
        {
@@ -146,4 +159,4 @@ event_dev_sched_compare
 event_dev_rx_adptr_compare
 event_dev_tx_adptr_compare
 event_dev_crypto_adptr_compare
-event_dev_crypto_adptr_compare
+event_dev_timer_adptr_compare]
diff --git a/devtools/parse-event-support.sh b/devtools/parse-event-support.sh
index d756977eec..f8e6bb0db2 100755
--- a/devtools/parse-event-support.sh
+++ b/devtools/parse-event-support.sh
@@ -16,19 +16,31 @@ fi
 # sorting order
 export LC_COLLATE=C

+check_sw_capa()
+{
+       driver=$(echo "$dir" | cut -d / -f 3)
+       if [ "$driver" == "dsw" ] || [ "$driver" == "sw" ] ; then
+               return 1
+       else
+               return 0
+       fi
+}
+
 # generate INI section
-list() # <title> <pattern>
+list() # <title> <pattern> <extra_patterns>
 {
        echo "[$1]"
-       git grep -who "$2[[:alnum:]_]*" $dir | sort -u |
-       awk 'sub(/'$2'/, "") {printf "%-20s = Y\n", tolower($0)}'
+       words=$(git grep -who "$2[[:alnum:]_]*" $dir)
+       words+=$(echo -e "$3")
+       echo "$words" | 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'
+       list "$title" "$pattern" ""
 }

 event_dev_rx_adptr_support()
@@ -36,7 +48,8 @@ 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'
+       check_sw_capa ||
extra='RTE_EVENT_ETH_RX_ADAPTER_CAP_OVERRIDE_FLOW_ID\nRTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ\nRTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR\n'
+       list "$title" "$pattern" "$extra"
 }

 event_dev_tx_adptr_support()
@@ -44,7 +57,7 @@ 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'
+       list "$title" "$pattern" ""
 }



> --
> 2.25.1
>

Reply via email to