  % Handle batch mode
  % to overcome problems with too many open files
  \let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}
  % Set document class depending on configuration
  \documentclass[twoside]{book}
  %% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package
  \usepackage{ifthen}
  \ifx\requestedLaTeXdate\undefined
    \usepackage{array}
  \else
    \usepackage{array}[=2016-10-06]
  \fi
  %%
  % Packages required by doxygen
  \usepackage{fixltx2e} % for \textsubscript
  \usepackage{doxygen}
  \usepackage{graphicx}
  \usepackage[utf8]{inputenc}
  \usepackage{makeidx}
  \PassOptionsToPackage{warn}{textcomp}
  \usepackage{textcomp}
  \usepackage[nointegrals]{wasysym}
  \usepackage{ifxetex}
  % NLS support packages
  % Define default fonts
  % Font selection
  \usepackage[T1]{fontenc}
  % set main and monospaced font
  \usepackage[scaled=.90]{helvet}
\usepackage{courier}
\renewcommand{\familydefault}{\sfdefault}
  \usepackage{sectsty}
  \allsectionsfont{%
    \fontseries{bc}\selectfont%
    \color{darkgray}%
  }
  \renewcommand{\DoxyLabelFont}{%
    \fontseries{bc}\selectfont%
    \color{darkgray}%
  }
  \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
   % Arguments of doxygenemoji:
   % 1) ':<text>:' form of the emoji, already LaTeX-escaped
   % 2) file with the name of the emoji without the .png extension
   % in case image exist use this otherwise use the ':<text>:' form
   \newcommand{\doxygenemoji}[2]{%
     \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}%
   }
  % Page & text layout
  \usepackage{geometry}
  \geometry{%
    a4paper,%
    top=2.5cm,%
    bottom=2.5cm,%
    left=2.5cm,%
    right=2.5cm%
  }
  % Allow a bit of overflow to go unnoticed by other means
  \tolerance=750
  \hfuzz=15pt
  \hbadness=750
  \setlength{\emergencystretch}{15pt}
  \setlength{\parindent}{0cm}
  \newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}}
  \newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}}
  \doxynormalparskip
  % Redefine paragraph/subparagraph environments, using sectsty fonts
  \makeatletter
  \renewcommand{\paragraph}{%
    \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
      \normalfont\normalsize\bfseries\SS@parafont%
    }%
  }
  \renewcommand{\subparagraph}{%
    \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
      \normalfont\normalsize\bfseries\SS@subparafont%
    }%
  }
  \makeatother
  \makeatletter
  \newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@}
  \makeatother
  % Headers & footers
  \usepackage{fancyhdr}
  \pagestyle{fancyplain}
  \renewcommand{\footrulewidth}{0.4pt}
  \fancypagestyle{fancyplain}{
    \fancyhf{}
    \fancyhead[LE, RO]{\bfseries\thepage}
    \fancyhead[LO]{\bfseries\rightmark}
    \fancyhead[RE]{\bfseries\leftmark}
    \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
  }
  \fancypagestyle{plain}{
    \fancyhf{}
    \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
    \renewcommand{\headrulewidth}{0pt}
  }
  \pagestyle{fancyplain}
  \renewcommand{\chaptermark}[1]{%
    \markboth{#1}{}%
  }
  \renewcommand{\sectionmark}[1]{%
    \markright{\thesection\ #1}%
  }
  % ToC, LoF, LoT, bibliography, and index
  % Indices & bibliography
  \usepackage{natbib}
  \usepackage[titles]{tocloft}
  \setcounter{tocdepth}{3}
  \setcounter{secnumdepth}{5}
  % creating indexes
  \makeindex
  \usepackage{newunicodechar}
  \newunicodechar{⁻}{${}^{-}$}% Superscript minus
  \newunicodechar{²}{${}^{2}$}% Superscript two
  \newunicodechar{³}{${}^{3}$}% Superscript three
  % Hyperlinks
    % Hyperlinks (required, but should be loaded last)
    \ifpdf
      \usepackage[pdftex,pagebackref=true]{hyperref}
    \else
      \ifxetex
        \usepackage[pagebackref=true]{hyperref}
      \else
        \usepackage[ps2pdf,pagebackref=true]{hyperref}
      \fi
    \fi
    \hypersetup{%
      colorlinks=true,%
      linkcolor=blue,%
      citecolor=blue,%
      unicode,%
      pdftitle=Free\+BSD kernel CXGB device code,%
      pdfsubject=%
    }
  % Custom commands used by the header
  % Custom commands
  \newcommand{\clearemptydoublepage}{%
    \newpage{\pagestyle{empty}\cleardoublepage}%
  }
  % caption style definition
  \usepackage{caption}
  \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
  % in page table of contents
  \usepackage{etoc}
  \etocsettocstyle{\doxytocparskip}{\doxynormalparskip}
  % prevent numbers overlap the titles in toc
  \renewcommand{\numberline}[1]{#1~}
% End of preamble, now comes the document contents
%===== C O N T E N T S =====
\begin{document}
  \raggedbottom
  % Titlepage & ToC
    % To avoid duplicate page anchors due to reuse of same numbers for
    % the index (be it as roman numbers)
    \hypersetup{pageanchor=false,
                bookmarksnumbered=true,
                pdfencoding=unicode
               }
  \pagenumbering{alph}
  \begin{titlepage}
  \vspace*{7cm}
  \begin{center}%
  {\Large Free\+BSD kernel CXGB device code}\\
  \vspace*{1cm}
  {\large Generated by Doxygen 1.9.3}\\
  \end{center}
  \end{titlepage}
  \clearemptydoublepage
  \pagenumbering{roman}
  \tableofcontents
  \clearemptydoublepage
  \pagenumbering{arabic}
  % re-enable anchors again
  \hypersetup{pageanchor=true}
%--- Begin generated contents ---
\chapter{Free\+BSD kernel CXGB device code}
\label{index}\hypertarget{index}{}\input{index}
\chapter{Data Structure Index}
\input{annotated}
\chapter{File Index}
\input{files}
\chapter{Data Structure Documentation}
\input{dc/d16/structadap__ports}
\input{d8/d50/structadapter}
\input{dd/db4/structadapter__info}
\input{d2/d4c/structadapter__params}
\input{de/d60/structaddr__val__pair}
\input{da/de5/structboot__header__s}
\input{de/d85/structch__cntxt}
\input{d9/d32/structch__desc}
\input{df/d98/structch__eeprom}
\input{d9/d88/structch__filter}
\input{d3/d2f/structch__filter__tuple}
\input{de/d5d/structch__hw__sched}
\input{d5/db5/structch__ifconf__regs}
\input{d4/d66/structch__mem__range}
\input{d4/d19/structch__mii__data}
\input{de/d60/structch__mtus}
\input{d6/d87/structch__pktsched__params}
\input{d2/d24/structch__pm}
\input{d0/d5f/structch__qset__params}
\input{d9/dde/structch__reg}
\input{dc/d12/structch__tcam__word}
\input{d7/ddb/structch__trace}
\input{d8/d81/structch__up__ioqs}
\input{d5/df0/structch__up__la}
\input{df/d9c/structcmac}
\input{d8/d7f/structcoalesce__info}
\input{d8/d34/structcphy}
\input{dc/d34/structcphy__ops}
\input{d8/d6a/structcpl__abort__req}
\input{d1/d28/structcpl__abort__req__rss}
\input{d0/dcd/structcpl__abort__rpl}
\input{d7/dcf/structcpl__abort__rpl__rss}
\input{d0/de1/structcpl__act__establish}
\input{d2/d95/structcpl__act__open__req}
\input{d9/df0/structcpl__act__open__rpl}
\input{dd/d8a/structcpl__barrier}
\input{d2/dfe/structcpl__close__con__req}
\input{df/db9/structcpl__close__con__rpl}
\input{d9/d58/structcpl__close__listserv__req}
\input{d2/dfb/structcpl__close__listserv__rpl}
\input{d2/d00/structcpl__get__tcb}
\input{d1/da4/structcpl__get__tcb__rpl}
\input{dd/d36/structcpl__iscsi__hdr}
\input{d7/d92/structcpl__l2t__read__req}
\input{d4/d85/structcpl__l2t__read__rpl}
\input{dd/d78/structcpl__l2t__write__req}
\input{d7/dd3/structcpl__l2t__write__rpl}
\input{d2/d21/structcpl__pass__accept__req}
\input{dd/d3b/structcpl__pass__accept__rpl}
\input{d3/df6/structcpl__pass__establish}
\input{de/d2e/structcpl__pass__open__req}
\input{d8/dc4/structcpl__pass__open__rpl}
\input{df/dc0/structcpl__pcmd}
\input{d6/db2/structcpl__pcmd__reply}
\input{d1/dae/structcpl__peer__close}
\input{da/d50/structcpl__rdma__ec__status}
\input{d1/d45/structcpl__rdma__read__req}
\input{d5/d70/structcpl__rdma__terminate}
\input{d4/deb/structcpl__rte__delete__req}
\input{d6/d8d/structcpl__rte__delete__rpl}
\input{dd/dd2/structcpl__rte__read__req}
\input{d2/dc6/structcpl__rte__read__rpl}
\input{d7/dad/structcpl__rte__write__req}
\input{da/df3/structcpl__rte__write__rpl}
\input{df/dec/structcpl__rx__data}
\input{d7/d71/structcpl__rx__data__ack}
\input{d2/d7d/structcpl__rx__data__ddp}
\input{d2/d45/structcpl__rx__ddp__complete}
\input{d6/d35/structcpl__rx__pkt}
\input{d2/d17/structcpl__rx__urg__notify}
\input{d0/dab/structcpl__set__tcb}
\input{dc/d21/structcpl__set__tcb__field}
\input{d5/d87/structcpl__set__tcb__rpl}
\input{d8/db4/structcpl__sge__ec__cr__return}
\input{dc/d88/structcpl__smt__read__req}
\input{da/daa/structcpl__smt__read__rpl}
\input{d9/da8/structcpl__smt__write__req}
\input{db/d79/structcpl__smt__write__rpl}
\input{dd/d87/structcpl__tid__release}
\input{d8/d72/structcpl__trace__pkt}
\input{da/d2a/structcpl__tx__data}
\input{d3/dc1/structcpl__tx__data__ack}
\input{de/d92/structcpl__tx__pkt}
\input{de/dba/structcpl__tx__pkt__batch}
\input{d9/d9f/structcpl__tx__pkt__batch__entry}
\input{d9/d23/structcpl__tx__pkt__coalesce}
\input{d8/dfd/structcpl__tx__pkt__lso}
\input{db/dc4/structcpl__wr__ack}
\input{d6/dbe/structcxgb__ident}
\input{d9/d9d/structddp__params}
\input{d0/d8e/structfilter__info}
\input{d7/db8/structgeneric__vpd}
\input{d0/df4/structiff__mac}
\input{d2/de3/structintr__info}
\input{d5/d72/structlink__config}
\input{d9/da9/structlro__state}
\input{d0/dbd/structmac__stats}
\input{d7/dee/structmc5}
\input{d8/d10/structmc5__params}
\input{dc/d3b/structmc5__stats}
\input{d9/d40/structmc7}
\input{de/d1d/structmc7__stats}
\input{d5/d04/structmc7__timing__params}
\input{da/d7b/structmdio__ops}
\input{d6/d68/structmngt__pktsched__wr}
\input{d3/d01/structmtutab}
\input{de/d91/structofld__page__info}
\input{dd/df2/unionopcode__tid}
\input{dd/ddd/structpci__params}
\input{db/d3d/structport__info}
\input{d7/d9f/structport__type__info}
\input{d7/d56/structqset__params}
\input{df/da0/structrdma__cq__op}
\input{d3/da7/structrdma__cq__setup}
\input{d7/d08/structrdma__ctrlqp__setup}
\input{d7/d55/structrdma__info}
\input{d2/dcc/structrefill__fl__cb__arg}
\input{da/d12/structreg__val}
\input{de/d66/structrsp__desc}
\input{d3/d61/structrss__header}
\input{dc/d90/structrx__desc}
\input{de/d60/structrx__sw__desc}
\input{d2/d64/structsg__ent}
\input{d0/dbe/structsge}
\input{d9/d99/structsge__fl}
\input{d0/de3/structsge__params}
\input{d8/d94/structsge__qset}
\input{de/d62/structsge__rspq}
\input{de/dff/structsge__txq}
\input{d6/ddf/structt3__ioq__entry}
\input{d7/dec/structt3__mbuf__hdr}
\input{d6/ddf/structt3__mcaddr__ctx}
\input{d1/d32/structt3__rx__mode}
\input{df/d13/structt3__vpd}
\input{d0/d31/structtcp__options}
\input{d6/d80/structtid__range}
\input{dc/db0/structtp__mib__stats}
\input{dd/d2a/structtp__params}
\input{dc/d4f/structtrace__params}
\input{dc/de8/structtx__data__wr}
\input{d7/d9c/structtx__desc}
\input{dd/d10/structtx__pkt__coalesce__wr}
\input{d7/d96/structtx__sw__desc}
\input{d2/db0/structtxq__state}
\input{d1/dc4/structulp__iscsi__info}
\input{d3/ddd/structulp__mem__io}
\input{d6/d7a/structulp__txpkt}
\input{d6/d60/structvpd__params}
\input{d5/d10/structwork__request__hdr}
\chapter{File Documentation}
\input{de/d11/cxgb__ael1002_8c}
\input{de/d11/cxgb__ael1002_8c_source}
\input{df/d80/cxgb__aq100x_8c}
\input{df/d80/cxgb__aq100x_8c_source}
\input{d1/d85/cxgb__common_8h}
\input{d1/d85/cxgb__common_8h_source}
\input{d1/d09/cxgb__ctl__defs_8h}
\input{d1/d09/cxgb__ctl__defs_8h_source}
\input{d2/d51/cxgb__firmware__exports_8h}
\input{d2/d51/cxgb__firmware__exports_8h_source}
\input{db/dfb/cxgb__mc5_8c}
\input{db/dfb/cxgb__mc5_8c_source}
\input{d6/de1/cxgb__mv88e1xxx_8c}
\input{d6/de1/cxgb__mv88e1xxx_8c_source}
\input{df/da4/cxgb__regs_8h}
\input{df/da4/cxgb__regs_8h_source}
\input{d3/dee/cxgb__sge__defs_8h}
\input{d3/dee/cxgb__sge__defs_8h_source}
\input{da/dac/cxgb__t3__cpl_8h}
\input{da/dac/cxgb__t3__cpl_8h_source}
\input{d2/d8c/cxgb__t3__hw_8c}
\input{d2/d8c/cxgb__t3__hw_8c_source}
\input{da/d80/cxgb__tcb_8h}
\input{da/d80/cxgb__tcb_8h_source}
\input{df/d38/cxgb__tn1010_8c}
\input{df/d38/cxgb__tn1010_8c_source}
\input{d4/d1d/cxgb__vsc7323_8c}
\input{d4/d1d/cxgb__vsc7323_8c_source}
\input{d1/d05/cxgb__vsc8211_8c}
\input{d1/d05/cxgb__vsc8211_8c_source}
\input{d1/d48/cxgb__xgmac_8c}
\input{d1/d48/cxgb__xgmac_8c_source}
\input{d1/d49/jhash_8h}
\input{d1/d49/jhash_8h_source}
\input{d6/dd2/cxgb__adapter_8h}
\input{d6/dd2/cxgb__adapter_8h_source}
\input{d8/d3b/cxgb__include_8h}
\input{d8/d3b/cxgb__include_8h_source}
\input{d7/d2c/cxgb__ioctl_8h}
\input{d7/d2c/cxgb__ioctl_8h_source}
\input{d4/d06/cxgb__main_8c}
\input{d4/d06/cxgb__main_8c_source}
\input{de/d40/cxgb__offload_8h}
\input{de/d40/cxgb__offload_8h_source}
\input{d5/d84/cxgb__osdep_8h}
\input{d5/d84/cxgb__osdep_8h_source}
\input{dd/d15/cxgb__sge_8c}
\input{dd/d15/cxgb__sge_8c_source}
\input{d6/da6/cxgb__t3fw_8c}
\input{d6/da6/cxgb__t3fw_8c_source}
\input{de/d77/cxgb__t3fw_8h}
\input{de/d77/cxgb__t3fw_8h_source}
\input{d3/d7b/mvec_8h}
\input{d3/d7b/mvec_8h_source}
\input{dd/d75/uipc__mvec_8c}
\input{dd/d75/uipc__mvec_8c_source}
\input{d2/de4/t3b__protocol__sram_8h}
\input{d2/de4/t3b__protocol__sram_8h_source}
\input{df/ddd/t3b__tp__eeprom_8h}
\input{df/ddd/t3b__tp__eeprom_8h_source}
\input{da/d05/t3c__protocol__sram_8h}
\input{da/d05/t3c__protocol__sram_8h_source}
\input{d7/d2e/t3c__tp__eeprom_8h}
\input{d7/d2e/t3c__tp__eeprom_8h_source}
\input{d7/d63/notreviewed_8dox}
%--- End generated contents ---
% Index
  \backmatter
  \newpage
  \phantomsection
  \clearemptydoublepage
  \addcontentsline{toc}{chapter}{\indexname}
  \printindex
% Required for some languages (in combination with latexdocumentpre from the header)
\end{document}
