I've inserted code to print some values which show the differences between specifying 4096 or 8192 for MSK_STAT_ALIGN. In both cases the status buffer has length 0x4000 (8x2048=16K) but the alignments are different as expected, respectively start addresses 0x5c3b000 or 0xbdc2c000.
The following values were output from functions msk_status_dma_alloc(), msk_dmamap_cb() and msk_handle_events().
The "Break #n" refer to breaks in msk_handle_events(). "#1" occurs if ((control & HW_OWNER) == 0), "#5" is OP_RXSTAT and "#6" is OP_TXINDEXLE.
The first output is for MSK_STAT_ALIGN=8192. It continues normally. Although not shown here, it reaches cons=2047 then cons=0 as expected.
The second output is for MSK_STAT_ALIGN=4096. Although there can be isolated occurences of "Break #1" (e.g. cons=196) (?are these to be expected?), it continues normally until cons=512. At this point it continually invokes the "#1" block because the msk_control from msk_stat_ring[512] is always zero and the network hangs immediately. This suggests the Yukon Ultra 2 88E8057 can't access the next 4096 memory block, but why not?
Please let me know if any further information would be helpful.
------------ Start of MSK_STAT_ALIGN=8192 output -----------------------------
mskc0: <Marvell Yukon 88E8057 Gigabit Ethernet> mem 0xfa000000-0xfa003fff irq 19 at device 0.0 on pci6
mskc0: Successful creation of DMA tag
mskc0: sc->msk_stat_count=2048
mskc0: stat_sz=16384
mskc0: sc->msk_stat_tag=0xfffff800050b99a0
mskc0: Successful allocation of DMA'able memory for status ring
mskc0: sc->msk_stat_map=0xfffff800050b99a8
msk_dmamap_cb (stat): nseg=1
msk_dmamap_cb (stat): error=0
msk_dmamap_cb (stat): segs[0].ds_addr=
3183656960=0xbdc2c000
msk_dmamap_cb (stat): segs[0].ds_len=16384=0x4000
mskc0: Successful load of DMA'able memory for status ring
mskc0: sc->msk_stat_ring_paddr=
3183656960=0xbdc2c000
msk0: <Marvell Technology Group Ltd. Yukon Ultra 2 Id 0xba Rev 0x00> on mskc0
msk0: Ethernet address: 00:13:77:e9:df:eb
miibus0: <MII bus> on msk0
e1000phy0: <Marvell 88E1149 Gigabit PHY> PHY 0 on miibus0
e1000phy0: none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto, auto-flow
...
mskc0: msk_handle_events: Break #6 cons=0 csrread=1
mskc0: msk_handle_events: Break #5 cons=1 csrread=2
mskc0: msk_handle_events: Break #6 cons=2 csrread=3
mskc0: msk_handle_events: Break #5 cons=3 csrread=5
mskc0: msk_handle_events: Break #6 cons=4 csrread=6
mskc0: msk_handle_events: Break #6 cons=5 csrread=6
mskc0: msk_handle_events: Break #6 cons=6 csrread=7
mskc0: msk_handle_events: Break #5 cons=7 csrread=8
mskc0: msk_handle_events: Break #5 cons=8 csrread=10
mskc0: msk_handle_events: Break #6 cons=9 csrread=10
...
mskc0: msk_handle_events: Break #5 cons=510 csrread=511
mskc0: msk_handle_events: Break #6 cons=511 csrread=512
mskc0: msk_handle_events: Break #5 cons=512 csrread=513
mskc0: msk_handle_events: Break #5 cons=513 csrread=514
mskc0: msk_handle_events: Break #6 cons=514 csrread=515
mskc0: msk_handle_events: Break #5 cons=515 csrread=516
...etc.
------------ Start of MSK_STAT_ALIGN=4096 output -----------------------------
mskc0: <Marvell Yukon 88E8057 Gigabit Ethernet> mem 0xfa000000-0xfa003fff irq 19 at device 0.0 on pci6
mskc0: Successful creation of DMA tag
mskc0: sc->msk_stat_count=2048
mskc0: stat_sz=16384
mskc0: sc->msk_stat_tag=0xfffff800050b99a0
mskc0: Successful allocation of DMA'able memory for status ring
mskc0: sc->msk_stat_map=0xfffff800050b99a8
msk_dmamap_cb (stat): nseg=1
msk_dmamap_cb (stat): error=0
msk_dmamap_cb (stat): segs[0].ds_addr=96710656=0x5c3b000
msk_dmamap_cb (stat): segs[0].ds_len=16384=0x4000
mskc0: Successful load of DMA'able memory for status ring
mskc0: sc->msk_stat_ring_paddr=96710656=0x5c3b000
msk0: <Marvell Technology Group Ltd. Yukon Ultra 2 Id 0xba Rev 0x00> on mskc0
msk0: Ethernet address: 00:13:77:e9:df:eb
miibus0: <MII bus> on msk0
e1000phy0: <Marvell 88E1149 Gigabit PHY> PHY 0 on miibus0
e1000phy0: none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto, auto-flow
...
mskc0: msk_handle_events: Break #5 cons=0 csrread=2
mskc0: msk_handle_events: Break #5 cons=1 csrread=2
mskc0: msk_handle_events: Break #5 cons=2 csrread=3
mskc0: msk_handle_events: Break #5 cons=3 csrread=4
mskc0: msk_handle_events: Break #5 cons=4 csrread=5
mskc0: msk_handle_events: Break #5 cons=5 csrread=7
mskc0: msk_handle_events: Break #5 cons=6 csrread=7
mskc0: msk_handle_events: Break #5 cons=7 csrread=9
mskc0: msk_handle_events: Break #5 cons=8 csrread=9
mskc0: msk_handle_events: Break #5 cons=9 csrread=10
mskc0: msk_handle_events: Break #5 cons=10 csrread=11
...
mskc0: msk_handle_events: Break #6 cons=194 csrread=197
mskc0: msk_handle_events: Break #5 cons=195 csrread=197
mskc0: msk_handle_events: Break #1 cons=196 csrread=197
mskc0: msk_handle_events: sd=0xfffffe011e23b620 sd->msk_control=1610612806 control=1610612806
mskc0: msk_handle_events: Break #5 cons=196 csrread=197
mskc0: msk_handle_events: Break #5 cons=197 csrread=198
...
mskc0: msk_handle_events: Break #5 cons=510 csrread=511
mskc0: msk_handle_events: Break #5 cons=511 csrread=512
mskc0: msk_handle_events: Break #1 cons=512 csrread=513
mskc0: msk_handle_events: sd=0xfffffe011e23c000 sd->msk_control=0 control=0
mskc0: msk_handle_events: Break #1 cons=512 csrread=513
mskc0: msk_handle_events: sd=0xfffffe011e23c000 sd->msk_control=0 control=0
mskc0: msk_handle_events: Break #1 cons=512 csrread=513
mskc0: msk_handle_events: sd=0xfffffe011e23c000 sd->msk_control=0 control=0
mskc0: msk_handle_events: Break #1 cons=512 csrread=513
mskc0: msk_handle_events: sd=0xfffffe011e23c000 sd->msk_control=0 control=0
mskc0: msk_handle_events: Break #1 cons=512 csrread=513
mskc0: msk_handle_events: sd=0xfffffe011e23c000 sd->msk_control=0 control=0
mskc0: msk_handle_events: Break #1 cons=512 csrread=513
mskc0: msk_handle_events: sd=0xfffffe011e23c000 sd->msk_control=0 control=0
mskc0: msk_handle_events: Break #1 cons=512 csrread=513
mskc0: msk_handle_events: sd=0xfffffe011e23c000 sd->msk_control=0 control=0
...
mskc0: msk_handle_events: Break #1 cons=512 csrread=519
mskc0: msk_handle_events: sd=0xfffffe011e23c000 sd->msk_control=0 control=0
mskc0: msk_handle_events: Break #1 cons=512 csrread=519
mskc0: msk_handle_events: sd=0xfffffe011e23c000 sd->msk_control=0 control=0
...etc
________________________________________
From:
owner-free...@freebsd.org [
owner-free...@freebsd.org] on behalf of Yonghyeon PYUN [
pyu...@gmail.com]
Sent: 13 April 2015 09:13
To: Gareth Wyn Roberts
Cc:
freebsd...@freebsd.org
Subject: Re: msk msk0 watchdog timeout freeze hang lock stop problem