RE: [PATCH 2/3] staging: r8188eu: Fix case where ethtype was never obtained and always be checked against 0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Dan Carpenter
...
> > -	if (auth_alg == 2) {
> > +	if (auth_alg == dot11AuthAlgrthm_8021X) {
> > +		/* get ether_type */
> > +		ptr = ptr + pfhdr->attrib.hdrlen + LLC_HEADER_SIZE;
> > +		memcpy(&ether_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



_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel




[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux