Discussion:
write: No buffer space available
Michael Thénault
2013-03-07 09:55:08 UTC
Permalink
hello,

I'm working on a arm system with the 2.6.38.8 kernel.
When I try to send can frames (with cansend, cangen or sockets) the tx
queue is getting full and then i get this error :

write: No buffer space available

I've been monitoring the CAN bus with an oscilloscope and nothing
seems to happen.
I saw a thread with the similar problem, and there was some problem
with the one-shot mode. This mode doesn't work with me :

# ip link set can0 up type can one-shot on
RTNETLINK answers: Operation not supported

here are some details :

# ip -details -statistics link show can0
4: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UNKNOWN qlen 10
link/can
can state ERROR-PASSIVE restart-ms 0
bitrate 125000 sample-point 0.875
tq 500 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
clock 8000000
re-started bus-errors arbit-lost error-warn error-pass bus-off
0 0 0 4 4 0
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 3 3 0 0

what am i doing wrong ?
Thank you in advance for your help
--
To unsubscribe from this list: send the line "unsubscribe linux-can" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Oliver Hartkopp
2013-03-07 16:36:27 UTC
Permalink
Hello Michael,

there are more than one threads handling the "no buffer space" question=
:-)

Usually there is no correct CAN network attached to the CAN interface, =
means:

- there is a least a second CAN node which can acknowledge the sent CAN=
frames
- the bitrate is identical for all CAN nodes
- the CAN bus is terminated properly (with 2x 120 =3D 60 Ohms)

If you have a working CAN network try to attach your Linux box and read=
the
data from the working environment first.

So you can be sure, that the bitrate settings and terminations are corr=
ect.

Regards,
Oliver
Post by Michael Thénault
hello,
=20
I'm working on a arm system with the 2.6.38.8 kernel.
When I try to send can frames (with cansend, cangen or sockets) the t=
x
Post by Michael Thénault
=20
write: No buffer space available
=20
I've been monitoring the CAN bus with an oscilloscope and nothing
seems to happen.
I saw a thread with the similar problem, and there was some problem
=20
# ip link set can0 up type can one-shot on
RTNETLINK answers: Operation not supported
=20
=20
# ip -details -statistics link show can0
4: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UNKNO=
WN qlen 10
Post by Michael Thénault
link/can
can state ERROR-PASSIVE restart-ms 0
bitrate 125000 sample-point 0.875
tq 500 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
clock 8000000
re-started bus-errors arbit-lost error-warn error-pass bus-off
0 0 0 4 4 0
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 3 3 0 0
=20
what am i doing wrong ?
Thank you in advance for your help
--
To unsubscribe from this list: send the line "unsubscribe linux-can" =
in
Post by Michael Thénault
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-can" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Michael Thénault
2013-03-08 10:24:43 UTC
Permalink
Hello,

Indeed after connecting the arm board to a termination, I'm able to
see traffic with the oscilloscope.
I noticed that after sending only one frame with cansend, I see
traffic all the time with the oscilloscope. I guess that the reason is
the lack of ACK frames coming from other nodes, which causes re-sends.

Thanks again,

Michael
Post by Oliver Hartkopp
Hello Michael,
there are more than one threads handling the "no buffer space" questi=
on :-)
Post by Oliver Hartkopp
Usually there is no correct CAN network attached to the CAN interface=
- there is a least a second CAN node which can acknowledge the sent C=
AN frames
Post by Oliver Hartkopp
- the bitrate is identical for all CAN nodes
- the CAN bus is terminated properly (with 2x 120 =3D 60 Ohms)
If you have a working CAN network try to attach your Linux box and re=
ad the
Post by Oliver Hartkopp
data from the working environment first.
So you can be sure, that the bitrate settings and terminations are co=
rrect.
Post by Oliver Hartkopp
Regards,
Oliver
Post by Michael Thénault
hello,
I'm working on a arm system with the 2.6.38.8 kernel.
When I try to send can frames (with cansend, cangen or sockets) the =
tx
Post by Oliver Hartkopp
Post by Michael Thénault
write: No buffer space available
I've been monitoring the CAN bus with an oscilloscope and nothing
seems to happen.
I saw a thread with the similar problem, and there was some problem
# ip link set can0 up type can one-shot on
RTNETLINK answers: Operation not supported
# ip -details -statistics link show can0
4: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UNKN=
OWN qlen 10
Post by Oliver Hartkopp
Post by Michael Thénault
link/can
can state ERROR-PASSIVE restart-ms 0
bitrate 125000 sample-point 0.875
tq 500 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
clock 8000000
re-started bus-errors arbit-lost error-warn error-pass bus-off
0 0 0 4 4 0
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 3 3 0 0
what am i doing wrong ?
Thank you in advance for your help
--
To unsubscribe from this list: send the line "unsubscribe linux-can"=
in
Post by Oliver Hartkopp
Post by Michael Thénault
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-can" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Max S.
2013-03-08 10:39:34 UTC
Permalink
Hello,
Post by Michael Thénault
Hello,
=20
Indeed after connecting the arm board to a termination, I'm able to
see traffic with the oscilloscope.
I noticed that after sending only one frame with cansend, I see
traffic all the time with the oscilloscope. I guess that the reason i=
s
Post by Michael Thénault
the lack of ACK frames coming from other nodes, which causes re-sends=
=2E

Yes. If there is no other node to ack the frame, the can controller wil=
l
resend the frame continuously. unless, i think, if you set it up to use
oneshot mode.

M.S.

--
To unsubscribe from this list: send the line "unsubscribe linux-can" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Loading...