diff options
| author | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-10-23 09:24:10 -0400 |
|---|---|---|
| committer | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-10-23 09:24:10 -0400 |
| commit | d9214556b11a8d18ff588e60824c12041d30f791 (patch) | |
| tree | 04ab59d13961675811a55c96fb12b2b167b72318 /net/sched/em_cmp.c | |
| parent | 72a1419a9d4c859a3345e4b83f8ef7d599d3818c (diff) | |
| parent | e82c6106b04b85879d802bbbeaed30d9b10a92e2 (diff) | |
Merge branches 'boards' and 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6
Diffstat (limited to 'net/sched/em_cmp.c')
| -rw-r--r-- | net/sched/em_cmp.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/net/sched/em_cmp.c b/net/sched/em_cmp.c index cc49c932641d..bc450397487a 100644 --- a/net/sched/em_cmp.c +++ b/net/sched/em_cmp.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
| 15 | #include <linux/skbuff.h> | 15 | #include <linux/skbuff.h> |
| 16 | #include <linux/tc_ematch/tc_em_cmp.h> | 16 | #include <linux/tc_ematch/tc_em_cmp.h> |
| 17 | #include <asm/unaligned.h> | ||
| 17 | #include <net/pkt_cls.h> | 18 | #include <net/pkt_cls.h> |
| 18 | 19 | ||
| 19 | static inline int cmp_needs_transformation(struct tcf_em_cmp *cmp) | 20 | static inline int cmp_needs_transformation(struct tcf_em_cmp *cmp) |
| @@ -37,8 +38,7 @@ static int em_cmp_match(struct sk_buff *skb, struct tcf_ematch *em, | |||
| 37 | break; | 38 | break; |
| 38 | 39 | ||
| 39 | case TCF_EM_ALIGN_U16: | 40 | case TCF_EM_ALIGN_U16: |
| 40 | val = *ptr << 8; | 41 | val = get_unaligned_be16(ptr); |
| 41 | val |= *(ptr+1); | ||
| 42 | 42 | ||
| 43 | if (cmp_needs_transformation(cmp)) | 43 | if (cmp_needs_transformation(cmp)) |
| 44 | val = be16_to_cpu(val); | 44 | val = be16_to_cpu(val); |
| @@ -47,10 +47,7 @@ static int em_cmp_match(struct sk_buff *skb, struct tcf_ematch *em, | |||
| 47 | case TCF_EM_ALIGN_U32: | 47 | case TCF_EM_ALIGN_U32: |
| 48 | /* Worth checking boundries? The branching seems | 48 | /* Worth checking boundries? The branching seems |
| 49 | * to get worse. Visit again. */ | 49 | * to get worse. Visit again. */ |
| 50 | val = *ptr << 24; | 50 | val = get_unaligned_be32(ptr); |
| 51 | val |= *(ptr+1) << 16; | ||
| 52 | val |= *(ptr+2) << 8; | ||
| 53 | val |= *(ptr+3); | ||
| 54 | 51 | ||
| 55 | if (cmp_needs_transformation(cmp)) | 52 | if (cmp_needs_transformation(cmp)) |
| 56 | val = be32_to_cpu(val); | 53 | val = be32_to_cpu(val); |
