\doxysection{LAPD implementation common part}
\label{group__lapd}\index{LAPD implementation common part@{LAPD implementation common part}}


Osmocom LAPD core, used for Q.\+921, LAPDm and others.  


\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item 
file \textbf{ lapd\+\_\+core.\+h}
\begin{DoxyCompactList}\small\item\em primitive related stuff \end{DoxyCompactList}\item 
file \textbf{ lapd\+\_\+core.\+c}
\begin{DoxyCompactList}\small\item\em LAPD core implementation. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ mdl\+\_\+error\+\_\+ind\+\_\+param}
\begin{DoxyCompactList}\small\item\em for MDL-\/\+ERROR.\+ind \end{DoxyCompactList}\item 
struct \textbf{ dl\+\_\+rel\+\_\+req\+\_\+param}
\begin{DoxyCompactList}\small\item\em for DL-\/\+REL.\+req \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+dlsap\+\_\+prim}
\begin{DoxyCompactList}\small\item\em primitive header for LAPD DL-\/\+SAP primitives \end{DoxyCompactList}\item 
struct \textbf{ lapd\+\_\+msg\+\_\+ctx}
\begin{DoxyCompactList}\small\item\em LAPD message context. \end{DoxyCompactList}\item 
struct \textbf{ lapd\+\_\+cr\+\_\+ent}
\item 
struct \textbf{ lapd\+\_\+history}
\item 
struct \textbf{ lapd\+\_\+datalink}
\begin{DoxyCompactList}\small\item\em LAPD datalink. \end{DoxyCompactList}\item 
struct \textbf{ l2downstate}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ LOGDL}(dl,  \textbf{ level},  fmt,  args...)~ \textbf{ LOGP}(\textbf{ DLLAPD}, \textbf{ level}, \char`\"{}(\%s) \char`\"{}  fmt, (dl)-\/$>$\textbf{ name}, \#\# args)
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+T200\+\_\+\+EXPIRED}~0x01
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+REEST\+\_\+\+REQ}~0x02
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+UA\+\_\+\+RESP}~0x03
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+DM\+\_\+\+RESP}~0x04
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+DM\+\_\+\+RESP\+\_\+\+MF}~0x05
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+SPRV\+\_\+\+RESP}~0x06
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+SEQ\+\_\+\+ERR}~0x07
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UFRM\+\_\+\+INC\+\_\+\+PARAM}~0x08
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+SFRM\+\_\+\+INC\+\_\+\+PARAM}~0x09
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+IFRM\+\_\+\+INC\+\_\+\+MBITS}~0x0a
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+IFRM\+\_\+\+INC\+\_\+\+LEN}~0x0b
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL}~0x0c
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+SABM\+\_\+\+MF}~0x0d
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+SABM\+\_\+\+INFO\+\_\+\+NOTALL}~0x0e
\item 
\#define \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRMR}~0x0f
\item 
\#define \textbf{ LAPD\+\_\+\+F\+\_\+\+RTS}~0x0001
\begin{DoxyCompactList}\small\item\em lapd\+\_\+flags \end{DoxyCompactList}\item 
\#define \textbf{ LAPD\+\_\+\+F\+\_\+\+DROP\+\_\+2\+ND\+\_\+\+REJ}~0x0002
\item 
\#define \textbf{ LAPD\+\_\+\+U\+\_\+\+SABM}~0x7
\item 
\#define \textbf{ LAPD\+\_\+\+U\+\_\+\+SABME}~0xf
\item 
\#define \textbf{ LAPD\+\_\+\+U\+\_\+\+DM}~0x3
\item 
\#define \textbf{ LAPD\+\_\+\+U\+\_\+\+UI}~0x0
\item 
\#define \textbf{ LAPD\+\_\+\+U\+\_\+\+DISC}~0x8
\item 
\#define \textbf{ LAPD\+\_\+\+U\+\_\+\+UA}~0xC
\item 
\#define \textbf{ LAPD\+\_\+\+U\+\_\+\+FRMR}~0x11
\item 
\#define \textbf{ LAPD\+\_\+\+S\+\_\+\+RR}~0x0
\item 
\#define \textbf{ LAPD\+\_\+\+S\+\_\+\+RNR}~0x1
\item 
\#define \textbf{ LAPD\+\_\+\+S\+\_\+\+REJ}~0x2
\item 
\#define \textbf{ CR\+\_\+\+USER2\+NET\+\_\+\+CMD}~0
\item 
\#define \textbf{ CR\+\_\+\+USER2\+NET\+\_\+\+RESP}~1
\item 
\#define \textbf{ CR\+\_\+\+NET2\+USER\+\_\+\+CMD}~1
\item 
\#define \textbf{ CR\+\_\+\+NET2\+USER\+\_\+\+RESP}~0
\item 
\#define \textbf{ LAPD\+\_\+\+HEADROOM}~56
\item 
\#define \textbf{ LAPD\+\_\+\+TAILROOM}~16
\item 
\#define \textbf{ SBIT}(a)~(1 $<$$<$ a)
\item 
\#define \textbf{ ALL\+\_\+\+STATES}~0xffffffff
\item 
\#define \textbf{ L2\+DOWNSLLEN}~ (sizeof(\textbf{ l2downstatelist}) / sizeof(struct \textbf{ l2downstate}))
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ osmo\+\_\+dl\+\_\+prim} \{ \newline
\textbf{ PRIM\+\_\+\+DL\+\_\+\+UNIT\+\_\+\+DATA}
, \newline
\textbf{ PRIM\+\_\+\+DL\+\_\+\+DATA}
, \newline
\textbf{ PRIM\+\_\+\+DL\+\_\+\+EST}
, \newline
\textbf{ PRIM\+\_\+\+DL\+\_\+\+REL}
, \newline
\textbf{ PRIM\+\_\+\+DL\+\_\+\+SUSP}
, \newline
\textbf{ PRIM\+\_\+\+DL\+\_\+\+RES}
, \newline
\textbf{ PRIM\+\_\+\+DL\+\_\+\+RECON}
, \newline
\textbf{ PRIM\+\_\+\+MDL\+\_\+\+ERROR}
 \}
\begin{DoxyCompactList}\small\item\em LAPD related primitives (L2$<$-\/$>$L3 SAP) \end{DoxyCompactList}\item 
enum \textbf{ lapd\+\_\+mode} \{ \newline
\textbf{ LAPD\+\_\+\+MODE\+\_\+\+USER}
, \newline
\textbf{ LAPD\+\_\+\+MODE\+\_\+\+NETWORK}
 \}
\begin{DoxyCompactList}\small\item\em LAPD mode/role. \end{DoxyCompactList}\item 
enum \textbf{ lapd\+\_\+state} \{ \newline
\textbf{ LAPD\+\_\+\+STATE\+\_\+\+NULL} = 0
, \newline
\textbf{ LAPD\+\_\+\+STATE\+\_\+\+TEI\+\_\+\+UNASS}
, \newline
\textbf{ LAPD\+\_\+\+STATE\+\_\+\+ASS\+\_\+\+TEI\+\_\+\+WAIT}
, \newline
\textbf{ LAPD\+\_\+\+STATE\+\_\+\+EST\+\_\+\+TEI\+\_\+\+WAIT}
, \newline
\textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}
, \newline
\textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}
, \newline
\textbf{ LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT}
, \newline
\textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}
, \newline
\textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}
 \}
\begin{DoxyCompactList}\small\item\em LAPD state (Figure B.\+2/Q.921) \end{DoxyCompactList}\item 
enum \textbf{ lapd\+\_\+t200\+\_\+rts} \{ \newline
\textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+OFF} = 0
, \newline
\textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+PENDING}
, \newline
\textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+RUNNING}
 \}
\begin{DoxyCompactList}\small\item\em LAPD T200 state in RTS mode. \end{DoxyCompactList}\item 
enum \textbf{ lapd\+\_\+format} \{ \newline
\textbf{ LAPD\+\_\+\+FORM\+\_\+\+UKN} = 0
, \newline
\textbf{ LAPD\+\_\+\+FORM\+\_\+I}
, \newline
\textbf{ LAPD\+\_\+\+FORM\+\_\+S}
, \newline
\textbf{ LAPD\+\_\+\+FORM\+\_\+U}
 \}
\begin{DoxyCompactList}\small\item\em LAPD message format (I / S / U) \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \textbf{ lapd\+\_\+dl\+\_\+init} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl, uint8\+\_\+t k, uint8\+\_\+t v\+\_\+range, int maxf)
\begin{DoxyCompactList}\small\item\em Initialize LAPD datalink instance and allocate history. \end{DoxyCompactList}\item 
void \textbf{ lapd\+\_\+dl\+\_\+init2} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl, uint8\+\_\+t k, uint8\+\_\+t v\+\_\+range, int maxf, const char $\ast$\textbf{ name})
\begin{DoxyCompactList}\small\item\em Initialize LAPD datalink instance and allocate history. \end{DoxyCompactList}\item 
void \textbf{ lapd\+\_\+dl\+\_\+set\+\_\+name} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl, const char $\ast$\textbf{ name})
\item 
void \textbf{ lapd\+\_\+dl\+\_\+exit} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
void \textbf{ lapd\+\_\+dl\+\_\+reset} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
int \textbf{ lapd\+\_\+dl\+\_\+set\+\_\+flags} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl, unsigned int \textbf{ flags})
\begin{DoxyCompactList}\small\item\em Set lapd\+\_\+flags to change behaviour. \end{DoxyCompactList}\item 
int \textbf{ lapd\+\_\+set\+\_\+mode} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl, enum \textbf{ lapd\+\_\+mode} mode)
\begin{DoxyCompactList}\small\item\em Set the lapdm\+\_\+mode of a LAPDm entity. \end{DoxyCompactList}\item 
int \textbf{ lapd\+\_\+ph\+\_\+data\+\_\+ind} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
int \textbf{ lapd\+\_\+ph\+\_\+rts\+\_\+ind} (struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\begin{DoxyCompactList}\small\item\em Enqueue next LAPD frame and run pending T200. \end{DoxyCompactList}\item 
int \textbf{ lapd\+\_\+recv\+\_\+dlsap} (struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$dp, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
int \textbf{ lapd\+\_\+t200\+\_\+timeout} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\begin{DoxyCompactList}\small\item\em Handle timeout condition of T200 in RTS mode. \end{DoxyCompactList}\item 
static void \textbf{ lapd\+\_\+t200\+\_\+cb} (void $\ast$\textbf{ data})
\item 
static void \textbf{ lapd\+\_\+t203\+\_\+cb} (void $\ast$\textbf{ data})
\item 
static int \textbf{ lapd\+\_\+send\+\_\+i} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl, int line, bool rts)
\item 
static int \textbf{ lapd\+\_\+est\+\_\+req} (struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$dp, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
struct \textbf{ msgb} $\ast$ \textbf{ lapd\+\_\+msgb\+\_\+alloc} (int length, const char $\ast$\textbf{ name})
\item 
static uint8\+\_\+t \textbf{ do\+\_\+mod} (uint8\+\_\+t \textbf{ x}, uint8\+\_\+t m)
\item 
static uint8\+\_\+t \textbf{ inc\+\_\+mod} (uint8\+\_\+t \textbf{ x}, uint8\+\_\+t m)
\item 
static uint8\+\_\+t \textbf{ add\+\_\+mod} (uint8\+\_\+t \textbf{ x}, uint8\+\_\+t y, uint8\+\_\+t m)
\item 
static uint8\+\_\+t \textbf{ sub\+\_\+mod} (uint8\+\_\+t \textbf{ x}, uint8\+\_\+t y, uint8\+\_\+t m)
\item 
static void \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+send} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static void \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+hist} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static void \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx\+\_\+queue} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static void \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static const char $\ast$ \textbf{ lapd\+\_\+state\+\_\+name} (enum \textbf{ lapd\+\_\+state} state)
\item 
static void \textbf{ lapd\+\_\+start\+\_\+t200} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static void \textbf{ lapd\+\_\+start\+\_\+t203} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static void \textbf{ lapd\+\_\+stop\+\_\+t200} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static bool \textbf{ lapd\+\_\+is\+\_\+t200\+\_\+started} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static void \textbf{ lapd\+\_\+stop\+\_\+t203} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static void \textbf{ lapd\+\_\+dl\+\_\+newstate} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl, uint32\+\_\+t state)
\item 
static int \textbf{ send\+\_\+dl\+\_\+l3} (uint8\+\_\+t prim, uint8\+\_\+t op, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx, struct \textbf{ msgb} $\ast$msg)
\item 
static int \textbf{ send\+\_\+dl\+\_\+simple} (uint8\+\_\+t prim, uint8\+\_\+t op, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ mdl\+\_\+error} (uint8\+\_\+t cause, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+send\+\_\+ua} (struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx, uint8\+\_\+t \textbf{ len}, uint8\+\_\+t $\ast$\textbf{ data})
\item 
static int \textbf{ lapd\+\_\+send\+\_\+dm} (struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+send\+\_\+rr} (struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx, uint8\+\_\+t f\+\_\+bit, uint8\+\_\+t cmd)
\item 
static int \textbf{ lapd\+\_\+send\+\_\+rnr} (struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx, uint8\+\_\+t f\+\_\+bit, uint8\+\_\+t cmd)
\item 
static int \textbf{ lapd\+\_\+send\+\_\+rej} (struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx, uint8\+\_\+t f\+\_\+bit)
\item 
static int \textbf{ lapd\+\_\+send\+\_\+resend} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static int \textbf{ lapd\+\_\+reestablish} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl)
\item 
static int \textbf{ lapd\+\_\+acknowledge} (struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ui} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+frmr} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rx\+\_\+u} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rx\+\_\+s} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rx\+\_\+i} (struct \textbf{ msgb} $\ast$msg, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+udata\+\_\+req} (struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$dp, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static void \textbf{ msg\+\_\+to\+\_\+tx\+\_\+hist} (struct \textbf{ lapd\+\_\+history} $\ast$tx\+\_\+hist, const struct \textbf{ msgb} $\ast$msg, int length, int more)
\item 
static void \textbf{ msg\+\_\+to\+\_\+tx\+\_\+hist0} (struct \textbf{ lapd\+\_\+datalink} $\ast$dl, const struct \textbf{ msgb} $\ast$msg)
\item 
static int \textbf{ lapd\+\_\+data\+\_\+req} (struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$dp, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+susp\+\_\+req} (struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$dp, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+res\+\_\+req} (struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$dp, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rel\+\_\+req} (struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$dp, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\item 
static int \textbf{ lapd\+\_\+rel\+\_\+req\+\_\+idle} (struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$dp, struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$lctx)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ value\+\_\+string} \textbf{ lapd\+\_\+state\+\_\+names} [$\,$]
\item 
void $\ast$ \textbf{ tall\+\_\+lapd\+\_\+ctx} = NULL
\item 
static const struct \textbf{ l2downstate} \textbf{ l2downstatelist} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Osmocom LAPD core, used for Q.\+921, LAPDm and others. 

Notes on Buffering\+: rcv\+\_\+buffer, tx\+\_\+queue, tx\+\_\+hist, send\+\_\+buffer, send\+\_\+queue

RX data is stored in the rcv\+\_\+buffer (pointer). If the message is complete, it is removed from rcv\+\_\+buffer pointer and forwarded to L3. If the RX data is received while there is an incomplete rcv\+\_\+buffer, it is appended to it.

TX data is stored in the send\+\_\+queue first. When transmitting a frame, the first message in the send\+\_\+queue is moved to the send\+\_\+buffer. There it resides until all fragments are acknowledged. Fragments to be sent by I frames are stored in the tx\+\_\+hist buffer for resend, if required. Also the current fragment is copied into the tx\+\_\+queue. There it resides until it is forwarded to layer 1.

In case we have SAPI 0, we only have a window size of 1, so the unack-\/ nowledged message resides always in the send\+\_\+buffer. In case of a suspend, it can be written back to the first position of the send\+\_\+queue.

The layer 1 normally sends a PH-\/\+READY-\/\+TO-\/\+SEND. But because we use asynchronous transfer between layer 1 and layer 2 (serial link), we must send a frame before layer 1 reaches the right timeslot to send it. So we move the tx\+\_\+queue to layer 1 when there is not already a pending frame, and wait until acknowledge after the frame has been sent. If we receive an acknowledge, we can send the next frame from the buffer, if any.

The moving of tx\+\_\+queue to layer 1 may also trigger T200, if desired. Also it will trigger next I frame, if possible.

T203 is optional. It will be stated when entering MF EST state. It will also be started when I or S frame is received in that state . It will be restarted in the \doxyref{lapd\+\_\+acknowledge()}{p.}{group__lapd_gaa0e9c76715b4ba888499bf3ab248a206} function, in case outstanding frames will not trigger T200. It will be stoped, when T200 is started in MF EST state. It will also be stoped when leaving MF EST state. 

\doxysubsection{Macro Definition Documentation}
\mbox{\label{group__lapd_ga7bee140072bc0b34f7d3279dc8786646}} 
\index{LAPD implementation common part@{LAPD implementation common part}!ALL\_STATES@{ALL\_STATES}}
\index{ALL\_STATES@{ALL\_STATES}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{ALL\_STATES}
{\footnotesize\ttfamily \#define ALL\+\_\+\+STATES~0xffffffff}

\mbox{\label{group__lapd_ga017a6f27f646617e375fcc30d6d23a87}} 
\index{LAPD implementation common part@{LAPD implementation common part}!CR\_NET2USER\_CMD@{CR\_NET2USER\_CMD}}
\index{CR\_NET2USER\_CMD@{CR\_NET2USER\_CMD}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{CR\_NET2USER\_CMD}
{\footnotesize\ttfamily \#define CR\+\_\+\+NET2\+USER\+\_\+\+CMD~1}

\mbox{\label{group__lapd_ga9211a54abbec81e613bc1742f44f95ab}} 
\index{LAPD implementation common part@{LAPD implementation common part}!CR\_NET2USER\_RESP@{CR\_NET2USER\_RESP}}
\index{CR\_NET2USER\_RESP@{CR\_NET2USER\_RESP}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{CR\_NET2USER\_RESP}
{\footnotesize\ttfamily \#define CR\+\_\+\+NET2\+USER\+\_\+\+RESP~0}

\mbox{\label{group__lapd_gabe9c75a65f1b148ba406b4c800fc57ad}} 
\index{LAPD implementation common part@{LAPD implementation common part}!CR\_USER2NET\_CMD@{CR\_USER2NET\_CMD}}
\index{CR\_USER2NET\_CMD@{CR\_USER2NET\_CMD}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{CR\_USER2NET\_CMD}
{\footnotesize\ttfamily \#define CR\+\_\+\+USER2\+NET\+\_\+\+CMD~0}

\mbox{\label{group__lapd_ga238a2a92d82e2b4bf7038762c912d845}} 
\index{LAPD implementation common part@{LAPD implementation common part}!CR\_USER2NET\_RESP@{CR\_USER2NET\_RESP}}
\index{CR\_USER2NET\_RESP@{CR\_USER2NET\_RESP}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{CR\_USER2NET\_RESP}
{\footnotesize\ttfamily \#define CR\+\_\+\+USER2\+NET\+\_\+\+RESP~1}

\mbox{\label{group__lapd_ga7d0c5fdc3e2e74b0589ee1bcf2b81efa}} 
\index{LAPD implementation common part@{LAPD implementation common part}!L2DOWNSLLEN@{L2DOWNSLLEN}}
\index{L2DOWNSLLEN@{L2DOWNSLLEN}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{L2DOWNSLLEN}
{\footnotesize\ttfamily \#define L2\+DOWNSLLEN~ (sizeof(\textbf{ l2downstatelist}) / sizeof(struct \textbf{ l2downstate}))}

\mbox{\label{group__lapd_gaaef31dd210e9238356f9d627aaa25f76}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_F\_DROP\_2ND\_REJ@{LAPD\_F\_DROP\_2ND\_REJ}}
\index{LAPD\_F\_DROP\_2ND\_REJ@{LAPD\_F\_DROP\_2ND\_REJ}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_F\_DROP\_2ND\_REJ}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+F\+\_\+\+DROP\+\_\+2\+ND\+\_\+\+REJ~0x0002}

\mbox{\label{group__lapd_gaf972bb0c34b5233555857f5a8172ef04}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_F\_RTS@{LAPD\_F\_RTS}}
\index{LAPD\_F\_RTS@{LAPD\_F\_RTS}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_F\_RTS}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+F\+\_\+\+RTS~0x0001}



lapd\+\_\+flags 

\mbox{\label{group__lapd_ga5a1bb8b2b4a48fc59ebc340a532d5546}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_HEADROOM@{LAPD\_HEADROOM}}
\index{LAPD\_HEADROOM@{LAPD\_HEADROOM}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_HEADROOM}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+HEADROOM~56}

\mbox{\label{group__lapd_ga79c9f35d0caa706cf07b9dc0ac94c118}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_S\_REJ@{LAPD\_S\_REJ}}
\index{LAPD\_S\_REJ@{LAPD\_S\_REJ}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_S\_REJ}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+S\+\_\+\+REJ~0x2}

\mbox{\label{group__lapd_ga2cfbd6b03f38670992a41445872eaf30}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_S\_RNR@{LAPD\_S\_RNR}}
\index{LAPD\_S\_RNR@{LAPD\_S\_RNR}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_S\_RNR}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+S\+\_\+\+RNR~0x1}

\mbox{\label{group__lapd_ga83f1ea5a90abd9da86c7b990a01ac3b8}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_S\_RR@{LAPD\_S\_RR}}
\index{LAPD\_S\_RR@{LAPD\_S\_RR}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_S\_RR}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+S\+\_\+\+RR~0x0}

\mbox{\label{group__lapd_ga901753811144237e6ffa9ff484b42478}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_TAILROOM@{LAPD\_TAILROOM}}
\index{LAPD\_TAILROOM@{LAPD\_TAILROOM}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_TAILROOM}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+TAILROOM~16}

\mbox{\label{group__lapd_gacaf5f68f77767e9ebbddf0274327557a}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_U\_DISC@{LAPD\_U\_DISC}}
\index{LAPD\_U\_DISC@{LAPD\_U\_DISC}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_U\_DISC}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+U\+\_\+\+DISC~0x8}

\mbox{\label{group__lapd_ga44054f2c153a52adf1528187dcbdd1db}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_U\_DM@{LAPD\_U\_DM}}
\index{LAPD\_U\_DM@{LAPD\_U\_DM}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_U\_DM}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+U\+\_\+\+DM~0x3}

\mbox{\label{group__lapd_ga4335394437c7744420f3e1f3c58a62cb}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_U\_FRMR@{LAPD\_U\_FRMR}}
\index{LAPD\_U\_FRMR@{LAPD\_U\_FRMR}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_U\_FRMR}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+U\+\_\+\+FRMR~0x11}

\mbox{\label{group__lapd_ga698cf60034810f0da992d1d1a596a21d}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_U\_SABM@{LAPD\_U\_SABM}}
\index{LAPD\_U\_SABM@{LAPD\_U\_SABM}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_U\_SABM}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+U\+\_\+\+SABM~0x7}

\mbox{\label{group__lapd_ga1e4716e1208342e3fe35129b1b6714f1}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_U\_SABME@{LAPD\_U\_SABME}}
\index{LAPD\_U\_SABME@{LAPD\_U\_SABME}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_U\_SABME}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+U\+\_\+\+SABME~0xf}

\mbox{\label{group__lapd_ga6ae4e0113f3dc236c86e3fa5926925e0}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_U\_UA@{LAPD\_U\_UA}}
\index{LAPD\_U\_UA@{LAPD\_U\_UA}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_U\_UA}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+U\+\_\+\+UA~0xC}

\mbox{\label{group__lapd_gaa3469d87582a2e8bd627c5c5285a5be3}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_U\_UI@{LAPD\_U\_UI}}
\index{LAPD\_U\_UI@{LAPD\_U\_UI}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LAPD\_U\_UI}
{\footnotesize\ttfamily \#define LAPD\+\_\+\+U\+\_\+\+UI~0x0}

\mbox{\label{group__lapd_ga1e5bcb8b02126a48ed0e764082966c61}} 
\index{LAPD implementation common part@{LAPD implementation common part}!LOGDL@{LOGDL}}
\index{LOGDL@{LOGDL}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{LOGDL}
{\footnotesize\ttfamily \#define LOGDL(\begin{DoxyParamCaption}\item[{}]{dl,  }\item[{}]{\textbf{ level},  }\item[{}]{fmt,  }\item[{}]{args... }\end{DoxyParamCaption})~ \textbf{ LOGP}(\textbf{ DLLAPD}, \textbf{ level}, \char`\"{}(\%s) \char`\"{}  fmt, (dl)-\/$>$\textbf{ name}, \#\# args)}

\mbox{\label{group__lapd_ga9bc7b8dfb852a4b80a0d994e9452bbf4}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_FRM\_UNIMPL@{MDL\_CAUSE\_FRM\_UNIMPL}}
\index{MDL\_CAUSE\_FRM\_UNIMPL@{MDL\_CAUSE\_FRM\_UNIMPL}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_FRM\_UNIMPL}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL~0x0c}

\mbox{\label{group__lapd_ga2612fa51229809663255c2a613118085}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_FRMR@{MDL\_CAUSE\_FRMR}}
\index{MDL\_CAUSE\_FRMR@{MDL\_CAUSE\_FRMR}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_FRMR}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+FRMR~0x0f}

\mbox{\label{group__lapd_ga05b591abc58d077fbda188124096633c}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_IFRM\_INC\_LEN@{MDL\_CAUSE\_IFRM\_INC\_LEN}}
\index{MDL\_CAUSE\_IFRM\_INC\_LEN@{MDL\_CAUSE\_IFRM\_INC\_LEN}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_IFRM\_INC\_LEN}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+IFRM\+\_\+\+INC\+\_\+\+LEN~0x0b}

\mbox{\label{group__lapd_ga84f2a8c03c15b7f06a353b1aff1d2d0c}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_IFRM\_INC\_MBITS@{MDL\_CAUSE\_IFRM\_INC\_MBITS}}
\index{MDL\_CAUSE\_IFRM\_INC\_MBITS@{MDL\_CAUSE\_IFRM\_INC\_MBITS}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_IFRM\_INC\_MBITS}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+IFRM\+\_\+\+INC\+\_\+\+MBITS~0x0a}

\mbox{\label{group__lapd_gab3553b7284fb2d31c8d3b44f773dc945}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_REEST\_REQ@{MDL\_CAUSE\_REEST\_REQ}}
\index{MDL\_CAUSE\_REEST\_REQ@{MDL\_CAUSE\_REEST\_REQ}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_REEST\_REQ}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+REEST\+\_\+\+REQ~0x02}

\mbox{\label{group__lapd_gafa9dd11446974b9677ef5bb5304b1329}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_SABM\_INFO\_NOTALL@{MDL\_CAUSE\_SABM\_INFO\_NOTALL}}
\index{MDL\_CAUSE\_SABM\_INFO\_NOTALL@{MDL\_CAUSE\_SABM\_INFO\_NOTALL}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_SABM\_INFO\_NOTALL}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+SABM\+\_\+\+INFO\+\_\+\+NOTALL~0x0e}

\mbox{\label{group__lapd_gaa85a9e951729f39cbc10ba5952d1a3c0}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_SABM\_MF@{MDL\_CAUSE\_SABM\_MF}}
\index{MDL\_CAUSE\_SABM\_MF@{MDL\_CAUSE\_SABM\_MF}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_SABM\_MF}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+SABM\+\_\+\+MF~0x0d}

\mbox{\label{group__lapd_ga846abd4742470b2df64c66b5ceddfd2e}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_SEQ\_ERR@{MDL\_CAUSE\_SEQ\_ERR}}
\index{MDL\_CAUSE\_SEQ\_ERR@{MDL\_CAUSE\_SEQ\_ERR}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_SEQ\_ERR}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+SEQ\+\_\+\+ERR~0x07}

\mbox{\label{group__lapd_gaddb7dd9e5f12bd0b012705a21f27ffdf}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_SFRM\_INC\_PARAM@{MDL\_CAUSE\_SFRM\_INC\_PARAM}}
\index{MDL\_CAUSE\_SFRM\_INC\_PARAM@{MDL\_CAUSE\_SFRM\_INC\_PARAM}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_SFRM\_INC\_PARAM}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+SFRM\+\_\+\+INC\+\_\+\+PARAM~0x09}

\mbox{\label{group__lapd_gaa556f7abcb90fc195c9eafdeb8e2fcde}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_T200\_EXPIRED@{MDL\_CAUSE\_T200\_EXPIRED}}
\index{MDL\_CAUSE\_T200\_EXPIRED@{MDL\_CAUSE\_T200\_EXPIRED}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_T200\_EXPIRED}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+T200\+\_\+\+EXPIRED~0x01}

\mbox{\label{group__lapd_gaa3b130754397643fe9db9eae6364784d}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_UFRM\_INC\_PARAM@{MDL\_CAUSE\_UFRM\_INC\_PARAM}}
\index{MDL\_CAUSE\_UFRM\_INC\_PARAM@{MDL\_CAUSE\_UFRM\_INC\_PARAM}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_UFRM\_INC\_PARAM}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+UFRM\+\_\+\+INC\+\_\+\+PARAM~0x08}

\mbox{\label{group__lapd_ga4f3cd051db62326e8c58a2a25c01c0ec}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_UNSOL\_DM\_RESP@{MDL\_CAUSE\_UNSOL\_DM\_RESP}}
\index{MDL\_CAUSE\_UNSOL\_DM\_RESP@{MDL\_CAUSE\_UNSOL\_DM\_RESP}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_UNSOL\_DM\_RESP}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+DM\+\_\+\+RESP~0x04}

\mbox{\label{group__lapd_ga5acba579f5467ff787e67c023a1831b8}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_UNSOL\_DM\_RESP\_MF@{MDL\_CAUSE\_UNSOL\_DM\_RESP\_MF}}
\index{MDL\_CAUSE\_UNSOL\_DM\_RESP\_MF@{MDL\_CAUSE\_UNSOL\_DM\_RESP\_MF}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_UNSOL\_DM\_RESP\_MF}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+DM\+\_\+\+RESP\+\_\+\+MF~0x05}

\mbox{\label{group__lapd_ga0c99f16dd4fa0c803b376992d737cab6}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_UNSOL\_SPRV\_RESP@{MDL\_CAUSE\_UNSOL\_SPRV\_RESP}}
\index{MDL\_CAUSE\_UNSOL\_SPRV\_RESP@{MDL\_CAUSE\_UNSOL\_SPRV\_RESP}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_UNSOL\_SPRV\_RESP}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+SPRV\+\_\+\+RESP~0x06}

\mbox{\label{group__lapd_ga6eb71c66fb0511f473ee264a9077db23}} 
\index{LAPD implementation common part@{LAPD implementation common part}!MDL\_CAUSE\_UNSOL\_UA\_RESP@{MDL\_CAUSE\_UNSOL\_UA\_RESP}}
\index{MDL\_CAUSE\_UNSOL\_UA\_RESP@{MDL\_CAUSE\_UNSOL\_UA\_RESP}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{MDL\_CAUSE\_UNSOL\_UA\_RESP}
{\footnotesize\ttfamily \#define MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+UA\+\_\+\+RESP~0x03}

\mbox{\label{group__lapd_ga644f05caa9937acc1409552d0b188765}} 
\index{LAPD implementation common part@{LAPD implementation common part}!SBIT@{SBIT}}
\index{SBIT@{SBIT}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{SBIT}
{\footnotesize\ttfamily \#define SBIT(\begin{DoxyParamCaption}\item[{}]{a }\end{DoxyParamCaption})~(1 $<$$<$ a)}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{group__lapd_gaeb83ddca9a2f9b9be8596a912d4b469c}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_format@{lapd\_format}}
\index{lapd\_format@{lapd\_format}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_format}
{\footnotesize\ttfamily enum \textbf{ lapd\+\_\+format}}



LAPD message format (I / S / U) 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_FORM\_UKN@{LAPD\_FORM\_UKN}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_FORM\_UKN@{LAPD\_FORM\_UKN}}}\mbox{\label{group__lapd_ggaeb83ddca9a2f9b9be8596a912d4b469caed64911266a82db8e641cb151c819504}} 
LAPD\+\_\+\+FORM\+\_\+\+UKN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_FORM\_I@{LAPD\_FORM\_I}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_FORM\_I@{LAPD\_FORM\_I}}}\mbox{\label{group__lapd_ggaeb83ddca9a2f9b9be8596a912d4b469ca3929d51c044f82ace34320140863db6f}} 
LAPD\+\_\+\+FORM\+\_\+I&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_FORM\_S@{LAPD\_FORM\_S}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_FORM\_S@{LAPD\_FORM\_S}}}\mbox{\label{group__lapd_ggaeb83ddca9a2f9b9be8596a912d4b469ca7f52682bd9035057b76ed2ad68fb2901}} 
LAPD\+\_\+\+FORM\+\_\+S&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_FORM\_U@{LAPD\_FORM\_U}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_FORM\_U@{LAPD\_FORM\_U}}}\mbox{\label{group__lapd_ggaeb83ddca9a2f9b9be8596a912d4b469ca061d0f96dc1d33cd9380a681adf3b671}} 
LAPD\+\_\+\+FORM\+\_\+U&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{group__lapd_ga5f32af06c0aaeb08e0db67cc6edbb11d}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_mode@{lapd\_mode}}
\index{lapd\_mode@{lapd\_mode}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_mode}
{\footnotesize\ttfamily enum \textbf{ lapd\+\_\+mode}}



LAPD mode/role. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_MODE\_USER@{LAPD\_MODE\_USER}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_MODE\_USER@{LAPD\_MODE\_USER}}}\mbox{\label{group__lapd_gga5f32af06c0aaeb08e0db67cc6edbb11da85b08315e366a4d7aa0e48658fd96d92}} 
LAPD\+\_\+\+MODE\+\_\+\+USER&behave like user \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_MODE\_NETWORK@{LAPD\_MODE\_NETWORK}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_MODE\_NETWORK@{LAPD\_MODE\_NETWORK}}}\mbox{\label{group__lapd_gga5f32af06c0aaeb08e0db67cc6edbb11dafe6dcb1663201ed654bd41fe220fdbab}} 
LAPD\+\_\+\+MODE\+\_\+\+NETWORK&behave like network \\
\hline

\end{DoxyEnumFields}
\mbox{\label{group__lapd_gafdd5fb2afc6689772904f14820dfd38c}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_state@{lapd\_state}}
\index{lapd\_state@{lapd\_state}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_state}
{\footnotesize\ttfamily enum \textbf{ lapd\+\_\+state}}



LAPD state (Figure B.\+2/Q.921) 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_STATE\_NULL@{LAPD\_STATE\_NULL}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_STATE\_NULL@{LAPD\_STATE\_NULL}}}\mbox{\label{group__lapd_ggafdd5fb2afc6689772904f14820dfd38caa2f924d1ee6b1b61f04a29a56de86050}} 
LAPD\+\_\+\+STATE\+\_\+\+NULL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_STATE\_TEI\_UNASS@{LAPD\_STATE\_TEI\_UNASS}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_STATE\_TEI\_UNASS@{LAPD\_STATE\_TEI\_UNASS}}}\mbox{\label{group__lapd_ggafdd5fb2afc6689772904f14820dfd38ca2fc5f95ad2eaa16130760e684948ad05}} 
LAPD\+\_\+\+STATE\+\_\+\+TEI\+\_\+\+UNASS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_STATE\_ASS\_TEI\_WAIT@{LAPD\_STATE\_ASS\_TEI\_WAIT}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_STATE\_ASS\_TEI\_WAIT@{LAPD\_STATE\_ASS\_TEI\_WAIT}}}\mbox{\label{group__lapd_ggafdd5fb2afc6689772904f14820dfd38ca7824d679b05062d7cdbaf0ff0c8fbf57}} 
LAPD\+\_\+\+STATE\+\_\+\+ASS\+\_\+\+TEI\+\_\+\+WAIT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_STATE\_EST\_TEI\_WAIT@{LAPD\_STATE\_EST\_TEI\_WAIT}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_STATE\_EST\_TEI\_WAIT@{LAPD\_STATE\_EST\_TEI\_WAIT}}}\mbox{\label{group__lapd_ggafdd5fb2afc6689772904f14820dfd38ca58e0c320b0535843ef4e168953627013}} 
LAPD\+\_\+\+STATE\+\_\+\+EST\+\_\+\+TEI\+\_\+\+WAIT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_STATE\_IDLE@{LAPD\_STATE\_IDLE}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_STATE\_IDLE@{LAPD\_STATE\_IDLE}}}\mbox{\label{group__lapd_ggafdd5fb2afc6689772904f14820dfd38cacf02b8f66598fbed8cc46249ee5c4057}} 
LAPD\+\_\+\+STATE\+\_\+\+IDLE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_STATE\_SABM\_SENT@{LAPD\_STATE\_SABM\_SENT}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_STATE\_SABM\_SENT@{LAPD\_STATE\_SABM\_SENT}}}\mbox{\label{group__lapd_ggafdd5fb2afc6689772904f14820dfd38ca23f3f70695ac948f4ab284bd9e7034ac}} 
LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_STATE\_DISC\_SENT@{LAPD\_STATE\_DISC\_SENT}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_STATE\_DISC\_SENT@{LAPD\_STATE\_DISC\_SENT}}}\mbox{\label{group__lapd_ggafdd5fb2afc6689772904f14820dfd38ca66a36501b7b9382e597f3416ee618227}} 
LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_STATE\_MF\_EST@{LAPD\_STATE\_MF\_EST}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_STATE\_MF\_EST@{LAPD\_STATE\_MF\_EST}}}\mbox{\label{group__lapd_ggafdd5fb2afc6689772904f14820dfd38ca4c33d4912c1858280a141f401f387e5e}} 
LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_STATE\_TIMER\_RECOV@{LAPD\_STATE\_TIMER\_RECOV}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_STATE\_TIMER\_RECOV@{LAPD\_STATE\_TIMER\_RECOV}}}\mbox{\label{group__lapd_ggafdd5fb2afc6689772904f14820dfd38cac0d86e497b0b565bfa3630cfaec71e02}} 
LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{group__lapd_ga2efcca5285aedee3c7c9f08624a25ccd}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_t200\_rts@{lapd\_t200\_rts}}
\index{lapd\_t200\_rts@{lapd\_t200\_rts}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_t200\_rts}
{\footnotesize\ttfamily enum \textbf{ lapd\+\_\+t200\+\_\+rts}}



LAPD T200 state in RTS mode. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_T200\_RTS\_OFF@{LAPD\_T200\_RTS\_OFF}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_T200\_RTS\_OFF@{LAPD\_T200\_RTS\_OFF}}}\mbox{\label{group__lapd_gga2efcca5285aedee3c7c9f08624a25ccda1ea82446658728253d07edb75fa724e6}} 
LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+OFF&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_T200\_RTS\_PENDING@{LAPD\_T200\_RTS\_PENDING}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_T200\_RTS\_PENDING@{LAPD\_T200\_RTS\_PENDING}}}\mbox{\label{group__lapd_gga2efcca5285aedee3c7c9f08624a25ccdadf052e9b68197d7180ff3690749fb031}} 
LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+PENDING&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{LAPD\_T200\_RTS\_RUNNING@{LAPD\_T200\_RTS\_RUNNING}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!LAPD\_T200\_RTS\_RUNNING@{LAPD\_T200\_RTS\_RUNNING}}}\mbox{\label{group__lapd_gga2efcca5285aedee3c7c9f08624a25ccdaf09faa47247f37ed9b92974615dda303}} 
LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+RUNNING&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{group__lapd_gafc677d9832c64e4d5f2adcae81838c24}} 
\index{LAPD implementation common part@{LAPD implementation common part}!osmo\_dl\_prim@{osmo\_dl\_prim}}
\index{osmo\_dl\_prim@{osmo\_dl\_prim}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{osmo\_dl\_prim}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+dl\+\_\+prim}}



LAPD related primitives (L2$<$-\/$>$L3 SAP) 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_DL\_UNIT\_DATA@{PRIM\_DL\_UNIT\_DATA}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!PRIM\_DL\_UNIT\_DATA@{PRIM\_DL\_UNIT\_DATA}}}\mbox{\label{group__lapd_ggafc677d9832c64e4d5f2adcae81838c24a8bb08cd1c71d1439ab8e24ae9a410218}} 
PRIM\+\_\+\+DL\+\_\+\+UNIT\+\_\+\+DATA&DL-\/\+UNIT-\/\+DATA. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_DL\_DATA@{PRIM\_DL\_DATA}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!PRIM\_DL\_DATA@{PRIM\_DL\_DATA}}}\mbox{\label{group__lapd_ggafc677d9832c64e4d5f2adcae81838c24a6ead20744fa50b541ba22430f7b5bc2c}} 
PRIM\+\_\+\+DL\+\_\+\+DATA&DL-\/\+DATA. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_DL\_EST@{PRIM\_DL\_EST}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!PRIM\_DL\_EST@{PRIM\_DL\_EST}}}\mbox{\label{group__lapd_ggafc677d9832c64e4d5f2adcae81838c24a68267b7b431c1b3f0df1d5366f750959}} 
PRIM\+\_\+\+DL\+\_\+\+EST&DL-\/\+ESTABLISH. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_DL\_REL@{PRIM\_DL\_REL}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!PRIM\_DL\_REL@{PRIM\_DL\_REL}}}\mbox{\label{group__lapd_ggafc677d9832c64e4d5f2adcae81838c24a02510b951d4ff7ff43e69d0eb71b88aa}} 
PRIM\+\_\+\+DL\+\_\+\+REL&DL-\/\+RLEEASE. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_DL\_SUSP@{PRIM\_DL\_SUSP}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!PRIM\_DL\_SUSP@{PRIM\_DL\_SUSP}}}\mbox{\label{group__lapd_ggafc677d9832c64e4d5f2adcae81838c24a5dfe58125bc9cc8af4de98545e9ec2ca}} 
PRIM\+\_\+\+DL\+\_\+\+SUSP&DL-\/\+SUSPEND. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_DL\_RES@{PRIM\_DL\_RES}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!PRIM\_DL\_RES@{PRIM\_DL\_RES}}}\mbox{\label{group__lapd_ggafc677d9832c64e4d5f2adcae81838c24a1a4223b6f0f8cfeb86ed3e6eb17d781b}} 
PRIM\+\_\+\+DL\+\_\+\+RES&DL-\/\+RESUME. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_DL\_RECON@{PRIM\_DL\_RECON}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!PRIM\_DL\_RECON@{PRIM\_DL\_RECON}}}\mbox{\label{group__lapd_ggafc677d9832c64e4d5f2adcae81838c24af2706c61518a6170b47eb8694562e898}} 
PRIM\+\_\+\+DL\+\_\+\+RECON&DL-\/\+RECONNECT. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_MDL\_ERROR@{PRIM\_MDL\_ERROR}!LAPD implementation common part@{LAPD implementation common part}}\index{LAPD implementation common part@{LAPD implementation common part}!PRIM\_MDL\_ERROR@{PRIM\_MDL\_ERROR}}}\mbox{\label{group__lapd_ggafc677d9832c64e4d5f2adcae81838c24acd385c13ecdb9566fc747a5e6d3b0bbe}} 
PRIM\+\_\+\+MDL\+\_\+\+ERROR&MDL-\/\+ERROR. \\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{group__lapd_gac18f323f5c96705bc0579ee688c6bc84}} 
\index{LAPD implementation common part@{LAPD implementation common part}!add\_mod@{add\_mod}}
\index{add\_mod@{add\_mod}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{add\_mod()}
{\footnotesize\ttfamily static uint8\+\_\+t add\+\_\+mod (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{x,  }\item[{uint8\+\_\+t}]{y,  }\item[{uint8\+\_\+t}]{m }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ x}.



Referenced by \textbf{ lapd\+\_\+send\+\_\+i()}.

\mbox{\label{group__lapd_ga49b3141e6398bab0e3824eb72cce1068}} 
\index{LAPD implementation common part@{LAPD implementation common part}!do\_mod@{do\_mod}}
\index{do\_mod@{do\_mod}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{do\_mod()}
{\footnotesize\ttfamily static uint8\+\_\+t do\+\_\+mod (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{x,  }\item[{uint8\+\_\+t}]{m }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ x}.



Referenced by \textbf{ lapd\+\_\+acknowledge()}, \textbf{ lapd\+\_\+send\+\_\+i()}, \textbf{ lapd\+\_\+send\+\_\+resend()}, and \textbf{ lapd\+\_\+t200\+\_\+cb()}.

\mbox{\label{group__lapd_ga1c3aa9c2afe607c1b843ae4fe30607c1}} 
\index{LAPD implementation common part@{LAPD implementation common part}!inc\_mod@{inc\_mod}}
\index{inc\_mod@{inc\_mod}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{inc\_mod()}
{\footnotesize\ttfamily static uint8\+\_\+t inc\+\_\+mod (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{x,  }\item[{uint8\+\_\+t}]{m }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ x}.



Referenced by \textbf{ lapd\+\_\+acknowledge()}, \textbf{ lapd\+\_\+rx\+\_\+i()}, and \textbf{ lapd\+\_\+send\+\_\+i()}.

\mbox{\label{group__lapd_gaa0e9c76715b4ba888499bf3ab248a206}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_acknowledge@{lapd\_acknowledge}}
\index{lapd\_acknowledge@{lapd\_acknowledge}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_acknowledge()}
{\footnotesize\ttfamily static int lapd\+\_\+acknowledge (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ do\+\_\+mod()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ inc\+\_\+mod()}, \textbf{ LAPD\+\_\+\+FORM\+\_\+S}, \textbf{ lapd\+\_\+is\+\_\+t200\+\_\+started()}, \textbf{ LAPD\+\_\+\+S\+\_\+\+REJ}, \textbf{ lapd\+\_\+start\+\_\+t200()}, \textbf{ lapd\+\_\+start\+\_\+t203()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ lapd\+\_\+stop\+\_\+t200()}, \textbf{ lapd\+\_\+stop\+\_\+t203()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+SEQ\+\_\+\+ERR}, \textbf{ lapd\+\_\+history\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+recv}, \textbf{ lapd\+\_\+datalink\+::range\+\_\+hist}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ sub\+\_\+mod()}, \textbf{ lapd\+\_\+datalink\+::t203\+\_\+sec}, \textbf{ lapd\+\_\+datalink\+::t203\+\_\+usec}, \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+ack}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+range}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+i()}, and \textbf{ lapd\+\_\+rx\+\_\+s()}.

\mbox{\label{group__lapd_ga469f1afee75db685a14e57ac8cd4ab17}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_data\_req@{lapd\_data\_req}}
\index{lapd\_data\_req@{lapd\_data\_req}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_data\_req()}
{\footnotesize\ttfamily static int lapd\+\_\+data\+\_\+req (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$}]{dp,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+send\+\_\+i()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+enqueue()}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+l3len()}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+queue}, and \textbf{ tall\+\_\+lapd\+\_\+ctx}.

\mbox{\label{group__lapd_ga85c56732f19723768044b788c698c999}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_exit@{lapd\_dl\_exit}}
\index{lapd\_dl\_exit@{lapd\_dl\_exit}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_exit()}
{\footnotesize\ttfamily void lapd\+\_\+dl\+\_\+exit (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})}



References \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ lapd\+\_\+dl\+\_\+reset()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+NULL}, \textbf{ lapd\+\_\+datalink\+::name}, and \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}.

\mbox{\label{group__lapd_ga7b46fc0c0382e6107dca921e5c9b4720}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_flush\_hist@{lapd\_dl\_flush\_hist}}
\index{lapd\_dl\_flush\_hist@{lapd\_dl\_flush\_hist}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_flush\_hist()}
{\footnotesize\ttfamily static void lapd\+\_\+dl\+\_\+flush\+\_\+hist (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+history\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ lapd\+\_\+datalink\+::range\+\_\+hist}, and \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx()}, \textbf{ lapd\+\_\+est\+\_\+req()}, \textbf{ lapd\+\_\+rel\+\_\+req()}, \textbf{ lapd\+\_\+res\+\_\+req()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}, and \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}.

\mbox{\label{group__lapd_ga60efc54735e5d90e510d5d9fba6f56d6}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_flush\_send@{lapd\_dl\_flush\_send}}
\index{lapd\_dl\_flush\_send@{lapd\_dl\_flush\_send}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_flush\_send()}
{\footnotesize\ttfamily static void lapd\+\_\+dl\+\_\+flush\+\_\+send (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ msgb\+\_\+dequeue()}, \textbf{ msgb\+\_\+free()}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+buffer}, and \textbf{ lapd\+\_\+datalink\+::send\+\_\+queue}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+reset()}, \textbf{ lapd\+\_\+est\+\_\+req()}, \textbf{ lapd\+\_\+rel\+\_\+req()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}, and \textbf{ lapd\+\_\+t200\+\_\+cb()}.

\mbox{\label{group__lapd_gae3299c125b70952d7fb116220c46e784}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_flush\_tx@{lapd\_dl\_flush\_tx}}
\index{lapd\_dl\_flush\_tx@{lapd\_dl\_flush\_tx}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_flush\_tx()}
{\footnotesize\ttfamily static void lapd\+\_\+dl\+\_\+flush\+\_\+tx (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+hist()}, and \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx\+\_\+queue()}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+reset()}, \textbf{ lapd\+\_\+rel\+\_\+req()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}, \textbf{ lapd\+\_\+susp\+\_\+req()}, and \textbf{ lapd\+\_\+t200\+\_\+cb()}.

\mbox{\label{group__lapd_ga02f3a056a8564444a33f106296d6c044}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_flush\_tx\_queue@{lapd\_dl\_flush\_tx\_queue}}
\index{lapd\_dl\_flush\_tx\_queue@{lapd\_dl\_flush\_tx\_queue}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_flush\_tx\_queue()}
{\footnotesize\ttfamily static void lapd\+\_\+dl\+\_\+flush\+\_\+tx\+\_\+queue (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ msgb\+\_\+dequeue()}, \textbf{ msgb\+\_\+free()}, and \textbf{ lapd\+\_\+datalink\+::tx\+\_\+queue}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx()}, and \textbf{ lapd\+\_\+rx\+\_\+s()}.

\mbox{\label{group__lapd_gae68405f59994f3405393dc63c0024704}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_init@{lapd\_dl\_init}}
\index{lapd\_dl\_init@{lapd\_dl\_init}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_init()}
{\footnotesize\ttfamily void lapd\+\_\+dl\+\_\+init (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl,  }\item[{uint8\+\_\+t}]{k,  }\item[{uint8\+\_\+t}]{v\+\_\+range,  }\item[{int}]{maxf }\end{DoxyParamCaption})}



Initialize LAPD datalink instance and allocate history. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em dl} & caller-\/allocated datalink structure \\
\hline
\mbox{\texttt{ in}}  & {\em k} & maximum number of unacknowledged frames \\
\hline
\mbox{\texttt{ in}}  & {\em v\+\_\+range} & range of sequence numbers \\
\hline
\mbox{\texttt{ in}}  & {\em maxf} & maximum frame size (after defragmentation) \\
\hline
\end{DoxyParams}


References \textbf{ lapd\+\_\+dl\+\_\+init2()}.

\mbox{\label{group__lapd_ga090a83d63477f4d5b591328f28051570}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_init2@{lapd\_dl\_init2}}
\index{lapd\_dl\_init2@{lapd\_dl\_init2}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_init2()}
{\footnotesize\ttfamily void lapd\+\_\+dl\+\_\+init2 (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl,  }\item[{uint8\+\_\+t}]{k,  }\item[{uint8\+\_\+t}]{v\+\_\+range,  }\item[{int}]{maxf,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



Initialize LAPD datalink instance and allocate history. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em dl} & caller-\/allocated datalink structure \\
\hline
\mbox{\texttt{ in}}  & {\em k} & maximum number of unacknowledged frames \\
\hline
\mbox{\texttt{ in}}  & {\em v\+\_\+range} & range of sequence numbers \\
\hline
\mbox{\texttt{ in}}  & {\em maxf} & maximum frame size (after defragmentation) \\
\hline
\mbox{\texttt{ in}}  & {\em name} & human-\/readable name for this LAPD datalink \\
\hline
\end{DoxyParams}


References \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ lapd\+\_\+datalink\+::k}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ lapd\+\_\+t200\+\_\+cb()}, \textbf{ lapd\+\_\+t203\+\_\+cb()}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ lapd\+\_\+datalink\+::maxf}, \textbf{ lapd\+\_\+datalink\+::n200}, \textbf{ lapd\+\_\+datalink\+::n200\+\_\+est\+\_\+rel}, \textbf{ name}, \textbf{ lapd\+\_\+datalink\+::name}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+timer\+\_\+setup()}, \textbf{ lapd\+\_\+datalink\+::range\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::reestablish}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+queue}, \textbf{ lapd\+\_\+datalink\+::t200}, \textbf{ lapd\+\_\+datalink\+::t200\+\_\+sec}, \textbf{ lapd\+\_\+datalink\+::t200\+\_\+usec}, \textbf{ lapd\+\_\+datalink\+::t203}, \textbf{ lapd\+\_\+datalink\+::t203\+\_\+sec}, \textbf{ lapd\+\_\+datalink\+::t203\+\_\+usec}, \textbf{ tall\+\_\+lapd\+\_\+ctx}, \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::tx\+\_\+queue}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+range}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+init()}.

\mbox{\label{group__lapd_gacd89f3694398f6e072448febb7c3e9d3}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_newstate@{lapd\_dl\_newstate}}
\index{lapd\_dl\_newstate@{lapd\_dl\_newstate}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_newstate()}
{\footnotesize\ttfamily static void lapd\+\_\+dl\+\_\+newstate (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl,  }\item[{uint32\+\_\+t}]{state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+datalink\+::cont\+\_\+res}, \textbf{ lapd\+\_\+start\+\_\+t203()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ lapd\+\_\+stop\+\_\+t203()}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ msgb\+\_\+free()}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ lapd\+\_\+datalink\+::t203\+\_\+sec}, and \textbf{ lapd\+\_\+datalink\+::t203\+\_\+usec}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+exit()}, \textbf{ lapd\+\_\+dl\+\_\+init2()}, \textbf{ lapd\+\_\+dl\+\_\+reset()}, \textbf{ lapd\+\_\+est\+\_\+req()}, \textbf{ lapd\+\_\+rel\+\_\+req()}, \textbf{ lapd\+\_\+res\+\_\+req()}, \textbf{ lapd\+\_\+rx\+\_\+s()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}, \textbf{ lapd\+\_\+t200\+\_\+cb()}, and \textbf{ lapd\+\_\+t203\+\_\+cb()}.

\mbox{\label{group__lapd_ga1e102b5839d9e26f4d903763df2c843f}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_reset@{lapd\_dl\_reset}}
\index{lapd\_dl\_reset@{lapd\_dl\_reset}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_reset()}
{\footnotesize\ttfamily void lapd\+\_\+dl\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})}



References \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+send()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ lapd\+\_\+stop\+\_\+t200()}, \textbf{ lapd\+\_\+stop\+\_\+t203()}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ msgb\+\_\+free()}, \textbf{ lapd\+\_\+datalink\+::rcv\+\_\+buffer}, and \textbf{ lapd\+\_\+datalink\+::state}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+exit()}.

\mbox{\label{group__lapd_ga1d7b88e6bb3e1863a0a8a3b4d0caa18c}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_set\_flags@{lapd\_dl\_set\_flags}}
\index{lapd\_dl\_set\_flags@{lapd\_dl\_set\_flags}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_set\_flags()}
{\footnotesize\ttfamily int lapd\+\_\+dl\+\_\+set\+\_\+flags (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl,  }\item[{unsigned int}]{flags }\end{DoxyParamCaption})}



Set lapd\+\_\+flags to change behaviour. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em dl} & \doxyref{lapd\+\_\+datalink}{p.}{structlapd__datalink} instance \\
\hline
\mbox{\texttt{ in}}  & {\em flags} & lapd\+\_\+flags \\
\hline
\end{DoxyParams}


References \textbf{ flags}, \textbf{ LAPD\+\_\+\+F\+\_\+\+RTS}, \textbf{ lapd\+\_\+datalink\+::lapd\+\_\+flags}, \textbf{ lapd\+\_\+is\+\_\+t200\+\_\+started()}, \textbf{ LOGDL}, and \textbf{ LOGL\+\_\+\+ERROR}.

\mbox{\label{group__lapd_ga927747fc403b7eeaac891c2bd291d53b}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_dl\_set\_name@{lapd\_dl\_set\_name}}
\index{lapd\_dl\_set\_name@{lapd\_dl\_set\_name}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_dl\_set\_name()}
{\footnotesize\ttfamily void lapd\+\_\+dl\+\_\+set\+\_\+name (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



References \textbf{ name}, \textbf{ lapd\+\_\+datalink\+::name}, \textbf{ osmo\+\_\+talloc\+\_\+replace\+\_\+string()}, and \textbf{ tall\+\_\+lapd\+\_\+ctx}.

\mbox{\label{group__lapd_gabb1fa227633fc37c5c14f4036da94a3c}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_est\_req@{lapd\_est\_req}}
\index{lapd\_est\_req@{lapd\_est\_req}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_est\_req()}
{\footnotesize\ttfamily static int lapd\+\_\+est\+\_\+req (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$}]{dp,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+hist()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+send()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ LAPD\+\_\+\+FORM\+\_\+U}, \textbf{ lapd\+\_\+start\+\_\+t200()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+U\+\_\+\+SABM}, \textbf{ LAPD\+\_\+\+U\+\_\+\+SABME}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ msgb\+::len}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msg\+\_\+to\+\_\+tx\+\_\+hist0()}, \textbf{ msgb\+\_\+free()}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ lapd\+\_\+datalink\+::own\+\_\+busy}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ lapd\+\_\+datalink\+::peer\+\_\+busy}, \textbf{ lapd\+\_\+datalink\+::rcv\+\_\+buffer}, \textbf{ lapd\+\_\+datalink\+::retrans\+\_\+ctr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}, \textbf{ lapd\+\_\+datalink\+::use\+\_\+sabme}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.



Referenced by \textbf{ lapd\+\_\+reestablish()}.

\mbox{\label{group__lapd_ga14b5e7da634ac67da3343196d31e603d}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_is\_t200\_started@{lapd\_is\_t200\_started}}
\index{lapd\_is\_t200\_started@{lapd\_is\_t200\_started}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_is\_t200\_started()}
{\footnotesize\ttfamily static bool lapd\+\_\+is\+\_\+t200\+\_\+started (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ LAPD\+\_\+\+F\+\_\+\+RTS}, \textbf{ lapd\+\_\+datalink\+::lapd\+\_\+flags}, \textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+OFF}, \textbf{ osmo\+\_\+timer\+\_\+pending()}, \textbf{ lapd\+\_\+datalink\+::t200}, and \textbf{ lapd\+\_\+datalink\+::t200\+\_\+rts}.



Referenced by \textbf{ lapd\+\_\+acknowledge()}, \textbf{ lapd\+\_\+dl\+\_\+set\+\_\+flags()}, and \textbf{ lapd\+\_\+send\+\_\+i()}.

\mbox{\label{group__lapd_ga08bd4eb549959f26968ba39bcdbf6a5b}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_msgb\_alloc@{lapd\_msgb\_alloc}}
\index{lapd\_msgb\_alloc@{lapd\_msgb\_alloc}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_msgb\_alloc()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ lapd\+\_\+msgb\+\_\+alloc (\begin{DoxyParamCaption}\item[{int}]{length,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



References \textbf{ LAPD\+\_\+\+HEADROOM}, \textbf{ LAPD\+\_\+\+TAILROOM}, \textbf{ msgb\+\_\+alloc\+\_\+headroom()}, and \textbf{ name}.



Referenced by \textbf{ lapd\+\_\+reestablish()}, \textbf{ lapd\+\_\+res\+\_\+req()}, \textbf{ lapd\+\_\+rx\+\_\+i()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}, \textbf{ lapd\+\_\+send\+\_\+dm()}, \textbf{ lapd\+\_\+send\+\_\+i()}, \textbf{ lapd\+\_\+send\+\_\+rej()}, \textbf{ lapd\+\_\+send\+\_\+resend()}, \textbf{ lapd\+\_\+send\+\_\+rnr()}, \textbf{ lapd\+\_\+send\+\_\+rr()}, \textbf{ lapd\+\_\+send\+\_\+ua()}, \textbf{ lapd\+\_\+t200\+\_\+cb()}, and \textbf{ msg\+\_\+to\+\_\+tx\+\_\+hist()}.

\mbox{\label{group__lapd_ga1c6e100333f9ca2aa92b9cdcdf9dfd45}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_ph\_data\_ind@{lapd\_ph\_data\_ind}}
\index{lapd\_ph\_data\_ind@{lapd\_ph\_data\_ind}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_ph\_data\_ind()}
{\footnotesize\ttfamily int lapd\+\_\+ph\+\_\+data\+\_\+ind (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ LAPD\+\_\+\+FORM\+\_\+I}, \textbf{ LAPD\+\_\+\+FORM\+\_\+S}, \textbf{ LAPD\+\_\+\+FORM\+\_\+U}, \textbf{ lapd\+\_\+rx\+\_\+i()}, \textbf{ lapd\+\_\+rx\+\_\+s()}, \textbf{ lapd\+\_\+rx\+\_\+u()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+NOTICE}, and \textbf{ msgb\+\_\+free()}.

\mbox{\label{group__lapd_gaf80bb2c46633f2b0bdd1b40295bfee3d}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_ph\_rts\_ind@{lapd\_ph\_rts\_ind}}
\index{lapd\_ph\_rts\_ind@{lapd\_ph\_rts\_ind}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_ph\_rts\_ind()}
{\footnotesize\ttfamily int lapd\+\_\+ph\+\_\+rts\+\_\+ind (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})}



Enqueue next LAPD frame and run pending T200. 

(Must be called when frame is ready to send.) The caller (LAPDm code) calls this function before it sends the next frame. If there is no frame in the TX queue, LAPD will enqueue next I-\/frame, if possible. If the T200 is pending, it is changed to running state. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em lctx} & LAPD context \\
\hline
\mbox{\texttt{ out}}  & {\em rc} & set to 1, if timer T200 state changed to running, set to 0, if not. \\
\hline
\end{DoxyParams}


References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+send\+\_\+i()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+PENDING}, \textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+RUNNING}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ llist\+\_\+empty()}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ lapd\+\_\+datalink\+::t200\+\_\+rts}, and \textbf{ lapd\+\_\+datalink\+::tx\+\_\+queue}.

\mbox{\label{group__lapd_ga3cde8dfdeb49733c405be32420d2f858}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_recv\_dlsap@{lapd\_recv\_dlsap}}
\index{lapd\_recv\_dlsap@{lapd\_recv\_dlsap}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_recv\_dlsap()}
{\footnotesize\ttfamily int lapd\+\_\+recv\+\_\+dlsap (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$}]{dp,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ L2\+DOWNSLLEN}, \textbf{ l2downstatelist}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ name}, \textbf{ l2downstate\+::op}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::operation}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ l2downstate\+::prim}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::primitive}, \textbf{ l2downstate\+::rout}, \textbf{ SBIT}, \textbf{ lapd\+\_\+datalink\+::state}, and \textbf{ l2downstate\+::states}.

\mbox{\label{group__lapd_ga73ec11b78e57053461bd35a628bce91b}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_reestablish@{lapd\_reestablish}}
\index{lapd\_reestablish@{lapd\_reestablish}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_reestablish()}
{\footnotesize\ttfamily static int lapd\+\_\+reestablish (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+est\+\_\+req()}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+EST}, and \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+frmr()}, and \textbf{ lapd\+\_\+t200\+\_\+cb()}.

\mbox{\label{group__lapd_gaa0a5443f1250b8f5885395552b23eadc}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rel\_req@{lapd\_rel\_req}}
\index{lapd\_rel\_req@{lapd\_rel\_req}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rel\_req()}
{\footnotesize\ttfamily static int lapd\+\_\+rel\+\_\+req (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$}]{dp,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+hist()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+send()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ LAPD\+\_\+\+FORM\+\_\+U}, \textbf{ lapd\+\_\+start\+\_\+t200()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ lapd\+\_\+stop\+\_\+t200()}, \textbf{ LAPD\+\_\+\+U\+\_\+\+DISC}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ dl\+\_\+rel\+\_\+req\+\_\+param\+::mode}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msg\+\_\+to\+\_\+tx\+\_\+hist0()}, \textbf{ msgb\+\_\+free()}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ lapd\+\_\+datalink\+::own\+\_\+busy}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ lapd\+\_\+datalink\+::peer\+\_\+busy}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+REL}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+CONFIRM}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::rel\+\_\+req}, \textbf{ lapd\+\_\+datalink\+::retrans\+\_\+ctr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, \textbf{ send\+\_\+dl\+\_\+simple()}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::u}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.

\mbox{\label{group__lapd_ga27048338bb332d9e2b85611429f1dc83}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rel\_req\_idle@{lapd\_rel\_req\_idle}}
\index{lapd\_rel\_req\_idle@{lapd\_rel\_req\_idle}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rel\_req\_idle()}
{\footnotesize\ttfamily static int lapd\+\_\+rel\+\_\+req\+\_\+idle (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$}]{dp,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+REL}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+CONFIRM}, and \textbf{ send\+\_\+dl\+\_\+simple()}.

\mbox{\label{group__lapd_ga543e9f737a5a74532163fccf692c0887}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_res\_req@{lapd\_res\_req}}
\index{lapd\_res\_req@{lapd\_res\_req}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_res\_req()}
{\footnotesize\ttfamily static int lapd\+\_\+res\+\_\+req (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$}]{dp,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ msgb\+::data}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ msgb\+::l3h}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+hist()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ LAPD\+\_\+\+FORM\+\_\+U}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ lapd\+\_\+start\+\_\+t200()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+U\+\_\+\+SABM}, \textbf{ LAPD\+\_\+\+U\+\_\+\+SABME}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ msgb\+::len}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msg\+\_\+to\+\_\+tx\+\_\+hist0()}, \textbf{ msgb\+\_\+free()}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ lapd\+\_\+datalink\+::own\+\_\+busy}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ lapd\+\_\+datalink\+::peer\+\_\+busy}, \textbf{ lapd\+\_\+datalink\+::rcv\+\_\+buffer}, \textbf{ lapd\+\_\+datalink\+::retrans\+\_\+ctr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+buffer}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+out}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}, \textbf{ lapd\+\_\+datalink\+::use\+\_\+sabme}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.

\mbox{\label{group__lapd_ga6ddd2fbe35ec9fc411576e56b94c1e10}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rx\_i@{lapd\_rx\_i}}
\index{lapd\_rx\_i@{lapd\_rx\_i}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rx\_i()}
{\footnotesize\ttfamily static int lapd\+\_\+rx\+\_\+i (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ msgb\+::data}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ inc\+\_\+mod()}, \textbf{ msgb\+::l3h}, \textbf{ lapd\+\_\+acknowledge()}, \textbf{ LAPD\+\_\+\+F\+\_\+\+DROP\+\_\+2\+ND\+\_\+\+REJ}, \textbf{ lapd\+\_\+datalink\+::lapd\+\_\+flags}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ lapd\+\_\+send\+\_\+dm()}, \textbf{ lapd\+\_\+send\+\_\+i()}, \textbf{ lapd\+\_\+send\+\_\+rej()}, \textbf{ lapd\+\_\+send\+\_\+rnr()}, \textbf{ lapd\+\_\+send\+\_\+rr()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+NULL}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ lapd\+\_\+datalink\+::maxf}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+IFRM\+\_\+\+INC\+\_\+\+LEN}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+IFRM\+\_\+\+INC\+\_\+\+MBITS}, \textbf{ mdl\+\_\+error()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+l3len()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+trim()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n201}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+send}, \textbf{ lapd\+\_\+datalink\+::own\+\_\+busy}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+DATA}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ lapd\+\_\+datalink\+::rcv\+\_\+buffer}, \textbf{ lapd\+\_\+datalink\+::rem2loc}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::sapi}, \textbf{ send\+\_\+dl\+\_\+l3()}, \textbf{ lapd\+\_\+datalink\+::seq\+\_\+err\+\_\+cond}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ lapd\+\_\+datalink\+::update\+\_\+pending\+\_\+frames}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+range}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+recv}.



Referenced by \textbf{ lapd\+\_\+ph\+\_\+data\+\_\+ind()}.

\mbox{\label{group__lapd_gaf02cf9cd67d2d69b970fdec71f757950}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rx\_s@{lapd\_rx\_s}}
\index{lapd\_rx\_s@{lapd\_rx\_s}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rx\_s()}
{\footnotesize\ttfamily static int lapd\+\_\+rx\+\_\+s (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+acknowledge()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx\+\_\+queue()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ LAPD\+\_\+\+S\+\_\+\+REJ}, \textbf{ LAPD\+\_\+\+S\+\_\+\+RNR}, \textbf{ LAPD\+\_\+\+S\+\_\+\+RR}, \textbf{ lapd\+\_\+send\+\_\+dm()}, \textbf{ lapd\+\_\+send\+\_\+i()}, \textbf{ lapd\+\_\+send\+\_\+rnr()}, \textbf{ lapd\+\_\+send\+\_\+rr()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ lapd\+\_\+stop\+\_\+t200()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+SFRM\+\_\+\+INC\+\_\+\+PARAM}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+SPRV\+\_\+\+RESP}, \textbf{ mdl\+\_\+error()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ msgb\+\_\+free()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+recv}, \textbf{ lapd\+\_\+datalink\+::own\+\_\+busy}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ lapd\+\_\+datalink\+::peer\+\_\+busy}, \textbf{ lapd\+\_\+datalink\+::rem2loc}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, \textbf{ lapd\+\_\+datalink\+::seq\+\_\+err\+\_\+cond}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+ack}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.



Referenced by \textbf{ lapd\+\_\+ph\+\_\+data\+\_\+ind()}.

\mbox{\label{group__lapd_ga9b8ab157836fba1ea3319fca85b02d59}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rx\_u@{lapd\_rx\_u}}
\index{lapd\_rx\_u@{lapd\_rx\_u}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rx\_u()}
{\footnotesize\ttfamily static int lapd\+\_\+rx\+\_\+u (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+frmr()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ui()}, \textbf{ LAPD\+\_\+\+U\+\_\+\+DISC}, \textbf{ LAPD\+\_\+\+U\+\_\+\+DM}, \textbf{ LAPD\+\_\+\+U\+\_\+\+FRMR}, \textbf{ LAPD\+\_\+\+U\+\_\+\+SABM}, \textbf{ LAPD\+\_\+\+U\+\_\+\+SABME}, \textbf{ LAPD\+\_\+\+U\+\_\+\+UA}, \textbf{ LAPD\+\_\+\+U\+\_\+\+UI}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL}, \textbf{ mdl\+\_\+error()}, \textbf{ msgb\+\_\+free()}, and \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}.



Referenced by \textbf{ lapd\+\_\+ph\+\_\+data\+\_\+ind()}.

\mbox{\label{group__lapd_ga4aa739d5c605822086ae1c193fe99d4d}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rx\_u\_disc@{lapd\_rx\_u\_disc}}
\index{lapd\_rx\_u\_disc@{lapd\_rx\_u\_disc}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rx\_u\_disc()}
{\footnotesize\ttfamily static int lapd\+\_\+rx\+\_\+u\+\_\+disc (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ msgb\+::l3h}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+send()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ lapd\+\_\+send\+\_\+dm()}, \textbf{ lapd\+\_\+send\+\_\+ua()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ lapd\+\_\+stop\+\_\+t200()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UFRM\+\_\+\+INC\+\_\+\+PARAM}, \textbf{ mdl\+\_\+error()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ msgb\+\_\+free()}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+REL}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+CONFIRM}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ lapd\+\_\+datalink\+::rem2loc}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, \textbf{ send\+\_\+dl\+\_\+simple()}, \textbf{ lapd\+\_\+datalink\+::seq\+\_\+err\+\_\+cond}, and \textbf{ lapd\+\_\+datalink\+::state}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+u()}.

\mbox{\label{group__lapd_ga07255af0f3dbd0331016fb9870b6071f}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rx\_u\_dm@{lapd\_rx\_u\_dm}}
\index{lapd\_rx\_u\_dm@{lapd\_rx\_u\_dm}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rx\_u\_dm()}
{\footnotesize\ttfamily static int lapd\+\_\+rx\+\_\+u\+\_\+dm (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+send()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ lapd\+\_\+reestablish()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ lapd\+\_\+stop\+\_\+t200()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+DM\+\_\+\+RESP}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+DM\+\_\+\+RESP\+\_\+\+MF}, \textbf{ mdl\+\_\+error()}, \textbf{ msgb\+\_\+free()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+REL}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+CONFIRM}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ lapd\+\_\+datalink\+::reestablish}, \textbf{ lapd\+\_\+datalink\+::rem2loc}, \textbf{ send\+\_\+dl\+\_\+simple()}, and \textbf{ lapd\+\_\+datalink\+::state}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+u()}.

\mbox{\label{group__lapd_ga65525fef2d9a04198299bef7e2e0c4ab}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rx\_u\_frmr@{lapd\_rx\_u\_frmr}}
\index{lapd\_rx\_u\_frmr@{lapd\_rx\_u\_frmr}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rx\_u\_frmr()}
{\footnotesize\ttfamily static int lapd\+\_\+rx\+\_\+u\+\_\+frmr (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+reestablish()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRMR}, \textbf{ mdl\+\_\+error()}, \textbf{ msgb\+\_\+free()}, and \textbf{ lapd\+\_\+datalink\+::reestablish}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+u()}.

\mbox{\label{group__lapd_gac6e392ed48efdca1f865f0eb4f266504}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rx\_u\_sabm@{lapd\_rx\_u\_sabm}}
\index{lapd\_rx\_u\_sabm@{lapd\_rx\_u\_sabm}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rx\_u\_sabm()}
{\footnotesize\ttfamily static int lapd\+\_\+rx\+\_\+u\+\_\+sabm (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+datalink\+::cont\+\_\+res}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ msgb\+::data}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ msgb\+::l3h}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+hist()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ LAPD\+\_\+\+MODE\+\_\+\+NETWORK}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ lapd\+\_\+send\+\_\+dm()}, \textbf{ lapd\+\_\+send\+\_\+ua()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ lapd\+\_\+stop\+\_\+t200()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ msgb\+::len}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+SABM\+\_\+\+INFO\+\_\+\+NOTALL}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+SABM\+\_\+\+MF}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UFRM\+\_\+\+INC\+\_\+\+PARAM}, \textbf{ mdl\+\_\+error()}, \textbf{ lapd\+\_\+datalink\+::mode}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+history\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+trim()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n201}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+EST}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ lapd\+\_\+datalink\+::rem2loc}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, \textbf{ send\+\_\+dl\+\_\+l3()}, \textbf{ send\+\_\+dl\+\_\+simple()}, \textbf{ lapd\+\_\+datalink\+::seq\+\_\+err\+\_\+cond}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+ack}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+recv}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+u()}.

\mbox{\label{group__lapd_gaf9ff0173db46839310ffb402bcbf375e}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rx\_u\_ua@{lapd\_rx\_u\_ua}}
\index{lapd\_rx\_u\_ua@{lapd\_rx\_u\_ua}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rx\_u\_ua()}
{\footnotesize\ttfamily static int lapd\+\_\+rx\+\_\+u\+\_\+ua (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ msgb\+::data}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ msgb\+::l3h}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+hist()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+send()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ lapd\+\_\+send\+\_\+i()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ lapd\+\_\+stop\+\_\+t200()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ msgb\+::len}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UFRM\+\_\+\+INC\+\_\+\+PARAM}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UNSOL\+\_\+\+UA\+\_\+\+RESP}, \textbf{ mdl\+\_\+error()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+history\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n201}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+EST}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+REL}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+CONFIRM}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ lapd\+\_\+datalink\+::rem2loc}, \textbf{ send\+\_\+dl\+\_\+simple()}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+ack}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+recv}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+u()}.

\mbox{\label{group__lapd_ga3cc08c0ebb47c053d58fb75a6c76d27b}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_rx\_u\_ui@{lapd\_rx\_u\_ui}}
\index{lapd\_rx\_u\_ui@{lapd\_rx\_u\_ui}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_rx\_u\_ui()}
{\footnotesize\ttfamily static int lapd\+\_\+rx\+\_\+u\+\_\+ui (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+FRM\+\_\+\+UNIMPL}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+UFRM\+\_\+\+INC\+\_\+\+PARAM}, \textbf{ mdl\+\_\+error()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+trim()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n201}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+UNIT\+\_\+\+DATA}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ lapd\+\_\+datalink\+::rem2loc}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, and \textbf{ send\+\_\+dl\+\_\+l3()}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+u()}.

\mbox{\label{group__lapd_gab5e3642519929b647b4e4fb6a498b98e}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_send\_dm@{lapd\_send\_dm}}
\index{lapd\_send\_dm@{lapd\_send\_dm}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_send\_dm()}
{\footnotesize\ttfamily static int lapd\+\_\+send\+\_\+dm (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ LAPD\+\_\+\+FORM\+\_\+U}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ LAPD\+\_\+\+U\+\_\+\+DM}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, and \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+i()}, \textbf{ lapd\+\_\+rx\+\_\+s()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, and \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}.

\mbox{\label{group__lapd_gaabc4815fb723d39b60a71ee076ff81ad}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_send\_i@{lapd\_send\_i}}
\index{lapd\_send\_i@{lapd\_send\_i}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_send\_i()}
{\footnotesize\ttfamily static int lapd\+\_\+send\+\_\+i (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl,  }\item[{int}]{line,  }\item[{bool}]{rts }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ add\+\_\+mod()}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ msgb\+::data}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ do\+\_\+mod()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ inc\+\_\+mod()}, \textbf{ lapd\+\_\+datalink\+::k}, \textbf{ msgb\+::l3h}, \textbf{ LAPD\+\_\+\+F\+\_\+\+RTS}, \textbf{ lapd\+\_\+datalink\+::lapd\+\_\+flags}, \textbf{ LAPD\+\_\+\+FORM\+\_\+I}, \textbf{ lapd\+\_\+is\+\_\+t200\+\_\+started()}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ lapd\+\_\+start\+\_\+t200()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ lapd\+\_\+stop\+\_\+t203()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ msgb\+::len}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ llist\+\_\+empty()}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+history\+::more}, \textbf{ lapd\+\_\+history\+::msg}, \textbf{ msg\+\_\+to\+\_\+tx\+\_\+hist()}, \textbf{ msgb\+\_\+dequeue()}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+l3len()}, \textbf{ msgb\+\_\+put()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n201}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+recv}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+send}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ lapd\+\_\+datalink\+::peer\+\_\+busy}, \textbf{ lapd\+\_\+datalink\+::range\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+buffer}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+out}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+queue}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::tx\+\_\+queue}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+ack}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+range}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+recv}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.



Referenced by \textbf{ lapd\+\_\+data\+\_\+req()}, \textbf{ lapd\+\_\+ph\+\_\+rts\+\_\+ind()}, \textbf{ lapd\+\_\+rx\+\_\+i()}, \textbf{ lapd\+\_\+rx\+\_\+s()}, and \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}.

\mbox{\label{group__lapd_ga201f9455032619e94bf820470a997291}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_send\_rej@{lapd\_send\_rej}}
\index{lapd\_send\_rej@{lapd\_send\_rej}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_send\_rej()}
{\footnotesize\ttfamily static int lapd\+\_\+send\+\_\+rej (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx,  }\item[{uint8\+\_\+t}]{f\+\_\+bit }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ LAPD\+\_\+\+FORM\+\_\+S}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ LAPD\+\_\+\+S\+\_\+\+REJ}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+recv}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+recv}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+i()}.

\mbox{\label{group__lapd_ga96ec587e0ce2d9203b4629ebd8d35a63}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_send\_resend@{lapd\_send\_resend}}
\index{lapd\_send\_resend@{lapd\_send\_resend}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_send\_resend()}
{\footnotesize\ttfamily static int lapd\+\_\+send\+\_\+resend (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ msgb\+::data}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ do\+\_\+mod()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ msgb\+::l3h}, \textbf{ LAPD\+\_\+\+FORM\+\_\+U}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+U\+\_\+\+DISC}, \textbf{ LAPD\+\_\+\+U\+\_\+\+SABM}, \textbf{ LAPD\+\_\+\+U\+\_\+\+SABME}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ msgb\+::len}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+history\+::msg}, \textbf{ msgb\+\_\+put()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ lapd\+\_\+datalink\+::range\+\_\+hist}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::use\+\_\+sabme}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.



Referenced by \textbf{ lapd\+\_\+t200\+\_\+cb()}.

\mbox{\label{group__lapd_ga2b48d8ce606e71ad409c3b30452627c3}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_send\_rnr@{lapd\_send\_rnr}}
\index{lapd\_send\_rnr@{lapd\_send\_rnr}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_send\_rnr()}
{\footnotesize\ttfamily static int lapd\+\_\+send\+\_\+rnr (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx,  }\item[{uint8\+\_\+t}]{f\+\_\+bit,  }\item[{uint8\+\_\+t}]{cmd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ LAPD\+\_\+\+FORM\+\_\+S}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ LAPD\+\_\+\+S\+\_\+\+RNR}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+recv}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+recv}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+i()}, \textbf{ lapd\+\_\+rx\+\_\+s()}, \textbf{ lapd\+\_\+t200\+\_\+cb()}, and \textbf{ lapd\+\_\+t203\+\_\+cb()}.

\mbox{\label{group__lapd_ga0ef362b7ab65dfacf69e84b9fb84492e}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_send\_rr@{lapd\_send\_rr}}
\index{lapd\_send\_rr@{lapd\_send\_rr}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_send\_rr()}
{\footnotesize\ttfamily static int lapd\+\_\+send\+\_\+rr (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx,  }\item[{uint8\+\_\+t}]{f\+\_\+bit,  }\item[{uint8\+\_\+t}]{cmd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ LAPD\+\_\+\+FORM\+\_\+S}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ LAPD\+\_\+\+S\+\_\+\+RR}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+recv}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+recv}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+i()}, \textbf{ lapd\+\_\+rx\+\_\+s()}, \textbf{ lapd\+\_\+t200\+\_\+cb()}, and \textbf{ lapd\+\_\+t203\+\_\+cb()}.

\mbox{\label{group__lapd_gad0bb7e3ad342d9692db514ff90d21f5f}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_send\_ua@{lapd\_send\_ua}}
\index{lapd\_send\_ua@{lapd\_send\_ua}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_send\_ua()}
{\footnotesize\ttfamily static int lapd\+\_\+send\+\_\+ua (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx,  }\item[{uint8\+\_\+t}]{len,  }\item[{uint8\+\_\+t $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ data}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ msgb\+::l3h}, \textbf{ LAPD\+\_\+\+FORM\+\_\+U}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ LAPD\+\_\+\+U\+\_\+\+UA}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ len()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ msgb\+\_\+put()}, \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, and \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, and \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}.

\mbox{\label{group__lapd_ga15b7e633cd0622bf389644c71f342642}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_set\_mode@{lapd\_set\_mode}}
\index{lapd\_set\_mode@{lapd\_set\_mode}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_set\_mode()}
{\footnotesize\ttfamily int lapd\+\_\+set\+\_\+mode (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl,  }\item[{enum \textbf{ lapd\+\_\+mode}}]{mode }\end{DoxyParamCaption})}



Set the lapdm\+\_\+mode of a LAPDm entity. 



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ CR\+\_\+\+NET2\+USER\+\_\+\+CMD}, \textbf{ CR\+\_\+\+NET2\+USER\+\_\+\+RESP}, \textbf{ CR\+\_\+\+USER2\+NET\+\_\+\+CMD}, \textbf{ CR\+\_\+\+USER2\+NET\+\_\+\+RESP}, \textbf{ LAPD\+\_\+\+MODE\+\_\+\+NETWORK}, \textbf{ LAPD\+\_\+\+MODE\+\_\+\+USER}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ lapd\+\_\+datalink\+::mode}, \textbf{ lapd\+\_\+datalink\+::rem2loc}, and \textbf{ lapd\+\_\+cr\+\_\+ent\+::resp}.

\mbox{\label{group__lapd_gadb6a7895673affac47c2eb02b61cd4c3}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_start\_t200@{lapd\_start\_t200}}
\index{lapd\_start\_t200@{lapd\_start\_t200}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_start\_t200()}
{\footnotesize\ttfamily static void lapd\+\_\+start\+\_\+t200 (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ LAPD\+\_\+\+F\+\_\+\+RTS}, \textbf{ lapd\+\_\+datalink\+::lapd\+\_\+flags}, \textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+OFF}, \textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+PENDING}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ osmo\+\_\+timer\+\_\+pending()}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ lapd\+\_\+datalink\+::t200}, \textbf{ lapd\+\_\+datalink\+::t200\+\_\+rts}, \textbf{ lapd\+\_\+datalink\+::t200\+\_\+sec}, and \textbf{ lapd\+\_\+datalink\+::t200\+\_\+usec}.



Referenced by \textbf{ lapd\+\_\+acknowledge()}, \textbf{ lapd\+\_\+est\+\_\+req()}, \textbf{ lapd\+\_\+rel\+\_\+req()}, \textbf{ lapd\+\_\+res\+\_\+req()}, \textbf{ lapd\+\_\+send\+\_\+i()}, \textbf{ lapd\+\_\+t200\+\_\+cb()}, and \textbf{ lapd\+\_\+t203\+\_\+cb()}.

\mbox{\label{group__lapd_gaea8d69455262c62eb0d336675768b2c2}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_start\_t203@{lapd\_start\_t203}}
\index{lapd\_start\_t203@{lapd\_start\_t203}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_start\_t203()}
{\footnotesize\ttfamily static void lapd\+\_\+start\+\_\+t203 (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ osmo\+\_\+timer\+\_\+pending()}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ lapd\+\_\+datalink\+::t203}, \textbf{ lapd\+\_\+datalink\+::t203\+\_\+sec}, and \textbf{ lapd\+\_\+datalink\+::t203\+\_\+usec}.



Referenced by \textbf{ lapd\+\_\+acknowledge()}, and \textbf{ lapd\+\_\+dl\+\_\+newstate()}.

\mbox{\label{group__lapd_gaede3857f8a4f4ba1a8fb1934c17f53b7}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_state\_name@{lapd\_state\_name}}
\index{lapd\_state\_name@{lapd\_state\_name}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_state\_name()}
{\footnotesize\ttfamily static const char $\ast$ lapd\+\_\+state\+\_\+name (\begin{DoxyParamCaption}\item[{enum \textbf{ lapd\+\_\+state}}]{state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ get\+\_\+value\+\_\+string()}, and \textbf{ lapd\+\_\+state\+\_\+names}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ lapd\+\_\+recv\+\_\+dlsap()}, \textbf{ lapd\+\_\+rx\+\_\+i()}, \textbf{ lapd\+\_\+rx\+\_\+s()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}, \textbf{ lapd\+\_\+t200\+\_\+cb()}, \textbf{ lapd\+\_\+t203\+\_\+cb()}, and \textbf{ mdl\+\_\+error()}.

\mbox{\label{group__lapd_gae353289cf6efdcb84cb8628e09b14be5}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_stop\_t200@{lapd\_stop\_t200}}
\index{lapd\_stop\_t200@{lapd\_stop\_t200}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_stop\_t200()}
{\footnotesize\ttfamily static void lapd\+\_\+stop\+\_\+t200 (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ LAPD\+\_\+\+F\+\_\+\+RTS}, \textbf{ lapd\+\_\+datalink\+::lapd\+\_\+flags}, \textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+OFF}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ osmo\+\_\+timer\+\_\+pending()}, \textbf{ lapd\+\_\+datalink\+::t200}, and \textbf{ lapd\+\_\+datalink\+::t200\+\_\+rts}.



Referenced by \textbf{ lapd\+\_\+acknowledge()}, \textbf{ lapd\+\_\+dl\+\_\+reset()}, \textbf{ lapd\+\_\+rel\+\_\+req()}, \textbf{ lapd\+\_\+rx\+\_\+s()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}, and \textbf{ lapd\+\_\+susp\+\_\+req()}.

\mbox{\label{group__lapd_gae7ec2feddaae0d22ae34a1f62a37bfd0}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_stop\_t203@{lapd\_stop\_t203}}
\index{lapd\_stop\_t203@{lapd\_stop\_t203}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_stop\_t203()}
{\footnotesize\ttfamily static void lapd\+\_\+stop\+\_\+t203 (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ osmo\+\_\+timer\+\_\+pending()}, and \textbf{ lapd\+\_\+datalink\+::t203}.



Referenced by \textbf{ lapd\+\_\+acknowledge()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ lapd\+\_\+dl\+\_\+reset()}, \textbf{ lapd\+\_\+send\+\_\+i()}, and \textbf{ lapd\+\_\+susp\+\_\+req()}.

\mbox{\label{group__lapd_gabf2b0f385e45f4625224ae49b215c7e3}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_susp\_req@{lapd\_susp\_req}}
\index{lapd\_susp\_req@{lapd\_susp\_req}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_susp\_req()}
{\footnotesize\ttfamily static int lapd\+\_\+susp\+\_\+req (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$}]{dp,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx()}, \textbf{ lapd\+\_\+stop\+\_\+t200()}, \textbf{ lapd\+\_\+stop\+\_\+t203()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ msgb\+::list}, \textbf{ llist\+\_\+add()}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+SUSP}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+CONFIRM}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+buffer}, \textbf{ send\+\_\+dl\+\_\+simple()}, and \textbf{ lapd\+\_\+datalink\+::send\+\_\+queue}.

\mbox{\label{group__lapd_ga5e9a035a7508f38143781392a6ce5f52}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_t200\_cb@{lapd\_t200\_cb}}
\index{lapd\_t200\_cb@{lapd\_t200\_cb}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_t200\_cb()}
{\footnotesize\ttfamily static void lapd\+\_\+t200\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ msgb\+::data}, \textbf{ data}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ do\+\_\+mod()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ msgb\+::l3h}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+send()}, \textbf{ lapd\+\_\+dl\+\_\+flush\+\_\+tx()}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ LAPD\+\_\+\+FORM\+\_\+I}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ lapd\+\_\+reestablish()}, \textbf{ lapd\+\_\+send\+\_\+resend()}, \textbf{ lapd\+\_\+send\+\_\+rnr()}, \textbf{ lapd\+\_\+send\+\_\+rr()}, \textbf{ lapd\+\_\+start\+\_\+t200()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+DISC\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+IDLE}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+SABM\+\_\+\+SENT}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ msgb\+::len}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ MDL\+\_\+\+CAUSE\+\_\+\+T200\+\_\+\+EXPIRED}, \textbf{ mdl\+\_\+error()}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+history\+::more}, \textbf{ lapd\+\_\+history\+::msg}, \textbf{ msgb\+\_\+put()}, \textbf{ lapd\+\_\+datalink\+::n200}, \textbf{ lapd\+\_\+datalink\+::n200\+\_\+est\+\_\+rel}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+recv}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::n\+\_\+send}, \textbf{ lapd\+\_\+datalink\+::own\+\_\+busy}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::p\+\_\+f}, \textbf{ PRIM\+\_\+\+DL\+\_\+\+REL}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+CONFIRM}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ lapd\+\_\+datalink\+::range\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::reestablish}, \textbf{ lapd\+\_\+datalink\+::retrans\+\_\+ctr}, \textbf{ send\+\_\+dl\+\_\+simple()}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}, \textbf{ lapd\+\_\+datalink\+::seq\+\_\+err\+\_\+cond}, \textbf{ lapd\+\_\+datalink\+::state}, \textbf{ sub\+\_\+mod()}, \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+range}, \textbf{ lapd\+\_\+datalink\+::v\+\_\+recv}, and \textbf{ lapd\+\_\+datalink\+::v\+\_\+send}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+init2()}, and \textbf{ lapd\+\_\+t200\+\_\+timeout()}.

\mbox{\label{group__lapd_ga2dfa4aa26375a1c03503164f499e959d}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_t200\_timeout@{lapd\_t200\_timeout}}
\index{lapd\_t200\_timeout@{lapd\_t200\_timeout}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_t200\_timeout()}
{\footnotesize\ttfamily int lapd\+\_\+t200\+\_\+timeout (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl }\end{DoxyParamCaption})}



Handle timeout condition of T200 in RTS mode. 

The caller (LAPDm code) implements the T200 timer and must detect timeout condition. The function gets called by LAPDm code when it detects a timeout of T200. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em dl} & caller-\/allocated datalink structure \\
\hline
\end{DoxyParams}


References \textbf{ LAPD\+\_\+\+F\+\_\+\+RTS}, \textbf{ lapd\+\_\+datalink\+::lapd\+\_\+flags}, \textbf{ lapd\+\_\+t200\+\_\+cb()}, \textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+OFF}, \textbf{ LAPD\+\_\+\+T200\+\_\+\+RTS\+\_\+\+RUNNING}, \textbf{ OSMO\+\_\+\+ASSERT}, and \textbf{ lapd\+\_\+datalink\+::t200\+\_\+rts}.

\mbox{\label{group__lapd_gaacf3dfbf2ec53594f7b990a32fed5743}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_t203\_cb@{lapd\_t203\_cb}}
\index{lapd\_t203\_cb@{lapd\_t203\_cb}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_t203\_cb()}
{\footnotesize\ttfamily static void lapd\+\_\+t203\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ data}, \textbf{ lapd\+\_\+dl\+\_\+newstate()}, \textbf{ lapd\+\_\+send\+\_\+rnr()}, \textbf{ lapd\+\_\+send\+\_\+rr()}, \textbf{ lapd\+\_\+start\+\_\+t200()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+MF\+\_\+\+EST}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ LAPD\+\_\+\+STATE\+\_\+\+TIMER\+\_\+\+RECOV}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ lapd\+\_\+datalink\+::own\+\_\+busy}, \textbf{ lapd\+\_\+datalink\+::retrans\+\_\+ctr}, and \textbf{ lapd\+\_\+datalink\+::state}.



Referenced by \textbf{ lapd\+\_\+dl\+\_\+init2()}.

\mbox{\label{group__lapd_ga0ebd858b09e587928cccd3cbe7be3783}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_udata\_req@{lapd\_udata\_req}}
\index{lapd\_udata\_req@{lapd\_udata\_req}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_udata\_req()}
{\footnotesize\ttfamily static int lapd\+\_\+udata\+\_\+req (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+dlsap\+\_\+prim} $\ast$}]{dp,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+cr\+\_\+ent\+::cmd}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::cr}, \textbf{ lapd\+\_\+datalink\+::cr}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::format}, \textbf{ LAPD\+\_\+\+FORM\+\_\+U}, \textbf{ LAPD\+\_\+\+U\+\_\+\+UI}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ msgb\+::len}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+datalink\+::loc2rem}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::s\+\_\+u}, and \textbf{ lapd\+\_\+datalink\+::send\+\_\+ph\+\_\+data\+\_\+req}.

\mbox{\label{group__lapd_ga0cf06808a98bfc8c0577482aa055343a}} 
\index{LAPD implementation common part@{LAPD implementation common part}!mdl\_error@{mdl\_error}}
\index{mdl\_error@{mdl\_error}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{mdl\_error()}
{\footnotesize\ttfamily static int mdl\+\_\+error (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{cause,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ mdl\+\_\+error\+\_\+ind\+\_\+param\+::cause}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::error\+\_\+ind}, \textbf{ lapd\+\_\+state\+\_\+name()}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ LOGDL}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+MDL\+\_\+\+ERROR}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ lapd\+\_\+datalink\+::send\+\_\+dlsap}, \textbf{ lapd\+\_\+datalink\+::state}, and \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::u}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+i()}, \textbf{ lapd\+\_\+rx\+\_\+s()}, \textbf{ lapd\+\_\+rx\+\_\+u()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+frmr()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ui()}, and \textbf{ lapd\+\_\+t200\+\_\+cb()}.

\mbox{\label{group__lapd_gabbe83f34662cabcf10801e0fa7d90d9a}} 
\index{LAPD implementation common part@{LAPD implementation common part}!msg\_to\_tx\_hist@{msg\_to\_tx\_hist}}
\index{msg\_to\_tx\_hist@{msg\_to\_tx\_hist}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{msg\_to\_tx\_hist()}
{\footnotesize\ttfamily static void msg\+\_\+to\+\_\+tx\+\_\+hist (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+history} $\ast$}]{tx\+\_\+hist,  }\item[{const struct \textbf{ msgb} $\ast$}]{msg,  }\item[{int}]{length,  }\item[{int}]{more }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ msgb\+::data}, \textbf{ msgb\+::l3h}, \textbf{ lapd\+\_\+msgb\+\_\+alloc()}, \textbf{ msgb\+::len}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::length}, \textbf{ lapd\+\_\+msg\+\_\+ctx\+::more}, \textbf{ lapd\+\_\+history\+::more}, \textbf{ lapd\+\_\+history\+::msg}, and \textbf{ msgb\+\_\+put()}.



Referenced by \textbf{ lapd\+\_\+send\+\_\+i()}, and \textbf{ msg\+\_\+to\+\_\+tx\+\_\+hist0()}.

\mbox{\label{group__lapd_gab52a497bd971ccb75886d63b4a166788}} 
\index{LAPD implementation common part@{LAPD implementation common part}!msg\_to\_tx\_hist0@{msg\_to\_tx\_hist0}}
\index{msg\_to\_tx\_hist0@{msg\_to\_tx\_hist0}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{msg\_to\_tx\_hist0()}
{\footnotesize\ttfamily static void msg\+\_\+to\+\_\+tx\+\_\+hist0 (\begin{DoxyParamCaption}\item[{struct \textbf{ lapd\+\_\+datalink} $\ast$}]{dl,  }\item[{const struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ msgb\+::len}, \textbf{ msg\+\_\+to\+\_\+tx\+\_\+hist()}, and \textbf{ lapd\+\_\+datalink\+::tx\+\_\+hist}.



Referenced by \textbf{ lapd\+\_\+est\+\_\+req()}, \textbf{ lapd\+\_\+rel\+\_\+req()}, and \textbf{ lapd\+\_\+res\+\_\+req()}.

\mbox{\label{group__lapd_gaab390869f2fb476853b759dc027baec8}} 
\index{LAPD implementation common part@{LAPD implementation common part}!send\_dl\_l3@{send\_dl\_l3}}
\index{send\_dl\_l3@{send\_dl\_l3}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{send\_dl\_l3()}
{\footnotesize\ttfamily static int send\+\_\+dl\+\_\+l3 (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{prim,  }\item[{uint8\+\_\+t}]{op,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ lapd\+\_\+msg\+\_\+ctx\+::dl}, \textbf{ lapd\+\_\+datalink\+::lctx}, \textbf{ osmo\+\_\+dlsap\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, and \textbf{ lapd\+\_\+datalink\+::send\+\_\+dlsap}.



Referenced by \textbf{ lapd\+\_\+rx\+\_\+i()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ui()}, and \textbf{ send\+\_\+dl\+\_\+simple()}.

\mbox{\label{group__lapd_ga4afa3958141d3bbac90510847eb9f879}} 
\index{LAPD implementation common part@{LAPD implementation common part}!send\_dl\_simple@{send\_dl\_simple}}
\index{send\_dl\_simple@{send\_dl\_simple}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{send\_dl\_simple()}
{\footnotesize\ttfamily static int send\+\_\+dl\+\_\+simple (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{prim,  }\item[{uint8\+\_\+t}]{op,  }\item[{struct \textbf{ lapd\+\_\+msg\+\_\+ctx} $\ast$}]{lctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ send\+\_\+dl\+\_\+l3()}.



Referenced by \textbf{ lapd\+\_\+rel\+\_\+req()}, \textbf{ lapd\+\_\+rel\+\_\+req\+\_\+idle()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+disc()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+dm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+sabm()}, \textbf{ lapd\+\_\+rx\+\_\+u\+\_\+ua()}, \textbf{ lapd\+\_\+susp\+\_\+req()}, and \textbf{ lapd\+\_\+t200\+\_\+cb()}.

\mbox{\label{group__lapd_ga5348f1e112a7b08fc6d87ba45e42e1d7}} 
\index{LAPD implementation common part@{LAPD implementation common part}!sub\_mod@{sub\_mod}}
\index{sub\_mod@{sub\_mod}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{sub\_mod()}
{\footnotesize\ttfamily static uint8\+\_\+t sub\+\_\+mod (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{x,  }\item[{uint8\+\_\+t}]{y,  }\item[{uint8\+\_\+t}]{m }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ x}.



Referenced by \textbf{ lapd\+\_\+acknowledge()}, and \textbf{ lapd\+\_\+t200\+\_\+cb()}.



\doxysubsection{Variable Documentation}
\mbox{\label{group__lapd_ga01a7aa5ebac02636e122fc4f7a692f45}} 
\index{LAPD implementation common part@{LAPD implementation common part}!l2downstatelist@{l2downstatelist}}
\index{l2downstatelist@{l2downstatelist}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{l2downstatelist}
{\footnotesize\ttfamily const struct \textbf{ l2downstate} l2downstatelist[$\,$]\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ lapd\+\_\+recv\+\_\+dlsap()}.

\mbox{\label{group__lapd_ga04539f043cca065560569a7ae55974b6}} 
\index{LAPD implementation common part@{LAPD implementation common part}!lapd\_state\_names@{lapd\_state\_names}}
\index{lapd\_state\_names@{lapd\_state\_names}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{lapd\_state\_names}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} lapd\+\_\+state\+\_\+names[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        OSMO\_VALUE\_STRING(LAPD\_STATE\_NULL),}
\DoxyCodeLine{        OSMO\_VALUE\_STRING(LAPD\_STATE\_TEI\_UNASS),}
\DoxyCodeLine{        OSMO\_VALUE\_STRING(LAPD\_STATE\_ASS\_TEI\_WAIT),}
\DoxyCodeLine{        OSMO\_VALUE\_STRING(LAPD\_STATE\_EST\_TEI\_WAIT),}
\DoxyCodeLine{        OSMO\_VALUE\_STRING(LAPD\_STATE\_IDLE),}
\DoxyCodeLine{        OSMO\_VALUE\_STRING(LAPD\_STATE\_SABM\_SENT),}
\DoxyCodeLine{        OSMO\_VALUE\_STRING(LAPD\_STATE\_DISC\_SENT),}
\DoxyCodeLine{        OSMO\_VALUE\_STRING(LAPD\_STATE\_MF\_EST),}
\DoxyCodeLine{        OSMO\_VALUE\_STRING(LAPD\_STATE\_TIMER\_RECOV),}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ lapd\+\_\+state\+\_\+name()}.

\mbox{\label{group__lapd_gae09840f3b5da6b0bb8adb995cd329d2b}} 
\index{LAPD implementation common part@{LAPD implementation common part}!tall\_lapd\_ctx@{tall\_lapd\_ctx}}
\index{tall\_lapd\_ctx@{tall\_lapd\_ctx}!LAPD implementation common part@{LAPD implementation common part}}
\doxysubsubsection{tall\_lapd\_ctx}
{\footnotesize\ttfamily void$\ast$ tall\+\_\+lapd\+\_\+ctx = NULL}



Referenced by \textbf{ lapd\+\_\+data\+\_\+req()}, \textbf{ lapd\+\_\+dl\+\_\+init2()}, and \textbf{ lapd\+\_\+dl\+\_\+set\+\_\+name()}.

