Commit Graph

36 Commits

Author SHA1 Message Date
pooka
10fe49d72c Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client.  This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached.  However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff.  ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
2010-01-19 22:06:18 +00:00
dyoung
cd6e1fbf91 Expand PMF_FN_* macros. 2010-01-08 19:53:10 +00:00
cegger
446b6b0dd3 Use m_pullup to handle defragmentation.
Reinject mbuf into TX queue when it couldn't be loaded.

diff for age(4) reviewed/discussed with plunky@ several weeks ago.
2009-10-08 08:57:19 +00:00
tsutsui
64cbab9fdb Invert logic around nested pmf(9) registrations for readability. 2009-09-05 14:09:55 +00:00
cegger
ab159a84fa make RX hw checksum available by default.
TX hw checksum locks up interface.
2009-08-05 15:29:51 +00:00
cegger
3b3738c161 fix typo 2009-08-05 14:41:12 +00:00
cegger
6d027845ab - Don't access VPD even if hardware advertised the capability.
It seems that some revisions of the controllers hang while accessing
  the VPD. Because VPD access routine is now unused, nuke it.
- Let TWSI reload EEPROM if VPD capability is detected. Reloading
  the EEPROM will also set the Ethernet address, so age(4) now reads
  AGE_PAR0 and AGE_PAR1 register to get the Ethernet address. This removes
  removes a lot of hacks and enhance readability a lot.
- Double PHY reset timeout as it takes more time to take the PHY out of
  power-saving state.
- Explicitly check power-saving state by checking undocumented PHY
  registers. If link is not up, poke undocumented registers to take
  PHY out of power-saving state. This is the same thing done by the
  Linux driver.
- Don't rely on auto-clearing feature of master reset bit, just wait
  1ms and check idle status of MAC.

From FreeBSD via OpenBSD.
2009-08-05 12:07:16 +00:00
cegger
32258d719a support flow control. from OpenBSD.
tested by hans@
2009-08-04 13:17:55 +00:00
cegger
9bb7df81f0 on detach, deregister from pmf and free resource 2009-04-28 11:47:56 +00:00
cegger
c1bf5ecbc4 age_intr: don't return w/o ack. the interrupt.
Add a comment when this special case can happen.
2009-04-26 07:01:29 +00:00
tsutsui
34ef135b8c Fix wrong arguments of bus_dmamem_free(9).
XXX: not all resouces are freed properly on error path in age_dma_alloc().
2009-04-21 13:16:36 +00:00
cegger
05d55db82b mimic fix from nfe(4):
when bus_dmamap_create fails, then the map pointer is undefined.
age_dma_free() assumes, the map pointer is NULL. Make the assumption
always true by setting the map pointer to NULL in bus_dmamap_create()
error path in order to prevent age_dma_free() to call bus_dmamap_destroy()
on an invalid map.
2009-03-03 23:28:44 +00:00
cegger
4822727b65 make multicast working.
Diff from OpenBSD's if_age.c rev. 1.2.
2009-03-03 22:26:41 +00:00
cegger
6ec3b632d5 when attach routine fails, also free DMA memory and interrupt mapping.
Diff from OpenBSD's if_age.c rev. 1.2.
ok cube@
2009-02-23 13:39:41 +00:00
cegger
0df426b492 make this compile w/o VLAN 2009-02-16 09:38:41 +00:00
cegger
a4f75ff6c2 age_dma_free: set smb pointers to NULL for consistency
age_stop: call mii_down()
ok cube@
2009-02-11 16:15:59 +00:00
dyoung
1121b32c97 If the bus_dmamap_load_mbuf() status was non-zero, then the DMA
map is undefined, so do not try to unload it.
2009-02-05 23:56:57 +00:00
dyoung
4bb08aca8c Initialize ec_mii, and re-use more ethernet common code for media
handling.

Replace an anonymous constant by PCI_COMMAND_INTERRUPT_DISABLE.

These changes have been compile-tested, only.
2009-02-05 21:40:46 +00:00
cegger
9e46f319a5 Adapt age_stop() as our ethernet stack expects it.
This makes 'ifconfig age0 down' working.
Ok cube@
2009-02-03 16:13:34 +00:00
cegger
fac6f4dc2d age_dma_alloc(): Don't allocate more than really required.
It is less likely to fail with ENOMEM when we are short on dma-safe memory.
This happens more likely when running NetBSD as Xen Dom0.
2009-01-30 16:16:36 +00:00
cegger
2caf306c7c age_dma_alloc(): print error code to figure out why it failed. 2009-01-30 08:57:35 +00:00
cegger
2042e8e4e8 remove brackets from return statements.
No functional change.
2009-01-30 08:46:25 +00:00
cegger
54411cb3fc fix error path: don't crash when age_dma_alloc() fails. 2009-01-29 17:03:37 +00:00
cegger
e3f5192d4c - fix test for IPv4 csum.
- No need to double negate TCP/UDP csum test
2009-01-24 08:31:03 +00:00
cegger
bbb2be253d Improve handling of transmitting large packets.
Sending large packets works better, but still needs investigations.
2009-01-23 22:59:30 +00:00
cegger
f21b8480ba struct device -> device_t 2009-01-22 09:39:28 +00:00
cegger
ea6211cb91 fix crash when bringing up the device and no cable is plugged in 2009-01-22 09:37:44 +00:00
cegger
2f997eedf3 Roll our own ETHER_ALIGN #define like many other driver do.
Use ETHER_ALIGN to calculate number of segments correctly (actually the same way as FreeBSD and OpenBSD do).
Also use ETHER_ALIGN to correctly adjust new mbufs.
This makes the driver finally work. Tested by Jochen Kunz:
ping -nf 192.168.2.1
PING 192.168.2.1 (192.168.2.1): 56 data bytes

----192.168.2.1 PING Statistics----
28949 packets transmitted, 28949 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.157/0.364/2.272/0.023 ms
  2710.6 packets/sec sent,  2710.6 packets/sec received


XXX Shouldn't if_ether.h provide ETHER_ALIGN instead of defining it in all drivers?
2009-01-21 07:48:54 +00:00
cegger
946c49f6ac fix botched age_ioctl(): don't try to roll its own handling when ether_ioctl() is doing all of it right.
Tested by Jochen Kunz.
2009-01-18 21:24:44 +00:00
cegger
97f2088ea7 beautify dmesg output 2009-01-18 18:55:38 +00:00
cegger
7971844bd8 Until we do WOL, the PCI power management suspend code is a noop. 2009-01-17 00:02:40 +00:00
cegger
8023f7432d don't call age_stop and age_init in suspend/resume.
pmf network class is already doing that.
pointed out by jmcneill
2009-01-16 23:58:05 +00:00
cegger
09bd2fda5c rename PCI_PMCSR_PME to PCI_PMCSR_PME_STS.
Per request from jmcneill
2009-01-16 23:23:34 +00:00
cegger
fe069f5185 - fix age_read_vpd_word().
- add power management support. From FreeBSD.
2009-01-16 23:10:32 +00:00
cegger
31614b9ad8 add RCSID 2009-01-16 21:47:56 +00:00
cegger
32b43f4cc8 Driver for Attansic L1 gigabit ethernet driver.
Written by Pyun YongHyeon for FreeBSD, ported to DragonFlyBSD
by Sepherosa Ziehau, ported to OpenBSD by Kevin Lo and then
ported to NetBSD by me.

XXX Driver needs testing.
2009-01-16 20:18:08 +00:00