Messages in this thread | | | From | Xie He <> | Date | Thu, 28 Jan 2021 14:06:58 -0800 | Subject | Re: [PATCH net] net: hdlc_x25: Use qdisc to queue outgoing LAPB frames |
| |
On Thu, Jan 28, 2021 at 11:47 AM Jakub Kicinski <kuba@kernel.org> wrote: > > Noob question - could you point at or provide a quick guide to layering > here? I take there is only one netdev, and something maintains an > internal queue which is not stopped when HW driver stops the qdisc?
Yes, there is only one netdev. The LAPB module (net/lapb/) (which is used as a library by the netdev driver - hdlc_x25.c) is maintaining an internal queue which is not stopped when the HW driver stops the qdisc.
The queue is "write_queue" in "struct lapb_cb" in "include/net/lapb.h". The code that takes skbs out of the queue and feeds them to lower layers for transmission is at the "lapb_kick" function in "net/lapb/lapb_out.c".
The layering is like this:
Upper layer (Layer 3) (net/x25/ or net/packet/)
^ | L3 packets (with control info) v
The netdev driver (hdlc_x25.c)
^ | L3 packets v
The LAPB Module (net/lapb/)
^ | LAPB (L2) frames v
The netdev driver (hdlc_x25.c)
^ | LAPB (L2) frames | (also called HDLC frames in the context of the HDLC subsystem) v
HDLC core (hdlc.c)
^ | HDLC frames v
HDLC Hardware Driver
> Sounds like we're optimizing to prevent drops, and this was not > reported from production, rather thru code inspection. Ergo I think > net-next will be more appropriate here, unless Martin disagrees.
Yes, I have no problem in targeting net-next instead. Thanks!
| |