[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