From: Aaron Conole <aconole@redhat.com>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: dev@dpdk.org
Subject: Re: [PATCH 1/8] lpm: Fix pointer aliasing issues
Date: Thu, 25 Feb 2016 17:00:13 -0500 [thread overview]
Message-ID: <f7t37sgih76.fsf@redhat.com> (raw)
In-Reply-To: <20160225213054.GA14936@bricha3-MOBL3> (Bruce Richardson's message of "Thu, 25 Feb 2016 21:30:54 +0000")
Hi Bruce,
Bruce Richardson <bruce.richardson@intel.com> writes:
> On Thu, Feb 25, 2016 at 01:48:34PM -0500, Aaron Conole wrote:
>> The current implementation attempts to use a uint16_t to alias the lpm table
>> structures. Such aliasing can break optimizer performance. This patch uses
>> union type indirection and adds static inline functions for performing the
>> aliasing.
>>
>> Signed-off-by: Aaron Conole <aconole@redhat.com>
>> ---
>> lib/librte_lpm/rte_lpm.h | 53 +++++++++++++++++++++++++++++++++++++-----------
>> 1 file changed, 41 insertions(+), 12 deletions(-)
>>
>> diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
>> index c299ce2..eae6ff1 100644
>> --- a/lib/librte_lpm/rte_lpm.h
>> +++ b/lib/librte_lpm/rte_lpm.h
>> @@ -157,6 +157,33 @@ struct rte_lpm {
>> };
>>
>> /**
>> + * Convert from tbl_entry types to integer types
>> + */
>> +static inline uint16_t
>> +rte_lpm_tbl24_entry_to_uint16(const struct rte_lpm_tbl24_entry *entry)
>> +{
>> + union {
>> + uint16_t i;
>> + struct rte_lpm_tbl24_entry s;
>> + } tbl_entry_u;
>> +
>> + tbl_entry_u.s = *entry;
>> + return tbl_entry_u.i;
>> +}
>> +
>> +static inline uint16_t
>> +rte_lpm_tbl8_entry_to_uint16(const struct rte_lpm_tbl8_entry *entry)
>> +{
>> + union {
>> + uint16_t i;
>> + struct rte_lpm_tbl8_entry s;
>> + } tbl_entry_u;
>> +
>> + tbl_entry_u.s = *entry;
>> + return tbl_entry_u.i;
>> +}
>> +
>
> These two new functions could be reduced to one with the help of patch:
> http://dpdk.org/dev/patchwork/patch/9087/
>
> Anyone care to go back and review or ack that patch for me and simplify all
> the lpm code just that little bit?
I definitely ack that patch; I also want to apply it in my local testing
setup and test a bit so you can add my Tested-by, but it looks sane on
the surface.
Thanks so much for the review!
> /Bruce
next prev parent reply other threads:[~2016-02-25 22:00 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-25 18:48 [PATCH 0/8] Various fixes to compile with gcc6 Aaron Conole
2016-02-25 18:48 ` [PATCH 1/8] lpm: Fix pointer aliasing issues Aaron Conole
2016-02-25 21:30 ` Bruce Richardson
2016-02-25 22:00 ` Aaron Conole [this message]
2016-03-22 20:02 ` Thomas Monjalon
2016-03-22 20:47 ` Aaron Conole
2016-02-25 18:48 ` [PATCH 2/8] app/test/test: Fix missing brackets Aaron Conole
2016-03-10 13:25 ` Panu Matilainen
2016-03-18 1:05 ` Zhang, Helin
2016-02-25 18:48 ` [PATCH 3/8] drivers/net/e1000: " Aaron Conole
2016-02-26 1:02 ` Lu, Wenzhuo
2016-02-26 13:13 ` Aaron Conole
2016-03-01 11:02 ` Panu Matilainen
2016-03-22 20:06 ` Thomas Monjalon
2016-03-18 1:03 ` Zhang, Helin
2016-02-25 18:48 ` [PATCH 4/8] drivers/net/e1000: Fix missing lsc interrupt check brackets Aaron Conole
2016-03-10 13:27 ` Panu Matilainen
2016-03-18 0:55 ` Zhang, Helin
2016-02-25 18:48 ` [PATCH 5/8] drivers/net/ixgbe: Fix vlan filter missing brackets Aaron Conole
2016-03-10 13:28 ` Panu Matilainen
2016-03-18 0:45 ` Zhang, Helin
2016-02-25 18:48 ` [PATCH 6/8] drivers/net/e1000/igb: Signed left shift operator Aaron Conole
2016-03-10 13:29 ` Panu Matilainen
2016-03-18 0:54 ` Zhang, Helin
2016-02-25 18:48 ` [PATCH 7/8] drivers/net/ixgbe: " Aaron Conole
2016-03-10 13:30 ` Panu Matilainen
2016-03-18 0:43 ` Zhang, Helin
2016-02-25 18:48 ` [PATCH 8/8] drivers/net/ixgbe: Fix uninitialized warning Aaron Conole
2016-03-10 13:42 ` Panu Matilainen
2016-03-10 14:45 ` Remy Horton
2016-03-10 15:03 ` Panu Matilainen
2016-03-11 9:22 ` Remy Horton
2016-03-18 0:53 ` Zhang, Helin
2016-03-17 15:39 ` [PATCH 0/8] Various fixes to compile with gcc6 Thomas Monjalon
2016-03-17 15:45 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f7t37sgih76.fsf@redhat.com \
--to=aconole@redhat.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.