\doxysection{include/osmocom/gprs/gprs\+\_\+bssgp.h File Reference}
\label{gprs__bssgp_8h}\index{include/osmocom/gprs/gprs\_bssgp.h@{include/osmocom/gprs/gprs\_bssgp.h}}


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


{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm48.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/prim.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/protocol/gsm\+\_\+08\+\_\+18.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/protocol/gsm\+\_\+24\+\_\+301.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+bssgp\+\_\+rim.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/tlv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+msgb.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+bssgp\+\_\+prim}
\item 
struct \textbf{ bssgp\+\_\+flow\+\_\+control}
\begin{DoxyCompactList}\small\item\em BSSGP flow control (SGSN side) According to Section 8.\+2. \end{DoxyCompactList}\item 
struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx}
\item 
struct \textbf{ bssgp\+\_\+lv}
\item 
struct \textbf{ bssgp\+\_\+dl\+\_\+ud\+\_\+par}
\item 
struct \textbf{ bssgp\+\_\+paging\+\_\+info}
\begin{DoxyCompactList}\small\item\em BSSGP paging information. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ BSSGP\+\_\+\+PDUF\+\_\+\+UL}~0x0001 /$\ast$ PDU may occur in uplink $\ast$/
\item 
\#define \textbf{ BSSGP\+\_\+\+PDUF\+\_\+\+DL}~0x0002 /$\ast$ PDU may occur in downlink $\ast$/
\item 
\#define \textbf{ BSSGP\+\_\+\+PDUF\+\_\+\+SIG}~0x0004 /$\ast$ PDU may occur on Signaling BVC $\ast$/
\item 
\#define \textbf{ BSSGP\+\_\+\+PDUF\+\_\+\+PTP}~0x0008 /$\ast$ PDU may occur on \textbf{ PTP} BVC $\ast$/
\item 
\#define \textbf{ BSSGP\+\_\+\+PDUF\+\_\+\+PTM}~0x0010 /$\ast$ PDU may occur on \textbf{ PTM} BVC $\ast$/
\item 
\#define \textbf{ BVC\+\_\+\+S\+\_\+\+BLOCKED}~0x0001
\item 
\#define \textbf{ BVC\+\_\+\+F\+\_\+\+BLOCKED}~0x0001
\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef int($\ast$ \textbf{ bssgp\+\_\+bvc\+\_\+send}) (void $\ast$ctx, struct \textbf{ msgb} $\ast$\textbf{ msg})
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ bssgp\+\_\+prim} \{ \newline
\textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+DL\+\_\+\+UD}
, \newline
\textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+UL\+\_\+\+UD}
, \newline
\textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+PTM\+\_\+\+UD}
, \newline
\textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+GMM\+\_\+\+SUSPEND}
, \newline
\textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+GMM\+\_\+\+RESUME}
, \newline
\textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+GMM\+\_\+\+PAGING}
, \newline
\textbf{ PRIM\+\_\+\+NM\+\_\+\+FLUSH\+\_\+\+LL}
, \newline
\textbf{ PRIM\+\_\+\+NM\+\_\+\+LLC\+\_\+\+DISCARDED}
, \newline
\textbf{ PRIM\+\_\+\+NM\+\_\+\+BVC\+\_\+\+RESET}
, \newline
\textbf{ PRIM\+\_\+\+NM\+\_\+\+BVC\+\_\+\+BLOCK}
, \newline
\textbf{ PRIM\+\_\+\+NM\+\_\+\+BVC\+\_\+\+UNBLOCK}
, \newline
\textbf{ PRIM\+\_\+\+NM\+\_\+\+STATUS}
, \newline
\textbf{ PRIM\+\_\+\+BSSGP\+\_\+\+RIM\+\_\+\+PDU\+\_\+\+TRANSFER}
 \}
\item 
enum \textbf{ bssgp\+\_\+ctr} \{ \newline
\textbf{ BSSGP\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN}
, \newline
\textbf{ BSSGP\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT}
, \newline
\textbf{ BSSGP\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN}
, \newline
\textbf{ BSSGP\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT}
, \newline
\textbf{ BSSGP\+\_\+\+CTR\+\_\+\+BLOCKED}
, \newline
\textbf{ BSSGP\+\_\+\+CTR\+\_\+\+DISCARDED}
, \newline
\textbf{ BSSGP\+\_\+\+CTR\+\_\+\+STATUS}
 \}
\item 
enum \textbf{ bssgp\+\_\+paging\+\_\+mode} \{ \newline
\textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+PS}
, \newline
\textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+CS}
 \}
\begin{DoxyCompactList}\small\item\em BSSGP Paging mode. \end{DoxyCompactList}\item 
enum \textbf{ bssgp\+\_\+paging\+\_\+scope} \{ \newline
\textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+BSS\+\_\+\+AREA}
, \newline
\textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+LOCATION\+\_\+\+AREA}
, \newline
\textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+ROUTEING\+\_\+\+AREA}
, \newline
\textbf{ BSSGP\+\_\+\+PAGING\+\_\+\+BVCI}
 \}
\begin{DoxyCompactList}\small\item\em BSSGP Paging scope. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static uint32\+\_\+t \textbf{ bssgp\+\_\+pdu\+\_\+type\+\_\+flags} (uint8\+\_\+t \textbf{ pdu\+\_\+type})
\begin{DoxyCompactList}\small\item\em return the PDU type flags (UL/\+DL/\+SIG/\+PTP/\+PTM) of specified PDU type \end{DoxyCompactList}\item 
void \textbf{ bssgp\+\_\+set\+\_\+bssgp\+\_\+callback} (\textbf{ bssgp\+\_\+bvc\+\_\+send} ns\+\_\+send, void $\ast$\textbf{ data})
\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp\+\_\+msgb\+\_\+alloc} (void)
\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp\+\_\+msgb\+\_\+copy} (const struct \textbf{ msgb} $\ast$\textbf{ msg}, const char $\ast$\textbf{ name})
\item 
const char $\ast$ \textbf{ bssgp\+\_\+cause\+\_\+str} (enum \textbf{ gprs\+\_\+bssgp\+\_\+cause} \textbf{ cause})
\item 
const char $\ast$ \textbf{ bssgp\+\_\+pdu\+\_\+str} (enum \textbf{ bssgp\+\_\+pdu\+\_\+type} pdu)
\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\+\_\+simple\+\_\+bvci} (uint8\+\_\+t \textbf{ pdu\+\_\+type}, uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t \textbf{ bvci}, uint16\+\_\+t ns\+\_\+bvci)
\item 
int \textbf{ bssgp\+\_\+tx\+\_\+status} (uint8\+\_\+t \textbf{ cause}, uint16\+\_\+t $\ast$\textbf{ bvci}, struct \textbf{ msgb} $\ast$orig\+\_\+msg)
\item 
struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ \textbf{ btsctx\+\_\+alloc} (uint16\+\_\+t \textbf{ bvci}, uint16\+\_\+t \textbf{ nsei})
\item 
struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ \textbf{ btsctx\+\_\+by\+\_\+raid\+\_\+cid} (const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid, uint16\+\_\+t cid)
\item 
struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ \textbf{ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei} (uint16\+\_\+t \textbf{ bvci}, uint16\+\_\+t \textbf{ nsei})
\item 
void \textbf{ bssgp\+\_\+bvc\+\_\+ctx\+\_\+free} (struct \textbf{ bssgp\+\_\+bvc\+\_\+ctx} $\ast$ctx)
\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 
uint16\+\_\+t \textbf{ bssgp\+\_\+parse\+\_\+cell\+\_\+id} (struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid, const uint8\+\_\+t $\ast$buf)
\item 
int \textbf{ bssgp\+\_\+create\+\_\+cell\+\_\+id} (uint8\+\_\+t $\ast$buf, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$raid, uint16\+\_\+t cid)
\item 
static int \textbf{ bssgp\+\_\+tlv\+\_\+parse} (struct \textbf{ tlv\+\_\+parsed} $\ast$tp, const uint8\+\_\+t $\ast$buf, int \textbf{ len})
\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\+\_\+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\+\_\+in} (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 
void \textbf{ bssgp\+\_\+flush\+\_\+all\+\_\+queues} (void)
\begin{DoxyCompactList}\small\item\em Flush the queues of all BSSGP contexts. \end{DoxyCompactList}\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 
int \textbf{ bssgp\+\_\+vty\+\_\+init} (void)
\item 
void \textbf{ bssgp\+\_\+set\+\_\+log\+\_\+ss} (int ss) \textbf{ OSMO\+\_\+\+DEPRECATED}(\char`\"{}Use \textbf{ DLBSSGP} \textbf{ instead!\textbackslash{}n}\char`\"{})
\item 
int \textbf{ bssgp\+\_\+prim\+\_\+cb} (struct \textbf{ osmo\+\_\+prim\+\_\+hdr} $\ast$oph, void $\ast$ctx)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
const struct \textbf{ osmo\+\_\+tlv\+\_\+prot\+\_\+def} \textbf{ osmo\+\_\+pdef\+\_\+bssgp}
\item 
struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$ \textbf{ bssgp\+\_\+nsi}
\item 
struct \textbf{ llist\+\_\+head} \textbf{ bssgp\+\_\+bvc\+\_\+ctxts}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
GPRS BSSGP RIM protocol implementation as per 3GPP TS 48.\+018. 



\doxysubsection{Macro Definition Documentation}
\mbox{\label{gprs__bssgp_8h_ac087813643653e6def4e2c52e21bc706}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PDUF\_DL@{BSSGP\_PDUF\_DL}}
\index{BSSGP\_PDUF\_DL@{BSSGP\_PDUF\_DL}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{BSSGP\_PDUF\_DL}
{\footnotesize\ttfamily \#define BSSGP\+\_\+\+PDUF\+\_\+\+DL~0x0002 /$\ast$ PDU may occur in downlink $\ast$/}

\mbox{\label{gprs__bssgp_8h_a42f6a2705c368aeaa94216adbd00c143}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PDUF\_PTM@{BSSGP\_PDUF\_PTM}}
\index{BSSGP\_PDUF\_PTM@{BSSGP\_PDUF\_PTM}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{BSSGP\_PDUF\_PTM}
{\footnotesize\ttfamily \#define BSSGP\+\_\+\+PDUF\+\_\+\+PTM~0x0010 /$\ast$ PDU may occur on \textbf{ PTM} BVC $\ast$/}

\mbox{\label{gprs__bssgp_8h_a70154a6420fb45ba4d1850a79db7f444}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PDUF\_PTP@{BSSGP\_PDUF\_PTP}}
\index{BSSGP\_PDUF\_PTP@{BSSGP\_PDUF\_PTP}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{BSSGP\_PDUF\_PTP}
{\footnotesize\ttfamily \#define BSSGP\+\_\+\+PDUF\+\_\+\+PTP~0x0008 /$\ast$ PDU may occur on \textbf{ PTP} BVC $\ast$/}

\mbox{\label{gprs__bssgp_8h_a122bac56e8c82142d153c91ad6a360d8}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PDUF\_SIG@{BSSGP\_PDUF\_SIG}}
\index{BSSGP\_PDUF\_SIG@{BSSGP\_PDUF\_SIG}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{BSSGP\_PDUF\_SIG}
{\footnotesize\ttfamily \#define BSSGP\+\_\+\+PDUF\+\_\+\+SIG~0x0004 /$\ast$ PDU may occur on Signaling BVC $\ast$/}

\mbox{\label{gprs__bssgp_8h_a3f8d4f9a2d508b0574aa0d3d1c1fff29}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PDUF\_UL@{BSSGP\_PDUF\_UL}}
\index{BSSGP\_PDUF\_UL@{BSSGP\_PDUF\_UL}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{BSSGP\_PDUF\_UL}
{\footnotesize\ttfamily \#define BSSGP\+\_\+\+PDUF\+\_\+\+UL~0x0001 /$\ast$ PDU may occur in uplink $\ast$/}

\mbox{\label{gprs__bssgp_8h_acafbc480c1da3de742fd2f4497e28c64}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BVC\_F\_BLOCKED@{BVC\_F\_BLOCKED}}
\index{BVC\_F\_BLOCKED@{BVC\_F\_BLOCKED}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{BVC\_F\_BLOCKED}
{\footnotesize\ttfamily \#define BVC\+\_\+\+F\+\_\+\+BLOCKED~0x0001}

\mbox{\label{gprs__bssgp_8h_ae34bda54c43f3b8d3734524d8cf72434}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BVC\_S\_BLOCKED@{BVC\_S\_BLOCKED}}
\index{BVC\_S\_BLOCKED@{BVC\_S\_BLOCKED}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{BVC\_S\_BLOCKED}
{\footnotesize\ttfamily \#define BVC\+\_\+\+S\+\_\+\+BLOCKED~0x0001}



\doxysubsection{Typedef Documentation}
\mbox{\label{gprs__bssgp_8h_aa1ea7b012bec06bf8423c438d7128143}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_bvc\_send@{bssgp\_bvc\_send}}
\index{bssgp\_bvc\_send@{bssgp\_bvc\_send}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_bvc\_send}
{\footnotesize\ttfamily typedef int($\ast$ bssgp\+\_\+bvc\+\_\+send) (void $\ast$ctx, struct \textbf{ msgb} $\ast$\textbf{ msg})}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{gprs__bssgp_8h_acba675b97b0d09f32fec5862b85eaf3e}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_ctr@{bssgp\_ctr}}
\index{bssgp\_ctr@{bssgp\_ctr}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_ctr}
{\footnotesize\ttfamily enum \textbf{ bssgp\+\_\+ctr}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_CTR\_PKTS\_IN@{BSSGP\_CTR\_PKTS\_IN}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_CTR\_PKTS\_IN@{BSSGP\_CTR\_PKTS\_IN}}}\mbox{\label{gprs__bssgp_8h_acba675b97b0d09f32fec5862b85eaf3ea5f5d6c27c2d4c76838f5113a2d550e1d}} 
BSSGP\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_CTR\_PKTS\_OUT@{BSSGP\_CTR\_PKTS\_OUT}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_CTR\_PKTS\_OUT@{BSSGP\_CTR\_PKTS\_OUT}}}\mbox{\label{gprs__bssgp_8h_acba675b97b0d09f32fec5862b85eaf3eaaa67473692137655a60238c8012fa347}} 
BSSGP\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_CTR\_BYTES\_IN@{BSSGP\_CTR\_BYTES\_IN}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_CTR\_BYTES\_IN@{BSSGP\_CTR\_BYTES\_IN}}}\mbox{\label{gprs__bssgp_8h_acba675b97b0d09f32fec5862b85eaf3ead89c21b89525f3678f498234636b5971}} 
BSSGP\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_CTR\_BYTES\_OUT@{BSSGP\_CTR\_BYTES\_OUT}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_CTR\_BYTES\_OUT@{BSSGP\_CTR\_BYTES\_OUT}}}\mbox{\label{gprs__bssgp_8h_acba675b97b0d09f32fec5862b85eaf3ea758f9040772315dabadb862c9af7e839}} 
BSSGP\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_CTR\_BLOCKED@{BSSGP\_CTR\_BLOCKED}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_CTR\_BLOCKED@{BSSGP\_CTR\_BLOCKED}}}\mbox{\label{gprs__bssgp_8h_acba675b97b0d09f32fec5862b85eaf3eaad56e3ce41f0cd9f57e76ca1270b8aac}} 
BSSGP\+\_\+\+CTR\+\_\+\+BLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_CTR\_DISCARDED@{BSSGP\_CTR\_DISCARDED}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_CTR\_DISCARDED@{BSSGP\_CTR\_DISCARDED}}}\mbox{\label{gprs__bssgp_8h_acba675b97b0d09f32fec5862b85eaf3ea1f8def93821f380d1c99a38b4d5fee12}} 
BSSGP\+\_\+\+CTR\+\_\+\+DISCARDED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_CTR\_STATUS@{BSSGP\_CTR\_STATUS}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_CTR\_STATUS@{BSSGP\_CTR\_STATUS}}}\mbox{\label{gprs__bssgp_8h_acba675b97b0d09f32fec5862b85eaf3eacfd6d705f74ee59f7a72f09438e71e3a}} 
BSSGP\+\_\+\+CTR\+\_\+\+STATUS&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__bssgp_8h_a52fcf9dd5a508afea36d758c00fcaaf9}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_paging\_mode@{bssgp\_paging\_mode}}
\index{bssgp\_paging\_mode@{bssgp\_paging\_mode}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_paging\_mode}
{\footnotesize\ttfamily enum \textbf{ bssgp\+\_\+paging\+\_\+mode}}



BSSGP Paging mode. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_PAGING\_PS@{BSSGP\_PAGING\_PS}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PAGING\_PS@{BSSGP\_PAGING\_PS}}}\mbox{\label{gprs__bssgp_8h_a52fcf9dd5a508afea36d758c00fcaaf9a08f8745713903661146f4130fe6f8777}} 
BSSGP\+\_\+\+PAGING\+\_\+\+PS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_PAGING\_CS@{BSSGP\_PAGING\_CS}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PAGING\_CS@{BSSGP\_PAGING\_CS}}}\mbox{\label{gprs__bssgp_8h_a52fcf9dd5a508afea36d758c00fcaaf9ad1a7b4365e8f3acb7c8db1253773f402}} 
BSSGP\+\_\+\+PAGING\+\_\+\+CS&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__bssgp_8h_ad19432a6bb28b1a4ad1864f79e67aaa7}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_paging\_scope@{bssgp\_paging\_scope}}
\index{bssgp\_paging\_scope@{bssgp\_paging\_scope}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_paging\_scope}
{\footnotesize\ttfamily enum \textbf{ bssgp\+\_\+paging\+\_\+scope}}



BSSGP Paging scope. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_PAGING\_BSS\_AREA@{BSSGP\_PAGING\_BSS\_AREA}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PAGING\_BSS\_AREA@{BSSGP\_PAGING\_BSS\_AREA}}}\mbox{\label{gprs__bssgp_8h_ad19432a6bb28b1a4ad1864f79e67aaa7ae168b6de8772463815efe142c9673483}} 
BSSGP\+\_\+\+PAGING\+\_\+\+BSS\+\_\+\+AREA&all cells in BSS \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_PAGING\_LOCATION\_AREA@{BSSGP\_PAGING\_LOCATION\_AREA}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PAGING\_LOCATION\_AREA@{BSSGP\_PAGING\_LOCATION\_AREA}}}\mbox{\label{gprs__bssgp_8h_ad19432a6bb28b1a4ad1864f79e67aaa7a99fc29f24f451321e4fa5835ab4ff980}} 
BSSGP\+\_\+\+PAGING\+\_\+\+LOCATION\+\_\+\+AREA&all cells in LA \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_PAGING\_ROUTEING\_AREA@{BSSGP\_PAGING\_ROUTEING\_AREA}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PAGING\_ROUTEING\_AREA@{BSSGP\_PAGING\_ROUTEING\_AREA}}}\mbox{\label{gprs__bssgp_8h_ad19432a6bb28b1a4ad1864f79e67aaa7a2ee71e6b83b6a4bb3509855683085781}} 
BSSGP\+\_\+\+PAGING\+\_\+\+ROUTEING\+\_\+\+AREA&all cells in RA \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BSSGP\_PAGING\_BVCI@{BSSGP\_PAGING\_BVCI}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!BSSGP\_PAGING\_BVCI@{BSSGP\_PAGING\_BVCI}}}\mbox{\label{gprs__bssgp_8h_ad19432a6bb28b1a4ad1864f79e67aaa7aa267fe1767a6c6bdd5ee4bf91b38c38c}} 
BSSGP\+\_\+\+PAGING\+\_\+\+BVCI&one cell \\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_prim@{bssgp\_prim}}
\index{bssgp\_prim@{bssgp\_prim}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_prim}
{\footnotesize\ttfamily enum \textbf{ bssgp\+\_\+prim}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_BSSGP\_DL\_UD@{PRIM\_BSSGP\_DL\_UD}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_BSSGP\_DL\_UD@{PRIM\_BSSGP\_DL\_UD}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20ac6d190d5a534d321f505aef073b95828}} 
PRIM\+\_\+\+BSSGP\+\_\+\+DL\+\_\+\+UD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_BSSGP\_UL\_UD@{PRIM\_BSSGP\_UL\_UD}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_BSSGP\_UL\_UD@{PRIM\_BSSGP\_UL\_UD}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20ae283406a39fdb39b40c0431e36d0964d}} 
PRIM\+\_\+\+BSSGP\+\_\+\+UL\+\_\+\+UD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_BSSGP\_PTM\_UD@{PRIM\_BSSGP\_PTM\_UD}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_BSSGP\_PTM\_UD@{PRIM\_BSSGP\_PTM\_UD}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20a1fec06be7dd5ad4fc94984cef095057c}} 
PRIM\+\_\+\+BSSGP\+\_\+\+PTM\+\_\+\+UD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_BSSGP\_GMM\_SUSPEND@{PRIM\_BSSGP\_GMM\_SUSPEND}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_BSSGP\_GMM\_SUSPEND@{PRIM\_BSSGP\_GMM\_SUSPEND}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20a276c3b1f4cc577ba45dad503f534216d}} 
PRIM\+\_\+\+BSSGP\+\_\+\+GMM\+\_\+\+SUSPEND&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_BSSGP\_GMM\_RESUME@{PRIM\_BSSGP\_GMM\_RESUME}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_BSSGP\_GMM\_RESUME@{PRIM\_BSSGP\_GMM\_RESUME}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20a612c23c6c63c5d6e7c7e937a0c646e04}} 
PRIM\+\_\+\+BSSGP\+\_\+\+GMM\+\_\+\+RESUME&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_BSSGP\_GMM\_PAGING@{PRIM\_BSSGP\_GMM\_PAGING}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_BSSGP\_GMM\_PAGING@{PRIM\_BSSGP\_GMM\_PAGING}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20a86e3d4c7b03ef3df0babb4dfba51e048}} 
PRIM\+\_\+\+BSSGP\+\_\+\+GMM\+\_\+\+PAGING&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_NM\_FLUSH\_LL@{PRIM\_NM\_FLUSH\_LL}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_NM\_FLUSH\_LL@{PRIM\_NM\_FLUSH\_LL}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20a53f9e33ff2c5cb67305a310073dccbbe}} 
PRIM\+\_\+\+NM\+\_\+\+FLUSH\+\_\+\+LL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_NM\_LLC\_DISCARDED@{PRIM\_NM\_LLC\_DISCARDED}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_NM\_LLC\_DISCARDED@{PRIM\_NM\_LLC\_DISCARDED}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20ac525af6629d83595b37a57441aecd61b}} 
PRIM\+\_\+\+NM\+\_\+\+LLC\+\_\+\+DISCARDED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_NM\_BVC\_RESET@{PRIM\_NM\_BVC\_RESET}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_NM\_BVC\_RESET@{PRIM\_NM\_BVC\_RESET}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20aacaa30ab49baa42d4b859e49a7a84c3f}} 
PRIM\+\_\+\+NM\+\_\+\+BVC\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_NM\_BVC\_BLOCK@{PRIM\_NM\_BVC\_BLOCK}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_NM\_BVC\_BLOCK@{PRIM\_NM\_BVC\_BLOCK}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20a934625e056d0a75c5ae04dd36968be0b}} 
PRIM\+\_\+\+NM\+\_\+\+BVC\+\_\+\+BLOCK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_NM\_BVC\_UNBLOCK@{PRIM\_NM\_BVC\_UNBLOCK}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_NM\_BVC\_UNBLOCK@{PRIM\_NM\_BVC\_UNBLOCK}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20a05d907eedb06518a4c27ff98f275e951}} 
PRIM\+\_\+\+NM\+\_\+\+BVC\+\_\+\+UNBLOCK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_NM\_STATUS@{PRIM\_NM\_STATUS}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_NM\_STATUS@{PRIM\_NM\_STATUS}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20a4ffcee5c03adad452259f91271ec44f0}} 
PRIM\+\_\+\+NM\+\_\+\+STATUS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIM\_BSSGP\_RIM\_PDU\_TRANSFER@{PRIM\_BSSGP\_RIM\_PDU\_TRANSFER}!gprs\_bssgp.h@{gprs\_bssgp.h}}\index{gprs\_bssgp.h@{gprs\_bssgp.h}!PRIM\_BSSGP\_RIM\_PDU\_TRANSFER@{PRIM\_BSSGP\_RIM\_PDU\_TRANSFER}}}\mbox{\label{gprs__bssgp_8h_a588c2193fbc3f087a3c019daae08fe20ad50087fb669ca95099dc6b5b5c07d024}} 
PRIM\+\_\+\+BSSGP\+\_\+\+RIM\+\_\+\+PDU\+\_\+\+TRANSFER&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{gprs__bssgp_8h_aad568539266986434182a416c7418983}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_bvc\_ctx\_free@{bssgp\_bvc\_ctx\_free}}
\index{bssgp\_bvc\_ctx\_free@{bssgp\_bvc\_ctx\_free}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_ac135944ac79774324810b7d7fb84c9f0}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_cause\_str@{bssgp\_cause\_str}}
\index{bssgp\_cause\_str@{bssgp\_cause\_str}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_cause\_str()}
{\footnotesize\ttfamily const char $\ast$ bssgp\+\_\+cause\+\_\+str (\begin{DoxyParamCaption}\item[{enum \textbf{ gprs\+\_\+bssgp\+\_\+cause}}]{cause }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+cause\+\_\+strings}, \textbf{ cause}, and \textbf{ get\+\_\+value\+\_\+string()}.



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+allstate()}, \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+blocked()}, \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+unblocked()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+reset()}, \textbf{ bssgp\+\_\+rx\+\_\+status()}, \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+block()}, \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+ptp\+\_\+reset()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ common\+\_\+tx\+\_\+radio\+\_\+status2()}, and \textbf{ tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci()}.

\mbox{\label{gprs__bssgp_8h_aab23b9c5ef7e25dbb4894b43eadb94cc}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_create\_cell\_id@{bssgp\_create\_cell\_id}}
\index{bssgp\_create\_cell\_id@{bssgp\_create\_cell\_id}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_a291684f8e48bdcfd0bf492ecfc2fe10f}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_fc\_flush\_queue@{bssgp\_fc\_flush\_queue}}
\index{bssgp\_fc\_flush\_queue@{bssgp\_fc\_flush\_queue}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_af18185da9d3eee1e61c28d13f716479b}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_fc\_in@{bssgp\_fc\_in}}
\index{bssgp\_fc\_in@{bssgp\_fc\_in}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_ae909801dfb274c44ed85c30e0154cdb0}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_fc\_init@{bssgp\_fc\_init}}
\index{bssgp\_fc\_init@{bssgp\_fc\_init}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_a93529d3a568de7b575f23761fd0bde90}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_fc\_ms\_init@{bssgp\_fc\_ms\_init}}
\index{bssgp\_fc\_ms\_init@{bssgp\_fc\_ms\_init}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_ad64feb6bd0a3c188685de75cf9eb9388}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_flush\_all\_queues@{bssgp\_flush\_all\_queues}}
\index{bssgp\_flush\_all\_queues@{bssgp\_flush\_all\_queues}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_ad6dae2d5136390ed52d994b494377b18}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_msgb\_alloc@{bssgp\_msgb\_alloc}}
\index{bssgp\_msgb\_alloc@{bssgp\_msgb\_alloc}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_msgb\_alloc()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp\+\_\+msgb\+\_\+alloc (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



References \textbf{ msg}, \textbf{ msgb\+\_\+alloc\+\_\+headroom()}, \textbf{ msgb\+\_\+bssgph}, and \textbf{ OSMO\+\_\+\+ASSERT}.



Referenced by \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+block()}, \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+block\+\_\+ack()}, \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+reset()}, \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+reset\+\_\+ack()}, \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+unblock()}, \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+unblock\+\_\+ack()}, \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+bvc()}, \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+bvc\+\_\+ack()}, \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+ms()}, \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+ms\+\_\+ack()}, \textbf{ bssgp2\+\_\+enc\+\_\+flush\+\_\+ll()}, \textbf{ bssgp2\+\_\+enc\+\_\+status()}, \textbf{ bssgp\+\_\+encode\+\_\+rim\+\_\+pdu()}, \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\+\_\+simple\+\_\+bvci()}, \textbf{ bssgp\+\_\+tx\+\_\+status()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+ack()}, \textbf{ bssgp\+\_\+tx\+\_\+suspend\+\_\+nack()}, \textbf{ common\+\_\+tx\+\_\+radio\+\_\+status()}, and \textbf{ tx\+\_\+bvc\+\_\+reset\+\_\+nsei\+\_\+bvci()}.

\mbox{\label{gprs__bssgp_8h_a0da4d8b82755a46c921c4b2aaf28dd7b}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_msgb\_copy@{bssgp\_msgb\_copy}}
\index{bssgp\_msgb\_copy@{bssgp\_msgb\_copy}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_msgb\_copy()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp\+\_\+msgb\+\_\+copy (\begin{DoxyParamCaption}\item[{const struct \textbf{ msgb} $\ast$}]{msg,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



References \textbf{ msgb\+::\+\_\+data}, \textbf{ libgb\+\_\+msgb\+\_\+cb\+::bssgp\+\_\+cell\+\_\+id}, \textbf{ libgb\+\_\+msgb\+\_\+cb\+::bssgph}, \textbf{ libgb\+\_\+msgb\+\_\+cb\+::bvci}, \textbf{ LIBGB\+\_\+\+MSGB\+\_\+\+CB}, \textbf{ libgb\+\_\+msgb\+\_\+cb\+::llch}, \textbf{ msg}, \textbf{ msgb\+\_\+copy()}, \textbf{ name}, \textbf{ libgb\+\_\+msgb\+\_\+cb\+::nsei}, and \textbf{ libgb\+\_\+msgb\+\_\+cb\+::tlli}.

\mbox{\label{gprs__bssgp_8h_a8a0554704834b44454e34748b0a71c0f}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_parse\_cell\_id@{bssgp\_parse\_cell\_id}}
\index{bssgp\_parse\_cell\_id@{bssgp\_parse\_cell\_id}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_ab532d740ac429042753607ed8874e274}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_pdu\_str@{bssgp\_pdu\_str}}
\index{bssgp\_pdu\_str@{bssgp\_pdu\_str}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_pdu\_str()}
{\footnotesize\ttfamily const char $\ast$ bssgp\+\_\+pdu\+\_\+str (\begin{DoxyParamCaption}\item[{enum \textbf{ bssgp\+\_\+pdu\+\_\+type}}]{pdu }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+pdu\+\_\+strings}, and \textbf{ get\+\_\+value\+\_\+string()}.



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

\mbox{\label{gprs__bssgp_8h_a6377d3d4a6947bf4d61a541d780a967b}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_pdu\_type\_flags@{bssgp\_pdu\_type\_flags}}
\index{bssgp\_pdu\_type\_flags@{bssgp\_pdu\_type\_flags}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_pdu\_type\_flags()}
{\footnotesize\ttfamily static uint32\+\_\+t bssgp\+\_\+pdu\+\_\+type\+\_\+flags (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{pdu\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



return the PDU type flags (UL/\+DL/\+SIG/\+PTP/\+PTM) of specified PDU type 



References \textbf{ osmo\+\_\+pdef\+\_\+bssgp}, \textbf{ osmo\+\_\+tlv\+\_\+prot\+\_\+msgt\+\_\+flags()}, and \textbf{ pdu\+\_\+type}.

\mbox{\label{gprs__bssgp_8h_a67c4484d48f92882aa76843fcaf908c2}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_prim\_cb@{bssgp\_prim\_cb}}
\index{bssgp\_prim\_cb@{bssgp\_prim\_cb}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_prim\_cb()}
{\footnotesize\ttfamily int bssgp\+\_\+prim\+\_\+cb (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+prim\+\_\+hdr} $\ast$}]{oph,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})}



Referenced by \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\+\_\+status()}, \textbf{ bssgp\+\_\+rx\+\_\+suspend()}, and \textbf{ bssgp\+\_\+rx\+\_\+ul\+\_\+ud()}.

\mbox{\label{gprs__bssgp_8h_a17b24f1f586729b4fa5c7aae0ffd2669}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_rcvmsg@{bssgp\_rcvmsg}}
\index{bssgp\_rcvmsg@{bssgp\_rcvmsg}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_a76b5db5a98b2548172ef61163cac8bca}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_set\_bssgp\_callback@{bssgp\_set\_bssgp\_callback}}
\index{bssgp\_set\_bssgp\_callback@{bssgp\_set\_bssgp\_callback}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_adc873779d51e6d6c5e669df0236e0c08}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_set\_log\_ss@{bssgp\_set\_log\_ss}}
\index{bssgp\_set\_log\_ss@{bssgp\_set\_log\_ss}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_set\_log\_ss()}
{\footnotesize\ttfamily void bssgp\+\_\+set\+\_\+log\+\_\+ss (\begin{DoxyParamCaption}\item[{int}]{ss }\end{DoxyParamCaption})}

\mbox{\label{gprs__bssgp_8h_aefbd4c57d2f7d1a604fe58229fedb23a}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_tlv\_parse@{bssgp\_tlv\_parse}}
\index{bssgp\_tlv\_parse@{bssgp\_tlv\_parse}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_tlv\_parse()}
{\footnotesize\ttfamily static int bssgp\+\_\+tlv\+\_\+parse (\begin{DoxyParamCaption}\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{const uint8\+\_\+t $\ast$}]{buf,  }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ len()}, \textbf{ tlv\+\_\+parse()}, and \textbf{ tvlv\+\_\+att\+\_\+def}.



Referenced by \textbf{ bssgp\+\_\+rcvmsg()}, and \textbf{ bssgp\+\_\+rx\+\_\+paging()}.

\mbox{\label{gprs__bssgp_8h_afa47eb940961a940fad10c6b808b2c09}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!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.h@{gprs\_bssgp.h}}
\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_8h_ae07840bc5aca86dfb3144bc1e5bd2fc9}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_tx\_dl\_ud@{bssgp\_tx\_dl\_ud}}
\index{bssgp\_tx\_dl\_ud@{bssgp\_tx\_dl\_ud}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_ab00bbbd15687a6440fb3887d10297224}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_tx\_paging@{bssgp\_tx\_paging}}
\index{bssgp\_tx\_paging@{bssgp\_tx\_paging}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_a3e64c5a2dba7519668b780f45fc74f07}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_tx\_simple\_bvci@{bssgp\_tx\_simple\_bvci}}
\index{bssgp\_tx\_simple\_bvci@{bssgp\_tx\_simple\_bvci}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_tx\_simple\_bvci()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+simple\+\_\+bvci (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{pdu\+\_\+type,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{uint16\+\_\+t}]{ns\+\_\+bvci }\end{DoxyParamCaption})}



References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, \textbf{ bvci}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ nsei}, \textbf{ osmo\+\_\+htons}, \textbf{ pdu\+\_\+type}, and \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+unblocked()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+block()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+reset()}, and \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+unblock()}.

\mbox{\label{gprs__bssgp_8h_aefa4aef5a1f62b373c087781bbe73e3a}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_tx\_status@{bssgp\_tx\_status}}
\index{bssgp\_tx\_status@{bssgp\_tx\_status}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_tx\_status()}
{\footnotesize\ttfamily int bssgp\+\_\+tx\+\_\+status (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{cause,  }\item[{uint16\+\_\+t $\ast$}]{bvci,  }\item[{struct \textbf{ msgb} $\ast$}]{orig\+\_\+msg }\end{DoxyParamCaption})}



References \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+BVCI\+\_\+\+BLOCKED}, \textbf{ bssgp\+\_\+cause\+\_\+str()}, \textbf{ BSSGP\+\_\+\+CAUSE\+\_\+\+UNKNOWN\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+PDU\+\_\+\+IN\+\_\+\+ERROR}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ bssgp\+\_\+ns\+\_\+send}, \textbf{ bssgp\+\_\+ns\+\_\+send\+\_\+data}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ bvci}, \textbf{ cause}, \textbf{ DLBSSGP}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bssgp\+\_\+len}, \textbf{ msgb\+\_\+bssgph}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ osmo\+\_\+htons}, and \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ bssgp\+\_\+rcvmsg()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+block()}, \textbf{ bssgp\+\_\+rx\+\_\+bvc\+\_\+unblock()}, \textbf{ bssgp\+\_\+rx\+\_\+fc\+\_\+bvc()}, \textbf{ bssgp\+\_\+rx\+\_\+llc\+\_\+disc()}, \textbf{ bssgp\+\_\+rx\+\_\+ptp()}, \textbf{ bssgp\+\_\+rx\+\_\+resume()}, \textbf{ bssgp\+\_\+rx\+\_\+rim()}, \textbf{ bssgp\+\_\+rx\+\_\+sign()}, \textbf{ bssgp\+\_\+rx\+\_\+suspend()}, and \textbf{ bssgp\+\_\+rx\+\_\+ul\+\_\+ud()}.

\mbox{\label{gprs__bssgp_8h_acf8050dc08e36ce62f003a3c8a8af7b4}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_vty\_init@{bssgp\_vty\_init}}
\index{bssgp\_vty\_init@{bssgp\_vty\_init}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_vty\_init()}
{\footnotesize\ttfamily int bssgp\+\_\+vty\+\_\+init (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



References \textbf{ bssgp\+\_\+node}, \textbf{ CFG\+\_\+\+LOG\+\_\+\+NODE}, \textbf{ CONFIG\+\_\+\+NODE}, \textbf{ config\+\_\+write\+\_\+bssgp()}, \textbf{ install\+\_\+lib\+\_\+element()}, \textbf{ install\+\_\+lib\+\_\+element\+\_\+ve()}, and \textbf{ install\+\_\+node()}.

\mbox{\label{gprs__bssgp_8h_a35ddef0081e4606a60a2d2c1c9756f79}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!btsctx\_alloc@{btsctx\_alloc}}
\index{btsctx\_alloc@{btsctx\_alloc}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_a618ce884b53d92e63e401b09677d9a35}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!btsctx\_by\_bvci\_nsei@{btsctx\_by\_bvci\_nsei}}
\index{btsctx\_by\_bvci\_nsei@{btsctx\_by\_bvci\_nsei}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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_8h_af96d4cba93429cc761a8d1a61303ecdd}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!btsctx\_by\_raid\_cid@{btsctx\_by\_raid\_cid}}
\index{btsctx\_by\_raid\_cid@{btsctx\_by\_raid\_cid}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\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}.



\doxysubsection{Variable Documentation}
\mbox{\label{gprs__bssgp_8h_aca86b756352692871de9f609e4a8ee9e}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_bvc\_ctxts@{bssgp\_bvc\_ctxts}}
\index{bssgp\_bvc\_ctxts@{bssgp\_bvc\_ctxts}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_bvc\_ctxts}
{\footnotesize\ttfamily struct \textbf{ llist\+\_\+head} bssgp\+\_\+bvc\+\_\+ctxts\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ bssgp\+\_\+flush\+\_\+all\+\_\+queues()}, \textbf{ bssgp\+\_\+tx\+\_\+bvc\+\_\+ptp\+\_\+reset()}, \textbf{ btsctx\+\_\+alloc()}, \textbf{ btsctx\+\_\+by\+\_\+bvci\+\_\+nsei()}, \textbf{ btsctx\+\_\+by\+\_\+raid\+\_\+cid()}, \textbf{ DEFUN()}, and \textbf{ dump\+\_\+bssgp()}.

\mbox{\label{gprs__bssgp_8h_a7abd4b99378cd62a1fe7ae8edeaba1f9}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!bssgp\_nsi@{bssgp\_nsi}}
\index{bssgp\_nsi@{bssgp\_nsi}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{bssgp\_nsi}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns\+\_\+inst}$\ast$ bssgp\+\_\+nsi\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ \+\_\+gprs\+\_\+ns\+\_\+sendmsg()}.

\mbox{\label{gprs__bssgp_8h_a69e4a98967a7fbd317b9fb32d17db7f7}} 
\index{gprs\_bssgp.h@{gprs\_bssgp.h}!osmo\_pdef\_bssgp@{osmo\_pdef\_bssgp}}
\index{osmo\_pdef\_bssgp@{osmo\_pdef\_bssgp}!gprs\_bssgp.h@{gprs\_bssgp.h}}
\doxysubsubsection{osmo\_pdef\_bssgp}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+tlv\+\_\+prot\+\_\+def} osmo\+\_\+pdef\+\_\+bssgp\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ bssgp\+\_\+parse\+\_\+rim\+\_\+pdu()}, \textbf{ bssgp\+\_\+pdu\+\_\+type\+\_\+flags()}, \textbf{ fi\+\_\+tx\+\_\+ptp()}, and \textbf{ fi\+\_\+tx\+\_\+sig()}.

