\hypertarget{mlx5__en__main_8c_source}{}\doxysection{mlx5\+\_\+en\+\_\+main.\+c}
\label{mlx5__en__main_8c_source}\index{dev/mlx5/mlx5\_en/mlx5\_en\_main.c@{dev/mlx5/mlx5\_en/mlx5\_en\_main.c}}
\mbox{\hyperlink{mlx5__en__main_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00002}00002 \textcolor{comment}{ * Copyright (c) 2015-\/2021 Mellanox Technologies. All rights reserved.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00003}00003 \textcolor{comment}{ * Copyright (c) 2022 NVIDIA corporation \& affiliates.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00005}00005 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00006}00006 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00007}00007 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00008}00008 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00009}00009 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00010}00010 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00011}00011 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00012}00012 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00013}00013 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00014}00014 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS `AS IS' AND}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00015}00015 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00016}00016 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00017}00017 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00018}00018 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00019}00019 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00020}00020 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00021}00021 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00022}00022 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00023}00023 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00024}00024 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00025}00025 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00026}00026 \textcolor{comment}{ * \$FreeBSD\$}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00027}00027 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00028}00028 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00029}00029 \textcolor{preprocessor}{\#include "{}opt\_kern\_tls.h"{}}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00030}00030 \textcolor{preprocessor}{\#include "{}opt\_rss.h"{}}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00031}00031 \textcolor{preprocessor}{\#include "{}opt\_ratelimit.h"{}}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00032}00032 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00033}00033 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{en_8h}{dev/mlx5/mlx5\_en/en.h}}>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00035}00035 \textcolor{preprocessor}{\#include <sys/eventhandler.h>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00036}00036 \textcolor{preprocessor}{\#include <sys/sockio.h>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00037}00037 \textcolor{preprocessor}{\#include <machine/atomic.h>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00039}00039 \textcolor{preprocessor}{\#include <net/debugnet.h>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00040}00040 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00041}00041 \textcolor{keyword}{static} \textcolor{keywordtype}{int} \mbox{\hyperlink{mlx5__en__main_8c_aedf14f7babc2958cba5fdb375904ffe5}{mlx5e\_get\_wqe\_sz}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u32 *\mbox{\hyperlink{en_8h_ad1bece621c6700b5ca94f510536e769f}{wqe\_sz}}, u32 *\mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00042}\mbox{\hyperlink{mlx5__en__main_8c_a33deecaa1766fda55afbc38fdac590f8}{00042}} \textcolor{keyword}{static} if\_snd\_tag\_query\_t \mbox{\hyperlink{mlx5__en__main_8c_a33deecaa1766fda55afbc38fdac590f8}{mlx5e\_ul\_snd\_tag\_query}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00043}\mbox{\hyperlink{mlx5__en__main_8c_a791118100eafb237307f01df479370bc}{00043}} \textcolor{keyword}{static} if\_snd\_tag\_free\_t \mbox{\hyperlink{mlx5__en__main_8c_a791118100eafb237307f01df479370bc}{mlx5e\_ul\_snd\_tag\_free}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00044}00044 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00045}\mbox{\hyperlink{structmlx5e__channel__param}{00045}} \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel__param}{mlx5e\_channel\_param}} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00046}\mbox{\hyperlink{structmlx5e__channel__param_a9a26c28b1c80c0bcc645368c2c33f45e}{00046}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__rq__param}{mlx5e\_rq\_param}} \mbox{\hyperlink{structmlx5e__channel__param_a9a26c28b1c80c0bcc645368c2c33f45e}{rq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00047}\mbox{\hyperlink{structmlx5e__channel__param_a56e8907c1c3b1962980249fd9893a92e}{00047}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__sq__param}{mlx5e\_sq\_param}} \mbox{\hyperlink{structmlx5e__channel__param_a56e8907c1c3b1962980249fd9893a92e}{sq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00048}\mbox{\hyperlink{structmlx5e__channel__param_ad5f4d3460e84e5a6b0c6ab27804c19ae}{00048}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__cq__param}{mlx5e\_cq\_param}} \mbox{\hyperlink{structmlx5e__channel__param_ad5f4d3460e84e5a6b0c6ab27804c19ae}{rx\_cq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00049}\mbox{\hyperlink{structmlx5e__channel__param_a71ff12b89cf2a03fe29b83ce24f543b4}{00049}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__cq__param}{mlx5e\_cq\_param}} \mbox{\hyperlink{structmlx5e__channel__param_a71ff12b89cf2a03fe29b83ce24f543b4}{tx\_cq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00050}00050 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00051}00051 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00052}\mbox{\hyperlink{structmedia}{00052}} \textcolor{keyword}{struct }\mbox{\hyperlink{structmedia}{media}} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00053}\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{00053}}         u32     \mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00054}\mbox{\hyperlink{structmedia_a1b2b9d57f604e2daa6f39effa9c95e49}{00054}}         u64     \mbox{\hyperlink{structmedia_a1b2b9d57f604e2daa6f39effa9c95e49}{baudrate}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00055}00055 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00056}00056 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00057}\mbox{\hyperlink{mlx5__en__main_8c_a0a499a0b042f18b788ae7d9ddef40f18}{00057}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structmedia}{media}} \mbox{\hyperlink{mlx5__en__main_8c_a0a499a0b042f18b788ae7d9ddef40f18}{mlx5e\_mode\_table}}[\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca2fdd4361e15ae10fcfe95a2510ff0da4}{MLX5E\_LINK\_SPEEDS\_NUMBER}}] =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00058}00058 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00059}00059         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0cadd33645d9d63c095940ecca7a61df2fc}{MLX5E\_1000BASE\_CX\_SGMII}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00060}00060                 .\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} = IFM\_1000\_CX\_SGMII,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00061}00061                 .baudrate = IF\_Mbps(1000ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00062}00062         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00063}00063         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca56f83eb6dc60afe29daeec61eefd26d7}{MLX5E\_1000BASE\_KX}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00064}00064                 .subtype = IFM\_1000\_KX,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00065}00065                 .baudrate = IF\_Mbps(1000ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00066}00066         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00067}00067         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca149967e98e14c7fe394e6b31207b8456}{MLX5E\_10GBASE\_CX4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00068}00068                 .subtype = IFM\_10G\_CX4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00069}00069                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00070}00070         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00071}00071         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0caa58cb6e2baa8d99dad115b11af19d8c3}{MLX5E\_10GBASE\_KX4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00072}00072                 .subtype = IFM\_10G\_KX4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00073}00073                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00074}00074         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00075}00075         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca2c7ed84ac39a6242dbaf94187b6b4035}{MLX5E\_10GBASE\_KR}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00076}00076                 .subtype = IFM\_10G\_KR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00077}00077                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00078}00078         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00079}00079         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca1745f732898d4e1373757463c3825658}{MLX5E\_20GBASE\_KR2}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00080}00080                 .subtype = IFM\_20G\_KR2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00081}00081                 .baudrate = IF\_Gbps(20ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00082}00082         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00083}00083         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca994767f942a4a6ad4a354d4dcf805f80}{MLX5E\_40GBASE\_CR4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00084}00084                 .subtype = IFM\_40G\_CR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00085}00085                 .baudrate = IF\_Gbps(40ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00086}00086         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00087}00087         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca1da0bf9167e893acafb772650a294842}{MLX5E\_40GBASE\_KR4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00088}00088                 .subtype = IFM\_40G\_KR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00089}00089                 .baudrate = IF\_Gbps(40ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00090}00090         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00091}00091         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca96281473b8488f5d47c7d400b9a9e640}{MLX5E\_56GBASE\_R4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00092}00092                 .subtype = IFM\_56G\_R4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00093}00093                 .baudrate = IF\_Gbps(56ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00094}00094         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00095}00095         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca9314d331ca5f14ba1c6ca06f3dec4fa6}{MLX5E\_10GBASE\_CR}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00096}00096                 .subtype = IFM\_10G\_CR1,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00097}00097                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00098}00098         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00099}00099         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca326cb730005116bd960b715a4baf4f65}{MLX5E\_10GBASE\_SR}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00100}00100                 .subtype = IFM\_10G\_SR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00101}00101                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00102}00102         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00103}00103         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0caf73cc49bc638af091768a537dd551f45}{MLX5E\_10GBASE\_ER\_LR}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00104}00104                 .subtype = IFM\_10G\_ER,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00105}00105                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00106}00106         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00107}00107         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca37f4d01c6d147b656d3614e5063868b8}{MLX5E\_40GBASE\_SR4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00108}00108                 .subtype = IFM\_40G\_SR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00109}00109                 .baudrate = IF\_Gbps(40ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00110}00110         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00111}00111         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca0561ed42006a3f4804e6086a9f6f5aec}{MLX5E\_40GBASE\_LR4\_ER4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00112}00112                 .subtype = IFM\_40G\_LR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00113}00113                 .baudrate = IF\_Gbps(40ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00114}00114         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00115}00115         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca61da27c6adb650d9b781c3afe1a76636}{MLX5E\_100GBASE\_CR4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00116}00116                 .subtype = IFM\_100G\_CR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00117}00117                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00118}00118         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00119}00119         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0caacc0a83680715de778c173aab6fb49ee}{MLX5E\_100GBASE\_SR4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00120}00120                 .subtype = IFM\_100G\_SR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00121}00121                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00122}00122         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00123}00123         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0cae03738e558b5677d1f19708f82442066}{MLX5E\_100GBASE\_KR4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00124}00124                 .subtype = IFM\_100G\_KR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00125}00125                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00126}00126         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00127}00127         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0cad4389791d6d3a25859f4023d54dc980b}{MLX5E\_100GBASE\_LR4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00128}00128                 .subtype = IFM\_100G\_LR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00129}00129                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00130}00130         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00131}00131         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0cad8ae1f3ce5e7e56d9fb1fb591ce40ab3}{MLX5E\_100BASE\_TX}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00132}00132                 .subtype = IFM\_100\_TX,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00133}00133                 .baudrate = IF\_Mbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00134}00134         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00135}00135         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca2bfa83bc32f73d31c1fa4dc1407e7cc3}{MLX5E\_1000BASE\_T}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00136}00136                 .subtype = IFM\_1000\_T,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00137}00137                 .baudrate = IF\_Mbps(1000ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00138}00138         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00139}00139         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca5297715e850d318659b5e194673f7a98}{MLX5E\_10GBASE\_T}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00140}00140                 .subtype = IFM\_10G\_T,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00141}00141                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00142}00142         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00143}00143         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca1b3320308e873872a54d6834d128be5a}{MLX5E\_25GBASE\_CR}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00144}00144                 .subtype = IFM\_25G\_CR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00145}00145                 .baudrate = IF\_Gbps(25ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00146}00146         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00147}00147         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0caa1733b52080d3e344383a8d38a41937c}{MLX5E\_25GBASE\_KR}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00148}00148                 .subtype = IFM\_25G\_KR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00149}00149                 .baudrate = IF\_Gbps(25ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00150}00150         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00151}00151         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0cacf9f710b06c1a897111343451beb5ea9}{MLX5E\_25GBASE\_SR}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00152}00152                 .subtype = IFM\_25G\_SR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00153}00153                 .baudrate = IF\_Gbps(25ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00154}00154         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00155}00155         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0cac1f46552570b21ca59ea0d61a3af46a3}{MLX5E\_50GBASE\_CR2}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00156}00156                 .subtype = IFM\_50G\_CR2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00157}00157                 .baudrate = IF\_Gbps(50ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00158}00158         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00159}00159         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca795618752f8e6c3901919800fb07ba98}{MLX5E\_50GBASE\_KR2}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00160}00160                 .subtype = IFM\_50G\_KR2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00161}00161                 .baudrate = IF\_Gbps(50ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00162}00162         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00163}00163         [\mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca3765dd8d4c6b84e23edea5e0e890298e}{MLX5E\_50GBASE\_KR4}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00164}00164                 .subtype = IFM\_50G\_KR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00165}00165                 .baudrate = IF\_Gbps(50ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00166}00166         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00167}00167 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00168}00168 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00169}\mbox{\hyperlink{mlx5__en__main_8c_ae40845c5344f1b7b5bb6904426d1232f}{00169}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structmedia}{media}} \mbox{\hyperlink{mlx5__en__main_8c_ae40845c5344f1b7b5bb6904426d1232f}{mlx5e\_ext\_mode\_table}}[\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea0eb057cb4b2dbee0787c75c500a510ee}{MLX5E\_EXT\_LINK\_SPEEDS\_NUMBER}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a151fd303a0230100fbf09fdaa0dce157}{MLX5E\_CABLE\_TYPE\_NUMBER}}] =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00170}00170 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00171}00171         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00172}00172         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaa083e5ca4dec07e3d8d5ac0c8cdc48b3}{MLX5E\_SGMII\_100M}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00173}00173                 .\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} = IFM\_100\_SGMII,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00174}00174                 .baudrate = IF\_Mbps(100),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00175}00175         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00176}00176 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00177}00177         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00178}00178         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeacecfbdca7afd6f54af470682f6fcdc1b}{MLX5E\_1000BASE\_X\_SGMII}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00179}00179                 .subtype = IFM\_1000\_CX,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00180}00180                 .baudrate = IF\_Mbps(1000),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00181}00181         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00182}00182         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeacecfbdca7afd6f54af470682f6fcdc1b}{MLX5E\_1000BASE\_X\_SGMII}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00183}00183                 .subtype = IFM\_1000\_SX,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00184}00184                 .baudrate = IF\_Mbps(1000),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00185}00185         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00186}00186 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00187}00187         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00188}00188         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea3cc2fbf5e9fbf492c8cb3de3d32cdca7}{MLX5E\_5GBASE\_R}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00189}00189                 .subtype = IFM\_5000\_KR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00190}00190                 .baudrate = IF\_Mbps(5000),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00191}00191         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00192}00192         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea3cc2fbf5e9fbf492c8cb3de3d32cdca7}{MLX5E\_5GBASE\_R}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ab434c16ee9ef6071240dba41606dd92b}{MLX5E\_CABLE\_TYPE\_TWISTED\_PAIR}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00193}00193                 .subtype = IFM\_5000\_T,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00194}00194                 .baudrate = IF\_Mbps(5000),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00195}00195         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00196}00196 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00197}00197         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00198}00198         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeabd71966566b88761e02e0e9021bc0749}{MLX5E\_10GBASE\_XFI\_XAUI\_1}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00199}00199                 .subtype = IFM\_10G\_KR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00200}00200                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00201}00201         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00202}00202         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeabd71966566b88761e02e0e9021bc0749}{MLX5E\_10GBASE\_XFI\_XAUI\_1}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00203}00203                 .subtype = IFM\_10G\_CR1,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00204}00204                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00205}00205         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00206}00206         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeabd71966566b88761e02e0e9021bc0749}{MLX5E\_10GBASE\_XFI\_XAUI\_1}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00207}00207                 .subtype = IFM\_10G\_SR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00208}00208                 .baudrate = IF\_Gbps(10ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00209}00209         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00210}00210 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00211}00211         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00212}00212         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea4c01f8c56f0a85f7cd1d6b33c0da429c}{MLX5E\_40GBASE\_XLAUI\_4\_XLPPI\_4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00213}00213                 .subtype = IFM\_40G\_KR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00214}00214                 .baudrate = IF\_Gbps(40ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00215}00215         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00216}00216         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea4c01f8c56f0a85f7cd1d6b33c0da429c}{MLX5E\_40GBASE\_XLAUI\_4\_XLPPI\_4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00217}00217                 .subtype = IFM\_40G\_CR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00218}00218                 .baudrate = IF\_Gbps(40ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00219}00219         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00220}00220         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea4c01f8c56f0a85f7cd1d6b33c0da429c}{MLX5E\_40GBASE\_XLAUI\_4\_XLPPI\_4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00221}00221                 .subtype = IFM\_40G\_SR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00222}00222                 .baudrate = IF\_Gbps(40ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00223}00223         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00224}00224 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00225}00225         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00226}00226         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea8d16be8e488c56eef804b6d948d98226}{MLX5E\_25GAUI\_1\_25GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00227}00227                 .subtype = IFM\_25G\_KR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00228}00228                 .baudrate = IF\_Gbps(25ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00229}00229         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00230}00230         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea8d16be8e488c56eef804b6d948d98226}{MLX5E\_25GAUI\_1\_25GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00231}00231                 .subtype = IFM\_25G\_CR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00232}00232                 .baudrate = IF\_Gbps(25ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00233}00233         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00234}00234         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea8d16be8e488c56eef804b6d948d98226}{MLX5E\_25GAUI\_1\_25GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00235}00235                 .subtype = IFM\_25G\_SR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00236}00236                 .baudrate = IF\_Gbps(25ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00237}00237         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00238}00238         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea8d16be8e488c56eef804b6d948d98226}{MLX5E\_25GAUI\_1\_25GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ab434c16ee9ef6071240dba41606dd92b}{MLX5E\_CABLE\_TYPE\_TWISTED\_PAIR}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00239}00239                 .subtype = IFM\_25G\_T,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00240}00240                 .baudrate = IF\_Gbps(25ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00241}00241         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00242}00242 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00243}00243         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00244}00244         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeac8fa27a61436723b9a1ac3cd7227700a}{MLX5E\_50GAUI\_2\_LAUI\_2\_50GBASE\_CR2\_KR2}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00245}00245                 .subtype = IFM\_50G\_KR2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00246}00246                 .baudrate = IF\_Gbps(50ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00247}00247         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00248}00248         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeac8fa27a61436723b9a1ac3cd7227700a}{MLX5E\_50GAUI\_2\_LAUI\_2\_50GBASE\_CR2\_KR2}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00249}00249                 .subtype = IFM\_50G\_CR2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00250}00250                 .baudrate = IF\_Gbps(50ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00251}00251         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00252}00252         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeac8fa27a61436723b9a1ac3cd7227700a}{MLX5E\_50GAUI\_2\_LAUI\_2\_50GBASE\_CR2\_KR2}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00253}00253                 .subtype = IFM\_50G\_SR2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00254}00254                 .baudrate = IF\_Gbps(50ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00255}00255         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00256}00256 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00257}00257         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00258}00258         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea3b704517c8e08ad15947ca20966882b9}{MLX5E\_50GAUI\_1\_LAUI\_1\_50GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00259}00259                 .subtype = IFM\_50G\_KR\_PAM4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00260}00260                 .baudrate = IF\_Gbps(50ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00261}00261         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00262}00262         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea3b704517c8e08ad15947ca20966882b9}{MLX5E\_50GAUI\_1\_LAUI\_1\_50GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00263}00263                 .subtype = IFM\_50G\_CP,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00264}00264                 .baudrate = IF\_Gbps(50ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00265}00265         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00266}00266         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea3b704517c8e08ad15947ca20966882b9}{MLX5E\_50GAUI\_1\_LAUI\_1\_50GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00267}00267                 .subtype = IFM\_50G\_SR,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00268}00268                 .baudrate = IF\_Gbps(50ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00269}00269         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00270}00270 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00271}00271         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00272}00272         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaf35d65a2f8f239f6df455e35d69830d7}{MLX5E\_CAUI\_4\_100GBASE\_CR4\_KR4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00273}00273                 .subtype = IFM\_100G\_KR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00274}00274                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00275}00275         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00276}00276         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaf35d65a2f8f239f6df455e35d69830d7}{MLX5E\_CAUI\_4\_100GBASE\_CR4\_KR4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00277}00277                 .subtype = IFM\_100G\_CR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00278}00278                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00279}00279         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00280}00280         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaf35d65a2f8f239f6df455e35d69830d7}{MLX5E\_CAUI\_4\_100GBASE\_CR4\_KR4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00281}00281                 .subtype = IFM\_100G\_SR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00282}00282                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00283}00283         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00284}00284 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00285}00285         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00286}00286         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaeb6e176b9622e6e1c0d887f34be6e692}{MLX5E\_100GAUI\_1\_100GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00287}00287                 .subtype = IFM\_100G\_KR\_PAM4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00288}00288                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00289}00289         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00290}00290         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaeb6e176b9622e6e1c0d887f34be6e692}{MLX5E\_100GAUI\_1\_100GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00291}00291                 .subtype = IFM\_100G\_CR\_PAM4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00292}00292                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00293}00293         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00294}00294         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaeb6e176b9622e6e1c0d887f34be6e692}{MLX5E\_100GAUI\_1\_100GBASE\_CR\_KR}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00295}00295                 .subtype = IFM\_100G\_SR2,        \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00296}00296                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00297}00297         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00298}00298 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00299}00299         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00300}00300         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea507da02dc836fcd8f4289e5af1df5e0e}{MLX5E\_100GAUI\_2\_100GBASE\_CR2\_KR2}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00301}00301                 .subtype = IFM\_100G\_KR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00302}00302                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00303}00303         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00304}00304         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea507da02dc836fcd8f4289e5af1df5e0e}{MLX5E\_100GAUI\_2\_100GBASE\_CR2\_KR2}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00305}00305                 .subtype = IFM\_100G\_CP2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00306}00306                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00307}00307         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00308}00308         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea507da02dc836fcd8f4289e5af1df5e0e}{MLX5E\_100GAUI\_2\_100GBASE\_CR2\_KR2}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00309}00309                 .subtype = IFM\_100G\_SR2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00310}00310                 .baudrate = IF\_Gbps(100ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00311}00311         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00312}00312 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00313}00313         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00314}00314         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaf2ff20a4d288de8e40cf368e81ddeb33}{MLX5E\_200GAUI\_2\_200GBASE\_CR2\_KR2}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00315}00315                 .subtype = IFM\_200G\_KR4\_PAM4,   \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00316}00316                 .baudrate = IF\_Gbps(200ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00317}00317         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00318}00318         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaf2ff20a4d288de8e40cf368e81ddeb33}{MLX5E\_200GAUI\_2\_200GBASE\_CR2\_KR2}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00319}00319                 .subtype = IFM\_200G\_CR4\_PAM4,   \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00320}00320                 .baudrate = IF\_Gbps(200ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00321}00321         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00322}00322         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeaf2ff20a4d288de8e40cf368e81ddeb33}{MLX5E\_200GAUI\_2\_200GBASE\_CR2\_KR2}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00323}00323                 .subtype = IFM\_200G\_SR4,        \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00324}00324                 .baudrate = IF\_Gbps(200ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00325}00325         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00326}00326 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00327}00327         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00328}00328         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea8a464d6c429ca6a12b980481506ede94}{MLX5E\_200GAUI\_4\_200GBASE\_CR4\_KR4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00329}00329                 .subtype = IFM\_200G\_KR4\_PAM4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00330}00330                 .baudrate = IF\_Gbps(200ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00331}00331         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00332}00332         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea8a464d6c429ca6a12b980481506ede94}{MLX5E\_200GAUI\_4\_200GBASE\_CR4\_KR4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712ac3dc641cf79f246ac237a141d943b760}{MLX5E\_CABLE\_TYPE\_PASSIVE\_COPPER}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00333}00333                 .subtype = IFM\_200G\_CR4\_PAM4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00334}00334                 .baudrate = IF\_Gbps(200ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00335}00335         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00336}00336         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea8a464d6c429ca6a12b980481506ede94}{MLX5E\_200GAUI\_4\_200GBASE\_CR4\_KR4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a4155ce3291790abd7bfeec3abbc5c816}{MLX5E\_CABLE\_TYPE\_OPTICAL\_MODULE}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00337}00337                 .subtype = IFM\_200G\_SR4,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00338}00338                 .baudrate = IF\_Gbps(200ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00339}00339         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00340}00340 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00341}00341         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00342}00342         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea6ef5b39f4f95c93016157760b4c41c57}{MLX5E\_400GAUI\_8}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00343}00343                 .subtype = IFM\_400G\_LR8,        \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00344}00344                 .baudrate = IF\_Gbps(400ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00345}00345         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00346}00346 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00347}00347         }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00348}00348         [\mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbeae1548fbed05163fd8cfc3f30e27c3c8a}{MLX5E\_400GAUI\_4\_400GBASE\_CR4\_KR4}}][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00349}00349                 .subtype = IFM\_400G\_LR8,        \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00350}00350                 .baudrate = IF\_Gbps(400ULL),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00351}00351         \},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00352}00352 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00353}00353 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00354}\mbox{\hyperlink{mlx5__en__main_8c_a94aabcbcd29f5dc83099292f48c9979b}{00354}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }if\_snd\_tag\_sw \mbox{\hyperlink{mlx5__en__main_8c_a94aabcbcd29f5dc83099292f48c9979b}{mlx5e\_ul\_snd\_tag\_sw}} = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00355}00355         .snd\_tag\_query = \mbox{\hyperlink{mlx5__en__main_8c_a33deecaa1766fda55afbc38fdac590f8}{mlx5e\_ul\_snd\_tag\_query}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00356}00356         .snd\_tag\_free = \mbox{\hyperlink{mlx5__en__main_8c_a791118100eafb237307f01df479370bc}{mlx5e\_ul\_snd\_tag\_free}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00357}00357         .type = IF\_SND\_TAG\_TYPE\_UNLIMITED}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00358}00358 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00359}00359 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00360}\mbox{\hyperlink{mlx5__en__main_8c_abaa9e566c4595f37f077c694964f4412}{00360}} \mbox{\hyperlink{mlx5__en__main_8c_abaa9e566c4595f37f077c694964f4412}{DEBUGNET\_DEFINE}}(mlx5\_en);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00361}00361 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00362}\mbox{\hyperlink{mlx5__en__main_8c_a896a7cfa8964247cfca28272de2572da}{00362}} \mbox{\hyperlink{mlx5__en__main_8c_a896a7cfa8964247cfca28272de2572da}{MALLOC\_DEFINE}}(M\_MLX5EN, \textcolor{stringliteral}{"{}MLX5EN"{}}, \textcolor{stringliteral}{"{}MLX5 Ethernet"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00363}00363 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00364}00364 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00365}\mbox{\hyperlink{mlx5__en__main_8c_ac166dc34edd7ee3b30ea69428229e022}{00365}} \mbox{\hyperlink{mlx5__en__main_8c_ac166dc34edd7ee3b30ea69428229e022}{mlx5e\_update\_carrier}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00366}00366 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00367}00367         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00368}00368         u32 out[\mbox{\hyperlink{device_8h_a2bdfa104f3d7c0635b984382d1562741}{MLX5\_ST\_SZ\_DW}}(ptys\_reg)];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00369}00369         u32 eth\_proto\_oper;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00370}00370         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00371}00371         u8 i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00372}00372         u8 cable\_type;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00373}00373         u8 port\_state;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00374}00374         u8 is\_er\_type;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00375}00375         \textcolor{keywordtype}{bool} ext;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00376}00376         \textcolor{keyword}{struct }\mbox{\hyperlink{structmedia}{media}} media\_entry = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00377}00377 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00378}00378         port\_state = \mbox{\hyperlink{mlx5__vport_8c_aa8703527536e635b6ee8aae884fcb28c}{mlx5\_query\_vport\_state}}(mdev,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00379}00379             \mbox{\hyperlink{mlx5__ifc_8h_a18efc29f05f292310db38a8c7e81dcdaab951cded734f10ce9b3eeda24e968481}{MLX5\_QUERY\_VPORT\_STATE\_IN\_OP\_MOD\_VNIC\_VPORT}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00380}00380 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00381}00381         \textcolor{keywordflow}{if} (port\_state == \mbox{\hyperlink{device_8h_afb730582952b7ceec73d7dc9bf7bef39ad8a931ab94158793321838a06d8d7a81}{VPORT\_STATE\_UP}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00382}00382                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afbe7d82d6be5ad778c829f3ed3c01838}{media\_status\_last}} |= IFM\_ACTIVE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00383}00383         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00384}00384                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afbe7d82d6be5ad778c829f3ed3c01838}{media\_status\_last}} \&= \string~IFM\_ACTIVE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00385}00385                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6a8884b0a7bbd55ce5c945475e2b16f1}{media\_active\_last}} = IFM\_ETHER;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00386}00386                 if\_link\_state\_change(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, LINK\_STATE\_DOWN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00387}00387                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00388}00388         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00389}00389 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00390}00390         error = \mbox{\hyperlink{mlx5__port_8c_a8f0cbf29a10097b179dd9e3a4df0b873}{mlx5\_query\_port\_ptys}}(mdev, out, \textcolor{keyword}{sizeof}(out),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00391}00391             \mbox{\hyperlink{driver_8h_aad393aa3e173d7f081ab4bbc6ba5027da33ce80cf37a3f11b79424cb8a8a7bc56}{MLX5\_PTYS\_EN}}, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00392}00392         \textcolor{keywordflow}{if} (error) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00393}00393                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6a8884b0a7bbd55ce5c945475e2b16f1}{media\_active\_last}} = IFM\_ETHER;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00394}00394                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}-\/>if\_baudrate = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00395}00395                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \textcolor{stringliteral}{"{}query port ptys failed: 0x\%x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00396}00396                     error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00397}00397                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00398}00398         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00399}00399 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00400}00400         ext = \mbox{\hyperlink{device_8h_a808d96f6813ca6f91ec28ca3e439be6c}{MLX5\_CAP\_PCAM\_FEATURE}}(mdev, ptys\_extended\_ethernet);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00401}00401         eth\_proto\_oper = \mbox{\hyperlink{port_8h_a85ea9be21638b172b3e363994ca8fa17}{MLX5\_GET\_ETH\_PROTO}}(ptys\_reg, out, ext,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00402}00402             eth\_proto\_oper);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00403}00403 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00404}00404         i = ilog2(eth\_proto\_oper);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00405}00405 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00406}00406         \textcolor{keywordflow}{if} (ext) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00407}00407                 error = \mbox{\hyperlink{mlx5__port_8c_a7c89eb44382a69714c0d74ef5fe56b20}{mlx5\_query\_pddr\_cable\_type}}(mdev, 1, \&cable\_type);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00408}00408                 \textcolor{keywordflow}{if} (error != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00409}00409                         \textcolor{comment}{/* use fallback entry */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00410}00410                         media\_entry = \mbox{\hyperlink{mlx5__en__main_8c_ae40845c5344f1b7b5bb6904426d1232f}{mlx5e\_ext\_mode\_table}}[i][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00411}00411 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00412}00412                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00413}00413                             \textcolor{stringliteral}{"{}query port pddr failed: \%d\(\backslash\)n"{}}, error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00414}00414                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00415}00415                         media\_entry = \mbox{\hyperlink{mlx5__en__main_8c_ae40845c5344f1b7b5bb6904426d1232f}{mlx5e\_ext\_mode\_table}}[i][cable\_type];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00416}00416 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00417}00417                         \textcolor{comment}{/* check if we should use fallback entry */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00418}00418                         \textcolor{keywordflow}{if} (media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00419}00419                                 media\_entry = \mbox{\hyperlink{mlx5__en__main_8c_ae40845c5344f1b7b5bb6904426d1232f}{mlx5e\_ext\_mode\_table}}[i][\mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a53853701cacddb2b038378caed272534}{MLX5E\_CABLE\_TYPE\_UNKNOWN}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00420}00420                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00421}00421         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00422}00422                 media\_entry = \mbox{\hyperlink{mlx5__en__main_8c_a0a499a0b042f18b788ae7d9ddef40f18}{mlx5e\_mode\_table}}[i];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00423}00423         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00424}00424 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00425}00425         \textcolor{keywordflow}{if} (media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00426}00426                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00427}00427                     \textcolor{stringliteral}{"{}Could not find operational media subtype\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00428}00428                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00429}00429         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00430}00430 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00431}00431         \textcolor{keywordflow}{switch} (media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00432}00432         \textcolor{keywordflow}{case} IFM\_10G\_ER:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00433}00433                 error = \mbox{\hyperlink{mlx5__port_8c_ac7afe3e33144e7a3e096599ce95c5e36}{mlx5\_query\_pddr\_range\_info}}(mdev, 1, \&is\_er\_type);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00434}00434                 \textcolor{keywordflow}{if} (error != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00435}00435                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00436}00436                             \textcolor{stringliteral}{"{}query port pddr failed: \%d\(\backslash\)n"{}}, error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00437}00437                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00438}00438                 \textcolor{keywordflow}{if} (error != 0 || is\_er\_type == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00439}00439                         media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} = IFM\_10G\_LR;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00440}00440                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00441}00441         \textcolor{keywordflow}{case} IFM\_40G\_LR4:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00442}00442                 error = \mbox{\hyperlink{mlx5__port_8c_ac7afe3e33144e7a3e096599ce95c5e36}{mlx5\_query\_pddr\_range\_info}}(mdev, 1, \&is\_er\_type);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00443}00443                 \textcolor{keywordflow}{if} (error != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00444}00444                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00445}00445                             \textcolor{stringliteral}{"{}query port pddr failed: \%d\(\backslash\)n"{}}, error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00446}00446                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00447}00447                 \textcolor{keywordflow}{if} (error == 0 \&\& is\_er\_type != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00448}00448                         media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} = IFM\_40G\_ER4;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00449}00449                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00450}00450         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00451}00451         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6a8884b0a7bbd55ce5c945475e2b16f1}{media\_active\_last}} = media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} | IFM\_ETHER | IFM\_FDX;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00452}00452         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}-\/>if\_baudrate = media\_entry.\mbox{\hyperlink{structmedia_a1b2b9d57f604e2daa6f39effa9c95e49}{baudrate}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00453}00453 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00454}00454         if\_link\_state\_change(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, LINK\_STATE\_UP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00455}00455 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00456}00456 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00457}00457 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00458}\mbox{\hyperlink{mlx5__en__main_8c_a0f58d540ba2ecf08563d710fddf080fb}{00458}} \mbox{\hyperlink{mlx5__en__main_8c_a0f58d540ba2ecf08563d710fddf080fb}{mlx5e\_media\_status}}(\textcolor{keyword}{struct} ifnet *dev, \textcolor{keyword}{struct} ifmediareq *ifmr)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00459}00459 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00460}00460         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = dev-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00461}00461 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00462}00462         ifmr-\/>ifm\_status = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afbe7d82d6be5ad778c829f3ed3c01838}{media\_status\_last}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00463}00463         ifmr-\/>ifm\_current = ifmr-\/>ifm\_active = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6a8884b0a7bbd55ce5c945475e2b16f1}{media\_active\_last}} |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00464}00464             (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.rx\_pauseframe\_control ? IFM\_ETH\_RXPAUSE : 0) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00465}00465             (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.tx\_pauseframe\_control ? IFM\_ETH\_TXPAUSE : 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00466}00466 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00467}00467 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00468}00468 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00469}00469 \textcolor{keyword}{static} u32}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00470}\mbox{\hyperlink{mlx5__en__main_8c_a285501716d00ef6af57683c408c86e2e}{00470}} \mbox{\hyperlink{mlx5__en__main_8c_a285501716d00ef6af57683c408c86e2e}{mlx5e\_find\_link\_mode}}(u32 subtype, \textcolor{keywordtype}{bool} ext)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00471}00471 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00472}00472         u32 link\_mode = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00473}00473 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00474}00474         \textcolor{keywordflow}{switch} (subtype) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00475}00475         \textcolor{keywordflow}{case} 0:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00476}00476                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00477}00477         \textcolor{keywordflow}{case} IFM\_10G\_LR:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00478}00478                 subtype = IFM\_10G\_ER;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00479}00479                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00480}00480         \textcolor{keywordflow}{case} IFM\_40G\_ER4:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00481}00481                 subtype = IFM\_40G\_LR4;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00482}00482                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00483}00483         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00484}00484                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00485}00485         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00486}00486 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00487}00487         \textcolor{keywordflow}{if} (ext) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00488}00488                 \textcolor{keywordflow}{for} (\textcolor{keywordtype}{unsigned} i = 0; i != \mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea0eb057cb4b2dbee0787c75c500a510ee}{MLX5E\_EXT\_LINK\_SPEEDS\_NUMBER}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00489}00489                         \textcolor{keywordflow}{for} (\textcolor{keywordtype}{unsigned} j = 0; j != \mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a151fd303a0230100fbf09fdaa0dce157}{MLX5E\_CABLE\_TYPE\_NUMBER}}; j++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00490}00490                                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{mlx5__en__main_8c_ae40845c5344f1b7b5bb6904426d1232f}{mlx5e\_ext\_mode\_table}}[i][j].subtype == subtype)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00491}00491                                         link\_mode |= \mbox{\hyperlink{port_8h_acc7c39a986fc970d9f13a68f4a28fbc2}{MLX5E\_PROT\_MASK}}(i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00492}00492                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00493}00493                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00494}00494         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00495}00495                 \textcolor{keywordflow}{for} (\textcolor{keywordtype}{unsigned} i = 0; i != \mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca2fdd4361e15ae10fcfe95a2510ff0da4}{MLX5E\_LINK\_SPEEDS\_NUMBER}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00496}00496                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{mlx5__en__main_8c_a0a499a0b042f18b788ae7d9ddef40f18}{mlx5e\_mode\_table}}[i].subtype == subtype)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00497}00497                                 link\_mode |= \mbox{\hyperlink{port_8h_acc7c39a986fc970d9f13a68f4a28fbc2}{MLX5E\_PROT\_MASK}}(i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00498}00498                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00499}00499         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00500}00500 done:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00501}00501         \textcolor{keywordflow}{return} (link\_mode);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00502}00502 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00503}00503 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00504}00504 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00505}\mbox{\hyperlink{mlx5__en__main_8c_af3345c2e2849260dc7be345f293f53e1}{00505}} \mbox{\hyperlink{mlx5__en__main_8c_af3345c2e2849260dc7be345f293f53e1}{mlx5e\_set\_port\_pause\_and\_pfc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00506}00506 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00507}00507         \textcolor{keywordflow}{return} (\mbox{\hyperlink{mlx5__port_8c_ae8bafa77713ec40473235db0e29b230f}{mlx5\_set\_port\_pause\_and\_pfc}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, 1,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00508}00508             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.rx\_pauseframe\_control,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00509}00509             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.tx\_pauseframe\_control,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00510}00510             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa064cdabd465e046026fb82a4b01ad8f}{rx\_priority\_flow\_control}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00511}00511             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad921466ac1574343d8589cdf5a905070}{tx\_priority\_flow\_control}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00512}00512 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00513}00513 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00514}00514 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00515}\mbox{\hyperlink{mlx5__en__main_8c_ab88e2bdddc6c5c8eddbbda50a8459c81}{00515}} \mbox{\hyperlink{mlx5__en__main_8c_ab88e2bdddc6c5c8eddbbda50a8459c81}{mlx5e\_set\_port\_pfc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00516}00516 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00517}00517         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00518}00518 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00519}00519         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4795b5a0fa2d0a63a36e40c448f9f50b}{gone}} != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00520}00520                 error = -\/ENXIO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00521}00521         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.rx\_pauseframe\_control ||}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00522}00522             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.tx\_pauseframe\_control) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00523}00523                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00524}00524                     \textcolor{stringliteral}{"{}Global pauseframes must be disabled before enabling PFC.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00525}00525                 error = -\/EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00526}00526         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00527}00527                 error = \mbox{\hyperlink{mlx5__en__main_8c_af3345c2e2849260dc7be345f293f53e1}{mlx5e\_set\_port\_pause\_and\_pfc}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00528}00528         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00529}00529         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00530}00530 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00531}00531 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00532}00532 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00533}\mbox{\hyperlink{mlx5__en__main_8c_a50a7745fcdebdc5d15cee2a34a2ecdcd}{00533}} \mbox{\hyperlink{mlx5__en__main_8c_a50a7745fcdebdc5d15cee2a34a2ecdcd}{mlx5e\_media\_change}}(\textcolor{keyword}{struct} ifnet *dev)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00534}00534 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00535}00535         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = dev-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00536}00536         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00537}00537         u32 eth\_proto\_cap;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00538}00538         u32 link\_mode;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00539}00539         u32 out[\mbox{\hyperlink{device_8h_a2bdfa104f3d7c0635b984382d1562741}{MLX5\_ST\_SZ\_DW}}(ptys\_reg)];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00540}00540         \textcolor{keywordtype}{int} was\_opened;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00541}00541         \textcolor{keywordtype}{int} locked;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00542}00542         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00543}00543         \textcolor{keywordtype}{bool} ext;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00544}00544 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00545}00545         locked = \mbox{\hyperlink{en_8h_a7d34073fc54192f2e7099f9afdc51f15}{PRIV\_LOCKED}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00546}00546         \textcolor{keywordflow}{if} (!locked)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00547}00547                 \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00548}00548 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00549}00549         \textcolor{keywordflow}{if} (IFM\_TYPE(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}.ifm\_media) != IFM\_ETHER) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00550}00550                 error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00551}00551                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00552}00552         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00553}00553 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00554}00554         error = \mbox{\hyperlink{mlx5__port_8c_a8f0cbf29a10097b179dd9e3a4df0b873}{mlx5\_query\_port\_ptys}}(mdev, out, \textcolor{keyword}{sizeof}(out),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00555}00555             \mbox{\hyperlink{driver_8h_aad393aa3e173d7f081ab4bbc6ba5027da33ce80cf37a3f11b79424cb8a8a7bc56}{MLX5\_PTYS\_EN}}, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00556}00556         \textcolor{keywordflow}{if} (error != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00557}00557                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(dev, \textcolor{stringliteral}{"{}Query port media capability failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00558}00558                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00559}00559         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00560}00560 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00561}00561         ext = \mbox{\hyperlink{device_8h_a808d96f6813ca6f91ec28ca3e439be6c}{MLX5\_CAP\_PCAM\_FEATURE}}(mdev, ptys\_extended\_ethernet);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00562}00562         link\_mode = \mbox{\hyperlink{mlx5__en__main_8c_a285501716d00ef6af57683c408c86e2e}{mlx5e\_find\_link\_mode}}(IFM\_SUBTYPE(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}.ifm\_media), ext);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00563}00563 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00564}00564         \textcolor{comment}{/* query supported capabilities */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00565}00565         eth\_proto\_cap = \mbox{\hyperlink{port_8h_a85ea9be21638b172b3e363994ca8fa17}{MLX5\_GET\_ETH\_PROTO}}(ptys\_reg, out, ext,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00566}00566             eth\_proto\_capability);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00567}00567 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00568}00568         \textcolor{comment}{/* check for autoselect */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00569}00569         \textcolor{keywordflow}{if} (IFM\_SUBTYPE(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}.ifm\_media) == IFM\_AUTO) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00570}00570                 link\_mode = eth\_proto\_cap;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00571}00571                 \textcolor{keywordflow}{if} (link\_mode == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00572}00572                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(dev, \textcolor{stringliteral}{"{}Port media capability is zero\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00573}00573                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00574}00574                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00575}00575                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00576}00576         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00577}00577                 link\_mode = link\_mode \& eth\_proto\_cap;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00578}00578                 \textcolor{keywordflow}{if} (link\_mode == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00579}00579                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(dev, \textcolor{stringliteral}{"{}Not supported link mode requested\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00580}00580                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00581}00581                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00582}00582                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00583}00583         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00584}00584         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}.ifm\_media \& (IFM\_ETH\_RXPAUSE | IFM\_ETH\_TXPAUSE)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00585}00585                 \textcolor{comment}{/* check if PFC is enabled */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00586}00586                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa064cdabd465e046026fb82a4b01ad8f}{rx\_priority\_flow\_control}} ||}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00587}00587                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad921466ac1574343d8589cdf5a905070}{tx\_priority\_flow\_control}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00588}00588                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(dev, \textcolor{stringliteral}{"{}PFC must be disabled before enabling global pauseframes.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00589}00589                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00590}00590                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00591}00591                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00592}00592         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00593}00593         \textcolor{comment}{/* update pauseframe control bits */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00594}00594         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.rx\_pauseframe\_control =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00595}00595             (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}.ifm\_media \& IFM\_ETH\_RXPAUSE) ? 1 : 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00596}00596         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.tx\_pauseframe\_control =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00597}00597             (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}.ifm\_media \& IFM\_ETH\_TXPAUSE) ? 1 : 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00598}00598 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00599}00599         \textcolor{comment}{/* check if device is opened */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00600}00600         was\_opened = test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00601}00601 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00602}00602         \textcolor{comment}{/* reconfigure the hardware */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00603}00603         \mbox{\hyperlink{mlx5__port_8c_af420caf0db7e1b8cbf69651fbe3d98d7}{mlx5\_set\_port\_status}}(mdev, \mbox{\hyperlink{driver_8h_abbd4adaee2907713cb84574e971dbbbdad24a1b8170c333524f13d66b1e4560b5}{MLX5\_PORT\_DOWN}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00604}00604         \mbox{\hyperlink{mlx5__port_8c_a8e61837d509b7d0f854f031e69002249}{mlx5\_set\_port\_proto}}(mdev, link\_mode, \mbox{\hyperlink{driver_8h_aad393aa3e173d7f081ab4bbc6ba5027da33ce80cf37a3f11b79424cb8a8a7bc56}{MLX5\_PTYS\_EN}}, ext);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00605}00605         error = -\/\mbox{\hyperlink{mlx5__en__main_8c_af3345c2e2849260dc7be345f293f53e1}{mlx5e\_set\_port\_pause\_and\_pfc}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00606}00606         \textcolor{keywordflow}{if} (was\_opened)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00607}00607                 \mbox{\hyperlink{mlx5__port_8c_af420caf0db7e1b8cbf69651fbe3d98d7}{mlx5\_set\_port\_status}}(mdev, \mbox{\hyperlink{driver_8h_abbd4adaee2907713cb84574e971dbbbdaa0c48ce5457a008571fdac68671d5771}{MLX5\_PORT\_UP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00608}00608 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00609}00609 done:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00610}00610         \textcolor{keywordflow}{if} (!locked)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00611}00611                 \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00612}00612         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00613}00613 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00614}00614 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00615}00615 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00616}\mbox{\hyperlink{mlx5__en__main_8c_ab58a7586baea5db654fe62857de90d18}{00616}} \mbox{\hyperlink{mlx5__en__main_8c_ab58a7586baea5db654fe62857de90d18}{mlx5e\_update\_carrier\_work}}(\textcolor{keyword}{struct} work\_struct *\mbox{\hyperlink{en__hw__tls_8h_a623997e11b94d7c467ce26627cc488a2}{work}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00617}00617 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00618}00618         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = container\_of(\mbox{\hyperlink{en__hw__tls_8h_a623997e11b94d7c467ce26627cc488a2}{work}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00619}00619             \mbox{\hyperlink{structmlx5e__priv_a4e7338a0d87a985d11c2bf4e11b43ddb}{update\_carrier\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00620}00620 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00621}00621         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00622}00622         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00623}00623                 \mbox{\hyperlink{mlx5__en__main_8c_ac166dc34edd7ee3b30ea69428229e022}{mlx5e\_update\_carrier}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00624}00624         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00625}00625 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00626}00626 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00627}\mbox{\hyperlink{mlx5__en__main_8c_af8992d0a297892bbfce00c9b62fb70de}{00627}} \textcolor{preprocessor}{\#define MLX5E\_PCIE\_PERF\_GET\_64(a,b,c,d,e,f)    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00628}00628 \textcolor{preprocessor}{        s\_debug-\/>c = MLX5\_GET64(mpcnt\_reg, out, counter\_set.f.c);}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00629}00629 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00630}\mbox{\hyperlink{mlx5__en__main_8c_a4265041957e08021a028ab97c13adabf}{00630}} \textcolor{preprocessor}{\#define MLX5E\_PCIE\_PERF\_GET\_32(a,b,c,d,e,f)    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00631}00631 \textcolor{preprocessor}{        s\_debug-\/>c = MLX5\_GET(mpcnt\_reg, out, counter\_set.f.c);}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00632}00632 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00633}00633 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00634}\mbox{\hyperlink{mlx5__en__main_8c_a4e95aab6c7d1017b08acea7854e72d96}{00634}} \mbox{\hyperlink{mlx5__en__main_8c_a4e95aab6c7d1017b08acea7854e72d96}{mlx5e\_update\_pcie\_counters}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00635}00635 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00636}00636         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00637}00637         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__port__stats__debug}{mlx5e\_port\_stats\_debug}} *s\_debug = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a7f2dbb4c146fadb24dfd26f2831dba83}{port\_stats\_debug}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00638}00638         \textcolor{keyword}{const} \textcolor{keywordtype}{unsigned} sz = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(mpcnt\_reg);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00639}00639         \textcolor{keywordtype}{void} *out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00640}00640         \textcolor{keywordtype}{void} *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00641}00641         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00642}00642 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00643}00643         \textcolor{comment}{/* allocate firmware request structures */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00644}00644         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(sz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00645}00645         out = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(sz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00646}00646         \textcolor{keywordflow}{if} (in == NULL || out == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00647}00647                 \textcolor{keywordflow}{goto} free\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00648}00648 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00649}00649         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mpcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_a2f80701c36e79c0640d91c788feee0b3a9f55690d83f9a3f413fd68f9048529f5}{MLX5\_PCIE\_PERFORMANCE\_COUNTERS\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00650}00650         err = \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdaff8dfbd893873b77f99d213d6e7e3ba6}{MLX5\_REG\_MPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00651}00651         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00652}00652                 \textcolor{keywordflow}{goto} free\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00653}00653 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00654}00654         \mbox{\hyperlink{en_8h_ab44011e2ad13944b9daa552b1fec7b4e}{MLX5E\_PCIE\_PERFORMANCE\_COUNTERS\_64}}(\mbox{\hyperlink{mlx5__en__main_8c_af8992d0a297892bbfce00c9b62fb70de}{MLX5E\_PCIE\_PERF\_GET\_64}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00655}00655         \mbox{\hyperlink{en_8h_a2f32ac5ddf74a3528bb1a716ce1f232f}{MLX5E\_PCIE\_PERFORMANCE\_COUNTERS\_32}}(\mbox{\hyperlink{mlx5__en__main_8c_a4265041957e08021a028ab97c13adabf}{MLX5E\_PCIE\_PERF\_GET\_32}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00656}00656 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00657}00657         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mpcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_a2f80701c36e79c0640d91c788feee0b3a5c52a4c432400bb15b9b0f69dd0e1c0a}{MLX5\_PCIE\_TIMERS\_AND\_STATES\_COUNTERS\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00658}00658         err = \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdaff8dfbd893873b77f99d213d6e7e3ba6}{MLX5\_REG\_MPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00659}00659         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00660}00660                 \textcolor{keywordflow}{goto} free\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00661}00661 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00662}00662         \mbox{\hyperlink{en_8h_a24a0c0081ca5a2f2d120dcbdfde0980b}{MLX5E\_PCIE\_TIMERS\_AND\_STATES\_COUNTERS\_32}}(\mbox{\hyperlink{mlx5__en__main_8c_a4265041957e08021a028ab97c13adabf}{MLX5E\_PCIE\_PERF\_GET\_32}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00663}00663 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00664}00664         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mpcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_a2f80701c36e79c0640d91c788feee0b3a2ecb26daa374bf6c6d00a6b047d486c7}{MLX5\_PCIE\_LANE\_COUNTERS\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00665}00665         err = \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdaff8dfbd893873b77f99d213d6e7e3ba6}{MLX5\_REG\_MPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00666}00666         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00667}00667                 \textcolor{keywordflow}{goto} free\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00668}00668 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00669}00669         \mbox{\hyperlink{en_8h_a68b00253bfc2f667b36463a062132a51}{MLX5E\_PCIE\_LANE\_COUNTERS\_32}}(\mbox{\hyperlink{mlx5__en__main_8c_a4265041957e08021a028ab97c13adabf}{MLX5E\_PCIE\_PERF\_GET\_32}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00670}00670 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00671}00671 free\_out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00672}00672         \textcolor{comment}{/* free firmware request structures */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00673}00673         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00674}00674         kvfree(out);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00675}00675 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00676}00676 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00677}00677 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00678}00678 \textcolor{comment}{ * This function reads the physical port counters from the firmware}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00679}00679 \textcolor{comment}{ * using a pre-\/defined layout defined by various MLX5E\_PPORT\_XXX()}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00680}00680 \textcolor{comment}{ * macros. The output is converted from big-\/endian 64-\/bit values into}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00681}00681 \textcolor{comment}{ * host endian ones and stored in the "{}priv-\/>stats.pport"{} structure.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00682}00682 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00683}00683 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00684}\mbox{\hyperlink{mlx5__en__main_8c_afcc5fd8ae53309404c78ccc7c7d75f85}{00684}} \mbox{\hyperlink{mlx5__en__main_8c_afcc5fd8ae53309404c78ccc7c7d75f85}{mlx5e\_update\_pport\_counters}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00685}00685 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00686}00686         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00687}00687         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__pport__stats}{mlx5e\_pport\_stats}} *s = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00688}00688         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__port__stats__debug}{mlx5e\_port\_stats\_debug}} *s\_debug = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a7f2dbb4c146fadb24dfd26f2831dba83}{port\_stats\_debug}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00689}00689         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00690}00690         u32 *out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00691}00691         \textcolor{keyword}{const} u64 *ptr;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00692}00692         \textcolor{keywordtype}{unsigned} sz = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(ppcnt\_reg);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00693}00693         \textcolor{keywordtype}{unsigned} x;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00694}00694         \textcolor{keywordtype}{unsigned} y;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00695}00695         \textcolor{keywordtype}{unsigned} z;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00696}00696 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00697}00697         \textcolor{comment}{/* allocate firmware request structures */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00698}00698         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(sz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00699}00699         out = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(sz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00700}00700         \textcolor{keywordflow}{if} (in == NULL || out == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00701}00701                 \textcolor{keywordflow}{goto} free\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00702}00702 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00703}00703         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00704}00704 \textcolor{comment}{         * Get pointer to the 64-\/bit counter set which is located at a}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00705}00705 \textcolor{comment}{         * fixed offset in the output firmware request structure:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00706}00706 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00707}00707         ptr = (\textcolor{keyword}{const} uint64\_t *)\mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(ppcnt\_reg, out, counter\_set);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00708}00708 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00709}00709         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(ppcnt\_reg, in, local\_port, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00710}00710 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00711}00711         \textcolor{comment}{/* read IEEE802\_3 counter group using predefined counter layout */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00712}00712         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(ppcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_af8654c714018c6241d9ebd01f3fb5a26a5d3563aba047dd12b24179dba9a676a1}{MLX5\_IEEE\_802\_3\_COUNTERS\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00713}00713         \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdad39377e3123cbe5c57e0ad6a25e31205}{MLX5\_REG\_PPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00714}00714         \textcolor{keywordflow}{for} (x = 0, y = \mbox{\hyperlink{en_8h_a48a38a656e40ffbcd2ffdfccb3a1616d}{MLX5E\_PPORT\_PER\_PRIO\_STATS\_NUM}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00715}00715              x != \mbox{\hyperlink{en_8h_a84f95d03cc5416899b7609c9ef9dac2d}{MLX5E\_PPORT\_IEEE802\_3\_STATS\_NUM}}; x++, y++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00716}00716                 s-\/>\mbox{\hyperlink{structmlx5e__pport__stats_a6ac5e2fdb43e3a977fe5d3df40b3f2bf}{arg}}[y] = be64toh(ptr[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00717}00717 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00718}00718         \textcolor{comment}{/* read RFC2819 counter group using predefined counter layout */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00719}00719         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(ppcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_af8654c714018c6241d9ebd01f3fb5a26ac5df4cfee26ea3c251784de90571aa85}{MLX5\_RFC\_2819\_COUNTERS\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00720}00720         \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdad39377e3123cbe5c57e0ad6a25e31205}{MLX5\_REG\_PPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00721}00721         \textcolor{keywordflow}{for} (x = 0; x != \mbox{\hyperlink{en_8h_ae56047fb9944389d5689ce939b47cafd}{MLX5E\_PPORT\_RFC2819\_STATS\_NUM}}; x++, y++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00722}00722                 s-\/>\mbox{\hyperlink{structmlx5e__pport__stats_a6ac5e2fdb43e3a977fe5d3df40b3f2bf}{arg}}[y] = be64toh(ptr[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00723}00723 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00724}00724         \textcolor{keywordflow}{for} (y = 0; x != \mbox{\hyperlink{en_8h_ae56047fb9944389d5689ce939b47cafd}{MLX5E\_PPORT\_RFC2819\_STATS\_NUM}} +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00725}00725             \mbox{\hyperlink{en_8h_ac96a1e174f5f14a65fa75e6afdb6d2d7}{MLX5E\_PPORT\_RFC2819\_STATS\_DEBUG\_NUM}}; x++, y++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00726}00726                 s\_debug-\/>\mbox{\hyperlink{structmlx5e__port__stats__debug_a2e4d234e8eb5b107efaa95e2d6de2564}{arg}}[y] = be64toh(ptr[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00727}00727 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00728}00728         \textcolor{comment}{/* read RFC2863 counter group using predefined counter layout */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00729}00729         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(ppcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_af8654c714018c6241d9ebd01f3fb5a26a92130bfcdf7111f833b0d2116d9d2908}{MLX5\_RFC\_2863\_COUNTERS\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00730}00730         \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdad39377e3123cbe5c57e0ad6a25e31205}{MLX5\_REG\_PPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00731}00731         \textcolor{keywordflow}{for} (x = 0; x != \mbox{\hyperlink{en_8h_a20de462709ccbd2ebde2c6df920d79a8}{MLX5E\_PPORT\_RFC2863\_STATS\_DEBUG\_NUM}}; x++, y++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00732}00732                 s\_debug-\/>\mbox{\hyperlink{structmlx5e__port__stats__debug_a2e4d234e8eb5b107efaa95e2d6de2564}{arg}}[y] = be64toh(ptr[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00733}00733 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00734}00734         \textcolor{comment}{/* read physical layer stats counter group using predefined counter layout */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00735}00735         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(ppcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_af8654c714018c6241d9ebd01f3fb5a26a70eb1df32c096130cc4ac3b8d56edd64}{MLX5\_PHYSICAL\_LAYER\_COUNTERS\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00736}00736         \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdad39377e3123cbe5c57e0ad6a25e31205}{MLX5\_REG\_PPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00737}00737         \textcolor{keywordflow}{for} (x = 0; x != \mbox{\hyperlink{en_8h_a8fc5a7d13eb6ba8740ac7a88c2cea2cd}{MLX5E\_PPORT\_PHYSICAL\_LAYER\_STATS\_DEBUG\_NUM}}; x++, y++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00738}00738                 s\_debug-\/>\mbox{\hyperlink{structmlx5e__port__stats__debug_a2e4d234e8eb5b107efaa95e2d6de2564}{arg}}[y] = be64toh(ptr[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00739}00739 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00740}00740         \textcolor{comment}{/* read Extended Ethernet counter group using predefined counter layout */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00741}00741         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(ppcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_af8654c714018c6241d9ebd01f3fb5a26abf7fa56ff4f2ee61a1d348fc5c2f49a6}{MLX5\_ETHERNET\_EXTENDED\_COUNTERS\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00742}00742         \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdad39377e3123cbe5c57e0ad6a25e31205}{MLX5\_REG\_PPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00743}00743         \textcolor{keywordflow}{for} (x = 0; x != \mbox{\hyperlink{en_8h_a3e62bcdb5ae349fd71538f1b974b9b6b}{MLX5E\_PPORT\_ETHERNET\_EXTENDED\_STATS\_DEBUG\_NUM}}; x++, y++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00744}00744                 s\_debug-\/>\mbox{\hyperlink{structmlx5e__port__stats__debug_a2e4d234e8eb5b107efaa95e2d6de2564}{arg}}[y] = be64toh(ptr[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00745}00745 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00746}00746         \textcolor{comment}{/* read Extended Statistical Group */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00747}00747         \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(mdev, pcam\_reg) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00748}00748             \mbox{\hyperlink{device_8h_a808d96f6813ca6f91ec28ca3e439be6c}{MLX5\_CAP\_PCAM\_FEATURE}}(mdev, ppcnt\_statistical\_group) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00749}00749             \mbox{\hyperlink{device_8h_a808d96f6813ca6f91ec28ca3e439be6c}{MLX5\_CAP\_PCAM\_FEATURE}}(mdev, per\_lane\_error\_counters)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00750}00750                 \textcolor{comment}{/* read Extended Statistical counter group using predefined counter layout */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00751}00751                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(ppcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_af8654c714018c6241d9ebd01f3fb5a26ae8b88befcb70e0b7a01d676f89e16e98}{MLX5\_PHYSICAL\_LAYER\_STATISTICAL\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00752}00752                 \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdad39377e3123cbe5c57e0ad6a25e31205}{MLX5\_REG\_PPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00753}00753 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00754}00754                 \textcolor{keywordflow}{for} (x = 0; x != \mbox{\hyperlink{en_8h_a400681731882f23cf3df2f2220b1aa7b}{MLX5E\_PPORT\_STATISTICAL\_DEBUG\_NUM}}; x++, y++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00755}00755                         s\_debug-\/>\mbox{\hyperlink{structmlx5e__port__stats__debug_a2e4d234e8eb5b107efaa95e2d6de2564}{arg}}[y] = be64toh(ptr[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00756}00756         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00757}00757 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00758}00758         \textcolor{comment}{/* read PCIE counters */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00759}00759         \mbox{\hyperlink{mlx5__en__main_8c_a4e95aab6c7d1017b08acea7854e72d96}{mlx5e\_update\_pcie\_counters}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00760}00760 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00761}00761         \textcolor{comment}{/* read per-\/priority counters */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00762}00762         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(ppcnt\_reg, in, grp, \mbox{\hyperlink{device_8h_af8654c714018c6241d9ebd01f3fb5a26a49041a456747a04011494560b8f633f0}{MLX5\_PER\_PRIORITY\_COUNTERS\_GROUP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00763}00763 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00764}00764         \textcolor{comment}{/* iterate all the priorities */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00765}00765         \textcolor{keywordflow}{for} (y = z = 0; z != \mbox{\hyperlink{en_8h_ae1fa4b7a8f8f93d1ff0a6b4564c5f344}{MLX5E\_PPORT\_PER\_PRIO\_STATS\_NUM\_PRIO}}; z++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00766}00766                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(ppcnt\_reg, in, prio\_tc, z);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00767}00767                 \mbox{\hyperlink{driver_8h_a588ab969bb7070e2dc60df62da38c8fa}{mlx5\_core\_access\_reg}}(mdev, in, sz, out, sz, \mbox{\hyperlink{driver_8h_a3babbf89cae9b856a12864a41506efbdad39377e3123cbe5c57e0ad6a25e31205}{MLX5\_REG\_PPCNT}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00768}00768 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00769}00769                 \textcolor{comment}{/* read per priority stats counter group using predefined counter layout */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00770}00770                 \textcolor{keywordflow}{for} (x = 0; x != (\mbox{\hyperlink{en_8h_a48a38a656e40ffbcd2ffdfccb3a1616d}{MLX5E\_PPORT\_PER\_PRIO\_STATS\_NUM}} /}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00771}00771                     \mbox{\hyperlink{en_8h_ae1fa4b7a8f8f93d1ff0a6b4564c5f344}{MLX5E\_PPORT\_PER\_PRIO\_STATS\_NUM\_PRIO}}); x++, y++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00772}00772                         s-\/>\mbox{\hyperlink{structmlx5e__pport__stats_a6ac5e2fdb43e3a977fe5d3df40b3f2bf}{arg}}[y] = be64toh(ptr[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00773}00773         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00774}00774 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00775}00775 free\_out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00776}00776         \textcolor{comment}{/* free firmware request structures */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00777}00777         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00778}00778         kvfree(out);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00779}00779 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00780}00780 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00781}00781 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00782}\mbox{\hyperlink{mlx5__en__main_8c_aca89e9c0657717883dfdba20db28ea9b}{00782}} \mbox{\hyperlink{mlx5__en__main_8c_aca89e9c0657717883dfdba20db28ea9b}{mlx5e\_grp\_vnic\_env\_update\_stats}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00783}00783 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00784}00784         u32 out[\mbox{\hyperlink{device_8h_a2bdfa104f3d7c0635b984382d1562741}{MLX5\_ST\_SZ\_DW}}(query\_vnic\_env\_out)] = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00785}00785         u32 in[\mbox{\hyperlink{device_8h_a2bdfa104f3d7c0635b984382d1562741}{MLX5\_ST\_SZ\_DW}}(query\_vnic\_env\_in)] = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00786}00786 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00787}00787         \textcolor{keywordflow}{if} (!\mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, nic\_receive\_steering\_discard))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00788}00788                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00789}00789 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00790}00790         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(query\_vnic\_env\_in, in, opcode,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00791}00791             \mbox{\hyperlink{mlx5__ifc_8h_a871a83db4e53fc6c6872b5ac7cc94f39a9ae1766bfa403643453fd1ef43863ee8}{MLX5\_CMD\_OP\_QUERY\_VNIC\_ENV}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00792}00792         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(query\_vnic\_env\_in, in, op\_mod, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00793}00793         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(query\_vnic\_env\_in, in, other\_vport, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00794}00794 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00795}00795         \textcolor{keywordflow}{if} (\mbox{\hyperlink{driver_8h_ad7393e74938540251a0c894eb1eae135}{mlx5\_cmd\_exec}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, in, \textcolor{keyword}{sizeof}(in), out, \textcolor{keyword}{sizeof}(out)) != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00796}00796                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00797}00797 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00798}00798         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.rx\_steer\_missed\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00799}00799             \mbox{\hyperlink{device_8h_ac7ded81380b3a6c3a63a7c9f4581368b}{MLX5\_GET64}}(query\_vnic\_env\_out, out,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00800}00800             vport\_env.nic\_receive\_steering\_discard);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00801}00801 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00802}00802 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00803}00803 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00804}00804 \textcolor{comment}{ * This function is called regularly to collect all statistics}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00805}00805 \textcolor{comment}{ * counters from the firmware. The values can be viewed through the}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00806}00806 \textcolor{comment}{ * sysctl interface. Execution is serialized using the priv's global}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00807}00807 \textcolor{comment}{ * configuration lock.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00808}00808 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00809}00809 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00810}\mbox{\hyperlink{mlx5__en__main_8c_ac5028e5ef2f827026cd8b43ce845f574}{00810}} \mbox{\hyperlink{mlx5__en__main_8c_ac5028e5ef2f827026cd8b43ce845f574}{mlx5e\_update\_stats\_locked}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00811}00811 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00812}00812         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00813}00813         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__vport__stats}{mlx5e\_vport\_stats}} *s = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00814}00814         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__sq__stats}{mlx5e\_sq\_stats}} *sq\_stats;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00815}00815         u32 in[\mbox{\hyperlink{device_8h_a2bdfa104f3d7c0635b984382d1562741}{MLX5\_ST\_SZ\_DW}}(query\_vport\_counter\_in)];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00816}00816         u32 *out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00817}00817         \textcolor{keywordtype}{int} outlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(query\_vport\_counter\_out);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00818}00818         u64 tso\_packets = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00819}00819         u64 tso\_bytes = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00820}00820         u64 tx\_queue\_dropped = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00821}00821         u64 tx\_defragged = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00822}00822         u64 tx\_offload\_none = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00823}00823         u64 lro\_packets = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00824}00824         u64 lro\_bytes = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00825}00825         u64 sw\_lro\_queued = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00826}00826         u64 sw\_lro\_flushed = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00827}00827         u64 rx\_csum\_none = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00828}00828         u64 rx\_wqe\_err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00829}00829         u64 rx\_packets = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00830}00830         u64 rx\_bytes = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00831}00831         u64 rx\_decrypted\_error = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00832}00832         u64 rx\_decrypted\_ok = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00833}00833         u32 rx\_out\_of\_buffer = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00834}00834         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00835}00835         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00836}00836         \textcolor{keywordtype}{int} j;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00837}00837 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00838}00838         out = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(outlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00839}00839         \textcolor{keywordflow}{if} (out == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00840}00840                 \textcolor{keywordflow}{goto} free\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00841}00841 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00842}00842         \textcolor{comment}{/* Collect firts the SW counters and then HW for consistency */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00843}00843         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00844}00844                 \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *pch = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}} + i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00845}00845                 \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}} = \&pch-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00846}00846                 \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__rq__stats}{mlx5e\_rq\_stats}} *rq\_stats = \&pch-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a5e2116ae6494a09666a310830556d5db}{stats}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00847}00847 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00848}00848                 \textcolor{comment}{/* collect stats from LRO */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00849}00849                 rq\_stats-\/>sw\_lro\_queued = \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7dc342e043ae90f04c86ee45428363f1}{lro}}.lro\_queued;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00850}00850                 rq\_stats-\/>sw\_lro\_flushed = \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7dc342e043ae90f04c86ee45428363f1}{lro}}.lro\_flushed;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00851}00851                 sw\_lro\_queued += rq\_stats-\/>sw\_lro\_queued;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00852}00852                 sw\_lro\_flushed += rq\_stats-\/>sw\_lro\_flushed;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00853}00853                 lro\_packets += rq\_stats-\/>lro\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00854}00854                 lro\_bytes += rq\_stats-\/>lro\_bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00855}00855                 rx\_csum\_none += rq\_stats-\/>csum\_none;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00856}00856                 rx\_wqe\_err += rq\_stats-\/>wqe\_err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00857}00857                 rx\_packets += rq\_stats-\/>packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00858}00858                 rx\_bytes += rq\_stats-\/>bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00859}00859                 rx\_decrypted\_error += rq\_stats-\/>decrypted\_error\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00860}00860                 rx\_decrypted\_ok += rq\_stats-\/>decrypted\_ok\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00861}00861 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00862}00862                 \textcolor{keywordflow}{for} (j = 0; j < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; j++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00863}00863                         sq\_stats = \&pch-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[j].\mbox{\hyperlink{structmlx5e__sq_a36339dff2abc7f72df636d08ab976ded}{stats}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00864}00864 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00865}00865                         tso\_packets += sq\_stats-\/>tso\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00866}00866                         tso\_bytes += sq\_stats-\/>tso\_bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00867}00867                         tx\_queue\_dropped += sq\_stats-\/>dropped;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00868}00868                         tx\_queue\_dropped += sq\_stats-\/>enobuf;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00869}00869                         tx\_defragged += sq\_stats-\/>defragged;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00870}00870                         tx\_offload\_none += sq\_stats-\/>csum\_offload\_none;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00871}00871                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00872}00872         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00873}00873 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00874}00874 \textcolor{preprocessor}{\#ifdef RATELIMIT}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00875}00875         \textcolor{comment}{/* Collect statistics from all rate-\/limit queues */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00876}00876         \textcolor{keywordflow}{for} (j = 0; j < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ad17b237a153f50dbdfcfd493c20974f7}{rl}}.\mbox{\hyperlink{structmlx5e__rl__priv__data_a9071de7f825d4593e663cda82c89bae7}{param}}.tx\_worker\_threads\_def; j++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00877}00877                 \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__rl__worker}{mlx5e\_rl\_worker}} *rlw = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ad17b237a153f50dbdfcfd493c20974f7}{rl}}.\mbox{\hyperlink{structmlx5e__rl__priv__data_a34137df4c7b596f23414fdb9d2eaddf8}{workers}} + j;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00878}00878 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00879}00879                 \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ad17b237a153f50dbdfcfd493c20974f7}{rl}}.\mbox{\hyperlink{structmlx5e__rl__priv__data_a9071de7f825d4593e663cda82c89bae7}{param}}.tx\_channels\_per\_worker\_def; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00880}00880                         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__rl__channel}{mlx5e\_rl\_channel}} *\mbox{\hyperlink{en_8h_a356648f6176947e8285245eb779d0b54}{channel}} = rlw-\/>\mbox{\hyperlink{structmlx5e__rl__worker_a9a83ec4333b07abfc043915aba55d372}{channels}} + i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00881}00881                         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}} = \mbox{\hyperlink{en_8h_a356648f6176947e8285245eb779d0b54}{channel}}-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00882}00882 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00883}00883                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}} == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00884}00884                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00885}00885 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00886}00886                         sq\_stats = \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a36339dff2abc7f72df636d08ab976ded}{stats}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00887}00887 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00888}00888                         tso\_packets += sq\_stats-\/>tso\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00889}00889                         tso\_bytes += sq\_stats-\/>tso\_bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00890}00890                         tx\_queue\_dropped += sq\_stats-\/>dropped;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00891}00891                         tx\_queue\_dropped += sq\_stats-\/>enobuf;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00892}00892                         tx\_defragged += sq\_stats-\/>defragged;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00893}00893                         tx\_offload\_none += sq\_stats-\/>csum\_offload\_none;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00894}00894                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00895}00895         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00896}00896 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00897}00897 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00898}00898         \textcolor{comment}{/* update counters */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00899}00899         s-\/>tso\_packets = tso\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00900}00900         s-\/>tso\_bytes = tso\_bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00901}00901         s-\/>tx\_queue\_dropped = tx\_queue\_dropped;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00902}00902         s-\/>tx\_defragged = tx\_defragged;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00903}00903         s-\/>lro\_packets = lro\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00904}00904         s-\/>lro\_bytes = lro\_bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00905}00905         s-\/>sw\_lro\_queued = sw\_lro\_queued;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00906}00906         s-\/>sw\_lro\_flushed = sw\_lro\_flushed;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00907}00907         s-\/>rx\_csum\_none = rx\_csum\_none;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00908}00908         s-\/>rx\_wqe\_err = rx\_wqe\_err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00909}00909         s-\/>rx\_packets = rx\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00910}00910         s-\/>rx\_bytes = rx\_bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00911}00911         s-\/>rx\_decrypted\_error\_packets = rx\_decrypted\_error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00912}00912         s-\/>rx\_decrypted\_ok\_packets = rx\_decrypted\_ok;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00913}00913 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00914}00914         \mbox{\hyperlink{mlx5__en__main_8c_aca89e9c0657717883dfdba20db28ea9b}{mlx5e\_grp\_vnic\_env\_update\_stats}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00915}00915 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00916}00916         \textcolor{comment}{/* HW counters */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00917}00917         memset(in, 0, \textcolor{keyword}{sizeof}(in));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00918}00918 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00919}00919         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(query\_vport\_counter\_in, in, opcode,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00920}00920             \mbox{\hyperlink{mlx5__ifc_8h_a871a83db4e53fc6c6872b5ac7cc94f39afd0be6db5429a55777802c01c6adcbeb}{MLX5\_CMD\_OP\_QUERY\_VPORT\_COUNTER}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00921}00921         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(query\_vport\_counter\_in, in, op\_mod, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00922}00922         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(query\_vport\_counter\_in, in, other\_vport, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00923}00923 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00924}00924         memset(out, 0, outlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00925}00925 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00926}00926         \textcolor{comment}{/* get number of out-\/of-\/buffer drops first */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00927}00927         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) != 0 \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00928}00928             \mbox{\hyperlink{mlx5__vport_8c_ae66967cffcbed90c2587e84e427f6d23}{mlx5\_vport\_query\_out\_of\_rx\_buffer}}(mdev, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a092fefb212ffef0324dd097caa2cb6}{counter\_set\_id}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00929}00929             \&rx\_out\_of\_buffer) == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00930}00930                 s-\/>rx\_out\_of\_buffer = rx\_out\_of\_buffer;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00931}00931         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00932}00932 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00933}00933         \textcolor{comment}{/* get port statistics */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00934}00934         \textcolor{keywordflow}{if} (\mbox{\hyperlink{driver_8h_ad7393e74938540251a0c894eb1eae135}{mlx5\_cmd\_exec}}(mdev, in, \textcolor{keyword}{sizeof}(in), out, outlen) == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00935}00935 \textcolor{preprocessor}{\#define MLX5\_GET\_CTR(out, x) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00936}00936 \textcolor{preprocessor}{        MLX5\_GET64(query\_vport\_counter\_out, out, x)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00937}00937 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00938}00938                 s-\/>rx\_error\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00939}00939                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, received\_errors.packets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00940}00940                 s-\/>rx\_error\_bytes =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00941}00941                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, received\_errors.octets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00942}00942                 s-\/>tx\_error\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00943}00943                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, transmit\_errors.packets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00944}00944                 s-\/>tx\_error\_bytes =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00945}00945                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, transmit\_errors.octets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00946}00946 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00947}00947                 s-\/>rx\_unicast\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00948}00948                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, received\_eth\_unicast.packets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00949}00949                 s-\/>rx\_unicast\_bytes =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00950}00950                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, received\_eth\_unicast.octets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00951}00951                 s-\/>tx\_unicast\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00952}00952                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, transmitted\_eth\_unicast.packets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00953}00953                 s-\/>tx\_unicast\_bytes =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00954}00954                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, transmitted\_eth\_unicast.octets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00955}00955 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00956}00956                 s-\/>rx\_multicast\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00957}00957                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, received\_eth\_multicast.packets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00958}00958                 s-\/>rx\_multicast\_bytes =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00959}00959                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, received\_eth\_multicast.octets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00960}00960                 s-\/>tx\_multicast\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00961}00961                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, transmitted\_eth\_multicast.packets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00962}00962                 s-\/>tx\_multicast\_bytes =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00963}00963                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, transmitted\_eth\_multicast.octets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00964}00964 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00965}00965                 s-\/>rx\_broadcast\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00966}00966                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, received\_eth\_broadcast.packets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00967}00967                 s-\/>rx\_broadcast\_bytes =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00968}00968                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, received\_eth\_broadcast.octets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00969}00969                 s-\/>tx\_broadcast\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00970}00970                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, transmitted\_eth\_broadcast.packets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00971}00971                 s-\/>tx\_broadcast\_bytes =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00972}00972                     \mbox{\hyperlink{mlx5__en__main_8c_aa896dd208ac7f52f683a82301af88f9d}{MLX5\_GET\_CTR}}(out, transmitted\_eth\_broadcast.octets);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00973}00973 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00974}00974                 s-\/>tx\_packets = s-\/>tx\_unicast\_packets +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00975}00975                     s-\/>tx\_multicast\_packets + s-\/>tx\_broadcast\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00976}00976                 s-\/>tx\_bytes = s-\/>tx\_unicast\_bytes + s-\/>tx\_multicast\_bytes +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00977}00977                     s-\/>tx\_broadcast\_bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00978}00978 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00979}00979                 \textcolor{comment}{/* Update calculated offload counters */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00980}00980                 s-\/>tx\_csum\_offload = s-\/>tx\_packets -\/ tx\_offload\_none;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00981}00981                 s-\/>rx\_csum\_good = s-\/>rx\_packets -\/ s-\/>rx\_csum\_none;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00982}00982         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00983}00983 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00984}00984         \textcolor{comment}{/* Get physical port counters */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00985}00985         \mbox{\hyperlink{mlx5__en__main_8c_afcc5fd8ae53309404c78ccc7c7d75f85}{mlx5e\_update\_pport\_counters}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00986}00986 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00987}00987         s-\/>tx\_jumbo\_packets =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00988}00988             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a7f2dbb4c146fadb24dfd26f2831dba83}{port\_stats\_debug}}.tx\_stat\_p1519to2047octets +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00989}00989             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a7f2dbb4c146fadb24dfd26f2831dba83}{port\_stats\_debug}}.tx\_stat\_p2048to4095octets +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00990}00990             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a7f2dbb4c146fadb24dfd26f2831dba83}{port\_stats\_debug}}.tx\_stat\_p4096to8191octets +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00991}00991             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a7f2dbb4c146fadb24dfd26f2831dba83}{port\_stats\_debug}}.tx\_stat\_p8192to10239octets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00992}00992 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00993}00993 free\_out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00994}00994         kvfree(out);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00995}00995 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00996}00996         \textcolor{comment}{/* Update diagnostics, if any */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00997}00997         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.diag\_pci\_enable ||}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00998}00998             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.diag\_general\_enable) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l00999}00999                 error = \mbox{\hyperlink{diagnostics_8h_a86f48a41965c67d9e0304122ed8327c4}{mlx5\_core\_get\_diagnostics\_full}}(mdev,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01000}01000                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.diag\_pci\_enable ? \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a140ac84e1c59648b3cfe57354167012d}{params\_pci}} : NULL,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01001}01001                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.diag\_general\_enable ? \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac0a4b25d84dcaa318445071c4064967e}{params\_general}} : NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01002}01002                 \textcolor{keywordflow}{if} (error != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01003}01003                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01004}01004                             \textcolor{stringliteral}{"{}Failed reading diagnostics: \%d\(\backslash\)n"{}}, error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01005}01005         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01006}01006 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01007}01007         \textcolor{comment}{/* Update FEC, if any */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01008}01008         error = \mbox{\hyperlink{en_8h_a74c15a50b0b567e0042d0bdc75eaf8c0}{mlx5e\_fec\_update}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01009}01009         \textcolor{keywordflow}{if} (error != 0 \&\& error != EOPNOTSUPP) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01010}01010                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01011}01011                     \textcolor{stringliteral}{"{}Updating FEC failed: \%d\(\backslash\)n"{}}, error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01012}01012         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01013}01013 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01014}01014         \textcolor{comment}{/* Update temperature, if any */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01015}01015         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.\mbox{\hyperlink{structmlx5e__params__ethtool_a8dc52d672b141b8c18278b2b16c90066}{hw\_num\_temp}} != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01016}01016                 error = \mbox{\hyperlink{en_8h_aee46549466d24c65fd095254d0733303}{mlx5e\_hw\_temperature\_update}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01017}01017                 \textcolor{keywordflow}{if} (error != 0 \&\& error != EOPNOTSUPP) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01018}01018                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01019}01019                             \textcolor{stringliteral}{"{}Updating temperature failed: \%d\(\backslash\)n"{}}, error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01020}01020                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01021}01021         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01022}01022 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01023}01023 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01024}01024 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01025}\mbox{\hyperlink{mlx5__en__main_8c_a8904ac549db83f1cb90c9486707c7267}{01025}} \mbox{\hyperlink{mlx5__en__main_8c_a8904ac549db83f1cb90c9486707c7267}{mlx5e\_update\_stats\_work}}(\textcolor{keyword}{struct} work\_struct *\mbox{\hyperlink{en__hw__tls_8h_a623997e11b94d7c467ce26627cc488a2}{work}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01026}01026 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01027}01027         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01028}01028 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01029}01029         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = container\_of(\mbox{\hyperlink{en__hw__tls_8h_a623997e11b94d7c467ce26627cc488a2}{work}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}}, \mbox{\hyperlink{structmlx5e__priv_adfad4339c60cde965d523c0c9a2abc9e}{update\_stats\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01030}01030         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01031}01031         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) != 0 \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01032}01032             !test\_bit(\mbox{\hyperlink{driver_8h_a0590c6ea9b51f1bde779243a27d51bf0a6764995f777799d3ad341fda39a14b37}{MLX5\_INTERFACE\_STATE\_TEARDOWN}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_a105a185524d1eba7790087f598298c2e}{intf\_state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01033}01033                 \mbox{\hyperlink{mlx5__en__main_8c_ac5028e5ef2f827026cd8b43ce845f574}{mlx5e\_update\_stats\_locked}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01034}01034         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01035}01035 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01036}01036 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01037}01037 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01038}\mbox{\hyperlink{mlx5__en__main_8c_a44107857303b1b7b7e9f31fc9b755fbf}{01038}} \mbox{\hyperlink{mlx5__en__main_8c_a44107857303b1b7b7e9f31fc9b755fbf}{mlx5e\_update\_stats}}(\textcolor{keywordtype}{void} *arg)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01039}01039 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01040}01040         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01041}01041 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01042}01042         queue\_work(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4338b3038935af69f0db700c7a4bdee4}{wq}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_adfad4339c60cde965d523c0c9a2abc9e}{update\_stats\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01043}01043 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01044}01044         callout\_reset(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a1da6b6b4c3fe400d16dac6fb250b9687}{watchdog}}, hz / 4, \&\mbox{\hyperlink{mlx5__en__main_8c_a44107857303b1b7b7e9f31fc9b755fbf}{mlx5e\_update\_stats}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01045}01045 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01046}01046 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01047}01047 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01048}\mbox{\hyperlink{mlx5__en__main_8c_ad2a914896812e0c644e58f4699d56e50}{01048}} \mbox{\hyperlink{mlx5__en__main_8c_ad2a914896812e0c644e58f4699d56e50}{mlx5e\_async\_event\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01049}01049     \textcolor{keyword}{enum} \mbox{\hyperlink{driver_8h_a343f521a417793029242bf2d019b9b25}{mlx5\_dev\_event}} event)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01050}01050 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01051}01051         \textcolor{keywordflow}{switch} (event) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01052}01052         \textcolor{keywordflow}{case} \mbox{\hyperlink{driver_8h_a343f521a417793029242bf2d019b9b25a934654825db78867eba51541ee0f70f0}{MLX5\_DEV\_EVENT\_PORT\_UP}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01053}01053         \textcolor{keywordflow}{case} \mbox{\hyperlink{driver_8h_a343f521a417793029242bf2d019b9b25ab0371e579d8bb0800bbcf8c39b118149}{MLX5\_DEV\_EVENT\_PORT\_DOWN}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01054}01054                 queue\_work(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4338b3038935af69f0db700c7a4bdee4}{wq}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4e7338a0d87a985d11c2bf4e11b43ddb}{update\_carrier\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01055}01055                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01056}01056 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01057}01057         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01058}01058                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01059}01059         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01060}01060 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01061}01061 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01062}01062 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01063}\mbox{\hyperlink{mlx5__en__main_8c_aa3b5946d03d1e501967aec8077ea73af}{01063}} \mbox{\hyperlink{mlx5__en__main_8c_aa3b5946d03d1e501967aec8077ea73af}{mlx5e\_async\_event}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \textcolor{keywordtype}{void} *vpriv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01064}01064     \textcolor{keyword}{enum} \mbox{\hyperlink{driver_8h_a343f521a417793029242bf2d019b9b25}{mlx5\_dev\_event}} event, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{long} param)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01065}01065 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01066}01066         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = vpriv;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01067}01067 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01068}01068         mtx\_lock(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01069}01069         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a36ab322b43ee80e4570d93efc23cf0eb}{MLX5E\_STATE\_ASYNC\_EVENTS\_ENABLE}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01070}01070                 \mbox{\hyperlink{mlx5__en__main_8c_ad2a914896812e0c644e58f4699d56e50}{mlx5e\_async\_event\_sub}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, event);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01071}01071         mtx\_unlock(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01072}01072 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01073}01073 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01074}01074 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01075}\mbox{\hyperlink{mlx5__en__main_8c_a2c869547c580fc1c2c9f6ce8a153eb8a}{01075}} \mbox{\hyperlink{mlx5__en__main_8c_a2c869547c580fc1c2c9f6ce8a153eb8a}{mlx5e\_enable\_async\_events}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01076}01076 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01077}01077         set\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a36ab322b43ee80e4570d93efc23cf0eb}{MLX5E\_STATE\_ASYNC\_EVENTS\_ENABLE}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01078}01078 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01079}01079 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01080}01080 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01081}\mbox{\hyperlink{mlx5__en__main_8c_aa0385799b02e58db4d9e9cf95a94b501}{01081}} \mbox{\hyperlink{mlx5__en__main_8c_aa0385799b02e58db4d9e9cf95a94b501}{mlx5e\_disable\_async\_events}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01082}01082 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01083}01083         mtx\_lock(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01084}01084         clear\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a36ab322b43ee80e4570d93efc23cf0eb}{MLX5E\_STATE\_ASYNC\_EVENTS\_ENABLE}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01085}01085         mtx\_unlock(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01086}01086 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01087}01087 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01088}01088 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{mlx5__en__main_8c_ab774e54ffc81a921367a0dce4bb08a99}{mlx5e\_calibration\_callout}}(\textcolor{keywordtype}{void} *arg);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01089}\mbox{\hyperlink{mlx5__en__main_8c_a0b29bf068ea52bbfe51334e19d5c4958}{01089}} \textcolor{keyword}{static} \textcolor{keywordtype}{int} \mbox{\hyperlink{mlx5__en__main_8c_a0b29bf068ea52bbfe51334e19d5c4958}{mlx5e\_calibration\_duration}} = 20;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01090}\mbox{\hyperlink{mlx5__en__main_8c_aba0768d61806bc1531010e524c3fa955}{01090}} \textcolor{keyword}{static} \textcolor{keywordtype}{int} \mbox{\hyperlink{mlx5__en__main_8c_aba0768d61806bc1531010e524c3fa955}{mlx5e\_fast\_calibration}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01091}\mbox{\hyperlink{mlx5__en__main_8c_a74d2f90c0483d1a7a020138c56076538}{01091}} \textcolor{keyword}{static} \textcolor{keywordtype}{int} \mbox{\hyperlink{mlx5__en__main_8c_a74d2f90c0483d1a7a020138c56076538}{mlx5e\_normal\_calibration}} = 30;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01092}01092 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01093}\mbox{\hyperlink{mlx5__en__main_8c_abb9739b9e5cf97993374213120c9540a}{01093}} \textcolor{keyword}{static} \mbox{\hyperlink{mlx5__en__main_8c_abb9739b9e5cf97993374213120c9540a}{SYSCTL\_NODE}}(\_hw\_mlx5, OID\_AUTO, calibr, CTLFLAG\_RW | CTLFLAG\_MPSAFE, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01094}01094     \textcolor{stringliteral}{"{}MLX5 timestamp calibration parameters"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01095}01095 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01096}\mbox{\hyperlink{mlx5__en__main_8c_a9d33bba26957a8687ab3b1ba6a108e5a}{01096}} \mbox{\hyperlink{mlx5__en__main_8c_a9d33bba26957a8687ab3b1ba6a108e5a}{SYSCTL\_INT}}(\_hw\_mlx5\_calibr, OID\_AUTO, duration, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01097}01097     \&\mbox{\hyperlink{mlx5__en__main_8c_a0b29bf068ea52bbfe51334e19d5c4958}{mlx5e\_calibration\_duration}}, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01098}01098     \textcolor{stringliteral}{"{}Duration of initial calibration"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01099}\mbox{\hyperlink{mlx5__en__main_8c_ad4e9acd5397f1113bfa771c7149703cf}{01099}} \mbox{\hyperlink{mlx5__en__main_8c_a9d33bba26957a8687ab3b1ba6a108e5a}{SYSCTL\_INT}}(\_hw\_mlx5\_calibr, OID\_AUTO, fast, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01100}01100     \&\mbox{\hyperlink{mlx5__en__main_8c_aba0768d61806bc1531010e524c3fa955}{mlx5e\_fast\_calibration}}, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01101}01101     \textcolor{stringliteral}{"{}Recalibration interval during initial calibration"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01102}\mbox{\hyperlink{mlx5__en__main_8c_a71731d5d979dd7209a5abe2d1de71682}{01102}} \mbox{\hyperlink{mlx5__en__main_8c_a9d33bba26957a8687ab3b1ba6a108e5a}{SYSCTL\_INT}}(\_hw\_mlx5\_calibr, OID\_AUTO, normal, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01103}01103     \&\mbox{\hyperlink{mlx5__en__main_8c_a74d2f90c0483d1a7a020138c56076538}{mlx5e\_normal\_calibration}}, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01104}01104     \textcolor{stringliteral}{"{}Recalibration interval during normal operations"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01105}01105 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01106}01106 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01107}01107 \textcolor{comment}{ * Ignites the calibration process.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01108}01108 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01109}01109 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01110}\mbox{\hyperlink{mlx5__en__main_8c_a25935b08257710ee49f1773358a5cda4}{01110}} \mbox{\hyperlink{mlx5__en__main_8c_a25935b08257710ee49f1773358a5cda4}{mlx5e\_reset\_calibration\_callout}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01111}01111 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01112}01112 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01113}01113         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6b8004b188956f884fce65060553fd41}{clbr\_done}} == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01114}01114                 \mbox{\hyperlink{mlx5__en__main_8c_ab774e54ffc81a921367a0dce4bb08a99}{mlx5e\_calibration\_callout}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01115}01115         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01116}01116                 callout\_reset\_sbt\_curcpu(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab0ec4d3bafa7dcdc1c17ad1b3995558f}{tstmp\_clbr}}, (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6b8004b188956f884fce65060553fd41}{clbr\_done}} <}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01117}01117                     \mbox{\hyperlink{mlx5__en__main_8c_a0b29bf068ea52bbfe51334e19d5c4958}{mlx5e\_calibration\_duration}} ? \mbox{\hyperlink{mlx5__en__main_8c_aba0768d61806bc1531010e524c3fa955}{mlx5e\_fast\_calibration}} :}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01118}01118                     \mbox{\hyperlink{mlx5__en__main_8c_a74d2f90c0483d1a7a020138c56076538}{mlx5e\_normal\_calibration}}) * SBT\_1S, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01119}01119                     \mbox{\hyperlink{mlx5__en__main_8c_ab774e54ffc81a921367a0dce4bb08a99}{mlx5e\_calibration\_callout}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, C\_DIRECT\_EXEC);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01120}01120 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01121}01121 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01122}01122 \textcolor{keyword}{static} uint64\_t}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01123}\mbox{\hyperlink{mlx5__en__main_8c_a0e17aac83d5c420928c0d71c69ff6e4b}{01123}} \mbox{\hyperlink{mlx5__en__main_8c_a0e17aac83d5c420928c0d71c69ff6e4b}{mlx5e\_timespec2usec}}(\textcolor{keyword}{const} \textcolor{keyword}{struct} timespec *ts)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01124}01124 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01125}01125 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01126}01126         \textcolor{keywordflow}{return} ((uint64\_t)ts-\/>tv\_sec * 1000000000 + ts-\/>tv\_nsec);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01127}01127 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01128}01128 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01129}01129 \textcolor{keyword}{static} uint64\_t}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01130}\mbox{\hyperlink{mlx5__en__main_8c_a190d107a8628bab8f1bef7bc8984cb13}{01130}} \mbox{\hyperlink{mlx5__en__main_8c_a190d107a8628bab8f1bef7bc8984cb13}{mlx5e\_hw\_clock}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01131}01131 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01132}01132         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__init__seg}{mlx5\_init\_seg}} *iseg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01133}01133         uint32\_t hw\_h, hw\_h1, hw\_l;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01134}01134 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01135}01135         iseg = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_ac514aa4f9af277aed19346d52ec30073}{iseg}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01136}01136         \textcolor{keywordflow}{do} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01137}01137                 hw\_h = ioread32be(\&iseg-\/>\mbox{\hyperlink{structmlx5__init__seg_a807119bac67d971ce1cb592276d9f52d}{internal\_timer\_h}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01138}01138                 hw\_l = ioread32be(\&iseg-\/>\mbox{\hyperlink{structmlx5__init__seg_a91805a8ee5ba3ee486e5e1f9729093bd}{internal\_timer\_l}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01139}01139                 hw\_h1 = ioread32be(\&iseg-\/>\mbox{\hyperlink{structmlx5__init__seg_a807119bac67d971ce1cb592276d9f52d}{internal\_timer\_h}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01140}01140         \} \textcolor{keywordflow}{while} (hw\_h1 != hw\_h);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01141}01141         \textcolor{keywordflow}{return} (((uint64\_t)hw\_h << 32) | hw\_l);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01142}01142 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01143}01143 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01144}01144 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01145}01145 \textcolor{comment}{ * The calibration callout, it runs either in the context of the}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01146}01146 \textcolor{comment}{ * thread which enables calibration, or in callout.  It takes the}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01147}01147 \textcolor{comment}{ * snapshot of system and adapter clocks, then advances the pointers to}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01148}01148 \textcolor{comment}{ * the calibration point to allow rx path to read the consistent data}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01149}01149 \textcolor{comment}{ * lockless.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01150}01150 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01151}01151 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01152}\mbox{\hyperlink{mlx5__en__main_8c_ab774e54ffc81a921367a0dce4bb08a99}{01152}} \mbox{\hyperlink{mlx5__en__main_8c_ab774e54ffc81a921367a0dce4bb08a99}{mlx5e\_calibration\_callout}}(\textcolor{keywordtype}{void} *arg)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01153}01153 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01154}01154         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01155}01155         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__clbr__point}{mlx5e\_clbr\_point}} *next, *curr;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01156}01156         \textcolor{keyword}{struct }timespec ts;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01157}01157         \textcolor{keywordtype}{int} clbr\_curr\_next;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01158}01158 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01159}01159         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01160}01160         curr = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ad5920f7cce8b29b9aa75a7a127b2f029}{clbr\_points}}[\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a55acdd1e5138eb505d381d5a83e05e3d}{clbr\_curr}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01161}01161         clbr\_curr\_next = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a55acdd1e5138eb505d381d5a83e05e3d}{clbr\_curr}} + 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01162}01162         \textcolor{keywordflow}{if} (clbr\_curr\_next >= nitems(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ad5920f7cce8b29b9aa75a7a127b2f029}{clbr\_points}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01163}01163                 clbr\_curr\_next = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01164}01164         next = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ad5920f7cce8b29b9aa75a7a127b2f029}{clbr\_points}}[clbr\_curr\_next];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01165}01165 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01166}01166         next-\/>\mbox{\hyperlink{structmlx5e__clbr__point_adaa15bba3cb6bfa9b9be15b70a968512}{base\_prev}} = curr-\/>\mbox{\hyperlink{structmlx5e__clbr__point_afff5e1be0e2e12399d4fd6fc08a9e3ca}{base\_curr}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01167}01167         next-\/>\mbox{\hyperlink{structmlx5e__clbr__point_afa9f0388888e15ea62a71416c3fdbb72}{clbr\_hw\_prev}} = curr-\/>\mbox{\hyperlink{structmlx5e__clbr__point_a8453068a8b39198c83a63e56a976d947}{clbr\_hw\_curr}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01168}01168 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01169}01169         next-\/>\mbox{\hyperlink{structmlx5e__clbr__point_a8453068a8b39198c83a63e56a976d947}{clbr\_hw\_curr}} = \mbox{\hyperlink{mlx5__en__main_8c_a190d107a8628bab8f1bef7bc8984cb13}{mlx5e\_hw\_clock}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01170}01170         \textcolor{keywordflow}{if} (((next-\/>\mbox{\hyperlink{structmlx5e__clbr__point_a8453068a8b39198c83a63e56a976d947}{clbr\_hw\_curr}} -\/ curr-\/>\mbox{\hyperlink{structmlx5e__clbr__point_a8453068a8b39198c83a63e56a976d947}{clbr\_hw\_curr}}) >> \mbox{\hyperlink{en_8h_a0a272b3ec4b5c856beb12b0134f8aa27}{MLX5E\_TSTMP\_PREC}}) ==}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01171}01171             0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01172}01172                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6b8004b188956f884fce65060553fd41}{clbr\_done}} != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01173}01173                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01174}01174                             \textcolor{stringliteral}{"{}HW failed tstmp frozen \%\#jx \%\#jx, disabling\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01175}01175                              next-\/>\mbox{\hyperlink{structmlx5e__clbr__point_a8453068a8b39198c83a63e56a976d947}{clbr\_hw\_curr}}, curr-\/>\mbox{\hyperlink{structmlx5e__clbr__point_afa9f0388888e15ea62a71416c3fdbb72}{clbr\_hw\_prev}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01176}01176                         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6b8004b188956f884fce65060553fd41}{clbr\_done}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01177}01177                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01178}01178                 atomic\_store\_rel\_int(\&curr-\/>\mbox{\hyperlink{structmlx5e__clbr__point_a2a68fa225d301e55dbe4f9e0b84cd538}{clbr\_gen}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01179}01179                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01180}01180         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01181}01181 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01182}01182         nanouptime(\&ts);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01183}01183         next-\/>\mbox{\hyperlink{structmlx5e__clbr__point_afff5e1be0e2e12399d4fd6fc08a9e3ca}{base\_curr}} = \mbox{\hyperlink{mlx5__en__main_8c_a0e17aac83d5c420928c0d71c69ff6e4b}{mlx5e\_timespec2usec}}(\&ts);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01184}01184 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01185}01185         curr-\/>\mbox{\hyperlink{structmlx5e__clbr__point_a2a68fa225d301e55dbe4f9e0b84cd538}{clbr\_gen}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01186}01186         atomic\_thread\_fence\_rel();}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01187}01187         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a55acdd1e5138eb505d381d5a83e05e3d}{clbr\_curr}} = clbr\_curr\_next;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01188}01188         atomic\_store\_rel\_int(\&next-\/>\mbox{\hyperlink{structmlx5e__clbr__point_a2a68fa225d301e55dbe4f9e0b84cd538}{clbr\_gen}}, ++(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9efbfdf0d0f670841a9dca88612e499b}{clbr\_gen}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01189}01189 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01190}01190         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6b8004b188956f884fce65060553fd41}{clbr\_done}} < \mbox{\hyperlink{mlx5__en__main_8c_a0b29bf068ea52bbfe51334e19d5c4958}{mlx5e\_calibration\_duration}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01191}01191                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6b8004b188956f884fce65060553fd41}{clbr\_done}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01192}01192         \mbox{\hyperlink{mlx5__en__main_8c_a25935b08257710ee49f1773358a5cda4}{mlx5e\_reset\_calibration\_callout}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01193}01193 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01194}01194 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01195}\mbox{\hyperlink{mlx5__en__main_8c_a4344a0ee519abc003d5dad7b678d442a}{01195}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *\mbox{\hyperlink{mlx5__en__main_8c_a4344a0ee519abc003d5dad7b678d442a}{mlx5e\_rq\_stats\_desc}}[] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01196}01196         \mbox{\hyperlink{en_8h_a1cc450b7bc192f4066e110b7c718315f}{MLX5E\_RQ\_STATS}}(\mbox{\hyperlink{en_8h_af4656c8e301a23dbeeedaafa0d11ed58}{MLX5E\_STATS\_DESC}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01197}01197 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01198}01198 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01199}01199 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01200}\mbox{\hyperlink{mlx5__en__main_8c_a42b90ba2a6882691526c89be2ce68f11}{01200}} \mbox{\hyperlink{mlx5__en__main_8c_a42b90ba2a6882691526c89be2ce68f11}{mlx5e\_create\_rq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01201}01201     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq__param}{mlx5e\_rq\_param}} *param,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01202}01202     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01203}01203 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01204}01204         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01205}01205         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01206}01206         \textcolor{keywordtype}{char} buffer[16];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01207}01207         \textcolor{keywordtype}{void} *rqc = param-\/>\mbox{\hyperlink{structmlx5e__rq__param_aeef8b333155e09facb80fc7e06d958b8}{rqc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01208}01208         \textcolor{keywordtype}{void} *rqc\_wq = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(rqc, rqc, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01209}01209         \textcolor{keywordtype}{int} wq\_sz;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01210}01210         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01211}01211         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01212}01212         u32 \mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}}, \mbox{\hyperlink{en_8h_ad1bece621c6700b5ca94f510536e769f}{wqe\_sz}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01213}01213 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01214}01214         err = \mbox{\hyperlink{mlx5__en__main_8c_aedf14f7babc2958cba5fdb375904ffe5}{mlx5e\_get\_wqe\_sz}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&\mbox{\hyperlink{en_8h_ad1bece621c6700b5ca94f510536e769f}{wqe\_sz}}, \&\mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01215}01215         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01216}01216                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01217}01217 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01218}01218         \textcolor{comment}{/* Create DMA descriptor TAG */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01219}01219         \textcolor{keywordflow}{if} ((err = -\/bus\_dma\_tag\_create(}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01220}01220             bus\_get\_dma\_tag(mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a0819dc9fa4983c9140507e1a02aa8313}{pdev}}-\/>dev.bsddev),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01221}01221             1,                          \textcolor{comment}{/* any alignment */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01222}01222             0,                          \textcolor{comment}{/* no boundary */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01223}01223             BUS\_SPACE\_MAXADDR,          \textcolor{comment}{/* lowaddr */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01224}01224             BUS\_SPACE\_MAXADDR,          \textcolor{comment}{/* highaddr */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01225}01225             NULL, NULL,                 \textcolor{comment}{/* filter, filterarg */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01226}01226             \mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}} * \mbox{\hyperlink{en_8h_a276d3cd29e7fa15cce686015c5cefd9d}{MLX5E\_MAX\_RX\_BYTES}},  \textcolor{comment}{/* maxsize */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01227}01227             \mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}},                 \textcolor{comment}{/* nsegments */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01228}01228             \mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}} * \mbox{\hyperlink{en_8h_a276d3cd29e7fa15cce686015c5cefd9d}{MLX5E\_MAX\_RX\_BYTES}},  \textcolor{comment}{/* maxsegsize */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01229}01229             0,                          \textcolor{comment}{/* flags */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01230}01230             NULL, NULL,                 \textcolor{comment}{/* lockfunc, lockfuncarg */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01231}01231             \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7c1c61cec3d950cf2e7a1730819d6048}{dma\_tag}})))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01232}01232                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01233}01233 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01234}01234         err = \mbox{\hyperlink{mlx5__wq_8c_a7da3ffc76c321d70fe0d64262d08efc9}{mlx5\_wq\_ll\_create}}(mdev, \&param-\/>\mbox{\hyperlink{structmlx5e__rq__param_af8cf8c16c860f0aca0d6f1b2d1190ca4}{wq}}, rqc\_wq, \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01235}01235             \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01236}01236         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01237}01237                 \textcolor{keywordflow}{goto} err\_free\_dma\_tag;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01238}01238 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01239}01239         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}}.\mbox{\hyperlink{structmlx5__wq__ll_ad3bf572dce68b7773893a3d6706f7c3f}{db}} = \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}}.\mbox{\hyperlink{structmlx5__wq__ll_ad3bf572dce68b7773893a3d6706f7c3f}{db}}[\mbox{\hyperlink{qp_8h_a22a181a370d3ab8aa40e77637fb5a2f9aaefcee27aa8dcb0e3ed191fe9fa4c087}{MLX5\_RCV\_DBR}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01240}01240 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01241}01241         err = \mbox{\hyperlink{mlx5__en__main_8c_aedf14f7babc2958cba5fdb375904ffe5}{mlx5e\_get\_wqe\_sz}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a10185b4866405f0e6fff3a3622c0c76f}{wqe\_sz}}, \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_ac1bdd2afedc0bf16513ed92d51fe5af1}{nsegs}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01242}01242         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01243}01243                 \textcolor{keywordflow}{goto} err\_rq\_wq\_destroy;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01244}01244 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01245}01245         wq\_sz = \mbox{\hyperlink{mlx5__wq_8c_a1daa0439146715fc6a6a1afc9cf27016}{mlx5\_wq\_ll\_get\_size}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01246}01246 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01247}01247         err = -\/tcp\_lro\_init\_args(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7dc342e043ae90f04c86ee45428363f1}{lro}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, TCP\_LRO\_ENTRIES, wq\_sz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01248}01248         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01249}01249                 \textcolor{keywordflow}{goto} err\_rq\_wq\_destroy;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01250}01250 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01251}01251         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}} = malloc\_domainset(wq\_sz * \textcolor{keyword}{sizeof}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}}[0]), M\_MLX5EN,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01252}01252             \mbox{\hyperlink{driver_8h_aaafcfeb207aa2c90303af921f2c3ade8}{mlx5\_dev\_domainset}}(mdev), M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01253}01253         \textcolor{keywordflow}{for} (i = 0; i != wq\_sz; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01254}01254                 \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__rx__wqe}{mlx5e\_rx\_wqe}} *wqe = \mbox{\hyperlink{wq_8h_a587e6ce3a7eb366bba87ba96160d387c}{mlx5\_wq\_ll\_get\_wqe}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}}, i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01255}01255                 \textcolor{keywordtype}{int} j;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01256}01256 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01257}01257                 err = -\/bus\_dmamap\_create(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7c1c61cec3d950cf2e7a1730819d6048}{dma\_tag}}, 0, \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}}[i].\mbox{\hyperlink{structmlx5e__rq__mbuf_a027b1d0b8405d68abc75718af13636d1}{dma\_map}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01258}01258                 \textcolor{keywordflow}{if} (err != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01259}01259                         \textcolor{keywordflow}{while} (i-\/-\/)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01260}01260                                 bus\_dmamap\_destroy(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7c1c61cec3d950cf2e7a1730819d6048}{dma\_tag}}, \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}}[i].\mbox{\hyperlink{structmlx5e__rq__mbuf_a027b1d0b8405d68abc75718af13636d1}{dma\_map}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01261}01261                         \textcolor{keywordflow}{goto} err\_rq\_mbuf\_free;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01262}01262                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01263}01263 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01264}01264                 \textcolor{comment}{/* set value for constant fields */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01265}01265                 \textcolor{keywordflow}{for} (j = 0; j < \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_ac1bdd2afedc0bf16513ed92d51fe5af1}{nsegs}}; j++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01266}01266                         wqe-\/>\mbox{\hyperlink{structmlx5e__rx__wqe_ada6950ee0a1b753c04842dbf7536e421}{data}}[j].\mbox{\hyperlink{structmlx5__wqe__data__seg_a6103f8dcc461e4229d4249fe275258c7}{lkey}} = cpu\_to\_be32(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abf3f056e8dd0679375dc0c90731734b4}{mr}}.\mbox{\hyperlink{structmlx5__core__mkey_a35815af7a03d7540ee9fa07fcb74548c}{key}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01267}01267         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01268}01268 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01269}01269         INIT\_WORK(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.work, \mbox{\hyperlink{en_8h_a2cde1fcc1dd1e1c12618ed59189e078e}{mlx5e\_dim\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01270}01270         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_af020d09ecf766e907d6d3e122d7ba865}{rx\_cq\_moderation\_mode}} < 2) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01271}01271                 \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.mode = NET\_DIM\_CQ\_PERIOD\_MODE\_DISABLED;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01272}01272         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01273}01273                 \textcolor{keywordtype}{void} *cqc = container\_of(param,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01274}01274                     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel__param}{mlx5e\_channel\_param}}, \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}})-\/>rx\_cq.cqc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01275}01275 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01276}01276                 \textcolor{keywordflow}{switch} (\mbox{\hyperlink{device_8h_a12a03f8a456490fce8c791c7f2922f97}{MLX5\_GET}}(cqc, cqc, cq\_period\_mode)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01277}01277                 \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa8839b85465dabdf508d45435bead71d7}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01278}01278                         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.mode = NET\_DIM\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01279}01279                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01280}01280                 \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa6c300faab962a9707d928be6e5feadb3}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_CQE}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01281}01281                         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.mode = NET\_DIM\_CQ\_PERIOD\_MODE\_START\_FROM\_CQE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01282}01282                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01283}01283                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01284}01284                         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.mode = NET\_DIM\_CQ\_PERIOD\_MODE\_DISABLED;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01285}01285                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01286}01286                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01287}01287         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01288}01288 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01289}01289         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aff32dc37bf8f54248142c6e54e4ee88d}{ifp}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01290}01290         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a2baaa69f51680e2cf31371ad898b2d07}{channel}} = c;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01291}01291         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aedb21c049dec854d0e4e5ee50bc6ba2f}{ix}} = c-\/>\mbox{\hyperlink{structmlx5e__channel_a204e44454c32d5f6dfa97f3587943b62}{ix}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01292}01292 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01293}01293         snprintf(buffer, \textcolor{keyword}{sizeof}(buffer), \textcolor{stringliteral}{"{}rxstat\%d"{}}, c-\/>\mbox{\hyperlink{structmlx5e__channel_a204e44454c32d5f6dfa97f3587943b62}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01294}01294         \mbox{\hyperlink{en_8h_a4e4bdf2cdabe62d0271ac03f0c416a5a}{mlx5e\_create\_stats}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a5e2116ae6494a09666a310830556d5db}{stats}}.\mbox{\hyperlink{structmlx5e__rq__stats_a38c82301d30db6640a46f3a43be800d9}{ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01295}01295             buffer, \mbox{\hyperlink{mlx5__en__main_8c_a4344a0ee519abc003d5dad7b678d442a}{mlx5e\_rq\_stats\_desc}}, \mbox{\hyperlink{en_8h_a74fca4ebceaee228acdaad283e19999c}{MLX5E\_RQ\_STATS\_NUM}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01296}01296             \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a5e2116ae6494a09666a310830556d5db}{stats}}.\mbox{\hyperlink{structmlx5e__rq__stats_a188b73d97d1f63bb412e0671d98d56cd}{arg}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01297}01297         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01298}01298 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01299}01299 err\_rq\_mbuf\_free:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01300}01300         free(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}}, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01301}01301         tcp\_lro\_free(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7dc342e043ae90f04c86ee45428363f1}{lro}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01302}01302 err\_rq\_wq\_destroy:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01303}01303         \mbox{\hyperlink{mlx5__wq_8c_a49551f7d5d4eaab85b551255676b527e}{mlx5\_wq\_destroy}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01304}01304 err\_free\_dma\_tag:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01305}01305         bus\_dma\_tag\_destroy(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7c1c61cec3d950cf2e7a1730819d6048}{dma\_tag}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01306}01306 done:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01307}01307         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01308}01308 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01309}01309 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01310}01310 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01311}\mbox{\hyperlink{mlx5__en__main_8c_a2c58946e348aa87a73d1343821e5d36b}{01311}} \mbox{\hyperlink{mlx5__en__main_8c_a2c58946e348aa87a73d1343821e5d36b}{mlx5e\_destroy\_rq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01312}01312 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01313}01313         \textcolor{keywordtype}{int} wq\_sz;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01314}01314         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01315}01315 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01316}01316         \textcolor{comment}{/* destroy all sysctl nodes */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01317}01317         sysctl\_ctx\_free(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a5e2116ae6494a09666a310830556d5db}{stats}}.\mbox{\hyperlink{structmlx5e__rq__stats_a38c82301d30db6640a46f3a43be800d9}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01318}01318 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01319}01319         \textcolor{comment}{/* free leftover LRO packets, if any */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01320}01320         tcp\_lro\_free(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7dc342e043ae90f04c86ee45428363f1}{lro}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01321}01321 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01322}01322         wq\_sz = \mbox{\hyperlink{mlx5__wq_8c_a1daa0439146715fc6a6a1afc9cf27016}{mlx5\_wq\_ll\_get\_size}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01323}01323         \textcolor{keywordflow}{for} (i = 0; i != wq\_sz; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01324}01324                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}}[i].\mbox{\hyperlink{structmlx5e__rq__mbuf_a86adf14255167ca9bf7efad41058318b}{mbuf}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01325}01325                         bus\_dmamap\_unload(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7c1c61cec3d950cf2e7a1730819d6048}{dma\_tag}}, \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}}[i].\mbox{\hyperlink{structmlx5e__rq__mbuf_a027b1d0b8405d68abc75718af13636d1}{dma\_map}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01326}01326                         m\_freem(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}}[i].\mbox{\hyperlink{structmlx5e__rq__mbuf_a86adf14255167ca9bf7efad41058318b}{mbuf}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01327}01327                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01328}01328                 bus\_dmamap\_destroy(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7c1c61cec3d950cf2e7a1730819d6048}{dma\_tag}}, \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}}[i].\mbox{\hyperlink{structmlx5e__rq__mbuf_a027b1d0b8405d68abc75718af13636d1}{dma\_map}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01329}01329         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01330}01330         free(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a794f2dc455358549526cb46711b07254}{mbuf}}, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01331}01331         \mbox{\hyperlink{mlx5__wq_8c_a49551f7d5d4eaab85b551255676b527e}{mlx5\_wq\_destroy}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01332}01332         bus\_dma\_tag\_destroy(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7c1c61cec3d950cf2e7a1730819d6048}{dma\_tag}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01333}01333 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01334}01334 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01335}01335 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01336}\mbox{\hyperlink{mlx5__en__main_8c_a30b59084b1cd9865d16ff3f48eb26d92}{01336}} \mbox{\hyperlink{mlx5__en__main_8c_a30b59084b1cd9865d16ff3f48eb26d92}{mlx5e\_enable\_rq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq__param}{mlx5e\_rq\_param}} *param)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01337}01337 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01338}01338         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c = \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a2baaa69f51680e2cf31371ad898b2d07}{channel}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01339}01339         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01340}01340         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01341}01341         \textcolor{keywordtype}{void} *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01342}01342         \textcolor{keywordtype}{void} *rqc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01343}01343         \textcolor{keywordtype}{void} *\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01344}01344         \textcolor{keywordtype}{int} inlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01345}01345         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01346}01346         u8 ts\_format;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01347}01347 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01348}01348         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_rq\_in) +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01349}01349             \textcolor{keyword}{sizeof}(u64) * \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_aa8b555887ebc680ef422777985acf16e}{buf}}.\mbox{\hyperlink{structmlx5__buf_a2328a3f51ed8527f6084a550f17ed8f0}{npages}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01350}01350         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01351}01351         \textcolor{keywordflow}{if} (in == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01352}01352                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01353}01353 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01354}01354         ts\_format = \mbox{\hyperlink{driver_8h_a24f71ce80cb12aa900a27bef741f77e8}{mlx5\_get\_rq\_default\_ts}}(mdev);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01355}01355         rqc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_rq\_in, in, \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01356}01356         \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}} = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(rqc, rqc, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01357}01357 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01358}01358         memcpy(rqc, param-\/>\mbox{\hyperlink{structmlx5e__rq__param_aeef8b333155e09facb80fc7e06d958b8}{rqc}}, \textcolor{keyword}{sizeof}(param-\/>\mbox{\hyperlink{structmlx5e__rq__param_aeef8b333155e09facb80fc7e06d958b8}{rqc}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01359}01359 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01360}01360         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqc, rqc, \mbox{\hyperlink{en__hw__tls_8h_a1b0c7bd4d79798ef4e0ce23894c9aeb2}{state}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a812db5900cdf3e90699bcd5e5ea4035b}{MLX5\_RQC\_STATE\_RST}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01361}01361         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqc, rqc, ts\_format, ts\_format);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01362}01362         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqc, rqc, flush\_in\_error\_en, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01363}01363         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a092fefb212ffef0324dd097caa2cb6}{counter\_set\_id}} >= 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01364}01364                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqc, rqc, counter\_set\_id, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a092fefb212ffef0324dd097caa2cb6}{counter\_set\_id}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01365}01365         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, log\_wq\_pg\_sz, \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_aa8b555887ebc680ef422777985acf16e}{buf}}.\mbox{\hyperlink{structmlx5__buf_aefd3839d2ab6886e118aec125a39aadd}{page\_shift}} -\/}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01366}01366             PAGE\_SHIFT);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01367}01367         \mbox{\hyperlink{device_8h_a6e7776ca1e3178584753950058580eb6}{MLX5\_SET64}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, dbr\_addr, \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_adfbd74741f73b7030f6c545bedbb4e7b}{db}}.\mbox{\hyperlink{structmlx5__db_a67fa49352985a2e13bc57bed6740471d}{dma}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01368}01368 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01369}01369         \mbox{\hyperlink{driver_8h_adbd58dd0790cfdfce0e245704e92deec}{mlx5\_fill\_page\_array}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_aa8b555887ebc680ef422777985acf16e}{buf}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01370}01370             (\_\_be64 *) \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, pas));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01371}01371 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01372}01372         err = \mbox{\hyperlink{mlx5__transobj_8c_a0edcd5f3c39cf7f38b2327a91228fc49}{mlx5\_core\_create\_rq}}(mdev, in, inlen, \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_ab4354012d0bb9cce73163f8e970aca21}{rqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01373}01373 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01374}01374         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01375}01375 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01376}01376         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01377}01377 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01378}01378 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01379}01379 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01380}\mbox{\hyperlink{mlx5__en__main_8c_ad291f4457e0552b01be252a71eb5da84}{01380}} \mbox{\hyperlink{mlx5__en__main_8c_ad291f4457e0552b01be252a71eb5da84}{mlx5e\_modify\_rq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}, \textcolor{keywordtype}{int} curr\_state, \textcolor{keywordtype}{int} next\_state)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01381}01381 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01382}01382         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c = \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a2baaa69f51680e2cf31371ad898b2d07}{channel}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01383}01383         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01384}01384         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01385}01385 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01386}01386         \textcolor{keywordtype}{void} *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01387}01387         \textcolor{keywordtype}{void} *rqc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01388}01388         \textcolor{keywordtype}{int} inlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01389}01389         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01390}01390 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01391}01391         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(modify\_rq\_in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01392}01392         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01393}01393         \textcolor{keywordflow}{if} (in == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01394}01394                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01395}01395 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01396}01396         rqc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(modify\_rq\_in, in, \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01397}01397 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01398}01398         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(modify\_rq\_in, in, \mbox{\hyperlink{en_8h_a06f12ebe5a6429743fb9bca6767de088}{rqn}}, \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_ab4354012d0bb9cce73163f8e970aca21}{rqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01399}01399         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(modify\_rq\_in, in, rq\_state, curr\_state);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01400}01400         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqc, rqc, \mbox{\hyperlink{en__hw__tls_8h_a1b0c7bd4d79798ef4e0ce23894c9aeb2}{state}}, next\_state);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01401}01401 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01402}01402         err = \mbox{\hyperlink{mlx5__transobj_8c_a784466622a80333f3b0e17d5a7967397}{mlx5\_core\_modify\_rq}}(mdev, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01403}01403 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01404}01404         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01405}01405 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01406}01406         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01407}01407 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01408}01408 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01409}01409 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01410}\mbox{\hyperlink{mlx5__en__main_8c_aa429ca2fbe98c45eea220fcac62ade91}{01410}} \mbox{\hyperlink{mlx5__en__main_8c_aa429ca2fbe98c45eea220fcac62ade91}{mlx5e\_disable\_rq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01411}01411 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01412}01412         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c = \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a2baaa69f51680e2cf31371ad898b2d07}{channel}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01413}01413         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01414}01414         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01415}01415 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01416}01416         \mbox{\hyperlink{mlx5__transobj_8c_a840e7e3cf1ceb5465984458640313608}{mlx5\_core\_destroy\_rq}}(mdev, \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_ab4354012d0bb9cce73163f8e970aca21}{rqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01417}01417 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01418}01418 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01419}01419 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01420}\mbox{\hyperlink{mlx5__en__main_8c_a3c257c1ee04cae9d50c3b5eeb95d28c9}{01420}} \mbox{\hyperlink{mlx5__en__main_8c_a3c257c1ee04cae9d50c3b5eeb95d28c9}{mlx5e\_wait\_for\_min\_rx\_wqes}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01421}01421 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01422}01422         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c = \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a2baaa69f51680e2cf31371ad898b2d07}{channel}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01423}01423         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01424}01424         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__wq__ll}{mlx5\_wq\_ll}} *\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}} = \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01425}01425         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01426}01426 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01427}01427         \textcolor{keywordflow}{for} (i = 0; i < 1000; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01428}01428                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}-\/>cur\_sz >= \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_af024e7d9d56da2679d9a67a3747b9279}{min\_rx\_wqes}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01429}01429                         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01430}01430 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01431}01431                 msleep(4);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01432}01432         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01433}01433         \textcolor{keywordflow}{return} (-\/ETIMEDOUT);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01434}01434 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01435}01435 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01436}01436 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01437}\mbox{\hyperlink{mlx5__en__main_8c_a615bf6bc520d47b40b2573e991318079}{01437}} \mbox{\hyperlink{mlx5__en__main_8c_a615bf6bc520d47b40b2573e991318079}{mlx5e\_open\_rq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01438}01438     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq__param}{mlx5e\_rq\_param}} *param,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01439}01439     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01440}01440 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01441}01441         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01442}01442 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01443}01443         err = \mbox{\hyperlink{mlx5__en__main_8c_a42b90ba2a6882691526c89be2ce68f11}{mlx5e\_create\_rq}}(c, param, \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01444}01444         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01445}01445                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01446}01446 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01447}01447         \textcolor{comment}{/* set CQN in RQ parameters */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01448}01448         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqc, param-\/>\mbox{\hyperlink{structmlx5e__rq__param_aeef8b333155e09facb80fc7e06d958b8}{rqc}}, cqn, c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}.\mbox{\hyperlink{structmlx5__core__cq_aa4a997291e120b040c7a95d59639e62a}{cqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01449}01449 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01450}01450         err = \mbox{\hyperlink{mlx5__en__main_8c_a30b59084b1cd9865d16ff3f48eb26d92}{mlx5e\_enable\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}, param);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01451}01451         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01452}01452                 \textcolor{keywordflow}{goto} err\_destroy\_rq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01453}01453 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01454}01454         err = \mbox{\hyperlink{mlx5__en__main_8c_ad291f4457e0552b01be252a71eb5da84}{mlx5e\_modify\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a812db5900cdf3e90699bcd5e5ea4035b}{MLX5\_RQC\_STATE\_RST}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a6332becd8d3eb025d3bc865afdeb186f}{MLX5\_RQC\_STATE\_RDY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01455}01455         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01456}01456                 \textcolor{keywordflow}{goto} err\_disable\_rq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01457}01457 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01458}01458         c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a33214472cad1cdcb236c9ef4825975e5}{enabled}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01459}01459 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01460}01460         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01461}01461 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01462}01462 err\_disable\_rq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01463}01463         \mbox{\hyperlink{mlx5__en__main_8c_aa429ca2fbe98c45eea220fcac62ade91}{mlx5e\_disable\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01464}01464 err\_destroy\_rq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01465}01465         \mbox{\hyperlink{mlx5__en__main_8c_a2c58946e348aa87a73d1343821e5d36b}{mlx5e\_destroy\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01466}01466 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01467}01467         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01468}01468 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01469}01469 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01470}01470 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01471}\mbox{\hyperlink{mlx5__en__main_8c_a81943d9c03d596d23334fbc1a2a234ef}{01471}} \mbox{\hyperlink{mlx5__en__main_8c_a81943d9c03d596d23334fbc1a2a234ef}{mlx5e\_close\_rq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01472}01472 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01473}01473         mtx\_lock(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01474}01474         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a33214472cad1cdcb236c9ef4825975e5}{enabled}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01475}01475         callout\_stop(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af74db0dab1c630bcd6f19e5a05abdb97}{watchdog}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01476}01476         mtx\_unlock(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01477}01477 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01478}01478         \mbox{\hyperlink{mlx5__en__main_8c_ad291f4457e0552b01be252a71eb5da84}{mlx5e\_modify\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a6332becd8d3eb025d3bc865afdeb186f}{MLX5\_RQC\_STATE\_RDY}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4adffeb1926d5b3433e22c95c01c45d231}{MLX5\_RQC\_STATE\_ERR}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01479}01479 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01480}01480 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01481}01481 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01482}\mbox{\hyperlink{mlx5__en__main_8c_abb88edfa371107279532b6627be737a5}{01482}} \mbox{\hyperlink{mlx5__en__main_8c_abb88edfa371107279532b6627be737a5}{mlx5e\_close\_rq\_wait}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01483}01483 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01484}01484 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01485}01485         \mbox{\hyperlink{mlx5__en__main_8c_aa429ca2fbe98c45eea220fcac62ade91}{mlx5e\_disable\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01486}01486         \mbox{\hyperlink{mlx5__en__main_8c_a04c2482d5109f5a26f95de0b739bcf42}{mlx5e\_close\_cq}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01487}01487         cancel\_work\_sync(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.work);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01488}01488         \mbox{\hyperlink{mlx5__en__main_8c_a2c58946e348aa87a73d1343821e5d36b}{mlx5e\_destroy\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01489}01489 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01490}01490 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01491}01491 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01492}01492 \textcolor{comment}{ * What is a drop RQ and why is it needed?}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01493}01493 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01494}01494 \textcolor{comment}{ * The RSS indirection table, also called the RQT, selects the}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01495}01495 \textcolor{comment}{ * destination RQ based on the receive queue number, RQN. The RQT is}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01496}01496 \textcolor{comment}{ * frequently referred to by flow steering rules to distribute traffic}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01497}01497 \textcolor{comment}{ * among multiple RQs. The problem is that the RQs cannot be destroyed}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01498}01498 \textcolor{comment}{ * before the RQT referring them is destroyed too. Further, TLS RX}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01499}01499 \textcolor{comment}{ * rules may still be referring to the RQT even if the link went}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01500}01500 \textcolor{comment}{ * down. Because there is no magic RQN for dropping packets, we create}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01501}01501 \textcolor{comment}{ * a dummy RQ, also called drop RQ, which sole purpose is to drop all}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01502}01502 \textcolor{comment}{ * received packets. When the link goes down this RQN is filled in all}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01503}01503 \textcolor{comment}{ * RQT entries, of the main RQT, so the real RQs which are about to be}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01504}01504 \textcolor{comment}{ * destroyed can be released and the TLS RX rules can be sustained.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01505}01505 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01506}01506 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01507}\mbox{\hyperlink{mlx5__en__main_8c_a31f96c5630f5a0bd00148ca9985df708}{01507}} \mbox{\hyperlink{mlx5__en__main_8c_a31f96c5630f5a0bd00148ca9985df708}{mlx5e\_open\_drop\_rq\_comp}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__cq}{mlx5\_core\_cq}} *\mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}} \_\_unused, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__eqe}{mlx5\_eqe}} *eqe \_\_unused)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01508}01508 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01509}01509 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01510}01510 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01511}01511 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01512}\mbox{\hyperlink{mlx5__en__main_8c_a6ffde11df924e1948487f67d32ee7c3b}{01512}} \mbox{\hyperlink{mlx5__en__main_8c_a6ffde11df924e1948487f67d32ee7c3b}{mlx5e\_open\_drop\_rq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01513}01513     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *drop\_rq)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01514}01514 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01515}01515         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__cq__param}{mlx5e\_cq\_param}} param\_cq = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01516}01516         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__rq__param}{mlx5e\_rq\_param}} param\_rq = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01517}01517         \textcolor{keywordtype}{void} *rqc\_wq = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(\mbox{\hyperlink{structmlx5e__rq__param_aeef8b333155e09facb80fc7e06d958b8}{rqc}}, param\_rq.\mbox{\hyperlink{structmlx5e__rq__param_aeef8b333155e09facb80fc7e06d958b8}{rqc}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01518}01518         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01519}01519 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01520}01520         \textcolor{comment}{/* set channel pointer */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01521}01521         drop\_rq-\/>\mbox{\hyperlink{structmlx5e__rq_a2baaa69f51680e2cf31371ad898b2d07}{channel}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01522}01522 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01523}01523         \textcolor{comment}{/* set basic CQ parameters needed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01524}01524         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, param\_cq.\mbox{\hyperlink{structmlx5e__cq__param_a782cd16b0ff40eba8cfc7ec417b2798f}{cqc}}, log\_cq\_size, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01525}01525         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, param\_cq.\mbox{\hyperlink{structmlx5e__cq__param_a782cd16b0ff40eba8cfc7ec417b2798f}{cqc}}, uar\_page, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_ac476fb1d38cdac2b8f6cee43aa25c2dd}{uar}}-\/>\mbox{\hyperlink{structmlx5__uars__page_a69d90f44b52999c724e78c9b76393da6}{index}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01526}01526 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01527}01527         \textcolor{comment}{/* open receive completion queue */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01528}01528         err = \mbox{\hyperlink{mlx5__en__main_8c_aaa890cdb6815fe8c38553328e37e08c9}{mlx5e\_open\_cq}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&param\_cq, \&drop\_rq-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01529}01529             \&\mbox{\hyperlink{mlx5__en__main_8c_a31f96c5630f5a0bd00148ca9985df708}{mlx5e\_open\_drop\_rq\_comp}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01530}01530         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01531}01531                 \textcolor{keywordflow}{goto} err\_done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01532}01532 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01533}01533         \textcolor{comment}{/* set basic WQ parameters needed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01534}01534         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, rqc\_wq, wq\_type, \mbox{\hyperlink{mlx5__ifc_8h_abb911bb32d4e97b5fcd682dd43789991a30f065bf93c51b8cf54bea364ba097a8}{MLX5\_WQ\_TYPE\_LINKED\_LIST}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01535}01535         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, rqc\_wq, end\_padding\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a08f51f22ad2ed13a25181c2604573110aa8c3c339522ae8cd458d0a9682e05168}{MLX5\_WQ\_END\_PAD\_MODE\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01536}01536         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, rqc\_wq, log\_wq\_stride, ilog2(\textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rx__wqe}{mlx5e\_rx\_wqe}}) + \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__wqe__data__seg}{mlx5\_wqe\_data\_seg}})));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01537}01537         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, rqc\_wq, log\_wq\_sz, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01538}01538         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, rqc\_wq, pd, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9fb017d5f0afd3f0a0c96c22bd6e8ac6}{pdn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01539}01539 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01540}01540         param\_rq.\mbox{\hyperlink{structmlx5e__rq__param_af8cf8c16c860f0aca0d6f1b2d1190ca4}{wq}}.\mbox{\hyperlink{structmlx5__wq__param_ae5d54776d21eaad0330a5a550690c5e6}{linear}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01541}01541 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01542}01542         err = \mbox{\hyperlink{mlx5__wq_8c_a7da3ffc76c321d70fe0d64262d08efc9}{mlx5\_wq\_ll\_create}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&param\_rq.\mbox{\hyperlink{structmlx5e__rq__param_af8cf8c16c860f0aca0d6f1b2d1190ca4}{wq}}, rqc\_wq, \&drop\_rq-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01543}01543             \&drop\_rq-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01544}01544         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01545}01545                 \textcolor{keywordflow}{goto} err\_close\_cq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01546}01546 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01547}01547         \textcolor{comment}{/* set CQN in RQ parameters */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01548}01548         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{structmlx5e__rq__param_aeef8b333155e09facb80fc7e06d958b8}{rqc}}, param\_rq.\mbox{\hyperlink{structmlx5e__rq__param_aeef8b333155e09facb80fc7e06d958b8}{rqc}}, cqn, drop\_rq-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}.\mbox{\hyperlink{structmlx5__core__cq_aa4a997291e120b040c7a95d59639e62a}{cqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01549}01549 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01550}01550         err = \mbox{\hyperlink{mlx5__en__main_8c_a30b59084b1cd9865d16ff3f48eb26d92}{mlx5e\_enable\_rq}}(drop\_rq, \&param\_rq);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01551}01551         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01552}01552                 \textcolor{keywordflow}{goto} err\_wq\_destroy;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01553}01553 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01554}01554         err = \mbox{\hyperlink{mlx5__en__main_8c_ad291f4457e0552b01be252a71eb5da84}{mlx5e\_modify\_rq}}(drop\_rq, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a812db5900cdf3e90699bcd5e5ea4035b}{MLX5\_RQC\_STATE\_RST}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a6332becd8d3eb025d3bc865afdeb186f}{MLX5\_RQC\_STATE\_RDY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01555}01555         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01556}01556                 \textcolor{keywordflow}{goto} err\_disable\_rq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01557}01557 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01558}01558         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01559}01559 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01560}01560 err\_disable\_rq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01561}01561         \mbox{\hyperlink{mlx5__en__main_8c_aa429ca2fbe98c45eea220fcac62ade91}{mlx5e\_disable\_rq}}(drop\_rq);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01562}01562 err\_wq\_destroy:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01563}01563         \mbox{\hyperlink{mlx5__wq_8c_a49551f7d5d4eaab85b551255676b527e}{mlx5\_wq\_destroy}}(\&drop\_rq-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01564}01564 err\_close\_cq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01565}01565         \mbox{\hyperlink{mlx5__en__main_8c_a04c2482d5109f5a26f95de0b739bcf42}{mlx5e\_close\_cq}}(\&drop\_rq-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01566}01566 err\_done:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01567}01567         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01568}01568 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01569}01569 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01570}01570 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01571}\mbox{\hyperlink{mlx5__en__main_8c_a270dba38a89182567a53e42467848bde}{01571}} \mbox{\hyperlink{mlx5__en__main_8c_a270dba38a89182567a53e42467848bde}{mlx5e\_close\_drop\_rq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *drop\_rq)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01572}01572 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01573}01573         \mbox{\hyperlink{mlx5__en__main_8c_ad291f4457e0552b01be252a71eb5da84}{mlx5e\_modify\_rq}}(drop\_rq, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a6332becd8d3eb025d3bc865afdeb186f}{MLX5\_RQC\_STATE\_RDY}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4adffeb1926d5b3433e22c95c01c45d231}{MLX5\_RQC\_STATE\_ERR}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01574}01574         \mbox{\hyperlink{mlx5__en__main_8c_aa429ca2fbe98c45eea220fcac62ade91}{mlx5e\_disable\_rq}}(drop\_rq);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01575}01575         \mbox{\hyperlink{mlx5__wq_8c_a49551f7d5d4eaab85b551255676b527e}{mlx5\_wq\_destroy}}(\&drop\_rq-\/>\mbox{\hyperlink{structmlx5e__rq_a223db9e581dfd4675bc60df4eadef0ef}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01576}01576         \mbox{\hyperlink{mlx5__en__main_8c_a04c2482d5109f5a26f95de0b739bcf42}{mlx5e\_close\_cq}}(\&drop\_rq-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01577}01577 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01578}01578 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01579}01579 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01580}\mbox{\hyperlink{en_8h_ad8f9fb40b01cffc5172ef71db1192345}{01580}} \mbox{\hyperlink{mlx5__en__main_8c_a521986674cc5e58f04cb1403fe928fc3}{mlx5e\_free\_sq\_db}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01581}01581 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01582}01582         \textcolor{keywordtype}{int} wq\_sz = \mbox{\hyperlink{mlx5__wq_8c_ae21d655225d88036613ef2823fb46637}{mlx5\_wq\_cyc\_get\_size}}(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a9b10abfe8962af01e045a33b866e64e7}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01583}01583         \textcolor{keywordtype}{int} x;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01584}01584 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01585}01585         \textcolor{keywordflow}{for} (x = 0; x != wq\_sz; x++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01586}01586                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[x].\mbox{\hyperlink{structmlx5e__sq__mbuf_a13f0be39bf93187913825ab3e35a63a3}{mbuf}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01587}01587                         bus\_dmamap\_unload(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4d9a2dd3af1286600cfc8d827affa172}{dma\_tag}}, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[x].\mbox{\hyperlink{structmlx5e__sq__mbuf_aedef38eb97b4bc6fbb9680ec47998b55}{dma\_map}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01588}01588                         m\_freem(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[x].\mbox{\hyperlink{structmlx5e__sq__mbuf_a13f0be39bf93187913825ab3e35a63a3}{mbuf}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01589}01589                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01590}01590                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[x].\mbox{\hyperlink{structmlx5e__sq__mbuf_a06bc3c3030c2d7883d3b8ac6831067e2}{mst}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01591}01591                         m\_snd\_tag\_rele(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[x].\mbox{\hyperlink{structmlx5e__sq__mbuf_a06bc3c3030c2d7883d3b8ac6831067e2}{mst}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01592}01592                         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[x].\mbox{\hyperlink{structmlx5e__sq__mbuf_a06bc3c3030c2d7883d3b8ac6831067e2}{mst}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01593}01593                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01594}01594                 bus\_dmamap\_destroy(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4d9a2dd3af1286600cfc8d827affa172}{dma\_tag}}, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[x].\mbox{\hyperlink{structmlx5e__sq__mbuf_aedef38eb97b4bc6fbb9680ec47998b55}{dma\_map}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01595}01595         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01596}01596         free(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01597}01597 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01598}01598 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01599}01599 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01600}\mbox{\hyperlink{en_8h_a6478dbe79490429a1ae9c06a2f088c71}{01600}} \mbox{\hyperlink{mlx5__en__main_8c_a1e7734f7979261d0be79f0804a01d5bb}{mlx5e\_alloc\_sq\_db}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01601}01601 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01602}01602         \textcolor{keywordtype}{int} wq\_sz = \mbox{\hyperlink{mlx5__wq_8c_ae21d655225d88036613ef2823fb46637}{mlx5\_wq\_cyc\_get\_size}}(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a9b10abfe8962af01e045a33b866e64e7}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01603}01603         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01604}01604         \textcolor{keywordtype}{int} x;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01605}01605 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01606}01606         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}} = malloc\_domainset(wq\_sz * \textcolor{keyword}{sizeof}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[0]), M\_MLX5EN,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01607}01607             \mbox{\hyperlink{driver_8h_aaafcfeb207aa2c90303af921f2c3ade8}{mlx5\_dev\_domainset}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}), M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01608}01608 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01609}01609         \textcolor{comment}{/* Create DMA descriptor MAPs */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01610}01610         \textcolor{keywordflow}{for} (x = 0; x != wq\_sz; x++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01611}01611                 err = -\/bus\_dmamap\_create(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4d9a2dd3af1286600cfc8d827affa172}{dma\_tag}}, 0, \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[x].\mbox{\hyperlink{structmlx5e__sq__mbuf_aedef38eb97b4bc6fbb9680ec47998b55}{dma\_map}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01612}01612                 \textcolor{keywordflow}{if} (err != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01613}01613                         \textcolor{keywordflow}{while} (x-\/-\/)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01614}01614                                 bus\_dmamap\_destroy(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4d9a2dd3af1286600cfc8d827affa172}{dma\_tag}}, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}[x].\mbox{\hyperlink{structmlx5e__sq__mbuf_aedef38eb97b4bc6fbb9680ec47998b55}{dma\_map}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01615}01615                         free(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae693d19c30022391524f7f37cb689eec}{mbuf}}, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01616}01616                         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01617}01617                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01618}01618         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01619}01619         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01620}01620 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01621}01621 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01622}\mbox{\hyperlink{mlx5__en__main_8c_a900ec1d37364be35af087c96405478e4}{01622}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *\mbox{\hyperlink{mlx5__en__main_8c_a900ec1d37364be35af087c96405478e4}{mlx5e\_sq\_stats\_desc}}[] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01623}01623         \mbox{\hyperlink{en_8h_ad027006128c4bd2908c43ce2722f44ac}{MLX5E\_SQ\_STATS}}(\mbox{\hyperlink{en_8h_af4656c8e301a23dbeeedaafa0d11ed58}{MLX5E\_STATS\_DESC}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01624}01624 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01625}01625 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01626}01626 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01627}\mbox{\hyperlink{en_8h_a6c977d73c8d2e46bf903d0594fc8b042}{01627}} \mbox{\hyperlink{mlx5__en__main_8c_a6c977d73c8d2e46bf903d0594fc8b042}{mlx5e\_update\_sq\_inline}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01628}01628 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01629}01629         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ad93b5451ac3224a3f46aa20a2817bae4}{max\_inline}} = \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a6a9a62ee8270f4a5447610215d24895a}{tx\_max\_inline}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01630}01630         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a1154241ab09adca7f786c39ca061fb3b}{min\_inline\_mode}} = \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a0544449ad0c4ca82351a7139b954d0d7}{tx\_min\_inline\_mode}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01631}01631 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01632}01632         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01633}01633 \textcolor{comment}{         * Check if trust state is DSCP or if inline mode is NONE which}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01634}01634 \textcolor{comment}{         * indicates CX-\/5 or newer hardware.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01635}01635 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01636}01636         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.\mbox{\hyperlink{structmlx5e__params__ethtool_a8a46c1dfd225a38139b68a1d69308674}{trust\_state}} != \mbox{\hyperlink{port_8h_a4f09af9c41d3faeeda2e2ef76abd3eb4a70e163a5bbc7e4e6e103aae4f7b27156}{MLX5\_QPTS\_TRUST\_PCP}} ||}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01637}01637             \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a1154241ab09adca7f786c39ca061fb3b}{min\_inline\_mode}} == \mbox{\hyperlink{device_8h_a89fd7c398ff162fecbb5ff8e747a9482a21986c7e5e95f1d7e20c129685be4635}{MLX5\_INLINE\_MODE\_NONE}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01638}01638                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_acbb8e62a681f9f153484fc18bbfa0cfe}{MLX5\_CAP\_ETH}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, wqe\_vlan\_insert))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01639}01639                         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a116cbe602203519d8fe4418dc2cbf84a}{min\_insert\_caps}} = \mbox{\hyperlink{en_8h_afd9b34f1312574d2095a3de5cebdd98f}{MLX5E\_INSERT\_VLAN}} | \mbox{\hyperlink{en_8h_a5e27e2ccb70d5d549556a68f9f932700}{MLX5E\_INSERT\_NON\_VLAN}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01640}01640                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01641}01641                         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a116cbe602203519d8fe4418dc2cbf84a}{min\_insert\_caps}} = \mbox{\hyperlink{en_8h_a5e27e2ccb70d5d549556a68f9f932700}{MLX5E\_INSERT\_NON\_VLAN}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01642}01642         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01643}01643                 \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a116cbe602203519d8fe4418dc2cbf84a}{min\_insert\_caps}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01644}01644         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01645}01645 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01646}01646 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01647}01647 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01648}\mbox{\hyperlink{mlx5__en__main_8c_a2ac892a931c4e1fff07b885a0567081d}{01648}} \mbox{\hyperlink{mlx5__en__main_8c_a2ac892a931c4e1fff07b885a0567081d}{mlx5e\_refresh\_sq\_inline\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01649}01649 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01650}01650         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01651}01651 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01652}01652         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01653}01653                 mtx\_lock(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[i].\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01654}01654                 \mbox{\hyperlink{mlx5__en__main_8c_a6c977d73c8d2e46bf903d0594fc8b042}{mlx5e\_update\_sq\_inline}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01655}01655                 mtx\_unlock(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[i].\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01656}01656         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01657}01657 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01658}01658 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01659}01659 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01660}\mbox{\hyperlink{en_8h_a82576754aaba9305ce5af957034e83bf}{01660}} \mbox{\hyperlink{mlx5__en__main_8c_a82576754aaba9305ce5af957034e83bf}{mlx5e\_refresh\_sq\_inline}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01661}01661 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01662}01662         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01663}01663 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01664}01664         \textcolor{comment}{/* check if channels are closed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01665}01665         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01666}01666                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01667}01667 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01668}01668         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01669}01669                 \mbox{\hyperlink{mlx5__en__main_8c_a2ac892a931c4e1fff07b885a0567081d}{mlx5e\_refresh\_sq\_inline\_sub}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01670}01670 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01671}01671 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01672}01672 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01673}\mbox{\hyperlink{mlx5__en__main_8c_a9ce383fb5ac6818deb2efff143db8068}{01673}} \mbox{\hyperlink{mlx5__en__main_8c_a9ce383fb5ac6818deb2efff143db8068}{mlx5e\_create\_sq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01674}01674     \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01675}01675     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq__param}{mlx5e\_sq\_param}} *param,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01676}01676     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01677}01677 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01678}01678         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01679}01679         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01680}01680         \textcolor{keywordtype}{char} buffer[16];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01681}01681         \textcolor{keywordtype}{void} *sqc = param-\/>\mbox{\hyperlink{structmlx5e__sq__param_a4d11c9dd6ac90ded2c24b4358a96a0fc}{sqc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01682}01682         \textcolor{keywordtype}{void} *sqc\_wq = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(sqc, sqc, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01683}01683         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01684}01684 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01685}01685         \textcolor{comment}{/* Create DMA descriptor TAG */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01686}01686         \textcolor{keywordflow}{if} ((err = -\/bus\_dma\_tag\_create(}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01687}01687             bus\_get\_dma\_tag(mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a0819dc9fa4983c9140507e1a02aa8313}{pdev}}-\/>dev.bsddev),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01688}01688             1,                          \textcolor{comment}{/* any alignment */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01689}01689             0,                          \textcolor{comment}{/* no boundary */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01690}01690             BUS\_SPACE\_MAXADDR,          \textcolor{comment}{/* lowaddr */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01691}01691             BUS\_SPACE\_MAXADDR,          \textcolor{comment}{/* highaddr */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01692}01692             NULL, NULL,                 \textcolor{comment}{/* filter, filterarg */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01693}01693             \mbox{\hyperlink{en_8h_ab8c7ae352aa493ec8440ced13dbe19d9}{MLX5E\_MAX\_TX\_PAYLOAD\_SIZE}}, \textcolor{comment}{/* maxsize */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01694}01694             \mbox{\hyperlink{en_8h_ac321dbafd9bb7636da9b049eabae6a5b}{MLX5E\_MAX\_TX\_MBUF\_FRAGS}},     \textcolor{comment}{/* nsegments */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01695}01695             \mbox{\hyperlink{en_8h_a86551fad2cd9e36245ef16c7690774b9}{MLX5E\_MAX\_TX\_MBUF\_SIZE}},       \textcolor{comment}{/* maxsegsize */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01696}01696             0,                          \textcolor{comment}{/* flags */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01697}01697             NULL, NULL,                 \textcolor{comment}{/* lockfunc, lockfuncarg */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01698}01698             \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4d9a2dd3af1286600cfc8d827affa172}{dma\_tag}})))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01699}01699                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01700}01700 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01701}01701         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a6198254ec6433e275c35b4fc54447034}{mkey\_be}} = cpu\_to\_be32(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abf3f056e8dd0679375dc0c90731734b4}{mr}}.\mbox{\hyperlink{structmlx5__core__mkey_a35815af7a03d7540ee9fa07fcb74548c}{key}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01702}01702         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_add5663128f6e4862712b3935d3252ad3}{ifp}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01703}01703         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01704}01704         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a6eb41411a4afaebeabf239f5d038c9f4}{tc}} = \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01705}01705 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01706}01706         err = \mbox{\hyperlink{mlx5__wq_8c_ae8b78e8860b93e7c516fbb52d78e01b3}{mlx5\_wq\_cyc\_create}}(mdev, \&param-\/>\mbox{\hyperlink{structmlx5e__sq__param_a87f81809b4a788b00af2e53ccdbaf59d}{wq}}, sqc\_wq, \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a9b10abfe8962af01e045a33b866e64e7}{wq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01707}01707             \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4f271775ed9e90b7439834561b2762a3}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01708}01708         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01709}01709                 \textcolor{keywordflow}{goto} err\_free\_dma\_tag;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01710}01710 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01711}01711         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a9b10abfe8962af01e045a33b866e64e7}{wq}}.\mbox{\hyperlink{structmlx5__wq__cyc_a0aa32c71b19d88d9583746be207beee4}{db}} = \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a9b10abfe8962af01e045a33b866e64e7}{wq}}.\mbox{\hyperlink{structmlx5__wq__cyc_a0aa32c71b19d88d9583746be207beee4}{db}}[\mbox{\hyperlink{qp_8h_a22a181a370d3ab8aa40e77637fb5a2f9a7446bdd47c08ff7b50a5da5804f3d35e}{MLX5\_SND\_DBR}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01712}01712 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01713}01713         err = \mbox{\hyperlink{mlx5__en__main_8c_a1e7734f7979261d0be79f0804a01d5bb}{mlx5e\_alloc\_sq\_db}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01714}01714         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01715}01715                 \textcolor{keywordflow}{goto} err\_sq\_wq\_destroy;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01716}01716 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01717}01717         \mbox{\hyperlink{mlx5__en__main_8c_a6c977d73c8d2e46bf903d0594fc8b042}{mlx5e\_update\_sq\_inline}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01718}01718 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01719}01719         snprintf(buffer, \textcolor{keyword}{sizeof}(buffer), \textcolor{stringliteral}{"{}txstat\%dtc\%d"{}}, c-\/>\mbox{\hyperlink{structmlx5e__channel_a204e44454c32d5f6dfa97f3587943b62}{ix}}, \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01720}01720         \mbox{\hyperlink{en_8h_a4e4bdf2cdabe62d0271ac03f0c416a5a}{mlx5e\_create\_stats}}(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a36339dff2abc7f72df636d08ab976ded}{stats}}.\mbox{\hyperlink{structmlx5e__sq__stats_acc26729773121e6201e9c1943d751400}{ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01721}01721             buffer, \mbox{\hyperlink{mlx5__en__main_8c_a900ec1d37364be35af087c96405478e4}{mlx5e\_sq\_stats\_desc}}, \mbox{\hyperlink{en_8h_addfd10ff1c720f0f0266eace2f83dc8a}{MLX5E\_SQ\_STATS\_NUM}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01722}01722             \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a36339dff2abc7f72df636d08ab976ded}{stats}}.\mbox{\hyperlink{structmlx5e__sq__stats_a6264008126669db50aec8f156dcbc45a}{arg}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01723}01723 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01724}01724         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01725}01725 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01726}01726 err\_sq\_wq\_destroy:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01727}01727         \mbox{\hyperlink{mlx5__wq_8c_a49551f7d5d4eaab85b551255676b527e}{mlx5\_wq\_destroy}}(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4f271775ed9e90b7439834561b2762a3}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01728}01728 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01729}01729 err\_free\_dma\_tag:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01730}01730         bus\_dma\_tag\_destroy(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4d9a2dd3af1286600cfc8d827affa172}{dma\_tag}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01731}01731 done:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01732}01732         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01733}01733 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01734}01734 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01735}01735 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01736}\mbox{\hyperlink{mlx5__en__main_8c_a65770c09d22006e675f4c78b7623bcbd}{01736}} \mbox{\hyperlink{mlx5__en__main_8c_a65770c09d22006e675f4c78b7623bcbd}{mlx5e\_destroy\_sq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01737}01737 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01738}01738         \textcolor{comment}{/* destroy all sysctl nodes */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01739}01739         sysctl\_ctx\_free(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a36339dff2abc7f72df636d08ab976ded}{stats}}.\mbox{\hyperlink{structmlx5e__sq__stats_acc26729773121e6201e9c1943d751400}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01740}01740 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01741}01741         \mbox{\hyperlink{mlx5__en__main_8c_a521986674cc5e58f04cb1403fe928fc3}{mlx5e\_free\_sq\_db}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01742}01742         \mbox{\hyperlink{mlx5__wq_8c_a49551f7d5d4eaab85b551255676b527e}{mlx5\_wq\_destroy}}(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4f271775ed9e90b7439834561b2762a3}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01743}01743         bus\_dma\_tag\_destroy(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4d9a2dd3af1286600cfc8d827affa172}{dma\_tag}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01744}01744 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01745}01745 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01746}01746 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01747}\mbox{\hyperlink{en_8h_ab0335c890a5fa5f0fa1fd534df336177}{01747}} \mbox{\hyperlink{mlx5__en__main_8c_aadbc81355f3cee26af67a481ab925ac0}{mlx5e\_enable\_sq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq__param}{mlx5e\_sq\_param}} *param,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01748}01748     \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__sq__bfreg}{mlx5\_sq\_bfreg}} *\mbox{\hyperlink{en_8h_a091bc3a4f66580cd5048aa1c7e22d495}{bfreg}}, \textcolor{keywordtype}{int} tis\_num)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01749}01749 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01750}01750         \textcolor{keywordtype}{void} *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01751}01751         \textcolor{keywordtype}{void} *sqc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01752}01752         \textcolor{keywordtype}{void} *\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01753}01753         \textcolor{keywordtype}{int} inlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01754}01754         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01755}01755         u8 ts\_format;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01756}01756 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01757}01757         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_sq\_in) +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01758}01758             \textcolor{keyword}{sizeof}(u64) * \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4f271775ed9e90b7439834561b2762a3}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_aa8b555887ebc680ef422777985acf16e}{buf}}.\mbox{\hyperlink{structmlx5__buf_a2328a3f51ed8527f6084a550f17ed8f0}{npages}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01759}01759         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01760}01760         \textcolor{keywordflow}{if} (in == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01761}01761                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01762}01762 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01763}01763         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ac1cd44412103d0a00410eceaa1643360}{uar\_map}} = \mbox{\hyperlink{en_8h_a091bc3a4f66580cd5048aa1c7e22d495}{bfreg}}-\/>\mbox{\hyperlink{structmlx5__sq__bfreg_aa8e89279f7ed37f36b2303aa277f3b88}{map}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01764}01764 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01765}01765         ts\_format = \mbox{\hyperlink{driver_8h_a5b23141e6d8ecac65cae0720967bf802}{mlx5\_get\_sq\_default\_ts}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01766}01766         sqc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_sq\_in, in, \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01767}01767         \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}} = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(sqc, sqc, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01768}01768 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01769}01769         memcpy(sqc, param-\/>\mbox{\hyperlink{structmlx5e__sq__param_a4d11c9dd6ac90ded2c24b4358a96a0fc}{sqc}}, \textcolor{keyword}{sizeof}(param-\/>\mbox{\hyperlink{structmlx5e__sq__param_a4d11c9dd6ac90ded2c24b4358a96a0fc}{sqc}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01770}01770 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01771}01771         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(sqc, sqc, tis\_num\_0, tis\_num);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01772}01772         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(sqc, sqc, cqn, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}.\mbox{\hyperlink{structmlx5__core__cq_aa4a997291e120b040c7a95d59639e62a}{cqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01773}01773         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(sqc, sqc, \mbox{\hyperlink{en__hw__tls_8h_a1b0c7bd4d79798ef4e0ce23894c9aeb2}{state}}, \mbox{\hyperlink{mlx5__ifc_8h_a87d22175c5de65fbe6a0b3b53305dee4a231f626c8a5e2d1adde1343ba62ef026}{MLX5\_SQC\_STATE\_RST}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01774}01774         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(sqc, sqc, ts\_format, ts\_format);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01775}01775         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(sqc, sqc, tis\_lst\_sz, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01776}01776         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(sqc, sqc, flush\_in\_error\_en, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01777}01777         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(sqc, sqc, allow\_swp, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01778}01778 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01779}01779         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, wq\_type, \mbox{\hyperlink{mlx5__ifc_8h_abb911bb32d4e97b5fcd682dd43789991af69f1d4eb0eced8c9cccca73c3f2dd22}{MLX5\_WQ\_TYPE\_CYCLIC}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01780}01780         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, uar\_page, \mbox{\hyperlink{en_8h_a091bc3a4f66580cd5048aa1c7e22d495}{bfreg}}-\/>\mbox{\hyperlink{structmlx5__sq__bfreg_a2696af77aaf294f4aacc4dac9b22ea28}{index}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01781}01781         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, log\_wq\_pg\_sz, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4f271775ed9e90b7439834561b2762a3}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_aa8b555887ebc680ef422777985acf16e}{buf}}.\mbox{\hyperlink{structmlx5__buf_aefd3839d2ab6886e118aec125a39aadd}{page\_shift}} -\/}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01782}01782             PAGE\_SHIFT);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01783}01783         \mbox{\hyperlink{device_8h_a6e7776ca1e3178584753950058580eb6}{MLX5\_SET64}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, dbr\_addr, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4f271775ed9e90b7439834561b2762a3}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_adfbd74741f73b7030f6c545bedbb4e7b}{db}}.\mbox{\hyperlink{structmlx5__db_a67fa49352985a2e13bc57bed6740471d}{dma}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01784}01784 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01785}01785         \mbox{\hyperlink{driver_8h_adbd58dd0790cfdfce0e245704e92deec}{mlx5\_fill\_page\_array}}(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a4f271775ed9e90b7439834561b2762a3}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_aa8b555887ebc680ef422777985acf16e}{buf}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01786}01786             (\_\_be64 *) \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, pas));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01787}01787 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01788}01788         err = \mbox{\hyperlink{mlx5__transobj_8c_aaf3f65befa4c5a39b74d356e381b4a57}{mlx5\_core\_create\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, in, inlen, \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae65e9f03d02b152e7f24b1ae80917ac0}{sqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01789}01789 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01790}01790         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01791}01791 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01792}01792         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01793}01793 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01794}01794 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01795}01795 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01796}\mbox{\hyperlink{en_8h_ae6c4946a13b0b6a0fe32c44231b908a5}{01796}} \mbox{\hyperlink{mlx5__en__main_8c_a32f680a788e46bbe36471d835e60fa4d}{mlx5e\_modify\_sq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \textcolor{keywordtype}{int} curr\_state, \textcolor{keywordtype}{int} next\_state)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01797}01797 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01798}01798         \textcolor{keywordtype}{void} *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01799}01799         \textcolor{keywordtype}{void} *sqc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01800}01800         \textcolor{keywordtype}{int} inlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01801}01801         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01802}01802 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01803}01803         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(modify\_sq\_in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01804}01804         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01805}01805         \textcolor{keywordflow}{if} (in == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01806}01806                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01807}01807 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01808}01808         sqc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(modify\_sq\_in, in, \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01809}01809 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01810}01810         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(modify\_sq\_in, in, \mbox{\hyperlink{en_8h_aee9a8edb7c14084b64d679bfa87cbb4d}{sqn}}, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae65e9f03d02b152e7f24b1ae80917ac0}{sqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01811}01811         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(modify\_sq\_in, in, sq\_state, curr\_state);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01812}01812         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(sqc, sqc, \mbox{\hyperlink{en__hw__tls_8h_a1b0c7bd4d79798ef4e0ce23894c9aeb2}{state}}, next\_state);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01813}01813 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01814}01814         err = \mbox{\hyperlink{mlx5__transobj_8c_a576476ded78285c23ae0b97fdd921670}{mlx5\_core\_modify\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01815}01815 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01816}01816         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01817}01817 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01818}01818         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01819}01819 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01820}01820 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01821}01821 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01822}\mbox{\hyperlink{en_8h_aab158f1be42d6dd189ea4574ae781542}{01822}} \mbox{\hyperlink{mlx5__en__main_8c_a52f50a71e2713d23456f90201cf28038}{mlx5e\_disable\_sq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01823}01823 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01824}01824 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01825}01825         \mbox{\hyperlink{mlx5__transobj_8c_afe000f53ef84175a846b44c6866eba29}{mlx5\_core\_destroy\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae65e9f03d02b152e7f24b1ae80917ac0}{sqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01826}01826 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01827}01827 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01828}01828 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01829}\mbox{\hyperlink{mlx5__en__main_8c_aeb3ce90636f8f2675ca8d2ec0427af4a}{01829}} \mbox{\hyperlink{mlx5__en__main_8c_aeb3ce90636f8f2675ca8d2ec0427af4a}{mlx5e\_open\_sq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01830}01830     \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01831}01831     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq__param}{mlx5e\_sq\_param}} *param,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01832}01832     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01833}01833 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01834}01834         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01835}01835 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01836}01836         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_affa1a18df26f23940e0e53d7af731c21}{cev\_factor}} = c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.tx\_completion\_fact;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01837}01837 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01838}01838         \textcolor{comment}{/* ensure the TX completion event factor is not zero */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01839}01839         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_affa1a18df26f23940e0e53d7af731c21}{cev\_factor}} == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01840}01840                 \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_affa1a18df26f23940e0e53d7af731c21}{cev\_factor}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01841}01841 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01842}01842         err = \mbox{\hyperlink{mlx5__en__main_8c_a9ce383fb5ac6818deb2efff143db8068}{mlx5e\_create\_sq}}(c, \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}, param, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01843}01843         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01844}01844                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01845}01845 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01846}01846         err = \mbox{\hyperlink{mlx5__en__main_8c_aadbc81355f3cee26af67a481ab925ac0}{mlx5e\_enable\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, param, \&c-\/>\mbox{\hyperlink{structmlx5e__channel_ad2f36c2524158dcbe7602e4b6b7d222c}{bfreg}}, c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5ab9e4378b947f32c2717fe2b62fdfcd}{tisn}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01847}01847         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01848}01848                 \textcolor{keywordflow}{goto} err\_destroy\_sq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01849}01849 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01850}01850         err = \mbox{\hyperlink{mlx5__en__main_8c_a32f680a788e46bbe36471d835e60fa4d}{mlx5e\_modify\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \mbox{\hyperlink{mlx5__ifc_8h_a87d22175c5de65fbe6a0b3b53305dee4a231f626c8a5e2d1adde1343ba62ef026}{MLX5\_SQC\_STATE\_RST}}, \mbox{\hyperlink{mlx5__ifc_8h_a87d22175c5de65fbe6a0b3b53305dee4a8dd62869ad439c66cbc4fa11e028fb64}{MLX5\_SQC\_STATE\_RDY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01851}01851         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01852}01852                 \textcolor{keywordflow}{goto} err\_disable\_sq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01853}01853 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01854}01854         WRITE\_ONCE(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a0f3f10420027122a12aab9bb40f4f7ec}{running}}, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01855}01855 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01856}01856         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01857}01857 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01858}01858 err\_disable\_sq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01859}01859         \mbox{\hyperlink{mlx5__en__main_8c_a52f50a71e2713d23456f90201cf28038}{mlx5e\_disable\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01860}01860 err\_destroy\_sq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01861}01861         \mbox{\hyperlink{mlx5__en__main_8c_a65770c09d22006e675f4c78b7623bcbd}{mlx5e\_destroy\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01862}01862 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01863}01863         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01864}01864 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01865}01865 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01866}01866 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01867}\mbox{\hyperlink{mlx5__en__main_8c_ab1cb237c9478f56368d9ffc8a2100367}{01867}} \mbox{\hyperlink{mlx5__en__main_8c_ab1cb237c9478f56368d9ffc8a2100367}{mlx5e\_sq\_send\_nops\_locked}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \textcolor{keywordtype}{int} can\_sleep)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01868}01868 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01869}01869         \textcolor{comment}{/* fill up remainder with NOPs */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01870}01870         \textcolor{keywordflow}{while} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ad3793c60d061d069dae8caf83106da97}{cev\_counter}} != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01871}01871                 \textcolor{keywordflow}{while} (!\mbox{\hyperlink{en_8h_aa738675a488990786db320a175390208}{mlx5e\_sq\_has\_room\_for}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, 1)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01872}01872                         \textcolor{keywordflow}{if} (can\_sleep != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01873}01873                                 mtx\_unlock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01874}01874                                 msleep(4);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01875}01875                                 mtx\_lock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01876}01876                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01877}01877                                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01878}01878                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01879}01879                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01880}01880                 \textcolor{comment}{/* send a single NOP */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01881}01881                 \mbox{\hyperlink{en_8h_a1ae880180d9ccc19e9d2f216c5f6e5d7}{mlx5e\_send\_nop}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01882}01882                 atomic\_thread\_fence\_rel();}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01883}01883         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01884}01884 done:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01885}01885         \mbox{\hyperlink{en_8h_a1e1594b5c6e312f81ffc97fd75213b8a}{mlx5e\_tx\_notify\_hw}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \textcolor{keyword}{false});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01886}01886 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01887}01887 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01888}01888 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01889}\mbox{\hyperlink{en_8h_a386eaba3e3faadae0cfef24b3d5b6606}{01889}} \mbox{\hyperlink{mlx5__en__main_8c_a5beb48095ffcec20e7e7d04bcee4ae67}{mlx5e\_sq\_cev\_timeout}}(\textcolor{keywordtype}{void} *arg)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01890}01890 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01891}01891         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}} = arg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01892}01892 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01893}01893         mtx\_assert(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}}, MA\_OWNED);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01894}01894 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01895}01895         \textcolor{comment}{/* check next state */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01896}01896         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_afa3cd1751ffda9d1b4fdd25fa8900c07}{cev\_next\_state}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01897}01897         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a67c0078db378979909321715e23f5345}{MLX5E\_CEV\_STATE\_SEND\_NOPS}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01898}01898                 \textcolor{comment}{/* fill TX ring with NOPs, if any */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01899}01899                 \mbox{\hyperlink{mlx5__en__main_8c_ab1cb237c9478f56368d9ffc8a2100367}{mlx5e\_sq\_send\_nops\_locked}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01900}01900 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01901}01901                 \textcolor{comment}{/* check if completed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01902}01902                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ad3793c60d061d069dae8caf83106da97}{cev\_counter}} == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01903}01903                         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_afa3cd1751ffda9d1b4fdd25fa8900c07}{cev\_next\_state}} = \mbox{\hyperlink{en_8h_af1f33bcd671b960c4e749dd60890e4f1}{MLX5E\_CEV\_STATE\_INITIAL}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01904}01904                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01905}01905                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01906}01906                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01907}01907         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01908}01908                 \textcolor{comment}{/* send NOPs on next timeout */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01909}01909                 \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_afa3cd1751ffda9d1b4fdd25fa8900c07}{cev\_next\_state}} = \mbox{\hyperlink{en_8h_a67c0078db378979909321715e23f5345}{MLX5E\_CEV\_STATE\_SEND\_NOPS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01910}01910                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01911}01911         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01912}01912 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01913}01913         \textcolor{comment}{/* restart timer */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01914}01914         callout\_reset\_curcpu(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a2d16858647db617833d046371eecd985}{cev\_callout}}, hz, \mbox{\hyperlink{mlx5__en__main_8c_a5beb48095ffcec20e7e7d04bcee4ae67}{mlx5e\_sq\_cev\_timeout}}, \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01915}01915 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01916}01916 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01917}01917 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01918}\mbox{\hyperlink{en_8h_a2f61aa647e81e7944e87a23be826e412}{01918}} \mbox{\hyperlink{mlx5__en__main_8c_a39ac3d96a9ab067fc2450e63196df054}{mlx5e\_drain\_sq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01919}01919 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01920}01920         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01921}01921         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev= \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01922}01922 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01923}01923         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01924}01924 \textcolor{comment}{         * Check if already stopped.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01925}01925 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01926}01926 \textcolor{comment}{         * NOTE: Serialization of this function is managed by the}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01927}01927 \textcolor{comment}{         * caller ensuring the priv's state lock is locked or in case}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01928}01928 \textcolor{comment}{         * of rate limit support, a single thread manages drain and}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01929}01929 \textcolor{comment}{         * resume of SQs. The "{}running"{} variable can therefore safely}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01930}01930 \textcolor{comment}{         * be read without any locks.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01931}01931 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01932}01932         \textcolor{keywordflow}{if} (READ\_ONCE(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a0f3f10420027122a12aab9bb40f4f7ec}{running}}) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01933}01933                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01934}01934 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01935}01935         \textcolor{comment}{/* don't put more packets into the SQ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01936}01936         WRITE\_ONCE(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a0f3f10420027122a12aab9bb40f4f7ec}{running}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01937}01937 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01938}01938         \textcolor{comment}{/* serialize access to DMA rings */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01939}01939         mtx\_lock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01940}01940 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01941}01941         \textcolor{comment}{/* teardown event factor timer, if any */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01942}01942         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_afa3cd1751ffda9d1b4fdd25fa8900c07}{cev\_next\_state}} = \mbox{\hyperlink{en_8h_a0c291715fafd3f4fe58849caa3717a53}{MLX5E\_CEV\_STATE\_HOLD\_NOPS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01943}01943         callout\_stop(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a2d16858647db617833d046371eecd985}{cev\_callout}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01944}01944 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01945}01945         \textcolor{comment}{/* send dummy NOPs in order to flush the transmit ring */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01946}01946         \mbox{\hyperlink{mlx5__en__main_8c_ab1cb237c9478f56368d9ffc8a2100367}{mlx5e\_sq\_send\_nops\_locked}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01947}01947         mtx\_unlock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01948}01948 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01949}01949         \textcolor{comment}{/* wait till SQ is empty or link is down */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01950}01950         mtx\_lock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01951}01951         \textcolor{keywordflow}{while} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a9c89e648a4f3731d3432fd4a9ef76937}{cc}} != \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>pc \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01952}01952             (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a3c52b2a83f919768d02ebe0112686ea9}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afbe7d82d6be5ad778c829f3ed3c01838}{media\_status\_last}} \& IFM\_ACTIVE) != 0 \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01953}01953             mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_aaee056f22d7ec1c4298ffb20189ec7e5}{state}} != \mbox{\hyperlink{driver_8h_aa42b19437cec785545106d8c76e3d9dda09cf6fffb12218a75a5f45b789ce5c62}{MLX5\_DEVICE\_STATE\_INTERNAL\_ERROR}} \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01954}01954             pci\_channel\_offline(mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a0819dc9fa4983c9140507e1a02aa8313}{pdev}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01955}01955                 mtx\_unlock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01956}01956                 msleep(1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01957}01957                 \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}.\mbox{\hyperlink{structmlx5__core__cq_a7fd008e4e7eb4f052083824c0a0d7589}{comp}}(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01958}01958                 mtx\_lock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01959}01959         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01960}01960         mtx\_unlock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01961}01961 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01962}01962         \textcolor{comment}{/* error out remaining requests */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01963}01963         error = \mbox{\hyperlink{mlx5__en__main_8c_a32f680a788e46bbe36471d835e60fa4d}{mlx5e\_modify\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \mbox{\hyperlink{mlx5__ifc_8h_a87d22175c5de65fbe6a0b3b53305dee4a8dd62869ad439c66cbc4fa11e028fb64}{MLX5\_SQC\_STATE\_RDY}}, \mbox{\hyperlink{mlx5__ifc_8h_a87d22175c5de65fbe6a0b3b53305dee4a8b433936e3fde71187569fd199899b9d}{MLX5\_SQC\_STATE\_ERR}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01964}01964         \textcolor{keywordflow}{if} (error != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01965}01965                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_add5663128f6e4862712b3935d3252ad3}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01966}01966                     \textcolor{stringliteral}{"{}mlx5e\_modify\_sq() from RDY to ERR failed: \%d\(\backslash\)n"{}}, error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01967}01967         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01968}01968 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01969}01969         \textcolor{comment}{/* wait till SQ is empty */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01970}01970         mtx\_lock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01971}01971         \textcolor{keywordflow}{while} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a9c89e648a4f3731d3432fd4a9ef76937}{cc}} != \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>pc \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01972}01972                mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_aaee056f22d7ec1c4298ffb20189ec7e5}{state}} != \mbox{\hyperlink{driver_8h_aa42b19437cec785545106d8c76e3d9dda09cf6fffb12218a75a5f45b789ce5c62}{MLX5\_DEVICE\_STATE\_INTERNAL\_ERROR}} \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01973}01973                pci\_channel\_offline(mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a0819dc9fa4983c9140507e1a02aa8313}{pdev}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01974}01974                 mtx\_unlock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01975}01975                 msleep(1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01976}01976                 \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}.\mbox{\hyperlink{structmlx5__core__cq_a7fd008e4e7eb4f052083824c0a0d7589}{comp}}(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01977}01977                 mtx\_lock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01978}01978         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01979}01979         mtx\_unlock(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01980}01980 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01981}01981 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01982}01982 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01983}\mbox{\hyperlink{mlx5__en__main_8c_a48d52ca1fa0ee06abfbe34ff2841d23d}{01983}} \mbox{\hyperlink{mlx5__en__main_8c_a48d52ca1fa0ee06abfbe34ff2841d23d}{mlx5e\_close\_sq\_wait}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01984}01984 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01985}01985 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01986}01986         \mbox{\hyperlink{mlx5__en__main_8c_a39ac3d96a9ab067fc2450e63196df054}{mlx5e\_drain\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01987}01987         \mbox{\hyperlink{mlx5__en__main_8c_a52f50a71e2713d23456f90201cf28038}{mlx5e\_disable\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01988}01988         \mbox{\hyperlink{mlx5__en__main_8c_a65770c09d22006e675f4c78b7623bcbd}{mlx5e\_destroy\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01989}01989 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01990}01990 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01991}01991 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01992}\mbox{\hyperlink{mlx5__en__main_8c_a8a13e77fba41caa331a993eb71ff7d93}{01992}} \mbox{\hyperlink{mlx5__en__main_8c_a8a13e77fba41caa331a993eb71ff7d93}{mlx5e\_create\_cq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01993}01993     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq__param}{mlx5e\_cq\_param}} *param,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01994}01994     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq}{mlx5e\_cq}} *\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01995}01995     \mbox{\hyperlink{en_8h_a264c2620715fda5284c3c0c283e9d930}{mlx5e\_cq\_comp\_t}} *comp,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01996}01996     \textcolor{keywordtype}{int} eq\_ix)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01997}01997 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01998}01998         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l01999}01999         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__cq}{mlx5\_core\_cq}} *\mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}} = \&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02000}02000         \textcolor{keywordtype}{int} eqn\_not\_used;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02001}02001         \textcolor{keywordtype}{int} \mbox{\hyperlink{structmlx5__core__cq_a11efe15093ea834e41b4c8a217bc7abe}{irqn}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02002}02002         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02003}02003         u32 i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02004}02004 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02005}02005         err = \mbox{\hyperlink{driver_8h_aeaccd90e6d73c5463f84985214248baa}{mlx5\_vector2eqn}}(mdev, eq\_ix, \&eqn\_not\_used, \&\mbox{\hyperlink{structmlx5__core__cq_a11efe15093ea834e41b4c8a217bc7abe}{irqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02006}02006         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02007}02007                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02008}02008 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02009}02009         err = \mbox{\hyperlink{mlx5__wq_8c_a721e8d14f1b17c0921e3dd1688936dc6}{mlx5\_cqwq\_create}}(mdev, \&param-\/>\mbox{\hyperlink{structmlx5e__cq__param_a0f9bf46c41564a4cc57b826019dd3d5a}{wq}}, param-\/>\mbox{\hyperlink{structmlx5e__cq__param_a782cd16b0ff40eba8cfc7ec417b2798f}{cqc}}, \&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ad4b619ee0ca108ddb421d7922b5e097c}{wq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02010}02010             \&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ae4ff275e3ba33ee0b80b4c52af4113e0}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02011}02011         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02012}02012                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02013}02013 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02014}02014         \mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}-\/>\mbox{\hyperlink{structmlx5__core__cq_a458436764ec16a503d3e3fbb1457b394}{cqe\_sz}} = 64;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02015}02015         \mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}-\/>\mbox{\hyperlink{structmlx5__core__cq_a1feaf10833bbd5fe6686d52108e0fd70}{set\_ci\_db}} = \mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ae4ff275e3ba33ee0b80b4c52af4113e0}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_adfbd74741f73b7030f6c545bedbb4e7b}{db}}.\mbox{\hyperlink{structmlx5__db_a2b44107b5ba30379be0c556c16e8b89e}{db}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02016}02016         \mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}-\/>\mbox{\hyperlink{structmlx5__core__cq_a1a441188f2c4f406e29bdc804fea49c3}{arm\_db}} = \mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ae4ff275e3ba33ee0b80b4c52af4113e0}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_adfbd74741f73b7030f6c545bedbb4e7b}{db}}.\mbox{\hyperlink{structmlx5__db_a2b44107b5ba30379be0c556c16e8b89e}{db}} + 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02017}02017         *\mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}-\/>\mbox{\hyperlink{structmlx5__core__cq_a1feaf10833bbd5fe6686d52108e0fd70}{set\_ci\_db}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02018}02018         *\mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}-\/>\mbox{\hyperlink{structmlx5__core__cq_a1a441188f2c4f406e29bdc804fea49c3}{arm\_db}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02019}02019         \mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}-\/>\mbox{\hyperlink{structmlx5__core__cq_a551c3d3d22a52da00c5c0b56bd48a4d7}{vector}} = eq\_ix;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02020}02020         \mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}-\/>\mbox{\hyperlink{structmlx5__core__cq_a7fd008e4e7eb4f052083824c0a0d7589}{comp}} = \mbox{\hyperlink{structmlx5__core__cq_a7fd008e4e7eb4f052083824c0a0d7589}{comp}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02021}02021         \mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}-\/>\mbox{\hyperlink{structmlx5__core__cq_a79af75889dbfdd02e154cece0f670a23}{event}} = \mbox{\hyperlink{en_8h_ac03b0b9463b1d6397f97d2ed63fc5a01}{mlx5e\_cq\_error\_event}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02022}02022         \mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}-\/>\mbox{\hyperlink{structmlx5__core__cq_a11efe15093ea834e41b4c8a217bc7abe}{irqn}} = \mbox{\hyperlink{structmlx5__core__cq_a11efe15093ea834e41b4c8a217bc7abe}{irqn}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02023}02023 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02024}02024         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{mlx5__wq_8c_ae3df4b28d828c4e73c0167b7d753508a}{mlx5\_cqwq\_get\_size}}(\&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ad4b619ee0ca108ddb421d7922b5e097c}{wq}}); i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02025}02025                 \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__cqe64}{mlx5\_cqe64}} *cqe = \mbox{\hyperlink{wq_8h_acb024510e442f16bb20f9943b05eab7e}{mlx5\_cqwq\_get\_wqe}}(\&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ad4b619ee0ca108ddb421d7922b5e097c}{wq}}, i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02026}02026 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02027}02027                 cqe-\/>\mbox{\hyperlink{structmlx5__cqe64_a3dbb1dc2c9f2ee64863edf7f750f5885}{op\_own}} = 0xf1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02028}02028         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02029}02029 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02030}02030         \mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_a85ef1e5daf51a239abc92fa86b8617bb}{priv}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02031}02031 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02032}02032         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02033}02033 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02034}02034 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02035}02035 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02036}\mbox{\hyperlink{mlx5__en__main_8c_af31befd4ebeecf83007886979e074b27}{02036}} \mbox{\hyperlink{mlx5__en__main_8c_af31befd4ebeecf83007886979e074b27}{mlx5e\_destroy\_cq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq}{mlx5e\_cq}} *\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02037}02037 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02038}02038         \mbox{\hyperlink{mlx5__wq_8c_a49551f7d5d4eaab85b551255676b527e}{mlx5\_wq\_destroy}}(\&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ae4ff275e3ba33ee0b80b4c52af4113e0}{wq\_ctrl}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02039}02039 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02040}02040 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02041}02041 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02042}\mbox{\hyperlink{mlx5__en__main_8c_aee0fc08c9d3551605d546ca01e1355db}{02042}} \mbox{\hyperlink{mlx5__en__main_8c_aee0fc08c9d3551605d546ca01e1355db}{mlx5e\_enable\_cq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq}{mlx5e\_cq}} *\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq__param}{mlx5e\_cq\_param}} *param, \textcolor{keywordtype}{int} eq\_ix)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02043}02043 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02044}02044         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__cq}{mlx5\_core\_cq}} *\mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}} = \&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02045}02045         u32 out[\mbox{\hyperlink{device_8h_a2bdfa104f3d7c0635b984382d1562741}{MLX5\_ST\_SZ\_DW}}(create\_cq\_out)];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02046}02046         \textcolor{keywordtype}{void} *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02047}02047         \textcolor{keywordtype}{void} *cqc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02048}02048         \textcolor{keywordtype}{int} inlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02049}02049         \textcolor{keywordtype}{int} irqn\_not\_used;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02050}02050         \textcolor{keywordtype}{int} eqn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02051}02051         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02052}02052 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02053}02053         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_cq\_in) +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02054}02054             \textcolor{keyword}{sizeof}(u64) * \mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ae4ff275e3ba33ee0b80b4c52af4113e0}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_aa8b555887ebc680ef422777985acf16e}{buf}}.\mbox{\hyperlink{structmlx5__buf_a2328a3f51ed8527f6084a550f17ed8f0}{npages}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02055}02055         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02056}02056         \textcolor{keywordflow}{if} (in == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02057}02057                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02058}02058 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02059}02059         cqc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_cq\_in, in, cq\_context);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02060}02060 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02061}02061         memcpy(cqc, param-\/>\mbox{\hyperlink{structmlx5e__cq__param_a782cd16b0ff40eba8cfc7ec417b2798f}{cqc}}, \textcolor{keyword}{sizeof}(param-\/>\mbox{\hyperlink{structmlx5e__cq__param_a782cd16b0ff40eba8cfc7ec417b2798f}{cqc}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02062}02062 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02063}02063         \mbox{\hyperlink{driver_8h_adbd58dd0790cfdfce0e245704e92deec}{mlx5\_fill\_page\_array}}(\&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ae4ff275e3ba33ee0b80b4c52af4113e0}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_aa8b555887ebc680ef422777985acf16e}{buf}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02064}02064             (\_\_be64 *) \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_cq\_in, in, pas));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02065}02065 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02066}02066         \mbox{\hyperlink{driver_8h_aeaccd90e6d73c5463f84985214248baa}{mlx5\_vector2eqn}}(\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_a85ef1e5daf51a239abc92fa86b8617bb}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, eq\_ix, \&eqn, \&irqn\_not\_used);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02067}02067 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02068}02068         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, c\_eqn, eqn);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02069}02069         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, log\_page\_size, \mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ae4ff275e3ba33ee0b80b4c52af4113e0}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_aa8b555887ebc680ef422777985acf16e}{buf}}.\mbox{\hyperlink{structmlx5__buf_aefd3839d2ab6886e118aec125a39aadd}{page\_shift}} -\/}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02070}02070             PAGE\_SHIFT);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02071}02071         \mbox{\hyperlink{device_8h_a6e7776ca1e3178584753950058580eb6}{MLX5\_SET64}}(cqc, cqc, dbr\_addr, \mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ae4ff275e3ba33ee0b80b4c52af4113e0}{wq\_ctrl}}.\mbox{\hyperlink{structmlx5__wq__ctrl_adfbd74741f73b7030f6c545bedbb4e7b}{db}}.\mbox{\hyperlink{structmlx5__db_a67fa49352985a2e13bc57bed6740471d}{dma}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02072}02072 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02073}02073         err = \mbox{\hyperlink{cq_8h_aea2bfcf5366ba54470890849d731ec22}{mlx5\_core\_create\_cq}}(\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_a85ef1e5daf51a239abc92fa86b8617bb}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_af69a66154472918b7d1481f1b1d974c8}{mcq}}, in, inlen, out, \textcolor{keyword}{sizeof}(out));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02074}02074 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02075}02075         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02076}02076 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02077}02077         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02078}02078                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02079}02079 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02080}02080         \mbox{\hyperlink{en_8h_a6b7bcdcd835612ffd60bafec03c7db3b}{mlx5e\_cq\_arm}}(\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}, \mbox{\hyperlink{doorbell_8h_ab8aa70fd78380f89ef76837858b16bd9}{MLX5\_GET\_DOORBELL\_LOCK}}(\&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_a85ef1e5daf51a239abc92fa86b8617bb}{priv}}-\/>doorbell\_lock));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02081}02081 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02082}02082         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02083}02083 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02084}02084 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02085}02085 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02086}\mbox{\hyperlink{mlx5__en__main_8c_abe1a052a378d0dfd2fee333dfe8ab438}{02086}} \mbox{\hyperlink{mlx5__en__main_8c_abe1a052a378d0dfd2fee333dfe8ab438}{mlx5e\_disable\_cq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq}{mlx5e\_cq}} *\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02087}02087 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02088}02088 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02089}02089         \mbox{\hyperlink{cq_8h_ada3ee9d5d56150686d9f6a2ca3a7af84}{mlx5\_core\_destroy\_cq}}(\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_a85ef1e5daf51a239abc92fa86b8617bb}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}-\/>\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02090}02090 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02091}02091 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02092}02092 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02093}\mbox{\hyperlink{en_8h_a2d783b459af1f87e018fb84fe77b1833}{02093}} \mbox{\hyperlink{mlx5__en__main_8c_aaa890cdb6815fe8c38553328e37e08c9}{mlx5e\_open\_cq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02094}02094     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq__param}{mlx5e\_cq\_param}} *param,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02095}02095     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq}{mlx5e\_cq}} *\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02096}02096     \mbox{\hyperlink{en_8h_a264c2620715fda5284c3c0c283e9d930}{mlx5e\_cq\_comp\_t}} *\mbox{\hyperlink{structmlx5__core__cq_a7fd008e4e7eb4f052083824c0a0d7589}{comp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02097}02097     \textcolor{keywordtype}{int} eq\_ix)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02098}02098 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02099}02099         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02100}02100 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02101}02101         err = \mbox{\hyperlink{mlx5__en__main_8c_a8a13e77fba41caa331a993eb71ff7d93}{mlx5e\_create\_cq}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, param, \mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}, \mbox{\hyperlink{structmlx5__core__cq_a7fd008e4e7eb4f052083824c0a0d7589}{comp}}, eq\_ix);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02102}02102         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02103}02103                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02104}02104 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02105}02105         err = \mbox{\hyperlink{mlx5__en__main_8c_aee0fc08c9d3551605d546ca01e1355db}{mlx5e\_enable\_cq}}(\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}}, param, eq\_ix);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02106}02106         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02107}02107                 \textcolor{keywordflow}{goto} err\_destroy\_cq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02108}02108 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02109}02109         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02110}02110 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02111}02111 err\_destroy\_cq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02112}02112         \mbox{\hyperlink{mlx5__en__main_8c_af31befd4ebeecf83007886979e074b27}{mlx5e\_destroy\_cq}}(\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02113}02113 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02114}02114         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02115}02115 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02116}02116 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02117}02117 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02118}\mbox{\hyperlink{en_8h_a4adecbc9a6ed9d3c49662c1174551d6b}{02118}} \mbox{\hyperlink{mlx5__en__main_8c_a04c2482d5109f5a26f95de0b739bcf42}{mlx5e\_close\_cq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq}{mlx5e\_cq}} *\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02119}02119 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02120}02120         \mbox{\hyperlink{mlx5__en__main_8c_abe1a052a378d0dfd2fee333dfe8ab438}{mlx5e\_disable\_cq}}(\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02121}02121         \mbox{\hyperlink{mlx5__en__main_8c_af31befd4ebeecf83007886979e074b27}{mlx5e\_destroy\_cq}}(\mbox{\hyperlink{en_8h_a124cdf1cec8a4103ace100a401cd893c}{cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02122}02122 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02123}02123 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02124}02124 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02125}\mbox{\hyperlink{mlx5__en__main_8c_a217cb0844101af8712a57c921aeb7214}{02125}} \mbox{\hyperlink{mlx5__en__main_8c_a217cb0844101af8712a57c921aeb7214}{mlx5e\_open\_tx\_cqs}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02126}02126     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel__param}{mlx5e\_channel\_param}} *cparam)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02127}02127 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02128}02128         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02129}02129         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02130}02130 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02131}02131         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} = 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} < c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02132}02132                 \textcolor{comment}{/* open completion queue */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02133}02133                 err = \mbox{\hyperlink{mlx5__en__main_8c_aaa890cdb6815fe8c38553328e37e08c9}{mlx5e\_open\_cq}}(c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_a71ff12b89cf2a03fe29b83ce24f543b4}{tx\_cq}}, \&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}].\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02134}02134                     \&\mbox{\hyperlink{en_8h_af515e8e7efb2dc84e36237f8db9e6b55}{mlx5e\_tx\_cq\_comp}}, c-\/>\mbox{\hyperlink{structmlx5e__channel_a204e44454c32d5f6dfa97f3587943b62}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02135}02135                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02136}02136                         \textcolor{keywordflow}{goto} err\_close\_tx\_cqs;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02137}02137         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02138}02138         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02139}02139 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02140}02140 err\_close\_tx\_cqs:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02141}02141         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}-\/-\/; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} >= 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}-\/-\/)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02142}02142                 \mbox{\hyperlink{mlx5__en__main_8c_a04c2482d5109f5a26f95de0b739bcf42}{mlx5e\_close\_cq}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}].\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02143}02143 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02144}02144         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02145}02145 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02146}02146 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02147}02147 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02148}\mbox{\hyperlink{mlx5__en__main_8c_ad7a69b224caab4b5df8836501c1afb1e}{02148}} \mbox{\hyperlink{mlx5__en__main_8c_ad7a69b224caab4b5df8836501c1afb1e}{mlx5e\_close\_tx\_cqs}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02149}02149 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02150}02150         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02151}02151 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02152}02152         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} = 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} < c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02153}02153                 \mbox{\hyperlink{mlx5__en__main_8c_a04c2482d5109f5a26f95de0b739bcf42}{mlx5e\_close\_cq}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}].\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02154}02154 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02155}02155 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02156}02156 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02157}\mbox{\hyperlink{mlx5__en__main_8c_a5eabc40ea5b6caa7f8a786187ca4d7de}{02157}} \mbox{\hyperlink{mlx5__en__main_8c_a5eabc40ea5b6caa7f8a786187ca4d7de}{mlx5e\_open\_sqs}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02158}02158     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel__param}{mlx5e\_channel\_param}} *cparam)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02159}02159 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02160}02160         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02161}02161         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02162}02162 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02163}02163         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} = 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} < c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02164}02164                 err = \mbox{\hyperlink{mlx5__en__main_8c_aeb3ce90636f8f2675ca8d2ec0427af4a}{mlx5e\_open\_sq}}(c, \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_a56e8907c1c3b1962980249fd9893a92e}{sq}}, \&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02165}02165                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02166}02166                         \textcolor{keywordflow}{goto} err\_close\_sqs;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02167}02167         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02168}02168 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02169}02169         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02170}02170 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02171}02171 err\_close\_sqs:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02172}02172         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}-\/-\/; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} >= 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}-\/-\/)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02173}02173                 \mbox{\hyperlink{mlx5__en__main_8c_a48d52ca1fa0ee06abfbe34ff2841d23d}{mlx5e\_close\_sq\_wait}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02174}02174 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02175}02175         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02176}02176 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02177}02177 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02178}02178 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02179}\mbox{\hyperlink{mlx5__en__main_8c_ad44882c367ff4253c3f4599faa2a2841}{02179}} \mbox{\hyperlink{mlx5__en__main_8c_ad44882c367ff4253c3f4599faa2a2841}{mlx5e\_close\_sqs\_wait}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02180}02180 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02181}02181         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02182}02182 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02183}02183         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} = 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} < c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02184}02184                 \mbox{\hyperlink{mlx5__en__main_8c_a48d52ca1fa0ee06abfbe34ff2841d23d}{mlx5e\_close\_sq\_wait}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02185}02185 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02186}02186 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02187}02187 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02188}\mbox{\hyperlink{mlx5__en__main_8c_ac64261216f7f7893c375a5dde4ebfd65}{02188}} \mbox{\hyperlink{mlx5__en__main_8c_ac64261216f7f7893c375a5dde4ebfd65}{mlx5e\_chan\_static\_init}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c, \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02189}02189 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02190}02190         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02191}02191 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02192}02192         \textcolor{comment}{/* setup priv and channel number */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02193}02193         c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02194}02194         c-\/>\mbox{\hyperlink{structmlx5e__channel_a204e44454c32d5f6dfa97f3587943b62}{ix}} = \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02195}02195 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02196}02196         \textcolor{comment}{/* setup send tag */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02197}02197         m\_snd\_tag\_init(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_afbe3317bd59e9237fdc20fbbc210754a}{tag}}, c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \&\mbox{\hyperlink{mlx5__en__main_8c_a94aabcbcd29f5dc83099292f48c9979b}{mlx5e\_ul\_snd\_tag\_sw}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02198}02198 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02199}02199         init\_completion(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_abb27bb705024bc5969e161721865d416}{completion}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02200}02200 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02201}02201         mtx\_init(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}}, \textcolor{stringliteral}{"{}mlx5rx"{}}, MTX\_NETWORK\_LOCK, MTX\_DEF);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02202}02202 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02203}02203         callout\_init\_mtx(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_af74db0dab1c630bcd6f19e5a05abdb97}{watchdog}}, \&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02204}02204 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02205}02205         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} = 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} != \mbox{\hyperlink{en_8h_a9624e8c369385946b7e89bb9440412c6}{MLX5E\_MAX\_TX\_NUM\_TC}}; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02206}02206                 \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}} = c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}} + \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02207}02207 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02208}02208                 mtx\_init(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}}, \textcolor{stringliteral}{"{}mlx5tx"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02209}02209                     MTX\_NETWORK\_LOCK \textcolor{stringliteral}{"{} TX"{}}, MTX\_DEF);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02210}02210                 mtx\_init(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a249d00a002063bcb22fb4e51e306e6f9}{comp\_lock}}, \textcolor{stringliteral}{"{}mlx5comp"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02211}02211                     MTX\_NETWORK\_LOCK \textcolor{stringliteral}{"{} TX"{}}, MTX\_DEF);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02212}02212 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02213}02213                 callout\_init\_mtx(\&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a2d16858647db617833d046371eecd985}{cev\_callout}}, \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02214}02214         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02215}02215 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02216}02216         \mbox{\hyperlink{en_8h_aecc666a8fc4f72c625fd58b97d434d19}{mlx5e\_iq\_static\_init}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a2fe0645c542ce76b893d7a6b89c29c77}{iq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02217}02217 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02218}02218 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02219}02219 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02220}\mbox{\hyperlink{mlx5__en__main_8c_a1bb4e26b6a42f1546d9215f73c8795d9}{02220}} \mbox{\hyperlink{mlx5__en__main_8c_a1bb4e26b6a42f1546d9215f73c8795d9}{mlx5e\_chan\_wait\_for\_completion}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02221}02221 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02222}02222 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02223}02223         m\_snd\_tag\_rele(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_afbe3317bd59e9237fdc20fbbc210754a}{tag}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02224}02224         wait\_for\_completion(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_abb27bb705024bc5969e161721865d416}{completion}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02225}02225 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02226}02226 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02227}02227 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02228}\mbox{\hyperlink{mlx5__en__main_8c_abb43495fff7f5ef15374ccf05e9a2de0}{02228}} \mbox{\hyperlink{mlx5__en__main_8c_abb43495fff7f5ef15374ccf05e9a2de0}{mlx5e\_priv\_wait\_for\_completion}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{const} uint32\_t channels)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02229}02229 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02230}02230         uint32\_t x;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02231}02231 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02232}02232         \textcolor{keywordflow}{for} (x = 0; x != channels; x++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02233}02233                 \mbox{\hyperlink{mlx5__en__main_8c_a1bb4e26b6a42f1546d9215f73c8795d9}{mlx5e\_chan\_wait\_for\_completion}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02234}02234 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02235}02235 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02236}02236 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02237}\mbox{\hyperlink{mlx5__en__main_8c_a3015b47e4cff561482b58706528acf32}{02237}} \mbox{\hyperlink{mlx5__en__main_8c_a3015b47e4cff561482b58706528acf32}{mlx5e\_chan\_static\_destroy}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02238}02238 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02239}02239         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02240}02240 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02241}02241         callout\_drain(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_af74db0dab1c630bcd6f19e5a05abdb97}{watchdog}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02242}02242 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02243}02243         mtx\_destroy(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02244}02244 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02245}02245         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} = 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} != \mbox{\hyperlink{en_8h_a9624e8c369385946b7e89bb9440412c6}{MLX5E\_MAX\_TX\_NUM\_TC}}; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02246}02246                 callout\_drain(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}].\mbox{\hyperlink{structmlx5e__sq_a2d16858647db617833d046371eecd985}{cev\_callout}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02247}02247                 mtx\_destroy(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}].\mbox{\hyperlink{structmlx5e__sq_abc390d5364f72404d7a6a7b35aa9ba78}{lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02248}02248                 mtx\_destroy(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}].\mbox{\hyperlink{structmlx5e__sq_a249d00a002063bcb22fb4e51e306e6f9}{comp\_lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02249}02249         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02250}02250 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02251}02251         \mbox{\hyperlink{en_8h_a0cb0a27a36d23efebd87aa36171565fd}{mlx5e\_iq\_static\_destroy}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a2fe0645c542ce76b893d7a6b89c29c77}{iq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02252}02252 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02253}02253 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02254}02254 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02255}\mbox{\hyperlink{mlx5__en__main_8c_a9adb20047a3c04418615444507e2248f}{02255}} \mbox{\hyperlink{mlx5__en__main_8c_a9adb20047a3c04418615444507e2248f}{mlx5e\_open\_channel}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02256}02256     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel__param}{mlx5e\_channel\_param}} *cparam,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02257}02257     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02258}02258 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02259}02259         \textcolor{keyword}{struct }epoch\_tracker et;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02260}02260         \textcolor{keywordtype}{int} i, err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02261}02261 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02262}02262         \textcolor{comment}{/* zero non-\/persistant data */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02263}02263         \mbox{\hyperlink{en_8h_addf87bda368cc451b12c500ceb49872b}{MLX5E\_ZERO}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}, \mbox{\hyperlink{en_8h_afc69a55f168c3f8a12084e7f3e7c7010}{mlx5e\_rq\_zero\_start}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02264}02264         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02265}02265                 \mbox{\hyperlink{en_8h_addf87bda368cc451b12c500ceb49872b}{MLX5E\_ZERO}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[i], \mbox{\hyperlink{en_8h_a20749e5ca299d10e957613f9726f9886}{mlx5e\_sq\_zero\_start}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02266}02266         \mbox{\hyperlink{en_8h_addf87bda368cc451b12c500ceb49872b}{MLX5E\_ZERO}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a2fe0645c542ce76b893d7a6b89c29c77}{iq}}, \mbox{\hyperlink{en_8h_a01f318586ef2b625dc3bfc0104e30694}{mlx5e\_iq\_zero\_start}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02267}02267 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02268}02268         \textcolor{comment}{/* open transmit completion queue */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02269}02269         err = \mbox{\hyperlink{mlx5__en__main_8c_a217cb0844101af8712a57c921aeb7214}{mlx5e\_open\_tx\_cqs}}(c, cparam);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02270}02270         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02271}02271                 \textcolor{keywordflow}{goto} err\_free;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02272}02272 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02273}02273         \textcolor{comment}{/* open receive completion queue */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02274}02274         err = \mbox{\hyperlink{mlx5__en__main_8c_aaa890cdb6815fe8c38553328e37e08c9}{mlx5e\_open\_cq}}(c-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_ad5f4d3460e84e5a6b0c6ab27804c19ae}{rx\_cq}}, \&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02275}02275             \&\mbox{\hyperlink{en_8h_a8803718e429b0198b354b5d273484c4c}{mlx5e\_rx\_cq\_comp}}, c-\/>\mbox{\hyperlink{structmlx5e__channel_a204e44454c32d5f6dfa97f3587943b62}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02276}02276         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02277}02277                 \textcolor{keywordflow}{goto} err\_close\_tx\_cqs;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02278}02278 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02279}02279         err = \mbox{\hyperlink{mlx5__en__main_8c_a5eabc40ea5b6caa7f8a786187ca4d7de}{mlx5e\_open\_sqs}}(c, cparam);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02280}02280         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02281}02281                 \textcolor{keywordflow}{goto} err\_close\_rx\_cq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02282}02282 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02283}02283         err = \mbox{\hyperlink{en_8h_a632f09515fcf8d9baedcad692d1f78b5}{mlx5e\_iq\_open}}(c, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_a56e8907c1c3b1962980249fd9893a92e}{sq}}, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_a71ff12b89cf2a03fe29b83ce24f543b4}{tx\_cq}}, \&c-\/>\mbox{\hyperlink{structmlx5e__channel_a2fe0645c542ce76b893d7a6b89c29c77}{iq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02284}02284         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02285}02285                 \textcolor{keywordflow}{goto} err\_close\_sqs;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02286}02286 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02287}02287         err = \mbox{\hyperlink{mlx5__en__main_8c_a615bf6bc520d47b40b2573e991318079}{mlx5e\_open\_rq}}(c, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_a9a26c28b1c80c0bcc645368c2c33f45e}{rq}}, \&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02288}02288         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02289}02289                 \textcolor{keywordflow}{goto} err\_close\_iq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02290}02290 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02291}02291         \textcolor{comment}{/* poll receive queue initially */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02292}02292         NET\_EPOCH\_ENTER(et);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02293}02293         c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}.\mbox{\hyperlink{structmlx5__core__cq_a7fd008e4e7eb4f052083824c0a0d7589}{comp}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02294}02294         NET\_EPOCH\_EXIT(et);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02295}02295 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02296}02296         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02297}02297 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02298}02298 err\_close\_iq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02299}02299         \mbox{\hyperlink{en_8h_aa3439cb068dc19ab37bd24ecfdafd6ea}{mlx5e\_iq\_close}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a2fe0645c542ce76b893d7a6b89c29c77}{iq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02300}02300 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02301}02301 err\_close\_sqs:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02302}02302         \mbox{\hyperlink{mlx5__en__main_8c_ad44882c367ff4253c3f4599faa2a2841}{mlx5e\_close\_sqs\_wait}}(c);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02303}02303 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02304}02304 err\_close\_rx\_cq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02305}02305         \mbox{\hyperlink{mlx5__en__main_8c_a04c2482d5109f5a26f95de0b739bcf42}{mlx5e\_close\_cq}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02306}02306 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02307}02307 err\_close\_tx\_cqs:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02308}02308         \mbox{\hyperlink{mlx5__en__main_8c_ad7a69b224caab4b5df8836501c1afb1e}{mlx5e\_close\_tx\_cqs}}(c);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02309}02309 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02310}02310 err\_free:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02311}02311         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02312}02312 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02313}02313 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02314}02314 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02315}\mbox{\hyperlink{mlx5__en__main_8c_ab89da27cbf9fc3c4e29902e63ee71928}{02315}} \mbox{\hyperlink{mlx5__en__main_8c_ab89da27cbf9fc3c4e29902e63ee71928}{mlx5e\_close\_channel}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02316}02316 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02317}02317         \mbox{\hyperlink{mlx5__en__main_8c_a81943d9c03d596d23334fbc1a2a234ef}{mlx5e\_close\_rq}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02318}02318 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02319}02319 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02320}02320 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02321}\mbox{\hyperlink{mlx5__en__main_8c_abb12aba3b076d2a95866e284ffe29c47}{02321}} \mbox{\hyperlink{mlx5__en__main_8c_abb12aba3b076d2a95866e284ffe29c47}{mlx5e\_close\_channel\_wait}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02322}02322 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02323}02323         \mbox{\hyperlink{mlx5__en__main_8c_abb88edfa371107279532b6627be737a5}{mlx5e\_close\_rq\_wait}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02324}02324         \mbox{\hyperlink{en_8h_aa3439cb068dc19ab37bd24ecfdafd6ea}{mlx5e\_iq\_close}}(\&c-\/>\mbox{\hyperlink{structmlx5e__channel_a2fe0645c542ce76b893d7a6b89c29c77}{iq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02325}02325         \mbox{\hyperlink{mlx5__en__main_8c_ad44882c367ff4253c3f4599faa2a2841}{mlx5e\_close\_sqs\_wait}}(c);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02326}02326         \mbox{\hyperlink{mlx5__en__main_8c_ad7a69b224caab4b5df8836501c1afb1e}{mlx5e\_close\_tx\_cqs}}(c);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02327}02327 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02328}02328 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02329}02329 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02330}\mbox{\hyperlink{mlx5__en__main_8c_aedf14f7babc2958cba5fdb375904ffe5}{02330}} \mbox{\hyperlink{mlx5__en__main_8c_aedf14f7babc2958cba5fdb375904ffe5}{mlx5e\_get\_wqe\_sz}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u32 *\mbox{\hyperlink{en_8h_ad1bece621c6700b5ca94f510536e769f}{wqe\_sz}}, u32 *\mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02331}02331 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02332}02332         u32 r, n;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02333}02333 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02334}02334         r = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a38dfd7126e601a9dba0ec254cde85133}{hw\_lro\_en}} ? \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a7df37d728587b7dd77d578816c33b483}{lro\_wqe\_sz}} :}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02335}02335             \mbox{\hyperlink{en_8h_a82e10c980f7ecf4a184b882676385936}{MLX5E\_SW2MB\_MTU}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}-\/>if\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02336}02336         \textcolor{keywordflow}{if} (r > MJUM16BYTES)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02337}02337                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02338}02338 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02339}02339         \textcolor{keywordflow}{if} (r > MJUM9BYTES)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02340}02340                 r = MJUM16BYTES;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02341}02341         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (r > MJUMPAGESIZE)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02342}02342                 r = MJUM9BYTES;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02343}02343         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (r > MCLBYTES)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02344}02344                 r = MJUMPAGESIZE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02345}02345         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02346}02346                 r = MCLBYTES;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02347}02347 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02348}02348         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02349}02349 \textcolor{comment}{         * n + 1 must be a power of two, because stride size must be.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02350}02350 \textcolor{comment}{         * Stride size is 16 * (n + 1), as the first segment is}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02351}02351 \textcolor{comment}{         * control.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02352}02352 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02353}02353         \textcolor{keywordflow}{for} (n = howmany(r, \mbox{\hyperlink{en_8h_a276d3cd29e7fa15cce686015c5cefd9d}{MLX5E\_MAX\_RX\_BYTES}}); !powerof2(n + 1); n++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02354}02354                 ;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02355}02355 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02356}02356         \textcolor{keywordflow}{if} (n > \mbox{\hyperlink{en_8h_ad65f76a78017b76e35c4f02c2c8108d4}{MLX5E\_MAX\_BUSDMA\_RX\_SEGS}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02357}02357                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02358}02358 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02359}02359         *\mbox{\hyperlink{en_8h_ad1bece621c6700b5ca94f510536e769f}{wqe\_sz}} = r;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02360}02360         *\mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}} = n;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02361}02361         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02362}02362 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02363}02363 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02364}02364 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02365}\mbox{\hyperlink{mlx5__en__main_8c_a2a9d0cb9d3045bf012378fdb8eb7c6f9}{02365}} \mbox{\hyperlink{mlx5__en__main_8c_a2a9d0cb9d3045bf012378fdb8eb7c6f9}{mlx5e\_build\_rq\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02366}02366     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq__param}{mlx5e\_rq\_param}} *param)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02367}02367 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02368}02368         \textcolor{keywordtype}{void} *rqc = param-\/>\mbox{\hyperlink{structmlx5e__rq__param_aeef8b333155e09facb80fc7e06d958b8}{rqc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02369}02369         \textcolor{keywordtype}{void} *\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}} = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(rqc, rqc, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02370}02370         u32 \mbox{\hyperlink{en_8h_ad1bece621c6700b5ca94f510536e769f}{wqe\_sz}}, \mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02371}02371 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02372}02372         \mbox{\hyperlink{mlx5__en__main_8c_aedf14f7babc2958cba5fdb375904ffe5}{mlx5e\_get\_wqe\_sz}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&\mbox{\hyperlink{en_8h_ad1bece621c6700b5ca94f510536e769f}{wqe\_sz}}, \&\mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02373}02373         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, wq\_type, \mbox{\hyperlink{mlx5__ifc_8h_abb911bb32d4e97b5fcd682dd43789991a30f065bf93c51b8cf54bea364ba097a8}{MLX5\_WQ\_TYPE\_LINKED\_LIST}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02374}02374         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, end\_padding\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a08f51f22ad2ed13a25181c2604573110aa8c3c339522ae8cd458d0a9682e05168}{MLX5\_WQ\_END\_PAD\_MODE\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02375}02375         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, log\_wq\_stride, ilog2(\textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rx__wqe}{mlx5e\_rx\_wqe}}) +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02376}02376             \mbox{\hyperlink{en_8h_a7066952143eddf023af26f94e478d93c}{nsegs}} * \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__wqe__data__seg}{mlx5\_wqe\_data\_seg}})));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02377}02377         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, log\_wq\_sz, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa16e0c879f0d1cd513e51e150124b72d}{log\_rq\_size}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02378}02378         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, pd, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9fb017d5f0afd3f0a0c96c22bd6e8ac6}{pdn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02379}02379 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02380}02380         param-\/>\mbox{\hyperlink{structmlx5e__rq__param_af8cf8c16c860f0aca0d6f1b2d1190ca4}{wq}}.\mbox{\hyperlink{structmlx5__wq__param_ae5d54776d21eaad0330a5a550690c5e6}{linear}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02381}02381 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02382}02382 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02383}02383 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02384}\mbox{\hyperlink{mlx5__en__main_8c_acf6c63eba62a37992414df4ce18385f9}{02384}} \mbox{\hyperlink{mlx5__en__main_8c_acf6c63eba62a37992414df4ce18385f9}{mlx5e\_build\_sq\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02385}02385     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq__param}{mlx5e\_sq\_param}} *param)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02386}02386 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02387}02387         \textcolor{keywordtype}{void} *sqc = param-\/>\mbox{\hyperlink{structmlx5e__sq__param_a4d11c9dd6ac90ded2c24b4358a96a0fc}{sqc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02388}02388         \textcolor{keywordtype}{void} *\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}} = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(sqc, sqc, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02389}02389 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02390}02390         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, log\_wq\_sz, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ab8aafaea26efc93829bac5f899717442}{log\_sq\_size}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02391}02391         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, log\_wq\_stride, ilog2(\mbox{\hyperlink{qp_8h_a82a069b4af5b790d9195363949d51227}{MLX5\_SEND\_WQE\_BB}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02392}02392         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(\mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, \mbox{\hyperlink{en_8h_a7d3b6ace6641f1454eb59728e77cac94}{wq}}, pd, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9fb017d5f0afd3f0a0c96c22bd6e8ac6}{pdn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02393}02393 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02394}02394         param-\/>\mbox{\hyperlink{structmlx5e__sq__param_a87f81809b4a788b00af2e53ccdbaf59d}{wq}}.\mbox{\hyperlink{structmlx5__wq__param_ae5d54776d21eaad0330a5a550690c5e6}{linear}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02395}02395 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02396}02396 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02397}02397 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02398}\mbox{\hyperlink{mlx5__en__main_8c_a70fdc0f9b8f11a443da96a75b76919b6}{02398}} \mbox{\hyperlink{mlx5__en__main_8c_a70fdc0f9b8f11a443da96a75b76919b6}{mlx5e\_build\_common\_cq\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02399}02399     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq__param}{mlx5e\_cq\_param}} *param)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02400}02400 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02401}02401         \textcolor{keywordtype}{void} *cqc = param-\/>\mbox{\hyperlink{structmlx5e__cq__param_a782cd16b0ff40eba8cfc7ec417b2798f}{cqc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02402}02402 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02403}02403         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, uar\_page, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_ac476fb1d38cdac2b8f6cee43aa25c2dd}{uar}}-\/>\mbox{\hyperlink{structmlx5__uars__page_a69d90f44b52999c724e78c9b76393da6}{index}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02404}02404 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02405}02405 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02406}02406 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02407}\mbox{\hyperlink{mlx5__en__main_8c_a9edb2abe89ae025f7ba39c9eec48b11e}{02407}} \mbox{\hyperlink{mlx5__en__main_8c_a9edb2abe89ae025f7ba39c9eec48b11e}{mlx5e\_get\_default\_profile}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{int} mode, \textcolor{keyword}{struct} net\_dim\_cq\_moder *ptr)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02408}02408 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02409}02409 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02410}02410         *ptr = net\_dim\_get\_profile(mode, \mbox{\hyperlink{en_8h_a96fca74709b2d6c6f7daa148802a12af}{MLX5E\_DIM\_DEFAULT\_PROFILE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02411}02411 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02412}02412         \textcolor{comment}{/* apply LRO restrictions */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02413}02413         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a38dfd7126e601a9dba0ec254cde85133}{hw\_lro\_en}} \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02414}02414             ptr-\/>pkts > \mbox{\hyperlink{en_8h_a8e440ad1a5207b51f4cf7355fc2ef44b}{MLX5E\_DIM\_MAX\_RX\_CQ\_MODERATION\_PKTS\_WITH\_LRO}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02415}02415                 ptr-\/>pkts = \mbox{\hyperlink{en_8h_a8e440ad1a5207b51f4cf7355fc2ef44b}{MLX5E\_DIM\_MAX\_RX\_CQ\_MODERATION\_PKTS\_WITH\_LRO}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02416}02416         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02417}02417 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02418}02418 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02419}02419 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02420}\mbox{\hyperlink{mlx5__en__main_8c_ae4f6dcaad5815b15a6bb057ffce4a908}{02420}} \mbox{\hyperlink{mlx5__en__main_8c_ae4f6dcaad5815b15a6bb057ffce4a908}{mlx5e\_build\_rx\_cq\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02421}02421     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq__param}{mlx5e\_cq\_param}} *param)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02422}02422 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02423}02423         \textcolor{keyword}{struct }net\_dim\_cq\_moder curr;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02424}02424         \textcolor{keywordtype}{void} *cqc = param-\/>\mbox{\hyperlink{structmlx5e__cq__param_a782cd16b0ff40eba8cfc7ec417b2798f}{cqc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02425}02425 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02426}02426         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02427}02427 \textcolor{comment}{         * We use MLX5\_CQE\_FORMAT\_HASH because the RX hash mini CQE}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02428}02428 \textcolor{comment}{         * format is more beneficial for FreeBSD use case.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02429}02429 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02430}02430 \textcolor{comment}{         * Adding support for MLX5\_CQE\_FORMAT\_CSUM will require changes}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02431}02431 \textcolor{comment}{         * in mlx5e\_decompress\_cqe.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02432}02432 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02433}02433         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa2f2e0b47a30ab74578060a216e1eba0}{cqe\_zipping\_en}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02434}02434                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, mini\_cqe\_res\_format, \mbox{\hyperlink{device_8h_a5866d6ef03c04b60bc2c65344aa8dc8babfd96339fed777bba859715de69db563}{MLX5\_CQE\_FORMAT\_HASH}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02435}02435                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cqe\_compression\_en, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02436}02436         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02437}02437 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02438}02438         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, log\_cq\_size, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa16e0c879f0d1cd513e51e150124b72d}{log\_rq\_size}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02439}02439 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02440}02440         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_af020d09ecf766e907d6d3e122d7ba865}{rx\_cq\_moderation\_mode}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02441}02441         \textcolor{keywordflow}{case} 0:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02442}02442                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a056f68acd74d63d5fef34195748043e4}{rx\_cq\_moderation\_usec}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02443}02443                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_max\_count, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1328f069cf9a4feadc284cdc779cc733}{rx\_cq\_moderation\_pkts}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02444}02444                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa8839b85465dabdf508d45435bead71d7}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02445}02445                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02446}02446         \textcolor{keywordflow}{case} 1:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02447}02447                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a056f68acd74d63d5fef34195748043e4}{rx\_cq\_moderation\_usec}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02448}02448                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_max\_count, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1328f069cf9a4feadc284cdc779cc733}{rx\_cq\_moderation\_pkts}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02449}02449                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, cq\_period\_start\_from\_cqe))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02450}02450                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa6c300faab962a9707d928be6e5feadb3}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_CQE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02451}02451                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02452}02452                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa8839b85465dabdf508d45435bead71d7}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02453}02453                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02454}02454         \textcolor{keywordflow}{case} 2:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02455}02455                 \mbox{\hyperlink{mlx5__en__main_8c_a9edb2abe89ae025f7ba39c9eec48b11e}{mlx5e\_get\_default\_profile}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, NET\_DIM\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE, \&curr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02456}02456                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period, curr.usec);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02457}02457                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_max\_count, curr.pkts);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02458}02458                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa8839b85465dabdf508d45435bead71d7}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02459}02459                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02460}02460         \textcolor{keywordflow}{case} 3:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02461}02461                 \mbox{\hyperlink{mlx5__en__main_8c_a9edb2abe89ae025f7ba39c9eec48b11e}{mlx5e\_get\_default\_profile}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, NET\_DIM\_CQ\_PERIOD\_MODE\_START\_FROM\_CQE, \&curr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02462}02462                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period, curr.usec);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02463}02463                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_max\_count, curr.pkts);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02464}02464                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, cq\_period\_start\_from\_cqe))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02465}02465                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa6c300faab962a9707d928be6e5feadb3}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_CQE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02466}02466                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02467}02467                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa8839b85465dabdf508d45435bead71d7}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02468}02468                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02469}02469         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02470}02470                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02471}02471         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02472}02472 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02473}02473         \mbox{\hyperlink{en_8h_a95998bb92abba52555765d9966ac4d9b}{mlx5e\_dim\_build\_cq\_param}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, param);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02474}02474 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02475}02475         \mbox{\hyperlink{mlx5__en__main_8c_a70fdc0f9b8f11a443da96a75b76919b6}{mlx5e\_build\_common\_cq\_param}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, param);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02476}02476 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02477}02477 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02478}02478 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02479}\mbox{\hyperlink{mlx5__en__main_8c_a2c264ba31a618309fec54e5e83089f05}{02479}} \mbox{\hyperlink{mlx5__en__main_8c_a2c264ba31a618309fec54e5e83089f05}{mlx5e\_build\_tx\_cq\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02480}02480     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__cq__param}{mlx5e\_cq\_param}} *param)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02481}02481 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02482}02482         \textcolor{keywordtype}{void} *cqc = param-\/>\mbox{\hyperlink{structmlx5e__cq__param_a782cd16b0ff40eba8cfc7ec417b2798f}{cqc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02483}02483 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02484}02484         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, log\_cq\_size, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ab8aafaea26efc93829bac5f899717442}{log\_sq\_size}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02485}02485         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a6fd8c908eee433ab1844a32e1d7f011c}{tx\_cq\_moderation\_usec}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02486}02486         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_max\_count, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a4d456927e29dc7a2628f01730fae8d4d}{tx\_cq\_moderation\_pkts}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02487}02487 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02488}02488         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad833f0d4fc4e278cd5bfa0888a3afb6d}{tx\_cq\_moderation\_mode}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02489}02489         \textcolor{keywordflow}{case} 0:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02490}02490                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa8839b85465dabdf508d45435bead71d7}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02491}02491                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02492}02492         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02493}02493                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, cq\_period\_start\_from\_cqe))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02494}02494                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa6c300faab962a9707d928be6e5feadb3}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_CQE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02495}02495                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02496}02496                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(cqc, cqc, cq\_period\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa8839b85465dabdf508d45435bead71d7}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02497}02497                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02498}02498         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02499}02499 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02500}02500         \mbox{\hyperlink{mlx5__en__main_8c_a70fdc0f9b8f11a443da96a75b76919b6}{mlx5e\_build\_common\_cq\_param}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, param);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02501}02501 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02502}02502 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02503}02503 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02504}\mbox{\hyperlink{mlx5__en__main_8c_aacd53bea4be0773f1024f9cda5bd4f00}{02504}} \mbox{\hyperlink{mlx5__en__main_8c_aacd53bea4be0773f1024f9cda5bd4f00}{mlx5e\_build\_channel\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02505}02505     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel__param}{mlx5e\_channel\_param}} *cparam)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02506}02506 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02507}02507         memset(cparam, 0, \textcolor{keyword}{sizeof}(*cparam));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02508}02508 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02509}02509         \mbox{\hyperlink{mlx5__en__main_8c_a2a9d0cb9d3045bf012378fdb8eb7c6f9}{mlx5e\_build\_rq\_param}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_a9a26c28b1c80c0bcc645368c2c33f45e}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02510}02510         \mbox{\hyperlink{mlx5__en__main_8c_acf6c63eba62a37992414df4ce18385f9}{mlx5e\_build\_sq\_param}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_a56e8907c1c3b1962980249fd9893a92e}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02511}02511         \mbox{\hyperlink{mlx5__en__main_8c_ae4f6dcaad5815b15a6bb057ffce4a908}{mlx5e\_build\_rx\_cq\_param}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_ad5f4d3460e84e5a6b0c6ab27804c19ae}{rx\_cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02512}02512         \mbox{\hyperlink{mlx5__en__main_8c_a2c264ba31a618309fec54e5e83089f05}{mlx5e\_build\_tx\_cq\_param}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&cparam-\/>\mbox{\hyperlink{structmlx5e__channel__param_a71ff12b89cf2a03fe29b83ce24f543b4}{tx\_cq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02513}02513 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02514}02514 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02515}02515 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02516}\mbox{\hyperlink{mlx5__en__main_8c_aa7979952cbeb9d0af58af5e4781e03a6}{02516}} \mbox{\hyperlink{mlx5__en__main_8c_aa7979952cbeb9d0af58af5e4781e03a6}{mlx5e\_open\_channels}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02517}02517 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02518}02518         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel__param}{mlx5e\_channel\_param}} *cparam;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02519}02519         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02520}02520         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02521}02521         \textcolor{keywordtype}{int} j;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02522}02522 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02523}02523         cparam = malloc(\textcolor{keyword}{sizeof}(*cparam), M\_MLX5EN, M\_WAITOK);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02524}02524 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02525}02525         \mbox{\hyperlink{mlx5__en__main_8c_aacd53bea4be0773f1024f9cda5bd4f00}{mlx5e\_build\_channel\_param}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, cparam);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02526}02526         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02527}02527                 err = \mbox{\hyperlink{mlx5__en__main_8c_a9adb20047a3c04418615444507e2248f}{mlx5e\_open\_channel}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, cparam, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02528}02528                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02529}02529                         \textcolor{keywordflow}{goto} err\_close\_channels;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02530}02530 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02531}02531                 \textcolor{comment}{/* Bind interrupt vectors, if any. */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02532}02532                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.irq\_cpu\_base > -\/1) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02533}02533                         cpuset\_t cpuset;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02534}02534                         \textcolor{keywordtype}{int} cpu;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02535}02535                         \textcolor{keywordtype}{int} irq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02536}02536                         \textcolor{keywordtype}{int} eqn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02537}02537                         \textcolor{keywordtype}{int} nirq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02538}02538 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02539}02539                         err = \mbox{\hyperlink{driver_8h_aeaccd90e6d73c5463f84985214248baa}{mlx5\_vector2eqn}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, i,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02540}02540                             \&eqn, \&nirq);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02541}02541 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02542}02542                         \textcolor{comment}{/* error here is non-\/fatal */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02543}02543                         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02544}02544                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02545}02545 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02546}02546                         irq = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a8be22ab92b25f4d7ce05c1a21cba2643}{msix\_arr}}[nirq].vector;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02547}02547                         cpu = (unsigned)(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.irq\_cpu\_base +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02548}02548                             i * \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.irq\_cpu\_stride) \% (unsigned)mp\_ncpus;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02549}02549 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02550}02550                         CPU\_ZERO(\&cpuset);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02551}02551                         CPU\_SET(cpu, \&cpuset);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02552}02552                         intr\_setaffinity(irq, CPU\_WHICH\_INTRHANDLER, \&cpuset);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02553}02553                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02554}02554         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02555}02555 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02556}02556         \textcolor{keywordflow}{for} (j = 0; j < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}; j++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02557}02557                 err = \mbox{\hyperlink{mlx5__en__main_8c_a3c257c1ee04cae9d50c3b5eeb95d28c9}{mlx5e\_wait\_for\_min\_rx\_wqes}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[j].\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02558}02558                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02559}02559                         \textcolor{keywordflow}{goto} err\_close\_channels;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02560}02560         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02561}02561         free(cparam, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02562}02562         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02563}02563 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02564}02564 err\_close\_channels:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02565}02565         \textcolor{keywordflow}{while} (i-\/-\/) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02566}02566                 \mbox{\hyperlink{mlx5__en__main_8c_ab89da27cbf9fc3c4e29902e63ee71928}{mlx5e\_close\_channel}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02567}02567                 \mbox{\hyperlink{mlx5__en__main_8c_abb12aba3b076d2a95866e284ffe29c47}{mlx5e\_close\_channel\_wait}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02568}02568         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02569}02569         free(cparam, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02570}02570         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02571}02571 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02572}02572 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02573}02573 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02574}\mbox{\hyperlink{mlx5__en__main_8c_a731dfc9573336ffd8dcfd2902a16f807}{02574}} \mbox{\hyperlink{mlx5__en__main_8c_a731dfc9573336ffd8dcfd2902a16f807}{mlx5e\_close\_channels}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02575}02575 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02576}02576         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02577}02577 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02578}02578         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02579}02579                 \mbox{\hyperlink{mlx5__en__main_8c_ab89da27cbf9fc3c4e29902e63ee71928}{mlx5e\_close\_channel}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02580}02580         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02581}02581                 \mbox{\hyperlink{mlx5__en__main_8c_abb12aba3b076d2a95866e284ffe29c47}{mlx5e\_close\_channel\_wait}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02582}02582 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02583}02583 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02584}02584 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02585}\mbox{\hyperlink{mlx5__en__main_8c_a8817e435fc5476b626468c3430d2c69e}{02585}} \mbox{\hyperlink{mlx5__en__main_8c_a8817e435fc5476b626468c3430d2c69e}{mlx5e\_refresh\_sq\_params}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02586}02586 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02587}02587 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02588}02588         \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, cq\_period\_mode\_modify)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02589}02589                 uint8\_t cq\_mode;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02590}02590 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02591}02591                 \textcolor{keywordflow}{switch} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad833f0d4fc4e278cd5bfa0888a3afb6d}{tx\_cq\_moderation\_mode}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02592}02592                 \textcolor{keywordflow}{case} 0:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02593}02593                 \textcolor{keywordflow}{case} 2:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02594}02594                         cq\_mode = \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa8839b85465dabdf508d45435bead71d7}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02595}02595                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02596}02596                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02597}02597                         cq\_mode = \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa6c300faab962a9707d928be6e5feadb3}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_CQE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02598}02598                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02599}02599                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02600}02600 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02601}02601                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{cq_8h_aacab8774d8950ce5e4f199aa7c343ea4}{mlx5\_core\_modify\_cq\_moderation\_mode}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02602}02602                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a6fd8c908eee433ab1844a32e1d7f011c}{tx\_cq\_moderation\_usec}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02603}02603                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a4d456927e29dc7a2628f01730fae8d4d}{tx\_cq\_moderation\_pkts}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02604}02604                     cq\_mode));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02605}02605         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02606}02606 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02607}02607         \textcolor{keywordflow}{return} (\mbox{\hyperlink{cq_8h_af35b8c739c52933c447ea25a9e0532d6}{mlx5\_core\_modify\_cq\_moderation}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_af0fd03756e5c60d867c60bd7a12ed871}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02608}02608             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a6fd8c908eee433ab1844a32e1d7f011c}{tx\_cq\_moderation\_usec}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02609}02609             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a4d456927e29dc7a2628f01730fae8d4d}{tx\_cq\_moderation\_pkts}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02610}02610 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02611}02611 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02612}02612 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02613}\mbox{\hyperlink{mlx5__en__main_8c_a43d6ff1dc1c0fa06f6565713112c27fd}{02613}} \mbox{\hyperlink{mlx5__en__main_8c_a43d6ff1dc1c0fa06f6565713112c27fd}{mlx5e\_refresh\_rq\_params}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02614}02614 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02615}02615 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02616}02616         \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, cq\_period\_mode\_modify)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02617}02617                 uint8\_t cq\_mode;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02618}02618                 uint8\_t dim\_mode;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02619}02619                 \textcolor{keywordtype}{int} retval;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02620}02620 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02621}02621                 \textcolor{keywordflow}{switch} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_af020d09ecf766e907d6d3e122d7ba865}{rx\_cq\_moderation\_mode}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02622}02622                 \textcolor{keywordflow}{case} 0:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02623}02623                 \textcolor{keywordflow}{case} 2:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02624}02624                         cq\_mode = \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa8839b85465dabdf508d45435bead71d7}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02625}02625                         dim\_mode = NET\_DIM\_CQ\_PERIOD\_MODE\_START\_FROM\_EQE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02626}02626                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02627}02627                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02628}02628                         cq\_mode = \mbox{\hyperlink{mlx5__ifc_8h_a191c33aa19f004f13bed2b7be33756caa6c300faab962a9707d928be6e5feadb3}{MLX5\_CQ\_PERIOD\_MODE\_START\_FROM\_CQE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02629}02629                         dim\_mode = NET\_DIM\_CQ\_PERIOD\_MODE\_START\_FROM\_CQE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02630}02630                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02631}02631                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02632}02632 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02633}02633                 \textcolor{comment}{/* tear down dynamic interrupt moderation */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02634}02634                 mtx\_lock(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02635}02635                 \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.mode = NET\_DIM\_CQ\_PERIOD\_MODE\_DISABLED;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02636}02636                 mtx\_unlock(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02637}02637 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02638}02638                 \textcolor{comment}{/* wait for dynamic interrupt moderation work task, if any */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02639}02639                 cancel\_work\_sync(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.work);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02640}02640 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02641}02641                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_af020d09ecf766e907d6d3e122d7ba865}{rx\_cq\_moderation\_mode}} >= 2) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02642}02642                         \textcolor{keyword}{struct }net\_dim\_cq\_moder curr;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02643}02643 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02644}02644                         \mbox{\hyperlink{mlx5__en__main_8c_a9edb2abe89ae025f7ba39c9eec48b11e}{mlx5e\_get\_default\_profile}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, dim\_mode, \&curr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02645}02645 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02646}02646                         retval = \mbox{\hyperlink{cq_8h_aacab8774d8950ce5e4f199aa7c343ea4}{mlx5\_core\_modify\_cq\_moderation\_mode}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02647}02647                             curr.usec, curr.pkts, cq\_mode);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02648}02648 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02649}02649                         \textcolor{comment}{/* set dynamic interrupt moderation mode and zero defaults */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02650}02650                         mtx\_lock(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02651}02651                         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.mode = dim\_mode;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02652}02652                         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.state = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02653}02653                         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aa1dea110c48ba3df5cdf1991306236bd}{dim}}.profile\_ix = \mbox{\hyperlink{en_8h_a96fca74709b2d6c6f7daa148802a12af}{MLX5E\_DIM\_DEFAULT\_PROFILE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02654}02654                         mtx\_unlock(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02655}02655                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02656}02656                         retval = \mbox{\hyperlink{cq_8h_aacab8774d8950ce5e4f199aa7c343ea4}{mlx5\_core\_modify\_cq\_moderation\_mode}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02657}02657                             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a056f68acd74d63d5fef34195748043e4}{rx\_cq\_moderation\_usec}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02658}02658                             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1328f069cf9a4feadc284cdc779cc733}{rx\_cq\_moderation\_pkts}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02659}02659                             cq\_mode);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02660}02660                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02661}02661                 \textcolor{keywordflow}{return} (retval);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02662}02662         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02663}02663 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02664}02664         \textcolor{keywordflow}{return} (\mbox{\hyperlink{cq_8h_af35b8c739c52933c447ea25a9e0532d6}{mlx5\_core\_modify\_cq\_moderation}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02665}02665             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a056f68acd74d63d5fef34195748043e4}{rx\_cq\_moderation\_usec}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02666}02666             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1328f069cf9a4feadc284cdc779cc733}{rx\_cq\_moderation\_pkts}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02667}02667 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02668}02668 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02669}02669 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02670}\mbox{\hyperlink{mlx5__en__main_8c_ac7969c6793903772cd756f40fccdd29f}{02670}} \mbox{\hyperlink{mlx5__en__main_8c_ac7969c6793903772cd756f40fccdd29f}{mlx5e\_refresh\_channel\_params\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02671}02671 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02672}02672         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02673}02673         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02674}02674 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02675}02675         err = \mbox{\hyperlink{mlx5__en__main_8c_a43d6ff1dc1c0fa06f6565713112c27fd}{mlx5e\_refresh\_rq\_params}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&c-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02676}02676         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02677}02677                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02678}02678 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02679}02679         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02680}02680                 err = \mbox{\hyperlink{mlx5__en__main_8c_a8817e435fc5476b626468c3430d2c69e}{mlx5e\_refresh\_sq\_params}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&c-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02681}02681                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02682}02682                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02683}02683         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02684}02684 done:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02685}02685         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02686}02686 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02687}02687 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02688}02688 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02689}\mbox{\hyperlink{en_8h_a63277a0576b81cf18f500ab17a6549ee}{02689}} \mbox{\hyperlink{mlx5__en__main_8c_a5276793c41b6fcf98e4e9f4d0400d80e}{mlx5e\_refresh\_channel\_params}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02690}02690 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02691}02691         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02692}02692 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02693}02693         \textcolor{comment}{/* check if channels are closed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02694}02694         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02695}02695                 \textcolor{keywordflow}{return} (EINVAL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02696}02696 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02697}02697         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02698}02698                 \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02699}02699 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02700}02700                 err = \mbox{\hyperlink{mlx5__en__main_8c_ac7969c6793903772cd756f40fccdd29f}{mlx5e\_refresh\_channel\_params\_sub}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02701}02701                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02702}02702                         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02703}02703         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02704}02704         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02705}02705 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02706}02706 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02707}02707 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02708}\mbox{\hyperlink{mlx5__en__main_8c_a696d4b9132901b9d1fd8ea270232e700}{02708}} \mbox{\hyperlink{mlx5__en__main_8c_a696d4b9132901b9d1fd8ea270232e700}{mlx5e\_open\_tis}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02709}02709 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02710}02710         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02711}02711         u32 in[\mbox{\hyperlink{device_8h_a2bdfa104f3d7c0635b984382d1562741}{MLX5\_ST\_SZ\_DW}}(create\_tis\_in)];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02712}02712         \textcolor{keywordtype}{void} *tisc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_tis\_in, in, \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02713}02713 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02714}02714         memset(in, 0, \textcolor{keyword}{sizeof}(in));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02715}02715 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02716}02716         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tisc, tisc, prio, \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02717}02717         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tisc, tisc, transport\_domain, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a8b1627033e2f64d0e3720f368a615014}{tdn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02718}02718 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02719}02719         \textcolor{keywordflow}{return} (\mbox{\hyperlink{mlx5__transobj_8c_af54739f9cb48038030be4f6d57ebd898}{mlx5\_core\_create\_tis}}(mdev, in, \textcolor{keyword}{sizeof}(in), \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5ab9e4378b947f32c2717fe2b62fdfcd}{tisn}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}]));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02720}02720 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02721}02721 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02722}02722 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02723}\mbox{\hyperlink{mlx5__en__main_8c_ab54632fa0a4ff58753be90c069b08130}{02723}} \mbox{\hyperlink{mlx5__en__main_8c_ab54632fa0a4ff58753be90c069b08130}{mlx5e\_close\_tis}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02724}02724 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02725}02725         \mbox{\hyperlink{mlx5__transobj_8c_a5ee965b5ac0bd9938614a60a7752bc77}{mlx5\_core\_destroy\_tis}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5ab9e4378b947f32c2717fe2b62fdfcd}{tisn}}[\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}], 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02726}02726 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02727}02727 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02728}02728 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02729}\mbox{\hyperlink{mlx5__en__main_8c_ade5a84a34bae559324484282bbbe57b7}{02729}} \mbox{\hyperlink{mlx5__en__main_8c_ade5a84a34bae559324484282bbbe57b7}{mlx5e\_open\_tises}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02730}02730 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02731}02731         \textcolor{keywordtype}{int} num\_tc = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02732}02732         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02733}02733         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02734}02734 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02735}02735         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} = 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} < num\_tc; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02736}02736                 err = \mbox{\hyperlink{mlx5__en__main_8c_a696d4b9132901b9d1fd8ea270232e700}{mlx5e\_open\_tis}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02737}02737                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02738}02738                         \textcolor{keywordflow}{goto} err\_close\_tises;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02739}02739         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02740}02740 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02741}02741         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02742}02742 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02743}02743 err\_close\_tises:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02744}02744         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}-\/-\/; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} >= 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}-\/-\/)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02745}02745                 \mbox{\hyperlink{mlx5__en__main_8c_ab54632fa0a4ff58753be90c069b08130}{mlx5e\_close\_tis}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02746}02746 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02747}02747         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02748}02748 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02749}02749 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02750}02750 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02751}\mbox{\hyperlink{mlx5__en__main_8c_a8811488af1ebfc1cbc40b09574b9052a}{02751}} \mbox{\hyperlink{mlx5__en__main_8c_a8811488af1ebfc1cbc40b09574b9052a}{mlx5e\_close\_tises}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02752}02752 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02753}02753         \textcolor{keywordtype}{int} num\_tc = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02754}02754         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02755}02755 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02756}02756         \textcolor{keywordflow}{for} (\mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} = 0; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}} < num\_tc; \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}}++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02757}02757                 \mbox{\hyperlink{mlx5__en__main_8c_ab54632fa0a4ff58753be90c069b08130}{mlx5e\_close\_tis}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{en_8h_a0cea5104d05c6d3949115ddd0eed432e}{tc}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02758}02758 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02759}02759 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02760}02760 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02761}\mbox{\hyperlink{mlx5__en__main_8c_a43a974d31174f910f2bb1562710326b9}{02761}} \mbox{\hyperlink{mlx5__en__main_8c_a43a974d31174f910f2bb1562710326b9}{mlx5e\_open\_default\_rqt}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u32 *prqtn, \textcolor{keywordtype}{int} sz)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02762}02762 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02763}02763         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02764}02764         \textcolor{keywordtype}{void} *rqtc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02765}02765         \textcolor{keywordtype}{int} inlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02766}02766         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02767}02767         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02768}02768 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02769}02769         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_rqt\_in) + \textcolor{keyword}{sizeof}(u32) * sz;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02770}02770         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02771}02771         \textcolor{keywordflow}{if} (in == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02772}02772                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02773}02773         rqtc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_rqt\_in, in, rqt\_context);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02774}02774 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02775}02775         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rqt\_actual\_size, sz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02776}02776         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rqt\_max\_size, sz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02777}02777 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02778}02778         \textcolor{keywordflow}{for} (i = 0; i != sz; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02779}02779                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rq\_num[i], \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a4c98635c83ffa37c2e0ac35dfe1071}{drop\_rq}}.\mbox{\hyperlink{structmlx5e__rq_ab4354012d0bb9cce73163f8e970aca21}{rqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02780}02780 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02781}02781         err = \mbox{\hyperlink{mlx5__transobj_8c_a33fd1d3e881be985ce51a06f39c3d96d}{mlx5\_core\_create\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, in, inlen, prqtn);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02782}02782         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02783}02783 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02784}02784         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02785}02785 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02786}02786 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02787}02787 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02788}\mbox{\hyperlink{mlx5__en__main_8c_ac3d66e2a3d71c875942c2af72dd24665}{02788}} \mbox{\hyperlink{mlx5__en__main_8c_ac3d66e2a3d71c875942c2af72dd24665}{mlx5e\_open\_rqts}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02789}02789 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02790}02790         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02791}02791         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02792}02792 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02793}02793         err = \mbox{\hyperlink{mlx5__en__main_8c_a43a974d31174f910f2bb1562710326b9}{mlx5e\_open\_default\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6cf3d103c4aca8d3dae0ac81ce4e6fae}{rqtn}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02794}02794             1 << \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a4bf112049d2005c1badc5579ebd35c3a}{rx\_hash\_log\_tbl\_sz}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02795}02795         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02796}02796                 \textcolor{keywordflow}{goto} err\_default;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02797}02797 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02798}02798         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02799}02799                 err = \mbox{\hyperlink{mlx5__en__main_8c_a43a974d31174f910f2bb1562710326b9}{mlx5e\_open\_default\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i].\mbox{\hyperlink{structmlx5e__channel_a49d02023d9ee43ae2d4fc8e27946e4ec}{rqtn}}, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02800}02800                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02801}02801                         \textcolor{keywordflow}{goto} err\_channel;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02802}02802         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02803}02803         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02804}02804 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02805}02805 err\_channel:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02806}02806         \textcolor{keywordflow}{while} (i-\/-\/)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02807}02807                 \mbox{\hyperlink{mlx5__transobj_8c_aa99ae2dd1efce3fbc66465e22f248361}{mlx5\_core\_destroy\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i].\mbox{\hyperlink{structmlx5e__channel_a49d02023d9ee43ae2d4fc8e27946e4ec}{rqtn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02808}02808 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02809}02809         \mbox{\hyperlink{mlx5__transobj_8c_aa99ae2dd1efce3fbc66465e22f248361}{mlx5\_core\_destroy\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6cf3d103c4aca8d3dae0ac81ce4e6fae}{rqtn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02810}02810 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02811}02811 err\_default:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02812}02812         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02813}02813 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02814}02814 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02815}02815 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02816}\mbox{\hyperlink{mlx5__en__main_8c_a64054fe26a9f5d08f21e887c4bf89a9e}{02816}} \mbox{\hyperlink{mlx5__en__main_8c_a64054fe26a9f5d08f21e887c4bf89a9e}{mlx5e\_close\_rqts}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02817}02817 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02818}02818         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02819}02819 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02820}02820         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02821}02821                 \mbox{\hyperlink{mlx5__transobj_8c_aa99ae2dd1efce3fbc66465e22f248361}{mlx5\_core\_destroy\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i].\mbox{\hyperlink{structmlx5e__channel_a49d02023d9ee43ae2d4fc8e27946e4ec}{rqtn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02822}02822 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02823}02823         \mbox{\hyperlink{mlx5__transobj_8c_aa99ae2dd1efce3fbc66465e22f248361}{mlx5\_core\_destroy\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6cf3d103c4aca8d3dae0ac81ce4e6fae}{rqtn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02824}02824 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02825}02825 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02826}02826 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02827}\mbox{\hyperlink{mlx5__en__main_8c_af5f6a80fe6a41783b5b510fe8cda621b}{02827}} \mbox{\hyperlink{mlx5__en__main_8c_af5f6a80fe6a41783b5b510fe8cda621b}{mlx5e\_activate\_rqt}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02828}02828 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02829}02829         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02830}02830         \textcolor{keywordtype}{void} *rqtc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02831}02831         \textcolor{keywordtype}{int} inlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02832}02832         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02833}02833         \textcolor{keywordtype}{int} sz;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02834}02834         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02835}02835 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02836}02836         sz = 1 << \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a4bf112049d2005c1badc5579ebd35c3a}{rx\_hash\_log\_tbl\_sz}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02837}02837 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02838}02838         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(modify\_rqt\_in) + \textcolor{keyword}{sizeof}(u32) * sz;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02839}02839         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02840}02840         \textcolor{keywordflow}{if} (in == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02841}02841                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02842}02842 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02843}02843         rqtc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(modify\_rqt\_in, in, \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02844}02844 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02845}02845         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rqt\_actual\_size, sz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02846}02846         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(modify\_rqt\_in, in, bitmask.rqn\_list, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02847}02847 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02848}02848         \textcolor{keywordflow}{for} (i = 0; i != sz; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02849}02849                 \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02850}02850 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02851}02851                 \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = rss\_get\_indirection\_to\_bucket(i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02852}02852 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02853}02853                 \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02854}02854 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02855}02855                 \textcolor{comment}{/* ensure we don't overflow */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02856}02856                 \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} \%= \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02857}02857 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02858}02858                 \textcolor{comment}{/* apply receive side scaling stride, if any */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02859}02859                 \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/= \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} \% (int)\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aab9a785a3a34a28b13e0aa906dcd1de9}{channels\_rsss}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02860}02860 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02861}02861                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rq\_num[i], \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[\mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}}].\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_ab4354012d0bb9cce73163f8e970aca21}{rqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02862}02862         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02863}02863 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02864}02864         err = \mbox{\hyperlink{mlx5__transobj_8c_acef2951165e88fac0ce98858958d1ab2}{mlx5\_core\_modify\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6cf3d103c4aca8d3dae0ac81ce4e6fae}{rqtn}}, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02865}02865         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02866}02866                 \textcolor{keywordflow}{goto} err\_modify;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02867}02867 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02868}02868         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(modify\_rqt\_in) + \textcolor{keyword}{sizeof}(u32);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02869}02869 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02870}02870         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rqt\_actual\_size, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02871}02871 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02872}02872         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02873}02873                 \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02874}02874 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02875}02875                 \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = rss\_get\_indirection\_to\_bucket(i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02876}02876 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02877}02877                 \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02878}02878 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02879}02879                 \textcolor{comment}{/* ensure we don't overflow */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02880}02880                 \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} \%= \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02881}02881 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02882}02882                 \textcolor{comment}{/* apply receive side scaling stride, if any */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02883}02883                 \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/= \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} \% (int)\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aab9a785a3a34a28b13e0aa906dcd1de9}{channels\_rsss}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02884}02884 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02885}02885                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rq\_num[0], \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[\mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}}].\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}}.\mbox{\hyperlink{structmlx5e__rq_ab4354012d0bb9cce73163f8e970aca21}{rqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02886}02886 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02887}02887                 err = \mbox{\hyperlink{mlx5__transobj_8c_acef2951165e88fac0ce98858958d1ab2}{mlx5\_core\_modify\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i].\mbox{\hyperlink{structmlx5e__channel_a49d02023d9ee43ae2d4fc8e27946e4ec}{rqtn}}, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02888}02888                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02889}02889                         \textcolor{keywordflow}{goto} err\_modify;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02890}02890         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02891}02891 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02892}02892 err\_modify:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02893}02893         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02894}02894         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02895}02895 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02896}02896 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02897}02897 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02898}\mbox{\hyperlink{mlx5__en__main_8c_a0d74fc56932f14265055b37d2c00de45}{02898}} \mbox{\hyperlink{mlx5__en__main_8c_a0d74fc56932f14265055b37d2c00de45}{mlx5e\_deactivate\_rqt}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02899}02899 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02900}02900         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02901}02901         \textcolor{keywordtype}{void} *rqtc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02902}02902         \textcolor{keywordtype}{int} inlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02903}02903         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02904}02904         \textcolor{keywordtype}{int} sz;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02905}02905         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02906}02906 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02907}02907         sz = 1 << \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a4bf112049d2005c1badc5579ebd35c3a}{rx\_hash\_log\_tbl\_sz}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02908}02908 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02909}02909         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(modify\_rqt\_in) + \textcolor{keyword}{sizeof}(u32) * sz;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02910}02910         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02911}02911         \textcolor{keywordflow}{if} (in == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02912}02912                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02913}02913 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02914}02914         rqtc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(modify\_rqt\_in, in, \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02915}02915 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02916}02916         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rqt\_actual\_size, sz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02917}02917         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(modify\_rqt\_in, in, bitmask.rqn\_list, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02918}02918 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02919}02919         \textcolor{keywordflow}{for} (i = 0; i != sz; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02920}02920                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rq\_num[i], \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a4c98635c83ffa37c2e0ac35dfe1071}{drop\_rq}}.\mbox{\hyperlink{structmlx5e__rq_ab4354012d0bb9cce73163f8e970aca21}{rqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02921}02921 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02922}02922         err = \mbox{\hyperlink{mlx5__transobj_8c_acef2951165e88fac0ce98858958d1ab2}{mlx5\_core\_modify\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6cf3d103c4aca8d3dae0ac81ce4e6fae}{rqtn}}, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02923}02923         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02924}02924                 \textcolor{keywordflow}{goto} err\_modify;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02925}02925 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02926}02926         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(modify\_rqt\_in) + \textcolor{keyword}{sizeof}(u32);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02927}02927 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02928}02928         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rqt\_actual\_size, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02929}02929 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02930}02930         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02931}02931                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rqtc, rqtc, rq\_num[0], \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a4c98635c83ffa37c2e0ac35dfe1071}{drop\_rq}}.\mbox{\hyperlink{structmlx5e__rq_ab4354012d0bb9cce73163f8e970aca21}{rqn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02932}02932 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02933}02933                 err = \mbox{\hyperlink{mlx5__transobj_8c_acef2951165e88fac0ce98858958d1ab2}{mlx5\_core\_modify\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i].\mbox{\hyperlink{structmlx5e__channel_a49d02023d9ee43ae2d4fc8e27946e4ec}{rqtn}}, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02934}02934                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02935}02935                         \textcolor{keywordflow}{goto} err\_modify;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02936}02936         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02937}02937 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02938}02938 err\_modify:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02939}02939         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02940}02940         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02941}02941 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02942}02942 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02943}\mbox{\hyperlink{mlx5__en__main_8c_a3edab55c3eabf1e4531671625700cb7a}{02943}} \textcolor{preprocessor}{\#define MLX5E\_RSS\_KEY\_SIZE (10 * 4)     }\textcolor{comment}{/* bytes */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02944}02944 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02945}02945 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02946}\mbox{\hyperlink{mlx5__en__main_8c_add5240fbd45438b7ee5de3be4bae0b94}{02946}} \mbox{\hyperlink{mlx5__en__main_8c_add5240fbd45438b7ee5de3be4bae0b94}{mlx5e\_get\_rss\_key}}(\textcolor{keywordtype}{void} *key\_ptr)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02947}02947 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02948}02948 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02949}02949         rss\_getkey(key\_ptr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02950}02950 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02951}02951         \textcolor{keyword}{static} \textcolor{keyword}{const} u32 rsskey[] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02952}02952             cpu\_to\_be32(0xD181C62C),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02953}02953             cpu\_to\_be32(0xF7F4DB5B),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02954}02954             cpu\_to\_be32(0x1983A2FC),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02955}02955             cpu\_to\_be32(0x943E1ADB),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02956}02956             cpu\_to\_be32(0xD9389E6B),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02957}02957             cpu\_to\_be32(0xD1039C2C),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02958}02958             cpu\_to\_be32(0xA74499AD),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02959}02959             cpu\_to\_be32(0x593D56D9),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02960}02960             cpu\_to\_be32(0xF3253C06),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02961}02961             cpu\_to\_be32(0x2ADC1FFC),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02962}02962         \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02963}02963         \mbox{\hyperlink{device_8h_a304bfae1ba4b2b82404598b5304e1f1f}{CTASSERT}}(\textcolor{keyword}{sizeof}(rsskey) == \mbox{\hyperlink{mlx5__en__main_8c_a3edab55c3eabf1e4531671625700cb7a}{MLX5E\_RSS\_KEY\_SIZE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02964}02964         memcpy(key\_ptr, rsskey, \mbox{\hyperlink{mlx5__en__main_8c_a3edab55c3eabf1e4531671625700cb7a}{MLX5E\_RSS\_KEY\_SIZE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02965}02965 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02966}02966 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02967}02967 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02968}02968 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02969}\mbox{\hyperlink{mlx5__en__main_8c_abef26daaaee8aedc665099d2a85bd079}{02969}} \mbox{\hyperlink{mlx5__en__main_8c_abef26daaaee8aedc665099d2a85bd079}{mlx5e\_build\_tir\_ctx}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u32 * tirc, \textcolor{keywordtype}{int} tt, \textcolor{keywordtype}{bool} inner\_vxlan)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02970}02970 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02971}02971         \textcolor{keywordtype}{void} *hfso = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(tirc, tirc, rx\_hash\_field\_selector\_outer);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02972}02972         \textcolor{keywordtype}{void} *hfsi = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(tirc, tirc, rx\_hash\_field\_selector\_inner);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02973}02973         \textcolor{keywordtype}{void} *hfs = inner\_vxlan ? hfsi : hfso;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02974}02974         \_\_be32 *hkey;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02975}02975 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02976}02976         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, transport\_domain, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a8b1627033e2f64d0e3720f368a615014}{tdn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02977}02977 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02978}02978 \textcolor{preprocessor}{\#define ROUGH\_MAX\_L2\_L3\_HDR\_SZ 256}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02979}02979 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02980}02980 \textcolor{preprocessor}{\#define MLX5\_HASH\_IP     (MLX5\_HASH\_FIELD\_SEL\_SRC\_IP   |\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02981}02981 \textcolor{preprocessor}{                          MLX5\_HASH\_FIELD\_SEL\_DST\_IP)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02982}02982 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02983}02983 \textcolor{preprocessor}{\#define MLX5\_HASH\_ALL    (MLX5\_HASH\_FIELD\_SEL\_SRC\_IP   |\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02984}02984 \textcolor{preprocessor}{                          MLX5\_HASH\_FIELD\_SEL\_DST\_IP   |\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02985}02985 \textcolor{preprocessor}{                          MLX5\_HASH\_FIELD\_SEL\_L4\_SPORT |\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02986}02986 \textcolor{preprocessor}{                          MLX5\_HASH\_FIELD\_SEL\_L4\_DPORT)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02987}02987 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02988}02988 \textcolor{preprocessor}{\#define MLX5\_HASH\_IP\_IPSEC\_SPI  (MLX5\_HASH\_FIELD\_SEL\_SRC\_IP   |\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02989}02989 \textcolor{preprocessor}{                                 MLX5\_HASH\_FIELD\_SEL\_DST\_IP   |\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02990}02990 \textcolor{preprocessor}{                                 MLX5\_HASH\_FIELD\_SEL\_IPSEC\_SPI)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02991}02991 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02992}02992         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a38dfd7126e601a9dba0ec254cde85133}{hw\_lro\_en}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02993}02993                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, lro\_enable\_mask,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02994}02994                     \mbox{\hyperlink{mlx5__ifc_8h_a0fa6e789ab8d8c920f2104ee8c183196a7012923c1a1e7a6f5e5546bb0547a7b2}{MLX5\_TIRC\_LRO\_ENABLE\_MASK\_IPV4\_LRO}} |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02995}02995                     \mbox{\hyperlink{mlx5__ifc_8h_a0fa6e789ab8d8c920f2104ee8c183196a0f3c7aedfa93b5f7c098f43478da9076}{MLX5\_TIRC\_LRO\_ENABLE\_MASK\_IPV6\_LRO}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02996}02996                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, lro\_max\_msg\_sz,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02997}02997                     (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a7df37d728587b7dd77d578816c33b483}{lro\_wqe\_sz}} -\/}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02998}02998                     \mbox{\hyperlink{mlx5__en__main_8c_a06098b2cc2dd8ee0b7e35927f4932bd4}{ROUGH\_MAX\_L2\_L3\_HDR\_SZ}}) >> 8);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l02999}02999                 \textcolor{comment}{/* TODO: add the option to choose timer value dynamically */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03000}03000                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, lro\_timeout\_period\_usecs,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03001}03001                     \mbox{\hyperlink{device_8h_acbb8e62a681f9f153484fc18bbfa0cfe}{MLX5\_CAP\_ETH}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03002}03002                     lro\_timer\_supported\_periods[2]));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03003}03003         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03004}03004 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03005}03005         \textcolor{keywordflow}{if} (inner\_vxlan)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03006}03006                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, tunneled\_offload\_en, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03007}03007 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03008}03008         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03009}03009 \textcolor{comment}{         * All packets must go through the indirection table, RQT,}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03010}03010 \textcolor{comment}{         * because it is not possible to modify the RQN of the TIR}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03011}03011 \textcolor{comment}{         * for direct dispatchment after it is created, typically}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03012}03012 \textcolor{comment}{         * when the link goes up and down.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03013}03013 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03014}03014         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, disp\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03015}03015             \mbox{\hyperlink{mlx5__ifc_8h_ae7c221b877c671251f317a43dbea2583a6a81ec6f28aa701f39ee10e3cc712c35}{MLX5\_TIRC\_DISP\_TYPE\_INDIRECT}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03016}03016         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, indirect\_table,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03017}03017             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6cf3d103c4aca8d3dae0ac81ce4e6fae}{rqtn}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03018}03018         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, rx\_hash\_fn,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03019}03019                  \mbox{\hyperlink{mlx5__ifc_8h_a6d8d14defa336cd0180dccd1e0170dd5ae3dac42b32a4430de9869c5bc0ed2b50}{MLX5\_TIRC\_RX\_HASH\_FN\_HASH\_TOEPLITZ}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03020}03020         hkey = (\_\_be32 *) \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(tirc, tirc, rx\_hash\_toeplitz\_key);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03021}03021 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03022}03022         \mbox{\hyperlink{device_8h_a304bfae1ba4b2b82404598b5304e1f1f}{CTASSERT}}(\mbox{\hyperlink{device_8h_aaf5b7017c184daa12a71900facaf9b93}{MLX5\_FLD\_SZ\_BYTES}}(tirc, rx\_hash\_toeplitz\_key) >=}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03023}03023                  \mbox{\hyperlink{mlx5__en__main_8c_a3edab55c3eabf1e4531671625700cb7a}{MLX5E\_RSS\_KEY\_SIZE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03024}03024 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03025}03025         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03026}03026 \textcolor{comment}{         * The FreeBSD RSS implementation does currently not}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03027}03027 \textcolor{comment}{         * support symmetric Toeplitz hashes:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03028}03028 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03029}03029         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, rx\_hash\_symmetric, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03030}03030 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03031}03031         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(tirc, tirc, rx\_hash\_symmetric, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03032}03032 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03033}03033         \mbox{\hyperlink{mlx5__en__main_8c_add5240fbd45438b7ee5de3be4bae0b94}{mlx5e\_get\_rss\_key}}(hkey);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03034}03034 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03035}03035         \textcolor{keywordflow}{switch} (tt) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03036}03036         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03037}03037                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03038}03038                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a8eec611a7adf2fe4f168444b8e335445}{MLX5\_L3\_PROT\_TYPE\_IPV4}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03039}03039                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l4\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03040}03040                     \mbox{\hyperlink{device_8h_a7cc2e4244ca368f68e5746185eda6c4aaee51ad497d027feae70b88fd2d399ab3}{MLX5\_L4\_PROT\_TYPE\_TCP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03041}03041 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03042}03042                 \textcolor{keywordflow}{if} (!(rss\_gethashconfig() \& RSS\_HASHTYPE\_RSS\_TCP\_IPV4)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03043}03043                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03044}03044                             \mbox{\hyperlink{mlx5__en__main_8c_a45c29b3ae970289eb347b6e8d96de3fe}{MLX5\_HASH\_IP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03045}03045                 \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03046}03046 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03047}03047                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03048}03048                     \mbox{\hyperlink{mlx5__en__main_8c_a3c0074729cd5a0b0d482923344959059}{MLX5\_HASH\_ALL}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03049}03049                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03050}03050 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03051}03051         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03052}03052                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03053}03053                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a9bf0785174812df0842aeae09ca4ef11}{MLX5\_L3\_PROT\_TYPE\_IPV6}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03054}03054                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l4\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03055}03055                     \mbox{\hyperlink{device_8h_a7cc2e4244ca368f68e5746185eda6c4aaee51ad497d027feae70b88fd2d399ab3}{MLX5\_L4\_PROT\_TYPE\_TCP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03056}03056 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03057}03057                 \textcolor{keywordflow}{if} (!(rss\_gethashconfig() \& RSS\_HASHTYPE\_RSS\_TCP\_IPV6)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03058}03058                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03059}03059                             \mbox{\hyperlink{mlx5__en__main_8c_a45c29b3ae970289eb347b6e8d96de3fe}{MLX5\_HASH\_IP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03060}03060                 \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03061}03061 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03062}03062                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03063}03063                     \mbox{\hyperlink{mlx5__en__main_8c_a3c0074729cd5a0b0d482923344959059}{MLX5\_HASH\_ALL}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03064}03064                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03065}03065 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03066}03066         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03067}03067                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03068}03068                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a8eec611a7adf2fe4f168444b8e335445}{MLX5\_L3\_PROT\_TYPE\_IPV4}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03069}03069                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l4\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03070}03070                     \mbox{\hyperlink{device_8h_a7cc2e4244ca368f68e5746185eda6c4aa68f2f678a5afdc0c2ea07cb0946d80b5}{MLX5\_L4\_PROT\_TYPE\_UDP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03071}03071 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03072}03072                 \textcolor{keywordflow}{if} (!(rss\_gethashconfig() \& RSS\_HASHTYPE\_RSS\_UDP\_IPV4)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03073}03073                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03074}03074                             \mbox{\hyperlink{mlx5__en__main_8c_a45c29b3ae970289eb347b6e8d96de3fe}{MLX5\_HASH\_IP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03075}03075                 \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03076}03076 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03077}03077                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03078}03078                     \mbox{\hyperlink{mlx5__en__main_8c_a3c0074729cd5a0b0d482923344959059}{MLX5\_HASH\_ALL}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03079}03079                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03080}03080 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03081}03081         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03082}03082                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03083}03083                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a9bf0785174812df0842aeae09ca4ef11}{MLX5\_L3\_PROT\_TYPE\_IPV6}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03084}03084                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l4\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03085}03085                     \mbox{\hyperlink{device_8h_a7cc2e4244ca368f68e5746185eda6c4aa68f2f678a5afdc0c2ea07cb0946d80b5}{MLX5\_L4\_PROT\_TYPE\_UDP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03086}03086 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03087}03087                 \textcolor{keywordflow}{if} (!(rss\_gethashconfig() \& RSS\_HASHTYPE\_RSS\_UDP\_IPV6)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03088}03088                         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03089}03089                             \mbox{\hyperlink{mlx5__en__main_8c_a45c29b3ae970289eb347b6e8d96de3fe}{MLX5\_HASH\_IP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03090}03090                 \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03091}03091 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03092}03092                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03093}03093                     \mbox{\hyperlink{mlx5__en__main_8c_a3c0074729cd5a0b0d482923344959059}{MLX5\_HASH\_ALL}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03094}03094                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03095}03095 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03096}03096         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03097}03097                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03098}03098                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a8eec611a7adf2fe4f168444b8e335445}{MLX5\_L3\_PROT\_TYPE\_IPV4}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03099}03099                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03100}03100                     \mbox{\hyperlink{mlx5__en__main_8c_a296d80e61c3e68035e3d8698da977cce}{MLX5\_HASH\_IP\_IPSEC\_SPI}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03101}03101                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03102}03102 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03103}03103         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03104}03104                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03105}03105                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a9bf0785174812df0842aeae09ca4ef11}{MLX5\_L3\_PROT\_TYPE\_IPV6}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03106}03106                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03107}03107                     \mbox{\hyperlink{mlx5__en__main_8c_a296d80e61c3e68035e3d8698da977cce}{MLX5\_HASH\_IP\_IPSEC\_SPI}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03108}03108                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03109}03109 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03110}03110         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03111}03111                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03112}03112                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a8eec611a7adf2fe4f168444b8e335445}{MLX5\_L3\_PROT\_TYPE\_IPV4}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03113}03113                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03114}03114                     \mbox{\hyperlink{mlx5__en__main_8c_a296d80e61c3e68035e3d8698da977cce}{MLX5\_HASH\_IP\_IPSEC\_SPI}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03115}03115                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03116}03116 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03117}03117         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03118}03118                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03119}03119                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a9bf0785174812df0842aeae09ca4ef11}{MLX5\_L3\_PROT\_TYPE\_IPV6}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03120}03120                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03121}03121                     \mbox{\hyperlink{mlx5__en__main_8c_a296d80e61c3e68035e3d8698da977cce}{MLX5\_HASH\_IP\_IPSEC\_SPI}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03122}03122                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03123}03123 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03124}03124         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03125}03125                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03126}03126                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a8eec611a7adf2fe4f168444b8e335445}{MLX5\_L3\_PROT\_TYPE\_IPV4}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03127}03127                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03128}03128                     \mbox{\hyperlink{mlx5__en__main_8c_a45c29b3ae970289eb347b6e8d96de3fe}{MLX5\_HASH\_IP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03129}03129                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03130}03130 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03131}03131         \textcolor{keywordflow}{case} \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03132}03132                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, l3\_prot\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03133}03133                     \mbox{\hyperlink{device_8h_afccd240f973cf154952fb917c9209719a9bf0785174812df0842aeae09ca4ef11}{MLX5\_L3\_PROT\_TYPE\_IPV6}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03134}03134                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(rx\_hash\_field\_select, hfs, selected\_fields,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03135}03135                     \mbox{\hyperlink{mlx5__en__main_8c_a45c29b3ae970289eb347b6e8d96de3fe}{MLX5\_HASH\_IP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03136}03136                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03137}03137 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03138}03138         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03139}03139                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03140}03140         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03141}03141 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03142}03142 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03143}03143 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03144}\mbox{\hyperlink{mlx5__en__main_8c_ab5632ac7da54d57806d6706a897060f1}{03144}} \mbox{\hyperlink{mlx5__en__main_8c_ab5632ac7da54d57806d6706a897060f1}{mlx5e\_open\_tir}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{int} tt, \textcolor{keywordtype}{bool} inner\_vxlan)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03145}03145 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03146}03146         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03147}03147         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03148}03148         \textcolor{keywordtype}{void} *tirc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03149}03149         \textcolor{keywordtype}{int} inlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03150}03150         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03151}03151 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03152}03152         inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_tir\_in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03153}03153         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03154}03154         \textcolor{keywordflow}{if} (in == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03155}03155                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03156}03156         tirc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_tir\_in, in, tir\_context);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03157}03157 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03158}03158         \mbox{\hyperlink{mlx5__en__main_8c_abef26daaaee8aedc665099d2a85bd079}{mlx5e\_build\_tir\_ctx}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, tirc, tt, inner\_vxlan);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03159}03159 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03160}03160         err = \mbox{\hyperlink{mlx5__transobj_8c_adc82885b68cd8c07fb47826aede2c4b3}{mlx5\_core\_create\_tir}}(mdev, in, inlen, inner\_vxlan ?}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03161}03161             \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a77f2dadd7e914c539f24101b394a28fa}{tirn\_inner\_vxlan}}[tt] : \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a89fb537497ccc4eee760dda4087e5cdb}{tirn}}[tt]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03162}03162 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03163}03163         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03164}03164 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03165}03165         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03166}03166 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03167}03167 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03168}03168 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03169}\mbox{\hyperlink{mlx5__en__main_8c_ac4ddadff0145405139714cb049844f96}{03169}} \mbox{\hyperlink{mlx5__en__main_8c_ac4ddadff0145405139714cb049844f96}{mlx5e\_close\_tir}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{int} tt, \textcolor{keywordtype}{bool} inner\_vxlan)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03170}03170 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03171}03171         \mbox{\hyperlink{mlx5__transobj_8c_a563b8d8a20d29e15bafa91c704c68d0e}{mlx5\_core\_destroy\_tir}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, inner\_vxlan ?}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03172}03172             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a77f2dadd7e914c539f24101b394a28fa}{tirn\_inner\_vxlan}}[tt] : \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a89fb537497ccc4eee760dda4087e5cdb}{tirn}}[tt], 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03173}03173 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03174}03174 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03175}03175 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03176}\mbox{\hyperlink{mlx5__en__main_8c_a8ec53095f57c29d470638ae28beb5f3c}{03176}} \mbox{\hyperlink{mlx5__en__main_8c_a8ec53095f57c29d470638ae28beb5f3c}{mlx5e\_open\_tirs}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03177}03177 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03178}03178         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03179}03179         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03180}03180 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03181}03181         \textcolor{keywordflow}{for} (i = 0; i != 2 * \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a05f25390b0243e3346b80776ff4a13b7}{MLX5E\_NUM\_TT}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03182}03182                 err = \mbox{\hyperlink{mlx5__en__main_8c_ab5632ac7da54d57806d6706a897060f1}{mlx5e\_open\_tir}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, i / 2, (i \% 2) ? \textcolor{keyword}{true} : \textcolor{keyword}{false});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03183}03183                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03184}03184                         \textcolor{keywordflow}{goto} err\_close\_tirs;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03185}03185         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03186}03186 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03187}03187         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03188}03188 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03189}03189 err\_close\_tirs:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03190}03190         \textcolor{keywordflow}{for} (i-\/-\/; i >= 0; i-\/-\/)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03191}03191                 \mbox{\hyperlink{mlx5__en__main_8c_ac4ddadff0145405139714cb049844f96}{mlx5e\_close\_tir}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, i / 2, (i \% 2) ? \textcolor{keyword}{true} : \textcolor{keyword}{false});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03192}03192 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03193}03193         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03194}03194 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03195}03195 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03196}03196 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03197}\mbox{\hyperlink{mlx5__en__main_8c_aefa7fbdf9e8e1675077e5b602e1ab001}{03197}} \mbox{\hyperlink{mlx5__en__main_8c_aefa7fbdf9e8e1675077e5b602e1ab001}{mlx5e\_close\_tirs}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03198}03198 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03199}03199         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03200}03200 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03201}03201         \textcolor{keywordflow}{for} (i = 0; i != 2 * \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a05f25390b0243e3346b80776ff4a13b7}{MLX5E\_NUM\_TT}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03202}03202                 \mbox{\hyperlink{mlx5__en__main_8c_ac4ddadff0145405139714cb049844f96}{mlx5e\_close\_tir}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, i / 2, (i \% 2) ? \textcolor{keyword}{true} : \textcolor{keyword}{false});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03203}03203 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03204}03204 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03205}03205 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03206}03206 \textcolor{comment}{ * SW MTU does not include headers,}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03207}03207 \textcolor{comment}{ * HW MTU includes all headers and checksums.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03208}03208 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03209}03209 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03210}\mbox{\hyperlink{mlx5__en__main_8c_aa217b04778a4df8839e46a56dd0fe9ee}{03210}} \mbox{\hyperlink{mlx5__en__main_8c_aa217b04778a4df8839e46a56dd0fe9ee}{mlx5e\_set\_dev\_port\_mtu}}(\textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{keywordtype}{int} sw\_mtu)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03211}03211 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03212}03212         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03213}03213         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03214}03214         \textcolor{keywordtype}{int} hw\_mtu;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03215}03215         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03216}03216 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03217}03217         hw\_mtu = \mbox{\hyperlink{en_8h_a3d3516c50724eb965c6ac3818c014494}{MLX5E\_SW2HW\_MTU}}(sw\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03218}03218 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03219}03219         err = \mbox{\hyperlink{mlx5__port_8c_a678235a0bf7e8e0cb35e0ce8ee96c5c9}{mlx5\_set\_port\_mtu}}(mdev, hw\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03220}03220         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03221}03221                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}mlx5\_set\_port\_mtu failed setting \%d, err=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03222}03222                     sw\_mtu, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03223}03223                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03224}03224         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03225}03225 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03226}03226         \textcolor{comment}{/* Update vport context MTU */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03227}03227         err = \mbox{\hyperlink{mlx5__vport_8c_a8262d0c98759f0d6808828dbed59d401}{mlx5\_set\_vport\_mtu}}(mdev, hw\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03228}03228         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03229}03229                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03230}03230                     \textcolor{stringliteral}{"{}Failed updating vport context with MTU size, err=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03231}03231                     err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03232}03232         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03233}03233 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03234}03234         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_mtu = sw\_mtu;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03235}03235 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03236}03236         err = \mbox{\hyperlink{mlx5__vport_8c_ad52a75180f12718ecd54dce8542eb422}{mlx5\_query\_vport\_mtu}}(mdev, \&hw\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03237}03237         \textcolor{keywordflow}{if} (err || !hw\_mtu) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03238}03238                 \textcolor{comment}{/* fallback to port oper mtu */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03239}03239                 err = \mbox{\hyperlink{mlx5__port_8c_abac20c4d9ef517252456717d991413b0}{mlx5\_query\_port\_oper\_mtu}}(mdev, \&hw\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03240}03240         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03241}03241         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03242}03242                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03243}03243                     \textcolor{stringliteral}{"{}Query port MTU, after setting new MTU value, failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03244}03244                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03245}03245         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_ad56a463cc3f039fec948981dbbf59d31}{MLX5E\_HW2SW\_MTU}}(hw\_mtu) < sw\_mtu) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03246}03246                 err = -\/E2BIG,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03247}03247                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03248}03248                     \textcolor{stringliteral}{"{}Port MTU \%d is smaller than ifp mtu \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03249}03249                     hw\_mtu, sw\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03250}03250         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_ad56a463cc3f039fec948981dbbf59d31}{MLX5E\_HW2SW\_MTU}}(hw\_mtu) > sw\_mtu) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03251}03251                 err = -\/EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03252}03252                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03253}03253                     \textcolor{stringliteral}{"{}Port MTU \%d is bigger than ifp mtu \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03254}03254                     hw\_mtu, sw\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03255}03255         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03256}03256         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.hw\_mtu = hw\_mtu;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03257}03257 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03258}03258         \textcolor{comment}{/* compute MSB */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03259}03259         \textcolor{keywordflow}{while} (hw\_mtu \& (hw\_mtu -\/ 1))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03260}03260                 hw\_mtu \&= (hw\_mtu -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03261}03261         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.\mbox{\hyperlink{structmlx5e__params__ethtool_a5f25e982d116aae23eb591c4fe22bbb0}{hw\_mtu\_msb}} = hw\_mtu;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03262}03262 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03263}03263         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03264}03264 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03265}03265 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03266}03266 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03267}\mbox{\hyperlink{en_8h_a3be75273c5d3f27a027a298330898a62}{03267}} \mbox{\hyperlink{mlx5__en__main_8c_a64d4313ad530f8840797ce77aa726029}{mlx5e\_open\_locked}}(\textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03268}03268 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03269}03269         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03270}03270         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03271}03271         u16 set\_id;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03272}03272 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03273}03273         \textcolor{comment}{/* check if already opened */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03274}03274         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03275}03275                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03276}03276 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03277}03277 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03278}03278         \textcolor{keywordflow}{if} (rss\_getnumbuckets() > \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03279}03279                 \mbox{\hyperlink{en_8h_a48762808435b04073ff4eb46a4ed088e}{mlx5\_en\_info}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03280}03280                     \textcolor{stringliteral}{"{}NOTE: There are more RSS buckets(\%u) than channels(\%u) available\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03281}03281                     rss\_getnumbuckets(), \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03282}03282         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03283}03283 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03284}03284         err = \mbox{\hyperlink{mlx5__en__main_8c_ade5a84a34bae559324484282bbbe57b7}{mlx5e\_open\_tises}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03285}03285         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03286}03286                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}mlx5e\_open\_tises failed, \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03287}03287                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03288}03288         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03289}03289         err = \mbox{\hyperlink{mlx5__vport_8c_a45661dbed79a7022c3df1f30c686388d}{mlx5\_vport\_alloc\_q\_counter}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03290}03290             \mbox{\hyperlink{driver_8h_aa57e16cd48de3b9a989056ff8df26f84a209825323d9d866da952d6ab40f3c837}{MLX5\_INTERFACE\_PROTOCOL\_ETH}}, \&set\_id);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03291}03291         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03292}03292                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03293}03293                     \textcolor{stringliteral}{"{}mlx5\_vport\_alloc\_q\_counter failed: \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03294}03294                 \textcolor{keywordflow}{goto} err\_close\_tises;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03295}03295         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03296}03296         \textcolor{comment}{/* store counter set ID */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03297}03297         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a092fefb212ffef0324dd097caa2cb6}{counter\_set\_id}} = set\_id;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03298}03298 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03299}03299         err = \mbox{\hyperlink{mlx5__en__main_8c_aa7979952cbeb9d0af58af5e4781e03a6}{mlx5e\_open\_channels}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03300}03300         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03301}03301                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03302}03302                     \textcolor{stringliteral}{"{}mlx5e\_open\_channels failed, \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03303}03303                 \textcolor{keywordflow}{goto} err\_dalloc\_q\_counter;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03304}03304         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03305}03305         err = \mbox{\hyperlink{mlx5__en__main_8c_af5f6a80fe6a41783b5b510fe8cda621b}{mlx5e\_activate\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03306}03306         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03307}03307                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}mlx5e\_activate\_rqt failed, \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03308}03308                 \textcolor{keywordflow}{goto} err\_close\_channels;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03309}03309         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03310}03310 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03311}03311         set\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03312}03312 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03313}03313         \mbox{\hyperlink{mlx5__en__main_8c_ac166dc34edd7ee3b30ea69428229e022}{mlx5e\_update\_carrier}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03314}03314 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03315}03315         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03316}03316 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03317}03317 err\_close\_channels:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03318}03318         \mbox{\hyperlink{mlx5__en__main_8c_a731dfc9573336ffd8dcfd2902a16f807}{mlx5e\_close\_channels}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03319}03319 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03320}03320 err\_dalloc\_q\_counter:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03321}03321         \mbox{\hyperlink{mlx5__vport_8c_aab2314b0702c2133398d1fd38175c2e0}{mlx5\_vport\_dealloc\_q\_counter}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03322}03322             \mbox{\hyperlink{driver_8h_aa57e16cd48de3b9a989056ff8df26f84a209825323d9d866da952d6ab40f3c837}{MLX5\_INTERFACE\_PROTOCOL\_ETH}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a092fefb212ffef0324dd097caa2cb6}{counter\_set\_id}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03323}03323 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03324}03324 err\_close\_tises:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03325}03325         \mbox{\hyperlink{mlx5__en__main_8c_a8811488af1ebfc1cbc40b09574b9052a}{mlx5e\_close\_tises}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03326}03326 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03327}03327         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03328}03328 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03329}03329 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03330}03330 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03331}\mbox{\hyperlink{mlx5__en__main_8c_a0e9598bedd8ab1a600234fef3aa1f045}{03331}} \mbox{\hyperlink{mlx5__en__main_8c_a0e9598bedd8ab1a600234fef3aa1f045}{mlx5e\_open}}(\textcolor{keywordtype}{void} *arg)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03332}03332 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03333}03333         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03334}03334 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03335}03335         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03336}03336         \textcolor{keywordflow}{if} (\mbox{\hyperlink{mlx5__port_8c_af420caf0db7e1b8cbf69651fbe3d98d7}{mlx5\_set\_port\_status}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{driver_8h_abbd4adaee2907713cb84574e971dbbbdaa0c48ce5457a008571fdac68671d5771}{MLX5\_PORT\_UP}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03337}03337                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03338}03338                     \textcolor{stringliteral}{"{}Setting port status to up failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03339}03339 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03340}03340         \mbox{\hyperlink{mlx5__en__main_8c_a64d4313ad530f8840797ce77aa726029}{mlx5e\_open\_locked}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03341}03341         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}-\/>if\_drv\_flags |= IFF\_DRV\_RUNNING;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03342}03342         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03343}03343 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03344}03344 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03345}03345 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03346}\mbox{\hyperlink{en_8h_aa4f7066fe440ff9ab1ade9cca3358c8b}{03346}} \mbox{\hyperlink{mlx5__en__main_8c_a4cfde2bf9b9018cf533f460259942bc8}{mlx5e\_close\_locked}}(\textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03347}03347 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03348}03348         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03349}03349 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03350}03350         \textcolor{comment}{/* check if already closed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03351}03351         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03352}03352                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03353}03353 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03354}03354         clear\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03355}03355 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03356}03356         if\_link\_state\_change(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, LINK\_STATE\_DOWN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03357}03357 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03358}03358         \mbox{\hyperlink{mlx5__en__main_8c_a0d74fc56932f14265055b37d2c00de45}{mlx5e\_deactivate\_rqt}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03359}03359         \mbox{\hyperlink{mlx5__en__main_8c_a731dfc9573336ffd8dcfd2902a16f807}{mlx5e\_close\_channels}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03360}03360         \mbox{\hyperlink{mlx5__vport_8c_aab2314b0702c2133398d1fd38175c2e0}{mlx5\_vport\_dealloc\_q\_counter}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03361}03361             \mbox{\hyperlink{driver_8h_aa57e16cd48de3b9a989056ff8df26f84a209825323d9d866da952d6ab40f3c837}{MLX5\_INTERFACE\_PROTOCOL\_ETH}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a092fefb212ffef0324dd097caa2cb6}{counter\_set\_id}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03362}03362         \mbox{\hyperlink{mlx5__en__main_8c_a8811488af1ebfc1cbc40b09574b9052a}{mlx5e\_close\_tises}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03363}03363 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03364}03364         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03365}03365 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03366}03366 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03367}03367 \textcolor{keyword}{static} uint64\_t}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03368}\mbox{\hyperlink{mlx5__en__main_8c_ada8b5417acbdce23487637821b1bf13c}{03368}} \mbox{\hyperlink{mlx5__en__main_8c_ada8b5417acbdce23487637821b1bf13c}{mlx5e\_get\_counter}}(\textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, ift\_counter cnt)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03369}03369 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03370}03370         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03371}03371         u64 retval;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03372}03372 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03373}03373         \textcolor{comment}{/* PRIV\_LOCK(priv); XXX not allowed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03374}03374         \textcolor{keywordflow}{switch} (cnt) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03375}03375         \textcolor{keywordflow}{case} IFCOUNTER\_IPACKETS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03376}03376                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.rx\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03377}03377                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03378}03378         \textcolor{keywordflow}{case} IFCOUNTER\_IERRORS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03379}03379                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}}.in\_range\_len\_errors +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03380}03380                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}}.out\_of\_range\_len +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03381}03381                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}}.too\_long\_errors +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03382}03382                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}}.check\_seq\_err +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03383}03383                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}}.alignment\_err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03384}03384                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03385}03385         \textcolor{keywordflow}{case} IFCOUNTER\_IQDROPS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03386}03386                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.rx\_out\_of\_buffer;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03387}03387                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03388}03388         \textcolor{keywordflow}{case} IFCOUNTER\_OPACKETS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03389}03389                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.tx\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03390}03390                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03391}03391         \textcolor{keywordflow}{case} IFCOUNTER\_OERRORS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03392}03392                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a7f2dbb4c146fadb24dfd26f2831dba83}{port\_stats\_debug}}.out\_discards;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03393}03393                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03394}03394         \textcolor{keywordflow}{case} IFCOUNTER\_IBYTES:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03395}03395                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.rx\_bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03396}03396                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03397}03397         \textcolor{keywordflow}{case} IFCOUNTER\_OBYTES:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03398}03398                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.tx\_bytes;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03399}03399                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03400}03400         \textcolor{keywordflow}{case} IFCOUNTER\_IMCASTS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03401}03401                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.rx\_multicast\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03402}03402                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03403}03403         \textcolor{keywordflow}{case} IFCOUNTER\_OMCASTS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03404}03404                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.tx\_multicast\_packets;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03405}03405                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03406}03406         \textcolor{keywordflow}{case} IFCOUNTER\_OQDROPS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03407}03407                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.tx\_queue\_dropped;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03408}03408                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03409}03409         \textcolor{keywordflow}{case} IFCOUNTER\_COLLISIONS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03410}03410                 retval = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}}.collisions;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03411}03411                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03412}03412         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03413}03413                 retval = if\_get\_counter\_default(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, cnt);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03414}03414                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03415}03415         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03416}03416         \textcolor{comment}{/* PRIV\_UNLOCK(priv); XXX not allowed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03417}03417         \textcolor{keywordflow}{return} (retval);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03418}03418 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03419}03419 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03420}03420 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03421}\mbox{\hyperlink{mlx5__en__main_8c_ae1615ea149f9c83c76668c75479fb7df}{03421}} \mbox{\hyperlink{mlx5__en__main_8c_ae1615ea149f9c83c76668c75479fb7df}{mlx5e\_set\_rx\_mode}}(\textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03422}03422 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03423}03423         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03424}03424 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03425}03425         queue\_work(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4338b3038935af69f0db700c7a4bdee4}{wq}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ad6414c973db68d35d7b343d4b88b2016}{set\_rx\_mode\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03426}03426 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03427}03427 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03428}03428 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03429}\mbox{\hyperlink{mlx5__en__main_8c_ab6fc00e61bcee844f8f4b44438dde860}{03429}} \mbox{\hyperlink{mlx5__en__main_8c_ab6fc00e61bcee844f8f4b44438dde860}{mlx5e\_ioctl}}(\textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, u\_long command, caddr\_t \mbox{\hyperlink{mlx5__en__tx_8c_af943c26117683b64b9cd6943e2c496e5}{data}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03430}03430 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03431}03431         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03432}03432         \textcolor{keyword}{struct }ifreq *ifr;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03433}03433         \textcolor{keyword}{struct }ifdownreason *ifdr;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03434}03434         \textcolor{keyword}{struct }ifi2creq i2c;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03435}03435         \textcolor{keyword}{struct }ifrsskey *ifrk;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03436}03436         \textcolor{keyword}{struct }ifrsshash *ifrh;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03437}03437         \textcolor{keywordtype}{int} error = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03438}03438         \textcolor{keywordtype}{int} mask = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03439}03439         \textcolor{keywordtype}{int} size\_read = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03440}03440         \textcolor{keywordtype}{int} module\_status;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03441}03441         \textcolor{keywordtype}{int} module\_num;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03442}03442         \textcolor{keywordtype}{int} max\_mtu;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03443}03443         uint8\_t read\_addr;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03444}03444 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03445}03445         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03446}03446 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03447}03447         \textcolor{comment}{/* check if detaching */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03448}03448         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} == NULL || \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4795b5a0fa2d0a63a36e40c448f9f50b}{gone}} != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03449}03449                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03450}03450 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03451}03451         \textcolor{keywordflow}{switch} (command) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03452}03452         \textcolor{keywordflow}{case} SIOCSIFMTU:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03453}03453                 ifr = (\textcolor{keyword}{struct }ifreq *)\mbox{\hyperlink{mlx5__en__tx_8c_af943c26117683b64b9cd6943e2c496e5}{data}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03454}03454 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03455}03455                 \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03456}03456                 \mbox{\hyperlink{mlx5__port_8c_a621c7ea77766c5fea50a28224084966a}{mlx5\_query\_port\_max\_mtu}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&max\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03457}03457 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03458}03458                 \textcolor{keywordflow}{if} (ifr-\/>ifr\_mtu >= \mbox{\hyperlink{en_8h_a9175e755a18cd2bc5f23d35c084e99aa}{MLX5E\_MTU\_MIN}} \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03459}03459                     ifr-\/>ifr\_mtu <= MIN(\mbox{\hyperlink{en_8h_a20753e2ea085f45f9e290fc1432837f7}{MLX5E\_MTU\_MAX}}, max\_mtu)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03460}03460                         \textcolor{keywordtype}{int} was\_opened;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03461}03461 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03462}03462                         was\_opened = test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03463}03463                         \textcolor{keywordflow}{if} (was\_opened)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03464}03464                                 \mbox{\hyperlink{mlx5__en__main_8c_a4cfde2bf9b9018cf533f460259942bc8}{mlx5e\_close\_locked}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03465}03465 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03466}03466                         \textcolor{comment}{/* set new MTU */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03467}03467                         \mbox{\hyperlink{mlx5__en__main_8c_aa217b04778a4df8839e46a56dd0fe9ee}{mlx5e\_set\_dev\_port\_mtu}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, ifr-\/>ifr\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03468}03468 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03469}03469                         \textcolor{keywordflow}{if} (was\_opened)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03470}03470                                 \mbox{\hyperlink{mlx5__en__main_8c_a64d4313ad530f8840797ce77aa726029}{mlx5e\_open\_locked}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03471}03471                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03472}03472                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03473}03473                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03474}03474                             \textcolor{stringliteral}{"{}Invalid MTU value. Min val: \%d, Max val: \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03475}03475                             \mbox{\hyperlink{en_8h_a9175e755a18cd2bc5f23d35c084e99aa}{MLX5E\_MTU\_MIN}}, MIN(\mbox{\hyperlink{en_8h_a20753e2ea085f45f9e290fc1432837f7}{MLX5E\_MTU\_MAX}}, max\_mtu));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03476}03476                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03477}03477                 \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03478}03478                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03479}03479         \textcolor{keywordflow}{case} SIOCSIFFLAGS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03480}03480                 \textcolor{keywordflow}{if} ((\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_flags \& IFF\_UP) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03481}03481                     (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_drv\_flags \& IFF\_DRV\_RUNNING)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03482}03482                         \mbox{\hyperlink{mlx5__en__main_8c_ae1615ea149f9c83c76668c75479fb7df}{mlx5e\_set\_rx\_mode}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03483}03483                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03484}03484                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03485}03485                 \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03486}03486                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_flags \& IFF\_UP) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03487}03487                         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_drv\_flags \& IFF\_DRV\_RUNNING) == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03488}03488                                 \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03489}03489                                         \mbox{\hyperlink{mlx5__en__main_8c_a64d4313ad530f8840797ce77aa726029}{mlx5e\_open\_locked}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03490}03490                                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_drv\_flags |= IFF\_DRV\_RUNNING;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03491}03491                                 \mbox{\hyperlink{mlx5__port_8c_af420caf0db7e1b8cbf69651fbe3d98d7}{mlx5\_set\_port\_status}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{driver_8h_abbd4adaee2907713cb84574e971dbbbdaa0c48ce5457a008571fdac68671d5771}{MLX5\_PORT\_UP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03492}03492                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03493}03493                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03494}03494                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_drv\_flags \& IFF\_DRV\_RUNNING) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03495}03495                                 \mbox{\hyperlink{mlx5__port_8c_af420caf0db7e1b8cbf69651fbe3d98d7}{mlx5\_set\_port\_status}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03496}03496                                     \mbox{\hyperlink{driver_8h_abbd4adaee2907713cb84574e971dbbbdad24a1b8170c333524f13d66b1e4560b5}{MLX5\_PORT\_DOWN}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03497}03497                                 \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03498}03498                                         \mbox{\hyperlink{mlx5__en__main_8c_a4cfde2bf9b9018cf533f460259942bc8}{mlx5e\_close\_locked}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03499}03499                                 \mbox{\hyperlink{mlx5__en__main_8c_ac166dc34edd7ee3b30ea69428229e022}{mlx5e\_update\_carrier}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03500}03500                                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_drv\_flags \&= \string~IFF\_DRV\_RUNNING;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03501}03501                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03502}03502                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03503}03503                 \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03504}03504                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03505}03505         \textcolor{keywordflow}{case} SIOCADDMULTI:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03506}03506         \textcolor{keywordflow}{case} SIOCDELMULTI:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03507}03507                 \mbox{\hyperlink{mlx5__en__main_8c_ae1615ea149f9c83c76668c75479fb7df}{mlx5e\_set\_rx\_mode}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03508}03508                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03509}03509         \textcolor{keywordflow}{case} SIOCSIFMEDIA:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03510}03510         \textcolor{keywordflow}{case} SIOCGIFMEDIA:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03511}03511         \textcolor{keywordflow}{case} SIOCGIFXMEDIA:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03512}03512                 ifr = (\textcolor{keyword}{struct }ifreq *)\mbox{\hyperlink{mlx5__en__tx_8c_af943c26117683b64b9cd6943e2c496e5}{data}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03513}03513                 error = ifmedia\_ioctl(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, ifr, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, command);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03514}03514                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03515}03515         \textcolor{keywordflow}{case} SIOCSIFCAP:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03516}03516                 ifr = (\textcolor{keyword}{struct }ifreq *)\mbox{\hyperlink{mlx5__en__tx_8c_af943c26117683b64b9cd6943e2c496e5}{data}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03517}03517                 \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03518}03518                 mask = ifr-\/>ifr\_reqcap \string^ \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03519}03519 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03520}03520                 \textcolor{keywordflow}{if} (mask \& IFCAP\_TXCSUM) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03521}03521                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_TXCSUM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03522}03522                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist \string^= (CSUM\_TCP | CSUM\_UDP | CSUM\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03523}03523 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03524}03524                         \textcolor{keywordflow}{if} (IFCAP\_TSO4 \& \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03525}03525                             !(IFCAP\_TXCSUM \& \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03526}03526                                 mask \&= \string~IFCAP\_TSO4;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03527}03527                                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \&= \string~IFCAP\_TSO4;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03528}03528                                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist \&= \string~CSUM\_IP\_TSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03529}03529                                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03530}03530                                     \textcolor{stringliteral}{"{}tso4 disabled due to -\/txcsum.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03531}03531                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03532}03532                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03533}03533                 \textcolor{keywordflow}{if} (mask \& IFCAP\_TXCSUM\_IPV6) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03534}03534                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_TXCSUM\_IPV6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03535}03535                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist \string^= (CSUM\_UDP\_IPV6 | CSUM\_TCP\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03536}03536 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03537}03537                         \textcolor{keywordflow}{if} (IFCAP\_TSO6 \& \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03538}03538                             !(IFCAP\_TXCSUM\_IPV6 \& \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03539}03539                                 mask \&= \string~IFCAP\_TSO6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03540}03540                                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \&= \string~IFCAP\_TSO6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03541}03541                                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist \&= \string~CSUM\_IP6\_TSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03542}03542                                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03543}03543                                     \textcolor{stringliteral}{"{}tso6 disabled due to -\/txcsum6.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03544}03544                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03545}03545                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03546}03546                 \textcolor{keywordflow}{if} (mask \& IFCAP\_MEXTPG)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03547}03547                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_MEXTPG;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03548}03548                 \textcolor{keywordflow}{if} (mask \& IFCAP\_TXTLS4)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03549}03549                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_TXTLS4;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03550}03550                 \textcolor{keywordflow}{if} (mask \& IFCAP\_TXTLS6)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03551}03551                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_TXTLS6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03552}03552 \textcolor{preprocessor}{\#ifdef RATELIMIT}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03553}03553                 \textcolor{keywordflow}{if} (mask \& IFCAP\_TXTLS\_RTLMT)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03554}03554                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_TXTLS\_RTLMT;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03555}03555 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03556}03556                 \textcolor{keywordflow}{if} (mask \& IFCAP\_RXCSUM)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03557}03557                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_RXCSUM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03558}03558                 \textcolor{keywordflow}{if} (mask \& IFCAP\_RXCSUM\_IPV6)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03559}03559                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_RXCSUM\_IPV6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03560}03560                 \textcolor{keywordflow}{if} (mask \& IFCAP\_TSO4) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03561}03561                         \textcolor{keywordflow}{if} (!(IFCAP\_TSO4 \& \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03562}03562                             !(IFCAP\_TXCSUM \& \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03563}03563                                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}enable txcsum first.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03564}03564                                 error = EAGAIN;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03565}03565                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03566}03566                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03567}03567                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_TSO4;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03568}03568                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist \string^= CSUM\_IP\_TSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03569}03569                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03570}03570                 \textcolor{keywordflow}{if} (mask \& IFCAP\_TSO6) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03571}03571                         \textcolor{keywordflow}{if} (!(IFCAP\_TSO6 \& \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03572}03572                             !(IFCAP\_TXCSUM\_IPV6 \& \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03573}03573                                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}enable txcsum6 first.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03574}03574                                 error = EAGAIN;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03575}03575                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03576}03576                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03577}03577                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_TSO6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03578}03578                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist \string^= CSUM\_IP6\_TSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03579}03579                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03580}03580                 \textcolor{keywordflow}{if} (mask \& IFCAP\_VLAN\_HWTSO)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03581}03581                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_VLAN\_HWTSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03582}03582                 \textcolor{keywordflow}{if} (mask \& IFCAP\_VLAN\_HWFILTER) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03583}03583                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \& IFCAP\_VLAN\_HWFILTER)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03584}03584                                 \mbox{\hyperlink{en_8h_a7294adaac98817c8600d7251b21b96bb}{mlx5e\_disable\_vlan\_filter}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03585}03585                         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03586}03586                                 \mbox{\hyperlink{en_8h_a2c7935474fe0a0fc56fa040f1048a90a}{mlx5e\_enable\_vlan\_filter}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03587}03587 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03588}03588                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_VLAN\_HWFILTER;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03589}03589                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03590}03590                 \textcolor{keywordflow}{if} (mask \& IFCAP\_VLAN\_HWTAGGING)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03591}03591                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_VLAN\_HWTAGGING;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03592}03592                 \textcolor{keywordflow}{if} (mask \& IFCAP\_WOL\_MAGIC)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03593}03593                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_WOL\_MAGIC;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03594}03594                 \textcolor{keywordflow}{if} (mask \& IFCAP\_VXLAN\_HWCSUM) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03595}03595                         \textcolor{keyword}{const} \textcolor{keywordtype}{bool} was\_enabled =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03596}03596                             (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \& IFCAP\_VXLAN\_HWCSUM) != 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03597}03597                         \textcolor{keywordflow}{if} (was\_enabled)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03598}03598                                 \mbox{\hyperlink{en_8h_afd3085353d739c6a76924baaa2e35777}{mlx5e\_del\_all\_vxlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03599}03599                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_VXLAN\_HWCSUM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03600}03600                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist \string^= CSUM\_INNER\_IP | CSUM\_INNER\_IP\_UDP |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03601}03601                             CSUM\_INNER\_IP\_TCP | CSUM\_INNER\_IP6\_UDP |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03602}03602                             CSUM\_INNER\_IP6\_TCP;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03603}03603                         \textcolor{keywordflow}{if} (!was\_enabled) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03604}03604                                 \textcolor{keywordtype}{int} err = \mbox{\hyperlink{en_8h_adb5952fdf9c00faac9e4611af2063c2a}{mlx5e\_add\_all\_vxlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03605}03605                                 \textcolor{keywordflow}{if} (err != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03606}03606                                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03607}03607                                             \textcolor{stringliteral}{"{}mlx5e\_add\_all\_vxlan\_rules() failed, \%d (ignored)\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03608}03608                                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03609}03609                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03610}03610                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03611}03611                 \textcolor{keywordflow}{if} (mask \& IFCAP\_VXLAN\_HWTSO) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03612}03612                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_VXLAN\_HWTSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03613}03613                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist \string^= CSUM\_INNER\_IP\_TSO |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03614}03614                             CSUM\_INNER\_IP6\_TSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03615}03615                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03616}03616 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03617}03617                 VLAN\_CAPABILITIES(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03618}03618                 \textcolor{comment}{/* turn off LRO means also turn of HW LRO -\/ if it's on */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03619}03619                 \textcolor{keywordflow}{if} (mask \& IFCAP\_LRO) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03620}03620                         \textcolor{keywordtype}{int} was\_opened = test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03621}03621                         \textcolor{keywordtype}{bool} need\_restart = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03622}03622 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03623}03623                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_LRO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03624}03624 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03625}03625                         \textcolor{comment}{/* figure out if updating HW LRO is needed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03626}03626                         \textcolor{keywordflow}{if} (!(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \& IFCAP\_LRO)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03627}03627                                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a38dfd7126e601a9dba0ec254cde85133}{hw\_lro\_en}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03628}03628                                         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a38dfd7126e601a9dba0ec254cde85133}{hw\_lro\_en}} = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03629}03629                                         need\_restart = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03630}03630                                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03631}03631                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03632}03632                                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a38dfd7126e601a9dba0ec254cde85133}{hw\_lro\_en}} == \textcolor{keyword}{false} \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03633}03633                                     \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7786efa3697f61dfe2ad4e4434cf3008}{params\_ethtool}}.hw\_lro != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03634}03634                                         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a38dfd7126e601a9dba0ec254cde85133}{hw\_lro\_en}} = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03635}03635                                         need\_restart = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03636}03636                                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03637}03637                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03638}03638                         \textcolor{keywordflow}{if} (was\_opened \&\& need\_restart) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03639}03639                                 \mbox{\hyperlink{mlx5__en__main_8c_a4cfde2bf9b9018cf533f460259942bc8}{mlx5e\_close\_locked}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03640}03640                                 \mbox{\hyperlink{mlx5__en__main_8c_a64d4313ad530f8840797ce77aa726029}{mlx5e\_open\_locked}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03641}03641                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03642}03642                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03643}03643                 \textcolor{keywordflow}{if} (mask \& IFCAP\_HWRXTSTMP) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03644}03644                         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \string^= IFCAP\_HWRXTSTMP;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03645}03645                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \& IFCAP\_HWRXTSTMP) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03646}03646                                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6b8004b188956f884fce65060553fd41}{clbr\_done}} == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03647}03647                                         \mbox{\hyperlink{mlx5__en__main_8c_a25935b08257710ee49f1773358a5cda4}{mlx5e\_reset\_calibration\_callout}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03648}03648                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03649}03649                                 callout\_drain(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab0ec4d3bafa7dcdc1c17ad1b3995558f}{tstmp\_clbr}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03650}03650                                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6b8004b188956f884fce65060553fd41}{clbr\_done}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03651}03651                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03652}03652                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03653}03653 out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03654}03654                 \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03655}03655                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03656}03656 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03657}03657         \textcolor{keywordflow}{case} SIOCGI2C:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03658}03658                 ifr = (\textcolor{keyword}{struct }ifreq *)\mbox{\hyperlink{mlx5__en__tx_8c_af943c26117683b64b9cd6943e2c496e5}{data}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03659}03659 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03660}03660                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03661}03661 \textcolor{comment}{                 * Copy from the user-\/space address ifr\_data to the}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03662}03662 \textcolor{comment}{                 * kernel-\/space address i2c}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03663}03663 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03664}03664                 error = copyin(ifr\_data\_get\_ptr(ifr), \&i2c, \textcolor{keyword}{sizeof}(i2c));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03665}03665                 \textcolor{keywordflow}{if} (error)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03666}03666                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03667}03667 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03668}03668                 \textcolor{keywordflow}{if} (i2c.len > \textcolor{keyword}{sizeof}(i2c.data)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03669}03669                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03670}03670                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03671}03671                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03672}03672 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03673}03673                 \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03674}03674                 \textcolor{comment}{/* Get module\_num which is required for the query\_eeprom */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03675}03675                 error = \mbox{\hyperlink{mlx5__port_8c_a79915817bf848b70fa91e71a4890a669}{mlx5\_query\_module\_num}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&module\_num);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03676}03676                 \textcolor{keywordflow}{if} (error) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03677}03677                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03678}03678                             \textcolor{stringliteral}{"{}Query module num failed, eeprom reading is not supported\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03679}03679                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03680}03680                         \textcolor{keywordflow}{goto} err\_i2c;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03681}03681                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03682}03682                 \textcolor{comment}{/* Check if module is present before doing an access */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03683}03683                 module\_status = \mbox{\hyperlink{mlx5__eq_8c_acf9ebb41ea75374e81c7d9ca14501267}{mlx5\_query\_module\_status}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, module\_num);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03684}03684                 \textcolor{keywordflow}{if} (module\_status != \mbox{\hyperlink{device_8h_a2970898e8a43ce21e1cc510d49f1b89da722fe0b1ed73a075a3b88ff79de37468}{MLX5\_MODULE\_STATUS\_PLUGGED\_ENABLED}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03685}03685                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03686}03686                         \textcolor{keywordflow}{goto} err\_i2c;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03687}03687                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03688}03688                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03689}03689 \textcolor{comment}{                 * Currently 0XA0 and 0xA2 are the only addresses permitted.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03690}03690 \textcolor{comment}{                 * The internal conversion is as follows:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03691}03691 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03692}03692                 \textcolor{keywordflow}{if} (i2c.dev\_addr == 0xA0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03693}03693                         read\_addr = \mbox{\hyperlink{port_8h_abdaf26fa2f7e0f2c629753b3468f1a28}{MLX5\_I2C\_ADDR\_LOW}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03694}03694                 \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (i2c.dev\_addr == 0xA2)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03695}03695                         read\_addr = \mbox{\hyperlink{port_8h_ae3d5e640295d3d3610426a7d5e3b63b8}{MLX5\_I2C\_ADDR\_HIGH}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03696}03696                 \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03697}03697                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03698}03698                             \textcolor{stringliteral}{"{}Query eeprom failed, Invalid Address: \%X\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03699}03699                             i2c.dev\_addr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03700}03700                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03701}03701                         \textcolor{keywordflow}{goto} err\_i2c;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03702}03702                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03703}03703                 error = \mbox{\hyperlink{mlx5__port_8c_a68b553361f112504e6c7e0b875e2feff}{mlx5\_query\_eeprom}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03704}03704                     read\_addr, \mbox{\hyperlink{port_8h_a84c968cbb690311a0a6d431829dc6d98}{MLX5\_EEPROM\_LOW\_PAGE}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03705}03705                     (uint32\_t)i2c.offset, (uint32\_t)i2c.len, module\_num,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03706}03706                     (uint32\_t *)i2c.data, \&size\_read);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03707}03707                 \textcolor{keywordflow}{if} (error) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03708}03708                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03709}03709                             \textcolor{stringliteral}{"{}Query eeprom failed, eeprom reading is not supported\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03710}03710                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03711}03711                         \textcolor{keywordflow}{goto} err\_i2c;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03712}03712                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03713}03713 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03714}03714                 \textcolor{keywordflow}{if} (i2c.len > \mbox{\hyperlink{port_8h_a4213659d88d030b66859ba2233ca5e5b}{MLX5\_EEPROM\_MAX\_BYTES}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03715}03715                         error = \mbox{\hyperlink{mlx5__port_8c_a68b553361f112504e6c7e0b875e2feff}{mlx5\_query\_eeprom}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03716}03716                             read\_addr, \mbox{\hyperlink{port_8h_a84c968cbb690311a0a6d431829dc6d98}{MLX5\_EEPROM\_LOW\_PAGE}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03717}03717                             (uint32\_t)(i2c.offset + size\_read),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03718}03718                             (uint32\_t)(i2c.len -\/ size\_read), module\_num,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03719}03719                             (uint32\_t *)(i2c.data + size\_read), \&size\_read);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03720}03720                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03721}03721                 \textcolor{keywordflow}{if} (error) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03722}03722                         \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03723}03723                             \textcolor{stringliteral}{"{}Query eeprom failed, eeprom reading is not supported\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03724}03724                         error = EINVAL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03725}03725                         \textcolor{keywordflow}{goto} err\_i2c;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03726}03726                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03727}03727 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03728}03728                 error = copyout(\&i2c, ifr\_data\_get\_ptr(ifr), \textcolor{keyword}{sizeof}(i2c));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03729}03729 err\_i2c:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03730}03730                 \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03731}03731                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03732}03732         \textcolor{keywordflow}{case} SIOCGIFDOWNREASON:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03733}03733                 ifdr = (\textcolor{keyword}{struct }ifdownreason *)\mbox{\hyperlink{mlx5__en__tx_8c_af943c26117683b64b9cd6943e2c496e5}{data}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03734}03734                 bzero(ifdr-\/>ifdr\_msg, \textcolor{keyword}{sizeof}(ifdr-\/>ifdr\_msg));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03735}03735                 \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03736}03736                 error = -\/\mbox{\hyperlink{mlx5__core_8h_a88b95de65bb94f09336a96244b52f69e}{mlx5\_query\_pddr\_troubleshooting\_info}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, NULL,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03737}03737                     ifdr-\/>ifdr\_msg, \textcolor{keyword}{sizeof}(ifdr-\/>ifdr\_msg));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03738}03738                 \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03739}03739                 \textcolor{keywordflow}{if} (error == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03740}03740                         ifdr-\/>ifdr\_reason = IFDR\_REASON\_MSG;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03741}03741                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03742}03742 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03743}03743         \textcolor{keywordflow}{case} SIOCGIFRSSKEY:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03744}03744                 ifrk = (\textcolor{keyword}{struct }ifrsskey *)\mbox{\hyperlink{mlx5__en__tx_8c_af943c26117683b64b9cd6943e2c496e5}{data}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03745}03745                 ifrk-\/>ifrk\_func = RSS\_FUNC\_TOEPLITZ;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03746}03746                 ifrk-\/>ifrk\_keylen = \mbox{\hyperlink{mlx5__en__main_8c_a3edab55c3eabf1e4531671625700cb7a}{MLX5E\_RSS\_KEY\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03747}03747                 \mbox{\hyperlink{device_8h_a304bfae1ba4b2b82404598b5304e1f1f}{CTASSERT}}(\textcolor{keyword}{sizeof}(ifrk-\/>ifrk\_key) >= \mbox{\hyperlink{mlx5__en__main_8c_a3edab55c3eabf1e4531671625700cb7a}{MLX5E\_RSS\_KEY\_SIZE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03748}03748                 \mbox{\hyperlink{mlx5__en__main_8c_add5240fbd45438b7ee5de3be4bae0b94}{mlx5e\_get\_rss\_key}}(ifrk-\/>ifrk\_key);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03749}03749                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03750}03750 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03751}03751         \textcolor{keywordflow}{case} SIOCGIFRSSHASH:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03752}03752                 ifrh = (\textcolor{keyword}{struct }ifrsshash *)\mbox{\hyperlink{mlx5__en__tx_8c_af943c26117683b64b9cd6943e2c496e5}{data}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03753}03753                 ifrh-\/>ifrh\_func = RSS\_FUNC\_TOEPLITZ;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03754}03754                 ifrh-\/>ifrh\_types =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03755}03755                     RSS\_TYPE\_IPV4 |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03756}03756                     RSS\_TYPE\_TCP\_IPV4 |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03757}03757                     RSS\_TYPE\_UDP\_IPV4 |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03758}03758                     RSS\_TYPE\_IPV6 |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03759}03759                     RSS\_TYPE\_TCP\_IPV6 |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03760}03760                     RSS\_TYPE\_UDP\_IPV6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03761}03761                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03762}03762 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03763}03763         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03764}03764                 error = ether\_ioctl(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, command, \mbox{\hyperlink{mlx5__en__tx_8c_af943c26117683b64b9cd6943e2c496e5}{data}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03765}03765                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03766}03766         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03767}03767         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03768}03768 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03769}03769 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03770}03770 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03771}\mbox{\hyperlink{mlx5__en__main_8c_afa1837546d7bcdf7b6b4a19e0c82187e}{03771}} \mbox{\hyperlink{mlx5__en__main_8c_afa1837546d7bcdf7b6b4a19e0c82187e}{mlx5e\_check\_required\_hca\_cap}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03772}03772 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03773}03773         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03774}03774 \textcolor{comment}{         * TODO: uncoment once FW really sets all these bits if}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03775}03775 \textcolor{comment}{         * (!mdev-\/>caps.eth.rss\_ind\_tbl\_cap || !mdev-\/>caps.eth.csum\_cap ||}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03776}03776 \textcolor{comment}{         * !mdev-\/>caps.eth.max\_lso\_cap || !mdev-\/>caps.eth.vlan\_cap ||}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03777}03777 \textcolor{comment}{         * !(mdev-\/>caps.gen.flags \& MLX5\_DEV\_CAP\_FLAG\_SCQE\_BRK\_MOD)) return}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03778}03778 \textcolor{comment}{         * -\/ENOTSUPP;}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03779}03779 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03780}03780 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03781}03781         \textcolor{comment}{/* TODO: add more must-\/to-\/have features */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03782}03782 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03783}03783         \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(mdev, port\_type) != \mbox{\hyperlink{device_8h_a531c35e38ede3ea4e5ba5afb24b29493a6ace91bc7da0325275aa0cfa2ba31674}{MLX5\_CAP\_PORT\_TYPE\_ETH}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03784}03784                 \textcolor{keywordflow}{return} (-\/ENODEV);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03785}03785 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03786}03786         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03787}03787 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03788}03788 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03789}03789 \textcolor{keyword}{static} u16}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03790}\mbox{\hyperlink{mlx5__en__main_8c_ad861159d4acd08de41e5ff6df368ea58}{03790}} \mbox{\hyperlink{mlx5__en__main_8c_ad861159d4acd08de41e5ff6df368ea58}{mlx5e\_get\_max\_inline\_cap}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03791}03791 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03792}03792         \textcolor{keyword}{const} \textcolor{keywordtype}{int} min\_size = ETHER\_VLAN\_ENCAP\_LEN + ETHER\_HDR\_LEN;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03793}03793         \textcolor{keyword}{const} \textcolor{keywordtype}{int} max\_size = \mbox{\hyperlink{en_8h_ad12f617e0226f63962f3ea3a2b1f4b69}{MLX5E\_MAX\_TX\_INLINE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03794}03794         \textcolor{keyword}{const} \textcolor{keywordtype}{int} bf\_buf\_size =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03795}03795             ((1U << \mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(mdev, log\_bf\_reg\_size)) / 2U) -\/}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03796}03796             (\textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__tx__wqe}{mlx5e\_tx\_wqe}}) -\/ 2);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03797}03797 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03798}03798         \textcolor{comment}{/* verify against driver limits */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03799}03799         \textcolor{keywordflow}{if} (bf\_buf\_size > max\_size)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03800}03800                 \textcolor{keywordflow}{return} (max\_size);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03801}03801         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (bf\_buf\_size < min\_size)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03802}03802                 \textcolor{keywordflow}{return} (min\_size);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03803}03803         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03804}03804                 \textcolor{keywordflow}{return} (bf\_buf\_size);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03805}03805 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03806}03806 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03807}03807 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03808}\mbox{\hyperlink{mlx5__en__main_8c_a693ab19bd6e258c0442cbf1cddf32a09}{03808}} \mbox{\hyperlink{mlx5__en__main_8c_a693ab19bd6e258c0442cbf1cddf32a09}{mlx5e\_build\_ifp\_priv}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03809}03809     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03810}03810     \textcolor{keywordtype}{int} num\_comp\_vectors)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03811}03811 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03812}03812         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03813}03813 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03814}03814         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03815}03815 \textcolor{comment}{         * TODO: Consider link speed for setting "{}log\_sq\_size"{},}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03816}03816 \textcolor{comment}{         * "{}log\_rq\_size"{} and "{}cq\_moderation\_xxx"{}:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03817}03817 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03818}03818         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ab8aafaea26efc93829bac5f899717442}{log\_sq\_size}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03819}03819             \mbox{\hyperlink{en_8h_addf3d0699dc8f06e77dc81f980af7cd7}{MLX5E\_PARAMS\_DEFAULT\_LOG\_SQ\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03820}03820         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa16e0c879f0d1cd513e51e150124b72d}{log\_rq\_size}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03821}03821             \mbox{\hyperlink{en_8h_acd3f3c3c687558bb76989bb16b1f07f2}{MLX5E\_PARAMS\_DEFAULT\_LOG\_RQ\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03822}03822         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a056f68acd74d63d5fef34195748043e4}{rx\_cq\_moderation\_usec}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03823}03823             \mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(mdev, cq\_period\_start\_from\_cqe) ?}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03824}03824             \mbox{\hyperlink{en_8h_a57b2358c82f1538800870812807e83df}{MLX5E\_PARAMS\_DEFAULT\_RX\_CQ\_MODERATION\_USEC\_FROM\_CQE}} :}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03825}03825             \mbox{\hyperlink{en_8h_ad93eca53c76029d469891ba9798ee0d3}{MLX5E\_PARAMS\_DEFAULT\_RX\_CQ\_MODERATION\_USEC}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03826}03826         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_af020d09ecf766e907d6d3e122d7ba865}{rx\_cq\_moderation\_mode}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03827}03827             \mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(mdev, cq\_period\_start\_from\_cqe) ? 1 : 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03828}03828         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1328f069cf9a4feadc284cdc779cc733}{rx\_cq\_moderation\_pkts}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03829}03829             \mbox{\hyperlink{en_8h_aa635d6919247e5e592892fd360031527}{MLX5E\_PARAMS\_DEFAULT\_RX\_CQ\_MODERATION\_PKTS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03830}03830         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a6fd8c908eee433ab1844a32e1d7f011c}{tx\_cq\_moderation\_usec}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03831}03831             \mbox{\hyperlink{en_8h_a328cc3a16f6f7d21a3d99ce3a5a36b08}{MLX5E\_PARAMS\_DEFAULT\_TX\_CQ\_MODERATION\_USEC}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03832}03832         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a4d456927e29dc7a2628f01730fae8d4d}{tx\_cq\_moderation\_pkts}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03833}03833             \mbox{\hyperlink{en_8h_ab3fe0e07928d1bd24800d59f5f8dd969}{MLX5E\_PARAMS\_DEFAULT\_TX\_CQ\_MODERATION\_PKTS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03834}03834         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_af024e7d9d56da2679d9a67a3747b9279}{min\_rx\_wqes}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03835}03835             \mbox{\hyperlink{en_8h_afd5b07d67584cb7c287f6b529889b474}{MLX5E\_PARAMS\_DEFAULT\_MIN\_RX\_WQES}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03836}03836         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a4bf112049d2005c1badc5579ebd35c3a}{rx\_hash\_log\_tbl\_sz}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03837}03837             (order\_base\_2(num\_comp\_vectors) >}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03838}03838             \mbox{\hyperlink{en_8h_abaa15f831d7e3006a2af671ed3350812}{MLX5E\_PARAMS\_DEFAULT\_RX\_HASH\_LOG\_TBL\_SZ}}) ?}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03839}03839             order\_base\_2(num\_comp\_vectors) :}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03840}03840             \mbox{\hyperlink{en_8h_abaa15f831d7e3006a2af671ed3350812}{MLX5E\_PARAMS\_DEFAULT\_RX\_HASH\_LOG\_TBL\_SZ}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03841}03841         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1cf05551cbb12f56a188445ebab36096}{num\_tc}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03842}03842         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a417aae8f6d79f410b393c30719508ffb}{default\_vlan\_prio}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03843}03843         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a092fefb212ffef0324dd097caa2cb6}{counter\_set\_id}} = -\/1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03844}03844         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a6a9a62ee8270f4a5447610215d24895a}{tx\_max\_inline}} = \mbox{\hyperlink{mlx5__en__main_8c_ad861159d4acd08de41e5ff6df368ea58}{mlx5e\_get\_max\_inline\_cap}}(mdev);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03845}03845 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03846}03846         err = \mbox{\hyperlink{mlx5__vport_8c_a8dd5c1036c2579fa7eea69b48d19a7fc}{mlx5\_query\_min\_inline}}(mdev, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a0544449ad0c4ca82351a7139b954d0d7}{tx\_min\_inline\_mode}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03847}03847         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03848}03848                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03849}03849 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03850}03850         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03851}03851 \textcolor{comment}{         * hw lro is currently defaulted to off. when it won't anymore we}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03852}03852 \textcolor{comment}{         * will consider the HW capability: "{}!!MLX5\_CAP\_ETH(mdev, lro\_cap)"{}}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03853}03853 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03854}03854         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a38dfd7126e601a9dba0ec254cde85133}{hw\_lro\_en}} = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03855}03855         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a7df37d728587b7dd77d578816c33b483}{lro\_wqe\_sz}} = \mbox{\hyperlink{en_8h_a2bdd4ffe385f008986b4353aee0c5b60}{MLX5E\_PARAMS\_DEFAULT\_LRO\_WQE\_SZ}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03856}03856 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03857}03857         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03858}03858 \textcolor{comment}{         * CQE zipping is currently defaulted to off. when it won't}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03859}03859 \textcolor{comment}{         * anymore we will consider the HW capability:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03860}03860 \textcolor{comment}{         * "{}!!MLX5\_CAP\_GEN(mdev, cqe\_compression)"{}}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03861}03861 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03862}03862         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa2f2e0b47a30ab74578060a216e1eba0}{cqe\_zipping\_en}} = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03863}03863 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03864}03864         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}} = mdev;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03865}03865         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}} = num\_comp\_vectors;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03866}03866         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aab9a785a3a34a28b13e0aa906dcd1de9}{channels\_rsss}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03867}03867         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a49618d27116467505214a89a55d23bfd}{order\_base\_2\_num\_channels}} = order\_base\_2(num\_comp\_vectors);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03868}03868         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a710b866908bf8ee3539ba9f61a279f99}{queue\_mapping\_channel\_mask}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03869}03869             roundup\_pow\_of\_two(num\_comp\_vectors) -\/ 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03870}03870         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1cf05551cbb12f56a188445ebab36096}{num\_tc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03871}03871         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae0c4eecddc4ca3bc200d8be55bce97eb}{default\_vlan\_prio}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a417aae8f6d79f410b393c30719508ffb}{default\_vlan\_prio}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03872}03872 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03873}03873         INIT\_WORK(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_adfad4339c60cde965d523c0c9a2abc9e}{update\_stats\_work}}, \mbox{\hyperlink{mlx5__en__main_8c_a8904ac549db83f1cb90c9486707c7267}{mlx5e\_update\_stats\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03874}03874         INIT\_WORK(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4e7338a0d87a985d11c2bf4e11b43ddb}{update\_carrier\_work}}, \mbox{\hyperlink{mlx5__en__main_8c_ab58a7586baea5db654fe62857de90d18}{mlx5e\_update\_carrier\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03875}03875         INIT\_WORK(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ad6414c973db68d35d7b343d4b88b2016}{set\_rx\_mode\_work}}, \mbox{\hyperlink{en_8h_a0cb348cb040a1dec9c25be15bcdcabbb}{mlx5e\_set\_rx\_mode\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03876}03876 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03877}03877         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03878}03878 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03879}03879 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03880}03880 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03881}\mbox{\hyperlink{mlx5__en__main_8c_a84f3133f391ab560dbc6a61ebb7891d1}{03881}} \mbox{\hyperlink{mlx5__en__main_8c_a84f3133f391ab560dbc6a61ebb7891d1}{mlx5e\_mkey\_set\_relaxed\_ordering}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev, \textcolor{keywordtype}{void} *mkc)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03882}03882 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03883}03883         \textcolor{keywordtype}{bool} ro\_pci\_enable =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03884}03884             pci\_get\_relaxed\_ordering\_enabled(mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a0819dc9fa4983c9140507e1a02aa8313}{pdev}}-\/>dev.bsddev);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03885}03885         \textcolor{keywordtype}{bool} ro\_write = \mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(mdev, relaxed\_ordering\_write);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03886}03886         \textcolor{keywordtype}{bool} ro\_read = \mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(mdev, relaxed\_ordering\_read);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03887}03887 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03888}03888         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mkc, mkc, relaxed\_ordering\_read, ro\_pci\_enable \&\& ro\_read);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03889}03889         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mkc, mkc, relaxed\_ordering\_write, ro\_pci\_enable \&\& ro\_write);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03890}03890 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03891}03891 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03892}03892 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03893}\mbox{\hyperlink{mlx5__en__main_8c_a7ea75d5af53269f18eeaf84f39e1c865}{03893}} \mbox{\hyperlink{mlx5__en__main_8c_a7ea75d5af53269f18eeaf84f39e1c865}{mlx5e\_create\_mkey}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u32 pdn,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03894}03894                   \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__mkey}{mlx5\_core\_mkey}} *mkey)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03895}03895 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03896}03896         \textcolor{keyword}{struct }ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03897}03897         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03898}03898         \textcolor{keywordtype}{int} inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_mkey\_in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03899}03899         \textcolor{keywordtype}{void} *mkc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03900}03900         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03901}03901         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03902}03902 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03903}03903         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03904}03904         \textcolor{keywordflow}{if} (in == NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03905}03905                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}failed to allocate inbox\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03906}03906                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03907}03907         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03908}03908 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03909}03909         mkc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_mkey\_in, in, memory\_key\_mkey\_entry);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03910}03910         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mkc, mkc, access\_mode, \mbox{\hyperlink{mlx5__ifc_8h_a82f2c6e4d47f62f6b65c5887eb096fd5a7629e18ab02e9643bda5701f756dc481}{MLX5\_ACCESS\_MODE\_PA}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03911}03911         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mkc, mkc, umr\_en, 1);  \textcolor{comment}{/* used by HW TLS */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03912}03912         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mkc, mkc, lw, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03913}03913         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mkc, mkc, lr, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03914}03914         \mbox{\hyperlink{mlx5__en__main_8c_a84f3133f391ab560dbc6a61ebb7891d1}{mlx5e\_mkey\_set\_relaxed\_ordering}}(mdev, mkc);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03915}03915         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mkc, mkc, pd, pdn);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03916}03916         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mkc, mkc, length64, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03917}03917         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(mkc, mkc, qpn, 0xffffff);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03918}03918 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03919}03919         err = \mbox{\hyperlink{driver_8h_aa55afac86fb98fe1a074177838e412bf}{mlx5\_core\_create\_mkey}}(mdev, mkey, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03920}03920         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03921}03921                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}mlx5\_core\_create\_mkey failed, \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03922}03922                     err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03923}03923 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03924}03924         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03925}03925         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03926}03926 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03927}03927 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03928}\mbox{\hyperlink{mlx5__en__main_8c_aa2bfa764919960f3c470d02586d86ee2}{03928}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *\mbox{\hyperlink{mlx5__en__main_8c_aa2bfa764919960f3c470d02586d86ee2}{mlx5e\_vport\_stats\_desc}}[] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03929}03929         \mbox{\hyperlink{en_8h_a168238a66134c848fd01af5d12a1a656}{MLX5E\_VPORT\_STATS}}(\mbox{\hyperlink{en_8h_af4656c8e301a23dbeeedaafa0d11ed58}{MLX5E\_STATS\_DESC}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03930}03930 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03931}03931 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03932}\mbox{\hyperlink{mlx5__en__main_8c_addfa7c7e847b955f6cc197da0a978c9d}{03932}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *\mbox{\hyperlink{mlx5__en__main_8c_addfa7c7e847b955f6cc197da0a978c9d}{mlx5e\_pport\_stats\_desc}}[] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03933}03933         \mbox{\hyperlink{en_8h_ac33610604cffc1d8b88072c664e30f85}{MLX5E\_PPORT\_STATS}}(\mbox{\hyperlink{en_8h_af4656c8e301a23dbeeedaafa0d11ed58}{MLX5E\_STATS\_DESC}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03934}03934 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03935}03935 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03936}03936 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03937}\mbox{\hyperlink{mlx5__en__main_8c_a6d8840e464d33fa23eb55d8518571664}{03937}} \mbox{\hyperlink{mlx5__en__main_8c_a6d8840e464d33fa23eb55d8518571664}{mlx5e\_priv\_static\_init}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03938}03938     \textcolor{keyword}{const} uint32\_t channels)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03939}03939 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03940}03940         uint32\_t x;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03941}03941         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03942}03942 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03943}03943         mtx\_init(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}}, \textcolor{stringliteral}{"{}mlx5async"{}}, MTX\_NETWORK\_LOCK, MTX\_DEF);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03944}03944         sx\_init(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abb17813a694f661010acfe160d392abc}{state\_lock}}, \textcolor{stringliteral}{"{}mlx5state"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03945}03945         callout\_init\_mtx(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a1da6b6b4c3fe400d16dac6fb250b9687}{watchdog}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03946}03946         \mbox{\hyperlink{doorbell_8h_a28cb1fd8b806f75545cb39ee33540d07}{MLX5\_INIT\_DOORBELL\_LOCK}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>doorbell\_lock);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03947}03947         \textcolor{keywordflow}{for} (x = 0; x != channels; x++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03948}03948                 \mbox{\hyperlink{mlx5__en__main_8c_ac64261216f7f7893c375a5dde4ebfd65}{mlx5e\_chan\_static\_init}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[x], x);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03949}03949 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03950}03950         \textcolor{keywordflow}{for} (x = 0; x != channels; x++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03951}03951                 err = \mbox{\hyperlink{driver_8h_a654725775f68d9de65f8e84e953e98ea}{mlx5\_alloc\_bfreg}}(mdev, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[x].\mbox{\hyperlink{structmlx5e__channel_ad2f36c2524158dcbe7602e4b6b7d222c}{bfreg}}, \textcolor{keyword}{false}, \textcolor{keyword}{false});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03952}03952                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03953}03953                         \textcolor{keywordflow}{goto} err\_alloc\_bfreg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03954}03954         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03955}03955         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03956}03956 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03957}03957 err\_alloc\_bfreg:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03958}03958         \textcolor{keywordflow}{while} (x-\/-\/)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03959}03959                 \mbox{\hyperlink{driver_8h_adee537595fedf697ff978143068905cc}{mlx5\_free\_bfreg}}(mdev, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[x].\mbox{\hyperlink{structmlx5e__channel_ad2f36c2524158dcbe7602e4b6b7d222c}{bfreg}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03960}03960 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03961}03961         \textcolor{keywordflow}{for} (x = 0; x != channels; x++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03962}03962                 \mbox{\hyperlink{mlx5__en__main_8c_a3015b47e4cff561482b58706528acf32}{mlx5e\_chan\_static\_destroy}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03963}03963         callout\_drain(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a1da6b6b4c3fe400d16dac6fb250b9687}{watchdog}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03964}03964         mtx\_destroy(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03965}03965         sx\_destroy(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abb17813a694f661010acfe160d392abc}{state\_lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03966}03966         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03967}03967 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03968}03968 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03969}03969 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03970}\mbox{\hyperlink{mlx5__en__main_8c_aed858be16cf2d0a0683ff840a1034fbf}{03970}} \mbox{\hyperlink{mlx5__en__main_8c_aed858be16cf2d0a0683ff840a1034fbf}{mlx5e\_priv\_static\_destroy}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03971}03971     \textcolor{keyword}{const} uint32\_t channels)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03972}03972 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03973}03973         uint32\_t x;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03974}03974 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03975}03975         \textcolor{keywordflow}{for} (x = 0; x != channels; x++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03976}03976                 \mbox{\hyperlink{driver_8h_adee537595fedf697ff978143068905cc}{mlx5\_free\_bfreg}}(mdev, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[x].\mbox{\hyperlink{structmlx5e__channel_ad2f36c2524158dcbe7602e4b6b7d222c}{bfreg}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03977}03977         \textcolor{keywordflow}{for} (x = 0; x != channels; x++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03978}03978                 \mbox{\hyperlink{mlx5__en__main_8c_a3015b47e4cff561482b58706528acf32}{mlx5e\_chan\_static\_destroy}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[x]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03979}03979         callout\_drain(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a1da6b6b4c3fe400d16dac6fb250b9687}{watchdog}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03980}03980         mtx\_destroy(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03981}03981         sx\_destroy(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abb17813a694f661010acfe160d392abc}{state\_lock}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03982}03982 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03983}03983 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03984}03984 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03985}\mbox{\hyperlink{mlx5__en__main_8c_ae20aaabeef3ded48827be1c5a073315a}{03985}} \mbox{\hyperlink{mlx5__en__main_8c_ae20aaabeef3ded48827be1c5a073315a}{sysctl\_firmware}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03986}03986 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03987}03987         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03988}03988 \textcolor{comment}{         * \%d.\%d\%.d the string format.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03989}03989 \textcolor{comment}{         * fw\_rev\_\{maj,min,sub\} return u16, 2\string^16 = 65536.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03990}03990 \textcolor{comment}{         * We need at most 5 chars to store that.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03991}03991 \textcolor{comment}{         * It also has: two "{}."{} and NULL at the end, which means we need 18}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03992}03992 \textcolor{comment}{         * (5*3 + 3) chars at most.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03993}03993 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03994}03994         \textcolor{keywordtype}{char} fw[18];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03995}03995         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03996}03996         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03997}03997 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03998}03998         snprintf(fw, \textcolor{keyword}{sizeof}(fw), \textcolor{stringliteral}{"{}\%d.\%d.\%d"{}}, \mbox{\hyperlink{driver_8h_aac303e5daa4c05373d03ecf1c27f989a}{fw\_rev\_maj}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}), \mbox{\hyperlink{driver_8h_a77315790a4abc2005bdc9e4a18ce0ba8}{fw\_rev\_min}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l03999}03999             \mbox{\hyperlink{driver_8h_a4567f1f6bbf351f774c6d79b4f755813}{fw\_rev\_sub}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04000}04000         error = sysctl\_handle\_string(oidp, fw, \textcolor{keyword}{sizeof}(fw), req);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04001}04001         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04002}04002 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04003}04003 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04004}04004 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04005}\mbox{\hyperlink{mlx5__en__main_8c_a9a15fa6ac0a771dbfcc8c649956cdd70}{04005}} \mbox{\hyperlink{mlx5__en__main_8c_a9a15fa6ac0a771dbfcc8c649956cdd70}{mlx5e\_disable\_tx\_dma}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *ch)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04006}04006 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04007}04007         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04008}04008 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04009}04009         \textcolor{keywordflow}{for} (i = 0; i < ch-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04010}04010                 \mbox{\hyperlink{mlx5__en__main_8c_a39ac3d96a9ab067fc2450e63196df054}{mlx5e\_drain\_sq}}(\&ch-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04011}04011 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04012}04012 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04013}04013 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04014}\mbox{\hyperlink{mlx5__en__main_8c_ac58dccf111973909154eb16b77746654}{04014}} \mbox{\hyperlink{mlx5__en__main_8c_ac58dccf111973909154eb16b77746654}{mlx5e\_reset\_sq\_doorbell\_record}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04015}04015 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04016}04016 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04017}04017         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_aba0338793ccf6d370305287e2a68898b}{doorbell}}.\mbox{\hyperlink{structmlx5e__sq_ab07dead7746d58408a4c5912a30f155d}{d32}}[0] = cpu\_to\_be32(\mbox{\hyperlink{device_8h_a4caf8d8f829279fba122163d961608a4a12af45af9f239a5c42260a4755e06fc7}{MLX5\_OPCODE\_NOP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04018}04018         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_aba0338793ccf6d370305287e2a68898b}{doorbell}}.\mbox{\hyperlink{structmlx5e__sq_ab07dead7746d58408a4c5912a30f155d}{d32}}[1] = cpu\_to\_be32(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_ae65e9f03d02b152e7f24b1ae80917ac0}{sqn}} << 8);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04019}04019         \mbox{\hyperlink{en_8h_a1e1594b5c6e312f81ffc97fd75213b8a}{mlx5e\_tx\_notify\_hw}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \textcolor{keyword}{true});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04020}04020 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04021}04021 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04022}04022 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04023}\mbox{\hyperlink{en_8h_a24dffc80960cb9b574a8aaa10b33176b}{04023}} \mbox{\hyperlink{mlx5__en__main_8c_a24dffc80960cb9b574a8aaa10b33176b}{mlx5e\_resume\_sq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04024}04024 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04025}04025         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04026}04026 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04027}04027         \textcolor{comment}{/* check if already enabled */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04028}04028         \textcolor{keywordflow}{if} (READ\_ONCE(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a0f3f10420027122a12aab9bb40f4f7ec}{running}}) != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04029}04029                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04030}04030 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04031}04031         err = \mbox{\hyperlink{mlx5__en__main_8c_a32f680a788e46bbe36471d835e60fa4d}{mlx5e\_modify\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \mbox{\hyperlink{mlx5__ifc_8h_a87d22175c5de65fbe6a0b3b53305dee4a8b433936e3fde71187569fd199899b9d}{MLX5\_SQC\_STATE\_ERR}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04032}04032             \mbox{\hyperlink{mlx5__ifc_8h_a87d22175c5de65fbe6a0b3b53305dee4a231f626c8a5e2d1adde1343ba62ef026}{MLX5\_SQC\_STATE\_RST}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04033}04033         \textcolor{keywordflow}{if} (err != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04034}04034                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_add5663128f6e4862712b3935d3252ad3}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04035}04035                     \textcolor{stringliteral}{"{}mlx5e\_modify\_sq() from ERR to RST failed: \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04036}04036         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04037}04037 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04038}04038         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a9c89e648a4f3731d3432fd4a9ef76937}{cc}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04039}04039         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>pc = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04040}04040 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04041}04041         \textcolor{comment}{/* reset doorbell prior to moving from RST to RDY */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04042}04042         \mbox{\hyperlink{mlx5__en__main_8c_ac58dccf111973909154eb16b77746654}{mlx5e\_reset\_sq\_doorbell\_record}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04043}04043 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04044}04044         err = \mbox{\hyperlink{mlx5__en__main_8c_a32f680a788e46bbe36471d835e60fa4d}{mlx5e\_modify\_sq}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \mbox{\hyperlink{mlx5__ifc_8h_a87d22175c5de65fbe6a0b3b53305dee4a231f626c8a5e2d1adde1343ba62ef026}{MLX5\_SQC\_STATE\_RST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04045}04045             \mbox{\hyperlink{mlx5__ifc_8h_a87d22175c5de65fbe6a0b3b53305dee4a8dd62869ad439c66cbc4fa11e028fb64}{MLX5\_SQC\_STATE\_RDY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04046}04046         \textcolor{keywordflow}{if} (err != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04047}04047                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_add5663128f6e4862712b3935d3252ad3}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04048}04048                     \textcolor{stringliteral}{"{}mlx5e\_modify\_sq() from RST to RDY failed: \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04049}04049         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04050}04050 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04051}04051         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_afa3cd1751ffda9d1b4fdd25fa8900c07}{cev\_next\_state}} = \mbox{\hyperlink{en_8h_af1f33bcd671b960c4e749dd60890e4f1}{MLX5E\_CEV\_STATE\_INITIAL}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04052}04052         WRITE\_ONCE(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a0f3f10420027122a12aab9bb40f4f7ec}{running}}, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04053}04053 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04054}04054 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04055}04055 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04056}\mbox{\hyperlink{mlx5__en__main_8c_a94d7a75f223d15f50e4369417bd17b44}{04056}} \mbox{\hyperlink{mlx5__en__main_8c_a94d7a75f223d15f50e4369417bd17b44}{mlx5e\_enable\_tx\_dma}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *ch)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04057}04057 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04058}04058         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04059}04059 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04060}04060         \textcolor{keywordflow}{for} (i = 0; i < ch-\/>\mbox{\hyperlink{structmlx5e__channel_a876e7f03c2ea4d219f1a6bfa1d8463ab}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19e25fc2c071c79efa74623600132fd3}{num\_tc}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04061}04061                 \mbox{\hyperlink{mlx5__en__main_8c_a24dffc80960cb9b574a8aaa10b33176b}{mlx5e\_resume\_sq}}(\&ch-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04062}04062 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04063}04063 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04064}04064 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04065}\mbox{\hyperlink{mlx5__en__main_8c_acdf344760cdce0af1d7263e94a36ef1d}{04065}} \mbox{\hyperlink{mlx5__en__main_8c_acdf344760cdce0af1d7263e94a36ef1d}{mlx5e\_disable\_rx\_dma}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *ch)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04066}04066 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04067}04067         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}} = \&ch-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04068}04068         \textcolor{keyword}{struct }epoch\_tracker et;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04069}04069         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04070}04070 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04071}04071         mtx\_lock(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04072}04072         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a33214472cad1cdcb236c9ef4825975e5}{enabled}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04073}04073         callout\_stop(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af74db0dab1c630bcd6f19e5a05abdb97}{watchdog}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04074}04074         mtx\_unlock(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a3f119df0480e3059832580c93b09c064}{mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04075}04075 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04076}04076         err = \mbox{\hyperlink{mlx5__en__main_8c_ad291f4457e0552b01be252a71eb5da84}{mlx5e\_modify\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a6332becd8d3eb025d3bc865afdeb186f}{MLX5\_RQC\_STATE\_RDY}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4adffeb1926d5b3433e22c95c01c45d231}{MLX5\_RQC\_STATE\_ERR}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04077}04077         \textcolor{keywordflow}{if} (err != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04078}04078                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aff32dc37bf8f54248142c6e54e4ee88d}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04079}04079                     \textcolor{stringliteral}{"{}mlx5e\_modify\_rq() from RDY to RST failed: \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04080}04080         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04081}04081 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04082}04082         \textcolor{keywordflow}{while} (!\mbox{\hyperlink{wq_8h_a742bbb6f28d8565d0ac30098f8dffc64}{mlx5\_wq\_ll\_is\_empty}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04083}04083                 msleep(1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04084}04084                 NET\_EPOCH\_ENTER(et);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04085}04085                 \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}.\mbox{\hyperlink{structmlx5__core__cq_a7fd008e4e7eb4f052083824c0a0d7589}{comp}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04086}04086                 NET\_EPOCH\_EXIT(et);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04087}04087         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04088}04088 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04089}04089         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04090}04090 \textcolor{comment}{         * Transitioning into RST state will allow the FW to track less ERR state queues,}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04091}04091 \textcolor{comment}{         * thus reducing the recv queue flushing time}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04092}04092 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04093}04093         err = \mbox{\hyperlink{mlx5__en__main_8c_ad291f4457e0552b01be252a71eb5da84}{mlx5e\_modify\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4adffeb1926d5b3433e22c95c01c45d231}{MLX5\_RQC\_STATE\_ERR}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a812db5900cdf3e90699bcd5e5ea4035b}{MLX5\_RQC\_STATE\_RST}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04094}04094         \textcolor{keywordflow}{if} (err != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04095}04095                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aff32dc37bf8f54248142c6e54e4ee88d}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04096}04096                     \textcolor{stringliteral}{"{}mlx5e\_modify\_rq() from ERR to RST failed: \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04097}04097         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04098}04098 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04099}04099 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04100}04100 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04101}\mbox{\hyperlink{mlx5__en__main_8c_a5b8eb6096c34d9199706860486afc2fc}{04101}} \mbox{\hyperlink{mlx5__en__main_8c_a5b8eb6096c34d9199706860486afc2fc}{mlx5e\_enable\_rx\_dma}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *ch)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04102}04102 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04103}04103         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__rq}{mlx5e\_rq}} *\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}} = \&ch-\/>\mbox{\hyperlink{structmlx5e__channel_a05bacb267de436fdfa6fa3148b61cb08}{rq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04104}04104         \textcolor{keyword}{struct }epoch\_tracker et;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04105}04105         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04106}04106 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04107}04107         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}}.\mbox{\hyperlink{structmlx5__wq__ll_a48612a62a41312f8e2389340ee330127}{wqe\_ctr}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04108}04108         \mbox{\hyperlink{wq_8h_afd8ebe19e14bbca963f16b85a9b4ee48}{mlx5\_wq\_ll\_update\_db\_record}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_af73e7d74ad8352b1fcf761e310b9772e}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04109}04109         err = \mbox{\hyperlink{mlx5__en__main_8c_ad291f4457e0552b01be252a71eb5da84}{mlx5e\_modify\_rq}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a812db5900cdf3e90699bcd5e5ea4035b}{MLX5\_RQC\_STATE\_RST}}, \mbox{\hyperlink{mlx5__ifc_8h_abe4eb8a7f480877e96248c1c2b2b96a4a6332becd8d3eb025d3bc865afdeb186f}{MLX5\_RQC\_STATE\_RDY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04110}04110         \textcolor{keywordflow}{if} (err != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04111}04111                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_aff32dc37bf8f54248142c6e54e4ee88d}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04112}04112                     \textcolor{stringliteral}{"{}mlx5e\_modify\_rq() from RST to RDY failed: \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04113}04113         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04114}04114 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04115}04115         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a33214472cad1cdcb236c9ef4825975e5}{enabled}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04116}04116 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04117}04117         NET\_EPOCH\_ENTER(et);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04118}04118         \mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}.\mbox{\hyperlink{structmlx5__core__cq_a7fd008e4e7eb4f052083824c0a0d7589}{comp}}(\&\mbox{\hyperlink{en_8h_a34505eb7805ba3ccf9969192542b52ad}{rq}}-\/>\mbox{\hyperlink{structmlx5e__rq_a7a4768d6d167831e23f888181960237f}{cq}}.\mbox{\hyperlink{structmlx5e__cq_ad9262877d1d03c6f244bdd35128e89ba}{mcq}}, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04119}04119         NET\_EPOCH\_EXIT(et);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04120}04120 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04121}04121 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04122}04122 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04123}\mbox{\hyperlink{en_8h_a0dd1382243655875a9aadcc8dbe4baa5}{04123}} \mbox{\hyperlink{mlx5__en__main_8c_a0dd1382243655875a9aadcc8dbe4baa5}{mlx5e\_modify\_tx\_dma}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, uint8\_t value)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04124}04124 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04125}04125         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04126}04126 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04127}04127         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04128}04128                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04129}04129 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04130}04130         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04131}04131                 \textcolor{keywordflow}{if} (value)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04132}04132                         \mbox{\hyperlink{mlx5__en__main_8c_a9a15fa6ac0a771dbfcc8c649956cdd70}{mlx5e\_disable\_tx\_dma}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04133}04133                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04134}04134                         \mbox{\hyperlink{mlx5__en__main_8c_a94d7a75f223d15f50e4369417bd17b44}{mlx5e\_enable\_tx\_dma}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04135}04135         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04136}04136 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04137}04137 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04138}04138 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04139}\mbox{\hyperlink{en_8h_ad727f96a83eb1f91b09f14134e7fa5ee}{04139}} \mbox{\hyperlink{mlx5__en__main_8c_ad727f96a83eb1f91b09f14134e7fa5ee}{mlx5e\_modify\_rx\_dma}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, uint8\_t value)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04140}04140 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04141}04141         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04142}04142 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04143}04143         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8aec33f2064af07bad472151247b8ad9f9}{MLX5E\_STATE\_OPENED}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04144}04144                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04145}04145 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04146}04146         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04147}04147                 \textcolor{keywordflow}{if} (value)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04148}04148                         \mbox{\hyperlink{mlx5__en__main_8c_acdf344760cdce0af1d7263e94a36ef1d}{mlx5e\_disable\_rx\_dma}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04149}04149                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04150}04150                         \mbox{\hyperlink{mlx5__en__main_8c_a5b8eb6096c34d9199706860486afc2fc}{mlx5e\_enable\_rx\_dma}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04151}04151         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04152}04152 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04153}04153 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04154}04154 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04155}\mbox{\hyperlink{mlx5__en__main_8c_a5610ba9c516873fec6b54b7441617ec9}{04155}} \mbox{\hyperlink{mlx5__en__main_8c_a5610ba9c516873fec6b54b7441617ec9}{mlx5e\_add\_hw\_stats}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04156}04156 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04157}04157         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a3f28a45977de13d58c68e0920f058867}{sysctl\_hw}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04158}04158             OID\_AUTO, \textcolor{stringliteral}{"{}fw\_version"{}}, CTLTYPE\_STRING | CTLFLAG\_RD | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04159}04159             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, 0, \mbox{\hyperlink{mlx5__en__main_8c_ae20aaabeef3ded48827be1c5a073315a}{sysctl\_firmware}}, \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}HCA firmware version"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04160}04160 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04161}04161         SYSCTL\_ADD\_STRING(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a3f28a45977de13d58c68e0920f058867}{sysctl\_hw}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04162}04162             OID\_AUTO, \textcolor{stringliteral}{"{}board\_id"{}}, CTLFLAG\_RD, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}-\/>\mbox{\hyperlink{structmlx5__core__dev_a3377ba00722fd20a0dd781f61ac1d337}{board\_id}}, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04163}04163             \textcolor{stringliteral}{"{}Board ID"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04164}04164 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04165}04165 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04166}04166 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04167}\mbox{\hyperlink{mlx5__en__main_8c_aacfb1e9c22d2843c11271e652d979c05}{04167}} \mbox{\hyperlink{mlx5__en__main_8c_aacfb1e9c22d2843c11271e652d979c05}{mlx5e\_sysctl\_tx\_priority\_flow\_control}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04168}04168 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04169}04169         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04170}04170         uint8\_t temp[\mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04171}04171         uint32\_t tx\_pfc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04172}04172         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04173}04173         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04174}04174 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04175}04175         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04176}04176 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04177}04177         tx\_pfc = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad921466ac1574343d8589cdf5a905070}{tx\_priority\_flow\_control}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04178}04178 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04179}04179         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04180}04180                 temp[i] = (tx\_pfc >> i) \& 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04181}04181 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04182}04182         err = SYSCTL\_OUT(req, temp, \mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04183}04183         \textcolor{keywordflow}{if} (err || !req-\/>newptr)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04184}04184                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04185}04185         err = SYSCTL\_IN(req, temp, \mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04186}04186         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04187}04187                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04188}04188 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04189}04189         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad921466ac1574343d8589cdf5a905070}{tx\_priority\_flow\_control}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04190}04190 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04191}04191         \textcolor{comment}{/* range check input value */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04192}04192         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04193}04193                 \textcolor{keywordflow}{if} (temp[i] > 1) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04194}04194                         err = ERANGE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04195}04195                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04196}04196                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04197}04197                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad921466ac1574343d8589cdf5a905070}{tx\_priority\_flow\_control}} |= (temp[i] << i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04198}04198         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04199}04199 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04200}04200         \textcolor{comment}{/* check if update is required */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04201}04201         \textcolor{keywordflow}{if} (tx\_pfc != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad921466ac1574343d8589cdf5a905070}{tx\_priority\_flow\_control}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04202}04202                 err = -\/\mbox{\hyperlink{mlx5__en__main_8c_ab88e2bdddc6c5c8eddbbda50a8459c81}{mlx5e\_set\_port\_pfc}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04203}04203 done:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04204}04204         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04205}04205                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad921466ac1574343d8589cdf5a905070}{tx\_priority\_flow\_control}}= tx\_pfc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04206}04206         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04207}04207 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04208}04208         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04209}04209 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04210}04210 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04211}04211 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04212}\mbox{\hyperlink{mlx5__en__main_8c_a4657695302b0bd319239e4eddda50630}{04212}} \mbox{\hyperlink{mlx5__en__main_8c_a4657695302b0bd319239e4eddda50630}{mlx5e\_sysctl\_rx\_priority\_flow\_control}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04213}04213 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04214}04214         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04215}04215         uint8\_t temp[\mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04216}04216         uint32\_t rx\_pfc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04217}04217         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04218}04218         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04219}04219 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04220}04220         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04221}04221 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04222}04222         rx\_pfc = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa064cdabd465e046026fb82a4b01ad8f}{rx\_priority\_flow\_control}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04223}04223 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04224}04224         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}}; i++)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04225}04225                 temp[i] = (rx\_pfc >> i) \& 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04226}04226 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04227}04227         err = SYSCTL\_OUT(req, temp, \mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04228}04228         \textcolor{keywordflow}{if} (err || !req-\/>newptr)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04229}04229                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04230}04230         err = SYSCTL\_IN(req, temp, \mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04231}04231         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04232}04232                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04233}04233 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04234}04234         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa064cdabd465e046026fb82a4b01ad8f}{rx\_priority\_flow\_control}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04235}04235 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04236}04236         \textcolor{comment}{/* range check input value */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04237}04237         \textcolor{keywordflow}{for} (i = 0; i != \mbox{\hyperlink{en_8h_a86a6351aa591c0a7fa058d6de7728dea}{MLX5E\_MAX\_PRIORITY}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04238}04238                 \textcolor{keywordflow}{if} (temp[i] > 1) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04239}04239                         err = ERANGE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04240}04240                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04241}04241                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04242}04242                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa064cdabd465e046026fb82a4b01ad8f}{rx\_priority\_flow\_control}} |= (temp[i] << i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04243}04243         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04244}04244 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04245}04245         \textcolor{comment}{/* check if update is required */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04246}04246         \textcolor{keywordflow}{if} (rx\_pfc != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa064cdabd465e046026fb82a4b01ad8f}{rx\_priority\_flow\_control}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04247}04247                 err = -\/\mbox{\hyperlink{mlx5__en__main_8c_ab88e2bdddc6c5c8eddbbda50a8459c81}{mlx5e\_set\_port\_pfc}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04248}04248                 \textcolor{keywordflow}{if} (err == 0 \&\& \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a40c79109d4c379a43e830b3924d38188}{sw\_is\_port\_buf\_owner}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04249}04249                         err = \mbox{\hyperlink{en_8h_a361585a8af7d3bf658bc6fe1df6b05ee}{mlx5e\_update\_buf\_lossy}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04250}04250         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04251}04251 done:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04252}04252         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04253}04253                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa064cdabd465e046026fb82a4b01ad8f}{rx\_priority\_flow\_control}}= rx\_pfc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04254}04254         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04255}04255 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04256}04256         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04257}04257 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04258}04258 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04259}04259 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04260}\mbox{\hyperlink{mlx5__en__main_8c_a52f58b419a5f2972e68057e2bcbb2d05}{04260}} \mbox{\hyperlink{mlx5__en__main_8c_a52f58b419a5f2972e68057e2bcbb2d05}{mlx5e\_setup\_pauseframes}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04261}04261 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04262}04262         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04263}04263 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04264}04264         \textcolor{comment}{/* enable pauseframes by default */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04265}04265         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.tx\_pauseframe\_control = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04266}04266         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.rx\_pauseframe\_control = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04267}04267 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04268}04268         \textcolor{comment}{/* disable ports flow control, PFC, by default */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04269}04269         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad921466ac1574343d8589cdf5a905070}{tx\_priority\_flow\_control}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04270}04270         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa064cdabd465e046026fb82a4b01ad8f}{rx\_priority\_flow\_control}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04271}04271 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04272}04272         \textcolor{comment}{/* register pauseframe SYSCTLs */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04273}04273         SYSCTL\_ADD\_INT(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04274}04274             OID\_AUTO, \textcolor{stringliteral}{"{}tx\_pauseframe\_control"{}}, CTLFLAG\_RDTUN,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04275}04275             \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.tx\_pauseframe\_control, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04276}04276             \textcolor{stringliteral}{"{}Set to enable TX pause frames. Clear to disable."{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04277}04277 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04278}04278         SYSCTL\_ADD\_INT(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04279}04279             OID\_AUTO, \textcolor{stringliteral}{"{}rx\_pauseframe\_control"{}}, CTLFLAG\_RDTUN,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04280}04280             \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.rx\_pauseframe\_control, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04281}04281             \textcolor{stringliteral}{"{}Set to enable RX pause frames. Clear to disable."{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04282}04282 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04283}04283         \textcolor{comment}{/* register priority flow control, PFC, SYSCTLs */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04284}04284         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04285}04285             OID\_AUTO, \textcolor{stringliteral}{"{}tx\_priority\_flow\_control"{}}, CTLTYPE\_U8 | CTLFLAG\_RWTUN |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04286}04286             CTLFLAG\_MPSAFE, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, 0, \&\mbox{\hyperlink{mlx5__en__main_8c_aacfb1e9c22d2843c11271e652d979c05}{mlx5e\_sysctl\_tx\_priority\_flow\_control}}, \textcolor{stringliteral}{"{}CU"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04287}04287             \textcolor{stringliteral}{"{}Set to enable TX ports flow control frames for priorities 0..7. Clear to disable."{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04288}04288 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04289}04289         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04290}04290             OID\_AUTO, \textcolor{stringliteral}{"{}rx\_priority\_flow\_control"{}}, CTLTYPE\_U8 | CTLFLAG\_RWTUN |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04291}04291             CTLFLAG\_MPSAFE, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, 0, \&\mbox{\hyperlink{mlx5__en__main_8c_a4657695302b0bd319239e4eddda50630}{mlx5e\_sysctl\_rx\_priority\_flow\_control}}, \textcolor{stringliteral}{"{}CU"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04292}04292             \textcolor{stringliteral}{"{}Set to enable RX ports flow control frames for priorities 0..7. Clear to disable."{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04293}04293 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04294}04294         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04295}04295 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04296}04296         \textcolor{comment}{/* range check */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04297}04297         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.tx\_pauseframe\_control =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04298}04298             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.tx\_pauseframe\_control ? 1 : 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04299}04299         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.rx\_pauseframe\_control =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04300}04300             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.rx\_pauseframe\_control ? 1 : 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04301}04301 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04302}04302         \textcolor{comment}{/* update firmware */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04303}04303         error = \mbox{\hyperlink{mlx5__en__main_8c_af3345c2e2849260dc7be345f293f53e1}{mlx5e\_set\_port\_pause\_and\_pfc}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04304}04304         \textcolor{keywordflow}{if} (error == -\/EINVAL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04305}04305                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04306}04306                     \textcolor{stringliteral}{"{}Global pauseframes must be disabled before enabling PFC.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04307}04307                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_aa064cdabd465e046026fb82a4b01ad8f}{rx\_priority\_flow\_control}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04308}04308                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_ad921466ac1574343d8589cdf5a905070}{tx\_priority\_flow\_control}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04309}04309 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04310}04310                 \textcolor{comment}{/* update firmware */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04311}04311                 (void) \mbox{\hyperlink{mlx5__en__main_8c_af3345c2e2849260dc7be345f293f53e1}{mlx5e\_set\_port\_pause\_and\_pfc}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04312}04312         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04313}04313         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04314}04314 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04315}04315 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04316}04316 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04317}\mbox{\hyperlink{mlx5__en__main_8c_a96745e9bdd6d1fd735b27ceb53d19f44}{04317}} \mbox{\hyperlink{mlx5__en__main_8c_a96745e9bdd6d1fd735b27ceb53d19f44}{mlx5e\_ul\_snd\_tag\_alloc}}(\textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04318}04318     \textcolor{keyword}{union} if\_snd\_tag\_alloc\_params *\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04319}04319     \textcolor{keyword}{struct} m\_snd\_tag **ppmt)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04320}04320 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04321}04321         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04322}04322         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *pch;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04323}04323 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04324}04324         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04325}04325 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04326}04326         \textcolor{keywordflow}{if} (unlikely(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4795b5a0fa2d0a63a36e40c448f9f50b}{gone}} || params-\/>hdr.flowtype == M\_HASHTYPE\_NONE)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04327}04327                 \textcolor{keywordflow}{return} (EOPNOTSUPP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04328}04328         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04329}04329                 \textcolor{comment}{/* keep this code synced with mlx5e\_select\_queue() */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04330}04330                 u32 ch = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04331}04331 \textcolor{preprocessor}{\#ifdef RSS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04332}04332                 u32 temp;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04333}04333 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04334}04334                 \textcolor{keywordflow}{if} (rss\_hash2bucket(params-\/>hdr.flowid,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04335}04335                     params-\/>hdr.flowtype, \&temp) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04336}04336                         ch = temp \% ch;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04337}04337                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04338}04338 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04339}04339                         ch = (params-\/>hdr.flowid \% 128) \% ch;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04340}04340 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04341}04341                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04342}04342 \textcolor{comment}{                 * NOTE: The channels array is only freed at detach}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04343}04343 \textcolor{comment}{                 * and it safe to return a pointer to the send tag}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04344}04344 \textcolor{comment}{                 * inside the channels structure as long as we}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04345}04345 \textcolor{comment}{                 * reference the priv.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04346}04346 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04347}04347                 pch = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}} + ch;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04348}04348 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04349}04349                 \textcolor{comment}{/* check if send queue is not running */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04350}04350                 \textcolor{keywordflow}{if} (unlikely(pch-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[0].\mbox{\hyperlink{structmlx5e__sq_a0f3f10420027122a12aab9bb40f4f7ec}{running}} == 0))}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04351}04351                         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04352}04352                 m\_snd\_tag\_ref(\&pch-\/>\mbox{\hyperlink{structmlx5e__channel_afbe3317bd59e9237fdc20fbbc210754a}{tag}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04353}04353                 *ppmt = \&pch-\/>\mbox{\hyperlink{structmlx5e__channel_afbe3317bd59e9237fdc20fbbc210754a}{tag}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04354}04354                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04355}04355         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04356}04356 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04357}04357 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04358}04358 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04359}\mbox{\hyperlink{mlx5__en__main_8c_a58ff79c24465bcd8e2436fc3807b16d4}{04359}} \mbox{\hyperlink{mlx5__en__main_8c_a33deecaa1766fda55afbc38fdac590f8}{mlx5e\_ul\_snd\_tag\_query}}(\textcolor{keyword}{struct} m\_snd\_tag *pmt, \textcolor{keyword}{union} if\_snd\_tag\_query\_params *params)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04360}04360 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04361}04361         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *pch =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04362}04362             container\_of(pmt, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}}, \mbox{\hyperlink{en_8h_afc9f03e6e54bbc07f5b9e002750fe675}{tag}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04363}04363 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04364}04364         params-\/>unlimited.max\_rate = -\/1ULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04365}04365         params-\/>unlimited.queue\_level = \mbox{\hyperlink{en_8h_a3367dd8d30b33a6f3d6204c13882e1a0}{mlx5e\_sq\_queue\_level}}(\&pch-\/>\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[0]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04366}04366         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04367}04367 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04368}04368 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04369}04369 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04370}\mbox{\hyperlink{mlx5__en__main_8c_af28e17da5d27f28cfbd735650ec06d81}{04370}} \mbox{\hyperlink{mlx5__en__main_8c_a791118100eafb237307f01df479370bc}{mlx5e\_ul\_snd\_tag\_free}}(\textcolor{keyword}{struct} m\_snd\_tag *pmt)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04371}04371 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04372}04372         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}} *pch =}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04373}04373             container\_of(pmt, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__channel}{mlx5e\_channel}}, \mbox{\hyperlink{en_8h_afc9f03e6e54bbc07f5b9e002750fe675}{tag}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04374}04374 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04375}04375         complete(\&pch-\/>\mbox{\hyperlink{structmlx5e__channel_abb27bb705024bc5969e161721865d416}{completion}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04376}04376 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04377}04377 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04378}04378 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04379}\mbox{\hyperlink{mlx5__en__main_8c_a96b6a70ac59fe95b77dfe722e486cebc}{04379}} \mbox{\hyperlink{mlx5__en__main_8c_a96b6a70ac59fe95b77dfe722e486cebc}{mlx5e\_snd\_tag\_alloc}}(\textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04380}04380     \textcolor{keyword}{union} if\_snd\_tag\_alloc\_params *params,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04381}04381     \textcolor{keyword}{struct} m\_snd\_tag **ppmt)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04382}04382 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04383}04383 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04384}04384         \textcolor{keywordflow}{switch} (params-\/>hdr.type) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04385}04385 \textcolor{preprocessor}{\#ifdef RATELIMIT}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04386}04386         \textcolor{keywordflow}{case} IF\_SND\_TAG\_TYPE\_RATE\_LIMIT:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04387}04387                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{en__rl_8h_ac78c35c395cf3330583f50721ce10d81}{mlx5e\_rl\_snd\_tag\_alloc}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, params, ppmt));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04388}04388 \textcolor{preprocessor}{\#ifdef KERN\_TLS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04389}04389         \textcolor{keywordflow}{case} IF\_SND\_TAG\_TYPE\_TLS\_RATE\_LIMIT:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04390}04390                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{en__hw__tls_8h_a835c4aac14d32d191aa2af819a46392a}{mlx5e\_tls\_snd\_tag\_alloc}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, params, ppmt));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04391}04391 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04392}04392 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04393}04393         \textcolor{keywordflow}{case} IF\_SND\_TAG\_TYPE\_UNLIMITED:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04394}04394                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{mlx5__en__main_8c_a96745e9bdd6d1fd735b27ceb53d19f44}{mlx5e\_ul\_snd\_tag\_alloc}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, params, ppmt));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04395}04395 \textcolor{preprocessor}{\#ifdef KERN\_TLS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04396}04396         \textcolor{keywordflow}{case} IF\_SND\_TAG\_TYPE\_TLS:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04397}04397                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{en__hw__tls_8h_a835c4aac14d32d191aa2af819a46392a}{mlx5e\_tls\_snd\_tag\_alloc}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, params, ppmt));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04398}04398         \textcolor{keywordflow}{case} IF\_SND\_TAG\_TYPE\_TLS\_RX:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04399}04399                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{en__hw__tls__rx_8h_adc386a4f5f99c29396d1d380d2e9be2c}{mlx5e\_tls\_rx\_snd\_tag\_alloc}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, params, ppmt));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04400}04400 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04401}04401         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04402}04402                 \textcolor{keywordflow}{return} (EOPNOTSUPP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04403}04403         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04404}04404 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04405}04405 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04406}04406 \textcolor{preprocessor}{\#ifdef RATELIMIT}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04407}04407 \textcolor{preprocessor}{\#define NUM\_HDWR\_RATES\_MLX 13}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04408}04408 \textcolor{keyword}{static} \textcolor{keyword}{const} uint64\_t adapter\_rates\_mlx[NUM\_HDWR\_RATES\_MLX] = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04409}04409         135375,                 \textcolor{comment}{/* 1,083,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04410}04410         180500,                 \textcolor{comment}{/* 1,444,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04411}04411         270750,                 \textcolor{comment}{/* 2,166,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04412}04412         361000,                 \textcolor{comment}{/* 2,888,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04413}04413         541500,                 \textcolor{comment}{/* 4,332,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04414}04414         721875,                 \textcolor{comment}{/* 5,775,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04415}04415         1082875,                \textcolor{comment}{/* 8,663,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04416}04416         1443875,                \textcolor{comment}{/* 11,551,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04417}04417         2165750,                \textcolor{comment}{/* 17,326,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04418}04418         2887750,                \textcolor{comment}{/* 23,102,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04419}04419         4331625,                \textcolor{comment}{/* 34,653,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04420}04420         5775500,                \textcolor{comment}{/* 46,204,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04421}04421         8663125                 \textcolor{comment}{/* 69,305,000 */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04422}04422 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04423}04423 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04424}04424 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04425}04425 mlx5e\_ratelimit\_query(\textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}} \_\_unused, \textcolor{keyword}{struct} if\_ratelimit\_query\_results *q)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04426}04426 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04427}04427         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04428}04428 \textcolor{comment}{         * This function needs updating by the driver maintainer!}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04429}04429 \textcolor{comment}{         * For the MLX card there are currently (ConectX-\/4?) 13 }}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04430}04430 \textcolor{comment}{         * pre-\/set rates and others i.e. ConnectX-\/5, 6, 7??}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04431}04431 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04432}04432 \textcolor{comment}{         * This will change based on later adapters}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04433}04433 \textcolor{comment}{         * and this code should be updated to look at ifp}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04434}04434 \textcolor{comment}{         * and figure out the specific adapter type}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04435}04435 \textcolor{comment}{         * settings i.e. how many rates as well}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04436}04436 \textcolor{comment}{         * as if they are fixed (as is shown here) or}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04437}04437 \textcolor{comment}{         * if they are dynamic (example chelsio t4). Also if there}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04438}04438 \textcolor{comment}{         * is a maximum number of flows that the adapter}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04439}04439 \textcolor{comment}{         * can handle that too needs to be updated in}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04440}04440 \textcolor{comment}{         * the max\_flows field.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04441}04441 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04442}04442         q-\/>rate\_table = adapter\_rates\_mlx;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04443}04443         q-\/>flags = RT\_IS\_FIXED\_TABLE;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04444}04444         q-\/>max\_flows = 0;       \textcolor{comment}{/* mlx has no limit */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04445}04445         q-\/>number\_of\_rates = NUM\_HDWR\_RATES\_MLX;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04446}04446         q-\/>min\_segment\_burst = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04447}04447 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04448}04448 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04449}04449 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04450}04450 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04451}\mbox{\hyperlink{mlx5__en__main_8c_a2d7130e55f3c73bb30d0da79402ba9ba}{04451}} \mbox{\hyperlink{mlx5__en__main_8c_a2d7130e55f3c73bb30d0da79402ba9ba}{mlx5e\_ifm\_add}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{int} type)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04452}04452 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04453}04453         ifmedia\_add(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, type | IFM\_ETHER, 0, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04454}04454         ifmedia\_add(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, type | IFM\_ETHER |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04455}04455             IFM\_ETH\_RXPAUSE | IFM\_ETH\_TXPAUSE, 0, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04456}04456         ifmedia\_add(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, type | IFM\_ETHER | IFM\_ETH\_RXPAUSE, 0, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04457}04457         ifmedia\_add(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, type | IFM\_ETHER | IFM\_ETH\_TXPAUSE, 0, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04458}04458         ifmedia\_add(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, type | IFM\_ETHER | IFM\_FDX, 0, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04459}04459         ifmedia\_add(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, type | IFM\_ETHER | IFM\_FDX |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04460}04460             IFM\_ETH\_RXPAUSE, 0, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04461}04461         ifmedia\_add(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, type | IFM\_ETHER | IFM\_FDX |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04462}04462             IFM\_ETH\_TXPAUSE, 0, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04463}04463         ifmedia\_add(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, type | IFM\_ETHER | IFM\_FDX |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04464}04464             IFM\_ETH\_RXPAUSE | IFM\_ETH\_TXPAUSE, 0, NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04465}04465 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04466}04466 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04467}04467 \textcolor{keyword}{static} \textcolor{keywordtype}{void} *}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04468}\mbox{\hyperlink{mlx5__en__main_8c_ade2466fc261927baadd419bcb11e0b62}{04468}} \mbox{\hyperlink{mlx5__en__main_8c_ade2466fc261927baadd419bcb11e0b62}{mlx5e\_create\_ifp}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04469}04469 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04470}04470         \textcolor{keyword}{struct }ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04471}04471         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04472}04472         u8 dev\_addr[ETHER\_ADDR\_LEN] \mbox{\hyperlink{device_8h_a10efdd0d161c5288c1a421e9d10d6b80}{\_\_aligned}}(4);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04473}04473         \textcolor{keyword}{struct }sysctl\_oid\_list *child;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04474}04474         \textcolor{keywordtype}{int} ncv = mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04475}04475         \textcolor{keywordtype}{char} unit[16];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04476}04476         \textcolor{keyword}{struct }pfil\_head\_args pa;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04477}04477         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04478}04478         u32 eth\_proto\_cap;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04479}04479         u32 out[\mbox{\hyperlink{device_8h_a2bdfa104f3d7c0635b984382d1562741}{MLX5\_ST\_SZ\_DW}}(ptys\_reg)];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04480}04480         \textcolor{keywordtype}{bool} ext;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04481}04481         \textcolor{keyword}{struct }\mbox{\hyperlink{structmedia}{media}} media\_entry = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04482}04482 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04483}04483         \textcolor{keywordflow}{if} (\mbox{\hyperlink{mlx5__en__main_8c_afa1837546d7bcdf7b6b4a19e0c82187e}{mlx5e\_check\_required\_hca\_cap}}(mdev)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04484}04484                 \mbox{\hyperlink{mlx5__core_8h_abecf5f90e845f80efc57b10bd4c67c2b}{mlx5\_core\_dbg}}(mdev, \textcolor{stringliteral}{"{}mlx5e\_check\_required\_hca\_cap() failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04485}04485                 \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04486}04486         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04487}04487 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04488}04488         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04489}04489 \textcolor{comment}{         * Try to allocate the priv and make room for worst-\/case}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04490}04490 \textcolor{comment}{         * number of channel structures:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04491}04491 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04492}04492         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = malloc\_domainset(\textcolor{keyword}{sizeof}(*\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}) +}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04493}04493             (\textcolor{keyword}{sizeof}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[0]) * mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04494}04494             M\_MLX5EN, \mbox{\hyperlink{driver_8h_aaafcfeb207aa2c90303af921f2c3ade8}{mlx5\_dev\_domainset}}(mdev), M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04495}04495 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04496}04496         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}} = if\_alloc\_dev(IFT\_ETHER, mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a0819dc9fa4983c9140507e1a02aa8313}{pdev}}-\/>dev.bsddev);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04497}04497         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04498}04498                 \mbox{\hyperlink{mlx5__core_8h_aeead4611cdbd6dbc272371c77201a6a5}{mlx5\_core\_err}}(mdev, \textcolor{stringliteral}{"{}if\_alloc() failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04499}04499                 \textcolor{keywordflow}{goto} err\_free\_priv;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04500}04500         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04501}04501         \textcolor{comment}{/* setup all static fields */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04502}04502         \textcolor{keywordflow}{if} (\mbox{\hyperlink{mlx5__en__main_8c_a6d8840e464d33fa23eb55d8518571664}{mlx5e\_priv\_static\_init}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, mdev, mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04503}04503                 \mbox{\hyperlink{mlx5__core_8h_aeead4611cdbd6dbc272371c77201a6a5}{mlx5\_core\_err}}(mdev, \textcolor{stringliteral}{"{}mlx5e\_priv\_static\_init() failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04504}04504                 \textcolor{keywordflow}{goto} err\_free\_ifp;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04505}04505         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04506}04506 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04507}04507         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_softc = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04508}04508         if\_initname(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}mce"{}}, device\_get\_unit(mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a0819dc9fa4983c9140507e1a02aa8313}{pdev}}-\/>dev.bsddev));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04509}04509         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_mtu = ETHERMTU;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04510}04510         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_init = \mbox{\hyperlink{mlx5__en__main_8c_a0e9598bedd8ab1a600234fef3aa1f045}{mlx5e\_open}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04511}04511         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_flags = IFF\_BROADCAST | IFF\_SIMPLEX | IFF\_MULTICAST |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04512}04512             IFF\_KNOWSEPOCH;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04513}04513         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_ioctl = \mbox{\hyperlink{mlx5__en__main_8c_ab6fc00e61bcee844f8f4b44438dde860}{mlx5e\_ioctl}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04514}04514         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_transmit = \mbox{\hyperlink{en_8h_a54acf8d2e5ba25005911f31ed071b762}{mlx5e\_xmit}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04515}04515         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_qflush = if\_qflush;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04516}04516         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_get\_counter = \mbox{\hyperlink{mlx5__en__main_8c_ada8b5417acbdce23487637821b1bf13c}{mlx5e\_get\_counter}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04517}04517         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_snd.ifq\_maxlen = ifqmaxlen;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04518}04518         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04519}04519 \textcolor{comment}{         * Set driver features}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04520}04520 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04521}04521         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_HWCSUM | IFCAP\_HWCSUM\_IPV6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04522}04522         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_VLAN\_MTU | IFCAP\_VLAN\_HWTAGGING;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04523}04523         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_VLAN\_HWCSUM | IFCAP\_VLAN\_HWFILTER;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04524}04524         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_LINKSTATE | IFCAP\_JUMBO\_MTU;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04525}04525         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_LRO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04526}04526         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_TSO | IFCAP\_VLAN\_HWTSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04527}04527         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_HWSTATS | IFCAP\_HWRXTSTMP;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04528}04528         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_MEXTPG;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04529}04529         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_TXTLS4 | IFCAP\_TXTLS6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04530}04530 \textcolor{preprocessor}{\#ifdef RATELIMIT}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04531}04531         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_TXRTLMT | IFCAP\_TXTLS\_RTLMT;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04532}04532 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04533}04533         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities |= IFCAP\_VXLAN\_HWCSUM | IFCAP\_VXLAN\_HWTSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04534}04534         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_snd\_tag\_alloc = \mbox{\hyperlink{mlx5__en__main_8c_a96b6a70ac59fe95b77dfe722e486cebc}{mlx5e\_snd\_tag\_alloc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04535}04535 \textcolor{preprocessor}{\#ifdef RATELIMIT}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04536}04536         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_ratelimit\_query = mlx5e\_ratelimit\_query;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04537}04537 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04538}04538         \textcolor{comment}{/* set TSO limits so that we don't have to drop TX packets */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04539}04539         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hw\_tsomax = \mbox{\hyperlink{en_8h_ab8c7ae352aa493ec8440ced13dbe19d9}{MLX5E\_MAX\_TX\_PAYLOAD\_SIZE}} -\/ (ETHER\_HDR\_LEN + ETHER\_VLAN\_ENCAP\_LEN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04540}04540         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hw\_tsomaxsegcount = \mbox{\hyperlink{en_8h_ac321dbafd9bb7636da9b049eabae6a5b}{MLX5E\_MAX\_TX\_MBUF\_FRAGS}} -\/ 1 \textcolor{comment}{/* hdr */};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04541}04541         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hw\_tsomaxsegsize = \mbox{\hyperlink{en_8h_a86551fad2cd9e36245ef16c7690774b9}{MLX5E\_MAX\_TX\_MBUF\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04542}04542 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04543}04543         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable = \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04544}04544         \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04545}04545         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \& IFCAP\_TSO)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04546}04546                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist |= CSUM\_TSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04547}04547         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \& IFCAP\_TXCSUM)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04548}04548                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist |= (CSUM\_TCP | CSUM\_UDP | CSUM\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04549}04549         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capenable \& IFCAP\_TXCSUM\_IPV6)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04550}04550                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist |= (CSUM\_UDP\_IPV6 | CSUM\_TCP\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04551}04551         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities \& IFCAP\_VXLAN\_HWCSUM)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04552}04552                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist |= CSUM\_INNER\_IP6\_UDP | CSUM\_INNER\_IP6\_TCP |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04553}04553                     CSUM\_INNER\_IP | CSUM\_INNER\_IP\_UDP | CSUM\_INNER\_IP\_TCP |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04554}04554                     CSUM\_ENCAP\_VXLAN;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04555}04555         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_capabilities  \& IFCAP\_VXLAN\_HWTSO)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04556}04556                 \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_hwassist |= CSUM\_INNER\_IP6\_TSO | CSUM\_INNER\_IP\_TSO;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04557}04557 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04558}04558         \textcolor{comment}{/* ifnet sysctl tree */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04559}04559         sysctl\_ctx\_init(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04560}04560         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}} = SYSCTL\_ADD\_NODE(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, SYSCTL\_STATIC\_CHILDREN(\_dev),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04561}04561             OID\_AUTO, \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_dname, CTLFLAG\_RD | CTLFLAG\_MPSAFE, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04562}04562             \textcolor{stringliteral}{"{}MLX5 ethernet -\/ interface name"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04563}04563         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04564}04564                 \mbox{\hyperlink{mlx5__core_8h_aeead4611cdbd6dbc272371c77201a6a5}{mlx5\_core\_err}}(mdev, \textcolor{stringliteral}{"{}SYSCTL\_ADD\_NODE() failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04565}04565                 \textcolor{keywordflow}{goto} err\_free\_sysctl;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04566}04566         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04567}04567         snprintf(unit, \textcolor{keyword}{sizeof}(unit), \textcolor{stringliteral}{"{}\%d"{}}, \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_dunit);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04568}04568         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}} = SYSCTL\_ADD\_NODE(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04569}04569             OID\_AUTO, unit, CTLFLAG\_RD | CTLFLAG\_MPSAFE, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04570}04570             \textcolor{stringliteral}{"{}MLX5 ethernet -\/ interface unit"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04571}04571         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04572}04572                 \mbox{\hyperlink{mlx5__core_8h_aeead4611cdbd6dbc272371c77201a6a5}{mlx5\_core\_err}}(mdev, \textcolor{stringliteral}{"{}SYSCTL\_ADD\_NODE() failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04573}04573                 \textcolor{keywordflow}{goto} err\_free\_sysctl;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04574}04574         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04575}04575 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04576}04576         \textcolor{comment}{/* HW sysctl tree */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04577}04577         child = SYSCTL\_CHILDREN(device\_get\_sysctl\_tree(mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a0819dc9fa4983c9140507e1a02aa8313}{pdev}}-\/>dev.bsddev));}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04578}04578         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a3f28a45977de13d58c68e0920f058867}{sysctl\_hw}} = SYSCTL\_ADD\_NODE(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, child,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04579}04579             OID\_AUTO, \textcolor{stringliteral}{"{}hw"{}}, CTLFLAG\_RD | CTLFLAG\_MPSAFE, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04580}04580             \textcolor{stringliteral}{"{}MLX5 ethernet dev hw"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04581}04581         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a3f28a45977de13d58c68e0920f058867}{sysctl\_hw}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04582}04582                 \mbox{\hyperlink{mlx5__core_8h_aeead4611cdbd6dbc272371c77201a6a5}{mlx5\_core\_err}}(mdev, \textcolor{stringliteral}{"{}SYSCTL\_ADD\_NODE() failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04583}04583                 \textcolor{keywordflow}{goto} err\_free\_sysctl;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04584}04584         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04585}04585 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04586}04586         err = \mbox{\hyperlink{mlx5__en__main_8c_a693ab19bd6e258c0442cbf1cddf32a09}{mlx5e\_build\_ifp\_priv}}(mdev, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, ncv);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04587}04587         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04588}04588                 \mbox{\hyperlink{mlx5__core_8h_aeead4611cdbd6dbc272371c77201a6a5}{mlx5\_core\_err}}(mdev, \textcolor{stringliteral}{"{}mlx5e\_build\_ifp\_priv() failed (\%d)\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04589}04589                 \textcolor{keywordflow}{goto} err\_free\_sysctl;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04590}04590         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04591}04591 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04592}04592         \textcolor{comment}{/* reuse mlx5core's watchdog workqueue */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04593}04593         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4338b3038935af69f0db700c7a4bdee4}{wq}} = mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a56f7f55842c148cd02b5aa28703df66a}{health}}.\mbox{\hyperlink{structmlx5__core__health_ada5c73a411c049227f32f5e8cbfeef26}{wq\_watchdog}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04594}04594 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04595}04595         err = \mbox{\hyperlink{driver_8h_a4781845194ba9f0f72b8e627acbc78b8}{mlx5\_core\_alloc\_pd}}(mdev, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9fb017d5f0afd3f0a0c96c22bd6e8ac6}{pdn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04596}04596         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04597}04597                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}mlx5\_core\_alloc\_pd failed, \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04598}04598                 \textcolor{keywordflow}{goto} err\_free\_wq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04599}04599         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04600}04600         err = \mbox{\hyperlink{mlx5__transobj_8c_ab1994eef6f136e21b991be7981c95a63}{mlx5\_alloc\_transport\_domain}}(mdev, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a8b1627033e2f64d0e3720f368a615014}{tdn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04601}04601         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04602}04602                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04603}04603                     \textcolor{stringliteral}{"{}mlx5\_alloc\_transport\_domain failed, \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04604}04604                 \textcolor{keywordflow}{goto} err\_dealloc\_pd;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04605}04605         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04606}04606         err = \mbox{\hyperlink{mlx5__en__main_8c_a7ea75d5af53269f18eeaf84f39e1c865}{mlx5e\_create\_mkey}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9fb017d5f0afd3f0a0c96c22bd6e8ac6}{pdn}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abf3f056e8dd0679375dc0c90731734b4}{mr}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04607}04607         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04608}04608                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}mlx5e\_create\_mkey failed, \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04609}04609                 \textcolor{keywordflow}{goto} err\_dealloc\_transport\_domain;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04610}04610         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04611}04611         \mbox{\hyperlink{mlx5__vport_8c_ad67a4267d8c0e7b052f317c01819063a}{mlx5\_query\_nic\_vport\_mac\_address}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, 0, dev\_addr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04612}04612 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04613}04613         \textcolor{comment}{/* check if we should generate a random MAC address */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04614}04614         \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, vport\_group\_manager) == 0 \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04615}04615             is\_zero\_ether\_addr(dev\_addr)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04616}04616                 random\_ether\_addr(dev\_addr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04617}04617                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}Assigned random MAC address\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04618}04618         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04619}04619 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04620}04620         err = \mbox{\hyperlink{en__rl_8h_a94b617fbd86b985cd5c2da8509dce894}{mlx5e\_rl\_init}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04621}04621         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04622}04622                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}mlx5e\_rl\_init failed, \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04623}04623                 \textcolor{keywordflow}{goto} err\_create\_mkey;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04624}04624         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04625}04625 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04626}04626         err = \mbox{\hyperlink{en__hw__tls_8h_a326ae3fabcb2c8cfedd463484a72e127}{mlx5e\_tls\_init}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04627}04627         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04628}04628                 if\_printf(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}\%s: mlx5e\_tls\_init failed\(\backslash\)n"{}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04629}04629                 \textcolor{keywordflow}{goto} err\_rl\_init;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04630}04630         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04631}04631 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04632}04632         err = \mbox{\hyperlink{mlx5__en__main_8c_a6ffde11df924e1948487f67d32ee7c3b}{mlx5e\_open\_drop\_rq}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a4c98635c83ffa37c2e0ac35dfe1071}{drop\_rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04633}04633         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04634}04634                 if\_printf(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}\%s: mlx5e\_open\_drop\_rq failed (\%d)\(\backslash\)n"{}}, \_\_func\_\_, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04635}04635                 \textcolor{keywordflow}{goto} err\_tls\_init;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04636}04636         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04637}04637 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04638}04638         err = \mbox{\hyperlink{mlx5__en__main_8c_ac3d66e2a3d71c875942c2af72dd24665}{mlx5e\_open\_rqts}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04639}04639         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04640}04640                 if\_printf(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}\%s: mlx5e\_open\_rqts failed (\%d)\(\backslash\)n"{}}, \_\_func\_\_, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04641}04641                 \textcolor{keywordflow}{goto} err\_open\_drop\_rq;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04642}04642         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04643}04643 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04644}04644         err = \mbox{\hyperlink{mlx5__en__main_8c_a8ec53095f57c29d470638ae28beb5f3c}{mlx5e\_open\_tirs}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04645}04645         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04646}04646                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}mlx5e\_open\_tirs() failed, \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04647}04647                 \textcolor{keywordflow}{goto} err\_open\_rqts;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04648}04648         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04649}04649 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04650}04650         err = \mbox{\hyperlink{en_8h_a26b0dc537956b4ba2a60c9db98653006}{mlx5e\_open\_flow\_tables}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04651}04651         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04652}04652                 if\_printf(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}\%s: mlx5e\_open\_flow\_tables failed (\%d)\(\backslash\)n"{}}, \_\_func\_\_, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04653}04653                 \textcolor{keywordflow}{goto} err\_open\_tirs;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04654}04654         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04655}04655 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04656}04656         err = \mbox{\hyperlink{en__hw__tls__rx_8h_adcbb1b2e9b17e5dce112b8b09fcb2830}{mlx5e\_tls\_rx\_init}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04657}04657         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04658}04658                 if\_printf(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}\%s: mlx5e\_tls\_rx\_init() failed, \%d\(\backslash\)n"{}}, \_\_func\_\_, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04659}04659                 \textcolor{keywordflow}{goto} err\_open\_flow\_tables;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04660}04660         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04661}04661 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04662}04662         \textcolor{comment}{/* set default MTU */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04663}04663         \mbox{\hyperlink{mlx5__en__main_8c_aa217b04778a4df8839e46a56dd0fe9ee}{mlx5e\_set\_dev\_port\_mtu}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_mtu);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04664}04664 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04665}04665         \textcolor{comment}{/* Set default media status */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04666}04666         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afbe7d82d6be5ad778c829f3ed3c01838}{media\_status\_last}} = IFM\_AVALID;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04667}04667         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6a8884b0a7bbd55ce5c945475e2b16f1}{media\_active\_last}} = IFM\_ETHER | IFM\_AUTO | IFM\_FDX;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04668}04668 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04669}04669         \textcolor{comment}{/* setup default pauseframes configuration */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04670}04670         \mbox{\hyperlink{mlx5__en__main_8c_a52f58b419a5f2972e68057e2bcbb2d05}{mlx5e\_setup\_pauseframes}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04671}04671 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04672}04672         \textcolor{comment}{/* Setup supported medias */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04673}04673         \textcolor{keywordflow}{if} (!\mbox{\hyperlink{mlx5__port_8c_a8f0cbf29a10097b179dd9e3a4df0b873}{mlx5\_query\_port\_ptys}}(mdev, out, \textcolor{keyword}{sizeof}(out), \mbox{\hyperlink{driver_8h_aad393aa3e173d7f081ab4bbc6ba5027da33ce80cf37a3f11b79424cb8a8a7bc56}{MLX5\_PTYS\_EN}}, 1)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04674}04674                 ext = \mbox{\hyperlink{device_8h_a808d96f6813ca6f91ec28ca3e439be6c}{MLX5\_CAP\_PCAM\_FEATURE}}(mdev,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04675}04675                     ptys\_extended\_ethernet);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04676}04676                 eth\_proto\_cap = \mbox{\hyperlink{port_8h_a85ea9be21638b172b3e363994ca8fa17}{MLX5\_GET\_ETH\_PROTO}}(ptys\_reg, out, ext,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04677}04677                     eth\_proto\_capability);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04678}04678         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04679}04679                 ext = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04680}04680                 eth\_proto\_cap = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04681}04681                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}Query port media capability failed, \%d\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04682}04682         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04683}04683 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04684}04684         ifmedia\_init(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, IFM\_IMASK,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04685}04685             \mbox{\hyperlink{mlx5__en__main_8c_a50a7745fcdebdc5d15cee2a34a2ecdcd}{mlx5e\_media\_change}}, \mbox{\hyperlink{mlx5__en__main_8c_a0f58d540ba2ecf08563d710fddf080fb}{mlx5e\_media\_status}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04686}04686 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04687}04687         \textcolor{keywordflow}{if} (ext) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04688}04688                 \textcolor{keywordflow}{for} (\textcolor{keywordtype}{unsigned} i = 0; i != \mbox{\hyperlink{port_8h_a54f19ab7e76fe68cab0372236681bdbea0eb057cb4b2dbee0787c75c500a510ee}{MLX5E\_EXT\_LINK\_SPEEDS\_NUMBER}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04689}04689                         \textcolor{comment}{/* check if hardware has the right capability */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04690}04690                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{port_8h_acc7c39a986fc970d9f13a68f4a28fbc2}{MLX5E\_PROT\_MASK}}(i) \& \string~eth\_proto\_cap)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04691}04691                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04692}04692                         \textcolor{keywordflow}{for} (\textcolor{keywordtype}{unsigned} j = 0; j != \mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a151fd303a0230100fbf09fdaa0dce157}{MLX5E\_CABLE\_TYPE\_NUMBER}}; j++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04693}04693                                 media\_entry = \mbox{\hyperlink{mlx5__en__main_8c_ae40845c5344f1b7b5bb6904426d1232f}{mlx5e\_ext\_mode\_table}}[i][j];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04694}04694                                 \textcolor{keywordflow}{if} (media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04695}04695                                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04696}04696                                 \textcolor{comment}{/* check if this subtype was already added */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04697}04697                                 \textcolor{keywordflow}{for} (\textcolor{keywordtype}{unsigned} k = 0; k != i; k++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04698}04698                                         \textcolor{comment}{/* check if hardware has the right capability */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04699}04699                                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{port_8h_acc7c39a986fc970d9f13a68f4a28fbc2}{MLX5E\_PROT\_MASK}}(k) \& \string~eth\_proto\_cap)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04700}04700                                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04701}04701                                         \textcolor{keywordflow}{for} (\textcolor{keywordtype}{unsigned} m = 0; m != \mbox{\hyperlink{port_8h_afe3a1c7bf9d0ab00734d5eb46f31b712a151fd303a0230100fbf09fdaa0dce157}{MLX5E\_CABLE\_TYPE\_NUMBER}}; m++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04702}04702                                                 \textcolor{keywordflow}{if} (media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} == \mbox{\hyperlink{mlx5__en__main_8c_ae40845c5344f1b7b5bb6904426d1232f}{mlx5e\_ext\_mode\_table}}[k][m].\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04703}04703                                                         \textcolor{keywordflow}{goto} skip\_ext\_media;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04704}04704                                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04705}04705                                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04706}04706                                 \mbox{\hyperlink{mlx5__en__main_8c_a2d7130e55f3c73bb30d0da79402ba9ba}{mlx5e\_ifm\_add}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04707}04707                         skip\_ext\_media:;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04708}04708                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04709}04709                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04710}04710         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04711}04711                 \textcolor{keywordflow}{for} (\textcolor{keywordtype}{unsigned} i = 0; i != \mbox{\hyperlink{port_8h_a7dfcb3631fc98516e9d7d48497ddae0ca2fdd4361e15ae10fcfe95a2510ff0da4}{MLX5E\_LINK\_SPEEDS\_NUMBER}}; i++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04712}04712                         media\_entry = \mbox{\hyperlink{mlx5__en__main_8c_a0a499a0b042f18b788ae7d9ddef40f18}{mlx5e\_mode\_table}}[i];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04713}04713                         \textcolor{keywordflow}{if} (media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04714}04714                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04715}04715                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{port_8h_acc7c39a986fc970d9f13a68f4a28fbc2}{MLX5E\_PROT\_MASK}}(i) \& \string~eth\_proto\_cap)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04716}04716                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04717}04717                         \textcolor{comment}{/* check if this subtype was already added */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04718}04718                         \textcolor{keywordflow}{for} (\textcolor{keywordtype}{unsigned} k = 0; k != i; k++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04719}04719                                 \textcolor{keywordflow}{if} (media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} == \mbox{\hyperlink{mlx5__en__main_8c_a0a499a0b042f18b788ae7d9ddef40f18}{mlx5e\_mode\_table}}[k].\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04720}04720                                         \textcolor{keywordflow}{goto} skip\_media;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04721}04721                         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04722}04722                         \mbox{\hyperlink{mlx5__en__main_8c_a2d7130e55f3c73bb30d0da79402ba9ba}{mlx5e\_ifm\_add}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04723}04723 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04724}04724                         \textcolor{comment}{/* NOTE: 10G ER and LR shares the same entry */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04725}04725                         \textcolor{keywordflow}{if} (media\_entry.\mbox{\hyperlink{structmedia_ac446d8546754ff091260f867167f1bf1}{subtype}} == IFM\_10G\_ER)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04726}04726                                 \mbox{\hyperlink{mlx5__en__main_8c_a2d7130e55f3c73bb30d0da79402ba9ba}{mlx5e\_ifm\_add}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, IFM\_10G\_LR);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04727}04727                 skip\_media:;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04728}04728                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04729}04729         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04730}04730 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04731}04731         \mbox{\hyperlink{mlx5__en__main_8c_a2d7130e55f3c73bb30d0da79402ba9ba}{mlx5e\_ifm\_add}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, IFM\_AUTO);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04732}04732 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04733}04733         \textcolor{comment}{/* Set autoselect by default */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04734}04734         ifmedia\_set(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}}, IFM\_ETHER | IFM\_AUTO | IFM\_FDX |}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04735}04735             IFM\_ETH\_RXPAUSE | IFM\_ETH\_TXPAUSE);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04736}04736 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04737}04737         DEBUGNET\_SET(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, mlx5\_en);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04738}04738 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04739}04739         ether\_ifattach(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, dev\_addr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04740}04740 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04741}04741         \textcolor{comment}{/* Register for VLAN events */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04742}04742         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a656656a6261b17334612f5d6f26c81cd}{vlan\_attach}} = EVENTHANDLER\_REGISTER(vlan\_config,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04743}04743             \mbox{\hyperlink{en_8h_a877774ceba3be063a5352b3824dc2131}{mlx5e\_vlan\_rx\_add\_vid}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, EVENTHANDLER\_PRI\_FIRST);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04744}04744         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4836c1bbd2d6d2834e4ee2a94679915b}{vlan\_detach}} = EVENTHANDLER\_REGISTER(vlan\_unconfig,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04745}04745             \mbox{\hyperlink{en_8h_a1df3b0692eff935f76ea9e1a1a451e1c}{mlx5e\_vlan\_rx\_kill\_vid}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, EVENTHANDLER\_PRI\_FIRST);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04746}04746 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04747}04747         \textcolor{comment}{/* Register for VxLAN events */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04748}04748         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac9f89e5b1d9db6a9d108668238941bb8}{vxlan\_start}} = EVENTHANDLER\_REGISTER(vxlan\_start,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04749}04749             \mbox{\hyperlink{en_8h_a7f5c002157b4760772d43365ac9e9ac1}{mlx5e\_vxlan\_start}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, EVENTHANDLER\_PRI\_ANY);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04750}04750         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abdca849530c87f4841ecdfc2698f9882}{vxlan\_stop}} = EVENTHANDLER\_REGISTER(vxlan\_stop,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04751}04751             \mbox{\hyperlink{en_8h_a9d2335f7335e4cd6f1c8fc85929a9c49}{mlx5e\_vxlan\_stop}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, EVENTHANDLER\_PRI\_ANY);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04752}04752 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04753}04753         \textcolor{comment}{/* Link is down by default */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04754}04754         if\_link\_state\_change(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, LINK\_STATE\_DOWN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04755}04755 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04756}04756         \mbox{\hyperlink{mlx5__en__main_8c_a2c869547c580fc1c2c9f6ce8a153eb8a}{mlx5e\_enable\_async\_events}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04757}04757 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04758}04758         \mbox{\hyperlink{mlx5__en__main_8c_a5610ba9c516873fec6b54b7441617ec9}{mlx5e\_add\_hw\_stats}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04759}04759 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04760}04760         \mbox{\hyperlink{en_8h_a4e4bdf2cdabe62d0271ac03f0c416a5a}{mlx5e\_create\_stats}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.\mbox{\hyperlink{structmlx5e__vport__stats_ab54e66162678d7e2ae8c962779a62978}{ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04761}04761             \textcolor{stringliteral}{"{}vstats"{}}, \mbox{\hyperlink{mlx5__en__main_8c_aa2bfa764919960f3c470d02586d86ee2}{mlx5e\_vport\_stats\_desc}}, \mbox{\hyperlink{en_8h_a797f95ad05368af88133264f357661e3}{MLX5E\_VPORT\_STATS\_NUM}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04762}04762             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.\mbox{\hyperlink{structmlx5e__vport__stats_a81da114585545927670b1bad6aa53314}{arg}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04763}04763 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04764}04764         \mbox{\hyperlink{en_8h_a4e4bdf2cdabe62d0271ac03f0c416a5a}{mlx5e\_create\_stats}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}}.\mbox{\hyperlink{structmlx5e__pport__stats_ae92fcfa73f0ed2368354310d6624505b}{ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04765}04765             \textcolor{stringliteral}{"{}pstats"{}}, \mbox{\hyperlink{mlx5__en__main_8c_addfa7c7e847b955f6cc197da0a978c9d}{mlx5e\_pport\_stats\_desc}}, \mbox{\hyperlink{en_8h_a8fec8c80929e715211cda5ba7432da4b}{MLX5E\_PPORT\_STATS\_NUM}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04766}04766             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}}.\mbox{\hyperlink{structmlx5e__pport__stats_a6ac5e2fdb43e3a977fe5d3df40b3f2bf}{arg}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04767}04767 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04768}04768         \mbox{\hyperlink{en_8h_a616f5d6e058528444b01761ff3011968}{mlx5e\_create\_ethtool}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04769}04769 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04770}04770         mtx\_lock(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04771}04771         \mbox{\hyperlink{mlx5__en__main_8c_a44107857303b1b7b7e9f31fc9b755fbf}{mlx5e\_update\_stats}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04772}04772         mtx\_unlock(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a19565c39c2c25a8a4a895a4f7d28e8f5}{async\_events\_mtx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04773}04773 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04774}04774         SYSCTL\_ADD\_INT(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}}, SYSCTL\_CHILDREN(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ae61717d6358ea9565ea0dcc3ef683d67}{sysctl\_ifnet}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04775}04775             OID\_AUTO, \textcolor{stringliteral}{"{}rx\_clbr\_done"{}}, CTLFLAG\_RD,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04776}04776             \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6b8004b188956f884fce65060553fd41}{clbr\_done}}, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04777}04777             \textcolor{stringliteral}{"{}RX timestamps calibration state"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04778}04778         callout\_init(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab0ec4d3bafa7dcdc1c17ad1b3995558f}{tstmp\_clbr}}, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04779}04779         \mbox{\hyperlink{mlx5__en__main_8c_a25935b08257710ee49f1773358a5cda4}{mlx5e\_reset\_calibration\_callout}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04780}04780 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04781}04781         pa.pa\_version = PFIL\_VERSION;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04782}04782         pa.pa\_flags = PFIL\_IN;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04783}04783         pa.pa\_type = PFIL\_TYPE\_ETHERNET;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04784}04784         pa.pa\_headname = \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_xname;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04785}04785         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a164e28acb0cd5646e6edccd0fd39db4a}{pfil}} = pfil\_head\_register(\&pa);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04786}04786 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04787}04787         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04788}04788         err = \mbox{\hyperlink{en_8h_a7203ff752956b1815b6e17678d7bfc16}{mlx5e\_open\_flow\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04789}04789         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04790}04790                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04791}04791                     \textcolor{stringliteral}{"{}mlx5e\_open\_flow\_rules() failed, \%d (ignored)\(\backslash\)n"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04792}04792         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04793}04793         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04794}04794 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04795}04795         \textcolor{keywordflow}{return} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04796}04796 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04797}04797 err\_open\_flow\_tables:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04798}04798         \mbox{\hyperlink{en_8h_ac790f2435a972165a3841e27c3a70e39}{mlx5e\_close\_flow\_tables}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04799}04799 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04800}04800 err\_open\_tirs:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04801}04801         \mbox{\hyperlink{mlx5__en__main_8c_aefa7fbdf9e8e1675077e5b602e1ab001}{mlx5e\_close\_tirs}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04802}04802 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04803}04803 err\_open\_rqts:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04804}04804         \mbox{\hyperlink{mlx5__en__main_8c_a64054fe26a9f5d08f21e887c4bf89a9e}{mlx5e\_close\_rqts}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04805}04805 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04806}04806 err\_open\_drop\_rq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04807}04807         \mbox{\hyperlink{mlx5__en__main_8c_a270dba38a89182567a53e42467848bde}{mlx5e\_close\_drop\_rq}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a4c98635c83ffa37c2e0ac35dfe1071}{drop\_rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04808}04808 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04809}04809 err\_tls\_init:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04810}04810         \mbox{\hyperlink{en__hw__tls_8h_a24eda1fe5222f921d08ce2adb340bf3f}{mlx5e\_tls\_cleanup}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04811}04811 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04812}04812 err\_rl\_init:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04813}04813         \mbox{\hyperlink{en__rl_8h_a00d5f78c53b25221e5752719d3b863a0}{mlx5e\_rl\_cleanup}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04814}04814 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04815}04815 err\_create\_mkey:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04816}04816         \mbox{\hyperlink{driver_8h_a1bb1877ebc3a53b0563d915e4a061178}{mlx5\_core\_destroy\_mkey}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abf3f056e8dd0679375dc0c90731734b4}{mr}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04817}04817 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04818}04818 err\_dealloc\_transport\_domain:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04819}04819         \mbox{\hyperlink{mlx5__transobj_8c_a7bb968b9709028f5756d6edc0ffeb946}{mlx5\_dealloc\_transport\_domain}}(mdev, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a8b1627033e2f64d0e3720f368a615014}{tdn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04820}04820 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04821}04821 err\_dealloc\_pd:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04822}04822         \mbox{\hyperlink{driver_8h_acbbf49b48251096e122a963f59c87055}{mlx5\_core\_dealloc\_pd}}(mdev, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9fb017d5f0afd3f0a0c96c22bd6e8ac6}{pdn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04823}04823 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04824}04824 err\_free\_wq:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04825}04825         flush\_workqueue(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4338b3038935af69f0db700c7a4bdee4}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04826}04826 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04827}04827 err\_free\_sysctl:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04828}04828         sysctl\_ctx\_free(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04829}04829         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4be8add6eeb3b85c315b7c3f16e9ba14}{sysctl\_debug}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04830}04830                 sysctl\_ctx\_free(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a7f2dbb4c146fadb24dfd26f2831dba83}{port\_stats\_debug}}.\mbox{\hyperlink{structmlx5e__port__stats__debug_a278106e34849b523eb325271abac72fd}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04831}04831         \mbox{\hyperlink{mlx5__en__main_8c_aed858be16cf2d0a0683ff840a1034fbf}{mlx5e\_priv\_static\_destroy}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, mdev, mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04832}04832 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04833}04833 err\_free\_ifp:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04834}04834         if\_free(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04835}04835 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04836}04836 err\_free\_priv:}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04837}04837         free(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04838}04838         \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04839}04839 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04840}04840 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04841}04841 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04842}\mbox{\hyperlink{mlx5__en__main_8c_a4f9334537d6c6ad16192d37ea32be1c3}{04842}} \mbox{\hyperlink{mlx5__en__main_8c_a4f9334537d6c6ad16192d37ea32be1c3}{mlx5e\_destroy\_ifp}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5__core__dev}{mlx5\_core\_dev}} *mdev, \textcolor{keywordtype}{void} *vpriv)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04843}04843 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04844}04844         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = vpriv;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04845}04845         \textcolor{keyword}{struct }ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04846}04846 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04847}04847         \textcolor{comment}{/* don't allow more IOCTLs */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04848}04848         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4795b5a0fa2d0a63a36e40c448f9f50b}{gone}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04849}04849 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04850}04850         \textcolor{comment}{/* XXX wait a bit to allow IOCTL handlers to complete */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04851}04851         pause(\textcolor{stringliteral}{"{}W"{}}, hz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04852}04852 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04853}04853 \textcolor{preprocessor}{\#ifdef RATELIMIT}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04854}04854         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04855}04855 \textcolor{comment}{         * The kernel can have reference(s) via the m\_snd\_tag's into}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04856}04856 \textcolor{comment}{         * the ratelimit channels, and these must go away before}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04857}04857 \textcolor{comment}{         * detaching:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04858}04858 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04859}04859         \textcolor{keywordflow}{while} (READ\_ONCE(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ad17b237a153f50dbdfcfd493c20974f7}{rl}}.\mbox{\hyperlink{structmlx5e__rl__priv__data_a54640d00efc4a0881911b980f262f7de}{stats}}.tx\_active\_connections) != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04860}04860                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04861}04861                     \textcolor{stringliteral}{"{}Waiting for all ratelimit connections to terminate\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04862}04862                 pause(\textcolor{stringliteral}{"{}W"{}}, hz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04863}04863         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04864}04864 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04865}04865 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04866}04866 \textcolor{preprocessor}{\#ifdef KERN\_TLS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04867}04867         \textcolor{comment}{/* wait for all TLS tags to get freed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04868}04868         \textcolor{keywordflow}{while} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5fc53857b1601a2cc0d9f8731405d8b1}{tls}}.\mbox{\hyperlink{structmlx5e__tls_a27568169f9754fb2a4bd4b0474fa8f60}{init}} != 0 \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04869}04869             uma\_zone\_get\_cur(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5fc53857b1601a2cc0d9f8731405d8b1}{tls}}.\mbox{\hyperlink{structmlx5e__tls_acb221ad66d3d72a72c3655f82fe4037a}{zone}}) != 0)  \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04870}04870                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04871}04871                     \textcolor{stringliteral}{"{}Waiting for all TLS connections to terminate\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04872}04872                 pause(\textcolor{stringliteral}{"{}W"{}}, hz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04873}04873         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04874}04874 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04875}04875         \textcolor{comment}{/* wait for all TLS RX tags to get freed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04876}04876         \textcolor{keywordflow}{while} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a65f7bebe867f631ee138e69149cc3899}{tls\_rx}}.\mbox{\hyperlink{structmlx5e__tls__rx_ae4336971a3fbc2777a6d108b9ca3355b}{init}} != 0 \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04877}04877             uma\_zone\_get\_cur(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a65f7bebe867f631ee138e69149cc3899}{tls\_rx}}.\mbox{\hyperlink{structmlx5e__tls__rx_a7578ac3f37b0abf5695387870a54828a}{zone}}) != 0)  \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04878}04878                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04879}04879                     \textcolor{stringliteral}{"{}Waiting for all TLS RX connections to terminate\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04880}04880                 pause(\textcolor{stringliteral}{"{}W"{}}, hz);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04881}04881         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04882}04882 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04883}04883         \textcolor{comment}{/* wait for all unlimited send tags to complete */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04884}04884         \mbox{\hyperlink{mlx5__en__main_8c_abb43495fff7f5ef15374ccf05e9a2de0}{mlx5e\_priv\_wait\_for\_completion}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04885}04885 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04886}04886         \textcolor{comment}{/* stop watchdog timer */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04887}04887         callout\_drain(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a1da6b6b4c3fe400d16dac6fb250b9687}{watchdog}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04888}04888 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04889}04889         callout\_drain(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab0ec4d3bafa7dcdc1c17ad1b3995558f}{tstmp\_clbr}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04890}04890 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04891}04891         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a656656a6261b17334612f5d6f26c81cd}{vlan\_attach}} != NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04892}04892                 EVENTHANDLER\_DEREGISTER(vlan\_config, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a656656a6261b17334612f5d6f26c81cd}{vlan\_attach}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04893}04893         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4836c1bbd2d6d2834e4ee2a94679915b}{vlan\_detach}} != NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04894}04894                 EVENTHANDLER\_DEREGISTER(vlan\_unconfig, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4836c1bbd2d6d2834e4ee2a94679915b}{vlan\_detach}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04895}04895         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac9f89e5b1d9db6a9d108668238941bb8}{vxlan\_start}} != NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04896}04896                 EVENTHANDLER\_DEREGISTER(vxlan\_start, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac9f89e5b1d9db6a9d108668238941bb8}{vxlan\_start}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04897}04897         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abdca849530c87f4841ecdfc2698f9882}{vxlan\_stop}} != NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04898}04898                 EVENTHANDLER\_DEREGISTER(vxlan\_stop, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abdca849530c87f4841ecdfc2698f9882}{vxlan\_stop}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04899}04899 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04900}04900         \textcolor{comment}{/* make sure device gets closed */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04901}04901         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04902}04902         \mbox{\hyperlink{mlx5__en__main_8c_a4cfde2bf9b9018cf533f460259942bc8}{mlx5e\_close\_locked}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04903}04903         \mbox{\hyperlink{en_8h_a9ed07d4ff0c4d60b7336c709a0df6d9b}{mlx5e\_close\_flow\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04904}04904         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04905}04905 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04906}04906         \textcolor{comment}{/* deregister pfil */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04907}04907         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a164e28acb0cd5646e6edccd0fd39db4a}{pfil}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04908}04908                 pfil\_head\_unregister(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a164e28acb0cd5646e6edccd0fd39db4a}{pfil}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04909}04909                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a164e28acb0cd5646e6edccd0fd39db4a}{pfil}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04910}04910         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04911}04911 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04912}04912         \textcolor{comment}{/* unregister device */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04913}04913         ifmedia\_removeall(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a7e55e6b48e9f0b7480d4eca3acf29ddd}{media}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04914}04914         ether\_ifdetach(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04915}04915 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04916}04916         \mbox{\hyperlink{en__hw__tls__rx_8h_a10db71af0a0f820b15f239466ecc22c6}{mlx5e\_tls\_rx\_cleanup}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04917}04917         \mbox{\hyperlink{en_8h_ac790f2435a972165a3841e27c3a70e39}{mlx5e\_close\_flow\_tables}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04918}04918         \mbox{\hyperlink{mlx5__en__main_8c_aefa7fbdf9e8e1675077e5b602e1ab001}{mlx5e\_close\_tirs}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04919}04919         \mbox{\hyperlink{mlx5__en__main_8c_a64054fe26a9f5d08f21e887c4bf89a9e}{mlx5e\_close\_rqts}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04920}04920         \mbox{\hyperlink{mlx5__en__main_8c_a270dba38a89182567a53e42467848bde}{mlx5e\_close\_drop\_rq}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a5a4c98635c83ffa37c2e0ac35dfe1071}{drop\_rq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04921}04921         \mbox{\hyperlink{en__hw__tls_8h_a24eda1fe5222f921d08ce2adb340bf3f}{mlx5e\_tls\_cleanup}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04922}04922         \mbox{\hyperlink{en__rl_8h_a00d5f78c53b25221e5752719d3b863a0}{mlx5e\_rl\_cleanup}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04923}04923 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04924}04924         \textcolor{comment}{/* destroy all remaining sysctl nodes */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04925}04925         sysctl\_ctx\_free(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_ab58c61ff8ce1f6d77ce537cf09d41b47}{vport}}.\mbox{\hyperlink{structmlx5e__vport__stats_ab54e66162678d7e2ae8c962779a62978}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04926}04926         sysctl\_ctx\_free(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a4f0f0f14224b8c1ffe9d3c271cd0d8a5}{pport}}.\mbox{\hyperlink{structmlx5e__pport__stats_ae92fcfa73f0ed2368354310d6624505b}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04927}04927         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4be8add6eeb3b85c315b7c3f16e9ba14}{sysctl\_debug}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04928}04928                 sysctl\_ctx\_free(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a6eca4ff57f12b570ef075fbe9a0e3651}{stats}}.\mbox{\hyperlink{structmlx5e__stats_a7f2dbb4c146fadb24dfd26f2831dba83}{port\_stats\_debug}}.\mbox{\hyperlink{structmlx5e__port__stats__debug_a278106e34849b523eb325271abac72fd}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04929}04929         sysctl\_ctx\_free(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab8f466ca91f232b49ea361c662c6b0d2}{sysctl\_ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04930}04930 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04931}04931         \mbox{\hyperlink{driver_8h_a1bb1877ebc3a53b0563d915e4a061178}{mlx5\_core\_destroy\_mkey}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_abf3f056e8dd0679375dc0c90731734b4}{mr}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04932}04932         \mbox{\hyperlink{mlx5__transobj_8c_a7bb968b9709028f5756d6edc0ffeb946}{mlx5\_dealloc\_transport\_domain}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a8b1627033e2f64d0e3720f368a615014}{tdn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04933}04933         \mbox{\hyperlink{driver_8h_acbbf49b48251096e122a963f59c87055}{mlx5\_core\_dealloc\_pd}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9fb017d5f0afd3f0a0c96c22bd6e8ac6}{pdn}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04934}04934         \mbox{\hyperlink{mlx5__en__main_8c_aa0385799b02e58db4d9e9cf95a94b501}{mlx5e\_disable\_async\_events}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04935}04935         flush\_workqueue(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a4338b3038935af69f0db700c7a4bdee4}{wq}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04936}04936         \mbox{\hyperlink{mlx5__en__main_8c_aed858be16cf2d0a0683ff840a1034fbf}{mlx5e\_priv\_static\_destroy}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, mdev, mdev-\/>\mbox{\hyperlink{structmlx5__core__dev_a2642b287846069d077eec2d44e137703}{priv}}.\mbox{\hyperlink{structmlx5__priv_a964673598512783a751c61e61e82f365}{eq\_table}}.\mbox{\hyperlink{structmlx5__eq__table_a830abb074ed5cb9dc35589a88a9a7b8f}{num\_comp\_vectors}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04937}04937         if\_free(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04938}04938         free(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04939}04939 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04940}04940 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04941}04941 \textcolor{preprocessor}{\#ifdef DEBUGNET}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04942}04942 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04943}04943 mlx5\_en\_debugnet\_init(\textcolor{keyword}{struct} ifnet *dev, \textcolor{keywordtype}{int} *nrxr, \textcolor{keywordtype}{int} *ncl, \textcolor{keywordtype}{int} *clsize)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04944}04944 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04945}04945         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = if\_getsoftc(dev);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04946}04946 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04947}04947         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04948}04948         *nrxr = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a082db7e920f50827afe0cf93857b5043}{params}}.\mbox{\hyperlink{structmlx5e__params_a1685215dbf54ebe54fe976013ec6644a}{num\_channels}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04949}04949         *ncl = DEBUGNET\_MAX\_IN\_FLIGHT;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04950}04950         *clsize = \mbox{\hyperlink{en_8h_a276d3cd29e7fa15cce686015c5cefd9d}{MLX5E\_MAX\_RX\_BYTES}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04951}04951         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04952}04952 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04953}04953 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04954}04954 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04955}04955 mlx5\_en\_debugnet\_event(\textcolor{keyword}{struct} ifnet *dev, \textcolor{keyword}{enum} debugnet\_ev event)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04956}04956 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04957}04957 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04958}04958 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04959}04959 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04960}04960 mlx5\_en\_debugnet\_transmit(\textcolor{keyword}{struct} ifnet *dev, \textcolor{keyword}{struct} \mbox{\hyperlink{en_8h_afe7667866ada7786d2c5a74903709909}{mbuf}} *m)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04961}04961 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04962}04962         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = if\_getsoftc(dev);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04963}04963         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__sq}{mlx5e\_sq}} *\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04964}04964         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04965}04965 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04966}04966         \textcolor{keywordflow}{if} ((if\_getdrvflags(dev) \& (IFF\_DRV\_RUNNING | IFF\_DRV\_OACTIVE)) !=}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04967}04967             IFF\_DRV\_RUNNING || (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afbe7d82d6be5ad778c829f3ed3c01838}{media\_status\_last}} \& IFM\_ACTIVE) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04968}04968                 \textcolor{keywordflow}{return} (ENOENT);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04969}04969 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04970}04970         \mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}} = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a9f8b97cbaf574081e1c05b8a0001c92b}{channel}}[0].\mbox{\hyperlink{structmlx5e__channel_a712caf49d48ce64044ab951fa53a036a}{sq}}[0];}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04971}04971 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04972}04972         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}-\/>\mbox{\hyperlink{structmlx5e__sq_a0f3f10420027122a12aab9bb40f4f7ec}{running}} == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04973}04973                 m\_freem(m);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04974}04974                 \textcolor{keywordflow}{return} (ENOENT);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04975}04975         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04976}04976 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04977}04977         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_ad270384baa4e5463df59a2a2eca18e9d}{mlx5e\_sq\_xmit}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \&m) != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04978}04978                 m\_freem(m);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04979}04979                 err = ENOBUFS;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04980}04980         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04981}04981                 err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04982}04982         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04983}04983 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04984}04984         \mbox{\hyperlink{en_8h_a1e1594b5c6e312f81ffc97fd75213b8a}{mlx5e\_tx\_notify\_hw}}(\mbox{\hyperlink{en_8h_a64e9e48395dc8b3b44c1edd328af2aac}{sq}}, \textcolor{keyword}{true});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04985}04985 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04986}04986         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04987}04987 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04988}04988 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04989}04989 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04990}04990 mlx5\_en\_debugnet\_poll(\textcolor{keyword}{struct} ifnet *dev, \textcolor{keywordtype}{int} count)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04991}04991 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04992}04992         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = if\_getsoftc(dev);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04993}04993 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04994}04994         \textcolor{keywordflow}{if} ((if\_getdrvflags(dev) \& IFF\_DRV\_RUNNING) == 0 ||}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04995}04995             (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afbe7d82d6be5ad778c829f3ed3c01838}{media\_status\_last}} \& IFM\_ACTIVE) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04996}04996                 \textcolor{keywordflow}{return} (ENOENT);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04997}04997 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04998}04998         \mbox{\hyperlink{driver_8h_af8afd0fdbd42b18a1a9f6f200b615567}{mlx5\_poll\_interrupts}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l04999}04999 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05000}05000         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05001}05001 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05002}05002 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* DEBUGNET */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05003}05003 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05004}05004 \textcolor{keyword}{static} \textcolor{keywordtype}{void} *}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05005}\mbox{\hyperlink{mlx5__en__main_8c_aa797ac7972150194a4287d7f0f1055cd}{05005}} \mbox{\hyperlink{mlx5__en__main_8c_aa797ac7972150194a4287d7f0f1055cd}{mlx5e\_get\_ifp}}(\textcolor{keywordtype}{void} *vpriv)}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05006}05006 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05007}05007         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = vpriv;}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05008}05008 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05009}05009         \textcolor{keywordflow}{return} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05010}05010 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05011}05011 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05012}\mbox{\hyperlink{mlx5__en__main_8c_ad9cd803dd559372fd97b998e128fe0a5}{05012}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__interface}{mlx5\_interface}} \mbox{\hyperlink{mlx5__en__main_8c_ad9cd803dd559372fd97b998e128fe0a5}{mlx5e\_interface}} = \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05013}05013         .\mbox{\hyperlink{structmlx5__interface_a740c62a5d6db1c1c41c578ff776a77d3}{add}} = \mbox{\hyperlink{mlx5__en__main_8c_ade2466fc261927baadd419bcb11e0b62}{mlx5e\_create\_ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05014}05014         .remove = \mbox{\hyperlink{mlx5__en__main_8c_a4f9334537d6c6ad16192d37ea32be1c3}{mlx5e\_destroy\_ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05015}05015         .event = \mbox{\hyperlink{mlx5__en__main_8c_aa3b5946d03d1e501967aec8077ea73af}{mlx5e\_async\_event}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05016}05016         .protocol = \mbox{\hyperlink{driver_8h_aa57e16cd48de3b9a989056ff8df26f84a209825323d9d866da952d6ab40f3c837}{MLX5\_INTERFACE\_PROTOCOL\_ETH}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05017}05017         .get\_dev = \mbox{\hyperlink{mlx5__en__main_8c_aa797ac7972150194a4287d7f0f1055cd}{mlx5e\_get\_ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05018}05018 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05019}05019 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05020}05020 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05021}\mbox{\hyperlink{mlx5__core_8h_a493ab2eb894b76b97fb52c85520b6f62}{05021}} \mbox{\hyperlink{mlx5__en__main_8c_a493ab2eb894b76b97fb52c85520b6f62}{mlx5e\_init}}(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05022}05022 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05023}05023         \mbox{\hyperlink{driver_8h_aa523e82291219190aebc1757cebaa908}{mlx5\_register\_interface}}(\&\mbox{\hyperlink{mlx5__en__main_8c_ad9cd803dd559372fd97b998e128fe0a5}{mlx5e\_interface}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05024}05024 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05025}05025 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05026}05026 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05027}\mbox{\hyperlink{mlx5__core_8h_ae74579c1838c338d873daa3de145b046}{05027}} \mbox{\hyperlink{mlx5__en__main_8c_ae74579c1838c338d873daa3de145b046}{mlx5e\_cleanup}}(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05028}05028 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05029}05029         \mbox{\hyperlink{driver_8h_ad9d3e06cfc971c5e482c4a1f1a6e7327}{mlx5\_unregister\_interface}}(\&\mbox{\hyperlink{mlx5__en__main_8c_ad9cd803dd559372fd97b998e128fe0a5}{mlx5e\_interface}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05030}05030 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05031}05031 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05032}\mbox{\hyperlink{mlx5__en__main_8c_a4f9eb75fa4f3093af2dfc44f96d5a640}{05032}} \mbox{\hyperlink{mlx5__en__main_8c_a4f9eb75fa4f3093af2dfc44f96d5a640}{module\_init\_order}}(\mbox{\hyperlink{mlx5__en__main_8c_a493ab2eb894b76b97fb52c85520b6f62}{mlx5e\_init}}, SI\_ORDER\_SIXTH);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05033}\mbox{\hyperlink{mlx5__en__main_8c_a8dc89420dc93d1b34ce76e28501232a2}{05033}} \mbox{\hyperlink{mlx5__en__main_8c_a8dc89420dc93d1b34ce76e28501232a2}{module\_exit\_order}}(\mbox{\hyperlink{mlx5__en__main_8c_ae74579c1838c338d873daa3de145b046}{mlx5e\_cleanup}}, SI\_ORDER\_SIXTH);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05034}05034 }
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05035}\mbox{\hyperlink{mlx5__en__main_8c_ac1617598907b096dad296d6588344f70}{05035}} \mbox{\hyperlink{mlx5__en__main_8c_ac1617598907b096dad296d6588344f70}{MODULE\_DEPEND}}(mlx5en, linuxkpi, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05036}\mbox{\hyperlink{mlx5__en__main_8c_aedbe205e58e0ae2a17873b54c4c176a5}{05036}} \mbox{\hyperlink{mlx5__en__main_8c_ac1617598907b096dad296d6588344f70}{MODULE\_DEPEND}}(mlx5en, mlx5, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__main_8c_source_l05037}\mbox{\hyperlink{mlx5__en__main_8c_a7f904110b3ab55f07c750cedce03dfa8}{05037}} \mbox{\hyperlink{mlx5__en__main_8c_a7f904110b3ab55f07c750cedce03dfa8}{MODULE\_VERSION}}(mlx5en, 1);}

\end{DoxyCode}
