if_bge driver problem.
Gleb Smirnoff
glebius at FreeBSD.org
Fri Jan 27 09:13:33 PST 2006
On Fri, Jan 27, 2006 at 07:01:53PM +0200, husnu demir wrote:
h> I tried "http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/dev/bge/if_bge.c?rev=1.91.2.7&content-type=text/plain" version and replaced VLAN_INPUT_TAG with VLAN_INPUT_TAG_NEW (only one occurance). And the following errors come up.
Ohh, you also need to keep if_bgereg.h in sync with if_bge.c. Sorry,
I didn't mention this.
h> Not: I am leaving the office. Most probly, I will be here tomorrow morning :(
Me too. I will be online tomorrow for short time. I think Oleg will
join debugging your problem.
Here is attached files of all (if I haven't lost anything) important
changes. You can fetch actual files from cvsweb.
--
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
-------------- next part --------------
pjd 2005-09-28 19:20:49 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
Log:
Implement suspend/resume methods to be more ACPI friendly.
I'm able to suspend/resume my laptop without this change, but then I need
to wait for the watchdog to reset the card.
With this change, it is ready immediately.
Glanced at by: glebius
Revision Changes Path
1.96 +36 -0 src/sys/dev/bge/if_bge.c
glebius 2005-10-22 14:31:02 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c if_bgereg.h
Log:
Introduce polling(4) capability for bge(4).
Submitted by: Oleg Bulyzhin <oleg rinet.ru>
Revision Changes Path
1.98 +110 -2 src/sys/dev/bge/if_bge.c
1.37 +3 -0 src/sys/dev/bge/if_bgereg.h
glebius 2005-11-15 14:43:23 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c if_bgereg.h
Log:
Recognize Broadcom BCM5752 chip, that can be found in HP DC7600.
PR: kern/88940
Submitted by: Alexander Hausner
Revision Changes Path
1.100 +5 -2 src/sys/dev/bge/if_bge.c
1.38 +2 -0 src/sys/dev/bge/if_bgereg.h
glebius 2005-11-30 12:37:07 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
Log:
If bus_dmamap_load() failed, we free the mbuf. We also need to clear
the pointer, to avoid double free on next bge_stop().
Revision Changes Path
1.101 +6 -2 src/sys/dev/bge/if_bge.c
oleg 2005-12-08 13:31:52 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
sys/dev/mii brgphy.c
Log:
1) fix tiny bug in bge_start_locked()
2) rework link state detection code & use it in POLLING mode
3) fix 2 bugs in link state detection code:
a) driver unable to detect link loss on bcm5721
b) on bcm570x chips (tested on bcm5700 bcm5701 bcm5702) driver fails
to detect link loss with probability 1/6 (solved in brgphy.c)
Devices working in TBI mode should not be affected by this change.
Approved by: glebius (mentor)
MFC after: 1 month
Revision Changes Path
1.102 +115 -105 src/sys/dev/bge/if_bge.c
1.38 +1 -1 src/sys/dev/mii/brgphy.c
glebius 2005-12-08 16:11:45 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c if_bgereg.h
Log:
A big rewrite of receive Jumbo frame handling. Remove the local Jumbo
cluster allocator, that wasn't MPSAFE. Instead, utilize our new generic
UMA jumbo cluster allocator. Since UMA gives us a 9k piece that is contigous
in virtual memory, but isn't contigous in physical memory we need to handle
a few segments. To deal with this we utilize Tigon chip feature - extended
RX descriptors, that can handle up to four DMA segments for one frame.
Details:
o Remove bge_alloc_jumbo_mem(), bge_free_jumbo_mem(),
bge_jalloc(), bge_jfree() functions.
o Remove SLIST heads, bge_jumbo_tag, bge_jumbo_map from softc.
o Use extended RX BDs for Jumbo receive producer ring, and
initialize it appropriately.
o New bge_newbuf_jumbo():
- Allocate an mbuf with Jumbo cluster with help of m_cljget().
- Load the cluster for DMA with help of bus_dmamap_load_mbuf_sg().
- Assert that we got 3 segments in the DMA mapping.
- Fill in these 3 segments into the extended RX descriptor.
Revision Changes Path
1.103 +49 -233 src/sys/dev/bge/if_bge.c
1.39 +26 -15 src/sys/dev/bge/if_bgereg.h
marcel 2005-12-13 06:14:14 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
Log:
In bge_link_upd(), rewrite the logic so that status is assigned
on the code path it is used in a way that GCC understands. This
avoids breakage due to higher optimization levels.
Revision Changes Path
1.104 +2 -4 src/sys/dev/bge/if_bge.c
yongari 2005-12-15 05:48:49 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c if_bgereg.h
Log:
Add bge(4) support for big-endian architectures(part 1/2).
- Give up endianess support and switch to native-endian format for
accessing hardware structures. In fact embedded processor for
BCM57xx is big-endian architure(MIPS) and it requires native-endian
format for NIC structures.The NIC performs necessary byte/word
swapping depending on programmed endian type.
- With above changes all htole16/htole32 calls were gone.
- Remove bge_vhandle member in softc and changed to use explicit
register access. This may add additional performance penalty
that than that of previous memory access. But most of the access
is performed on initialization phase(e.g. RCB setup), it would be
negligible.
Due to incorrect use of bus_dma(9) in bge(4) it still panics sparc64
system in device detach path. The issue would be fixed in next patch.
Reviewed by: jkim (initial version)
Silence from: ps
Tested by: glebius
Obtained from: NetBSD via OpenBSD
Revision Changes Path
1.105 +74 -80 src/sys/dev/bge/if_bge.c
1.40 +66 -9 src/sys/dev/bge/if_bgereg.h
glebius 2005-12-15 09:45:54 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
Log:
o Rewrite bge_encap() to use bus_dmamap_load_mbuf_sg(9), inlining the
callback function bge_dma_map_tx_desc() into the bge_encap() itself.
o If busdma returns EFBIG, try to m_defrag() the packet.
Reviewed by: yongari
Revision Changes Path
1.106 +55 -82 src/sys/dev/bge/if_bge.c
glebius 2005-12-18 18:24:27 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
sys/dev/em if_em.c
sys/dev/ixgb if_ixgb.c
sys/dev/nge if_nge.c
sys/dev/re if_re.c
sys/dev/ti if_ti.c
sys/dev/txp if_txp.c
sys/dev/vge if_vge.c
sys/net if_vlan_var.h
sys/net80211 ieee80211_input.c
Log:
- Fix VLAN_INPUT_TAG() macro, so that it doesn't touch mtag in
case if memory allocation failed.
- Remove fourth argument from VLAN_INPUT_TAG(), that was used
incorrectly in almost all drivers. Indicate failure with
mbuf value of NULL.
In collaboration with: yongari, ru, sam
Revision Changes Path
1.107 +5 -2 src/sys/dev/bge/if_bge.c
1.93 +1 -2 src/sys/dev/em/if_em.c
1.18 +1 -2 src/sys/dev/ixgb/if_ixgb.c
1.85 +3 -1 src/sys/dev/nge/if_nge.c
1.62 +5 -2 src/sys/dev/re/if_re.c
1.118 +5 -2 src/sys/dev/ti/if_ti.c
1.40 +3 -2 src/sys/dev/txp/if_txp.c
1.23 +5 -2 src/sys/dev/vge/if_vge.c
1.23 +7 -6 src/sys/net/if_vlan_var.h
1.85 +3 -2 src/sys/net80211/ieee80211_input.c
glebius 2005-12-18 20:26:12 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c if_bgereg.h
Log:
Since BGE_MBX_TX_HOST_PROD0_LO register is write-only to software,
we can cache its value in the softc. Eliminates one PCI register
write per call to bge_start().
A 1.8% speedup for UDP_RR test on my old box.
Obtained from: NetBSD(jonathan) via delphij
Revision Changes Path
1.108 +10 -4 src/sys/dev/bge/if_bge.c
1.41 +1 -0 src/sys/dev/bge/if_bgereg.h
yongari 2005-12-22 01:44:27 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
Log:
Add bge(4) support for big-endian architectures(part 2/2).
- removed unused funtion bge_handle_events().
- removed bus_dmamap_destroy(9) calls for DMA maps created by
bus_dmamem_alloc(9). This should fix panics seen on sparc64
in device detach.
- added check for parent DMA tag creation.
- switched to use __NO_STRICT_ALIGNMENT as bge(4) supports all
architectures.
- added missing bus_dmamap_sync(9) in bge_txeof().
- added missing bus_dmamap_sync(9) in bge_encap().
- corrected memory synchronization operation on status block.
As the driver just read status block that was DMAed by NIC it
should use BUS_DMASYNC_POSTREAD. Likewise the driver does not
need to write status block back, so remove unnecessary
bus_dmamap_sync(9) calls in bge_intr().
- corrected memory synchronization operation on RX return ring.
The driver only read the block so remove unnecessary
bus_dmamap_sync(9) in bge_rxeof().
- force bus_dmamap_sync(9) for only modified descriptors. Blindly
synching all desciptor rings would reduce performance.
- call bus_dmamap_sync(9) for DMA maps that were modified in bge_rxeof().
Reviewed by: jkim(initial version)
Tested by: glebius(i386), jkim(amd64 initial version)
Revision Changes Path
1.109 +75 -92 src/sys/dev/bge/if_bge.c
yongari 2005-12-22 02:03:57 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
Log:
Fix bge_eeprom_getbyte() to return 1 when timeout happens.
Previously it always returned 0 which means success regardless of
EEPROM status.
While here, add a check whether EEPROM read is successful.
Submitted by: jkim
Revision Changes Path
1.110 +8 -3 src/sys/dev/bge/if_bge.c
glebius 2005-12-22 15:14:42 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
Log:
- All bge(4) supported hardware is known to support RX/TX checksum offloading,
except for BGE_CHIPID_BCM5700_B0, which is buggy.
- All bge(4) supported hardware, has a bug that produces incorrect checksums
on Ethernet runts. However, in case of a transmitted packet, the latter can
be padded with zeroes, and the checksum would be correct. (Probably chip
includes the pad data into checksum). In case of receive, we just don't
trust checksum data in received runts.
Obtained from: NetBSD (jonathan) via Mihail Balikov
Revision Changes Path
1.111 +69 -10 src/sys/dev/bge/if_bge.c
yongari 2005-12-23 02:04:41 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c if_bgereg.h
Log:
Use device_printf() and if_printf() rather than printf() and axe
bge_unit from the softc.
Requested by: marius
Revision Changes Path
1.112 +51 -52 src/sys/dev/bge/if_bge.c
1.42 +0 -1 src/sys/dev/bge/if_bgereg.h
oleg 2006-01-13 08:59:40 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c
Log:
1) move all link state detection code from bge_tick_locked() to bge_link_upd()
2) use more robust way of link state handling for BCM5700 rev.B2 chip
3) workaround bug of some BCM570x chips which cause spurious "link up" messages
4) fix bug: some BCM570x chips was unable to detect link state changes after
ifconfig down/up sequence until any 'non-link related' interrupt generated.
(this happened due to pending internal link state attention which blocked
interrupt generation)
Approved by: glebius (mentor)
MFC after: 1 week
Revision Changes Path
1.113 +101 -60 src/sys/dev/bge/if_bge.c
scottl 2006-01-14 17:42:22 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bgereg.h
Log:
Don't base the number of jumbo segments on page size, instead base it on the
fact that jumbo desriptors are defined to have 3 segments.
Found by: Coverity Prevent(tm)
Revision Changes Path
1.43 +1 -1 src/sys/dev/bge/if_bgereg.h
oleg 2006-01-17 23:01:58 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c if_bgereg.h
Log:
- Count packets discarded by RX/TX MAC (cause of FIFO overflow, etc)
as input/output interface errors.
- Keep values of rx/tx discards & tx collisions inside struct bge_softc.
So we can keep statistic across ifconfig down/up runs (cause bringing
bge up will reset chip).
Approved by: glebius (mentor)
MFC after: 1 week
Revision Changes Path
1.114 +30 -29 src/sys/dev/bge/if_bge.c
1.44 +3 -0 src/sys/dev/bge/if_bgereg.h
glebius 2006-01-18 14:31:21 UTC
FreeBSD src repository
Modified files:
sys/dev/bge if_bge.c if_bgereg.h
Log:
Be ready to a case when not a constant number of segments is returned
by bus_dmamap_load_mbuf_sg() on jumbo buffer allocation.
Reviewed by: scottl, gallatin
Revision Changes Path
1.115 +22 -12 src/sys/dev/bge/if_bge.c
1.45 +1 -1 src/sys/dev/bge/if_bgereg.h
More information about the freebsd-stable
mailing list