\doxysection{src/gb/gprs\+\_\+bssgp.c File Reference}
\label{gprs__bssgp_8c}\index{src/gb/gprs\_bssgp.c@{src/gb/gprs\_bssgp.c}}


GPRS BSSGP protocol implementation as per 3GPP TS 08.\+18.  


{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/byteswap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/bit16gen.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/tlv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/talloc.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/rate\+\_\+ctr.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/stats.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+bssgp.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+bssgp\+\_\+bss.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+ns.\+h$>$}\newline
{\ttfamily \#include \char`\"{}osmocom/gsm/gsm48.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}gprs\+\_\+bssgp\+\_\+internal.\+h\char`\"{}}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static int \textbf{ \+\_\+gprs\+\_\+ns\+\_\+sendmsg} (void $\ast$ctx, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
\textbf{ LLIST\+\_\+\+HEAD} (\textbf{ bssgp\+\_\+bvc\+\_\+ctxts})
\item 
static int \textbf{ \+\_\+bssgp\+\_\+tx\+\_\+dl\+\_\+ud} (struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc, struct \textbf{ msgb} $\ast$\textbf{ msg}, uint32\+\_\+t llc\+\_\+pdu\+\_\+len, void $\ast$priv)
\item 
struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ \textbf{ btsctx\+\_\+by\+\_\+raid\+\_\+cid} (const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid, uint16\+\_\+t cid)
\item 
static int \textbf{ tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci} (enum \textbf{ bssgp\+\_\+pdu\+\_\+type} pdu, uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t \textbf{ bvci}, enum \textbf{ gprs\+\_\+bssgp\+\_\+cause} \textbf{ cause}, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$\textbf{ ra\+\_\+id}, uint16\+\_\+t cell\+\_\+id)
\item 
int \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci} (uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t \textbf{ bvci}, enum \textbf{ gprs\+\_\+bssgp\+\_\+cause} \textbf{ cause}, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$\textbf{ ra\+\_\+id}, uint16\+\_\+t cell\+\_\+id)
\begin{DoxyCompactList}\small\item\em Transmit a BVC-\/\+RESET message with a given nsei and bvci (Chapter 10.\+4.\+12) \end{DoxyCompactList}\item 
int \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+reset\+\_\+ack\+\_\+nsei\+\_\+bvci} (uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t \textbf{ bvci}, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$\textbf{ ra\+\_\+id}, uint16\+\_\+t cell\+\_\+id)
\begin{DoxyCompactList}\small\item\em Transmit a BVC-\/\+RESET-\/\+ACK message with a given nsei and bvci (Chapter 10.\+4.\+12) \end{DoxyCompactList}\item 
int \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+ptp\+\_\+reset} (uint16\+\_\+t \textbf{ nsei}, enum \textbf{ gprs\+\_\+bssgp\+\_\+cause} \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Initiate reset procedure for all PTP BVC on a given NSEI. \end{DoxyCompactList}\item 
struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ \textbf{ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei} (uint16\+\_\+t \textbf{ bvci}, uint16\+\_\+t \textbf{ nsei})
\item 
void \textbf{ bssgp\+\_\+set\+\_\+bssgp\+\_\+callback} (\textbf{ bssgp\+\_\+bvc\+\_\+send} ns\+\_\+send, void $\ast$\textbf{ data})
\item 
struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ \textbf{ btsctx\+\_\+alloc} (uint16\+\_\+t \textbf{ bvci}, uint16\+\_\+t \textbf{ nsei})
\item 
void \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+\_\+free} (struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ctx)
\item 
static int \textbf{ bssgp\+\_\+tx\+\_\+fc\+\_\+bvc\+\_\+ack} (uint16\+\_\+t \textbf{ nsei}, uint8\+\_\+t tag, uint16\+\_\+t ns\+\_\+bvci)
\item 
int \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+ack} (uint16\+\_\+t \textbf{ nsei}, uint32\+\_\+t \textbf{ tlli}, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$\textbf{ ra\+\_\+id}, uint8\+\_\+t suspend\+\_\+ref)
\item 
int \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+nack} (uint16\+\_\+t \textbf{ nsei}, uint32\+\_\+t \textbf{ tlli}, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$\textbf{ ra\+\_\+id}, uint8\+\_\+t $\ast$\textbf{ cause})
\item 
int \textbf{ bssgp\+\_\+tx\+\_\+resume\+\_\+ack} (uint16\+\_\+t \textbf{ nsei}, uint32\+\_\+t \textbf{ tlli}, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$\textbf{ ra\+\_\+id})
\item 
int \textbf{ bssgp\+\_\+tx\+\_\+resume\+\_\+nack} (uint16\+\_\+t \textbf{ nsei}, uint32\+\_\+t \textbf{ tlli}, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$\textbf{ ra\+\_\+id}, uint8\+\_\+t $\ast$\textbf{ cause})
\item 
uint16\+\_\+t \textbf{ bssgp\+\_\+parse\+\_\+cell\+\_\+id} (struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid, const uint8\+\_\+t $\ast$buf)
\item 
int \textbf{ bssgp\+\_\+parse\+\_\+cell\+\_\+id2} (struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$raid, uint16\+\_\+t $\ast$cid, const uint8\+\_\+t $\ast$buf, size\+\_\+t buf\+\_\+len)
\begin{DoxyCompactList}\small\item\em Parse the value of a BSSGP Cell identity (04.\+08 RAI + Cell Id) \end{DoxyCompactList}\item 
int \textbf{ bssgp\+\_\+create\+\_\+cell\+\_\+id} (uint8\+\_\+t $\ast$buf, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid, uint16\+\_\+t cid)
\item 
int \textbf{ bssgp\+\_\+create\+\_\+cell\+\_\+id2} (uint8\+\_\+t $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$raid, const uint16\+\_\+t cid)
\begin{DoxyCompactList}\small\item\em Encode the 04.\+08 RAI, Cell Id into BSSGP Cell identity. \end{DoxyCompactList}\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+reset} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, uint16\+\_\+t ns\+\_\+bvci)
\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+block} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+unblock} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+ul\+\_\+ud} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ctx)
\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+suspend} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+resume} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+llc\+\_\+disc} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ctx)
\item 
int \textbf{ bssgp\+\_\+rx\+\_\+status} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, uint16\+\_\+t \textbf{ bvci}, struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$bctx)
\item 
static int \textbf{ fc\+\_\+queue\+\_\+timer\+\_\+cfg} (struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc)
\item 
static int \textbf{ bssgp\+\_\+fc\+\_\+needs\+\_\+queueing} (struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc, uint32\+\_\+t pdu\+\_\+len)
\item 
static void \textbf{ fc\+\_\+timer\+\_\+cb} (void $\ast$\textbf{ data})
\item 
static int \textbf{ fc\+\_\+enqueue} (struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc, struct \textbf{ msgb} $\ast$\textbf{ msg}, uint32\+\_\+t llc\+\_\+pdu\+\_\+len, void $\ast$priv)
\item 
int \textbf{ bssgp\+\_\+fc\+\_\+in} (struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc, struct \textbf{ msgb} $\ast$\textbf{ msg}, uint32\+\_\+t llc\+\_\+pdu\+\_\+len, void $\ast$priv)
\item 
void \textbf{ bssgp\+\_\+fc\+\_\+init} (struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc, uint32\+\_\+t bucket\+\_\+size\+\_\+max, uint32\+\_\+t bucket\+\_\+leak\+\_\+rate, uint32\+\_\+t max\+\_\+queue\+\_\+depth, int($\ast$out\+\_\+cb)(struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc, struct \textbf{ msgb} $\ast$\textbf{ msg}, uint32\+\_\+t llc\+\_\+pdu\+\_\+len, void $\ast$priv))
\item 
int \textbf{ bssgp\+\_\+fc\+\_\+ms\+\_\+init} (struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc\+\_\+ms, uint16\+\_\+t \textbf{ bvci}, uint16\+\_\+t \textbf{ nsei}, uint32\+\_\+t max\+\_\+queue\+\_\+depth)
\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+fc\+\_\+bvc} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$bctx)
\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+ptp} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$bctx)
\item 
static int \textbf{ bssgp\+\_\+rx\+\_\+sign} (struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$bctx)
\item 
int \textbf{ bssgp\+\_\+rcvmsg} (struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
int \textbf{ bssgp\+\_\+tx\+\_\+dl\+\_\+ud} (struct \textbf{ msgb} $\ast$\textbf{ msg}, uint16\+\_\+t pdu\+\_\+lifetime, struct \textbf{ bssgp\+\_\+dl\+\_\+ud\+\_\+par} $\ast$dup)
\item 
int \textbf{ bssgp\+\_\+tx\+\_\+paging} (uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t ns\+\_\+bvci, struct \textbf{ bssgp\+\_\+paging\+\_\+info} $\ast$pinfo)
\item 
void \textbf{ bssgp\+\_\+set\+\_\+log\+\_\+ss} (int ss)
\item 
void \textbf{ bssgp\+\_\+fc\+\_\+flush\+\_\+queue} (struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc)
\begin{DoxyCompactList}\small\item\em Flush the queue of the \doxyref{bssgp\+\_\+flow\+\_\+control}{p.}{structbssgp__flow__control}. \end{DoxyCompactList}\item 
void \textbf{ bssgp\+\_\+flush\+\_\+all\+\_\+queues} (void)
\begin{DoxyCompactList}\small\item\em Flush the queues of all BSSGP contexts. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
void $\ast$ \textbf{ bssgp\+\_\+tall\+\_\+ctx} = NULL
\item 
\textbf{ bssgp\+\_\+bvc\+\_\+send} \textbf{ bssgp\+\_\+ns\+\_\+send} = \textbf{ \+\_\+gprs\+\_\+ns\+\_\+sendmsg}
\item 
void $\ast$ \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data} = NULL
\item 
static const struct \textbf{ rate\+\_\+ctr\+\_\+desc} \textbf{ bssgp\+\_\+ctr\+\_\+description} [$\,$]
\item 
static const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} \textbf{ bssgp\+\_\+ctrg\+\_\+desc}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
GPRS BSSGP protocol implementation as per 3GPP TS 08.\+18. 

GPRS BSSGP RIM protocol implementation as per 3GPP TS 48.\+018.

\doxysubsection{Function Documentation}
\mbox{\label{gprs__bssgp_8c_a795373fe7cfc46a894b46d6202e98dfd}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!\_bssgp\_tx\_dl\_ud@{\_bssgp\_tx\_dl\_ud}}
\index{\_bssgp\_tx\_dl\_ud@{\_bssgp\_tx\_dl\_ud}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{\_bssgp\_tx\_dl\_ud()}
{\footnotesize\ttfamily static int \+\_\+bssgp\+\_\+tx\+\_\+dl\+\_\+ud (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$}]{fc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{uint32\+\_\+t}]{llc\+\_\+pdu\+\_\+len,  }\item[{void $\ast$}]{priv }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, and \textbf{ msg}.



Referenced by \textbf{ btsctx\+\_\+alloc()}.

\mbox{\label{gprs__bssgp_8c_a687cd58b84597c5a87ac3a21aee64caf}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!\_gprs\_ns\_sendmsg@{\_gprs\_ns\_sendmsg}}
\index{\_gprs\_ns\_sendmsg@{\_gprs\_ns\_sendmsg}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{\_gprs\_ns\_sendmsg()}
{\footnotesize\ttfamily static int \+\_\+gprs\+\_\+ns\+\_\+sendmsg (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bssgp\+\_\+nsi}, \textbf{ gprs\+\_\+ns\+\_\+sendmsg()}, \textbf{ msg}, and \textbf{ OSMO\+\_\+\+ASSERT}.

\mbox{\label{gprs__bssgp_8c_aad568539266986434182a416c7418983}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_bvc\_ctx\_free@{bssgp\_bvc\_ctx\_free}}
\index{bssgp\_bvc\_ctx\_free@{bssgp\_bvc\_ctx\_free}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_bvc\_ctx\_free()}
{\footnotesize\ttfamily void bssgp\+\_\+bvc\+\_\+ctx\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$}]{ctx }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::ctrg}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::fc}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::list}, \textbf{ llist\+\_\+del()}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+free()}, and \textbf{ bssgp\+\_\+flow\+\_\+control\+::timer}.

\mbox{\label{gprs__bssgp_8c_aab23b9c5ef7e25dbb4894b43eadb94cc}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_create\_cell\_id@{bssgp\_create\_cell\_id}}
\index{bssgp\_create\_cell\_id@{bssgp\_create\_cell\_id}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_create\_cell\_id()}
{\footnotesize\ttfamily int bssgp\+\_\+create\+\_\+cell\+\_\+id (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{buf,  }\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{raid,  }\item[{uint16\+\_\+t}]{cid }\end{DoxyParamCaption})}



References \textbf{ gsm48\+\_\+encode\+\_\+ra()}.



Referenced by \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+reset()}, \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+reset\+\_\+ack()}, \textbf{ bssgp\+\_\+create\+\_\+rim\+\_\+ri()}, \textbf{ bssgp\+\_\+enc\+\_\+ran\+\_\+inf\+\_\+app\+\_\+cont\+\_\+nacc()}, \textbf{ bssgp\+\_\+enc\+\_\+ran\+\_\+inf\+\_\+req\+\_\+app\+\_\+cont\+\_\+nacc()}, \textbf{ bssgp\+\_\+tx\+\_\+ul\+\_\+ud()}, and \textbf{ tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci()}.

\mbox{\label{gprs__bssgp_8c_ae647c0f560924a573dd781bcb05db969}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_create\_cell\_id2@{bssgp\_create\_cell\_id2}}
\index{bssgp\_create\_cell\_id2@{bssgp\_create\_cell\_id2}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_create\_cell\_id2()}
{\footnotesize\ttfamily int bssgp\+\_\+create\+\_\+cell\+\_\+id2 (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{raid,  }\item[{const uint16\+\_\+t}]{cid }\end{DoxyParamCaption})}



Encode the 04.\+08 RAI, Cell Id into BSSGP Cell identity. 



References \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+\_\+encode\+\_\+buf()}.

\mbox{\label{gprs__bssgp_8c_a291684f8e48bdcfd0bf492ecfc2fe10f}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_fc\_flush\_queue@{bssgp\_fc\_flush\_queue}}
\index{bssgp\_fc\_flush\_queue@{bssgp\_fc\_flush\_queue}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_fc\_flush\_queue()}
{\footnotesize\ttfamily void bssgp\+\_\+fc\+\_\+flush\+\_\+queue (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$}]{fc }\end{DoxyParamCaption})}



Flush the queue of the \doxyref{bssgp\+\_\+flow\+\_\+control}{p.}{structbssgp__flow__control}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em The} & flow control object which holds the queue. \\
\hline
\end{DoxyParams}


References \textbf{ list}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::list}, \textbf{ llist\+\_\+del()}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry\+\_\+safe}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::msg}, \textbf{ msgb\+\_\+free()}, and \textbf{ bssgp\+\_\+flow\+\_\+control\+::queue}.



Referenced by \textbf{ bssgp\+\_\+flush\+\_\+all\+\_\+queues()}.

\mbox{\label{gprs__bssgp_8c_af18185da9d3eee1e61c28d13f716479b}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_fc\_in@{bssgp\_fc\_in}}
\index{bssgp\_fc\_in@{bssgp\_fc\_in}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_fc\_in()}
{\footnotesize\ttfamily int bssgp\+\_\+fc\+\_\+in (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$}]{fc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{uint32\+\_\+t}]{llc\+\_\+pdu\+\_\+len,  }\item[{void $\ast$}]{priv }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+fc\+\_\+needs\+\_\+queueing()}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::bucket\+\_\+size\+\_\+max}, \textbf{ DLBSSGP}, \textbf{ fc\+\_\+enqueue()}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ osmo\+\_\+gettimeofday()}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::out\+\_\+cb}, and \textbf{ bssgp\+\_\+flow\+\_\+control\+::time\+\_\+last\+\_\+pdu}.



Referenced by \textbf{ bssgp\+\_\+fc\+\_\+ms\+\_\+init()}, and \textbf{ bssgp\+\_\+tx\+\_\+dl\+\_\+ud()}.

\mbox{\label{gprs__bssgp_8c_ae909801dfb274c44ed85c30e0154cdb0}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_fc\_init@{bssgp\_fc\_init}}
\index{bssgp\_fc\_init@{bssgp\_fc\_init}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_fc\_init()}
{\footnotesize\ttfamily void bssgp\+\_\+fc\+\_\+init (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$}]{fc,  }\item[{uint32\+\_\+t}]{bucket\+\_\+size\+\_\+max,  }\item[{uint32\+\_\+t}]{bucket\+\_\+leak\+\_\+rate,  }\item[{uint32\+\_\+t}]{max\+\_\+queue\+\_\+depth,  }\item[{int($\ast$)(struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$fc, struct \textbf{ msgb} $\ast$\textbf{ msg}, uint32\+\_\+t llc\+\_\+pdu\+\_\+len, void $\ast$priv)}]{out\+\_\+cb }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+flow\+\_\+control\+::bucket\+\_\+leak\+\_\+rate}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::bucket\+\_\+size\+\_\+max}, \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::max\+\_\+queue\+\_\+depth}, \textbf{ osmo\+\_\+gettimeofday()}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::out\+\_\+cb}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::queue}, and \textbf{ bssgp\+\_\+flow\+\_\+control\+::time\+\_\+last\+\_\+pdu}.



Referenced by \textbf{ bssgp\+\_\+fc\+\_\+ms\+\_\+init()}, and \textbf{ btsctx\+\_\+alloc()}.

\mbox{\label{gprs__bssgp_8c_a93529d3a568de7b575f23761fd0bde90}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_fc\_ms\_init@{bssgp\_fc\_ms\_init}}
\index{bssgp\_fc\_ms\_init@{bssgp\_fc\_ms\_init}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_fc\_ms\_init()}
{\footnotesize\ttfamily int bssgp\+\_\+fc\+\_\+ms\+\_\+init (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$}]{fc\+\_\+ms,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{uint32\+\_\+t}]{max\+\_\+queue\+\_\+depth }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bmax\+\_\+default\+\_\+ms}, \textbf{ bssgp\+\_\+fc\+\_\+in()}, \textbf{ bssgp\+\_\+fc\+\_\+init()}, \textbf{ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei()}, \textbf{ bvci}, \textbf{ nsei}, and \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::r\+\_\+default\+\_\+ms}.

\mbox{\label{gprs__bssgp_8c_ade227f73174a8f8c64752eed80f1e598}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_fc\_needs\_queueing@{bssgp\_fc\_needs\_queueing}}
\index{bssgp\_fc\_needs\_queueing@{bssgp\_fc\_needs\_queueing}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_fc\_needs\_queueing()}
{\footnotesize\ttfamily static int bssgp\+\_\+fc\+\_\+needs\+\_\+queueing (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$}]{fc,  }\item[{uint32\+\_\+t}]{pdu\+\_\+len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bssgp\+\_\+flow\+\_\+control\+::bucket\+\_\+counter}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::bucket\+\_\+leak\+\_\+rate}, \textbf{ osmo\+\_\+gettimeofday()}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::time\+\_\+last\+\_\+pdu}, and \textbf{ timersub}.



Referenced by \textbf{ bssgp\+\_\+fc\+\_\+in()}, and \textbf{ fc\+\_\+timer\+\_\+cb()}.

\mbox{\label{gprs__bssgp_8c_ad64feb6bd0a3c188685de75cf9eb9388}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_flush\_all\_queues@{bssgp\_flush\_all\_queues}}
\index{bssgp\_flush\_all\_queues@{bssgp\_flush\_all\_queues}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_flush\_all\_queues()}
{\footnotesize\ttfamily void bssgp\+\_\+flush\+\_\+all\+\_\+queues (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Flush the queues of all BSSGP contexts. 



References \textbf{ bssgp\+\_\+bvc\+\_\+ctxts}, \textbf{ bssgp\+\_\+fc\+\_\+flush\+\_\+queue()}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::fc}, \textbf{ list}, and \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}.

\mbox{\label{gprs__bssgp_8c_a8a0554704834b44454e34748b0a71c0f}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_parse\_cell\_id@{bssgp\_parse\_cell\_id}}
\index{bssgp\_parse\_cell\_id@{bssgp\_parse\_cell\_id}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_parse\_cell\_id()}
{\footnotesize\ttfamily uint16\+\_\+t bssgp\+\_\+parse\+\_\+cell\+\_\+id (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{raid,  }\item[{const uint8\+\_\+t $\ast$}]{buf }\end{DoxyParamCaption})}



References \textbf{ gsm48\+\_\+parse\+\_\+ra()}.



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+allstate()}, \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+wait\+\_\+reset\+\_\+ack()}, \textbf{ bssgp\+\_\+parse\+\_\+rim\+\_\+ra()}, and \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+reset()}.

\mbox{\label{gprs__bssgp_8c_a71149508e3ed65a2b20746c6ff177d30}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_parse\_cell\_id2@{bssgp\_parse\_cell\_id2}}
\index{bssgp\_parse\_cell\_id2@{bssgp\_parse\_cell\_id2}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_parse\_cell\_id2()}
{\footnotesize\ttfamily int bssgp\+\_\+parse\+\_\+cell\+\_\+id2 (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id} $\ast$}]{raid,  }\item[{uint16\+\_\+t $\ast$}]{cid,  }\item[{const uint8\+\_\+t $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len }\end{DoxyParamCaption})}



Parse the value of a BSSGP Cell identity (04.\+08 RAI + Cell Id) 



References \textbf{ osmo\+\_\+routing\+\_\+area\+\_\+id\+\_\+decode()}.

\mbox{\label{gprs__bssgp_8c_a17b24f1f586729b4fa5c7aae0ffd2669}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rcvmsg@{bssgp\_rcvmsg}}
\index{bssgp\_rcvmsg@{bssgp\_rcvmsg}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rcvmsg()}
{\footnotesize\ttfamily int bssgp\+\_\+rcvmsg (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+INV\+\_\+\+MAND\+\_\+\+INF}, \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+PDU\+\_\+\+INCOMP\+\_\+\+FEAT}, \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+UNKNOWN\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN}, \textbf{ BSSGP\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ bssgp\+\_\+pdu\+\_\+str()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+DL\+\_\+\+UNITDATA}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+UL\+\_\+\+UNITDATA}, \textbf{ bssgp\+\_\+rx\+\_\+ptp()}, \textbf{ bssgp\+\_\+rx\+\_\+sign()}, \textbf{ bssgp\+\_\+rx\+\_\+status()}, \textbf{ bssgp\+\_\+tlv\+\_\+parse()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei()}, \textbf{ bvci}, \textbf{ BVCI\+\_\+\+PTM}, \textbf{ BVCI\+\_\+\+SIGNALLING}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::ctrg}, \textbf{ bssgp\+\_\+ud\+\_\+hdr\+::data}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::data}, \textbf{ DLBSSGP}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+BVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bssgp\+\_\+len}, \textbf{ msgb\+\_\+bssgph}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+hexdump()}, \textbf{ msgb\+\_\+nsei}, \textbf{ nsei}, \textbf{ pdu\+\_\+type}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ rate\+\_\+ctr\+\_\+add()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, and \textbf{ tlvp\+\_\+val16be()}.

\mbox{\label{gprs__bssgp_8c_a20eff8e50b122eac6d07bc28a9f98d4a}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_bvc\_block@{bssgp\_rx\_bvc\_block}}
\index{bssgp\_rx\_bvc\_block@{bssgp\_rx\_bvc\_block}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_bvc\_block()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+bvc\+\_\+block (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+UNKNOWN\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+CTR\+\_\+\+BLOCKED}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ bssgp\+\_\+prim\+\_\+cb()}, \textbf{ bssgp\+\_\+tx\+\_\+simple\+\_\+bvci()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei()}, \textbf{ BVC\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::bvci}, \textbf{ bvci}, \textbf{ BVCI\+\_\+\+SIGNALLING}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::ctrg}, \textbf{ DLBSSGP}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::nsei}, \textbf{ nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+NM\+\_\+\+BVC\+\_\+\+BLOCK}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ SAP\+\_\+\+BSSGP\+\_\+\+NM}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::state}, \textbf{ tlvp\+\_\+val16be()}, and \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tp}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+sign()}.

\mbox{\label{gprs__bssgp_8c_a519977f39ef2f6285e3f085ffc46bc9e}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_bvc\_reset@{bssgp\_rx\_bvc\_reset}}
\index{bssgp\_rx\_bvc\_reset@{bssgp\_rx\_bvc\_reset}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_bvc\_reset()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+bvc\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{uint16\+\_\+t}]{ns\+\_\+bvci }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bssgp\+\_\+cause\+\_\+str()}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CELL\+\_\+\+ID}, \textbf{ bssgp\+\_\+parse\+\_\+cell\+\_\+id()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ bssgp\+\_\+prim\+\_\+cb()}, \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+reset\+\_\+ack\+\_\+nsei\+\_\+bvci()}, \textbf{ bssgp\+\_\+tx\+\_\+simple\+\_\+bvci()}, \textbf{ btsctx\+\_\+alloc()}, \textbf{ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei()}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::bvci}, \textbf{ bvci}, \textbf{ BVCI\+\_\+\+PTM}, \textbf{ BVCI\+\_\+\+SIGNALLING}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::cell\+\_\+id}, \textbf{ DEBUGP}, \textbf{ DLBSSGP}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::is\+\_\+sgsn}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::nsei}, \textbf{ nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ osmo\+\_\+rai\+\_\+name()}, \textbf{ PRIM\+\_\+\+NM\+\_\+\+BVC\+\_\+\+RESET}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::ra\+\_\+id}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::ra\+\_\+id}, \textbf{ SAP\+\_\+\+BSSGP\+\_\+\+NM}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::state}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, \textbf{ TLVP\+\_\+\+VAL}, \textbf{ tlvp\+\_\+val16be()}, and \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tp}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+ptp()}, and \textbf{ bssgp\+\_\+rx\+\_\+sign()}.

\mbox{\label{gprs__bssgp_8c_a5ee5a5384a5a2144e9fc57443f182191}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_bvc\_unblock@{bssgp\_rx\_bvc\_unblock}}
\index{bssgp\_rx\_bvc\_unblock@{bssgp\_rx\_bvc\_unblock}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_bvc\_unblock()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+bvc\+\_\+unblock (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+UNKNOWN\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+UNBLOCK\+\_\+\+ACK}, \textbf{ bssgp\+\_\+prim\+\_\+cb()}, \textbf{ bssgp\+\_\+tx\+\_\+simple\+\_\+bvci()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei()}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::bvci}, \textbf{ bvci}, \textbf{ BVCI\+\_\+\+SIGNALLING}, \textbf{ DEBUGP}, \textbf{ DLBSSGP}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::nsei}, \textbf{ nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+NM\+\_\+\+BVC\+\_\+\+UNBLOCK}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ SAP\+\_\+\+BSSGP\+\_\+\+NM}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::state}, \textbf{ tlvp\+\_\+val16be()}, and \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tp}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+sign()}.

\mbox{\label{gprs__bssgp_8c_a345800bd3ecc220932b7cf8cbafd9151}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_fc\_bvc@{bssgp\_rx\_fc\_bvc}}
\index{bssgp\_rx\_fc\_bvc@{bssgp\_rx\_fc\_bvc}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_fc\_bvc()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+fc\+\_\+bvc (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$}]{bctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bmax\+\_\+default\+\_\+ms}, \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+MAND\+\_\+\+IE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BMAX\+\_\+\+DEFAULT\+\_\+\+MS}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BUCKET\+\_\+\+LEAK\+\_\+\+RATE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVC\+\_\+\+BUCKET\+\_\+\+SIZE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+R\+\_\+\+DEFAULT\+\_\+\+MS}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TAG}, \textbf{ bssgp\+\_\+tx\+\_\+fc\+\_\+bvc\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::bucket\+\_\+leak\+\_\+rate}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::bucket\+\_\+size\+\_\+max}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bvci}, \textbf{ DEBUGP}, \textbf{ DLBSSGP}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::fc}, \textbf{ fc\+\_\+queue\+\_\+timer\+\_\+cfg()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::r\+\_\+default\+\_\+ms}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, \textbf{ TLVP\+\_\+\+VAL}, and \textbf{ tlvp\+\_\+val16be()}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+ptp()}.

\mbox{\label{gprs__bssgp_8c_af036b9919926e901017ebba89d186066}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_llc\_disc@{bssgp\_rx\_llc\_disc}}
\index{bssgp\_rx\_llc\_disc@{bssgp\_rx\_llc\_disc}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_llc\_disc()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+llc\+\_\+disc (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$}]{ctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+MAND\+\_\+\+IE}, \textbf{ BSSGP\+\_\+\+CTR\+\_\+\+DISCARDED}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+LLC\+\_\+\+FRAMES\+\_\+\+DISCARDED}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+NUM\+\_\+\+OCT\+\_\+\+AFF}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TLLI}, \textbf{ bssgp\+\_\+prim\+\_\+cb()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::bvci}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bvci}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::ctrg}, \textbf{ DEBUGP}, \textbf{ DLBSSGP}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::nsei}, \textbf{ nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+NM\+\_\+\+LLC\+\_\+\+DISCARDED}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ SAP\+\_\+\+BSSGP\+\_\+\+NM}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tlli}, \textbf{ tlli}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, \textbf{ tlvp\+\_\+val32be()}, and \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tp}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+sign()}.

\mbox{\label{gprs__bssgp_8c_a428e4dbb9cb1ddf5289c49119fb46213}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_ptp@{bssgp\_rx\_ptp}}
\index{bssgp\_rx\_ptp@{bssgp\_rx\_ptp}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_ptp()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+ptp (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$}]{bctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+BVCI\+\_\+\+BLOCKED}, \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+PDU\+\_\+\+INCOMP\+\_\+\+FEAT}, \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC}, \textbf{ bssgp\+\_\+pdu\+\_\+str()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+CREATE\+\_\+\+BSS\+\_\+\+PFC\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+CREATE\+\_\+\+BSS\+\_\+\+PFC\+\_\+\+NACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+DELETE\+\_\+\+BSS\+\_\+\+PFC\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+DL\+\_\+\+UNITDATA}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+DOWNLOAD\+\_\+\+BSS\+\_\+\+PFC}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLOW\+\_\+\+CONTROL\+\_\+\+BVC}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLOW\+\_\+\+CONTROL\+\_\+\+BVC\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLOW\+\_\+\+CONTROL\+\_\+\+MS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLOW\+\_\+\+CONTROL\+\_\+\+MS\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+MODIFY\+\_\+\+BSS\+\_\+\+PFC}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+PAGING\+\_\+\+CS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+PAGING\+\_\+\+PS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RA\+\_\+\+CAPA\+\_\+\+UPDATE\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RA\+\_\+\+CAPABILITY}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RADIO\+\_\+\+STATUS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+UL\+\_\+\+UNITDATA}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+reset()}, \textbf{ bssgp\+\_\+rx\+\_\+fc\+\_\+bvc()}, \textbf{ bssgp\+\_\+rx\+\_\+ul\+\_\+ud()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ BVC\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bvci}, \textbf{ bvci}, \textbf{ DEBUGP}, \textbf{ DLBSSGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bssgph}, \textbf{ msgb\+\_\+bvci}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ pdu\+\_\+type}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::state}.



Referenced by \textbf{ bssgp\+\_\+rcvmsg()}.

\mbox{\label{gprs__bssgp_8c_a9100037754ce6f0c76aeffe2fe9b667b}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_resume@{bssgp\_rx\_resume}}
\index{bssgp\_rx\_resume@{bssgp\_rx\_resume}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_resume()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+resume (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+MAND\+\_\+\+IE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+ROUTEING\+\_\+\+AREA}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+SUSPEND\+\_\+\+REF\+\_\+\+NR}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TLLI}, \textbf{ bssgp\+\_\+prim\+\_\+cb()}, \textbf{ bssgp\+\_\+tx\+\_\+resume\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+resume\+\_\+nack()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::bvci}, \textbf{ DEBUGP}, \textbf{ DLBSSGP}, \textbf{ gsm48\+\_\+parse\+\_\+ra()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::nsei}, \textbf{ nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+GMM\+\_\+\+RESUME}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::ra\+\_\+id}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::resume}, \textbf{ SAP\+\_\+\+BSSGP\+\_\+\+GMM}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::suspend\+\_\+ref}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tlli}, \textbf{ tlli}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, \textbf{ TLVP\+\_\+\+VAL}, \textbf{ tlvp\+\_\+val32be()}, and \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::u}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+sign()}.

\mbox{\label{gprs__bssgp_8c_a82ee3ddab8ce5904953a4f5e1eaafd8a}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_sign@{bssgp\_rx\_sign}}
\index{bssgp\_rx\_sign@{bssgp\_rx\_sign}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_sign()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+sign (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$}]{bctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+MAND\+\_\+\+IE}, \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ bssgp\+\_\+pdu\+\_\+str()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+BLOCK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+UNBLOCK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+UNBLOCK\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLUSH\+\_\+\+LL}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLUSH\+\_\+\+LL\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+LLC\+\_\+\+DISCARD}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+PAGING\+\_\+\+CS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+PAGING\+\_\+\+PS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RAN\+\_\+\+INFO}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RAN\+\_\+\+INFO\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RAN\+\_\+\+INFO\+\_\+\+APP\+\_\+\+ERROR}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RAN\+\_\+\+INFO\+\_\+\+ERROR}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RAN\+\_\+\+INFO\+\_\+\+REQ}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RESUME}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RESUME\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RESUME\+\_\+\+NACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+SGSN\+\_\+\+INVOKE\+\_\+\+TRACE}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+SUSPEND}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+SUSPEND\+\_\+\+ACK}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+SUSPEND\+\_\+\+NACK}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+block()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+reset()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+unblock()}, \textbf{ bssgp\+\_\+rx\+\_\+llc\+\_\+disc()}, \textbf{ bssgp\+\_\+rx\+\_\+resume()}, \textbf{ bssgp\+\_\+rx\+\_\+rim()}, \textbf{ bssgp\+\_\+rx\+\_\+suspend()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bvci}, \textbf{ bvci}, \textbf{ DEBUGP}, \textbf{ DLBSSGP}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bssgph}, \textbf{ msgb\+\_\+bvci}, \textbf{ pdu\+\_\+type}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}.



Referenced by \textbf{ bssgp\+\_\+rcvmsg()}.

\mbox{\label{gprs__bssgp_8c_a5feb5ebdd2d95c36b5a89214e55ed857}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_status@{bssgp\_rx\_status}}
\index{bssgp\_rx\_status@{bssgp\_rx\_status}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_status()}
{\footnotesize\ttfamily int bssgp\+\_\+rx\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$}]{bctx }\end{DoxyParamCaption})}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+BVCI\+\_\+\+BLOCKED}, \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC}, \textbf{ bssgp\+\_\+cause\+\_\+str()}, \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+UNKNOWN\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+CTR\+\_\+\+STATUS}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ bssgp\+\_\+prim\+\_\+cb()}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::bvci}, \textbf{ bvci}, \textbf{ cause}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::ctrg}, \textbf{ DLBSSGP}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::nsei}, \textbf{ nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+NM\+\_\+\+STATUS}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ SAP\+\_\+\+BSSGP\+\_\+\+NM}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, \textbf{ TLVP\+\_\+\+VAL}, and \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tp}.



Referenced by \textbf{ bssgp\+\_\+rcvmsg()}.

\mbox{\label{gprs__bssgp_8c_a20ad8aab5d261170b5630f534a6cc650}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_suspend@{bssgp\_rx\_suspend}}
\index{bssgp\_rx\_suspend@{bssgp\_rx\_suspend}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_suspend()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+suspend (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+MAND\+\_\+\+IE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+ROUTEING\+\_\+\+AREA}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TLLI}, \textbf{ bssgp\+\_\+prim\+\_\+cb()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+nack()}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::bvci}, \textbf{ DEBUGP}, \textbf{ DLBSSGP}, \textbf{ gsm48\+\_\+parse\+\_\+ra()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::nsei}, \textbf{ nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+GMM\+\_\+\+SUSPEND}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::ra\+\_\+id}, \textbf{ SAP\+\_\+\+BSSGP\+\_\+\+GMM}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tlli}, \textbf{ tlli}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, \textbf{ TLVP\+\_\+\+VAL}, and \textbf{ tlvp\+\_\+val32be()}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+sign()}.

\mbox{\label{gprs__bssgp_8c_a5216188854a62c40096428938a7036b8}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_rx\_ul\_ud@{bssgp\_rx\_ul\_ud}}
\index{bssgp\_rx\_ul\_ud@{bssgp\_rx\_ul\_ud}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_rx\_ul\_ud()}
{\footnotesize\ttfamily static int bssgp\+\_\+rx\+\_\+ul\+\_\+ud (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$}]{ctx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+MAND\+\_\+\+IE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CELL\+\_\+\+ID}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+LLC\+\_\+\+PDU}, \textbf{ bssgp\+\_\+prim\+\_\+cb()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::bvci}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bvci}, \textbf{ DEBUGP}, \textbf{ DLBSSGP}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bcid}, \textbf{ msgb\+\_\+bssgph}, \textbf{ msgb\+\_\+llch}, \textbf{ msgb\+\_\+tlli}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::nsei}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::nsei}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+ntohl}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+UL\+\_\+\+UD}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ SAP\+\_\+\+BSSGP\+\_\+\+LL}, \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tlli}, \textbf{ bssgp\+\_\+ud\+\_\+hdr\+::tlli}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, \textbf{ TLVP\+\_\+\+PRESENT}, \textbf{ TLVP\+\_\+\+VAL}, and \textbf{ osmo\+\_\+bssgp\+\_\+prim\+::tp}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+ptp()}.

\mbox{\label{gprs__bssgp_8c_a76b5db5a98b2548172ef61163cac8bca}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_set\_bssgp\_callback@{bssgp\_set\_bssgp\_callback}}
\index{bssgp\_set\_bssgp\_callback@{bssgp\_set\_bssgp\_callback}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_set\_bssgp\_callback()}
{\footnotesize\ttfamily void bssgp\+\_\+set\+\_\+bssgp\+\_\+callback (\begin{DoxyParamCaption}\item[{\textbf{ bssgp\+\_\+bvc\+\_\+send}}]{ns\+\_\+send,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, and \textbf{ data}.

\mbox{\label{gprs__bssgp_8c_aec19a3e6532594e90534c9773605417d}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_set\_log\_ss@{bssgp\_set\_log\_ss}}
\index{bssgp\_set\_log\_ss@{bssgp\_set\_log\_ss}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_set\_log\_ss()}
{\footnotesize\ttfamily void bssgp\+\_\+set\+\_\+log\+\_\+ss (\begin{DoxyParamCaption}\item[{int}]{ss }\end{DoxyParamCaption})}

\mbox{\label{gprs__bssgp_8c_ad57da17b8aaad82802cf258dfd72dfc9}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_bvc\_ptp\_reset@{bssgp\_tx\_bvc\_ptp\_reset}}
\index{bssgp\_tx\_bvc\_ptp\_reset@{bssgp\_tx\_bvc\_ptp\_reset}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_bvc\_ptp\_reset()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+bvc\+\_\+ptp\+\_\+reset (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsei,  }\item[{enum \textbf{ gprs\+\_\+bssgp\+\_\+cause}}]{cause }\end{DoxyParamCaption})}



Initiate reset procedure for all PTP BVC on a given NSEI. 

This function initiates reset procedure for all PTP BVC with a given cause. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsei} & NSEI to which PTP BVC should belong to \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Cause of BVC RESET \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative error code otherwise 
\end{DoxyReturn}


References \textbf{ bssgp\+\_\+bvc\+\_\+ctxts}, \textbf{ bssgp\+\_\+cause\+\_\+str()}, \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+reset()}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bvci}, \textbf{ BVCI\+\_\+\+SIGNALLING}, \textbf{ cause}, \textbf{ DLBSSGP}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ LOGP}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::nsei}, and \textbf{ nsei}.

\mbox{\label{gprs__bssgp_8c_aa5b16b21e836b91c6c36aebd15a998ef}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_bvc\_reset\_ack\_nsei\_bvci@{bssgp\_tx\_bvc\_reset\_ack\_nsei\_bvci}}
\index{bssgp\_tx\_bvc\_reset\_ack\_nsei\_bvci@{bssgp\_tx\_bvc\_reset\_ack\_nsei\_bvci}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_bvc\_reset\_ack\_nsei\_bvci()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+bvc\+\_\+reset\+\_\+ack\+\_\+nsei\+\_\+bvci (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{ra\+\_\+id,  }\item[{uint16\+\_\+t}]{cell\+\_\+id }\end{DoxyParamCaption})}



Transmit a BVC-\/\+RESET-\/\+ACK message with a given nsei and bvci (Chapter 10.\+4.\+12) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsei} & The NSEI to transmit over \\
\hline
\mbox{\texttt{ in}}  & {\em bvci} & BVCI of the BVC to reset \\
\hline
\mbox{\texttt{ in}}  & {\em ra\+\_\+id} & Pointer to the ra\+\_\+id to include. If NULL no cell information will be included \\
\hline
\mbox{\texttt{ in}}  & {\em cell\+\_\+id} & The cell\+\_\+id to include (if ra\+\_\+id is not NULL) returns $>$= 0 on success, on error $<$ 0. \\
\hline
\end{DoxyParams}


References \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ bvci}, \textbf{ nsei}, \textbf{ ra\+\_\+id}, and \textbf{ tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci()}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+reset()}.

\mbox{\label{gprs__bssgp_8c_afa47eb940961a940fad10c6b808b2c09}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_bvc\_reset\_nsei\_bvci@{bssgp\_tx\_bvc\_reset\_nsei\_bvci}}
\index{bssgp\_tx\_bvc\_reset\_nsei\_bvci@{bssgp\_tx\_bvc\_reset\_nsei\_bvci}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_bvc\_reset\_nsei\_bvci()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{enum \textbf{ gprs\+\_\+bssgp\+\_\+cause}}]{cause,  }\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{ra\+\_\+id,  }\item[{uint16\+\_\+t}]{cell\+\_\+id }\end{DoxyParamCaption})}



Transmit a BVC-\/\+RESET message with a given nsei and bvci (Chapter 10.\+4.\+12) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsei} & The NSEI to transmit over \\
\hline
\mbox{\texttt{ in}}  & {\em bvci} & BVCI of the BVC to reset \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & The cause of the reset \\
\hline
\mbox{\texttt{ in}}  & {\em ra\+\_\+id} & Pointer to the ra\+\_\+id to include. If NULL no cell information will be included \\
\hline
\mbox{\texttt{ in}}  & {\em cell\+\_\+id} & The cell\+\_\+id to include (if ra\+\_\+id is not NULL) returns $>$= 0 on success, on error $<$ 0. \\
\hline
\end{DoxyParams}


References \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET}, \textbf{ bvci}, \textbf{ cause}, \textbf{ nsei}, \textbf{ ra\+\_\+id}, and \textbf{ tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci()}.



Referenced by \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+reset2()}.

\mbox{\label{gprs__bssgp_8c_ae07840bc5aca86dfb3144bc1e5bd2fc9}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_dl\_ud@{bssgp\_tx\_dl\_ud}}
\index{bssgp\_tx\_dl\_ud@{bssgp\_tx\_dl\_ud}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_dl\_ud()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+dl\+\_\+ud (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{uint16\+\_\+t}]{pdu\+\_\+lifetime,  }\item[{struct \textbf{ bssgp\+\_\+dl\+\_\+ud\+\_\+par} $\ast$}]{dup }\end{DoxyParamCaption})}



References \textbf{ BSSGP\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT}, \textbf{ BSSGP\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT}, \textbf{ bssgp\+\_\+fc\+\_\+in()}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+DRX\+\_\+\+PARAMS}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+IMSI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+LLC\+\_\+\+PDU}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+MS\+\_\+\+RADIO\+\_\+\+ACCESS\+\_\+\+CAP}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+PDU\+\_\+\+LIFETIME}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TLLI}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+DL\+\_\+\+UNITDATA}, \textbf{ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei()}, \textbf{ bvci}, \textbf{ BVCI\+\_\+\+PTM}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::ctrg}, \textbf{ DLBSSGP}, \textbf{ bssgp\+\_\+dl\+\_\+ud\+\_\+par\+::drx\+\_\+parms}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::fc}, \textbf{ bssgp\+\_\+dl\+\_\+ud\+\_\+par\+::fc}, \textbf{ gsm48\+\_\+generate\+\_\+mid\+\_\+from\+\_\+imsi()}, \textbf{ GSM48\+\_\+\+MID\+\_\+\+MAX\+\_\+\+SIZE}, \textbf{ bssgp\+\_\+dl\+\_\+ud\+\_\+par\+::imsi}, \textbf{ bssgp\+\_\+lv\+::len}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ mi}, \textbf{ bssgp\+\_\+dl\+\_\+ud\+\_\+par\+::ms\+\_\+ra\+\_\+cap}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+push()}, \textbf{ msgb\+\_\+tlli}, \textbf{ msgb\+\_\+tvlv\+\_\+push()}, \textbf{ nsei}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+htonl}, \textbf{ osmo\+\_\+htons}, \textbf{ bssgp\+\_\+ud\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ bssgp\+\_\+dl\+\_\+ud\+\_\+par\+::qos\+\_\+profile}, \textbf{ bssgp\+\_\+ud\+\_\+hdr\+::qos\+\_\+profile}, \textbf{ rate\+\_\+ctr\+\_\+add()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ bssgp\+\_\+dl\+\_\+ud\+\_\+par\+::tlli}, \textbf{ tlli}, \textbf{ bssgp\+\_\+ud\+\_\+hdr\+::tlli}, \textbf{ TVLV\+\_\+\+MAX\+\_\+\+ONEBYTE}, and \textbf{ bssgp\+\_\+lv\+::v}.

\mbox{\label{gprs__bssgp_8c_a9d9f1aea694d80a44fae23a9d4bb7192}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_fc\_bvc\_ack@{bssgp\_tx\_fc\_bvc\_ack}}
\index{bssgp\_tx\_fc\_bvc\_ack@{bssgp\_tx\_fc\_bvc\_ack}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_fc\_bvc\_ack()}
{\footnotesize\ttfamily static int bssgp\+\_\+tx\+\_\+fc\+\_\+bvc\+\_\+ack (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsei,  }\item[{uint8\+\_\+t}]{tag,  }\item[{uint16\+\_\+t}]{ns\+\_\+bvci }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TAG}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLOW\+\_\+\+CONTROL\+\_\+\+BVC\+\_\+\+ACK}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ nsei}, and \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+fc\+\_\+bvc()}.

\mbox{\label{gprs__bssgp_8c_ab00bbbd15687a6440fb3887d10297224}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_paging@{bssgp\_tx\_paging}}
\index{bssgp\_tx\_paging@{bssgp\_tx\_paging}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_paging()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+paging (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{ns\+\_\+bvci,  }\item[{struct \textbf{ bssgp\+\_\+paging\+\_\+info} $\ast$}]{pinfo }\end{DoxyParamCaption})}



References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BSS\+\_\+\+AREA\+\_\+\+ID}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+DRX\+\_\+\+PARAMS}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+IMSI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+LOCATION\+\_\+\+AREA}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+QOS\+\_\+\+PROFILE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TMSI}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ bssgp\+\_\+msgb\+\_\+ra\+\_\+put()}, \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, \textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+BSS\+\_\+\+AREA}, \textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+LOCATION\+\_\+\+AREA}, \textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+PS}, \textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+ROUTEING\+\_\+\+AREA}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+PAGING\+\_\+\+CS}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+PAGING\+\_\+\+PS}, \textbf{ bssgp\+\_\+paging\+\_\+info\+::bvci}, \textbf{ bvci}, \textbf{ bssgp\+\_\+paging\+\_\+info\+::drx\+\_\+params}, \textbf{ gsm48\+\_\+encode\+\_\+ra()}, \textbf{ gsm48\+\_\+generate\+\_\+mid\+\_\+from\+\_\+imsi()}, \textbf{ GSM48\+\_\+\+MID\+\_\+\+MAX\+\_\+\+SIZE}, \textbf{ bssgp\+\_\+paging\+\_\+info\+::imsi}, \textbf{ mi}, \textbf{ bssgp\+\_\+paging\+\_\+info\+::mode}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ nsei}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+htonl}, \textbf{ osmo\+\_\+htons}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ bssgp\+\_\+paging\+\_\+info\+::ptmsi}, \textbf{ bssgp\+\_\+paging\+\_\+info\+::qos}, \textbf{ bssgp\+\_\+paging\+\_\+info\+::raid}, and \textbf{ bssgp\+\_\+paging\+\_\+info\+::scope}.

\mbox{\label{gprs__bssgp_8c_ac780f1fdce19d57344876deddf70542c}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_resume\_ack@{bssgp\_tx\_resume\_ack}}
\index{bssgp\_tx\_resume\_ack@{bssgp\_tx\_resume\_ack}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_resume\_ack()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+resume\+\_\+ack (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsei,  }\item[{uint32\+\_\+t}]{tlli,  }\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{ra\+\_\+id }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ bssgp\+\_\+msgb\+\_\+ra\+\_\+put()}, \textbf{ bssgp\+\_\+msgb\+\_\+tlli\+\_\+put()}, \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+RESUME\+\_\+\+ACK}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+put()}, \textbf{ nsei}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ ra\+\_\+id}, and \textbf{ tlli}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+resume()}.

\mbox{\label{gprs__bssgp_8c_afaf95e0dd60cbf2f2ea6c7ee3481c827}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_resume\_nack@{bssgp\_tx\_resume\_nack}}
\index{bssgp\_tx\_resume\_nack@{bssgp\_tx\_resume\_nack}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_resume\_nack()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+resume\+\_\+nack (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsei,  }\item[{uint32\+\_\+t}]{tlli,  }\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{ra\+\_\+id,  }\item[{uint8\+\_\+t $\ast$}]{cause }\end{DoxyParamCaption})}



References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ bssgp\+\_\+msgb\+\_\+ra\+\_\+put()}, \textbf{ bssgp\+\_\+msgb\+\_\+tlli\+\_\+put()}, \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+SUSPEND\+\_\+\+NACK}, \textbf{ cause}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ nsei}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ ra\+\_\+id}, and \textbf{ tlli}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+resume()}.

\mbox{\label{gprs__bssgp_8c_a85332b6af95519dcb6f787ad89c159d9}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_suspend\_ack@{bssgp\_tx\_suspend\_ack}}
\index{bssgp\_tx\_suspend\_ack@{bssgp\_tx\_suspend\_ack}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_suspend\_ack()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+suspend\+\_\+ack (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsei,  }\item[{uint32\+\_\+t}]{tlli,  }\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{ra\+\_\+id,  }\item[{uint8\+\_\+t}]{suspend\+\_\+ref }\end{DoxyParamCaption})}



References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+SUSPEND\+\_\+\+REF\+\_\+\+NR}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ bssgp\+\_\+msgb\+\_\+ra\+\_\+put()}, \textbf{ bssgp\+\_\+msgb\+\_\+tlli\+\_\+put()}, \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+SUSPEND\+\_\+\+ACK}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ nsei}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ ra\+\_\+id}, and \textbf{ tlli}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+suspend()}.

\mbox{\label{gprs__bssgp_8c_aac833b48b46643dc46882a7927fd4fd1}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tx\_suspend\_nack@{bssgp\_tx\_suspend\_nack}}
\index{bssgp\_tx\_suspend\_nack@{bssgp\_tx\_suspend\_nack}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tx\_suspend\_nack()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+suspend\+\_\+nack (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsei,  }\item[{uint32\+\_\+t}]{tlli,  }\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{ra\+\_\+id,  }\item[{uint8\+\_\+t $\ast$}]{cause }\end{DoxyParamCaption})}



References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ bssgp\+\_\+msgb\+\_\+ra\+\_\+put()}, \textbf{ bssgp\+\_\+msgb\+\_\+tlli\+\_\+put()}, \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+SUSPEND\+\_\+\+NACK}, \textbf{ cause}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ nsei}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ ra\+\_\+id}, and \textbf{ tlli}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+suspend()}.

\mbox{\label{gprs__bssgp_8c_a35ddef0081e4606a60a2d2c1c9756f79}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!btsctx\_alloc@{btsctx\_alloc}}
\index{btsctx\_alloc@{btsctx\_alloc}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{btsctx\_alloc()}
{\footnotesize\ttfamily struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ btsctx\+\_\+alloc (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{bvci,  }\item[{uint16\+\_\+t}]{nsei }\end{DoxyParamCaption})}



References \textbf{ \+\_\+bssgp\+\_\+tx\+\_\+dl\+\_\+ud()}, \textbf{ bssgp\+\_\+bvc\+\_\+ctxts}, \textbf{ bssgp\+\_\+ctrg\+\_\+desc}, \textbf{ bssgp\+\_\+fc\+\_\+init()}, \textbf{ bssgp\+\_\+tall\+\_\+ctx}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bvci}, \textbf{ bvci}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::ctrg}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::fc}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::is\+\_\+sgsn}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::list}, \textbf{ llist\+\_\+add()}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::nsei}, \textbf{ nsei}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+alloc()}, and \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+free()}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+reset()}.

\mbox{\label{gprs__bssgp_8c_a618ce884b53d92e63e401b09677d9a35}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!btsctx\_by\_bvci\_nsei@{btsctx\_by\_bvci\_nsei}}
\index{btsctx\_by\_bvci\_nsei@{btsctx\_by\_bvci\_nsei}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{btsctx\_by\_bvci\_nsei()}
{\footnotesize\ttfamily struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{bvci,  }\item[{uint16\+\_\+t}]{nsei }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+bvc\+\_\+ctxts}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::bvci}, \textbf{ bvci}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::nsei}, and \textbf{ nsei}.



Referenced by \textbf{ bssgp\+\_\+fc\+\_\+ms\+\_\+init()}, \textbf{ bssgp\+\_\+rcvmsg()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+block()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+reset()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+unblock()}, \textbf{ bssgp\+\_\+tx\+\_\+dl\+\_\+ud()}, and \textbf{ DEFUN()}.

\mbox{\label{gprs__bssgp_8c_af96d4cba93429cc761a8d1a61303ecdd}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!btsctx\_by\_raid\_cid@{btsctx\_by\_raid\_cid}}
\index{btsctx\_by\_raid\_cid@{btsctx\_by\_raid\_cid}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{btsctx\_by\_raid\_cid()}
{\footnotesize\ttfamily struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ btsctx\+\_\+by\+\_\+raid\+\_\+cid (\begin{DoxyParamCaption}\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{raid,  }\item[{uint16\+\_\+t}]{cid }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+bvc\+\_\+ctxts}, \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::cell\+\_\+id}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, and \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+::ra\+\_\+id}.

\mbox{\label{gprs__bssgp_8c_a22b456acb8a0c9e35c11585d5e9d914f}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!fc\_enqueue@{fc\_enqueue}}
\index{fc\_enqueue@{fc\_enqueue}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{fc\_enqueue()}
{\footnotesize\ttfamily static int fc\+\_\+enqueue (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$}]{fc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{uint32\+\_\+t}]{llc\+\_\+pdu\+\_\+len,  }\item[{void $\ast$}]{priv }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ fc\+\_\+queue\+\_\+timer\+\_\+cfg()}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::list}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::llc\+\_\+pdu\+\_\+len}, \textbf{ llist\+\_\+add\+\_\+tail()}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::max\+\_\+queue\+\_\+depth}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::msg}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::priv}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::queue}, and \textbf{ bssgp\+\_\+flow\+\_\+control\+::queue\+\_\+depth}.



Referenced by \textbf{ bssgp\+\_\+fc\+\_\+in()}.

\mbox{\label{gprs__bssgp_8c_a639c8f1ff9c7cdcd0a9d5cf9d54edcf6}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!fc\_queue\_timer\_cfg@{fc\_queue\_timer\_cfg}}
\index{fc\_queue\_timer\_cfg@{fc\_queue\_timer\_cfg}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{fc\_queue\_timer\_cfg()}
{\footnotesize\ttfamily static int fc\+\_\+queue\+\_\+timer\+\_\+cfg (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp\+\_\+flow\+\_\+control} $\ast$}]{fc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bssgp\+\_\+flow\+\_\+control\+::bucket\+\_\+leak\+\_\+rate}, \textbf{ fc\+\_\+timer\+\_\+cb()}, \textbf{ list}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::llc\+\_\+pdu\+\_\+len}, \textbf{ llist\+\_\+empty()}, \textbf{ llist\+\_\+entry}, \textbf{ llist\+\_\+head\+::next}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ osmo\+\_\+timer\+\_\+setup()}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::queue}, and \textbf{ bssgp\+\_\+flow\+\_\+control\+::timer}.



Referenced by \textbf{ bssgp\+\_\+rx\+\_\+fc\+\_\+bvc()}, \textbf{ fc\+\_\+enqueue()}, and \textbf{ fc\+\_\+timer\+\_\+cb()}.

\mbox{\label{gprs__bssgp_8c_ae52f727c7767224ac5c62841afb870d0}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!fc\_timer\_cb@{fc\_timer\_cb}}
\index{fc\_timer\_cb@{fc\_timer\_cb}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{fc\_timer\_cb()}
{\footnotesize\ttfamily static void fc\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bssgp\+\_\+fc\+\_\+needs\+\_\+queueing()}, \textbf{ data}, \textbf{ DLBSSGP}, \textbf{ fc\+\_\+queue\+\_\+timer\+\_\+cfg()}, \textbf{ list}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::list}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::llc\+\_\+pdu\+\_\+len}, \textbf{ llist\+\_\+del()}, \textbf{ llist\+\_\+empty()}, \textbf{ llist\+\_\+entry}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::msg}, \textbf{ llist\+\_\+head\+::next}, \textbf{ osmo\+\_\+gettimeofday()}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::out\+\_\+cb}, \textbf{ bssgp\+\_\+fc\+\_\+queue\+\_\+element\+::priv}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::queue}, \textbf{ bssgp\+\_\+flow\+\_\+control\+::queue\+\_\+depth}, and \textbf{ bssgp\+\_\+flow\+\_\+control\+::time\+\_\+last\+\_\+pdu}.



Referenced by \textbf{ fc\+\_\+queue\+\_\+timer\+\_\+cfg()}.

\mbox{\label{gprs__bssgp_8c_adaa759a1aed5c82abe1bd3c72870b43f}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!LLIST\_HEAD@{LLIST\_HEAD}}
\index{LLIST\_HEAD@{LLIST\_HEAD}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{LLIST\_HEAD()}
{\footnotesize\ttfamily LLIST\+\_\+\+HEAD (\begin{DoxyParamCaption}\item[{\textbf{ bssgp\+\_\+bvc\+\_\+ctxts}}]{ }\end{DoxyParamCaption})}

\mbox{\label{gprs__bssgp_8c_a7a31d3b4c519cd38aabd88dde28be46e}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!tx\_bvc\_reset\_nsei\_bvci@{tx\_bvc\_reset\_nsei\_bvci}}
\index{tx\_bvc\_reset\_nsei\_bvci@{tx\_bvc\_reset\_nsei\_bvci}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{tx\_bvc\_reset\_nsei\_bvci()}
{\footnotesize\ttfamily static int tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci (\begin{DoxyParamCaption}\item[{enum \textbf{ bssgp\+\_\+pdu\+\_\+type}}]{pdu,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{enum \textbf{ gprs\+\_\+bssgp\+\_\+cause}}]{cause,  }\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{ra\+\_\+id,  }\item[{uint16\+\_\+t}]{cell\+\_\+id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bssgp\+\_\+cause\+\_\+str()}, \textbf{ bssgp\+\_\+create\+\_\+cell\+\_\+id()}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CELL\+\_\+\+ID}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ bvci}, \textbf{ BVCI\+\_\+\+SIGNALLING}, \textbf{ cause}, \textbf{ DLBSSGP}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ nsei}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+htons}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ ra\+\_\+id}.



Referenced by \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+reset\+\_\+ack\+\_\+nsei\+\_\+bvci()}, and \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci()}.



\doxysubsection{Variable Documentation}
\mbox{\label{gprs__bssgp_8c_a6bdb08b6cf7590cf656d0b5ead79f410}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_ctr\_description@{bssgp\_ctr\_description}}
\index{bssgp\_ctr\_description@{bssgp\_ctr\_description}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_ctr\_description}
{\footnotesize\ttfamily const struct \textbf{ rate\+\_\+ctr\+\_\+desc} bssgp\+\_\+ctr\+\_\+description[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}packets:in"{}}, \textcolor{stringliteral}{"{}Packets at BSSGP Level ( In)"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}packets:out"{}},\textcolor{stringliteral}{"{}Packets at BSSGP Level (Out)"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}bytes:in"{}},   \textcolor{stringliteral}{"{}Bytes at BSSGP Level   ( In)"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}bytes:out"{}},  \textcolor{stringliteral}{"{}Bytes at BSSGP Level   (Out)"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}blocked"{}},    \textcolor{stringliteral}{"{}BVC Blocking count"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}discarded"{}},  \textcolor{stringliteral}{"{}BVC LLC Discarded count"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}status"{}},     \textcolor{stringliteral}{"{}BVC Status count"{}} \},}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{gprs__bssgp_8c_a5edabf72e9eade0d1054dba727d77be5}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_ctrg\_desc@{bssgp\_ctrg\_desc}}
\index{bssgp\_ctrg\_desc@{bssgp\_ctrg\_desc}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_ctrg\_desc}
{\footnotesize\ttfamily const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} bssgp\+\_\+ctrg\+\_\+desc\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .group\_name\_prefix = \textcolor{stringliteral}{"{}bssgp:bss\_ctx"{}},}
\DoxyCodeLine{        .group\_description = \textcolor{stringliteral}{"{}BSSGP Peer Statistics"{}},}
\DoxyCodeLine{        .num\_ctr = ARRAY\_SIZE(bssgp\_ctr\_description),}
\DoxyCodeLine{        .ctr\_desc = bssgp\_ctr\_description,}
\DoxyCodeLine{        .class\_id = OSMO\_STATS\_CLASS\_PEER,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ btsctx\+\_\+alloc()}.

\mbox{\label{gprs__bssgp_8c_ab994e002dc512634376c2a80763998e0}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_ns\_send@{bssgp\_ns\_send}}
\index{bssgp\_ns\_send@{bssgp\_ns\_send}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_ns\_send}
{\footnotesize\ttfamily \textbf{ bssgp\+\_\+bvc\+\_\+send} bssgp\+\_\+ns\+\_\+send = \textbf{ \+\_\+gprs\+\_\+ns\+\_\+sendmsg}}



Referenced by \textbf{ \+\_\+bssgp\+\_\+tx\+\_\+dl\+\_\+ud()}, \textbf{ bssgp\+\_\+set\+\_\+bssgp\+\_\+callback()}, \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+block()}, \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+unblock()}, \textbf{ bssgp\+\_\+tx\+\_\+fc\+\_\+bvc()}, \textbf{ bssgp\+\_\+tx\+\_\+fc\+\_\+bvc\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+fc\+\_\+ms()}, \textbf{ bssgp\+\_\+tx\+\_\+flush\+\_\+ll\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+llc\+\_\+discarded()}, \textbf{ bssgp\+\_\+tx\+\_\+paging()}, \textbf{ bssgp\+\_\+tx\+\_\+ra\+\_\+capa\+\_\+upd()}, \textbf{ bssgp\+\_\+tx\+\_\+resume()}, \textbf{ bssgp\+\_\+tx\+\_\+resume\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+resume\+\_\+nack()}, \textbf{ bssgp\+\_\+tx\+\_\+rim()}, \textbf{ bssgp\+\_\+tx\+\_\+rim\+\_\+encoded()}, \textbf{ bssgp\+\_\+tx\+\_\+simple\+\_\+bvci()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+nack()}, \textbf{ bssgp\+\_\+tx\+\_\+ul\+\_\+ud()}, \textbf{ common\+\_\+tx\+\_\+radio\+\_\+status2()}, and \textbf{ tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci()}.

\mbox{\label{gprs__bssgp_8c_a3b47724ed676f56701f34021ac264be6}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_ns\_send\_data@{bssgp\_ns\_send\_data}}
\index{bssgp\_ns\_send\_data@{bssgp\_ns\_send\_data}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_ns\_send\_data}
{\footnotesize\ttfamily void$\ast$ bssgp\+\_\+ns\+\_\+send\+\_\+data = NULL}



Referenced by \textbf{ \+\_\+bssgp\+\_\+tx\+\_\+dl\+\_\+ud()}, \textbf{ bssgp\+\_\+set\+\_\+bssgp\+\_\+callback()}, \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+block()}, \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+unblock()}, \textbf{ bssgp\+\_\+tx\+\_\+fc\+\_\+bvc()}, \textbf{ bssgp\+\_\+tx\+\_\+fc\+\_\+bvc\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+fc\+\_\+ms()}, \textbf{ bssgp\+\_\+tx\+\_\+flush\+\_\+ll\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+llc\+\_\+discarded()}, \textbf{ bssgp\+\_\+tx\+\_\+paging()}, \textbf{ bssgp\+\_\+tx\+\_\+ra\+\_\+capa\+\_\+upd()}, \textbf{ bssgp\+\_\+tx\+\_\+resume()}, \textbf{ bssgp\+\_\+tx\+\_\+resume\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+resume\+\_\+nack()}, \textbf{ bssgp\+\_\+tx\+\_\+rim()}, \textbf{ bssgp\+\_\+tx\+\_\+rim\+\_\+encoded()}, \textbf{ bssgp\+\_\+tx\+\_\+simple\+\_\+bvci()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+nack()}, \textbf{ bssgp\+\_\+tx\+\_\+ul\+\_\+ud()}, \textbf{ common\+\_\+tx\+\_\+radio\+\_\+status2()}, and \textbf{ tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci()}.

\mbox{\label{gprs__bssgp_8c_aae00f4be3cfd5efecb95aa2d0e59b792}} 
\index{gprs\_bssgp.c@{gprs\_bssgp.c}!bssgp\_tall\_ctx@{bssgp\_tall\_ctx}}
\index{bssgp\_tall\_ctx@{bssgp\_tall\_ctx}!gprs\_bssgp.c@{gprs\_bssgp.c}}
\doxysubsubsection{bssgp\_tall\_ctx}
{\footnotesize\ttfamily void$\ast$ bssgp\+\_\+tall\+\_\+ctx = NULL}



Referenced by \textbf{ btsctx\+\_\+alloc()}.

