]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC r205091,216860:
authoryongari <yongari@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 22 Jun 2011 00:48:13 +0000 (00:48 +0000)
committeryongari <yongari@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 22 Jun 2011 00:48:13 +0000 (00:48 +0000)
commit325a7fca33604ef611b0837315382d41cd777091
treeac6206e90bd3ffa1411e1668d0b3def803f9ae82
parentae59bd539d19f6235d630e441d00c835b6df9d40
MFC r205091,216860:
r205091:
  Implement Rx checksum offloading for Yukon EC, Yukon Ultra,
  Yukon FE and Yukon Ultra2. These controllers provide very simple
  checksum computation mechanism and it requires additional pseudo
  header checksum computation in upper stack. Even though I couldn't
  see much performance difference with/without Rx checksum offloading
  it may help notebook based controllers.

  Actually controller can compute two checksum value by giving
  different starting position of checksum computation on received
  frame. However, for long time, Marvell's checksum offloading engine
  have been known to have several silicon bugs so don't blindly trust
  computed partial checksum value. Instead, compute partial checksum
  twice by giving the same checksum computation position and compare
  the result. If the value is different it's clear indication of
  hardware bug. This configuration lose IP checksum offloading
  capability but I think it's better to take safe route.
  Note, Rx checksum offloading for Yukon XL was still disabled due to
  known silicon bug.

r216860:
  Fix endianness bug introduced in r205091.
  After controller updates control word in a RX LE, driver converts
  it to host byte order. The checksum value in the control word is
  stored in big endian form by controller. r205091 didn't account for
  the host byte order conversion such that the checksum value was
  incorrectly interpreted on big endian architectures which in turn
  made all TCP/UDP frames dropped. Make RX checksum offload work
  on any architectures by swapping the checksum value.

  Reported by: Sreekanth M. ( kanthms <> netlogicmicro dot com )
  Tested by: Sreekanth M. ( kanthms <> netlogicmicro dot com )

git-svn-id: svn://svn.freebsd.org/base/stable/8@223394 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/dev/msk/if_msk.c
sys/dev/msk/if_mskreg.h