From: Alexei Starovoitov <a...@fb.com> Date: Wed, 26 Apr 2017 16:49:35 -0700
> It's only needed for test_pkt_access.c test, > since it's being fancy and doing iph->ihl * 4. It is going to be a common idiom in anything looking at transport headers, no? > Also such tcp->urg_ptr access into packed struct is more efficient > after JITing then sparc's own load_half_unaligned in asm, since it's > done inline and doesn't need a call. > > Note that such tcphdr workaround is not necessary for more > real programs: test_l4lb.c and test_xdp.c, since they do: > if (iph->ihl != 5) > return drop; Hmmm... > Does sparc64 have some special instructions like that? Unfortunately not. I think we need to seriously consider tracking "Pointer incremented by power of 2 N" and stuff like that. I know it's not easy, but it is necessary. Having stuff like the packed thing above is just a completely unnecessary detail to expose to users writing these programs.