Commit Graph

54 Commits

Author SHA1 Message Date
Axel Dörfler
e25593c034 I accidently didn't revert the delayed MII bus scan correctly which resulted in callling the
device's attach() method twice - this would let every network device that found a MII PHY fall into 
an endless loop on start. In other words 3com and VIA Rhine should now work fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22815 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-03 16:43:28 +00:00
Axel Dörfler
e60d7937c9 The MAC address might need to be copied to the arpcom structure as well
(the 3com driver needs this, for example).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22814 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-03 15:10:22 +00:00
Axel Dörfler
3e01ad3517 Made DELAY() fall back to spin() for times below 1000 usecs; it's often used that way, and snooze()
just wouldn't work right then.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22813 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-03 13:39:39 +00:00
Axel Dörfler
7242a223a1 * Added miibus_linkchg and miibus_mediainit methods to device_set_driver(); this was the actual
reason the MII bus did not work as mediainit was never called.
* Got rid of the delayed MII bus scanning again; not only did it not solve the problem, it was
  also completely unnecessary.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22812 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-03 13:00:12 +00:00
Axel Dörfler
84eb0b5f5b Delayed scanning the MII bus until the first ifm_media has been set for the
device.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22807 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-02 18:24:05 +00:00
Axel Dörfler
2949df37ae The MII stuff did not work at all, this is at least an improvement for that; apparently,
probing/attaching the MII bus should come later, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22806 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-02 18:09:02 +00:00
Axel Dörfler
1c0d11a0a7 Turned off extensive debug output, minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22805 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-02 15:47:47 +00:00
Axel Dörfler
689177bed5 Added contigfree() as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22804 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-02 15:07:50 +00:00
Axel Dörfler
01ada2057f Accidently messed up the vtophys() macro...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22803 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-02 15:05:12 +00:00
Axel Dörfler
00abfdbe15 * Since vtophys() is no public API in FreeBSD, vtophys() is now a macro to
pmap_kextract() not vice versa, just like it is done in FreeBSD itself.
* Added missing contigmalloc() definition for kernel drivers.
* Fixed the "*_devclass defined but not used" warning.
* Fixed warnings.
* Added/adjusted (to our style guide) the license headers for the files I
  touched.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22802 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-02 15:00:45 +00:00
Axel Dörfler
d8f9591fa7 * Fixed the loop in bus_generic_attach() that I accidently broke with the previous commit.
* Calmed down the FreeBSD compatibility layer considerably.
* Now also sets the arpcom's ac_ifp field for completeness.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22772 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-30 16:56:15 +00:00
Axel Dörfler
31154c5cc6 * Fixed the KASSERT() macro - it panicked without reason.
* Fixed device_set_driver(): it needs to clear the allocated buffer (it's
  allocated with M_ZERO in FreeBSD).
* The first mbuf buffer needs to have the M_PKTHDR flag set.
* With these changes, the 3com driver now fails where it should have failed
  before, that is in the missing interrupt handling.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22769 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-30 12:01:21 +00:00
Axel Dörfler
afa1bfe51d IFT_ETHER expects an arpcom structure at if_l2com; this would actually need
to be expanded for other types, but for now, we'll probably only get IFT_ETHER
anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22766 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-29 23:37:35 +00:00
Hugo Santos
379d59225b freebsd compat. layer: fixed ETHER_GETFRAMESIZE handling. possible fix for #1238.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21195 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-21 22:55:01 +00:00
Hugo Santos
f1d1b028f2 freebsd compat. layer: another go at multiple MII module support.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21100 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-10 06:33:35 +00:00
Hugo Santos
8a43628971 freebsd compat. layer: some missing definitions as well as allowing multiple MII modules per driver.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21099 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-10 06:03:24 +00:00
Hugo Santos
4b2286de82 freebsd compat. layer: MII subsystem (needs testers, more to come).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21097 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-10 04:52:43 +00:00
Hugo Santos
eb89c947d3 freebsd compat. layer: implemented miibus_readreg and miibus_writereg, it goes up through the tree until the driver.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21095 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 19:36:02 +00:00
Hugo Santos
b650951128 freebsd compat. layer: split device structure to handle for miibus devices, added a new network_device.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21094 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 19:35:38 +00:00
Hugo Santos
2a275df505 freebsd compat. layer: a couple more definitions, minimal, mostly adding a new glue method to re-enable device interrupts since if_rl (rtl 8139) will require it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21092 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 15:27:13 +00:00
Hugo Santos
7d1e0a1da9 freebsd compat. layer: fixed a couple warnings, use KernelStaticLibrary as suggested by Ingo.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21089 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 13:49:05 +00:00
Hugo Santos
ed014fee89 freebsd compat. layer: when open()ing the device, and setting it up, don't clear the device flags (multicast included).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21082 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 05:40:39 +00:00
Hugo Santos
07ef8870a3 freebsd compat. layer: multicast support.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21081 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 05:37:46 +00:00
Hugo Santos
0747d47e40 freebsd compat. layer: added swi taskqueue and a couple more methods that if_xl needs. also marked some as unimplemented so its clearer what is left to be done.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21080 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 04:21:47 +00:00
Hugo Santos
dcaf1f47c5 freebsd compat. layer: splited freebsd original code into own files.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21079 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 03:00:57 +00:00
Hugo Santos
100b6e6537 freebsd compat. layer: close() and free().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21078 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 01:28:02 +00:00
Hugo Santos
9628dc45e2 freebsd compat. layer: remove arbitrary limit on number of created threads available in taskqueue_start_threads.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21077 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 00:55:10 +00:00
Hugo Santos
303a4a3df6 freebsd compat. layer: a couple more changes. a DMA-using driver (FreeBSD's em, Intel Pro 1000) now works without any modifications (it has a fast interrupt mode).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21076 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-09 00:29:29 +00:00
Hugo Santos
4d281161ba freebsd compat. layer: respect requested priority in taskqueue_start_threads.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21075 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-08 17:15:16 +00:00
Hugo Santos
3f3e58db20 freebsd compat. layer: gcc 4 fixes, it seems __FUNCTION__ is variant.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21074 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-08 17:01:10 +00:00
Hugo Santos
adf9024529 freebsd compat. layer: only init taskqueue_fast if FBSD_FAST_TASKQUEUE requirement is set (since it starts a thread and consumes a couple semaphores).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21073 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-08 16:53:13 +00:00
Hugo Santos
b6ace498dd freebsd compat. layer: added a requirements field so not all drivers init all subsystems. pcnet for instance doesn't need taskqueues.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21072 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-08 16:52:48 +00:00
Hugo Santos
859a95b6c7 freebsd compat. layer: taskqueue implementation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21071 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-08 16:52:26 +00:00
Hugo Santos
25d42ceb99 freebsd compat. layer: a few more definitions, preparing for a DMA-using driver.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21067 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-08 13:10:02 +00:00
Hugo Santos
b27873dc4a freebsd compat. layer: added ETHER_SETPROMISC, ETHER_GET_LINK_STATE and ETHER_SET_LINK_STATE_SEM support.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21050 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-07 05:29:06 +00:00
Hugo Santos
80df11254f freebsd compat. layer: now both receiving and sending work with PCNET.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21048 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-07 05:28:38 +00:00
Hugo Santos
e2941f52fd freebsd compat. layer: couple fixes, sending now works with PCNET. enabled ifmedia_ioctl, and when opening a device, set it down, change media to ETHER/AUTO and set it back up so it sees a IFF_UP.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21047 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-07 03:20:58 +00:00
Hugo Santos
0bdff52467 freebsd compat. layer: instead of disabling the IRQ, disable the device's interrupts on real interrupt request as suggested by Travis. This solves potential issues with shared IRQs. The check & disable interrupts function is part of the required glue code.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-06 22:40:19 +00:00
Hugo Santos
e1a99f77d4 freebsd compat. layer: use a thread for deferred interrupt handling. fixed a issue with bus_space_write_N. init the receive queue on device creation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21041 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-06 15:08:08 +00:00
Hugo Santos
ddcaaa6129 freebsd compat. layer: added open(), which calls into the driver's attach. when testing with PCNET, a interface is already presented to the stack, it is even able to obtain the MAC address from the device, but still more work to do.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21030 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-05 04:45:01 +00:00
Hugo Santos
244a4d1fa3 freebsd compat. layer: we now init the several sub-parts through init_hardware, as well as allocate the available device_ts.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21029 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-05 03:40:07 +00:00
Hugo Santos
a23462bfad freebsd compat. layer: use m_defrag to get a contiguous mbuf when read()ing. also added write() and a partial control().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21028 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-05 02:19:44 +00:00
Hugo Santos
00212abe1c freebsd compat. layer: a few more methods, preparing for pcnet
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21026 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-05 00:47:20 +00:00
Hugo Santos
747c938b9b freebsd compat. layer: now the glue code properly references the required methods so we have proper linkage with gcc 4
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21017 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-04 14:22:35 +00:00
Hugo Santos
336ce7039c freebsd compat. layer: some initial glue code
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21013 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-04 11:26:37 +00:00
Hugo Santos
6d043beb03 freebsd compat. layer: added mii placeholders, callout implementation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21006 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-03 21:18:21 +00:00
Hugo Santos
a8ff4e33f1 freebsd compat. layer: ifnet and ethernet methods. missing MII and callout
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21000 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-03 17:29:43 +00:00
Hugo Santos
070b62bf11 freebsd compat. layer: a few more symbols, also respect malloc's M_ZERO
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20999 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-03 16:40:08 +00:00
Hugo Santos
ac156738e9 freebsd compat. layer: added freebsd's busdma implementation. we are still missing MII and the ifp/ether methods.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20994 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-03 14:14:12 +00:00
Hugo Santos
82256564e2 freebsd compat. layer: added mbuf allocation and if_media support
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20990 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-03 02:18:17 +00:00