ar71xx: add support for Buffalo WZR 600DHP
[openwrt/svn-archive/archive.git] / target / linux / ar71xx / patches-3.7 / 902-unaligned_access_hacks.patch
index 8806d866aab7bfb114ac17d3a6990c74598db251..70e03ac9ed09bf204ff1c6449fa3924998ebfb46 100644 (file)
  /*
 --- a/net/ipv4/tcp_input.c
 +++ b/net/ipv4/tcp_input.c
-@@ -3842,13 +3842,14 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3847,13 +3847,14 @@ static bool tcp_parse_aligned_timestamp(
  {
        const __be32 *ptr = (const __be32 *)(th + 1);
  
  #include <asm/uaccess.h>
  
  #include <linux/proc_fs.h>
-@@ -851,10 +852,10 @@ static void tcp_v6_send_response(struct 
+@@ -851,10 +852,10 @@ static void tcp_v6_send_response(struct
        topt = (__be32 *)(t1 + 1);
  
        if (ts) {
        if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
                fl6.flowi6_mark = skb->mark;
  
-@@ -1256,7 +1256,7 @@ static int ip6gre_header(struct sk_buff 
+@@ -1256,7 +1256,7 @@ static int ip6gre_header(struct sk_buff
        struct ipv6hdr *ipv6h = (struct ipv6hdr *)skb_push(skb, t->hlen);
        __be16 *p = (__be16 *)(ipv6h+1);
  
  }
  
  static inline struct neighbour *__ipv6_neigh_lookup(struct neigh_table *tbl, struct net_device *dev, const void *pkey)
+--- a/net/sched/cls_u32.c
++++ b/net/sched/cls_u32.c
+@@ -142,7 +142,7 @@ next_knode:
+                       data = skb_header_pointer(skb, toff, 4, &hdata);
+                       if (!data)
+                               goto out;
+-                      if ((*data ^ key->val) & key->mask) {
++                      if ((net_hdr_word(data) ^ key->val) & key->mask) {
+                               n = n->next;
+                               goto next_knode;
+                       }
+@@ -193,8 +193,8 @@ check_terminal:
+                                                 &hdata);
+                       if (!data)
+                               goto out;
+-                      sel = ht->divisor & u32_hash_fold(*data, &n->sel,
+-                                                        n->fshift);
++                      sel = ht->divisor & u32_hash_fold(net_hdr_word(data),
++                                                        &n->sel, n->fshift);
+               }
+               if (!(n->sel.flags & (TC_U32_VAROFFSET | TC_U32_OFFSET | TC_U32_EAT)))
+                       goto next_ht;