#4493 closed defect (fixed)

pppd broken if serial driver can't handle big data

Reported by: Christian Mauderer Owned by: Christian Mauderer
Priority: normal Milestone:
Component: network/libbsd Version: 6
Severity: normal Keywords:
Cc: Blocked By:
Blocking:

Description

The current implementation of ppp assumes (in ppp_tty.c:pppstart) that sending characters via the termios device write function will send buffers of any length. That is not true for most drivers.

Devices that can only send one character at a time won't work with that at all. Devices that have a big enough FIFO might work most of the time. Devices that use a DMA for transmitting might work without problems.

Change History (4)

comment:1 Changed on 02/11/22 at 07:37:27 by Christian Mauderer <christian.mauderer@…>

In 7b5948d4/rtems:

termios: Pass number of sent chars to l_start

At the moment the line discipline start function (l_start) has no
possibility to get feedback about the number of characters that have
been sent. This patch passes that information via an additional
parameter.

The change might trigger a warning on existing code because of a pointer
mismatch but it shouldn't break it. An existing function with the old
API will just ignore the additional parameter.

Update #4493

comment:2 Changed on 02/11/22 at 07:42:16 by Christian Mauderer <christian.mauderer@…>

In 0b883f3/rtems-libbsd:

ppp: Fix transmitting data

The pppstart expected that a driver write would somehow magically
process all data passed to the write function. Because ppp disables all
buffering that originally has been in termios, that assumption is not
true for all but polled drivers.

With this patch, the pppstart now gets and processes the feedback that
is returned from the driver via rtems_termios_dequeue_characters.

Update #4493

comment:3 Changed on 02/11/22 at 07:42:50 by Christian Mauderer <christian.mauderer@…>

Resolution: fixed
Status: assignedclosed

In 17ac5a8/rtems-libbsd:

ppp: Fix transmitting data

The pppstart expected that a driver write would somehow magically
process all data passed to the write function. Because ppp disables all
buffering that originally has been in termios, that assumption is not
true for all but polled drivers.

With this patch, the pppstart now gets and processes the feedback that
is returned from the driver via rtems_termios_dequeue_characters.

Fixes #4493

comment:4 Changed on 04/28/22 at 07:51:04 by Sebastian Huber <sebastian.huber@…>

In d56d8a6/rtems:

termios06: Fix warning

Update #4493.

Note: See TracTickets for help on using tickets.