Acked-by: Hemant Agrawal <hemant.agra...@nxp.com>

> -----Original Message-----
> From: Stephen Hemminger <step...@networkplumber.org>
> Sent: Friday, November 24, 2023 12:49 AM
> To: Hemant Agrawal <hemant.agra...@nxp.com>
> Cc: Tyler Retzlaff <roret...@linux.microsoft.com>; dev@dpdk.org; Sachin
> Saxena <sachin.sax...@nxp.com>; Gagandeep Singh <g.si...@nxp.com>
> Subject: Re: [PATCH v4 10/10] common/dpaxx: remove zero length array
> Importance: High
> 
> This is a better alternative.
> 
> From 52c805b9526dbef62377276c4499c997fbc96268 Mon Sep 17 00:00:00
> 2001
> From: Stephen Hemminger <step...@networkplumber.org>
> Date: Thu, 23 Nov 2023 11:12:02 -0800
> Subject: [PATCH] common/dpaxx: replace zero length array
> 
> The zero length ip_header is used as an overlay to the encap IP header. Since
> the code is already assuming the layout of the structure, replace the array
> with direct access.
> 
> Signed-off-by: Stephen Hemminger <step...@networkplumber.org>
> ---
>  drivers/common/dpaax/caamflib/desc/ipsec.h | 20 ++++++++++++++------
>  1 file changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/common/dpaax/caamflib/desc/ipsec.h
> b/drivers/common/dpaax/caamflib/desc/ipsec.h
> index 95fc3ea5ba3b..d1411cc6aab4 100644
> --- a/drivers/common/dpaax/caamflib/desc/ipsec.h
> +++ b/drivers/common/dpaax/caamflib/desc/ipsec.h
> @@ -334,9 +334,7 @@ struct ipsec_encap_gcm {
>   * @seq_num: IPsec sequence number
>   * @spi: IPsec SPI (Security Parameters Index)
>   * @ip_hdr_len: optional IP Header length (in bytes)
> - *  reserved - 16b
> - *  Opt. IP Hdr Len - 16b
> - * @ip_hdr: optional IP Header content (only for IPsec legacy mode)
> + *  Ip header must follow directly after ipsec_encap_pdb
>   */
>  struct ipsec_encap_pdb {
>       uint32_t options;
> @@ -350,7 +348,6 @@ struct ipsec_encap_pdb {
>       };
>       uint32_t spi;
>       uint32_t ip_hdr_len;
> -     uint8_t ip_hdr[0];
>  };
> 
>  static inline unsigned int
> @@ -776,7 +773,12 @@ cnstr_shdsc_ipsec_encap(uint32_t *descbuf, bool
> ps, bool swap,
>               PROGRAM_SET_36BIT_ADDR(p);
>       phdr = SHR_HDR(p, share, hdr, 0);
>       __rta_copy_ipsec_encap_pdb(p, pdb, cipherdata->algtype);
> -     COPY_DATA(p, pdb->ip_hdr, pdb->ip_hdr_len);
> +
> +     /* ip header if any follows the encap_pdb */
> +     if (pdb->ip_hdr_len > 0) {
> +             void *ip_hdr = pdb + 1;
> +             COPY_DATA(p, ip_hdr, pdb->ip_hdr_len);
> +     }
>       SET_LABEL(p, hdr);
>       pkeyjmp = JUMP(p, keyjmp, LOCAL_JUMP, ALL_TRUE, BOTH|SHRD);
>       if (authdata->keylen)
> @@ -913,7 +915,13 @@ cnstr_shdsc_ipsec_encap_des_aes_xcbc(uint32_t
> *descbuf,
>       PROGRAM_CNTXT_INIT(p, descbuf, 0);
>       phdr = SHR_HDR(p, share, hdr, 0);
>       __rta_copy_ipsec_encap_pdb(p, pdb, cipherdata->algtype);
> -     COPY_DATA(p, pdb->ip_hdr, pdb->ip_hdr_len);
> +
> +     /* ip header if any follows the encap_pdb */
> +     if (pdb->ip_hdr_len > 0) {
> +             void *ip_hdr = pdb + 1;
> +             COPY_DATA(p, ip_hdr, pdb->ip_hdr_len);
> +     }
> +
>       SET_LABEL(p, hdr);
>       pkeyjump = JUMP(p, keyjump, LOCAL_JUMP, ALL_TRUE, SHRD |
> SELF);
>       /*
> --
> 2.42.0

Reply via email to