On 9/11/2020 12:52 PM, Zhang, Qi Z wrote: > > >> -----Original Message----- >> From: Ferruh Yigit <[email protected]> >> Sent: Friday, September 11, 2020 7:08 PM >> To: Zhang, Qi Z <[email protected]>; Yang, Qiming >> <[email protected]> >> Cc: [email protected] >> Subject: Re: [dpdk-dev] [PATCH 00/40] ice base code update >> >> On 9/10/2020 4:26 AM, Zhang, Qi Z wrote: >>> >>> >>>> -----Original Message----- >>>> From: Yang, Qiming <[email protected]> >>>> Sent: Wednesday, September 9, 2020 3:17 PM >>>> To: Zhang, Qi Z <[email protected]> >>>> Cc: [email protected] >>>> Subject: RE: [PATCH 00/40] ice base code update >>>> >>>> >>>> >>>>> -----Original Message----- >>>>> From: Zhang, Qi Z <[email protected]> >>>>> Sent: Monday, September 7, 2020 19:28 >>>>> To: Yang, Qiming <[email protected]> >>>>> Cc: [email protected]; Zhang, Qi Z <[email protected]> >>>>> Subject: [PATCH 00/40] ice base code update >>>>> >>>>> main changes: >>>>> 1. Added support for outer IP filter for GTPC. >>>>> 2. Added support for outer IP filter for GPTU control packet (no inner >>>>> IP) 3. >>>>> Added support for QinQ switch filter 4. code refactor and bug fixes >>>>> >>>>> Qi Zhang (40): >>>>> net/ice/base: handle error gracefully in HW table calloc >>>>> net/ice/base: split caps discover into two functions >>>>> net/ice/base: avoid unnecessary single-member variable-length structs >>>>> net/ice/base: fix issues around move nodes >>>>> net/ice/base: cleanup stack hog >>>>> net/ice/base: clean the code wrapping >>>>> net/ice/base: cleanup misleading comment >>>>> net/ice/base: silence static analysis warning >>>>> net/ice/base: replace single-element array used for C struct hack >>>>> net/ice/base: introduce and use bitmap set API >>>>> net/ice/base: introduce and use bitmap hamming weight API >>>>> net/ice/base: add function header >>>>> net/ice/base: introduce and use for each bit iterator >>>>> net/ice/base: correct abbreviations >>>>> net/ice/base: add AQ cmd 0X0A0A LLDP fltr control >>>>> net/ice/base: add support for GTP-U type switch rule >>>>> net/ice/base: join format strings to same line >>>>> net/ice/base: introduce Tx rate limiting on port level >>>>> net/ice/base: reduce profile to recip info get from firmware >>>>> net/ice/base: refactor DCB related variables >>>>> net/ice/base: support outer IP filter for GTPC >>>>> net/ice/base: support outer IP filter for GTPU without inner IP >>>>> net/ice/base: move a function >>>>> net/ice/base: clear advanced rules in reset preparation >>>>> net/ice/base: move a function >>>>> net/ice/base: add check for failed acts allocation >>>>> net/ice/base: remove repeated words >>>>> net/ice/base: remove function ACL count query >>>>> net/ice/base: preserve NVM capabilities in safe mode >>>>> net/ice/base: misc minor ACL changes >>>>> net/ice/base: adjust rate limit profile ids runtime database >>>>> net/ice/base: enable QinQ filter for switch advanced rule >>>>> net/ice/base: create flash info structure and separate NVM version >>>>> net/ice/base: remove unused parameter >>>>> net/ice/base: minor code clean >>>>> net/ice/base: cache NVM module bank information >>>>> net/ice/base: rename function >>>>> net/ice/base: remove unnecessary conditional >>>>> net/ice/base: rename ACL priority values >>>>> net/ice/base: preserve default aggr vsi information >>>>> >> >> >> Hi Qi, >> >> I am getting build error [1], can you please check. >> >> >> [1] >> ../drivers/net/ice/ice_rxtx.c: In function ‘ice_tx_queue_start’: >> ../drivers/net/ice/ice_rxtx.c:486:15: error: array subscript 0 is outside >> array >> bounds of ‘struct ice_aqc_add_txqs_perq[]’ [-Werror=array-bounds] >> 486 | txq_elem.txqs[0].txq_id = rte_cpu_to_le_16(txq->reg_idx); >> | ~~~~~~~~~~~~~^~~ >> In file included from ../drivers/net/ice/base/ice_controlq.h:8, >> from ../drivers/net/ice/base/ice_type.h:52, >> from ../drivers/net/ice/base/ice_common.h:8, >> from ../drivers/net/ice/ice_ethdev.h:12, >> from ../drivers/net/ice/ice_rxtx.h:8, >> from ../drivers/net/ice/ice_rxtx.c:9: >> ../drivers/net/ice/base/ice_adminq_cmd.h:2429:31: note: while referencing >> ‘txqs’ >> 2429 | struct ice_aqc_add_txqs_perq txqs[STRUCT_HACK_VAR_LEN]; >> | ^~~~ >> ../drivers/net/ice/ice_rxtx.c:462:29: note: defined here ‘txq_elem’ >> 462 | struct ice_aqc_add_tx_qgrp txq_elem; >> | ^~~~~~~~ >> ../drivers/net/ice/ice_rxtx.c:498:54: error: array subscript 0 is outside >> array >> bounds of ‘struct ice_aqc_add_txqs_perq[]’ [-Werror=array-bounds] >> 498 | ice_set_ctx(hw, (uint8_t *)&tx_ctx, txq_elem.txqs[0].txq_ctx, >> | >> ~~~~~~~~~~~~~~~~^~~~~~~~ >> In file included from ../drivers/net/ice/base/ice_controlq.h:8, >> from ../drivers/net/ice/base/ice_type.h:52, >> from ../drivers/net/ice/base/ice_common.h:8, >> from ../drivers/net/ice/ice_ethdev.h:12, >> from ../drivers/net/ice/ice_rxtx.h:8, >> from ../drivers/net/ice/ice_rxtx.c:9: >> ../drivers/net/ice/base/ice_adminq_cmd.h:2429:31: note: while referencing >> ‘txqs’ >> 2429 | struct ice_aqc_add_txqs_perq txqs[STRUCT_HACK_VAR_LEN]; >> | ^~~~ >> ../drivers/net/ice/ice_rxtx.c:462:29: note: defined here ‘txq_elem’ >> 462 | struct ice_aqc_add_tx_qgrp txq_elem; >> | ^~~~~~~~ >> ../drivers/net/ice/ice_rxtx.c:514:29: error: array subscript 0 is outside >> array >> bounds of ‘struct ice_aqc_add_txqs_perq[]’ [-Werror=array-bounds] >> 514 | txq->q_teid = txq_elem.txqs[0].q_teid; >> | ~~~~~~~~~~~~~^~~ >> In file included from ../drivers/net/ice/base/ice_controlq.h:8, >> from ../drivers/net/ice/base/ice_type.h:52, >> from ../drivers/net/ice/base/ice_common.h:8, >> from ../drivers/net/ice/ice_ethdev.h:12, >> from ../drivers/net/ice/ice_rxtx.h:8, >> from ../drivers/net/ice/ice_rxtx.c:9: >> ../drivers/net/ice/base/ice_adminq_cmd.h:2429:31: note: while referencing >> ‘txqs’ >> 2429 | struct ice_aqc_add_txqs_perq txqs[STRUCT_HACK_VAR_LEN]; >> | ^~~~ >> ../drivers/net/ice/ice_rxtx.c:462:29: note: defined here ‘txq_elem’ >> 462 | struct ice_aqc_add_tx_qgrp txq_elem; >> | ^~~~~~~~ >> ../drivers/net/ice/ice_rxtx.c: In function ‘ice_fdir_tx_queue_start’: >> ../drivers/net/ice/ice_rxtx.c:658:15: error: array subscript 0 is outside >> array >> bounds of ‘struct ice_aqc_add_txqs_perq[]’ [-Werror=array-bounds] >> 658 | txq_elem.txqs[0].txq_id = rte_cpu_to_le_16(txq->reg_idx); >> | ~~~~~~~~~~~~~^~~ >> In file included from ../drivers/net/ice/base/ice_controlq.h:8, >> from ../drivers/net/ice/base/ice_type.h:52, >> from ../drivers/net/ice/base/ice_common.h:8, >> from ../drivers/net/ice/ice_ethdev.h:12, >> from ../drivers/net/ice/ice_rxtx.h:8, >> from ../drivers/net/ice/ice_rxtx.c:9: >> ../drivers/net/ice/base/ice_adminq_cmd.h:2429:31: note: while referencing >> ‘txqs’ >> 2429 | struct ice_aqc_add_txqs_perq txqs[STRUCT_HACK_VAR_LEN]; >> | ^~~~ >> ../drivers/net/ice/ice_rxtx.c:640:29: note: defined here ‘txq_elem’ >> 640 | struct ice_aqc_add_tx_qgrp txq_elem; >> | ^~~~~~~~ >> ../drivers/net/ice/ice_rxtx.c:670:54: error: array subscript 0 is outside >> array >> bounds of ‘struct ice_aqc_add_txqs_perq[]’ [-Werror=array-bounds] >> 670 | ice_set_ctx(hw, (uint8_t *)&tx_ctx, txq_elem.txqs[0].txq_ctx, >> | >> ~~~~~~~~~~~~~~~~^~~~~~~~ >> In file included from ../drivers/net/ice/base/ice_controlq.h:8, >> from ../drivers/net/ice/base/ice_type.h:52, >> from ../drivers/net/ice/base/ice_common.h:8, >> from ../drivers/net/ice/ice_ethdev.h:12, >> from ../drivers/net/ice/ice_rxtx.h:8, >> from ../drivers/net/ice/ice_rxtx.c:9: >> ../drivers/net/ice/base/ice_adminq_cmd.h:2429:31: note: while referencing >> ‘txqs’ >> 2429 | struct ice_aqc_add_txqs_perq txqs[STRUCT_HACK_VAR_LEN]; >> | ^~~~ >> ../drivers/net/ice/ice_rxtx.c:640:29: note: defined here ‘txq_elem’ >> 640 | struct ice_aqc_add_tx_qgrp txq_elem; >> | ^~~~~~~~ >> ../drivers/net/ice/ice_rxtx.c:686:29: error: array subscript 0 is outside >> array >> bounds of ‘struct ice_aqc_add_txqs_perq[]’ [-Werror=array-bounds] >> 686 | txq->q_teid = txq_elem.txqs[0].q_teid; >> | ~~~~~~~~~~~~~^~~ >> In file included from ../drivers/net/ice/base/ice_controlq.h:8, >> from ../drivers/net/ice/base/ice_type.h:52, >> from ../drivers/net/ice/base/ice_common.h:8, >> from ../drivers/net/ice/ice_ethdev.h:12, >> from ../drivers/net/ice/ice_rxtx.h:8, >> from ../drivers/net/ice/ice_rxtx.c:9: >> ../drivers/net/ice/base/ice_adminq_cmd.h:2429:31: note: while referencing >> ‘txqs’ >> 2429 | struct ice_aqc_add_txqs_perq txqs[STRUCT_HACK_VAR_LEN]; >> | ^~~~ >> ../drivers/net/ice/ice_rxtx.c:640:29: note: defined here ‘txq_elem’ >> 640 | struct ice_aqc_add_tx_qgrp txq_elem; >> | ^~~~~~~~ >> cc1: all warnings being treated as errors > > Seems this issue is only reported by a new version GCC, and it does help to > detect a invalid memory access issue. > The bug has been fixed in dpdk-next-net-intel on below commit > > commit 978dddfae32764dd6ba81d615399fbc0452ecfb3 > Author: Qi Zhang <[email protected]> > Date: Wed Aug 26 14:57:07 2020 +0800 > > net/ice/base: replace single-element array used for C struct hack > > Convert the pre-C90-extension "C struct hack" method (using a single- > element array at the end of a structure for implementing variable-length > types) to the preferred use of C99 flexible array member. >
Hi Qi, Can you please send the fixed patchset as a new version to mail list first? Also there are build errors on the patch by patch build, can you address them too in next version? Thanks, ferruh

