[haiku-bugs] Re: [Haiku] #11963: ipro1000 wapper recognizes fewer PCI IDs than are supported

  • From: "Eschaton" <trac@xxxxxxxxxxxx>
  • Date: Mon, 13 Apr 2015 03:19:21 -0000

#11963: ipro1000 wapper recognizes fewer PCI IDs than are supported
----------------------------------------+----------------------------
Reporter: Eschaton | Owner: nobody
Type: enhancement | Status: new
Priority: normal | Milestone: Unscheduled
Component: Drivers/Network/ipro1000 | Version: R1/Development
Resolution: | Keywords:
Blocked By: | Blocking:
Has a Patch: 0 | Platform: All
----------------------------------------+----------------------------

Comment (by Eschaton):

I managed to get this working with my motherboard! Unfortunately, I'd have
to jump through a bunch of hoops and red tape to share a patch. However I
can give a general rundown of what modifications need to be made, they
were very simple and mostly just ensuring (1) that the `driver.c` glue
knew the PCI IDs it should cover and (2) that the existing `e1000` code
was updated to cover the latest PCI IDs. I gleaned them from looking at
the FreeBSD 9 and 10 code.

Conceivably the list in `driver.c` should be updated to cover the entire
list of device IDs in `e1000_hw.h` (maybe in an automated fashion) but
this wouldn't have helped my situation, since my chipset actually needed
to have an entry added to that too.

Anyway, here are the changes needed. With just the below, as soon as I
installed a homebuilt driver, my network went active and WebPositive
worked.

'''dev/e1000/e1000_hw.h:'''
Add entries to the list of `#define` constants for
`E1000_DEV_ID_PCH_I218_{LM2,V2,LM3,V3}` which have consecutive PCI IDs
starting with `0x15A0`.

'''dev/e1000/e1000_api.c:'''
Add entries to the switch in `e1000_set_mac_type()` for
`E1000_DEV_ID_PCH_I118_{LM2,V2,LM3,V3}` to do the same thing as the
entries for `E1000_DEV_ID_PCH_LPTLP_I218_V`.

'''dev/e1000/e1000_ich8lan.c:'''
Add entries for '''only''' `E1000_DEV_ID_PCH_I218_{LM3,V3}` to the places
that reference `E1000_DEV_ID_PCH_LPTLP_I218_V`.

'''dev/e1000/if_em.c:'''
Add entries to the big array of devices for the constants added to
`e1000_hw.h`.

'''driver.c:'''
Add entries to `identify_device()` to also handle the various `I218` PCI
IDs.

--
Ticket URL: <https://dev.haiku-os.org/ticket/11963#comment:1>
Haiku <https://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: