[Cbe-oss-dev] PS3 stops receiving network packets
Akinobu Mita
mita at fixstars.com
Tue Jun 23 12:19:05 EST 2009
PS3 stops receiving any network packets after udp stress test.
I can reproduce the problem with v2.6.30 and several distro kernels
from 2.6.23 to 2.6.28 (Fedora, YDL)
This is the instruction to reproduce the problem.
Connect PS3 and PC with Ethernet crossover cable with 1000Mbit connection.
setup PS3:
1. yum install busybox-anaconda
2. create /etc/udhcpd.conf (*1)
3. reboot with runlevel 1
4. run
ifconfig lo 127.0.0.1 up
ifconfig eth0 192.168.222.100 up
/sbin/busybox.anaconda udhcpd
setup PC:
1. ifdown eth0
2. ifup eth0
3. ./udp-stress (*2)
A few seconds after running udp-stress command, PS3 doesn't respond any ping
commands from PC. PS3 kernel is still alive but /proc/interrupts for eth0
doesn't change. The only way to make the PS3 responsible again without
reboot is ping command from PS3 to PC.
(irqpoll boot option does not help)
(*1) dhcpd.conf
start 192.168.222.101
end 192.168.222.110
interface eth0
max_leases 10
opt dns 0.0.0.0
option subnet 255.255.255.0
opt router 0.0.0.0
option domain local
(*2) udp-stress.c
int main()
{
struct sockaddr_in addr;
int r;
char *buffer = malloc(1024*1024);
addr.sin_family = AF_INET;
addr.sin_port = htons(21347);
addr.sin_addr.s_addr = inet_addr("192.168.222.100");
int sock = socket(PF_INET, SOCK_DGRAM, 0);
if (sock < 0) {
perror("socket");
return 1;
}
while (1) {
int r = sendto(sock, buffer, 1, 0,
(struct sockaddr*)&addr, sizeof(addr));
if (r < 0) {
perror("sendto");
return 1;
}
}
return 1;
}
More information about the cbe-oss-dev
mailing list