| lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
|
Open Source and information security mailing list archives
| ||
|
Message-ID: <4D90CB17.4030205@hartkopp.net> Date: Mon, 28 Mar 2011 19:53:27 +0200 From: Oliver Hartkopp <socketcan@...tkopp.net> To: Marc Kleine-Budde <mkl@...gutronix.de> CC: Wolfgang Grandegger <wg@...ndegger.com>, socketcan-users@...ts.berlios.de, Netdev@...r.kernel.org Subject: Re: poll broken (for can) 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 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists