Revert "Call get_unaligned() in various places"

This reverts commit 74847768df924221df0401e04556ce010ba5da0f.

We used get_unaligned() to work around the issue where the IPv4 header
was not properly aligned on a 4-byte boundary. Quantenna recently added
code to memmove IPv4 packets to ensure proper alignment. Hence, the
calls to get_unaligned() are no longer needed.

Change-Id: I295531a6edb838bccc03978f2af6595d18542634
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index af5b139..730d856 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -341,7 +341,7 @@
 	ipv6_addr_set(solicited,
 		      htonl(0xFF020000), 0,
 		      htonl(0x1),
-		      htonl(0xFF000000) | get_unaligned(&addr->s6_addr32[3]));
+		      htonl(0xFF000000) | addr->s6_addr32[3]);
 }
 
 static inline bool ipv6_addr_is_ll_all_nodes(const struct in6_addr *addr)
@@ -350,9 +350,9 @@
 	__be64 *p = (__be64 *)addr;
 	return ((p[0] ^ cpu_to_be64(0xff02000000000000UL)) | (p[1] ^ cpu_to_be64(1))) == 0UL;
 #else
-	return ((get_unaligned(&addr->s6_addr32[0]) ^ htonl(0xff020000)) |
-		get_unaligned(&addr->s6_addr32[1]) | get_unaligned(&addr->s6_addr32[2]) |
-		(get_unaligned(&addr->s6_addr32[3]) ^ htonl(0x00000001))) == 0;
+	return ((addr->s6_addr32[0] ^ htonl(0xff020000)) |
+		addr->s6_addr32[1] | addr->s6_addr32[2] |
+		(addr->s6_addr32[3] ^ htonl(0x00000001))) == 0;
 #endif
 }
 
@@ -362,15 +362,15 @@
 	__be64 *p = (__be64 *)addr;
 	return ((p[0] ^ cpu_to_be64(0xff02000000000000UL)) | (p[1] ^ cpu_to_be64(2))) == 0UL;
 #else
-	return ((get_unaligned(&addr->s6_addr32[0]) ^ htonl(0xff020000)) |
-		get_unaligned(&addr->s6_addr32[1]) | get_unaligned(&addr->s6_addr32[2]) |
-		(get_unaligned(&addr->s6_addr32[3]) ^ htonl(0x00000002))) == 0;
+	return ((addr->s6_addr32[0] ^ htonl(0xff020000)) |
+		addr->s6_addr32[1] | addr->s6_addr32[2] |
+		(addr->s6_addr32[3] ^ htonl(0x00000002))) == 0;
 #endif
 }
 
 static inline bool ipv6_addr_is_isatap(const struct in6_addr *addr)
 {
-	return (get_unaligned(&addr->s6_addr32[2]) | htonl(0x02000000)) == htonl(0x02005EFE);
+	return (addr->s6_addr32[2] | htonl(0x02000000)) == htonl(0x02005EFE);
 }
 
 static inline bool ipv6_addr_is_solict_mult(const struct in6_addr *addr)
@@ -381,9 +381,9 @@
 		((p[1] ^ cpu_to_be64(0x00000001ff000000UL)) &
 		 cpu_to_be64(0xffffffffff000000UL))) == 0UL;
 #else
-	return ((get_unaligned(&addr->s6_addr32[0]) ^ htonl(0xff020000)) |
-		get_unaligned(&addr->s6_addr32[1]) |
-		(get_unaligned(&addr->s6_addr32[2]) ^ htonl(0x00000001)) |
+	return ((addr->s6_addr32[0] ^ htonl(0xff020000)) |
+		addr->s6_addr32[1] |
+		(addr->s6_addr32[2] ^ htonl(0x00000001)) |
 		(addr->s6_addr[12] ^ 0xff)) == 0;
 #endif
 }
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index 8d8cc40..11a0452 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -21,7 +21,6 @@
 #include <net/flow.h>
 #include <net/flow_dissector.h>
 #include <net/snmp.h>
-#include <asm/unaligned.h>
 
 #define SIN6_LEN_RFC2133	24
 
@@ -463,10 +462,10 @@
 
 	return ((ul1[0] ^ ul2[0]) | (ul1[1] ^ ul2[1])) == 0UL;
 #else
-	return ((get_unaligned(&a1->s6_addr32[0]) ^ get_unaligned(&a2->s6_addr32[0])) |
-		(get_unaligned(&a1->s6_addr32[1]) ^ get_unaligned(&a2->s6_addr32[1])) |
-		(get_unaligned(&a1->s6_addr32[2]) ^ get_unaligned(&a2->s6_addr32[2])) |
-		(get_unaligned(&a1->s6_addr32[3]) ^ get_unaligned(&a2->s6_addr32[3]))) == 0;
+	return ((a1->s6_addr32[0] ^ a2->s6_addr32[0]) |
+		(a1->s6_addr32[1] ^ a2->s6_addr32[1]) |
+		(a1->s6_addr32[2] ^ a2->s6_addr32[2]) |
+		(a1->s6_addr32[3] ^ a2->s6_addr32[3])) == 0;
 #endif
 }
 
@@ -581,8 +580,8 @@
 
 	return (u32)(x ^ (x >> 32));
 #else
-	return (__force u32)(get_unaligned(&a->s6_addr32[0]) ^ get_unaligned(&a->s6_addr32[1]) ^
-			     get_unaligned(&a->s6_addr32[2]) ^ get_unaligned(&a->s6_addr32[3]));
+	return (__force u32)(a->s6_addr32[0] ^ a->s6_addr32[1] ^
+			     a->s6_addr32[2] ^ a->s6_addr32[3]);
 #endif
 }
 
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 965853a..e3f6f1f 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -72,7 +72,7 @@
 		return 0;
 	switch (a->proto) {
 	case htons(ETH_P_IP):
-		return get_unaligned(&a->u.ip4) == get_unaligned(&b->u.ip4);
+		return a->u.ip4 == b->u.ip4;
 #if IS_ENABLED(CONFIG_IPV6)
 	case htons(ETH_P_IPV6):
 		return ipv6_addr_equal(&a->u.ip6, &b->u.ip6);
@@ -102,7 +102,7 @@
 {
 	switch (ip->proto) {
 	case htons(ETH_P_IP):
-		return __br_ip4_hash(mdb, get_unaligned(&ip->u.ip4), ip->vid);
+		return __br_ip4_hash(mdb, ip->u.ip4, ip->vid);
 #if IS_ENABLED(CONFIG_IPV6)
 	case htons(ETH_P_IPV6):
 		return __br_ip6_hash(mdb, &ip->u.ip6, ip->vid);
@@ -175,7 +175,7 @@
 
 	switch (ip.proto) {
 	case htons(ETH_P_IP):
-		ip.u.ip4 = get_unaligned(&ip_hdr(skb)->daddr);
+		ip.u.ip4 = ip_hdr(skb)->daddr;
 		break;
 #if IS_ENABLED(CONFIG_IPV6)
 	case htons(ETH_P_IPV6):
@@ -875,7 +875,7 @@
 	if (ipv6_addr_is_ll_all_nodes(group))
 		return 0;
 
-	memcpy(&br_group.u.ip6, &group, sizeof(*group));
+	br_group.u.ip6 = *group;
 	br_group.proto = htons(ETH_P_IPV6);
 	br_group.vid = vid;
 
@@ -1161,7 +1161,7 @@
 			return -EINVAL;
 
 		grec = (void *)(skb->data + len - sizeof(*grec));
-		group = get_unaligned(&grec->grec_mca);
+		group = grec->grec_mca;
 		type = grec->grec_type;
 
 		len += ntohs(grec->grec_nsrcs) * 4;
@@ -1838,7 +1838,7 @@
 
 	own_query = port ? &port->ip6_own_query : &br->ip6_own_query;
 
-	memcpy(&br_group.u.ip6, group, sizeof(*group));
+	br_group.u.ip6 = *group;
 	br_group.proto = htons(ETH_P_IPV6);
 	br_group.vid = vid;
 
@@ -1884,7 +1884,7 @@
 	case IGMPV2_HOST_MEMBERSHIP_REPORT:
 		BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
 		err = br_ip4_multicast_add_group(br, port,
-					src_mac, skb->src_port, get_unaligned(&ih->group), vid);
+					src_mac, skb->src_port, ih->group, vid);
 		break;
 	case IGMPV3_HOST_MEMBERSHIP_REPORT:
 		err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid);
@@ -1894,7 +1894,7 @@
 		break;
 	case IGMP_HOST_LEAVE_MESSAGE:
 		br_ip4_multicast_leave_group(br, port,
-					src_mac, skb->src_port, get_unaligned(&ih->group), vid);
+					src_mac, skb->src_port, ih->group, vid);
 		break;
 	}
 
diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c
index 6abd5a7..73c33de 100644
--- a/net/ipv4/ip_input.c
+++ b/net/ipv4/ip_input.c
@@ -340,7 +340,7 @@
 	 *	how the packet travels inside Linux networking.
 	 */
 	if (!skb_valid_dst(skb)) {
-		int err = ip_route_input_noref(skb, get_unaligned(&iph->daddr), get_unaligned(&iph->saddr),
+		int err = ip_route_input_noref(skb, iph->daddr, iph->saddr,
 					       iph->tos, skb->dev);
 		if (unlikely(err)) {
 			if (err == -EXDEV)
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 22f0e79..4aed8fc 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1322,7 +1322,7 @@
 	if (sin) {
 		sin->sin_family = AF_INET;
 		sin->sin_port = udp_hdr(skb)->source;
-		sin->sin_addr.s_addr = get_unaligned(&ip_hdr(skb)->saddr);
+		sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
 		memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
 		*addr_len = sizeof(*sin);
 	}
@@ -1745,8 +1745,8 @@
 
 	uh   = udp_hdr(skb);
 	ulen = ntohs(uh->len);
-	saddr = get_unaligned(&ip_hdr(skb)->saddr);
-	daddr = get_unaligned(&ip_hdr(skb)->daddr);
+	saddr = ip_hdr(skb)->saddr;
+	daddr = ip_hdr(skb)->daddr;
 
 	if (ulen > skb->len)
 		goto short_packet;
@@ -1926,17 +1926,17 @@
 
 		/* we are supposed to accept bcast packets */
 		if (skb->pkt_type == PACKET_MULTICAST) {
-			ours = ip_check_mc_rcu(in_dev, get_unaligned(&iph->daddr), get_unaligned(&iph->saddr),
+			ours = ip_check_mc_rcu(in_dev, iph->daddr, iph->saddr,
 					       iph->protocol);
 			if (!ours)
 				return;
 		}
 
-		sk = __udp4_lib_mcast_demux_lookup(net, uh->dest, get_unaligned(&iph->daddr),
-						   uh->source, get_unaligned(&iph->saddr), dif);
+		sk = __udp4_lib_mcast_demux_lookup(net, uh->dest, iph->daddr,
+						   uh->source, iph->saddr, dif);
 	} else if (skb->pkt_type == PACKET_HOST) {
-		sk = __udp4_lib_demux_lookup(net, uh->dest, get_unaligned(&iph->daddr),
-					     uh->source, get_unaligned(&iph->saddr), dif);
+		sk = __udp4_lib_demux_lookup(net, uh->dest, iph->daddr,
+					     uh->source, iph->saddr, dif);
 	}
 
 	if (!sk || !atomic_inc_not_zero_hint(&sk->sk_refcnt, 2))
diff --git a/net/ipv6/ip6_checksum.c b/net/ipv6/ip6_checksum.c
index 505e1e0..c0cbcb2 100644
--- a/net/ipv6/ip6_checksum.c
+++ b/net/ipv6/ip6_checksum.c
@@ -14,36 +14,36 @@
 	__u32 uproto;
 	__u32 sum = (__force u32)csum;
 
-	sum += (__force u32)get_unaligned(&saddr->s6_addr32[0]);
-	carry = (sum < (__force u32)get_unaligned(&saddr->s6_addr32[0]));
+	sum += (__force u32)saddr->s6_addr32[0];
+	carry = (sum < (__force u32)saddr->s6_addr32[0]);
 	sum += carry;
 
-	sum += (__force u32)get_unaligned(&saddr->s6_addr32[1]);
-	carry = (sum < (__force u32)get_unaligned(&saddr->s6_addr32[1]));
+	sum += (__force u32)saddr->s6_addr32[1];
+	carry = (sum < (__force u32)saddr->s6_addr32[1]);
 	sum += carry;
 
-	sum += (__force u32)get_unaligned(&saddr->s6_addr32[2]);
-	carry = (sum < (__force u32)get_unaligned(&saddr->s6_addr32[2]));
+	sum += (__force u32)saddr->s6_addr32[2];
+	carry = (sum < (__force u32)saddr->s6_addr32[2]);
 	sum += carry;
 
-	sum += (__force u32)get_unaligned(&saddr->s6_addr32[3]);
-	carry = (sum < (__force u32)get_unaligned(&saddr->s6_addr32[3]));
+	sum += (__force u32)saddr->s6_addr32[3];
+	carry = (sum < (__force u32)saddr->s6_addr32[3]);
 	sum += carry;
 
-	sum += (__force u32)get_unaligned(&daddr->s6_addr32[0]);
-	carry = (sum < (__force u32)get_unaligned(&daddr->s6_addr32[0]));
+	sum += (__force u32)daddr->s6_addr32[0];
+	carry = (sum < (__force u32)daddr->s6_addr32[0]);
 	sum += carry;
 
-	sum += (__force u32)get_unaligned(&daddr->s6_addr32[1]);
-	carry = (sum < (__force u32)get_unaligned(&daddr->s6_addr32[1]));
+	sum += (__force u32)daddr->s6_addr32[1];
+	carry = (sum < (__force u32)daddr->s6_addr32[1]);
 	sum += carry;
 
-	sum += (__force u32)get_unaligned(&daddr->s6_addr32[2]);
-	carry = (sum < (__force u32)get_unaligned(&daddr->s6_addr32[2]));
+	sum += (__force u32)daddr->s6_addr32[2];
+	carry = (sum < (__force u32)daddr->s6_addr32[2]);
 	sum += carry;
 
-	sum += (__force u32)get_unaligned(&daddr->s6_addr32[3]);
-	carry = (sum < (__force u32)get_unaligned(&daddr->s6_addr32[3]));
+	sum += (__force u32)daddr->s6_addr32[3];
+	carry = (sum < (__force u32)daddr->s6_addr32[3]);
 	sum += carry;
 
 	ulen = (__force u32)htonl((__u32) len);