On Wed, Apr 03, 2024 at 09:32:21PM +0200, Morten Brørup wrote: > > From: Tyler Retzlaff [mailto:roret...@linux.microsoft.com] > > Sent: Wednesday, 3 April 2024 19.54 > > > > RTE_MARKER typedefs are a GCC extension unsupported by MSVC. Remove > > RTE_MARKER fields from rte_mbuf struct. > > > > Maintain alignment of fields after removed cacheline1 marker by placing > > C11 alignas(RTE_CACHE_LINE_MIN_SIZE). > > > > Provide new rearm_data and rx_descriptor_fields1 fields in anonymous > > unions as single element arrays of with types matching the original > > markers to maintain API compatibility. > > > > This change breaks the API for cacheline{0,1} fields that have been > > removed from rte_mbuf but it does not break the ABI, to address the > > false positives of the removed (but 0 size fields) provide the minimum > > libabigail.abignore for type = rte_mbuf. > > > > Signed-off-by: Tyler Retzlaff <roret...@linux.microsoft.com> > > --- > > [...] > > > + /* remaining 24 bytes are set on RX when pulling packet from > > descriptor */ > > Good. > > > union { > > + /* void * type of the array elements is retained for driver > > compatibility. */ > > + void *rx_descriptor_fields1[24 / sizeof(void *)]; > > Good, also the description. > > > __extension__ > > struct { > > - uint8_t l2_type:4; /**< (Outer) L2 type. */ > > - uint8_t l3_type:4; /**< (Outer) L3 type. */ > > - uint8_t l4_type:4; /**< (Outer) L4 type. */ > > - uint8_t tun_type:4; /**< Tunnel type. */ > > + /* > > + * The packet type, which is the combination of > > outer/inner L2, L3, L4 > > + * and tunnel types. The packet_type is about data > > really present in the > > + * mbuf. Example: if vlan stripping is enabled, a > > received vlan packet > > + * would have RTE_PTYPE_L2_ETHER and not > > RTE_PTYPE_L2_VLAN because the > > + * vlan is stripped from the data. > > + */ > > union { > > - uint8_t inner_esp_next_proto; > > - /**< ESP next protocol type, valid if > > - * RTE_PTYPE_TUNNEL_ESP tunnel type is set > > - * on both Tx and Rx. > > - */ > > [...] > > > + /**< ESP next protocol type, > > valid > > if > > + * RTE_PTYPE_TUNNEL_ESP tunnel > > type > > is set > > + * on both Tx and Rx. > > + */ > > + uint8_t inner_esp_next_proto; > > Thank you for moving the comments up before the fields. > > Please note that "/**<" means that the description is related to the field > preceding the comment, so it should be replaced by "/**" when moving the > description up above a field.
ooh, i'll fix it i'm not well versed in doxygen documentation. > > Maybe moving the descriptions as part of this patch was not a good idea after > all; it doesn't improve the readability of the patch itself. I regret > suggesting it. > If you leave the descriptions at their originals positions (relative to the > fields), we can clean up the formatting of the descriptions in a later patch. it's easy enough for me to fix the comments in place and bring in a new version of the series, assuming other reviewers don't object i'll do that. the diff is already kind of annoying to review in mail without -b anyway. > > [...] > > > /* second cache line - fields only used in slow path or on TX */ > > - alignas(RTE_CACHE_LINE_MIN_SIZE) RTE_MARKER cacheline1; > > - > > #if RTE_IOVA_IN_MBUF > > /** > > * Next segment of scattered packet. Must be NULL in the last > > * segment or in case of non-segmented packet. > > */ > > + alignas(RTE_CACHE_LINE_MIN_SIZE) > > struct rte_mbuf *next; > > #else > > /** > > * Reserved for dynamic fields > > * when the next pointer is in first cache line (i.e. > > RTE_IOVA_IN_MBUF is 0). > > */ > > + alignas(RTE_CACHE_LINE_MIN_SIZE) > > Good positioning of the alignas(). > > I like everything in this patch. > > Please fix the descriptions preceding the fields "/**<" -> "/**" or move them > back to their location after the fields; then you may add Reviewed-by: Morten > Brørup <m...@smartsharesystems.com> to the next version. ack, next rev.