Tool/software:
Hi TI expert,
I am running SYS/BIOS on DSP, using PRU-ETH for sending/receiving packets, and using IPC for communication with the A15 core(host running linux in a15). Under certain circumstances, the issue arises where PRU-ETH becomes unavailable: it can no longer send or receive any packets. However, when I called the function int32_t ICSS_EmacTxPacket(const ICSS_EmacTxArgument *txArg, void* userArg)
in the DSP program, I received a return value of 0. The function is located at "processor_sdk_rtos_am57xx_09_02_00_00/pdk_am57xx_1_0_21/packages/ti/drv/icss_emac/src/icss_emacDrv.c". Powering off and restarting the board does not resolve the issue.
One confirmed behavior that triggers the issue is executing a command while the host program and DSP program are running normally:
echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/unbind
echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/bind
The “BUG” is triggered.
I conducted the following tests:
```bash
root@SunGrow:~# ifconfig eth3 down
[ 4695.832319] prueth pruss2_eth eth3: Link is Down
[ 4695.863972] pruss 4b280000.pruss: unconfigured system_events[63-0] = 00600000,08a00000
[ 4695.879840] pruss 4b280000.pruss: unconfigured host_intr = 0x000002aa
[ 4695.892873] remoteproc remoteproc3: stopped remote processor 4b2b8000.pru
[ 4695.908040] net eth3: stopped
root@SunGrow:~# ifconfig eth3 up
[ 4708.931205] remoteproc remoteproc3: powering up 4b2b8000.pru
[ 4710.965959] remoteproc remoteproc3: loading /lib/firmware/ti-pruss/am57xx-pru1-prueth-fw.elf successfully! drivers/base/firmware_loader/main.c L349
[ 4710.993076] remoteproc remoteproc3: Booting fw image ti-pruss/am57xx-pru1-prueth-fw.elf, size 6952
[ 4711.012099] pruss 4b280000.pruss: configured system_events[63-0] = 00600000,08a00000
[ 4711.028863] pruss 4b280000.pruss: configured intr_channels = 0x0000032a host_intr = 0x000002aa
[ 4711.048084] remoteproc remoteproc3: remote processor 4b2b8000.pru is now up
[ 4711.076954] net eth3: started
[ 4711.080389] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready
[ 4711.089853] prueth pruss2_eth eth3: drivers/net/phy/phy.c L74 Link is Up-- - 100Mbps/Full - flow control off
[ 4711.114863] 8021q: adding VLAN 0 to HW filter on device eth3
[ 4711.126955] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready
root@SunGrow:~# ethtool -S eth3
NIC statistics:
txBcast: 0
txMcast: 0
txUcast: 0
txOctets: 0
rxBcast: 0
rxMcast: 0
rxUcast: 0
rxOctets: 0
tx64byte: 0
tx65_127byte: 0
tx128_255byte: 0
tx256_511byte: 0
tx512_1023byte: 0
tx1024byte: 0
rx64byte: 0
rx65_127byte: 0
rx128_255byte: 0
rx256_511byte: 0
rx512_1023byte: 0
rx1024byte: 0
lateColl: 0
singleColl: 0
multiColl: 0
excessColl: 0
rxMisAlignmentFrames: 0
stormPrevCounterBC: 0
stormPrevCounterMC: 0
stormPrevCounterUC: 0
macRxError: 1
SFDError: 0
defTx: 0
macTxError: 0
rxOverSizedFrames: 0
rxUnderSizedFrames: 0
rxCRCFrames: 0
droppedPackets: 0
txHWQOverFlow: 0
txHWQUnderFlow: 0
emacMulticastDropped: 0
emacVlanDropped: 0
```
Then I connected eth3 to the laptop's Ethernet port and used a tool to send packets to eth3. The Wireshark capture is as follows:
However, when using ethtool -S eth3
again, I got the same result.