\doxysection{src/gb/gprs\+\_\+bssgp2.c File Reference}
\label{gprs__bssgp2_8c}\index{src/gb/gprs\_bssgp2.c@{src/gb/gprs\_bssgp2.c}}
{\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/byteswap.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/gsm48.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gsm/tlv.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+ns2.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+bssgp.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+bssgp2.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \textbf{ bssgp2\+\_\+nsi\+\_\+tx\+\_\+ptp} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t \textbf{ bvci}, struct \textbf{ msgb} $\ast$\textbf{ msg}, uint32\+\_\+t lsp)
\begin{DoxyCompactList}\small\item\em transmit BSSGP PDU over NS (PTP BVC) \end{DoxyCompactList}\item 
int \textbf{ bssgp2\+\_\+nsi\+\_\+tx\+\_\+sig} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, uint16\+\_\+t \textbf{ nsei}, struct \textbf{ msgb} $\ast$\textbf{ msg}, uint32\+\_\+t lsp)
\begin{DoxyCompactList}\small\item\em transmit BSSGP PDU over NS (SIGNALING BVC) \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+block} (uint16\+\_\+t \textbf{ bvci}, enum \textbf{ gprs\+\_\+bssgp\+\_\+cause} \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Encode BSSGP BVC-\/\+BLOCK PDU as per TS 48.\+018 Section 10.\+4.\+8. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+block\+\_\+ack} (uint16\+\_\+t \textbf{ bvci})
\begin{DoxyCompactList}\small\item\em Encode BSSGP BVC-\/\+BLOCK-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+9. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+unblock} (uint16\+\_\+t \textbf{ bvci})
\begin{DoxyCompactList}\small\item\em Encode BSSGP BVC-\/\+UNBLOCK PDU as per TS 48.\+018 Section 10.\+4.\+10. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+unblock\+\_\+ack} (uint16\+\_\+t \textbf{ bvci})
\begin{DoxyCompactList}\small\item\em Encode BSSGP BVC-\/\+UNBLOCK-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+11. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+reset} (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, const uint8\+\_\+t $\ast$feat\+\_\+bm, const uint8\+\_\+t $\ast$ext\+\_\+feat\+\_\+bm)
\begin{DoxyCompactList}\small\item\em Encode BSSGP BVC-\/\+RESET PDU as per TS 48.\+018 Section 10.\+4.\+12. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+bvc\+\_\+reset\+\_\+ack} (uint16\+\_\+t \textbf{ bvci}, const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$\textbf{ ra\+\_\+id}, uint16\+\_\+t cell\+\_\+id, const uint8\+\_\+t $\ast$feat\+\_\+bm, const uint8\+\_\+t $\ast$ext\+\_\+feat\+\_\+bm)
\begin{DoxyCompactList}\small\item\em Encode BSSGP BVC-\/\+RESET-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+13. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+status} (uint8\+\_\+t \textbf{ cause}, const uint16\+\_\+t $\ast$\textbf{ bvci}, const struct \textbf{ msgb} $\ast$orig\+\_\+msg, uint16\+\_\+t max\+\_\+pdu\+\_\+len)
\begin{DoxyCompactList}\small\item\em Encode BSSGP STATUS PDU as per TS 48.\+018 Section 10.\+4.\+14. \end{DoxyCompactList}\item 
int \textbf{ bssgp2\+\_\+dec\+\_\+fc\+\_\+bvc} (struct \textbf{ bssgp2\+\_\+flow\+\_\+ctrl} $\ast$fc, const struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\begin{DoxyCompactList}\small\item\em Decode a FLOW-\/\+CONTROL-\/\+BVC PDU as per TS 48.\+018 Section 10.\+4.\+4. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+bvc} (const struct \textbf{ bssgp2\+\_\+flow\+\_\+ctrl} $\ast$fc, enum \textbf{ bssgp\+\_\+fc\+\_\+granularity} $\ast$gran)
\begin{DoxyCompactList}\small\item\em Encode a FLOW-\/\+CONTROL-\/\+BVC PDU as per TS 48.\+018 Section 10.\+4.\+4. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+flush\+\_\+ll} (uint32\+\_\+t \textbf{ tlli}, uint16\+\_\+t old\+\_\+bvci, const uint16\+\_\+t $\ast$new\+\_\+bvci, const uint16\+\_\+t $\ast$\textbf{ nsei})
\begin{DoxyCompactList}\small\item\em Encode BSSGP FLUSH-\/\+LL PDU as per TS 48.\+018 Section 10.\+4.\+1. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+bvc\+\_\+ack} (uint8\+\_\+t tag)
\begin{DoxyCompactList}\small\item\em Encode a FLOW-\/\+CONTROL-\/\+BVC-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+4. \end{DoxyCompactList}\item 
int \textbf{ bssgp2\+\_\+dec\+\_\+fc\+\_\+ms} (struct \textbf{ bssgp2\+\_\+flow\+\_\+ctrl} $\ast$fc, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\begin{DoxyCompactList}\small\item\em Decode a FLOW-\/\+CONTROL-\/\+MS PDU as per TS 48.\+018 Section 10.\+4.\+6. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+ms} (const struct \textbf{ bssgp2\+\_\+flow\+\_\+ctrl} $\ast$fc, enum \textbf{ bssgp\+\_\+fc\+\_\+granularity} $\ast$gran)
\begin{DoxyCompactList}\small\item\em Encode a FLOW-\/\+CONTROL-\/\+MS PDU as per TS 48.\+018 Section 10.\+4.\+6. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+ms\+\_\+ack} (uint32\+\_\+t \textbf{ tlli}, uint8\+\_\+t tag)
\begin{DoxyCompactList}\small\item\em Encode a FLOW-\/\+CONTROL-\/\+BVC-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+7. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static const unsigned int \textbf{ bssgp\+\_\+fc\+\_\+gran\+\_\+tbl} [$\,$]
\end{DoxyCompactItemize}


\doxysubsection{Function Documentation}
\mbox{\label{gprs__bssgp2_8c_aba187394edb33bbb4b2129068879f7ff}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_dec\_fc\_bvc@{bssgp2\_dec\_fc\_bvc}}
\index{bssgp2\_dec\_fc\_bvc@{bssgp2\_dec\_fc\_bvc}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_dec\_fc\_bvc()}
{\footnotesize\ttfamily int bssgp2\+\_\+dec\+\_\+fc\+\_\+bvc (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp2\+\_\+flow\+\_\+ctrl} $\ast$}]{fc,  }\item[{const struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})}



Decode a FLOW-\/\+CONTROL-\/\+BVC PDU as per TS 48.\+018 Section 10.\+4.\+4. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em fc} & caller-\/allocated memory for parsed output \\
\hline
\mbox{\texttt{ in}}  & {\em tp} & pre-\/parsed TLVs; caller must ensure mandatory IE presence/length \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bmax\+\_\+default\+\_\+ms}, \textbf{ bssgp\+\_\+fc\+\_\+gran\+\_\+tbl}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BMAX\+\_\+\+DEFAULT\+\_\+\+MS}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BUCKET\+\_\+\+FULL\+\_\+\+RATIO}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BUCKET\+\_\+\+LEAK\+\_\+\+RATE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVC\+\_\+\+BUCKET\+\_\+\+SIZE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVC\+\_\+\+MEASUREMENT}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+FLOW\+\_\+\+CTRL\+\_\+\+GRANULARITY}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+R\+\_\+\+DEFAULT\+\_\+\+MS}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TAG}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+full\+\_\+ratio}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+full\+\_\+ratio\+\_\+present}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+leak\+\_\+rate}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+size\+\_\+max}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bvc}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::measurement}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::measurement\+\_\+present}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::r\+\_\+default\+\_\+ms}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::tag}, \textbf{ TLVP\+\_\+\+PRESENT}, \textbf{ TLVP\+\_\+\+VAL}, \textbf{ tlvp\+\_\+val16be()}, and \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::u}.



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+unblocked()}.

\mbox{\label{gprs__bssgp2_8c_a5570877ce80148f927f3629144d25f3a}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_dec\_fc\_ms@{bssgp2\_dec\_fc\_ms}}
\index{bssgp2\_dec\_fc\_ms@{bssgp2\_dec\_fc\_ms}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_dec\_fc\_ms()}
{\footnotesize\ttfamily int bssgp2\+\_\+dec\+\_\+fc\+\_\+ms (\begin{DoxyParamCaption}\item[{struct \textbf{ bssgp2\+\_\+flow\+\_\+ctrl} $\ast$}]{fc,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})}



Decode a FLOW-\/\+CONTROL-\/\+MS PDU as per TS 48.\+018 Section 10.\+4.\+6. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em fc} & caller-\/allocated memory for parsed output \\
\hline
\mbox{\texttt{ in}}  & {\em tp} & pre-\/parsed TLVs; caller must ensure mandatory IE presence/length \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ bssgp\+\_\+fc\+\_\+gran\+\_\+tbl}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BUCKET\+\_\+\+FULL\+\_\+\+RATIO}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BUCKET\+\_\+\+LEAK\+\_\+\+RATE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+FLOW\+\_\+\+CTRL\+\_\+\+GRANULARITY}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+MS\+\_\+\+BUCKET\+\_\+\+SIZE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TAG}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TLLI}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+full\+\_\+ratio}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+full\+\_\+ratio\+\_\+present}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+leak\+\_\+rate}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+size\+\_\+max}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::ms}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::tag}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::tlli}, \textbf{ TLVP\+\_\+\+PRESENT}, \textbf{ TLVP\+\_\+\+VAL}, \textbf{ tlvp\+\_\+val16be()}, \textbf{ tlvp\+\_\+val32be()}, and \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::u}.

\mbox{\label{gprs__bssgp2_8c_ad6c375d68f6b04a0378ee82e37101f51}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_bvc\_block@{bssgp2\_enc\_bvc\_block}}
\index{bssgp2\_enc\_bvc\_block@{bssgp2\_enc\_bvc\_block}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_bvc\_block()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+bvc\+\_\+block (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{bvci,  }\item[{enum \textbf{ gprs\+\_\+bssgp\+\_\+cause}}]{cause }\end{DoxyParamCaption})}



Encode BSSGP BVC-\/\+BLOCK PDU as per TS 48.\+018 Section 10.\+4.\+8. 



References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+BLOCK}, \textbf{ bvci}, \textbf{ cause}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ osmo\+\_\+htons}, and \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+timer\+\_\+cb()}, \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+unblocked()}, and \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+wait\+\_\+reset\+\_\+ack()}.

\mbox{\label{gprs__bssgp2_8c_ad04587b781cd8763e158d644800b6d64}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_bvc\_block\_ack@{bssgp2\_enc\_bvc\_block\_ack}}
\index{bssgp2\_enc\_bvc\_block\_ack@{bssgp2\_enc\_bvc\_block\_ack}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_bvc\_block\_ack()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+bvc\+\_\+block\+\_\+ack (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{bvci }\end{DoxyParamCaption})}



Encode BSSGP BVC-\/\+BLOCK-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+9. 



References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ bvci}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ osmo\+\_\+htons}, and \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+blocked()}, and \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+unblocked()}.

\mbox{\label{gprs__bssgp2_8c_a60772960b811172c9a41984527a2b03a}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_bvc\_reset@{bssgp2\_enc\_bvc\_reset}}
\index{bssgp2\_enc\_bvc\_reset@{bssgp2\_enc\_bvc\_reset}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_bvc\_reset()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+bvc\+\_\+reset (\begin{DoxyParamCaption}\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,  }\item[{const uint8\+\_\+t $\ast$}]{feat\+\_\+bm,  }\item[{const uint8\+\_\+t $\ast$}]{ext\+\_\+feat\+\_\+bm }\end{DoxyParamCaption})}



Encode BSSGP BVC-\/\+RESET PDU as per TS 48.\+018 Section 10.\+4.\+12. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bvci} & PTP BVCI to encode into the BVCI IE \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & BSSGP Cause value (reason for reset) \\
\hline
\mbox{\texttt{ in}}  & {\em ra\+\_\+id} & Routing Area ID to be encoded to CELL\+\_\+\+ID IE (optional) \\
\hline
\mbox{\texttt{ in}}  & {\em cell\+\_\+id} & Cell ID to be encoded to CELL\+\_\+\+ID IE (only if ra\+\_\+id is non-\/\+NULL) \\
\hline
\mbox{\texttt{ in}}  & {\em feat\+\_\+bm} & Feature Bitmap (optional) \\
\hline
\mbox{\texttt{ in}}  & {\em ext\+\_\+feat\+\_\+bm} & Extended Feature Bitmap (optional) \\
\hline
\end{DoxyParams}


References \textbf{ bssgp\+\_\+create\+\_\+cell\+\_\+id()}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CELL\+\_\+\+ID}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+EXT\+\_\+\+FEATURE\+\_\+\+BITMAP}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+FEATURE\+\_\+\+BITMAP}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET}, \textbf{ bvci}, \textbf{ cause}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ osmo\+\_\+htons}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ ra\+\_\+id}.



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

\mbox{\label{gprs__bssgp2_8c_ac935811dd05a101c1bdf4f6b78ca18e9}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_bvc\_reset\_ack@{bssgp2\_enc\_bvc\_reset\_ack}}
\index{bssgp2\_enc\_bvc\_reset\_ack@{bssgp2\_enc\_bvc\_reset\_ack}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_bvc\_reset\_ack()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+bvc\+\_\+reset\+\_\+ack (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{bvci,  }\item[{const struct \textbf{ gprs\+\_\+ra\+\_\+id} $\ast$}]{ra\+\_\+id,  }\item[{uint16\+\_\+t}]{cell\+\_\+id,  }\item[{const uint8\+\_\+t $\ast$}]{feat\+\_\+bm,  }\item[{const uint8\+\_\+t $\ast$}]{ext\+\_\+feat\+\_\+bm }\end{DoxyParamCaption})}



Encode BSSGP BVC-\/\+RESET-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+13. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bvci} & PTP BVCI to encode into the BVCI IE \\
\hline
\mbox{\texttt{ in}}  & {\em ra\+\_\+id} & Routing Area ID to be encoded to CELL\+\_\+\+ID IE (optional) \\
\hline
\mbox{\texttt{ in}}  & {\em cell\+\_\+id} & Cell ID to be encoded to CELL\+\_\+\+ID IE (only if ra\+\_\+id is non-\/\+NULL) \\
\hline
\mbox{\texttt{ in}}  & {\em feat\+\_\+bm} & Feature Bitmap (optional) \\
\hline
\mbox{\texttt{ in}}  & {\em ext\+\_\+feat\+\_\+bm} & Extended Feature Bitmap (optional) \\
\hline
\end{DoxyParams}


References \textbf{ bssgp\+\_\+create\+\_\+cell\+\_\+id()}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CELL\+\_\+\+ID}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+EXT\+\_\+\+FEATURE\+\_\+\+BITMAP}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+FEATURE\+\_\+\+BITMAP}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ bvci}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ osmo\+\_\+htons}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ ra\+\_\+id}.



Referenced by \textbf{ \+\_\+tx\+\_\+bvc\+\_\+reset\+\_\+ack()}.

\mbox{\label{gprs__bssgp2_8c_a02169ab95ea0f25848941e328bb860d2}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_bvc\_unblock@{bssgp2\_enc\_bvc\_unblock}}
\index{bssgp2\_enc\_bvc\_unblock@{bssgp2\_enc\_bvc\_unblock}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_bvc\_unblock()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+bvc\+\_\+unblock (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{bvci }\end{DoxyParamCaption})}



Encode BSSGP BVC-\/\+UNBLOCK PDU as per TS 48.\+018 Section 10.\+4.\+10. 



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



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+blocked()}, and \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+timer\+\_\+cb()}.

\mbox{\label{gprs__bssgp2_8c_ae17de05721d2697302eef8d0d6ca9dcc}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_bvc\_unblock\_ack@{bssgp2\_enc\_bvc\_unblock\_ack}}
\index{bssgp2\_enc\_bvc\_unblock\_ack@{bssgp2\_enc\_bvc\_unblock\_ack}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_bvc\_unblock\_ack()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+bvc\+\_\+unblock\+\_\+ack (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{bvci }\end{DoxyParamCaption})}



Encode BSSGP BVC-\/\+UNBLOCK-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+11. 



References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+BVC\+\_\+\+UNBLOCK\+\_\+\+ACK}, \textbf{ bvci}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ osmo\+\_\+htons}, and \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+blocked()}.

\mbox{\label{gprs__bssgp2_8c_a871ab7a667d95fe33715e02df0170ee5}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_fc\_bvc@{bssgp2\_enc\_fc\_bvc}}
\index{bssgp2\_enc\_fc\_bvc@{bssgp2\_enc\_fc\_bvc}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_fc\_bvc()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+fc\+\_\+bvc (\begin{DoxyParamCaption}\item[{const struct \textbf{ bssgp2\+\_\+flow\+\_\+ctrl} $\ast$}]{fc,  }\item[{enum \textbf{ bssgp\+\_\+fc\+\_\+granularity} $\ast$}]{gran }\end{DoxyParamCaption})}



Encode a FLOW-\/\+CONTROL-\/\+BVC PDU as per TS 48.\+018 Section 10.\+4.\+4. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em fc} & structure describing to-\/be-\/encoded FC parameters \\
\hline
\mbox{\texttt{ in}}  & {\em gran} & if non-\/\+NULL\+: Encode using specified unit granularity \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
encoded PDU or NULL in case of error 
\end{DoxyReturn}


References \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bmax\+\_\+default\+\_\+ms}, \textbf{ bssgp\+\_\+fc\+\_\+gran\+\_\+tbl}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BMAX\+\_\+\+DEFAULT\+\_\+\+MS}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BUCKET\+\_\+\+FULL\+\_\+\+RATIO}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BUCKET\+\_\+\+LEAK\+\_\+\+RATE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVC\+\_\+\+BUCKET\+\_\+\+SIZE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVC\+\_\+\+MEASUREMENT}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+FLOW\+\_\+\+CTRL\+\_\+\+GRANULARITY}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+R\+\_\+\+DEFAULT\+\_\+\+MS}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TAG}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLOW\+\_\+\+CONTROL\+\_\+\+BVC}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+full\+\_\+ratio}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+full\+\_\+ratio\+\_\+present}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+leak\+\_\+rate}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+size\+\_\+max}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bvc}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::measurement}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::measurement\+\_\+present}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put\+\_\+16be()}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::r\+\_\+default\+\_\+ms}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::tag}, and \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::u}.



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+unblocked()}.

\mbox{\label{gprs__bssgp2_8c_acb76dc31d70d608e051f6815610e29d3}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_fc\_bvc\_ack@{bssgp2\_enc\_fc\_bvc\_ack}}
\index{bssgp2\_enc\_fc\_bvc\_ack@{bssgp2\_enc\_fc\_bvc\_ack}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_fc\_bvc\_ack()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+fc\+\_\+bvc\+\_\+ack (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{tag }\end{DoxyParamCaption})}



Encode a FLOW-\/\+CONTROL-\/\+BVC-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+4. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em tag} & the tag IE value to encode \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
encoded PDU or NULL in case of error 
\end{DoxyReturn}


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



Referenced by \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+unblocked()}.

\mbox{\label{gprs__bssgp2_8c_a85aa8b98f176ac067fc206981417cd81}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_fc\_ms@{bssgp2\_enc\_fc\_ms}}
\index{bssgp2\_enc\_fc\_ms@{bssgp2\_enc\_fc\_ms}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_fc\_ms()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+fc\+\_\+ms (\begin{DoxyParamCaption}\item[{const struct \textbf{ bssgp2\+\_\+flow\+\_\+ctrl} $\ast$}]{fc,  }\item[{enum \textbf{ bssgp\+\_\+fc\+\_\+granularity} $\ast$}]{gran }\end{DoxyParamCaption})}



Encode a FLOW-\/\+CONTROL-\/\+MS PDU as per TS 48.\+018 Section 10.\+4.\+6. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em fc} & structure describing to-\/be-\/encoded FC parameters \\
\hline
\mbox{\texttt{ in}}  & {\em gran} & if non-\/\+NULL\+: Encode using specified unit granularity \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
encoded PDU or NULL in case of error 
\end{DoxyReturn}


References \textbf{ bssgp\+\_\+fc\+\_\+gran\+\_\+tbl}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BUCKET\+\_\+\+FULL\+\_\+\+RATIO}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BUCKET\+\_\+\+LEAK\+\_\+\+RATE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+FLOW\+\_\+\+CTRL\+\_\+\+GRANULARITY}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+MS\+\_\+\+BUCKET\+\_\+\+SIZE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TAG}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TLLI}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLOW\+\_\+\+CONTROL\+\_\+\+MS}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+full\+\_\+ratio}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+full\+\_\+ratio\+\_\+present}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+leak\+\_\+rate}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::bucket\+\_\+size\+\_\+max}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::ms}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put\+\_\+16be()}, \textbf{ msgb\+\_\+tvlv\+\_\+put\+\_\+32be()}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::tag}, \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::tlli}, and \textbf{ bssgp2\+\_\+flow\+\_\+ctrl\+::u}.

\mbox{\label{gprs__bssgp2_8c_a0fddbff02d798d187078200c3e5fc1c8}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_fc\_ms\_ack@{bssgp2\_enc\_fc\_ms\_ack}}
\index{bssgp2\_enc\_fc\_ms\_ack@{bssgp2\_enc\_fc\_ms\_ack}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_fc\_ms\_ack()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+fc\+\_\+ms\+\_\+ack (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{tlli,  }\item[{uint8\+\_\+t}]{tag }\end{DoxyParamCaption})}



Encode a FLOW-\/\+CONTROL-\/\+BVC-\/\+ACK PDU as per TS 48.\+018 Section 10.\+4.\+7. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em tlli} & the TLLI IE value to encode \\
\hline
\mbox{\texttt{ in}}  & {\em tag} & the tag IE value to encode \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
encoded PDU or NULL in case of error 
\end{DoxyReturn}


References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TAG}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TLLI}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLOW\+\_\+\+CONTROL\+\_\+\+MS\+\_\+\+ACK}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put\+\_\+32be()}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ tlli}.

\mbox{\label{gprs__bssgp2_8c_a49376a28b36c9b73424a111770fc9709}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_flush\_ll@{bssgp2\_enc\_flush\_ll}}
\index{bssgp2\_enc\_flush\_ll@{bssgp2\_enc\_flush\_ll}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_flush\_ll()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+flush\+\_\+ll (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{tlli,  }\item[{uint16\+\_\+t}]{old\+\_\+bvci,  }\item[{const uint16\+\_\+t $\ast$}]{new\+\_\+bvci,  }\item[{const uint16\+\_\+t $\ast$}]{nsei }\end{DoxyParamCaption})}



Encode BSSGP FLUSH-\/\+LL PDU as per TS 48.\+018 Section 10.\+4.\+1. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em tlli} & -\/ the TLLI of the MS \\
\hline
\mbox{\texttt{ in}}  & {\em old\+\_\+bvci} & BVCI \\
\hline
\mbox{\texttt{ in}}  & {\em new\+\_\+bvci2} & optional BVCI -\/ only encoded if non-\/\+NULL \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & optional -\/ only encoded if non-\/\+NULL \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
encoded PDU or NULL in case of error 
\end{DoxyReturn}


References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+TLLI}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+FLUSH\+\_\+\+LL}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put\+\_\+16be()}, \textbf{ msgb\+\_\+tvlv\+\_\+put\+\_\+32be()}, \textbf{ nsei}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ tlli}.

\mbox{\label{gprs__bssgp2_8c_a07f6856d5a04cb89d3cbcbe436319553}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_enc\_status@{bssgp2\_enc\_status}}
\index{bssgp2\_enc\_status@{bssgp2\_enc\_status}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_enc\_status()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ bssgp2\+\_\+enc\+\_\+status (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{cause,  }\item[{const uint16\+\_\+t $\ast$}]{bvci,  }\item[{const struct \textbf{ msgb} $\ast$}]{orig\+\_\+msg,  }\item[{uint16\+\_\+t}]{max\+\_\+pdu\+\_\+len }\end{DoxyParamCaption})}



Encode BSSGP STATUS PDU as per TS 48.\+018 Section 10.\+4.\+14. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cause} & BSSGP Cause value \\
\hline
\mbox{\texttt{ in}}  & {\em bvci} & optional BVCI -\/ only encoded if non-\/\+NULL \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & optional message buffer containing PDU in error -\/ only encoded if non-\/\+NULL \\
\hline
\mbox{\texttt{ in}}  & {\em max\+\_\+pdu\+\_\+len} & Maximum BSSGP PDU size the NS layer accepts \\
\hline
\end{DoxyParams}


References \textbf{ BSSGP\+\_\+\+IE\+\_\+\+BVCI}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ BSSGP\+\_\+\+IE\+\_\+\+PDU\+\_\+\+IN\+\_\+\+ERROR}, \textbf{ bssgp\+\_\+msgb\+\_\+alloc()}, \textbf{ BSSGP\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ bvci}, \textbf{ cause}, \textbf{ msg}, \textbf{ msgb\+\_\+bssgp\+\_\+len}, \textbf{ msgb\+\_\+bssgph}, \textbf{ msgb\+\_\+length()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ osmo\+\_\+htons}, \textbf{ bssgp\+\_\+normal\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ TVLV\+\_\+\+GROSS\+\_\+\+LEN()}.



Referenced by \textbf{ \+\_\+tx\+\_\+status()}.

\mbox{\label{gprs__bssgp2_8c_a8a1a253b40f2b1f605ea0efb8d17ec68}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_nsi\_tx\_ptp@{bssgp2\_nsi\_tx\_ptp}}
\index{bssgp2\_nsi\_tx\_ptp@{bssgp2\_nsi\_tx\_ptp}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_nsi\_tx\_ptp()}
{\footnotesize\ttfamily int bssgp2\+\_\+nsi\+\_\+tx\+\_\+ptp (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{uint32\+\_\+t}]{lsp }\end{DoxyParamCaption})}



transmit BSSGP PDU over NS (PTP BVC) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS Instance through which to transmit \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NSEI of NSE through which to transmit \\
\hline
\mbox{\texttt{ in}}  & {\em bvci} & BVCI through which to transmit \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & BSSGP PDU to transmit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ bvci}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::bvci}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+PRIM\+\_\+\+UNIT\+\_\+\+DATA}, \textbf{ gprs\+\_\+ns2\+\_\+recv\+\_\+prim()}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::link\+\_\+selector}, \textbf{ msg}, \textbf{ nsei}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::nsei}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}, \textbf{ SAP\+\_\+\+NS}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::u}, and \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::unitdata}.



Referenced by \textbf{ bssgp2\+\_\+nsi\+\_\+tx\+\_\+sig()}, and \textbf{ fi\+\_\+tx\+\_\+ptp()}.

\mbox{\label{gprs__bssgp2_8c_a91244c66113e45587f422bef72a9566a}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp2\_nsi\_tx\_sig@{bssgp2\_nsi\_tx\_sig}}
\index{bssgp2\_nsi\_tx\_sig@{bssgp2\_nsi\_tx\_sig}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp2\_nsi\_tx\_sig()}
{\footnotesize\ttfamily int bssgp2\+\_\+nsi\+\_\+tx\+\_\+sig (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{uint32\+\_\+t}]{lsp }\end{DoxyParamCaption})}



transmit BSSGP PDU over NS (SIGNALING BVC) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS Instance through which to transmit \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NSEI of NSE through which to transmit \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & BSSGP PDU to transmit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ bssgp2\+\_\+nsi\+\_\+tx\+\_\+ptp()}, \textbf{ msg}, and \textbf{ nsei}.



Referenced by \textbf{ fi\+\_\+tx\+\_\+sig()}.



\doxysubsection{Variable Documentation}
\mbox{\label{gprs__bssgp2_8c_a5585231c26c7d002e2b09ca641da8b0f}} 
\index{gprs\_bssgp2.c@{gprs\_bssgp2.c}!bssgp\_fc\_gran\_tbl@{bssgp\_fc\_gran\_tbl}}
\index{bssgp\_fc\_gran\_tbl@{bssgp\_fc\_gran\_tbl}!gprs\_bssgp2.c@{gprs\_bssgp2.c}}
\doxysubsubsection{bssgp\_fc\_gran\_tbl}
{\footnotesize\ttfamily const unsigned int bssgp\+\_\+fc\+\_\+gran\+\_\+tbl[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        [BSSGP\_FC\_GRAN\_100]    = 100,}
\DoxyCodeLine{        [BSSGP\_FC\_GRAN\_1000]  = 1000,}
\DoxyCodeLine{        [BSSGP\_FC\_GRAN\_10000]        = 10000,}
\DoxyCodeLine{        [BSSGP\_FC\_GRAN\_100000]      = 100000,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ bssgp2\+\_\+dec\+\_\+fc\+\_\+bvc()}, \textbf{ bssgp2\+\_\+dec\+\_\+fc\+\_\+ms()}, \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+bvc()}, and \textbf{ bssgp2\+\_\+enc\+\_\+fc\+\_\+ms()}.

