* RE: [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths
@ 2023-03-09 10:29 Morten Brørup
0 siblings, 0 replies; 8+ messages in thread
From: Morten Brørup @ 2023-03-09 10:29 UTC (permalink / raw)
To: David Marchand, jerinj; +Cc: dev, Thomas Monjalon
[-- Attachment #1: Type: text/plain, Size: 842 bytes --]
Please wait. Jerin is chasing this internally.-MortenSent from smartphone. Please excuse brevity and spelling.
-------- Oprindelig besked --------Fra: David Marchand <david.marchand@redhat.com> Dato: 09.03.2023 11.26 (GMT+01:00) Til: Morten Brørup <mb@smartsharesystems.com>, rmody@marvell.com, shshaikh@marvell.com Cc: dev@dpdk.org, Thomas Monjalon <thomas@monjalon.net> Emne: Re: [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths On Thu, Feb 9, 2023 at 5:49 PM Morten Brørup <mb@smartsharesystems.com> wrote:>> PING bnx2x maintainers. Care to review this bugfix, so it can be included in 23.03?>Still no luck in getting attention from bnx2x maintainers.One option is to declare this driver as UNMAINTAINED and disable itscompilation when the memcpy annotations are finalised and merged in anext release.-- David Marchand
[-- Attachment #2: Type: text/html, Size: 1512 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] eal: add nonnull and access function attributes
@ 2022-12-02 15:34 Morten Brørup
2023-01-16 13:07 ` [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths Morten Brørup
0 siblings, 1 reply; 8+ messages in thread
From: Morten Brørup @ 2022-12-02 15:34 UTC (permalink / raw)
To: dev
Cc: ruifeng.wang, zhoumin, drc, kda, bruce.richardson,
konstantin.v.ananyev, Morten Brørup
Add "nonnull" function attribute to help the compiler detect a NULL
pointer being passed to a function not accepting NULL pointers as an
argument at build time.
Add "access" function attribute to tell the optimizer how a function
accesses its pointer arguments.
Add these attributes to the rte_memcpy() function, as the first in
hopefully many to come.
Signed-off-by: Morten Brørup <mb@smartsharesystems.com>
---
lib/eal/arm/include/rte_memcpy_32.h | 6 ++++++
lib/eal/arm/include/rte_memcpy_64.h | 6 ++++++
lib/eal/include/generic/rte_memcpy.h | 5 +++++
lib/eal/include/rte_common.h | 26 ++++++++++++++++++++++++++
lib/eal/ppc/include/rte_memcpy.h | 3 +++
lib/eal/x86/include/rte_memcpy.h | 6 ++++++
6 files changed, 52 insertions(+)
diff --git a/lib/eal/arm/include/rte_memcpy_32.h b/lib/eal/arm/include/rte_memcpy_32.h
index fb3245b59c..ba4f050a5d 100644
--- a/lib/eal/arm/include/rte_memcpy_32.h
+++ b/lib/eal/arm/include/rte_memcpy_32.h
@@ -125,6 +125,9 @@ rte_mov256(uint8_t *dst, const uint8_t *src)
memcpy((dst), (src), (n)) : \
rte_memcpy_func((dst), (src), (n)); })
+__rte_nonnull(1, 2)
+__rte_access(write_only, 1, 3)
+__rte_access(read_only, 2, 3)
static inline void *
rte_memcpy_func(void *dst, const void *src, size_t n)
{
@@ -290,6 +293,9 @@ rte_mov256(uint8_t *dst, const uint8_t *src)
memcpy(dst, src, 256);
}
+__rte_nonnull(1, 2)
+__rte_access(write_only, 1, 3)
+__rte_access(read_only, 2, 3)
static inline void *
rte_memcpy(void *dst, const void *src, size_t n)
{
diff --git a/lib/eal/arm/include/rte_memcpy_64.h b/lib/eal/arm/include/rte_memcpy_64.h
index 85ad587bd3..5403e30db5 100644
--- a/lib/eal/arm/include/rte_memcpy_64.h
+++ b/lib/eal/arm/include/rte_memcpy_64.h
@@ -282,6 +282,9 @@ void rte_memcpy_ge64(uint8_t *dst, const uint8_t *src, size_t n)
}
#if RTE_CACHE_LINE_SIZE >= 128
+__rte_nonnull(1, 2)
+__rte_access(write_only, 1, 3)
+__rte_access(read_only, 2, 3)
static __rte_always_inline
void *rte_memcpy(void *dst, const void *src, size_t n)
{
@@ -303,6 +306,9 @@ void *rte_memcpy(void *dst, const void *src, size_t n)
}
#else
+__rte_nonnull(1, 2)
+__rte_access(write_only, 1, 3)
+__rte_access(read_only, 2, 3)
static __rte_always_inline
void *rte_memcpy(void *dst, const void *src, size_t n)
{
diff --git a/lib/eal/include/generic/rte_memcpy.h b/lib/eal/include/generic/rte_memcpy.h
index e7f0f8eaa9..86fd20884c 100644
--- a/lib/eal/include/generic/rte_memcpy.h
+++ b/lib/eal/include/generic/rte_memcpy.h
@@ -11,6 +11,8 @@
* Functions for vectorised implementation of memcpy().
*/
+#include <rte_common.h>
+
/**
* Copy 16 bytes from one location to another using optimised
* instructions. The locations should not overlap.
@@ -108,6 +110,9 @@ rte_mov256(uint8_t *dst, const uint8_t *src);
* @return
* Pointer to the destination data.
*/
+__rte_nonnull(1, 2)
+__rte_access(write_only, 1, 3)
+__rte_access(read_only, 2, 3)
static void *
rte_memcpy(void *dst, const void *src, size_t n);
diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
index 15765b408d..c2bd6074b1 100644
--- a/lib/eal/include/rte_common.h
+++ b/lib/eal/include/rte_common.h
@@ -149,6 +149,32 @@ typedef uint16_t unaligned_uint16_t;
__attribute__((format(printf, format_index, first_arg)))
#endif
+/**
+ * Check pointer arguments at compile-time.
+ *
+ * @param ...
+ * Comma separated list of parameter indexes of pointer arguments.
+ */
+#define __rte_nonnull(...) \
+ __attribute__((nonnull(__VA_ARGS__)))
+
+/**
+ * Tells compiler about the access mode of a pointer argument.
+ *
+ * @param access_mode
+ * Access mode: read_only, read_write, write_only, or none.
+ * @param ref_index
+ * Parameter index of pointer argument.
+ * @param size_index (optional)
+ * Parameter index of size argument.
+ */
+#if defined(RTE_CC_IS_GNU) && (GCC_VERSION >= 100400)
+#define __rte_access(access_mode, ...) \
+ __attribute__((access(access_mode, __VA_ARGS__)))
+#else
+#define __rte_access(access_mode, ...)
+#endif
+
/**
* Tells compiler that the function returns a value that points to
* memory, where the size is given by the one or two arguments.
diff --git a/lib/eal/ppc/include/rte_memcpy.h b/lib/eal/ppc/include/rte_memcpy.h
index 6f388c0234..d2c3234d5d 100644
--- a/lib/eal/ppc/include/rte_memcpy.h
+++ b/lib/eal/ppc/include/rte_memcpy.h
@@ -84,6 +84,9 @@ rte_mov256(uint8_t *dst, const uint8_t *src)
memcpy((dst), (src), (n)) : \
rte_memcpy_func((dst), (src), (n)); })
+__rte_nonnull(1, 2)
+__rte_access(write_only, 1, 3)
+__rte_access(read_only, 2, 3)
static inline void *
rte_memcpy_func(void *dst, const void *src, size_t n)
{
diff --git a/lib/eal/x86/include/rte_memcpy.h b/lib/eal/x86/include/rte_memcpy.h
index d4d7a5cfc8..397461115b 100644
--- a/lib/eal/x86/include/rte_memcpy.h
+++ b/lib/eal/x86/include/rte_memcpy.h
@@ -42,6 +42,9 @@ extern "C" {
* @return
* Pointer to the destination data.
*/
+__rte_nonnull(1, 2)
+__rte_access(write_only, 1, 3)
+__rte_access(read_only, 2, 3)
static __rte_always_inline void *
rte_memcpy(void *dst, const void *src, size_t n);
@@ -859,6 +862,9 @@ rte_memcpy_aligned(void *dst, const void *src, size_t n)
return ret;
}
+__rte_nonnull(1, 2)
+__rte_access(write_only, 1, 3)
+__rte_access(read_only, 2, 3)
static __rte_always_inline void *
rte_memcpy(void *dst, const void *src, size_t n)
{
--
2.17.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths
2022-12-02 15:34 [PATCH] eal: add nonnull and access function attributes Morten Brørup
@ 2023-01-16 13:07 ` Morten Brørup
2023-02-09 16:49 ` Morten Brørup
0 siblings, 1 reply; 8+ messages in thread
From: Morten Brørup @ 2023-01-16 13:07 UTC (permalink / raw)
To: dev, roretzla, rmody, timothy.mcdaniel, matan, viacheslavo
Cc: ruifeng.wang, zhoumin, drc, kda, bruce.richardson,
konstantin.v.ananyev, Morten Brørup, stephen, shshaikh
Bugfix: The vlan in the bulletin does not contain a VLAN header, only the
VLAN ID, so only copy 2 byte, not 4. The target structure has padding
after the field, so copying 2 byte too many is effectively harmless.
There is no need to backport this patch.
Use RTE_PTR_ADD where copying arrays to the offset of a first field in a
structure holding multiple fields, to avoid compiler warnings with
decorated rte_memcpy.
Bugzilla ID: 1146
Fixes: 540a211084a7695a1c7bc43068934c140d6989be ("bnx2x: driver core")
Cc: stephen@networkplumber.org
Cc: rmody@marvell.com
Cc: shshaikh@marvell.com
Signed-off-by: Morten Brørup <mb@smartsharesystems.com>
---
v7:
* No changes.
v6:
* Add Fixes to patch description.
* Fix checkpatch warnings.
v5:
* No changes.
v4:
* Type casting did not fix the warnings, so use RTE_PTR_ADD instead.
v3:
* First patch in series.
---
drivers/net/bnx2x/bnx2x_stats.c | 11 +++++++----
drivers/net/bnx2x/bnx2x_vfpf.c | 2 +-
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/net/bnx2x/bnx2x_stats.c b/drivers/net/bnx2x/bnx2x_stats.c
index c07b01510a..bc4a8b8e71 100644
--- a/drivers/net/bnx2x/bnx2x_stats.c
+++ b/drivers/net/bnx2x/bnx2x_stats.c
@@ -819,8 +819,9 @@ bnx2x_hw_stats_update(struct bnx2x_softc *sc)
rte_memcpy(old, new, sizeof(struct nig_stats));
- rte_memcpy(&(estats->rx_stat_ifhcinbadoctets_hi), &(pstats->mac_stx[1]),
- sizeof(struct mac_stx));
+ rte_memcpy(RTE_PTR_ADD(estats,
+ offsetof(struct bnx2x_eth_stats, rx_stat_ifhcinbadoctets_hi)),
+ &pstats->mac_stx[1], sizeof(struct mac_stx));
estats->brb_drop_hi = pstats->brb_drop_hi;
estats->brb_drop_lo = pstats->brb_drop_lo;
@@ -1492,9 +1493,11 @@ bnx2x_stats_init(struct bnx2x_softc *sc)
REG_RD(sc, NIG_REG_STAT0_BRB_TRUNCATE + port*0x38);
if (!CHIP_IS_E3(sc)) {
REG_RD_DMAE(sc, NIG_REG_STAT0_EGRESS_MAC_PKT0 + port*0x50,
- &(sc->port.old_nig_stats.egress_mac_pkt0_lo), 2);
+ RTE_PTR_ADD(&sc->port.old_nig_stats,
+ offsetof(struct nig_stats, egress_mac_pkt0_lo)), 2);
REG_RD_DMAE(sc, NIG_REG_STAT0_EGRESS_MAC_PKT1 + port*0x50,
- &(sc->port.old_nig_stats.egress_mac_pkt1_lo), 2);
+ RTE_PTR_ADD(&sc->port.old_nig_stats,
+ offsetof(struct nig_stats, egress_mac_pkt1_lo)), 2);
}
/* function stats */
diff --git a/drivers/net/bnx2x/bnx2x_vfpf.c b/drivers/net/bnx2x/bnx2x_vfpf.c
index 63953c2979..87631c76ca 100644
--- a/drivers/net/bnx2x/bnx2x_vfpf.c
+++ b/drivers/net/bnx2x/bnx2x_vfpf.c
@@ -54,7 +54,7 @@ bnx2x_check_bull(struct bnx2x_softc *sc)
if (valid_bitmap & (1 << MAC_ADDR_VALID) && memcmp(bull->mac, sc->old_bulletin.mac, ETH_ALEN))
rte_memcpy(&sc->link_params.mac_addr, bull->mac, ETH_ALEN);
if (valid_bitmap & (1 << VLAN_VALID))
- rte_memcpy(&bull->vlan, &sc->old_bulletin.vlan, RTE_VLAN_HLEN);
+ rte_memcpy(&bull->vlan, &sc->old_bulletin.vlan, sizeof(bull->vlan));
sc->old_bulletin = *bull;
--
2.17.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths
2023-01-16 13:07 ` [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths Morten Brørup
@ 2023-02-09 16:49 ` Morten Brørup
2023-03-09 10:25 ` David Marchand
2023-03-09 16:23 ` Stephen Hemminger
0 siblings, 2 replies; 8+ messages in thread
From: Morten Brørup @ 2023-02-09 16:49 UTC (permalink / raw)
To: dev, roretzla, rmody, timothy.mcdaniel, matan, viacheslavo
Cc: ruifeng.wang, zhoumin, drc, kda, bruce.richardson,
konstantin.v.ananyev, stephen, shshaikh
PING bnx2x maintainers. Care to review this bugfix, so it can be included in 23.03?
> From: Morten Brørup [mailto:mb@smartsharesystems.com]
> Sent: Monday, 16 January 2023 14.07
>
> Bugfix: The vlan in the bulletin does not contain a VLAN header, only
> the
> VLAN ID, so only copy 2 byte, not 4. The target structure has padding
> after the field, so copying 2 byte too many is effectively harmless.
> There is no need to backport this patch.
>
> Use RTE_PTR_ADD where copying arrays to the offset of a first field in
> a
> structure holding multiple fields, to avoid compiler warnings with
> decorated rte_memcpy.
>
> Bugzilla ID: 1146
>
> Fixes: 540a211084a7695a1c7bc43068934c140d6989be ("bnx2x: driver core")
> Cc: stephen@networkplumber.org
> Cc: rmody@marvell.com
> Cc: shshaikh@marvell.com
>
> Signed-off-by: Morten Brørup <mb@smartsharesystems.com>
> ---
> v7:
> * No changes.
> v6:
> * Add Fixes to patch description.
> * Fix checkpatch warnings.
> v5:
> * No changes.
> v4:
> * Type casting did not fix the warnings, so use RTE_PTR_ADD instead.
> v3:
> * First patch in series.
> ---
> drivers/net/bnx2x/bnx2x_stats.c | 11 +++++++----
> drivers/net/bnx2x/bnx2x_vfpf.c | 2 +-
> 2 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/bnx2x/bnx2x_stats.c
> b/drivers/net/bnx2x/bnx2x_stats.c
> index c07b01510a..bc4a8b8e71 100644
> --- a/drivers/net/bnx2x/bnx2x_stats.c
> +++ b/drivers/net/bnx2x/bnx2x_stats.c
> @@ -819,8 +819,9 @@ bnx2x_hw_stats_update(struct bnx2x_softc *sc)
>
> rte_memcpy(old, new, sizeof(struct nig_stats));
>
> - rte_memcpy(&(estats->rx_stat_ifhcinbadoctets_hi), &(pstats-
> >mac_stx[1]),
> - sizeof(struct mac_stx));
> + rte_memcpy(RTE_PTR_ADD(estats,
> + offsetof(struct bnx2x_eth_stats,
> rx_stat_ifhcinbadoctets_hi)),
> + &pstats->mac_stx[1], sizeof(struct mac_stx));
> estats->brb_drop_hi = pstats->brb_drop_hi;
> estats->brb_drop_lo = pstats->brb_drop_lo;
>
> @@ -1492,9 +1493,11 @@ bnx2x_stats_init(struct bnx2x_softc *sc)
> REG_RD(sc, NIG_REG_STAT0_BRB_TRUNCATE + port*0x38);
> if (!CHIP_IS_E3(sc)) {
> REG_RD_DMAE(sc, NIG_REG_STAT0_EGRESS_MAC_PKT0 + port*0x50,
> - &(sc->port.old_nig_stats.egress_mac_pkt0_lo),
> 2);
> + RTE_PTR_ADD(&sc->port.old_nig_stats,
> + offsetof(struct nig_stats,
> egress_mac_pkt0_lo)), 2);
> REG_RD_DMAE(sc, NIG_REG_STAT0_EGRESS_MAC_PKT1 + port*0x50,
> - &(sc->port.old_nig_stats.egress_mac_pkt1_lo),
> 2);
> + RTE_PTR_ADD(&sc->port.old_nig_stats,
> + offsetof(struct nig_stats,
> egress_mac_pkt1_lo)), 2);
> }
>
> /* function stats */
> diff --git a/drivers/net/bnx2x/bnx2x_vfpf.c
> b/drivers/net/bnx2x/bnx2x_vfpf.c
> index 63953c2979..87631c76ca 100644
> --- a/drivers/net/bnx2x/bnx2x_vfpf.c
> +++ b/drivers/net/bnx2x/bnx2x_vfpf.c
> @@ -54,7 +54,7 @@ bnx2x_check_bull(struct bnx2x_softc *sc)
> if (valid_bitmap & (1 << MAC_ADDR_VALID) && memcmp(bull->mac, sc-
> >old_bulletin.mac, ETH_ALEN))
> rte_memcpy(&sc->link_params.mac_addr, bull->mac, ETH_ALEN);
> if (valid_bitmap & (1 << VLAN_VALID))
> - rte_memcpy(&bull->vlan, &sc->old_bulletin.vlan,
> RTE_VLAN_HLEN);
> + rte_memcpy(&bull->vlan, &sc->old_bulletin.vlan,
> sizeof(bull->vlan));
>
> sc->old_bulletin = *bull;
>
> --
> 2.17.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths
2023-02-09 16:49 ` Morten Brørup
@ 2023-03-09 10:25 ` David Marchand
2023-03-09 10:33 ` Thomas Monjalon
2023-03-09 16:23 ` Stephen Hemminger
1 sibling, 1 reply; 8+ messages in thread
From: David Marchand @ 2023-03-09 10:25 UTC (permalink / raw)
To: Morten Brørup, rmody, shshaikh; +Cc: dev, Thomas Monjalon
On Thu, Feb 9, 2023 at 5:49 PM Morten Brørup <mb@smartsharesystems.com> wrote:
>
> PING bnx2x maintainers. Care to review this bugfix, so it can be included in 23.03?
>
Still no luck in getting attention from bnx2x maintainers.
One option is to declare this driver as UNMAINTAINED and disable its
compilation when the memcpy annotations are finalised and merged in a
next release.
--
David Marchand
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths
2023-03-09 10:25 ` David Marchand
@ 2023-03-09 10:33 ` Thomas Monjalon
2023-03-09 16:11 ` [EXT] " Akhil Goyal
0 siblings, 1 reply; 8+ messages in thread
From: Thomas Monjalon @ 2023-03-09 10:33 UTC (permalink / raw)
To: David Marchand, jerinj; +Cc: Morten Brørup, rmody, shshaikh, dev
09/03/2023 11:25, David Marchand:
> On Thu, Feb 9, 2023 at 5:49 PM Morten Brørup <mb@smartsharesystems.com> wrote:
> >
> > PING bnx2x maintainers. Care to review this bugfix, so it can be included in 23.03?
> >
>
> Still no luck in getting attention from bnx2x maintainers.
> One option is to declare this driver as UNMAINTAINED and disable its
> compilation when the memcpy annotations are finalised and merged in a
> next release.
Yes that's an option.
Jerin, what is your opinion?
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [EXT] Re: [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths
2023-03-09 10:33 ` Thomas Monjalon
@ 2023-03-09 16:11 ` Akhil Goyal
[not found] ` <SJ0PR18MB390039A8C34E485F8D2D518EA1B59@SJ0PR18MB3900.namprd18.prod.outlook.com>
0 siblings, 1 reply; 8+ messages in thread
From: Akhil Goyal @ 2023-03-09 16:11 UTC (permalink / raw)
To: Thomas Monjalon, David Marchand, Jerin Jacob Kollanukkaran
Cc: Morten Brørup, Rasesh Mody, Shahed Shaikh, dev, Alok Prasad
++Alok Prasad
> 09/03/2023 11:25, David Marchand:
> > On Thu, Feb 9, 2023 at 5:49 PM Morten Brørup
> <mb@smartsharesystems.com> wrote:
> > >
> > > PING bnx2x maintainers. Care to review this bugfix, so it can be included in
> 23.03?
> > >
> >
> > Still no luck in getting attention from bnx2x maintainers.
> > One option is to declare this driver as UNMAINTAINED and disable its
> > compilation when the memcpy annotations are finalised and merged in a
> > next release.
>
> Yes that's an option.
> Jerin, what is your opinion?
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths
2023-02-09 16:49 ` Morten Brørup
2023-03-09 10:25 ` David Marchand
@ 2023-03-09 16:23 ` Stephen Hemminger
2024-02-23 12:39 ` Jerin Jacob
1 sibling, 1 reply; 8+ messages in thread
From: Stephen Hemminger @ 2023-03-09 16:23 UTC (permalink / raw)
To: Morten Brørup
Cc: dev, roretzla, rmody, timothy.mcdaniel, matan, viacheslavo,
ruifeng.wang, zhoumin, drc, kda, bruce.richardson,
konstantin.v.ananyev, shshaikh
On Thu, 9 Feb 2023 17:49:31 +0100
Morten Brørup <mb@smartsharesystems.com> wrote:
> > rte_memcpy(old, new, sizeof(struct nig_stats));
> >
> > - rte_memcpy(&(estats->rx_stat_ifhcinbadoctets_hi), &(pstats-
> > >mac_stx[1]),
> > - sizeof(struct mac_stx));
> > + rte_memcpy(RTE_PTR_ADD(estats,
> > + offsetof(struct bnx2x_eth_stats,
> > rx_stat_ifhcinbadoctets_hi)),
> > + &pstats->mac_stx[1], sizeof(struct mac_stx));
Stop using rte_memcpy() in slow path like this.
memcpy() is just as fast, compiler can optimize, and the checking tools
are better with it.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths
2023-03-09 16:23 ` Stephen Hemminger
@ 2024-02-23 12:39 ` Jerin Jacob
0 siblings, 0 replies; 8+ messages in thread
From: Jerin Jacob @ 2024-02-23 12:39 UTC (permalink / raw)
To: Stephen Hemminger
Cc: Morten Brørup, dev, roretzla, rmody, timothy.mcdaniel,
matan, viacheslavo, ruifeng.wang, zhoumin, drc, kda,
bruce.richardson, konstantin.v.ananyev, shshaikh
On Thu, Mar 9, 2023 at 9:53 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> On Thu, 9 Feb 2023 17:49:31 +0100
> Morten Brørup <mb@smartsharesystems.com> wrote:
>
> > > rte_memcpy(old, new, sizeof(struct nig_stats));
> > >
> > > - rte_memcpy(&(estats->rx_stat_ifhcinbadoctets_hi), &(pstats-
> > > >mac_stx[1]),
> > > - sizeof(struct mac_stx));
> > > + rte_memcpy(RTE_PTR_ADD(estats,
> > > + offsetof(struct bnx2x_eth_stats,
> > > rx_stat_ifhcinbadoctets_hi)),
> > > + &pstats->mac_stx[1], sizeof(struct mac_stx));
>
> Stop using rte_memcpy() in slow path like this.
> memcpy() is just as fast, compiler can optimize, and the checking tools
> are better with it.
+1
@Morten Brørup Could you send the next version? I am marking as Change
requested.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-02-23 12:39 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-09 10:29 [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths Morten Brørup
-- strict thread matches above, loose matches on Subject: below --
2022-12-02 15:34 [PATCH] eal: add nonnull and access function attributes Morten Brørup
2023-01-16 13:07 ` [PATCH v7 1/4] net/bnx2x: fix warnings about rte_memcpy lengths Morten Brørup
2023-02-09 16:49 ` Morten Brørup
2023-03-09 10:25 ` David Marchand
2023-03-09 10:33 ` Thomas Monjalon
2023-03-09 16:11 ` [EXT] " Akhil Goyal
[not found] ` <SJ0PR18MB390039A8C34E485F8D2D518EA1B59@SJ0PR18MB3900.namprd18.prod.outlook.com>
2023-03-09 16:19 ` Devendra Singh Rawat
2023-03-09 16:23 ` Stephen Hemminger
2024-02-23 12:39 ` Jerin Jacob
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).