From: Dan Carpenter ... > > - if (auth_alg == 2) { > > + if (auth_alg == dot11AuthAlgrthm_8021X) { > > + /* get ether_type */ > > + ptr = ptr + pfhdr->attrib.hdrlen + LLC_HEADER_SIZE; > > + memcpy(ðer_type, ptr, 2); > > + ether_type = ntohs((unsigned short)ether_type); > > This cast doesn't make sense. u16 and unsigned short are the same > thing. Anyway, the "ether_type" should be declared as __be16 because > it's network endian. Is it worth doing just: ether_type = ptr[0] << 8 | ptr[1]; Or, if 'ptr' can't be misaligned, just reading a BE short. If the compiler doesn't inline memcpy() the above code is horrid. Are there MD inline functions for reading misaligned 16/32 bit date with specific endianness? David -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html