etherdev: Fix sparse error, make test usable by other functions
authorAlexander Duyck <alexander.h.duyck@redhat.com>
Mon, 4 May 2015 21:33:48 +0000 (14:33 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 5 May 2015 23:24:42 +0000 (19:24 -0400)
commit2c7a88c252bf3381958cf716f31b6b2e0f2f3fa7
tree8c242beda53e88b084af505aaa4039f1c1f3f2e6
parent784b58a327ad16967ab64bbfa558df81980d31e9
etherdev: Fix sparse error, make test usable by other functions

This change does two things.  First it fixes a sparse error for the fact
that the __be16 degrades to an integer.  Since that is actually what I am
kind of doing I am simply working around that by forcing both sides of the
comparison to u16.

Also I realized on some compilers I was generating another instruction for
big endian systems such as PowerPC since it was masking the value before
doing the comparison.  So to resolve that I have simply pulled the mask out
and wrapped it in an #ifndef __BIG_ENDIAN.

Lastly I pulled this all out into its own function.  I notices there are
similar checks in a number of other places so this function can be reused
there to help reduce overhead in these paths as well.

Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/etherdevice.h
net/ethernet/eth.c