On Mon, 2008-06-30 at 01:26 +0200, Thomas Graf wrote:Thomas, maybe I'm just being slow, put if it's always a be-value, why not the following: From: Harvey Harrison <harvey.harrison@gmail.com> Subject: [PATCH] net: em_cmp.c use unaligned access helper ptr pointers to a big endian value, instead of constructing a be value and conditionally byteswapping on little-endian arches, use the unaligned to access helpers return a cpu-endian value. Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> --- net/sched/em_cmp.c | 20 +++----------------- 1 files changed, 3 insertions(+), 17 deletions(-) diff --git a/net/sched/em_cmp.c b/net/sched/em_cmp.c index cc49c93..6e64af1 100644 --- a/net/sched/em_cmp.c +++ b/net/sched/em_cmp.c @@ -14,13 +14,9 @@ #include <linux/kernel.h> #include <linux/skbuff.h> #include <linux/tc_ematch/tc_em_cmp.h> +#include <asm/unaligned.h> #include <net/pkt_cls.h> -static inline int cmp_needs_transformation(struct tcf_em_cmp *cmp) -{ - return unlikely(cmp->flags & TCF_EM_CMP_TRANS); -} - static int em_cmp_match(struct sk_buff *skb, struct tcf_ematch *em, struct tcf_pkt_info *info) { @@ -37,23 +33,13 @@ static int em_cmp_match(struct sk_buff *skb, struct tcf_ematch *em, break; case TCF_EM_ALIGN_U16: - val = *ptr << 8; - val |= *(ptr+1); - - if (cmp_needs_transformation(cmp)) - val = be16_to_cpu(val); + val = get_unaligned_be16(ptr); break; case TCF_EM_ALIGN_U32: /* Worth checking boundries? The branching seems * to get worse. Visit again. */ - val = *ptr << 24; - val |= *(ptr+1) << 16; - val |= *(ptr+2) << 8; - val |= *(ptr+3); - - if (cmp_needs_transformation(cmp)) - val = be32_to_cpu(val); + val = get_unaligned_be32(ptr); break; default: -- 1.5.6.1.322.ge904b -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| David Miller | Slow DOWN, please!!! |
| Greg Kroah-Hartman | [PATCH 002/196] Chinese: rephrase English introduction in HOWTO |
| Pavel Roskin | ndiswrapper and GPL-only symbols redux |
git: | |
| Sander | 'struct task_struct' has no member named 'mems_allowed' (was: Re: 2.6.20-rc4-mm1) |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Arjan van de Ven | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| Corey Minyard | Re: [PATCH 3/3] Convert the UDP hash lock to RCU |
