On 28.03.2011 18:13, Marc Kleine-Budde wrote: > On 03/28/2011 05:55 PM, Wolfgang Grandegger wrote: >>> BTW: I figured out why poll() wakes you up but the next write will fail >>> with -ENOBUFS again. >> >> Ah, I'm curious? I also did realize that poll does burn CPU cycles >> (instead of waiting). > > The poll callback checks if the used memory is less than the half of per > socket snd buffer (IIRC ~60K). See: > > datagram_poll (http://lxr.linux.no/linux+v2.6.38/net/core/datagram.c#L737) > sock_writeable (http://lxr.linux.no/linux+v2.6.38/include/net/sock.h#L1618) > > Because the size of a can frame (+the skb overhead) is much less then > the ethernet frame (+overhead) the default value for the snd buffer is > too big for can. > > We get the -ENOBUF from write() if the tx_queue_len (default 10) is > exceeded. > > http://lxr.linux.no/linux+v2.6.38/drivers/net/can/dev.c#L435 > http://lxr.linux.no/linux+v2.6.38/net/can/af_can.c#L268 >
What would be your suggestion? Decreasing the socket send buffer for CAN by default? Regards, Oliver _______________________________________________ Socketcan-users mailing list [email protected] https://lists.berlios.de/mailman/listinfo/socketcan-users
