« Previous | Next » 

Revision 0859df68

ID0859df68dfe978dca44d8acb16a04c04d8da5abb

Added by Naphtali Sprei almost 15 years ago

Fix for commit 3f9cb1c14dc368f41447db5f78d6248c4f100ad4

Here's a patch to fix the issue introduced by me, as Reimar Döffinger pointed out,

Reimar Döffinger wrote:

On Thu, Aug 13, 2009 at 03:01:20PM +0300, Naphtali Sprei wrote:

Bug fix for segfault when run as i82551 HW:
Use Extended TBD only when HW supports it (i82558 and up).

Added assertions to guard from such buffer overflow
Introduce the MAX_TCB_BYTE_COUNT macro
Allocate buf big enough as HW needs (MAX_ETH_FRAME_SIZE -> MAX_TCB_BYTE_COUNT)

I don't feel 100% OK with the "s->device >= i82558B" condition
since it relies on the numeric (hex) value of those defines, which currently
is correct, but changes (which I don't forsee now) might break it.

It seems this was applied. Unfortunately this breaks things on FreeBSD.
There seem to be multiple issues.
First, the intel document says the 82551, 82550, 82559 models are all
supersets of the 82558. Or in other words: they all support this
feature.
Only the 82557 does not.
But then even for that the FreeBSD driver will fail.
The reason for that is this line:
eeprom_contents[0xa] = 0x4000;
the value here must be 0x01000 for all 82557 models it seems.

Correct the logic of determining devices that supports
extended TxCB: only the 82557 do not support it.

Signed-off-by: Naphtali Sprei <>
Signed-off-by: Anthony Liguori <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences