\hypertarget{mlx5__en__flow__table_8c_source}{}\doxysection{mlx5\+\_\+en\+\_\+flow\+\_\+table.\+c}
\label{mlx5__en__flow__table_8c_source}\index{dev/mlx5/mlx5\_en/mlx5\_en\_flow\_table.c@{dev/mlx5/mlx5\_en/mlx5\_en\_flow\_table.c}}
\mbox{\hyperlink{mlx5__en__flow__table_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00002}00002 \textcolor{comment}{ * Copyright (c) 2015-\/2021 Mellanox Technologies. All rights reserved.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00004}00004 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00005}00005 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00006}00006 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00007}00007 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00008}00008 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00009}00009 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00010}00010 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00011}00011 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00012}00012 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00013}00013 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS `AS IS' AND}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00014}00014 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00015}00015 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00016}00016 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00017}00017 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00018}00018 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00019}00019 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00020}00020 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00021}00021 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00022}00022 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00023}00023 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00024}00024 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00025}00025 \textcolor{comment}{ * \$FreeBSD\$}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00026}00026 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00027}00027 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00028}00028 \textcolor{preprocessor}{\#include "{}opt\_rss.h"{}}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00029}00029 \textcolor{preprocessor}{\#include "{}opt\_ratelimit.h"{}}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00030}00030 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00031}00031 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{en_8h}{dev/mlx5/mlx5\_en/en.h}}>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00032}00032 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00033}00033 \textcolor{preprocessor}{\#include <linux/list.h>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00034}00034 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{fs_8h}{dev/mlx5/fs.h}}>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00035}00035 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{mpfs_8h}{dev/mlx5/mpfs.h}}>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00036}00036 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{fs__tcp_8h}{dev/mlx5/mlx5\_core/fs\_tcp.h}}>}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00037}00037 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00038}00038 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00039}00039 \textcolor{comment}{ * The flow tables with rules define the packet processing on receive.}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00040}00040 \textcolor{comment}{ * Currently the following structure is set up to handle different}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00041}00041 \textcolor{comment}{ * offloads like TLS RX offload, VLAN decapsulation, packet}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00042}00042 \textcolor{comment}{ * classification, RSS hashing, VxLAN checksum offloading:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00043}00043 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00044}00044 \textcolor{comment}{ *   +=========+       +=========+      +=================+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00045}00045 \textcolor{comment}{ *   |TCP/IPv4 |       |TCP/IPv4 |      |TCP/IPv4 Match   |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00046}00046 \textcolor{comment}{ *   |Flowtable|-\/-\/-\/-\/-\/-\/>|         |-\/-\/-\/-\/-\/>|Outer Proto Match|=====> TLS TIR n}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00047}00047 \textcolor{comment}{ *   |         |       |Catch-\/all|\(\backslash\)     |                 |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00048}00048 \textcolor{comment}{ *   +=========+       +=========+|     +=================+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00049}00049 \textcolor{comment}{ *                                |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00050}00050 \textcolor{comment}{ *       +-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00051}00051 \textcolor{comment}{ *       V}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00052}00052 \textcolor{comment}{ *   +=========+       +=========+      +=================+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00053}00053 \textcolor{comment}{ *   |TCP/IPv6 |       |TCP/IPv6 |      |TCP/IPv6 Match   |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00054}00054 \textcolor{comment}{ *   |Flowtable|-\/-\/-\/-\/-\/-\/>|         |-\/-\/-\/-\/-\/>|Outer Proto Match|=====> TLS TIR n}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00055}00055 \textcolor{comment}{ *   |         |       |Catch-\/all|\(\backslash\)     |                 |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00056}00056 \textcolor{comment}{ *   +=========+       +=========+|     +=================+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00057}00057 \textcolor{comment}{ *                                |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00058}00058 \textcolor{comment}{ *       +-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00059}00059 \textcolor{comment}{ *       V}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00060}00060 \textcolor{comment}{ *   +=========+       +=========+      +=================+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00061}00061 \textcolor{comment}{ *   |VLAN ft: |       |VxLAN    |      |VxLAN Main       |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00062}00062 \textcolor{comment}{ *   |CTAG/STAG|-\/-\/-\/-\/-\/-\/>|      VNI|-\/-\/-\/-\/-\/>|Inner Proto Match|=====> Inner TIR n}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00063}00063 \textcolor{comment}{ *   |VID/noVID|/      |Catch-\/all|\(\backslash\)     |                 |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00064}00064 \textcolor{comment}{ *   +=========+       +=========+|     +=================+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00065}00065 \textcolor{comment}{ *                                |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00066}00066 \textcolor{comment}{ *                                |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00067}00067 \textcolor{comment}{ *                                |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00068}00068 \textcolor{comment}{ *                                v}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00069}00069 \textcolor{comment}{ *                      +=================+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00070}00070 \textcolor{comment}{ *                      |Main             |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00071}00071 \textcolor{comment}{ *                      |Outer Proto Match|=====> TIR n}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00072}00072 \textcolor{comment}{ *                      |                 |}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00073}00073 \textcolor{comment}{ *                      +=================+}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00074}00074 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00075}00075 \textcolor{comment}{ * The path through flow rules directs each packet into an appropriate TIR,}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00076}00076 \textcolor{comment}{ * according to the:}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00077}00077 \textcolor{comment}{ * -\/ VLAN encapsulation}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00078}00078 \textcolor{comment}{ * -\/ Outer protocol}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00079}00079 \textcolor{comment}{ * -\/ Presence of inner protocol}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00080}00080 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00081}00081 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00082}\mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{00082}} \textcolor{preprocessor}{\#define MLX5\_SET\_CFG(p, f, v) MLX5\_SET(create\_flow\_group\_in, p, f, v)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00083}00083 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00084}00084 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00085}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a3b059259e0abda4ccd5d8d78b838d39b}{00085}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a3b059259e0abda4ccd5d8d78b838d39b}{MLX5E\_FULLMATCH}} = 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00086}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66ab5c100216dc63c7e536ff0d07cf56c3d}{00086}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66ab5c100216dc63c7e536ff0d07cf56c3d}{MLX5E\_ALLMULTI}} = 1,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00087}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a9132d3229f00e0b77898db93ddffc9d7}{00087}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a9132d3229f00e0b77898db93ddffc9d7}{MLX5E\_PROMISC}} = 2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00088}00088 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00089}00089 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00090}00090 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00091}\mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1aed8937e26db81b164f40452f566613f2}{00091}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1aed8937e26db81b164f40452f566613f2}{MLX5E\_UC}} = 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00092}\mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1a86b7047f61826494c732056cd4a7c551}{00092}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1a86b7047f61826494c732056cd4a7c551}{MLX5E\_MC\_IPV4}} = 1,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00093}\mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1a5fa1026784939de292698af18bb0af05}{00093}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1a5fa1026784939de292698af18bb0af05}{MLX5E\_MC\_IPV6}} = 2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00094}\mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1aaeea71e544218c047fa13df7dde3c1fe}{00094}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1aaeea71e544218c047fa13df7dde3c1fe}{MLX5E\_MC\_OTHER}} = 3,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00095}00095 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00096}00096 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00097}00097 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00098}\mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddac56d6673cc2af841ab61673efbe24ea9}{00098}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddac56d6673cc2af841ab61673efbe24ea9}{MLX5E\_ACTION\_NONE}} = 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00099}\mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5eddda21bc2c02efb97bdbb666291522dbdc17}{00099}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5eddda21bc2c02efb97bdbb666291522dbdc17}{MLX5E\_ACTION\_ADD}} = 1,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00100}\mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddab7d6f9f6060ca77ede11265774fe93cb}{00100}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddab7d6f9f6060ca77ede11265774fe93cb}{MLX5E\_ACTION\_DEL}} = 2,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00101}00101 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00102}00102 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00103}\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{00103}} \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00104}00104         LIST\_ENTRY(\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}}) hlist;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00105}00105         u8      action;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00106}00106         u32     mpfs\_index;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00107}00107         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__info}{mlx5e\_eth\_addr\_info}} ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00108}00108 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00109}00109 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00110}00110 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{mlx5__en__flow__table_8c_aa9f0b186f572faacf2020eae10317b41}{mlx5e\_del\_all\_vlan\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00111}00111 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00112}00112 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00113}\mbox{\hyperlink{mlx5__en__flow__table_8c_ac8a8300d8e20a35fa766bf35a3791a92}{00113}} \mbox{\hyperlink{mlx5__en__flow__table_8c_ac8a8300d8e20a35fa766bf35a3791a92}{mlx5e\_hash\_eth\_addr}}(\textcolor{keyword}{const} u8 * \mbox{\hyperlink{structmlx5e__eth__addr__info_a524bcd5bf26b85459121600e93093e5b}{addr}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00114}00114 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00115}00115         \textcolor{keywordflow}{return} (\mbox{\hyperlink{structmlx5e__eth__addr__info_a524bcd5bf26b85459121600e93093e5b}{addr}}[5]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00116}00116 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00117}00117 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00118}00118 \textcolor{keyword}{static} \textcolor{keywordtype}{bool}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00119}\mbox{\hyperlink{mlx5__en__flow__table_8c_a249e5fa671828ba493e87bbfd3b47f02}{00119}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a249e5fa671828ba493e87bbfd3b47f02}{mlx5e\_add\_eth\_addr\_to\_hash}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} *hash,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00120}00120     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn\_new)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00121}00121 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00122}00122         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00123}00123         u32 \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = \mbox{\hyperlink{mlx5__en__flow__table_8c_ac8a8300d8e20a35fa766bf35a3791a92}{mlx5e\_hash\_eth\_addr}}(hn\_new-\/>ai.addr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00124}00124 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00125}00125         LIST\_FOREACH(hn, \&hash[\mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}}], hlist) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00126}00126                 \textcolor{keywordflow}{if} (bcmp(hn-\/>ai.addr, hn\_new-\/>ai.addr, ETHER\_ADDR\_LEN) == 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00127}00127                         \textcolor{keywordflow}{if} (hn-\/>action == \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddab7d6f9f6060ca77ede11265774fe93cb}{MLX5E\_ACTION\_DEL}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00128}00128                                 hn-\/>action = \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddac56d6673cc2af841ab61673efbe24ea9}{MLX5E\_ACTION\_NONE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00129}00129                         free(hn\_new, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00130}00130                         \textcolor{keywordflow}{return} (\textcolor{keyword}{false});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00131}00131                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00132}00132         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00133}00133         LIST\_INSERT\_HEAD(\&hash[\mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}}], hn\_new, hlist);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00134}00134         \textcolor{keywordflow}{return} (\textcolor{keyword}{true});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00135}00135 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00136}00136 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00137}00137 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00138}\mbox{\hyperlink{mlx5__en__flow__table_8c_a764773bfd25025213d69451234981e3d}{00138}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a764773bfd25025213d69451234981e3d}{mlx5e\_del\_eth\_addr\_from\_hash}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00139}00139 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00140}00140         LIST\_REMOVE(hn, hlist);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00141}00141         free(hn, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00142}00142 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00143}00143 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00144}00144 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00145}\mbox{\hyperlink{mlx5__en__flow__table_8c_aee60ad25cf587fb30b898bf04f13ff90}{00145}} \mbox{\hyperlink{mlx5__en__flow__table_8c_aee60ad25cf587fb30b898bf04f13ff90}{mlx5e\_del\_eth\_addr\_from\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00146}00146     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__info}{mlx5e\_eth\_addr\_info}} *ai)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00147}00147 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00148}00148         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00149}00149                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00150}00150 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00151}00151         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00152}00152                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00153}00153 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00154}00154         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00155}00155                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00156}00156 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00157}00157         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00158}00158                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00159}00159 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00160}00160         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00161}00161                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00162}00162 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00163}00163         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00164}00164                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00165}00165 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00166}00166         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00167}00167                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00168}00168 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00169}00169         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00170}00170                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00171}00171 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00172}00172         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00173}00173                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00174}00174 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00175}00175         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00176}00176                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00177}00177 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00178}00178         \textcolor{keywordflow}{if} (ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} \& (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00179}00179                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00180}00180 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00181}00181         \textcolor{comment}{/* ensure the rules are not freed again */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00182}00182         ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00183}00183 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00184}00184 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00185}00185 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00186}\mbox{\hyperlink{mlx5__en__flow__table_8c_a5362a0ffe237e636e9e33edf7a9acca3}{00186}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a5362a0ffe237e636e9e33edf7a9acca3}{mlx5e\_get\_eth\_addr\_type}}(\textcolor{keyword}{const} u8 * addr)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00187}00187 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00188}00188         \textcolor{keywordflow}{if} (ETHER\_IS\_MULTICAST(addr) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00189}00189                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1aed8937e26db81b164f40452f566613f2}{MLX5E\_UC}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00190}00190 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00191}00191         \textcolor{keywordflow}{if} ((addr[0] == 0x01) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00192}00192             (addr[1] == 0x00) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00193}00193             (addr[2] == 0x5e) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00194}00194             !(addr[3] \& 0x80))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00195}00195                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1a86b7047f61826494c732056cd4a7c551}{MLX5E\_MC\_IPV4}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00196}00196 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00197}00197         \textcolor{keywordflow}{if} ((addr[0] == 0x33) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00198}00198             (addr[1] == 0x33))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00199}00199                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1a5fa1026784939de292698af18bb0af05}{MLX5E\_MC\_IPV6}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00200}00200 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00201}00201         \textcolor{keywordflow}{return} (\mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1aaeea71e544218c047fa13df7dde3c1fe}{MLX5E\_MC\_OTHER}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00202}00202 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00203}00203 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00204}00204 \textcolor{keyword}{static}  u32}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00205}\mbox{\hyperlink{mlx5__en__flow__table_8c_a728d400e70da1607f8747ad775b3f151}{00205}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a728d400e70da1607f8747ad775b3f151}{mlx5e\_get\_tt\_vec}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__info}{mlx5e\_eth\_addr\_info}} *ai, \textcolor{keywordtype}{int} type)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00206}00206 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00207}00207         \textcolor{keywordtype}{int} eth\_addr\_type;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00208}00208         u32 ret;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00209}00209 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00210}00210         \textcolor{keywordflow}{switch} (type) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00211}00211         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a3b059259e0abda4ccd5d8d78b838d39b}{MLX5E\_FULLMATCH}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00212}00212                 eth\_addr\_type = \mbox{\hyperlink{mlx5__en__flow__table_8c_a5362a0ffe237e636e9e33edf7a9acca3}{mlx5e\_get\_eth\_addr\_type}}(ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a524bcd5bf26b85459121600e93093e5b}{addr}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00213}00213                 \textcolor{keywordflow}{switch} (eth\_addr\_type) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00214}00214                 \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1aed8937e26db81b164f40452f566613f2}{MLX5E\_UC}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00215}00215                         ret =}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00216}00216                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00217}00217                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00218}00218                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00219}00219                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00220}00220                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00221}00221                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00222}00222                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00223}00223                             0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00224}00224                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00225}00225 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00226}00226                 \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1a86b7047f61826494c732056cd4a7c551}{MLX5E\_MC\_IPV4}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00227}00227                         ret =}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00228}00228                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00229}00229                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00230}00230                             0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00231}00231                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00232}00232 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00233}00233                 \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_af59064efe753e6928fd91539a27503d1a5fa1026784939de292698af18bb0af05}{MLX5E\_MC\_IPV6}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00234}00234                         ret =}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00235}00235                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00236}00236                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00237}00237                             0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00238}00238                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00239}00239 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00240}00240                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00241}00241                         ret =}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00242}00242                             (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00243}00243                             0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00244}00244                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00245}00245                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00246}00246                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00247}00247 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00248}00248         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66ab5c100216dc63c7e536ff0d07cf56c3d}{MLX5E\_ALLMULTI}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00249}00249                 ret =}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00250}00250                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00251}00251                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00252}00252                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00253}00253                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00254}00254                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00255}00255                     0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00256}00256                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00257}00257 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00258}00258         \textcolor{keywordflow}{default}:                        \textcolor{comment}{/* MLX5E\_PROMISC */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00259}00259                 ret =}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00260}00260                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00261}00261                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00262}00262                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00263}00263                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00264}00264                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00265}00265                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00266}00266                     (1 << \mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}) |}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00267}00267                     0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00268}00268                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00269}00269         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00270}00270 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00271}00271         \textcolor{keywordflow}{return} (ret);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00272}00272 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00273}00273 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00274}00274 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00275}\mbox{\hyperlink{mlx5__en__flow__table_8c_a8b9940eb15481e9d18948b6722458a3b}{00275}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a8b9940eb15481e9d18948b6722458a3b}{mlx5e\_add\_eth\_addr\_rule\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00276}00276     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__info}{mlx5e\_eth\_addr\_info}} *ai, \textcolor{keywordtype}{int} type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00277}00277     u32 *mc, u32 *mv)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00278}00278 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00279}00279         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__destination}{mlx5\_flow\_destination}} dest = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00280}00280         u8 mc\_enable = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00281}00281         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__rule}{mlx5\_flow\_rule}} **rule\_p;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00282}00282         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__table}{mlx5\_flow\_table}} *ft = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a95b7736ae9c51b2a2767211f31221f6f}{main}}.\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00283}00283         u8 *mc\_dmac = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(fte\_match\_param, mc,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00284}00284                                    outer\_headers.dmac\_47\_16);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00285}00285         u8 *mv\_dmac = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(fte\_match\_param, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00286}00286                                    outer\_headers.dmac\_47\_16);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00287}00287         u32 *\mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a89fb537497ccc4eee760dda4087e5cdb}{tirn}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00288}00288         u32 tt\_vec;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00289}00289         \textcolor{keywordtype}{int} err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00290}00290 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00291}00291         dest.\mbox{\hyperlink{structmlx5__flow__destination_a4421d4147c8e909299b6e406a09e3805}{type}} = \mbox{\hyperlink{mlx5__ifc_8h_a7628cefabb7ca18c6f4951d9359204d3ae281c97aa26f33c5874c2ae631c40ec0}{MLX5\_FLOW\_DESTINATION\_TYPE\_TIR}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00292}00292 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00293}00293         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{structmlx5__flow__table_abe212c738865d48c11b718b9a27bdcd9}{type}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00294}00294         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a3b059259e0abda4ccd5d8d78b838d39b}{MLX5E\_FULLMATCH}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00295}00295                 mc\_enable = \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00296}00296                 memset(mc\_dmac, 0xff, ETH\_ALEN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00297}00297                 ether\_addr\_copy(mv\_dmac, ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a524bcd5bf26b85459121600e93093e5b}{addr}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00298}00298                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00299}00299 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00300}00300         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66ab5c100216dc63c7e536ff0d07cf56c3d}{MLX5E\_ALLMULTI}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00301}00301                 mc\_enable = \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00302}00302                 mc\_dmac[0] = 0x01;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00303}00303                 mv\_dmac[0] = 0x01;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00304}00304                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00305}00305 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00306}00306         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a9132d3229f00e0b77898db93ddffc9d7}{MLX5E\_PROMISC}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00307}00307                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00308}00308         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00309}00309                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00310}00310         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00311}00311 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00312}00312         tt\_vec = \mbox{\hyperlink{mlx5__en__flow__table_8c_a728d400e70da1607f8747ad775b3f151}{mlx5e\_get\_tt\_vec}}(ai, \mbox{\hyperlink{structmlx5__flow__table_abe212c738865d48c11b718b9a27bdcd9}{type}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00313}00313 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00314}00314         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00315}00315                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00316}00316                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00317}00317                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00318}00318                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00319}00319                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00320}00320                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00321}00321                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00322}00322                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00323}00323         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00324}00324 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00325}00325         mc\_enable = \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00326}00326         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00327}00327 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00328}00328         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00329}00329                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00330}00330                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00331}00331                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00332}00332                          ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00333}00333                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00334}00334                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00335}00335                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00336}00336                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00337}00337                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00338}00338                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00339}00339         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00340}00340 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00341}00341         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00342}00342                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00343}00343                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00344}00344                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00345}00345                          ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00346}00346                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00347}00347                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00348}00348                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00349}00349                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00350}00350                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00351}00351                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00352}00352         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00353}00353 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00354}00354         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00355}00355         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ip\_protocol, IPPROTO\_UDP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00356}00356 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00357}00357         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00358}00358                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00359}00359                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00360}00360                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00361}00361                          ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00362}00362                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00363}00363                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00364}00364                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00365}00365                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00366}00366                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00367}00367                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00368}00368         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00369}00369 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00370}00370         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00371}00371                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00372}00372                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00373}00373                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00374}00374                          ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00375}00375                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00376}00376                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00377}00377                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00378}00378                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00379}00379                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00380}00380                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00381}00381         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00382}00382 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00383}00383         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ip\_protocol, IPPROTO\_TCP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00384}00384 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00385}00385         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00386}00386                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00387}00387                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00388}00388                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00389}00389                          ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00390}00390                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00391}00391                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00392}00392                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00393}00393                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00394}00394                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00395}00395                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00396}00396         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00397}00397 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00398}00398         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00399}00399                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00400}00400                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00401}00401                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00402}00402                          ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00403}00403                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00404}00404                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00405}00405                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00406}00406                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00407}00407                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00408}00408 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00409}00409                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00410}00410         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00411}00411 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00412}00412         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ip\_protocol, IPPROTO\_AH);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00413}00413 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00414}00414         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00415}00415                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00416}00416                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00417}00417                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00418}00418                          ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00419}00419                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00420}00420                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00421}00421                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00422}00422                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00423}00423                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00424}00424                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00425}00425         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00426}00426 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00427}00427         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00428}00428                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00429}00429                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00430}00430                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00431}00431                          ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00432}00432                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00433}00433                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00434}00434                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00435}00435                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00436}00436                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00437}00437                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00438}00438         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00439}00439 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00440}00440         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ip\_protocol, IPPROTO\_ESP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00441}00441 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00442}00442         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00443}00443                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00444}00444                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00445}00445                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00446}00446                          ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00447}00447                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00448}00448                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00449}00449                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00450}00450                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00451}00451                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00452}00452                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00453}00453         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00454}00454 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00455}00455         \textcolor{keywordflow}{if} (tt\_vec \& BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00456}00456                 rule\_p = \&ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_af373c5362d058a09f48e76fb94333bf4}{ft\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00457}00457                 dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00458}00458                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00459}00459                          ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00460}00460                 *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00461}00461                                              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00462}00462                                              \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00463}00463                 \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00464}00464                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00465}00465                 ai-\/>\mbox{\hyperlink{structmlx5e__eth__addr__info_a05048a947057085dbc8ffa4c2292d68c}{tt\_vec}} |= BIT(\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00466}00466         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00467}00467 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00468}00468         \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00469}00469 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00470}00470 err\_del\_ai:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00471}00471         err = PTR\_ERR(*rule\_p);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00472}00472         *rule\_p = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00473}00473         \mbox{\hyperlink{mlx5__en__flow__table_8c_aee60ad25cf587fb30b898bf04f13ff90}{mlx5e\_del\_eth\_addr\_from\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, ai);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00474}00474 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00475}00475         \textcolor{keywordflow}{return} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00476}00476 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00477}00477 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00478}00478 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00479}\mbox{\hyperlink{mlx5__en__flow__table_8c_ab6433d2e01432a781a21eb549b5ada2f}{00479}} \mbox{\hyperlink{mlx5__en__flow__table_8c_ab6433d2e01432a781a21eb549b5ada2f}{mlx5e\_add\_eth\_addr\_rule}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00480}00480     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__info}{mlx5e\_eth\_addr\_info}} *ai, \textcolor{keywordtype}{int} \mbox{\hyperlink{structmlx5__flow__table_abe212c738865d48c11b718b9a27bdcd9}{type}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00481}00481 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00482}00482         u32 *match\_criteria;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00483}00483         u32 *match\_value;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00484}00484         \textcolor{keywordtype}{int} err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00485}00485 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00486}00486         match\_value     = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00487}00487         match\_criteria  = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00488}00488         \textcolor{keywordflow}{if} (!match\_value || !match\_criteria) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00489}00489                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \textcolor{stringliteral}{"{}alloc failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00490}00490                 err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00491}00491                 \textcolor{keywordflow}{goto} add\_eth\_addr\_rule\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00492}00492         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00493}00493         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a8b9940eb15481e9d18948b6722458a3b}{mlx5e\_add\_eth\_addr\_rule\_sub}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, ai, \mbox{\hyperlink{structmlx5__flow__table_abe212c738865d48c11b718b9a27bdcd9}{type}}, match\_criteria,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00494}00494             match\_value);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00495}00495 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00496}00496 add\_eth\_addr\_rule\_out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00497}00497         kvfree(match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00498}00498         kvfree(match\_value);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00499}00499 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00500}00500         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00501}00501 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00502}00502 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00503}00503 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00504}\mbox{\hyperlink{mlx5__en__flow__table_8c_a7246af03bf70258a0bc999d26e8f3f1a}{00504}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a7246af03bf70258a0bc999d26e8f3f1a}{mlx5e\_del\_main\_vxlan\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00505}00505 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00506}00506         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__rule}{mlx5\_flow\_rule}} **ra = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}, **r;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00507}00507 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00508}00508         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00509}00509         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00510}00510                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00511}00511                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00512}00512         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00513}00513 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00514}00514         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00515}00515         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00516}00516                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00517}00517                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00518}00518         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00519}00519 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00520}00520         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00521}00521         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00522}00522                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00523}00523                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00524}00524         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00525}00525 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00526}00526         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00527}00527         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00528}00528                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00529}00529                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00530}00530         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00531}00531 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00532}00532         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00533}00533         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00534}00534                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00535}00535                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00536}00536         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00537}00537 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00538}00538         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00539}00539         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00540}00540                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00541}00541                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00542}00542         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00543}00543 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00544}00544         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00545}00545         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00546}00546                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00547}00547                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00548}00548         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00549}00549 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00550}00550         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00551}00551         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00552}00552                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00553}00553                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00554}00554         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00555}00555 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00556}00556         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00557}00557         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00558}00558                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00559}00559                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00560}00560         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00561}00561 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00562}00562         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00563}00563         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00564}00564                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00565}00565                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00566}00566         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00567}00567 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00568}00568         r = \&ra[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00569}00569         \textcolor{keywordflow}{if} (*r != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00570}00570                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(*r);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00571}00571                 *r = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00572}00572         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00573}00573 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00574}00574 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00575}00575 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00576}\mbox{\hyperlink{mlx5__en__flow__table_8c_ab54126e16c2839f178bbab7d6e36e45d}{00576}} \mbox{\hyperlink{mlx5__en__flow__table_8c_ab54126e16c2839f178bbab7d6e36e45d}{mlx5e\_add\_main\_vxlan\_rules\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u32 *mc, u32 *mv)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00577}00577 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00578}00578         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__destination}{mlx5\_flow\_destination}} dest = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00579}00579         u8 mc\_enable = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00580}00580         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__rule}{mlx5\_flow\_rule}} **rule\_p;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00581}00581         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__table}{mlx5\_flow\_table}} *ft = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ac836c424775b1bb6dad2d3ada2afb5a9}{main\_vxlan}}.\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00582}00582         u32 *\mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a77f2dadd7e914c539f24101b394a28fa}{tirn\_inner\_vxlan}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00583}00583         \textcolor{keywordtype}{int} err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00584}00584 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00585}00585         dest.\mbox{\hyperlink{structmlx5__flow__destination_a4421d4147c8e909299b6e406a09e3805}{type}} = \mbox{\hyperlink{mlx5__ifc_8h_a7628cefabb7ca18c6f4951d9359204d3ae281c97aa26f33c5874c2ae631c40ec0}{MLX5\_FLOW\_DESTINATION\_TYPE\_TIR}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00586}00586 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00587}00587         mc\_enable = \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47ba70ee34b924d9505903bf2a1cefdb6f63}{MLX5\_MATCH\_INNER\_HEADERS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00588}00588         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, inner\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00589}00589 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00590}00590         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00591}00591         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2abe49c1ff0275ef968100b624505c4530}{MLX5E\_TT\_IPV4}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00592}00592         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype, ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00593}00593         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00594}00594             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00595}00595         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00596}00596                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00597}00597 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00598}00598         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00599}00599         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a86df2e6bf1f6581d72de86eacd39cde8}{MLX5E\_TT\_IPV6}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00600}00600         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype, ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00601}00601         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00602}00602              \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00603}00603         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00604}00604                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00605}00605 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00606}00606         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, inner\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00607}00607         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ip\_protocol, IPPROTO\_UDP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00608}00608 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00609}00609         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00610}00610         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a1320cf59ee8dc292b7d33280bdf15646}{MLX5E\_TT\_IPV4\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00611}00611         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype, ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00612}00612         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00613}00613             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00614}00614         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00615}00615                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00616}00616 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00617}00617         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00618}00618         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4f41dd1a26c2ece8dfbd50e2dfef336d}{MLX5E\_TT\_IPV6\_UDP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00619}00619         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype, ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00620}00620         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00621}00621             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00622}00622         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00623}00623                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00624}00624 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00625}00625         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ip\_protocol, IPPROTO\_TCP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00626}00626 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00627}00627         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00628}00628         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a4ec1b7d80259737c86bc0949dbb9e89d}{MLX5E\_TT\_IPV4\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00629}00629         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype, ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00630}00630         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00631}00631             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00632}00632         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00633}00633                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00634}00634 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00635}00635         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00636}00636         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a877cd12a84b58dc0e626bcd90dc0804a}{MLX5E\_TT\_IPV6\_TCP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00637}00637         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype, ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00638}00638         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00639}00639             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00640}00640         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00641}00641                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00642}00642 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00643}00643         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ip\_protocol, IPPROTO\_AH);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00644}00644 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00645}00645         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00646}00646         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2aea801629b7d7472612eca3232a87dccf}{MLX5E\_TT\_IPV4\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00647}00647         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype, ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00648}00648         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00649}00649             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00650}00650         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00651}00651                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00652}00652 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00653}00653         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00654}00654         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a538e77e7429b61d6705d074c931edfb5}{MLX5E\_TT\_IPV6\_IPSEC\_AH}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00655}00655         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype, ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00656}00656         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00657}00657             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00658}00658         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00659}00659                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00660}00660 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00661}00661         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ip\_protocol, IPPROTO\_ESP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00662}00662 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00663}00663         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00664}00664         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2accaf704f2e32a15013a9f48cf7630327}{MLX5E\_TT\_IPV4\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00665}00665         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype, ETHERTYPE\_IP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00666}00666         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00667}00667             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00668}00668         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00669}00669                         \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00670}00670 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00671}00671         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00672}00672         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2cc166eae0a7f61925f30d4dd678ee1d}{MLX5E\_TT\_IPV6\_IPSEC\_ESP}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00673}00673         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, inner\_headers.ethertype,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00674}00674                  ETHERTYPE\_IPV6);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00675}00675         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00676}00676             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00677}00677         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00678}00678                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00679}00679 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00680}00680         mc\_enable = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00681}00681         memset(mv, 0, \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00682}00682         memset(mc, 0, \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00683}00683         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ad92bdcc7a72014cc02dee41804ee9bfd}{main\_vxlan\_rule}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00684}00684         dest.\mbox{\hyperlink{structmlx5__flow__destination_a1f81ea0bce32fb9e420b167eaada9230}{tir\_num}} = \mbox{\hyperlink{en__hw__tls__rx_8h_aa62e8a451871642b40879686a141fd20}{tirn}}[\mbox{\hyperlink{en_8h_a7a71631b9d7858e516bf6731309d1ee2a2c86e43111d431852ab1c9518378fadb}{MLX5E\_TT\_ANY}}];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00685}00685         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00686}00686             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00687}00687         \textcolor{keywordflow}{if} (IS\_ERR\_OR\_NULL(*rule\_p))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00688}00688                 \textcolor{keywordflow}{goto} err\_del\_ai;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00689}00689 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00690}00690         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00691}00691 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00692}00692 err\_del\_ai:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00693}00693         err = PTR\_ERR(*rule\_p);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00694}00694         *rule\_p = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00695}00695         \mbox{\hyperlink{mlx5__en__flow__table_8c_a7246af03bf70258a0bc999d26e8f3f1a}{mlx5e\_del\_main\_vxlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00696}00696 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00697}00697         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00698}00698 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00699}00699 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00700}00700 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00701}\mbox{\hyperlink{mlx5__en__flow__table_8c_a3c2650096865bf09eb854932ab278ce1}{00701}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a3c2650096865bf09eb854932ab278ce1}{mlx5e\_add\_main\_vxlan\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00702}00702 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00703}00703         u32 *match\_criteria;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00704}00704         u32 *match\_value;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00705}00705         \textcolor{keywordtype}{int} err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00706}00706 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00707}00707         match\_value = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00708}00708         match\_criteria = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00709}00709         \textcolor{keywordflow}{if} (match\_value == NULL || match\_criteria == NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00710}00710                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \textcolor{stringliteral}{"{}alloc failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00711}00711                 err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00712}00712                 \textcolor{keywordflow}{goto} add\_main\_vxlan\_rules\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00713}00713         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00714}00714         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_ab54126e16c2839f178bbab7d6e36e45d}{mlx5e\_add\_main\_vxlan\_rules\_sub}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, match\_criteria, match\_value);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00715}00715 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00716}00716 add\_main\_vxlan\_rules\_out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00717}00717         kvfree(match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00718}00718         kvfree(match\_value);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00719}00719 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00720}00720         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00721}00721 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00722}00722 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00723}\mbox{\hyperlink{mlx5__en__flow__table_8c_afb1baacfcb01ccf2d96393c70d335bc1}{00723}} \textcolor{keyword}{static} \textcolor{keywordtype}{int} \mbox{\hyperlink{mlx5__en__flow__table_8c_afb1baacfcb01ccf2d96393c70d335bc1}{mlx5e\_vport\_context\_update\_vlans}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00724}00724 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00725}00725         \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__flow__table_8c_source_l00726}00726         \textcolor{keywordtype}{int} max\_list\_size;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00727}00727         \textcolor{keywordtype}{int} list\_size;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00728}00728         u16 *vlans;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00729}00729         \textcolor{keywordtype}{int} vlan;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00730}00730         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00731}00731         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00732}00732 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00733}00733         list\_size = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00734}00734         for\_each\_set\_bit(vlan, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a2b5076afbeeb9af3a29f81daddc3d67f}{active\_vlans}}, VLAN\_N\_VID)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00735}00735                 list\_size++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00736}00736 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00737}00737         max\_list\_size = 1 << \mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, log\_max\_vlan\_list);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00738}00738 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00739}00739         \textcolor{keywordflow}{if} (list\_size > max\_list\_size) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00740}00740                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00741}00741                             \textcolor{stringliteral}{"{}ifnet vlans list size (\%d) > (\%d) max vport list size, some vlans will be dropped\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00742}00742                             list\_size, max\_list\_size);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00743}00743                 list\_size = max\_list\_size;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00744}00744         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00745}00745 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00746}00746         vlans = kcalloc(list\_size, \textcolor{keyword}{sizeof}(*vlans), GFP\_KERNEL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00747}00747         \textcolor{keywordflow}{if} (!vlans)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00748}00748                 \textcolor{keywordflow}{return} -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00749}00749 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00750}00750         i = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00751}00751         for\_each\_set\_bit(vlan, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a2b5076afbeeb9af3a29f81daddc3d67f}{active\_vlans}}, VLAN\_N\_VID) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00752}00752                 \textcolor{keywordflow}{if} (i >= list\_size)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00753}00753                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00754}00754                 vlans[i++] = vlan;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00755}00755         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00756}00756 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00757}00757         err = \mbox{\hyperlink{mlx5__vport_8c_a8027ceab8cab96c744ac92e52387dc27}{mlx5\_modify\_nic\_vport\_vlans}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, vlans, list\_size);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00758}00758         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00759}00759                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \textcolor{stringliteral}{"{}Failed to modify vport vlans list err(\%d)\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00760}00760                            err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00761}00761 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00762}00762         kfree(vlans);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00763}00763         \textcolor{keywordflow}{return} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00764}00764 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00765}00765 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00766}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93}{00766}} \textcolor{keyword}{enum} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93}{mlx5e\_vlan\_rule\_type}} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00767}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93a1c5ab937261ed776a0509afd9bd8a11a}{00767}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93a1c5ab937261ed776a0509afd9bd8a11a}{MLX5E\_VLAN\_RULE\_TYPE\_UNTAGGED}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00768}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ae28bba74a0905789d0c5db321403a1e2}{00768}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ae28bba74a0905789d0c5db321403a1e2}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_CTAG\_VID}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00769}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93acc4a9be1e2854e9ec39fea8451a8da3c}{00769}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93acc4a9be1e2854e9ec39fea8451a8da3c}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_STAG\_VID}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00770}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ac03d7687ecb73fe7d4dc6933f1d995bb}{00770}}         \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ac03d7687ecb73fe7d4dc6933f1d995bb}{MLX5E\_VLAN\_RULE\_TYPE\_MATCH\_VID}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00771}00771 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00772}00772 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00773}00773 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00774}\mbox{\hyperlink{mlx5__en__flow__table_8c_a0c317d8a80541a41333bd5d51acfdf88}{00774}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a0c317d8a80541a41333bd5d51acfdf88}{mlx5e\_add\_vlan\_rule\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00775}00775     \textcolor{keyword}{enum} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93}{mlx5e\_vlan\_rule\_type}} rule\_type, u16 vid,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00776}00776     u32 *mc, u32 *mv)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00777}00777 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00778}00778         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__table}{mlx5\_flow\_table}} *ft = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a5944e64624f12aa16c6f94af956081b4}{vlan}}.\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00779}00779         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__destination}{mlx5\_flow\_destination}} dest = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00780}00780         u8 mc\_enable = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00781}00781         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__rule}{mlx5\_flow\_rule}} **rule\_p;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00782}00782         \textcolor{keywordtype}{int} err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00783}00783 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00784}00784         dest.\mbox{\hyperlink{structmlx5__flow__destination_a4421d4147c8e909299b6e406a09e3805}{type}} = \mbox{\hyperlink{mlx5__ifc_8h_a7628cefabb7ca18c6f4951d9359204d3ab3356afcea76aae1d0e9868e8938a2d6}{MLX5\_FLOW\_DESTINATION\_TYPE\_FLOW\_TABLE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00785}00785         dest.\mbox{\hyperlink{structmlx5__flow__destination_a4fb7fd1e9aa286baa77564008f883dd4}{ft}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_af805a37489bc1987cfcd13f630c91200}{vxlan}}.\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00786}00786 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00787}00787         mc\_enable = \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00788}00788 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00789}00789         \textcolor{keywordflow}{switch} (rule\_type) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00790}00790         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93a1c5ab937261ed776a0509afd9bd8a11a}{MLX5E\_VLAN\_RULE\_TYPE\_UNTAGGED}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00791}00791                 rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a6033e7775efa38b39952eb05c210cd7a}{untagged\_ft\_rule}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00792}00792                 \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.cvlan\_tag);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00793}00793                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00794}00794         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ae28bba74a0905789d0c5db321403a1e2}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_CTAG\_VID}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00795}00795                 rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ab3e94f91ef06fc66c0aae8e459210d21}{any\_cvlan\_ft\_rule}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00796}00796                 \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.cvlan\_tag);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00797}00797                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.cvlan\_tag, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00798}00798                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00799}00799         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93acc4a9be1e2854e9ec39fea8451a8da3c}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_STAG\_VID}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00800}00800                 rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ae8cdba83453c34ea731415c67354bf2d}{any\_svlan\_ft\_rule}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00801}00801                 \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.svlan\_tag);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00802}00802                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.svlan\_tag, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00803}00803                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00804}00804         \textcolor{keywordflow}{default}: \textcolor{comment}{/* MLX5E\_VLAN\_RULE\_TYPE\_MATCH\_VID */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00805}00805                 rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ac86695b179ae904691ac0000ab60831f}{active\_vlans\_ft\_rule}}[vid];}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00806}00806                 \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.cvlan\_tag);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00807}00807                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.cvlan\_tag, 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00808}00808                 \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.first\_vid);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00809}00809                 \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.first\_vid, vid);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00810}00810                 \mbox{\hyperlink{mlx5__en__flow__table_8c_afb1baacfcb01ccf2d96393c70d335bc1}{mlx5e\_vport\_context\_update\_vlans}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00811}00811                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00812}00812         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00813}00813 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00814}00814         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00815}00815                                      \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00816}00816                                      \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00817}00817                                      \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00818}00818 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00819}00819         \textcolor{keywordflow}{if} (IS\_ERR(*rule\_p)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00820}00820                 err = PTR\_ERR(*rule\_p);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00821}00821                 *rule\_p = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00822}00822                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \textcolor{stringliteral}{"{}add rule failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00823}00823         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00824}00824 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00825}00825         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00826}00826 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00827}00827 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00828}00828 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00829}\mbox{\hyperlink{mlx5__en__flow__table_8c_ad48727c9c2954174a1aedf48f0620dee}{00829}} \mbox{\hyperlink{mlx5__en__flow__table_8c_ad48727c9c2954174a1aedf48f0620dee}{mlx5e\_add\_vlan\_rule}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00830}00830     \textcolor{keyword}{enum} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93}{mlx5e\_vlan\_rule\_type}} rule\_type, u16 vid)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00831}00831 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00832}00832         u32 *match\_criteria;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00833}00833         u32 *match\_value;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00834}00834         \textcolor{keywordtype}{int} err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00835}00835 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00836}00836         match\_value     = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00837}00837         match\_criteria  = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00838}00838         \textcolor{keywordflow}{if} (!match\_value || !match\_criteria) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00839}00839                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \textcolor{stringliteral}{"{}alloc failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00840}00840                 err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00841}00841                 \textcolor{keywordflow}{goto} add\_vlan\_rule\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00842}00842         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00843}00843 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00844}00844         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a0c317d8a80541a41333bd5d51acfdf88}{mlx5e\_add\_vlan\_rule\_sub}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, rule\_type, vid, match\_criteria,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00845}00845                                     match\_value);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00846}00846 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00847}00847 add\_vlan\_rule\_out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00848}00848         kvfree(match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00849}00849         kvfree(match\_value);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00850}00850 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00851}00851         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00852}00852 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00853}00853 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00854}00854 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00855}\mbox{\hyperlink{mlx5__en__flow__table_8c_a598bcd547aeda0c5e3989e36b9ddc96d}{00855}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a598bcd547aeda0c5e3989e36b9ddc96d}{mlx5e\_del\_vlan\_rule}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00856}00856     \textcolor{keyword}{enum} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93}{mlx5e\_vlan\_rule\_type}} rule\_type, u16 vid)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00857}00857 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00858}00858         \textcolor{keywordflow}{switch} (rule\_type) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00859}00859         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93a1c5ab937261ed776a0509afd9bd8a11a}{MLX5E\_VLAN\_RULE\_TYPE\_UNTAGGED}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00860}00860                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a6033e7775efa38b39952eb05c210cd7a}{untagged\_ft\_rule}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00861}00861                         \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a6033e7775efa38b39952eb05c210cd7a}{untagged\_ft\_rule}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00862}00862                         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a6033e7775efa38b39952eb05c210cd7a}{untagged\_ft\_rule}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00863}00863                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00864}00864                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00865}00865         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ae28bba74a0905789d0c5db321403a1e2}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_CTAG\_VID}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00866}00866                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ab3e94f91ef06fc66c0aae8e459210d21}{any\_cvlan\_ft\_rule}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00867}00867                         \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ab3e94f91ef06fc66c0aae8e459210d21}{any\_cvlan\_ft\_rule}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00868}00868                         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ab3e94f91ef06fc66c0aae8e459210d21}{any\_cvlan\_ft\_rule}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00869}00869                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00870}00870                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00871}00871         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93acc4a9be1e2854e9ec39fea8451a8da3c}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_STAG\_VID}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00872}00872                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ae8cdba83453c34ea731415c67354bf2d}{any\_svlan\_ft\_rule}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00873}00873                         \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ae8cdba83453c34ea731415c67354bf2d}{any\_svlan\_ft\_rule}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00874}00874                         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ae8cdba83453c34ea731415c67354bf2d}{any\_svlan\_ft\_rule}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00875}00875                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00876}00876                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00877}00877         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ac03d7687ecb73fe7d4dc6933f1d995bb}{MLX5E\_VLAN\_RULE\_TYPE\_MATCH\_VID}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00878}00878                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ac86695b179ae904691ac0000ab60831f}{active\_vlans\_ft\_rule}}[vid]) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00879}00879                         \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ac86695b179ae904691ac0000ab60831f}{active\_vlans\_ft\_rule}}[vid]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00880}00880                         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_ac86695b179ae904691ac0000ab60831f}{active\_vlans\_ft\_rule}}[vid] = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00881}00881                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00882}00882                 \mbox{\hyperlink{mlx5__en__flow__table_8c_afb1baacfcb01ccf2d96393c70d335bc1}{mlx5e\_vport\_context\_update\_vlans}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00883}00883                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00884}00884         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00885}00885                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00886}00886         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00887}00887 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00888}00888 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00889}00889 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00890}\mbox{\hyperlink{mlx5__en__flow__table_8c_afada937a12d3ab97700782bbcb3fb0c5}{00890}} \mbox{\hyperlink{mlx5__en__flow__table_8c_afada937a12d3ab97700782bbcb3fb0c5}{mlx5e\_del\_any\_vid\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00891}00891 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00892}00892         \mbox{\hyperlink{mlx5__en__flow__table_8c_a598bcd547aeda0c5e3989e36b9ddc96d}{mlx5e\_del\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ae28bba74a0905789d0c5db321403a1e2}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_CTAG\_VID}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00893}00893         \mbox{\hyperlink{mlx5__en__flow__table_8c_a598bcd547aeda0c5e3989e36b9ddc96d}{mlx5e\_del\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93acc4a9be1e2854e9ec39fea8451a8da3c}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_STAG\_VID}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00894}00894 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00895}00895 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00896}00896 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00897}\mbox{\hyperlink{mlx5__en__flow__table_8c_a8ebf2481b23e521c1839617cd8112eaf}{00897}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a8ebf2481b23e521c1839617cd8112eaf}{mlx5e\_add\_any\_vid\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00898}00898 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00899}00899         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00900}00900 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00901}00901         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_ad48727c9c2954174a1aedf48f0620dee}{mlx5e\_add\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ae28bba74a0905789d0c5db321403a1e2}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_CTAG\_VID}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00902}00902         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00903}00903                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00904}00904 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00905}00905         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_ad48727c9c2954174a1aedf48f0620dee}{mlx5e\_add\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93acc4a9be1e2854e9ec39fea8451a8da3c}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_STAG\_VID}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00906}00906         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00907}00907                 \mbox{\hyperlink{mlx5__en__flow__table_8c_a598bcd547aeda0c5e3989e36b9ddc96d}{mlx5e\_del\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ae28bba74a0905789d0c5db321403a1e2}{MLX5E\_VLAN\_RULE\_TYPE\_ANY\_CTAG\_VID}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00908}00908 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00909}00909         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00910}00910 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00911}00911 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00912}00912 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00913}\mbox{\hyperlink{en_8h_a2c7935474fe0a0fc56fa040f1048a90a}{00913}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a2c7935474fe0a0fc56fa040f1048a90a}{mlx5e\_enable\_vlan\_filter}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00914}00914 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00915}00915         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_aec564d5d04d2eb8e7c24f36fc3f831df}{filter\_disabled}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00916}00916                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_aec564d5d04d2eb8e7c24f36fc3f831df}{filter\_disabled}} = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00917}00917                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}-\/>if\_flags \& IFF\_PROMISC)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00918}00918                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00919}00919                 \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a46224f776e49b4d7b8b78f025553a533}{MLX5E\_STATE\_FLOW\_RULES\_READY}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00920}00920                         \mbox{\hyperlink{mlx5__en__flow__table_8c_afada937a12d3ab97700782bbcb3fb0c5}{mlx5e\_del\_any\_vid\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00921}00921         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00922}00922 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00923}00923 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00924}00924 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00925}\mbox{\hyperlink{en_8h_a7294adaac98817c8600d7251b21b96bb}{00925}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a7294adaac98817c8600d7251b21b96bb}{mlx5e\_disable\_vlan\_filter}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00926}00926 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00927}00927         \textcolor{keywordflow}{if} (!\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_aec564d5d04d2eb8e7c24f36fc3f831df}{filter\_disabled}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00928}00928                 \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_aec564d5d04d2eb8e7c24f36fc3f831df}{filter\_disabled}} = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00929}00929                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}-\/>if\_flags \& IFF\_PROMISC)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00930}00930                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00931}00931                 \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a46224f776e49b4d7b8b78f025553a533}{MLX5E\_STATE\_FLOW\_RULES\_READY}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00932}00932                         \mbox{\hyperlink{mlx5__en__flow__table_8c_a8ebf2481b23e521c1839617cd8112eaf}{mlx5e\_add\_any\_vid\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00933}00933         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00934}00934 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00935}00935 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00936}00936 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00937}\mbox{\hyperlink{en_8h_a877774ceba3be063a5352b3824dc2131}{00937}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a8789ebd80ede50a14d09a045605e13d1}{mlx5e\_vlan\_rx\_add\_vid}}(\textcolor{keywordtype}{void} *arg, \textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, u16 vid)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00938}00938 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00939}00939         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00940}00940 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00941}00941         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}} != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00942}00942                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00943}00943 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00944}00944         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00945}00945         \textcolor{keywordflow}{if} (!test\_and\_set\_bit(vid, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a2b5076afbeeb9af3a29f81daddc3d67f}{active\_vlans}}) \&\&}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00946}00946             test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a46224f776e49b4d7b8b78f025553a533}{MLX5E\_STATE\_FLOW\_RULES\_READY}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00947}00947                 \mbox{\hyperlink{mlx5__en__flow__table_8c_ad48727c9c2954174a1aedf48f0620dee}{mlx5e\_add\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ac03d7687ecb73fe7d4dc6933f1d995bb}{MLX5E\_VLAN\_RULE\_TYPE\_MATCH\_VID}}, vid);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00948}00948         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00949}00949 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00950}00950 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00951}00951 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00952}\mbox{\hyperlink{en_8h_a1df3b0692eff935f76ea9e1a1a451e1c}{00952}} \mbox{\hyperlink{mlx5__en__flow__table_8c_abe1e3bbe5d3966b241914f9e03ea5c6b}{mlx5e\_vlan\_rx\_kill\_vid}}(\textcolor{keywordtype}{void} *arg, \textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, u16 vid)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00953}00953 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00954}00954         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00955}00955 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00956}00956         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}} != \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00957}00957                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00958}00958 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00959}00959         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00960}00960         clear\_bit(vid, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a2b5076afbeeb9af3a29f81daddc3d67f}{active\_vlans}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00961}00961         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a46224f776e49b4d7b8b78f025553a533}{MLX5E\_STATE\_FLOW\_RULES\_READY}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00962}00962                 \mbox{\hyperlink{mlx5__en__flow__table_8c_a598bcd547aeda0c5e3989e36b9ddc96d}{mlx5e\_del\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ac03d7687ecb73fe7d4dc6933f1d995bb}{MLX5E\_VLAN\_RULE\_TYPE\_MATCH\_VID}}, vid);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00963}00963         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00964}00964 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00965}00965 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00966}00966 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00967}\mbox{\hyperlink{mlx5__en__flow__table_8c_aa1780c5957d47520ab93fecc409fff89}{00967}} \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1780c5957d47520ab93fecc409fff89}{mlx5e\_add\_all\_vlan\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00968}00968 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00969}00969         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00970}00970         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00971}00971 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00972}00972         set\_bit(0, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a2b5076afbeeb9af3a29f81daddc3d67f}{active\_vlans}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00973}00973         for\_each\_set\_bit(i, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a2b5076afbeeb9af3a29f81daddc3d67f}{active\_vlans}}, VLAN\_N\_VID) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00974}00974                 err = \mbox{\hyperlink{mlx5__en__flow__table_8c_ad48727c9c2954174a1aedf48f0620dee}{mlx5e\_add\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ac03d7687ecb73fe7d4dc6933f1d995bb}{MLX5E\_VLAN\_RULE\_TYPE\_MATCH\_VID}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00975}00975                                           i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00976}00976                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00977}00977                         \textcolor{keywordflow}{goto} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00978}00978         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00979}00979 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00980}00980         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_ad48727c9c2954174a1aedf48f0620dee}{mlx5e\_add\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93a1c5ab937261ed776a0509afd9bd8a11a}{MLX5E\_VLAN\_RULE\_TYPE\_UNTAGGED}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00981}00981         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00982}00982                 \textcolor{keywordflow}{goto} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00983}00983 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00984}00984         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_aec564d5d04d2eb8e7c24f36fc3f831df}{filter\_disabled}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00985}00985                 err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a8ebf2481b23e521c1839617cd8112eaf}{mlx5e\_add\_any\_vid\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00986}00986                 \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00987}00987                         \textcolor{keywordflow}{goto} error;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00988}00988         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00989}00989         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00990}00990 error:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00991}00991         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa9f0b186f572faacf2020eae10317b41}{mlx5e\_del\_all\_vlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00992}00992         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00993}00993 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00994}00994 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00995}00995 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00996}\mbox{\hyperlink{mlx5__en__flow__table_8c_aa9f0b186f572faacf2020eae10317b41}{00996}} \mbox{\hyperlink{mlx5__en__flow__table_8c_aa9f0b186f572faacf2020eae10317b41}{mlx5e\_del\_all\_vlan\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00997}00997 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00998}00998         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l00999}00999 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01000}01000         \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_aec564d5d04d2eb8e7c24f36fc3f831df}{filter\_disabled}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01001}01001                 \mbox{\hyperlink{mlx5__en__flow__table_8c_afada937a12d3ab97700782bbcb3fb0c5}{mlx5e\_del\_any\_vid\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01002}01002 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01003}01003         \mbox{\hyperlink{mlx5__en__flow__table_8c_a598bcd547aeda0c5e3989e36b9ddc96d}{mlx5e\_del\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93a1c5ab937261ed776a0509afd9bd8a11a}{MLX5E\_VLAN\_RULE\_TYPE\_UNTAGGED}}, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01004}01004 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01005}01005         for\_each\_set\_bit(i, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a2b5076afbeeb9af3a29f81daddc3d67f}{active\_vlans}}, VLAN\_N\_VID)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01006}01006                 \mbox{\hyperlink{mlx5__en__flow__table_8c_a598bcd547aeda0c5e3989e36b9ddc96d}{mlx5e\_del\_vlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4cd664bccec5008d357d6471b046bf93ac03d7687ecb73fe7d4dc6933f1d995bb}{MLX5E\_VLAN\_RULE\_TYPE\_MATCH\_VID}}, i);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01007}01007         clear\_bit(0, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_a2b5076afbeeb9af3a29f81daddc3d67f}{active\_vlans}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01008}01008 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01009}01009 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01010}\mbox{\hyperlink{mlx5__en__flow__table_8c_a9a540b65e9b3a38a2aadf00bb050a8d6}{01010}} \textcolor{preprocessor}{\#define mlx5e\_for\_each\_hash\_node(hn, tmp, hash, i) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01011}01011 \textcolor{preprocessor}{        for (i = 0; i < MLX5E\_ETH\_ADDR\_HASH\_SIZE; i++) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01012}01012 \textcolor{preprocessor}{                LIST\_FOREACH\_SAFE(hn, \&(hash)[i], hlist, tmp)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01013}01013 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01014}01014 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01015}\mbox{\hyperlink{mlx5__en__flow__table_8c_a04af76e9cf16c5112c25522f083db6b2}{01015}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a04af76e9cf16c5112c25522f083db6b2}{mlx5e\_execute\_action}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01016}01016     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01017}01017 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01018}01018         \textcolor{keywordflow}{switch} (hn-\/>action) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01019}01019         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5eddda21bc2c02efb97bdbb666291522dbdc17}{MLX5E\_ACTION\_ADD}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01020}01020                 \mbox{\hyperlink{mlx5__en__flow__table_8c_ab6433d2e01432a781a21eb549b5ada2f}{mlx5e\_add\_eth\_addr\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&hn-\/>ai, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a3b059259e0abda4ccd5d8d78b838d39b}{MLX5E\_FULLMATCH}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01021}01021                 hn-\/>action = \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddac56d6673cc2af841ab61673efbe24ea9}{MLX5E\_ACTION\_NONE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01022}01022                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01023}01023 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01024}01024         \textcolor{keywordflow}{case} \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddab7d6f9f6060ca77ede11265774fe93cb}{MLX5E\_ACTION\_DEL}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01025}01025                 \mbox{\hyperlink{mlx5__en__flow__table_8c_aee60ad25cf587fb30b898bf04f13ff90}{mlx5e\_del\_eth\_addr\_from\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&hn-\/>ai);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01026}01026                 \textcolor{keywordflow}{if} (hn-\/>mpfs\_index != -\/1U)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01027}01027                         \mbox{\hyperlink{mlx5__mpfs_8c_ad8c179552af531145d7d7ac54b79d4d1}{mlx5\_mpfs\_del\_mac}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, hn-\/>mpfs\_index);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01028}01028                 \mbox{\hyperlink{mlx5__en__flow__table_8c_a764773bfd25025213d69451234981e3d}{mlx5e\_del\_eth\_addr\_from\_hash}}(hn);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01029}01029                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01030}01030 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01031}01031         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01032}01032                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01033}01033         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01034}01034 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01035}01035 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01036}01036 \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01037}\mbox{\hyperlink{mlx5__en__flow__table_8c_abfd198b1ea236c1801fd3899ecc90e34}{01037}} \mbox{\hyperlink{mlx5__en__flow__table_8c_abfd198b1ea236c1801fd3899ecc90e34}{mlx5e\_move\_hn}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} *fh, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} *uh)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01038}01038 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01039}01039         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01040}01040 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01041}01041         hn = LIST\_FIRST(fh);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01042}01042         \textcolor{keywordflow}{if} (hn != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01043}01043                 LIST\_REMOVE(hn, hlist);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01044}01044                 LIST\_INSERT\_HEAD(uh, hn, hlist);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01045}01045         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01046}01046         \textcolor{keywordflow}{return} (hn);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01047}01047 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01048}01048 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01049}01049 \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01050}\mbox{\hyperlink{mlx5__en__flow__table_8c_a242191ee044071bfa13cf366b8533a58}{01050}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a242191ee044071bfa13cf366b8533a58}{mlx5e\_remove\_hn}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} *fh)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01051}01051 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01052}01052         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01053}01053 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01054}01054         hn = LIST\_FIRST(fh);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01055}01055         \textcolor{keywordflow}{if} (hn != NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01056}01056                 LIST\_REMOVE(hn, hlist);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01057}01057         \textcolor{keywordflow}{return} (hn);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01058}01058 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01059}01059 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01060}\mbox{\hyperlink{structmlx5e__copy__addr__ctx}{01060}} \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__copy__addr__ctx}{mlx5e\_copy\_addr\_ctx}} \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01061}\mbox{\hyperlink{structmlx5e__copy__addr__ctx_aad40cd9754c5bc7df478accdf6242e45}{01061}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} *\mbox{\hyperlink{structmlx5e__copy__addr__ctx_aad40cd9754c5bc7df478accdf6242e45}{free}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01062}\mbox{\hyperlink{structmlx5e__copy__addr__ctx_a67210cb2b4b6c95af83b61116d48f98c}{01062}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} *\mbox{\hyperlink{structmlx5e__copy__addr__ctx_a67210cb2b4b6c95af83b61116d48f98c}{fill}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01063}\mbox{\hyperlink{structmlx5e__copy__addr__ctx_acf103d862ce9599446122f8d06171b15}{01063}}         \textcolor{keywordtype}{bool} \mbox{\hyperlink{structmlx5e__copy__addr__ctx_acf103d862ce9599446122f8d06171b15}{success}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01064}01064 \};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01065}01065 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01066}01066 \textcolor{keyword}{static} u\_int}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01067}\mbox{\hyperlink{mlx5__en__flow__table_8c_a3af606db824b9ce06e76a6bedafa20db}{01067}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a3af606db824b9ce06e76a6bedafa20db}{mlx5e\_copy\_addr}}(\textcolor{keywordtype}{void} *arg, \textcolor{keyword}{struct} sockaddr\_dl *sdl, u\_int cnt)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01068}01068 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01069}01069         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__copy__addr__ctx}{mlx5e\_copy\_addr\_ctx}} *\mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}} = arg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01070}01070         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01071}01071 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01072}01072         hn = \mbox{\hyperlink{mlx5__en__flow__table_8c_abfd198b1ea236c1801fd3899ecc90e34}{mlx5e\_move\_hn}}(\mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}-\/>free, \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}-\/>fill);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01073}01073         \textcolor{keywordflow}{if} (hn == NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01074}01074                 \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}-\/>success = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01075}01075                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01076}01076         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01077}01077         ether\_addr\_copy(hn-\/>ai.addr, LLADDR(sdl));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01078}01078 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01079}01079         \textcolor{keywordflow}{return} (1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01080}01080 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01081}01081 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01082}01082 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01083}\mbox{\hyperlink{mlx5__en__flow__table_8c_a15eb1d3979b990249b0e79feca917db7}{01083}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a15eb1d3979b990249b0e79feca917db7}{mlx5e\_sync\_ifp\_addr}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01084}01084 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01085}01085         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__copy__addr__ctx}{mlx5e\_copy\_addr\_ctx}} \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01086}01086         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} head\_free;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01087}01087         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} head\_uc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01088}01088         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} head\_mc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01089}01089         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01090}01090         \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__flow__table_8c_source_l01091}01091         \textcolor{keywordtype}{size\_t} x;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01092}01092         \textcolor{keywordtype}{size\_t} num;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01093}01093 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01094}01094         \mbox{\hyperlink{en_8h_a4c6853b22d3ef62d471108c564615973}{PRIV\_ASSERT\_LOCKED}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01095}01095 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01096}01096 retry:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01097}01097         LIST\_INIT(\&head\_free);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01098}01098         LIST\_INIT(\&head\_uc);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01099}01099         LIST\_INIT(\&head\_mc);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01100}01100         num = 1 + if\_lladdr\_count(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}) + if\_llmaddr\_count(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01101}01101 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01102}01102         \textcolor{comment}{/* allocate place holders */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01103}01103         \textcolor{keywordflow}{for} (x = 0; x != num; x++) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01104}01104                 hn = malloc(\textcolor{keyword}{sizeof}(*hn), M\_MLX5EN, M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01105}01105                 hn-\/>action = \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5eddda21bc2c02efb97bdbb666291522dbdc17}{MLX5E\_ACTION\_ADD}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01106}01106                 hn-\/>mpfs\_index = -\/1U;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01107}01107                 LIST\_INSERT\_HEAD(\&head\_free, hn, hlist);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01108}01108         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01109}01109 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01110}01110         hn = \mbox{\hyperlink{mlx5__en__flow__table_8c_abfd198b1ea236c1801fd3899ecc90e34}{mlx5e\_move\_hn}}(\&head\_free, \&head\_uc);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01111}01111         MPASS(hn != NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01112}01112 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01113}01113         ether\_addr\_copy(hn-\/>ai.addr,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01114}01114             LLADDR((\textcolor{keyword}{struct} sockaddr\_dl *)(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_addr-\/>ifa\_addr)));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01115}01115 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01116}01116         \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}.free = \&head\_free;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01117}01117         \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}.fill = \&head\_uc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01118}01118         \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}.success = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01119}01119         if\_foreach\_lladdr(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a3af606db824b9ce06e76a6bedafa20db}{mlx5e\_copy\_addr}}, \&\mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01120}01120         \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}.success == \textcolor{keyword}{false})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01121}01121                 \textcolor{keywordflow}{goto} \mbox{\hyperlink{mlx5__main_8c_a05892a023f8cebf7a30dfd319be2a6d0}{cleanup}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01122}01122 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01123}01123         \mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}.fill = \&head\_mc;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01124}01124         if\_foreach\_llmaddr(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a3af606db824b9ce06e76a6bedafa20db}{mlx5e\_copy\_addr}}, \&\mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01125}01125         \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}.success == \textcolor{keyword}{false})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01126}01126                 \textcolor{keywordflow}{goto} \mbox{\hyperlink{mlx5__main_8c_a05892a023f8cebf7a30dfd319be2a6d0}{cleanup}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01127}01127 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01128}01128         \textcolor{comment}{/* insert L2 unicast addresses into hash list */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01129}01129 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01130}01130         \textcolor{keywordflow}{while} ((hn = \mbox{\hyperlink{mlx5__en__flow__table_8c_a242191ee044071bfa13cf366b8533a58}{mlx5e\_remove\_hn}}(\&head\_uc)) != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01131}01131                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{mlx5__en__flow__table_8c_a249e5fa671828ba493e87bbfd3b47f02}{mlx5e\_add\_eth\_addr\_to\_hash}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_adf788e5650f055174659e543441915ef}{if\_uc}}, hn) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01132}01132                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01133}01133                 \textcolor{keywordflow}{if} (hn-\/>mpfs\_index == -\/1U)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01134}01134                         \mbox{\hyperlink{mlx5__mpfs_8c_a64fa41c9a5c6bef0bbada4550bd4ba9c}{mlx5\_mpfs\_add\_mac}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \&hn-\/>mpfs\_index,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01135}01135                             hn-\/>ai.addr, 0, 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01136}01136         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01137}01137 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01138}01138         \textcolor{comment}{/* insert L2 multicast addresses into hash list */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01139}01139 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01140}01140         \textcolor{keywordflow}{while} ((hn = \mbox{\hyperlink{mlx5__en__flow__table_8c_a242191ee044071bfa13cf366b8533a58}{mlx5e\_remove\_hn}}(\&head\_mc)) != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01141}01141                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{mlx5__en__flow__table_8c_a249e5fa671828ba493e87bbfd3b47f02}{mlx5e\_add\_eth\_addr\_to\_hash}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_a6fab0a6303c1d226bee0945a59724f38}{if\_mc}}, hn) == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01142}01142                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01143}01143         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01144}01144 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01145}01145 \mbox{\hyperlink{mlx5__main_8c_a05892a023f8cebf7a30dfd319be2a6d0}{cleanup}}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01146}01146         \textcolor{keywordflow}{while} ((hn = \mbox{\hyperlink{mlx5__en__flow__table_8c_a242191ee044071bfa13cf366b8533a58}{mlx5e\_remove\_hn}}(\&head\_uc)) != NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01147}01147                 free(hn, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01148}01148         \textcolor{keywordflow}{while} ((hn = \mbox{\hyperlink{mlx5__en__flow__table_8c_a242191ee044071bfa13cf366b8533a58}{mlx5e\_remove\_hn}}(\&head\_mc)) != NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01149}01149                 free(hn, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01150}01150         \textcolor{keywordflow}{while} ((hn = \mbox{\hyperlink{mlx5__en__flow__table_8c_a242191ee044071bfa13cf366b8533a58}{mlx5e\_remove\_hn}}(\&head\_free)) != NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01151}01151                 free(hn, M\_MLX5EN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01152}01152 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01153}01153         \textcolor{keywordflow}{if} (\mbox{\hyperlink{device_8h_a8d4d31e2784e411744d2776ed7a2fa32}{ctx}}.success == \textcolor{keyword}{false})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01154}01154                 \textcolor{keywordflow}{goto} retry;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01155}01155 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01156}01156 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01157}\mbox{\hyperlink{mlx5__en__flow__table_8c_a970775b166a0faef4079e839b34e20b9}{01157}} \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{mlx5__en__flow__table_8c_a970775b166a0faef4079e839b34e20b9}{mlx5e\_fill\_addr\_array}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{int} list\_type,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01158}01158                                   u8 addr\_array[][ETH\_ALEN], \textcolor{keywordtype}{int} size)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01159}01159 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01160}01160         \textcolor{keywordtype}{bool} is\_uc = (list\_type == \mbox{\hyperlink{device_8h_aaeffb3e9673a6ec1ceffbec7699c0ce1a36a014e5d252225bb9259b1fdce6e820}{MLX5\_NIC\_VPORT\_LIST\_TYPE\_UC}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01161}01161         \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__flow__table_8c_source_l01162}01162         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01163}01163         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} *addr\_list;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01164}01164         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *tmp;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01165}01165         \textcolor{keywordtype}{int} i = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01166}01166         \textcolor{keywordtype}{int} hi;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01167}01167 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01168}01168         addr\_list = is\_uc ? \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_adf788e5650f055174659e543441915ef}{if\_uc}} : \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_a6fab0a6303c1d226bee0945a59724f38}{if\_mc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01169}01169 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01170}01170         \textcolor{keywordflow}{if} (is\_uc) \textcolor{comment}{/* Make sure our own address is pushed first */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01171}01171                 ether\_addr\_copy(addr\_array[i++], IF\_LLADDR(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01172}01172         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_acd9b48bcc92f6c7a1dd3aeed5123458b}{broadcast\_enabled}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01173}01173                 ether\_addr\_copy(addr\_array[i++], \mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}-\/>if\_broadcastaddr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01174}01174 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01175}01175         \mbox{\hyperlink{mlx5__en__flow__table_8c_a9a540b65e9b3a38a2aadf00bb050a8d6}{mlx5e\_for\_each\_hash\_node}}(hn, tmp, addr\_list, hi) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01176}01176                 \textcolor{keywordflow}{if} (ether\_addr\_equal(IF\_LLADDR(\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}}), hn-\/>ai.addr))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01177}01177                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01178}01178                 \textcolor{keywordflow}{if} (i >= size)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01179}01179                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01180}01180                 ether\_addr\_copy(addr\_array[i++], hn-\/>ai.addr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01181}01181         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01182}01182 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01183}01183 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01184}\mbox{\hyperlink{mlx5__en__flow__table_8c_adfcd3eda888cc6290acb896c00484e86}{01184}} \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{mlx5__en__flow__table_8c_adfcd3eda888cc6290acb896c00484e86}{mlx5e\_vport\_context\_update\_addr\_list}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01185}01185                                                  \textcolor{keywordtype}{int} list\_type)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01186}01186 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01187}01187         \textcolor{keywordtype}{bool} is\_uc = (list\_type == \mbox{\hyperlink{device_8h_aaeffb3e9673a6ec1ceffbec7699c0ce1a36a014e5d252225bb9259b1fdce6e820}{MLX5\_NIC\_VPORT\_LIST\_TYPE\_UC}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01188}01188         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01189}01189         u8 (*addr\_array)[ETH\_ALEN] = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01190}01190         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__head}{mlx5e\_eth\_addr\_hash\_head}} *addr\_list;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01191}01191         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *tmp;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01192}01192         \textcolor{keywordtype}{int} max\_size;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01193}01193         \textcolor{keywordtype}{int} size;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01194}01194         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01195}01195         \textcolor{keywordtype}{int} hi;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01196}01196 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01197}01197         size = is\_uc ? 0 : (\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_acd9b48bcc92f6c7a1dd3aeed5123458b}{broadcast\_enabled}} ? 1 : 0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01198}01198         max\_size = is\_uc ?}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01199}01199                 1 << \mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, log\_max\_current\_uc\_list) :}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01200}01200                 1 << \mbox{\hyperlink{device_8h_ab4698570d3992612e8c6ccf9fde798c3}{MLX5\_CAP\_GEN}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, log\_max\_current\_mc\_list);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01201}01201 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01202}01202         addr\_list = is\_uc ? \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_adf788e5650f055174659e543441915ef}{if\_uc}} : \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_a6fab0a6303c1d226bee0945a59724f38}{if\_mc}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01203}01203         \mbox{\hyperlink{mlx5__en__flow__table_8c_a9a540b65e9b3a38a2aadf00bb050a8d6}{mlx5e\_for\_each\_hash\_node}}(hn, tmp, addr\_list, hi)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01204}01204                 size++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01205}01205 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01206}01206         \textcolor{keywordflow}{if} (size > max\_size) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01207}01207                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01208}01208                             \textcolor{stringliteral}{"{}ifp \%s list size (\%d) > (\%d) max vport list size, some addresses will be dropped\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01209}01209                             is\_uc ? \textcolor{stringliteral}{"{}UC"{}} : \textcolor{stringliteral}{"{}MC"{}}, size, max\_size);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01210}01210                 size = max\_size;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01211}01211         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01212}01212 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01213}01213         \textcolor{keywordflow}{if} (size) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01214}01214                 addr\_array = kcalloc(size, ETH\_ALEN, GFP\_KERNEL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01215}01215                 \textcolor{keywordflow}{if} (!addr\_array) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01216}01216                         err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01217}01217                         \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01218}01218                 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01219}01219                 \mbox{\hyperlink{mlx5__en__flow__table_8c_a970775b166a0faef4079e839b34e20b9}{mlx5e\_fill\_addr\_array}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, list\_type, addr\_array, size);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01220}01220         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01221}01221 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01222}01222         err = \mbox{\hyperlink{mlx5__vport_8c_aab16f8944c4fc7d888910b604f3a7180}{mlx5\_modify\_nic\_vport\_mac\_list}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, list\_type, addr\_array, size);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01223}01223 out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01224}01224         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01225}01225                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01226}01226                            \textcolor{stringliteral}{"{}Failed to modify vport \%s list err(\%d)\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01227}01227                            is\_uc ? \textcolor{stringliteral}{"{}UC"{}} : \textcolor{stringliteral}{"{}MC"{}}, err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01228}01228         kfree(addr\_array);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01229}01229 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01230}01230 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01231}\mbox{\hyperlink{mlx5__en__flow__table_8c_a12da82a1a5d8cd63a61b5d9ade7cc74c}{01231}} \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{mlx5__en__flow__table_8c_a12da82a1a5d8cd63a61b5d9ade7cc74c}{mlx5e\_vport\_context\_update}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01232}01232 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01233}01233         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__db}{mlx5e\_eth\_addr\_db}} *ea = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01234}01234 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01235}01235         \mbox{\hyperlink{mlx5__en__flow__table_8c_adfcd3eda888cc6290acb896c00484e86}{mlx5e\_vport\_context\_update\_addr\_list}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{device_8h_aaeffb3e9673a6ec1ceffbec7699c0ce1a36a014e5d252225bb9259b1fdce6e820}{MLX5\_NIC\_VPORT\_LIST\_TYPE\_UC}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01236}01236         \mbox{\hyperlink{mlx5__en__flow__table_8c_adfcd3eda888cc6290acb896c00484e86}{mlx5e\_vport\_context\_update\_addr\_list}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{device_8h_aaeffb3e9673a6ec1ceffbec7699c0ce1ab9ba0bd9acf21b6ca979fcb37363319a}{MLX5\_NIC\_VPORT\_LIST\_TYPE\_MC}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01237}01237         \mbox{\hyperlink{mlx5__vport_8c_a1f7f14f66cc4e76465342e607459a70a}{mlx5\_modify\_nic\_vport\_promisc}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01238}01238                                       ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a0f128f6b2dede8e9629cfd3cef143967}{allmulti\_enabled}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01239}01239                                       ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a951924ab980c4208a4b0e23ee4a19ddd}{promisc\_enabled}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01240}01240 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01241}01241 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01242}01242 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01243}\mbox{\hyperlink{mlx5__en__flow__table_8c_ac5bfc9449456c31ec513ff5b69becbcd}{01243}} \mbox{\hyperlink{mlx5__en__flow__table_8c_ac5bfc9449456c31ec513ff5b69becbcd}{mlx5e\_apply\_ifp\_addr}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01244}01244 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01245}01245         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01246}01246         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *tmp;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01247}01247         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01248}01248 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01249}01249         \mbox{\hyperlink{mlx5__en__flow__table_8c_a9a540b65e9b3a38a2aadf00bb050a8d6}{mlx5e\_for\_each\_hash\_node}}(hn, tmp, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_adf788e5650f055174659e543441915ef}{if\_uc}}, i)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01250}01250             \mbox{\hyperlink{mlx5__en__flow__table_8c_a04af76e9cf16c5112c25522f083db6b2}{mlx5e\_execute\_action}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, hn);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01251}01251 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01252}01252         \mbox{\hyperlink{mlx5__en__flow__table_8c_a9a540b65e9b3a38a2aadf00bb050a8d6}{mlx5e\_for\_each\_hash\_node}}(hn, tmp, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_a6fab0a6303c1d226bee0945a59724f38}{if\_mc}}, i)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01253}01253             \mbox{\hyperlink{mlx5__en__flow__table_8c_a04af76e9cf16c5112c25522f083db6b2}{mlx5e\_execute\_action}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, hn);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01254}01254 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01255}01255 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01256}01256 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01257}\mbox{\hyperlink{mlx5__en__flow__table_8c_aa0920817b35fd1f41efea21ca451765f}{01257}} \mbox{\hyperlink{mlx5__en__flow__table_8c_aa0920817b35fd1f41efea21ca451765f}{mlx5e\_handle\_ifp\_addr}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{bool} rx\_mode\_enable)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01258}01258 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01259}01259         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *hn;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01260}01260         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__hash__node}{mlx5e\_eth\_addr\_hash\_node}} *tmp;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01261}01261         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01262}01262 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01263}01263         \mbox{\hyperlink{mlx5__en__flow__table_8c_a9a540b65e9b3a38a2aadf00bb050a8d6}{mlx5e\_for\_each\_hash\_node}}(hn, tmp, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_adf788e5650f055174659e543441915ef}{if\_uc}}, i)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01264}01264             hn-\/>action = \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddab7d6f9f6060ca77ede11265774fe93cb}{MLX5E\_ACTION\_DEL}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01265}01265         \mbox{\hyperlink{mlx5__en__flow__table_8c_a9a540b65e9b3a38a2aadf00bb050a8d6}{mlx5e\_for\_each\_hash\_node}}(hn, tmp, \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_a6fab0a6303c1d226bee0945a59724f38}{if\_mc}}, i)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01266}01266             hn-\/>action = \mbox{\hyperlink{mlx5__en__flow__table_8c_acedc21792913cbec6ca54f6981c5edddab7d6f9f6060ca77ede11265774fe93cb}{MLX5E\_ACTION\_DEL}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01267}01267 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01268}01268         \textcolor{keywordflow}{if} (rx\_mode\_enable)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01269}01269                 \mbox{\hyperlink{mlx5__en__flow__table_8c_a15eb1d3979b990249b0e79feca917db7}{mlx5e\_sync\_ifp\_addr}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01270}01270 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01271}01271         \mbox{\hyperlink{mlx5__en__flow__table_8c_ac5bfc9449456c31ec513ff5b69becbcd}{mlx5e\_apply\_ifp\_addr}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01272}01272 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01273}01273 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01274}01274 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01275}\mbox{\hyperlink{mlx5__en__flow__table_8c_a04b2484915fa99b3514375c887fa4475}{01275}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a04b2484915fa99b3514375c887fa4475}{mlx5e\_set\_rx\_mode\_core}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{bool} rx\_mode\_enable)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01276}01276 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01277}01277         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__eth__addr__db}{mlx5e\_eth\_addr\_db}} *ea = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01278}01278         \textcolor{keyword}{struct }ifnet *ndev = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01279}01279 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01280}01280         \textcolor{keywordtype}{bool} promisc\_enabled = rx\_mode\_enable \&\& (ndev-\/>if\_flags \& IFF\_PROMISC);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01281}01281         \textcolor{keywordtype}{bool} allmulti\_enabled = rx\_mode\_enable \&\& (ndev-\/>if\_flags \& IFF\_ALLMULTI);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01282}01282         \textcolor{keywordtype}{bool} broadcast\_enabled = rx\_mode\_enable;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01283}01283 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01284}01284         \textcolor{keywordtype}{bool} enable\_promisc = !ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a951924ab980c4208a4b0e23ee4a19ddd}{promisc\_enabled}} \&\& promisc\_enabled;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01285}01285         \textcolor{keywordtype}{bool} disable\_promisc = ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a951924ab980c4208a4b0e23ee4a19ddd}{promisc\_enabled}} \&\& !promisc\_enabled;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01286}01286         \textcolor{keywordtype}{bool} enable\_allmulti = !ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a0f128f6b2dede8e9629cfd3cef143967}{allmulti\_enabled}} \&\& allmulti\_enabled;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01287}01287         \textcolor{keywordtype}{bool} disable\_allmulti = ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a0f128f6b2dede8e9629cfd3cef143967}{allmulti\_enabled}} \&\& !allmulti\_enabled;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01288}01288         \textcolor{keywordtype}{bool} enable\_broadcast = !ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_acd9b48bcc92f6c7a1dd3aeed5123458b}{broadcast\_enabled}} \&\& broadcast\_enabled;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01289}01289         \textcolor{keywordtype}{bool} disable\_broadcast = ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_acd9b48bcc92f6c7a1dd3aeed5123458b}{broadcast\_enabled}} \&\& !broadcast\_enabled;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01290}01290 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01291}01291         \textcolor{comment}{/* update broadcast address */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01292}01292         ether\_addr\_copy(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a0fa84909bafebcdd09265dbafc2840a1}{eth\_addr}}.\mbox{\hyperlink{structmlx5e__eth__addr__db_a50fbd894214454a8d92b5c8de621760d}{broadcast}}.\mbox{\hyperlink{structmlx5e__eth__addr__info_a524bcd5bf26b85459121600e93093e5b}{addr}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01293}01293             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}-\/>if\_broadcastaddr);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01294}01294 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01295}01295         \textcolor{keywordflow}{if} (enable\_promisc) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01296}01296                 \mbox{\hyperlink{mlx5__en__flow__table_8c_ab6433d2e01432a781a21eb549b5ada2f}{mlx5e\_add\_eth\_addr\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a6443a5e95b6cd0973e28f62a8df92fd7}{promisc}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a9132d3229f00e0b77898db93ddffc9d7}{MLX5E\_PROMISC}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01297}01297                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_aec564d5d04d2eb8e7c24f36fc3f831df}{filter\_disabled}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01298}01298                         \mbox{\hyperlink{mlx5__en__flow__table_8c_a8ebf2481b23e521c1839617cd8112eaf}{mlx5e\_add\_any\_vid\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01299}01299         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01300}01300         \textcolor{keywordflow}{if} (enable\_allmulti)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01301}01301                 \mbox{\hyperlink{mlx5__en__flow__table_8c_ab6433d2e01432a781a21eb549b5ada2f}{mlx5e\_add\_eth\_addr\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_ae8206e6d78d0bf34193707a20c99e2d9}{allmulti}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66ab5c100216dc63c7e536ff0d07cf56c3d}{MLX5E\_ALLMULTI}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01302}01302         \textcolor{keywordflow}{if} (enable\_broadcast)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01303}01303                 \mbox{\hyperlink{mlx5__en__flow__table_8c_ab6433d2e01432a781a21eb549b5ada2f}{mlx5e\_add\_eth\_addr\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a50fbd894214454a8d92b5c8de621760d}{broadcast}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f79453548dc20926be4b5a000ecbd66a3b059259e0abda4ccd5d8d78b838d39b}{MLX5E\_FULLMATCH}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01304}01304 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01305}01305         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa0920817b35fd1f41efea21ca451765f}{mlx5e\_handle\_ifp\_addr}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, rx\_mode\_enable);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01306}01306 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01307}01307         \textcolor{keywordflow}{if} (disable\_broadcast)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01308}01308                 \mbox{\hyperlink{mlx5__en__flow__table_8c_aee60ad25cf587fb30b898bf04f13ff90}{mlx5e\_del\_eth\_addr\_from\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a50fbd894214454a8d92b5c8de621760d}{broadcast}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01309}01309         \textcolor{keywordflow}{if} (disable\_allmulti)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01310}01310                 \mbox{\hyperlink{mlx5__en__flow__table_8c_aee60ad25cf587fb30b898bf04f13ff90}{mlx5e\_del\_eth\_addr\_from\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_ae8206e6d78d0bf34193707a20c99e2d9}{allmulti}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01311}01311         \textcolor{keywordflow}{if} (disable\_promisc) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01312}01312                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a66b45daa7fa1ed8ad6381f3c3b497fa4}{vlan}}.\mbox{\hyperlink{structmlx5e__vlan__db_aec564d5d04d2eb8e7c24f36fc3f831df}{filter\_disabled}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01313}01313                         \mbox{\hyperlink{mlx5__en__flow__table_8c_afada937a12d3ab97700782bbcb3fb0c5}{mlx5e\_del\_any\_vid\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01314}01314                 \mbox{\hyperlink{mlx5__en__flow__table_8c_aee60ad25cf587fb30b898bf04f13ff90}{mlx5e\_del\_eth\_addr\_from\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \&ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a6443a5e95b6cd0973e28f62a8df92fd7}{promisc}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01315}01315         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01316}01316 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01317}01317         ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a951924ab980c4208a4b0e23ee4a19ddd}{promisc\_enabled}} = promisc\_enabled;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01318}01318         ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_a0f128f6b2dede8e9629cfd3cef143967}{allmulti\_enabled}} = allmulti\_enabled;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01319}01319         ea-\/>\mbox{\hyperlink{structmlx5e__eth__addr__db_acd9b48bcc92f6c7a1dd3aeed5123458b}{broadcast\_enabled}} = broadcast\_enabled;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01320}01320 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01321}01321         \mbox{\hyperlink{mlx5__en__flow__table_8c_a12da82a1a5d8cd63a61b5d9ade7cc74c}{mlx5e\_vport\_context\_update}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01322}01322 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01323}01323 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01324}01324 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01325}\mbox{\hyperlink{en_8h_a0cb348cb040a1dec9c25be15bcdcabbb}{01325}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a0cb348cb040a1dec9c25be15bcdcabbb}{mlx5e\_set\_rx\_mode\_work}}(\textcolor{keyword}{struct} work\_struct *\mbox{\hyperlink{en__hw__tls_8h_a623997e11b94d7c467ce26627cc488a2}{work}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01326}01326 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01327}01327         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} =}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01328}01328             container\_of(\mbox{\hyperlink{en__hw__tls_8h_a623997e11b94d7c467ce26627cc488a2}{work}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}}, \mbox{\hyperlink{structmlx5e__priv_ad6414c973db68d35d7b343d4b88b2016}{set\_rx\_mode\_work}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01329}01329 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01330}01330         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01331}01331         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a46224f776e49b4d7b8b78f025553a533}{MLX5E\_STATE\_FLOW\_RULES\_READY}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01332}01332                 \mbox{\hyperlink{mlx5__en__flow__table_8c_a04b2484915fa99b3514375c887fa4475}{mlx5e\_set\_rx\_mode\_core}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{true});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01333}01333         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01334}01334 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01335}01335 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01336}01336 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01337}\mbox{\hyperlink{mlx5__en__flow__table_8c_a5a53c12b158e0b8577cdefb5ae741557}{01337}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a5a53c12b158e0b8577cdefb5ae741557}{mlx5e\_destroy\_groups}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01338}01338 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01339}01339         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01340}01340 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01341}01341         \textcolor{keywordflow}{for} (i = ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}} -\/ 1; i >= 0; i-\/-\/) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01342}01342                 \textcolor{keywordflow}{if} (!IS\_ERR\_OR\_NULL(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[i]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01343}01343                         \mbox{\hyperlink{fs_8h_a35d5489c13664e3325dd2f3bcd21a88a}{mlx5\_destroy\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[i]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01344}01344                 ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[i] = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01345}01345         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01346}01346         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01347}01347 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01348}01348 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01349}01349 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01350}\mbox{\hyperlink{mlx5__en__flow__table_8c_ae9fd7975b3b323bfdff01a2d9e771a21}{01350}} \mbox{\hyperlink{mlx5__en__flow__table_8c_ae9fd7975b3b323bfdff01a2d9e771a21}{mlx5e\_destroy\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01351}01351 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01352}01352         \mbox{\hyperlink{mlx5__en__flow__table_8c_a5a53c12b158e0b8577cdefb5ae741557}{mlx5e\_destroy\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01353}01353         kfree(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01354}01354         \mbox{\hyperlink{fs_8h_ae0fca9adb99d0de56dd209f5d80ac76f}{mlx5\_destroy\_flow\_table}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01355}01355         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01356}01356 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01357}01357 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01358}\mbox{\hyperlink{mlx5__en__flow__table_8c_a0c0035ff8ba2bec149d68f6d4444f4d6}{01358}} \textcolor{preprocessor}{\#define MLX5E\_NUM\_MAIN\_GROUPS   10}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01359}\mbox{\hyperlink{mlx5__en__flow__table_8c_a2f4a9784b82038227ef664b15dbfc2e5}{01359}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP0\_SIZE  BIT(4)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01360}\mbox{\hyperlink{mlx5__en__flow__table_8c_a92c212d9092b61c1265a12038d5b01fd}{01360}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP1\_SIZE  BIT(3)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01361}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4a3b3c5c67674d56e2f8bf9e9572aca0}{01361}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP2\_SIZE  BIT(1)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01362}\mbox{\hyperlink{mlx5__en__flow__table_8c_aa8582ef4aecf6cf775370c00b80207e7}{01362}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP3\_SIZE  BIT(0)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01363}\mbox{\hyperlink{mlx5__en__flow__table_8c_a2e5e6a352f4aec16cb86a6b0547d20d1}{01363}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP4\_SIZE  BIT(14)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01364}\mbox{\hyperlink{mlx5__en__flow__table_8c_aebcdf0472fd20a523e7c3406b5702134}{01364}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP5\_SIZE  BIT(13)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01365}\mbox{\hyperlink{mlx5__en__flow__table_8c_a1dede9720036954553a180978b46c3b8}{01365}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP6\_SIZE  BIT(11)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01366}\mbox{\hyperlink{mlx5__en__flow__table_8c_a913408daed04b0ee1c75b076f79e0440}{01366}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP7\_SIZE  BIT(2)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01367}\mbox{\hyperlink{mlx5__en__flow__table_8c_a47cbd2ba22b2daded89be5ddac759d17}{01367}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP8\_SIZE  BIT(1)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01368}\mbox{\hyperlink{mlx5__en__flow__table_8c_af4cfe89215324dd1ad28547d7937a4f2}{01368}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_GROUP9\_SIZE  BIT(0)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01369}\mbox{\hyperlink{mlx5__en__flow__table_8c_a6eaacfdec6b43c3505eadd19cae2bc32}{01369}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_TABLE\_SIZE   (MLX5E\_MAIN\_GROUP0\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01370}01370 \textcolor{preprocessor}{                                 MLX5E\_MAIN\_GROUP1\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01371}01371 \textcolor{preprocessor}{                                 MLX5E\_MAIN\_GROUP2\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01372}01372 \textcolor{preprocessor}{                                 MLX5E\_MAIN\_GROUP3\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01373}01373 \textcolor{preprocessor}{                                 MLX5E\_MAIN\_GROUP4\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01374}01374 \textcolor{preprocessor}{                                 MLX5E\_MAIN\_GROUP5\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01375}01375 \textcolor{preprocessor}{                                 MLX5E\_MAIN\_GROUP6\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01376}01376 \textcolor{preprocessor}{                                 MLX5E\_MAIN\_GROUP7\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01377}01377 \textcolor{preprocessor}{                                 MLX5E\_MAIN\_GROUP8\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01378}01378 \textcolor{preprocessor}{                                 MLX5E\_MAIN\_GROUP9\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01379}01379 \textcolor{preprocessor}{                                 0)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01380}01380 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01381}01381 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01382}\mbox{\hyperlink{mlx5__en__flow__table_8c_aeb4ee185c8045fe0168f82946a7365cd}{01382}} \mbox{\hyperlink{mlx5__en__flow__table_8c_aeb4ee185c8045fe0168f82946a7365cd}{mlx5e\_create\_main\_groups\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft, u32 *in,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01383}01383                                       \textcolor{keywordtype}{int} inlen)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01384}01384 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01385}01385         u8 *mc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_flow\_group\_in, in, match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01386}01386         u8 *dmac = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_flow\_group\_in, in,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01387}01387                                 match\_criteria.outer\_headers.dmac\_47\_16);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01388}01388         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01389}01389         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01390}01390 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01391}01391         \textcolor{comment}{/* Tunnel rules need to be first in this list of groups */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01392}01392 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01393}01393         \textcolor{comment}{/* Start tunnel rules */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01394}01394         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01395}01395         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01396}01396         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01397}01397         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01398}01398         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.udp\_dport);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01399}01399         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01400}01400         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a2f4a9784b82038227ef664b15dbfc2e5}{MLX5E\_MAIN\_GROUP0\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01401}01401         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01402}01402         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01403}01403         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01404}01404                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01405}01405         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01406}01406         \textcolor{comment}{/* End Tunnel Rules */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01407}01407 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01408}01408         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01409}01409         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01410}01410         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01411}01411         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01412}01412         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01413}01413         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a92c212d9092b61c1265a12038d5b01fd}{MLX5E\_MAIN\_GROUP1\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01414}01414         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01415}01415         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01416}01416         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01417}01417                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01418}01418         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01419}01419 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01420}01420         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01421}01421         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01422}01422         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01423}01423         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01424}01424         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a4a3b3c5c67674d56e2f8bf9e9572aca0}{MLX5E\_MAIN\_GROUP2\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01425}01425         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01426}01426         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01427}01427         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01428}01428                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01429}01429         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01430}01430 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01431}01431         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01432}01432         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01433}01433         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_aa8582ef4aecf6cf775370c00b80207e7}{MLX5E\_MAIN\_GROUP3\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01434}01434         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01435}01435         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01436}01436         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01437}01437                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01438}01438         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01439}01439 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01440}01440         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01441}01441         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01442}01442         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01443}01443         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01444}01444         memset(dmac, 0xff, ETH\_ALEN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01445}01445         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01446}01446         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a2e5e6a352f4aec16cb86a6b0547d20d1}{MLX5E\_MAIN\_GROUP4\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01447}01447         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01448}01448         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01449}01449         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01450}01450                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01451}01451         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01452}01452 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01453}01453         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01454}01454         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01455}01455         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01456}01456         memset(dmac, 0xff, ETH\_ALEN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01457}01457         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01458}01458         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_aebcdf0472fd20a523e7c3406b5702134}{MLX5E\_MAIN\_GROUP5\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01459}01459         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01460}01460         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01461}01461         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01462}01462                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01463}01463         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01464}01464 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01465}01465         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01466}01466         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01467}01467         memset(dmac, 0xff, ETH\_ALEN);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01468}01468         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01469}01469         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a1dede9720036954553a180978b46c3b8}{MLX5E\_MAIN\_GROUP6\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01470}01470         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01471}01471         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01472}01472         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01473}01473                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01474}01474         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01475}01475 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01476}01476         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01477}01477         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01478}01478         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01479}01479         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01480}01480         dmac[0] = 0x01;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01481}01481         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01482}01482         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a913408daed04b0ee1c75b076f79e0440}{MLX5E\_MAIN\_GROUP7\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01483}01483         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01484}01484         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01485}01485         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01486}01486                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01487}01487         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01488}01488 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01489}01489         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01490}01490         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01491}01491         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01492}01492         dmac[0] = 0x01;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01493}01493         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01494}01494         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a47cbd2ba22b2daded89be5ddac759d17}{MLX5E\_MAIN\_GROUP8\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01495}01495         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01496}01496         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01497}01497         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01498}01498                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01499}01499         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01500}01500 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01501}01501         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01502}01502         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01503}01503         dmac[0] = 0x01;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01504}01504         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01505}01505         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_af4cfe89215324dd1ad28547d7937a4f2}{MLX5E\_MAIN\_GROUP9\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01506}01506         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01507}01507         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01508}01508         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01509}01509                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01510}01510         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01511}01511 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01512}01512         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01513}01513 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01514}01514 err\_destory\_groups:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01515}01515         err = PTR\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01516}01516         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01517}01517         \mbox{\hyperlink{mlx5__en__flow__table_8c_a5a53c12b158e0b8577cdefb5ae741557}{mlx5e\_destroy\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01518}01518 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01519}01519         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01520}01520 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01521}01521 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01522}01522 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01523}\mbox{\hyperlink{mlx5__en__flow__table_8c_a9a3e849ae25279a6bdc3b886cbdd4a57}{01523}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a9a3e849ae25279a6bdc3b886cbdd4a57}{mlx5e\_create\_main\_groups}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01524}01524 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01525}01525         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01526}01526         \textcolor{keywordtype}{int} inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_flow\_group\_in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01527}01527         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01528}01528 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01529}01529         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01530}01530         \textcolor{keywordflow}{if} (!in)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01531}01531                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01532}01532 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01533}01533         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_aeb4ee185c8045fe0168f82946a7365cd}{mlx5e\_create\_main\_groups\_sub}}(ft, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01534}01534 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01535}01535         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01536}01536         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01537}01537 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01538}01538 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01539}\mbox{\hyperlink{mlx5__en__flow__table_8c_ad42e1b8b0fbc9925fb878c9c34fbd7b2}{01539}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_VXLAN\_GROUP0\_SIZE    BIT(3)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01540}\mbox{\hyperlink{mlx5__en__flow__table_8c_af7f74acd535b7f5681ee9c3dc6b5272d}{01540}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_VXLAN\_GROUP1\_SIZE    BIT(3)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01541}\mbox{\hyperlink{mlx5__en__flow__table_8c_a0b8a137779f7f0c25caefaf82805609b}{01541}} \textcolor{preprocessor}{\#define MLX5E\_MAIN\_VXLAN\_GROUP2\_SIZE    BIT(0)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01542}01542 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01543}\mbox{\hyperlink{mlx5__en__flow__table_8c_a27ae7760881102983cd44b8d63727ec3}{01543}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a27ae7760881102983cd44b8d63727ec3}{mlx5e\_create\_main\_vxlan\_groups\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft, u32 *in,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01544}01544     \textcolor{keywordtype}{int} inlen)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01545}01545 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01546}01546         u8 *mc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_flow\_group\_in, in, match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01547}01547         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01548}01548         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01549}01549 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01550}01550         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01551}01551         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47ba70ee34b924d9505903bf2a1cefdb6f63}{MLX5\_MATCH\_INNER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01552}01552         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, inner\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01553}01553         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, inner\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01554}01554         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01555}01555         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_ad42e1b8b0fbc9925fb878c9c34fbd7b2}{MLX5E\_MAIN\_VXLAN\_GROUP0\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01556}01556         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01557}01557         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01558}01558         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01559}01559                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01560}01560         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01561}01561 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01562}01562         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01563}01563         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47ba70ee34b924d9505903bf2a1cefdb6f63}{MLX5\_MATCH\_INNER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01564}01564         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, inner\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01565}01565         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01566}01566         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_af7f74acd535b7f5681ee9c3dc6b5272d}{MLX5E\_MAIN\_VXLAN\_GROUP1\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01567}01567         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01568}01568         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01569}01569         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01570}01570                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01571}01571         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01572}01572 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01573}01573         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01574}01574         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01575}01575         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a0b8a137779f7f0c25caefaf82805609b}{MLX5E\_MAIN\_VXLAN\_GROUP2\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01576}01576         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01577}01577         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01578}01578         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01579}01579                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01580}01580         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01581}01581 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01582}01582         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01583}01583 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01584}01584 err\_destory\_groups:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01585}01585         err = PTR\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01586}01586         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01587}01587         \mbox{\hyperlink{mlx5__en__flow__table_8c_a5a53c12b158e0b8577cdefb5ae741557}{mlx5e\_destroy\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01588}01588 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01589}01589         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01590}01590 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01591}01591 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01592}01592 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01593}\mbox{\hyperlink{mlx5__en__flow__table_8c_a09efe49b6a8897064c06127405be9bed}{01593}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a09efe49b6a8897064c06127405be9bed}{mlx5e\_create\_main\_vxlan\_groups}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01594}01594 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01595}01595         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01596}01596         \textcolor{keywordtype}{int} inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_flow\_group\_in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01597}01597         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01598}01598 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01599}01599         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01600}01600         \textcolor{keywordflow}{if} (!in)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01601}01601                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01602}01602 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01603}01603         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a27ae7760881102983cd44b8d63727ec3}{mlx5e\_create\_main\_vxlan\_groups\_sub}}(ft, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01604}01604 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01605}01605         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01606}01606         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01607}01607 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01608}01608 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01609}01609 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01610}01610 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01611}\mbox{\hyperlink{mlx5__en__flow__table_8c_a101931775102349f09a2cca391308c1c}{01611}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a101931775102349f09a2cca391308c1c}{mlx5e\_create\_main\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keywordtype}{bool} inner\_vxlan)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01612}01612 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01613}01613         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft = inner\_vxlan ? \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ac836c424775b1bb6dad2d3ada2afb5a9}{main\_vxlan}} :}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01614}01614             \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a95b7736ae9c51b2a2767211f31221f6f}{main}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01615}01615         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01616}01616 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01617}01617         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01618}01618         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = \mbox{\hyperlink{fs_8h_a8432b1e5fac9fe0982d51395545c55e3}{mlx5\_create\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a3d9c192fa59827f7c1be6686094c21a7}{ns}}, 0,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01619}01619             inner\_vxlan ? \textcolor{stringliteral}{"{}vxlan\_main"{}} : \textcolor{stringliteral}{"{}main"{}}, \mbox{\hyperlink{mlx5__en__flow__table_8c_a6eaacfdec6b43c3505eadd19cae2bc32}{MLX5E\_MAIN\_TABLE\_SIZE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01620}01620 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01621}01621         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01622}01622                 err = PTR\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01623}01623                 ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01624}01624                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01625}01625         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01626}01626         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}} = kcalloc(\mbox{\hyperlink{mlx5__en__flow__table_8c_a0c0035ff8ba2bec149d68f6d4444f4d6}{MLX5E\_NUM\_MAIN\_GROUPS}}, \textcolor{keyword}{sizeof}(*ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}), GFP\_KERNEL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01627}01627         \textcolor{keywordflow}{if} (!ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01628}01628                 err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01629}01629                 \textcolor{keywordflow}{goto} err\_destroy\_main\_flow\_table;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01630}01630         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01631}01631 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01632}01632         err = inner\_vxlan ? \mbox{\hyperlink{mlx5__en__flow__table_8c_a09efe49b6a8897064c06127405be9bed}{mlx5e\_create\_main\_vxlan\_groups}}(ft) :}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01633}01633             \mbox{\hyperlink{mlx5__en__flow__table_8c_a9a3e849ae25279a6bdc3b886cbdd4a57}{mlx5e\_create\_main\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01634}01634         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01635}01635                 \textcolor{keywordflow}{goto} err\_free\_g;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01636}01636         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01637}01637 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01638}01638 err\_free\_g:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01639}01639         kfree(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01640}01640 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01641}01641 err\_destroy\_main\_flow\_table:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01642}01642         \mbox{\hyperlink{fs_8h_ae0fca9adb99d0de56dd209f5d80ac76f}{mlx5\_destroy\_flow\_table}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01643}01643         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01644}01644 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01645}01645         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01646}01646 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01647}01647 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01648}\mbox{\hyperlink{mlx5__en__flow__table_8c_af0f4a75498cc51ad3e14a568b9696bc7}{01648}} \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{mlx5__en__flow__table_8c_af0f4a75498cc51ad3e14a568b9696bc7}{mlx5e\_destroy\_main\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01649}01649 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01650}01650         \mbox{\hyperlink{mlx5__en__flow__table_8c_ae9fd7975b3b323bfdff01a2d9e771a21}{mlx5e\_destroy\_flow\_table}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a95b7736ae9c51b2a2767211f31221f6f}{main}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01651}01651 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01652}01652 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01653}\mbox{\hyperlink{mlx5__en__flow__table_8c_a408744d3e0b2b29cfba33477f1362578}{01653}} \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{mlx5__en__flow__table_8c_a408744d3e0b2b29cfba33477f1362578}{mlx5e\_destroy\_main\_vxlan\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01654}01654 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01655}01655         \mbox{\hyperlink{mlx5__en__flow__table_8c_ae9fd7975b3b323bfdff01a2d9e771a21}{mlx5e\_destroy\_flow\_table}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ac836c424775b1bb6dad2d3ada2afb5a9}{main\_vxlan}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01656}01656 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01657}01657 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01658}\mbox{\hyperlink{mlx5__en__flow__table_8c_aeae21cad4fde75eb31b7be2a71021f92}{01658}} \textcolor{preprocessor}{\#define MLX5E\_NUM\_VLAN\_GROUPS   3}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01659}\mbox{\hyperlink{mlx5__en__flow__table_8c_a9f2e898df65bce5956416276f42abd61}{01659}} \textcolor{preprocessor}{\#define MLX5E\_VLAN\_GROUP0\_SIZE  BIT(12)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01660}\mbox{\hyperlink{mlx5__en__flow__table_8c_a5532c5f2b11762044a4bee22c2bcc085}{01660}} \textcolor{preprocessor}{\#define MLX5E\_VLAN\_GROUP1\_SIZE  BIT(1)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01661}\mbox{\hyperlink{mlx5__en__flow__table_8c_ada36296cb5d74abca00c794a2aa83f24}{01661}} \textcolor{preprocessor}{\#define MLX5E\_VLAN\_GROUP2\_SIZE  BIT(0)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01662}\mbox{\hyperlink{mlx5__en__flow__table_8c_a14b73a62905b7578905ae548e9d4581b}{01662}} \textcolor{preprocessor}{\#define MLX5E\_VLAN\_TABLE\_SIZE   (MLX5E\_VLAN\_GROUP0\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01663}01663 \textcolor{preprocessor}{                                 MLX5E\_VLAN\_GROUP1\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01664}01664 \textcolor{preprocessor}{                                 MLX5E\_VLAN\_GROUP2\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01665}01665 \textcolor{preprocessor}{                                 0)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01666}01666 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01667}01667 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01668}\mbox{\hyperlink{mlx5__en__flow__table_8c_afda2d52900d868b0e1c0b260a791cf9e}{01668}} \mbox{\hyperlink{mlx5__en__flow__table_8c_afda2d52900d868b0e1c0b260a791cf9e}{mlx5e\_create\_vlan\_groups\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft, u32 *in,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01669}01669                                       \textcolor{keywordtype}{int} inlen)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01670}01670 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01671}01671         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01672}01672         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01673}01673         u8 *mc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_flow\_group\_in, in, match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01674}01674 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01675}01675         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01676}01676         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01677}01677         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.cvlan\_tag);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01678}01678         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.first\_vid);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01679}01679         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01680}01680         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a9f2e898df65bce5956416276f42abd61}{MLX5E\_VLAN\_GROUP0\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01681}01681         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01682}01682         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01683}01683         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01684}01684                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01685}01685         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01686}01686 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01687}01687         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01688}01688         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01689}01689         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.cvlan\_tag);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01690}01690         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01691}01691         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a5532c5f2b11762044a4bee22c2bcc085}{MLX5E\_VLAN\_GROUP1\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01692}01692         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01693}01693         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01694}01694         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01695}01695                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01696}01696         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01697}01697 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01698}01698         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01699}01699         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01700}01700         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.svlan\_tag);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01701}01701         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01702}01702         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_ada36296cb5d74abca00c794a2aa83f24}{MLX5E\_VLAN\_GROUP2\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01703}01703         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01704}01704         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01705}01705         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01706}01706                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01707}01707         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01708}01708 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01709}01709         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01710}01710 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01711}01711 err\_destory\_groups:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01712}01712         err = PTR\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01713}01713         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01714}01714         \mbox{\hyperlink{mlx5__en__flow__table_8c_a5a53c12b158e0b8577cdefb5ae741557}{mlx5e\_destroy\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01715}01715 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01716}01716         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01717}01717 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01718}01718 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01719}01719 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01720}\mbox{\hyperlink{mlx5__en__flow__table_8c_a2c808f5442ff752e3e0d7f2b4f3105f4}{01720}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a2c808f5442ff752e3e0d7f2b4f3105f4}{mlx5e\_create\_vlan\_groups}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01721}01721 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01722}01722         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01723}01723         \textcolor{keywordtype}{int} inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_flow\_group\_in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01724}01724         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01725}01725 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01726}01726         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01727}01727         \textcolor{keywordflow}{if} (!in)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01728}01728                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01729}01729 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01730}01730         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_afda2d52900d868b0e1c0b260a791cf9e}{mlx5e\_create\_vlan\_groups\_sub}}(ft, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01731}01731 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01732}01732         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01733}01733         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01734}01734 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01735}01735 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01736}01736 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01737}\mbox{\hyperlink{mlx5__en__flow__table_8c_a2b81c0b619e43c023c677353c9d91ae1}{01737}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a2b81c0b619e43c023c677353c9d91ae1}{mlx5e\_create\_vlan\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01738}01738 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01739}01739         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a5944e64624f12aa16c6f94af956081b4}{vlan}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01740}01740         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01741}01741 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01742}01742         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01743}01743         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = \mbox{\hyperlink{fs_8h_a8432b1e5fac9fe0982d51395545c55e3}{mlx5\_create\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a3d9c192fa59827f7c1be6686094c21a7}{ns}}, 0, \textcolor{stringliteral}{"{}vlan"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01744}01744                                        \mbox{\hyperlink{mlx5__en__flow__table_8c_a14b73a62905b7578905ae548e9d4581b}{MLX5E\_VLAN\_TABLE\_SIZE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01745}01745 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01746}01746         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01747}01747                 err = PTR\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01748}01748                 ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01749}01749                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01750}01750         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01751}01751         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}} = kcalloc(\mbox{\hyperlink{mlx5__en__flow__table_8c_aeae21cad4fde75eb31b7be2a71021f92}{MLX5E\_NUM\_VLAN\_GROUPS}}, \textcolor{keyword}{sizeof}(*ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}), GFP\_KERNEL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01752}01752         \textcolor{keywordflow}{if} (!ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01753}01753                 err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01754}01754                 \textcolor{keywordflow}{goto} err\_destroy\_vlan\_flow\_table;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01755}01755         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01756}01756 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01757}01757         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a2c808f5442ff752e3e0d7f2b4f3105f4}{mlx5e\_create\_vlan\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01758}01758         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01759}01759                 \textcolor{keywordflow}{goto} err\_free\_g;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01760}01760 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01761}01761         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01762}01762 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01763}01763 err\_free\_g:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01764}01764         kfree(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01765}01765 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01766}01766 err\_destroy\_vlan\_flow\_table:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01767}01767         \mbox{\hyperlink{fs_8h_ae0fca9adb99d0de56dd209f5d80ac76f}{mlx5\_destroy\_flow\_table}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01768}01768         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01769}01769 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01770}01770         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01771}01771 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01772}01772 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01773}01773 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01774}\mbox{\hyperlink{mlx5__en__flow__table_8c_aceb8e64bc64246b21fc443e133ab0707}{01774}} \mbox{\hyperlink{mlx5__en__flow__table_8c_aceb8e64bc64246b21fc443e133ab0707}{mlx5e\_destroy\_vlan\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01775}01775 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01776}01776         \mbox{\hyperlink{mlx5__en__flow__table_8c_ae9fd7975b3b323bfdff01a2d9e771a21}{mlx5e\_destroy\_flow\_table}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a5944e64624f12aa16c6f94af956081b4}{vlan}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01777}01777 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01778}01778 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01779}01779 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01780}\mbox{\hyperlink{mlx5__en__flow__table_8c_ad9b08ce0f0a33078560d7dbe0d9cfde2}{01780}} \mbox{\hyperlink{mlx5__en__flow__table_8c_ad9b08ce0f0a33078560d7dbe0d9cfde2}{mlx5e\_add\_vxlan\_rule\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u32 *mc, u32 *mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01781}01781     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *el)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01782}01782 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01783}01783         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__table}{mlx5\_flow\_table}} *ft = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_af805a37489bc1987cfcd13f630c91200}{vxlan}}.\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01784}01784         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__destination}{mlx5\_flow\_destination}} dest = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01785}01785         u8 mc\_enable;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01786}01786         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__rule}{mlx5\_flow\_rule}} **rule\_p;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01787}01787         \textcolor{keywordtype}{int} err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01788}01788 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01789}01789         dest.\mbox{\hyperlink{structmlx5__flow__destination_a4421d4147c8e909299b6e406a09e3805}{type}} = \mbox{\hyperlink{mlx5__ifc_8h_a7628cefabb7ca18c6f4951d9359204d3ab3356afcea76aae1d0e9868e8938a2d6}{MLX5\_FLOW\_DESTINATION\_TYPE\_FLOW\_TABLE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01790}01790         dest.\mbox{\hyperlink{structmlx5__flow__destination_a4fb7fd1e9aa286baa77564008f883dd4}{ft}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ac836c424775b1bb6dad2d3ada2afb5a9}{main\_vxlan}}.\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01791}01791 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01792}01792         mc\_enable = \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01793}01793         rule\_p = \&el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a0f5e83daa4752c432560d3cc5453c99a}{vxlan\_ft\_rule}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01794}01794         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01795}01795         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ethertype, el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01796}01796         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01797}01797         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.ip\_protocol, IPPROTO\_UDP);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01798}01798         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.udp\_dport);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01799}01799         \mbox{\hyperlink{device_8h_a78623a3e69c7911bd715d06c32daa626}{MLX5\_SET}}(fte\_match\_param, mv, outer\_headers.udp\_dport, el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01800}01800 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01801}01801         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01802}01802             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01803}01803 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01804}01804         \textcolor{keywordflow}{if} (IS\_ERR(*rule\_p)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01805}01805                 err = PTR\_ERR(*rule\_p);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01806}01806                 *rule\_p = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01807}01807                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \textcolor{stringliteral}{"{}add rule failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01808}01808         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01809}01809 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01810}01810         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01811}01811 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01812}01812 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01813}01813 \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01814}\mbox{\hyperlink{mlx5__en__flow__table_8c_a24abb9cebf357c4b183f2b204fa58dc8}{01814}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a24abb9cebf357c4b183f2b204fa58dc8}{mlx5e\_vxlan\_find\_db\_el}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u\_int \mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}}, u\_int \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01815}01815 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01816}01816         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *el;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01817}01817 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01818}01818         TAILQ\_FOREACH(el, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab89201338b80f954092ac1ba9f168c51}{vxlan}}.head, link) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01819}01819                 \textcolor{keywordflow}{if} (el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}} == \mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}} \&\& el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}} == \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01820}01820                         \textcolor{keywordflow}{return} (el);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01821}01821         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01822}01822         \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01823}01823 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01824}01824 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01825}01825 \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01826}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4f158a2bab6625937b56052bc5f6d8dc}{01826}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f158a2bab6625937b56052bc5f6d8dc}{mlx5e\_vxlan\_alloc\_db\_el}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u\_int \mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}}, u\_int \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01827}01827 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01828}01828         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *el;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01829}01829 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01830}01830         el = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\textcolor{keyword}{sizeof}(*el));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01831}01831         el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a2cf94272571257d232515db6884454cd}{refcount}} = 1;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01832}01832         el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}} = \mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01833}01833         el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}} = \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01834}01834         el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a0f5e83daa4752c432560d3cc5453c99a}{vxlan\_ft\_rule}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01835}01835         \textcolor{keywordflow}{return} (el);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01836}01836 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01837}01837 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01838}01838 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01839}\mbox{\hyperlink{mlx5__en__flow__table_8c_a1bfe3d23f717cbe07caf0f181ae9fe84}{01839}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a1bfe3d23f717cbe07caf0f181ae9fe84}{mlx5e\_vxlan\_family\_to\_proto}}(sa\_family\_t family, u\_int *\mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01840}01840 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01841}01841         \textcolor{keywordflow}{switch} (family) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01842}01842         \textcolor{keywordflow}{case} AF\_INET:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01843}01843                 *\mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}} = ETHERTYPE\_IP;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01844}01844                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01845}01845         \textcolor{keywordflow}{case} AF\_INET6:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01846}01846                 *\mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}} = ETHERTYPE\_IPV6;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01847}01847                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01848}01848         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01849}01849                 \textcolor{keywordflow}{return} (-\/EINVAL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01850}01850         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01851}01851 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01852}01852 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01853}01853 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01854}\mbox{\hyperlink{mlx5__en__flow__table_8c_a54ae642ab1abb0ee1c34bcf3bbe2bb4e}{01854}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a54ae642ab1abb0ee1c34bcf3bbe2bb4e}{mlx5e\_add\_vxlan\_rule\_from\_db}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01855}01855     \textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *el)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01856}01856 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01857}01857         u32 *match\_criteria;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01858}01858         u32 *match\_value;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01859}01859         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01860}01860 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01861}01861         match\_value = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01862}01862         match\_criteria = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01863}01863         \textcolor{keywordflow}{if} (match\_value == NULL || match\_criteria == NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01864}01864                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \textcolor{stringliteral}{"{}alloc failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01865}01865                 err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01866}01866                 \textcolor{keywordflow}{goto} add\_vxlan\_rule\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01867}01867         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01868}01868 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01869}01869         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_ad9b08ce0f0a33078560d7dbe0d9cfde2}{mlx5e\_add\_vxlan\_rule\_sub}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, match\_criteria, match\_value, el);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01870}01870 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01871}01871 add\_vxlan\_rule\_out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01872}01872         kvfree(match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01873}01873         kvfree(match\_value);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01874}01874 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01875}01875         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01876}01876 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01877}01877 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01878}01878 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01879}\mbox{\hyperlink{mlx5__en__flow__table_8c_a434a3b527bbe3f5647c2c8c556c496ce}{01879}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a434a3b527bbe3f5647c2c8c556c496ce}{mlx5e\_add\_vxlan\_rule}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, sa\_family\_t family, u\_int \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01880}01880 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01881}01881         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *el;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01882}01882         u\_int \mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01883}01883         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01884}01884 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01885}01885         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a1bfe3d23f717cbe07caf0f181ae9fe84}{mlx5e\_vxlan\_family\_to\_proto}}(family, \&\mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01886}01886         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01887}01887                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01888}01888 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01889}01889         el = \mbox{\hyperlink{mlx5__en__flow__table_8c_a24abb9cebf357c4b183f2b204fa58dc8}{mlx5e\_vxlan\_find\_db\_el}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}}, \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01890}01890         \textcolor{keywordflow}{if} (el != NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01891}01891                 el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a2cf94272571257d232515db6884454cd}{refcount}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01892}01892                 \textcolor{keywordflow}{if} (el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ac42a0047209ec7335df479dc61f65452}{installed}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01893}01893                         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01894}01894         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01895}01895         el = \mbox{\hyperlink{mlx5__en__flow__table_8c_a4f158a2bab6625937b56052bc5f6d8dc}{mlx5e\_vxlan\_alloc\_db\_el}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}}, \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01896}01896 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01897}01897         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}-\/>if\_capenable \& IFCAP\_VXLAN\_HWCSUM) != 0) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01898}01898                 err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a54ae642ab1abb0ee1c34bcf3bbe2bb4e}{mlx5e\_add\_vxlan\_rule\_from\_db}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, el);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01899}01899                 \textcolor{keywordflow}{if} (err == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01900}01900                         el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ac42a0047209ec7335df479dc61f65452}{installed}} = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01901}01901         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01902}01902         \textcolor{keywordflow}{if} (err == 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01903}01903                 TAILQ\_INSERT\_TAIL(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab89201338b80f954092ac1ba9f168c51}{vxlan}}.head, el, link);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01904}01904         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01905}01905                 kvfree(el);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01906}01906 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01907}01907         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01908}01908 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01909}01909 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01910}01910 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01911}\mbox{\hyperlink{mlx5__en__flow__table_8c_a1b2960244748101260a44d51f9438183}{01911}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a1b2960244748101260a44d51f9438183}{mlx5e\_add\_vxlan\_catchall\_rule\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, u32 *mc, u32 *mv)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01912}01912 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01913}01913         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__table}{mlx5\_flow\_table}} *ft = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_af805a37489bc1987cfcd13f630c91200}{vxlan}}.\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01914}01914         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__destination}{mlx5\_flow\_destination}} dest = \{\};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01915}01915         u8 mc\_enable = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01916}01916         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5__flow__rule}{mlx5\_flow\_rule}} **rule\_p;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01917}01917         \textcolor{keywordtype}{int} err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01918}01918 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01919}01919         dest.\mbox{\hyperlink{structmlx5__flow__destination_a4421d4147c8e909299b6e406a09e3805}{type}} = \mbox{\hyperlink{mlx5__ifc_8h_a7628cefabb7ca18c6f4951d9359204d3ab3356afcea76aae1d0e9868e8938a2d6}{MLX5\_FLOW\_DESTINATION\_TYPE\_FLOW\_TABLE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01920}01920         dest.\mbox{\hyperlink{structmlx5__flow__destination_a4fb7fd1e9aa286baa77564008f883dd4}{ft}} = \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a95b7736ae9c51b2a2767211f31221f6f}{main}}.\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01921}01921 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01922}01922         rule\_p = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ab3dca5dc799d8da8dd3dcaecdd9b9254}{vxlan\_catchall\_ft\_rule}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01923}01923         *rule\_p = \mbox{\hyperlink{fs_8h_a307738b93480306a8165f97ff64ce458}{mlx5\_add\_flow\_rule}}(ft, mc\_enable, mc, mv,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01924}01924             \mbox{\hyperlink{mlx5__ifc_8h_aa7477aaaec7caec07471eb609c556f5fa9be53190c8f3cd032a93d7feac08af87}{MLX5\_FLOW\_CONTEXT\_ACTION\_FWD\_DEST}}, \mbox{\hyperlink{fs_8h_ac34c4c978f4130a92a5068f9e21ea9fca427a2978864afe93bbd78307136638bd}{MLX5\_FS\_ETH\_FLOW\_TAG}}, \&dest);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01925}01925 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01926}01926         \textcolor{keywordflow}{if} (IS\_ERR(*rule\_p)) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01927}01927                 err = PTR\_ERR(*rule\_p);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01928}01928                 *rule\_p = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01929}01929                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \textcolor{stringliteral}{"{}add rule failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01930}01930         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01931}01931 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01932}01932         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01933}01933 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01934}01934 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01935}01935 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01936}01936 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01937}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4aa94f464561b4db81751a6a3d9f3f70}{01937}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a4aa94f464561b4db81751a6a3d9f3f70}{mlx5e\_add\_vxlan\_catchall\_rule}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01938}01938 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01939}01939         u32 *match\_criteria;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01940}01940         u32 *match\_value;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01941}01941         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01942}01942 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01943}01943         match\_value = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01944}01944         match\_criteria = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(\mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(fte\_match\_param));}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01945}01945         \textcolor{keywordflow}{if} (match\_value == NULL || match\_criteria == NULL) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01946}01946                 \mbox{\hyperlink{en_8h_afb13f4447213bd251a32247e0b08ddfb}{mlx5\_en\_err}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_afe944afbe198db0e1a84a20df94af781}{ifp}}, \textcolor{stringliteral}{"{}alloc failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01947}01947                 err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01948}01948                 \textcolor{keywordflow}{goto} add\_vxlan\_rule\_out;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01949}01949         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01950}01950 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01951}01951         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a1b2960244748101260a44d51f9438183}{mlx5e\_add\_vxlan\_catchall\_rule\_sub}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, match\_criteria,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01952}01952             match\_value);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01953}01953 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01954}01954 add\_vxlan\_rule\_out:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01955}01955         kvfree(match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01956}01956         kvfree(match\_value);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01957}01957 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01958}01958         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01959}01959 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01960}01960 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01961}01961 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01962}\mbox{\hyperlink{en_8h_adb5952fdf9c00faac9e4611af2063c2a}{01962}} \mbox{\hyperlink{mlx5__en__flow__table_8c_adb5952fdf9c00faac9e4611af2063c2a}{mlx5e\_add\_all\_vxlan\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01963}01963 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01964}01964         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *el;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01965}01965         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01966}01966 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01967}01967         err = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01968}01968         TAILQ\_FOREACH(el, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab89201338b80f954092ac1ba9f168c51}{vxlan}}.head, link) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01969}01969                 \textcolor{keywordflow}{if} (el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ac42a0047209ec7335df479dc61f65452}{installed}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01970}01970                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01971}01971                 err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a54ae642ab1abb0ee1c34bcf3bbe2bb4e}{mlx5e\_add\_vxlan\_rule\_from\_db}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, el);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01972}01972                 \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01973}01973                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01974}01974                 el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ac42a0047209ec7335df479dc61f65452}{installed}} = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01975}01975         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01976}01976 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01977}01977         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01978}01978 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01979}01979 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01980}01980 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01981}\mbox{\hyperlink{mlx5__en__flow__table_8c_a601b5b728506128f262bb9e822a7d2ac}{01981}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a601b5b728506128f262bb9e822a7d2ac}{mlx5e\_del\_vxlan\_rule}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, sa\_family\_t family, u\_int \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01982}01982 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01983}01983         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *el;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01984}01984         u\_int \mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01985}01985         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01986}01986 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01987}01987         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a1bfe3d23f717cbe07caf0f181ae9fe84}{mlx5e\_vxlan\_family\_to\_proto}}(family, \&\mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01988}01988         \textcolor{keywordflow}{if} (err != 0)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01989}01989                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01990}01990 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01991}01991         el = \mbox{\hyperlink{mlx5__en__flow__table_8c_a24abb9cebf357c4b183f2b204fa58dc8}{mlx5e\_vxlan\_find\_db\_el}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \mbox{\hyperlink{structmlx5e__vxlan__db__el_ae1669f50b24eb8ae7864f3da295393ed}{proto}}, \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01992}01992         \textcolor{keywordflow}{if} (el == NULL)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01993}01993                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01994}01994         \textcolor{keywordflow}{if} (el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a2cf94272571257d232515db6884454cd}{refcount}} > 1) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01995}01995                 el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a2cf94272571257d232515db6884454cd}{refcount}}-\/-\/;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01996}01996                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01997}01997         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01998}01998 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l01999}01999         \textcolor{keywordflow}{if} (el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ac42a0047209ec7335df479dc61f65452}{installed}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02000}02000                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a0f5e83daa4752c432560d3cc5453c99a}{vxlan\_ft\_rule}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02001}02001         TAILQ\_REMOVE(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab89201338b80f954092ac1ba9f168c51}{vxlan}}.head, el, link);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02002}02002         kvfree(el);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02003}02003         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02004}02004 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02005}02005 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02006}02006 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02007}\mbox{\hyperlink{en_8h_afd3085353d739c6a76924baaa2e35777}{02007}} \mbox{\hyperlink{mlx5__en__flow__table_8c_afd3085353d739c6a76924baaa2e35777}{mlx5e\_del\_all\_vxlan\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02008}02008 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02009}02009         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__vxlan__db__el}{mlx5e\_vxlan\_db\_el}} *el;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02010}02010 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02011}02011         TAILQ\_FOREACH(el, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab89201338b80f954092ac1ba9f168c51}{vxlan}}.head, link) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02012}02012                 \textcolor{keywordflow}{if} (!el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ac42a0047209ec7335df479dc61f65452}{installed}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02013}02013                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02014}02014                 \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_a0f5e83daa4752c432560d3cc5453c99a}{vxlan\_ft\_rule}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02015}02015                 el-\/>\mbox{\hyperlink{structmlx5e__vxlan__db__el_ac42a0047209ec7335df479dc61f65452}{installed}} = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02016}02016         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02017}02017 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02018}02018 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02019}02019 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02020}\mbox{\hyperlink{mlx5__en__flow__table_8c_a77683d8d4e8fe4e1b518b9ba3f562075}{02020}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a77683d8d4e8fe4e1b518b9ba3f562075}{mlx5e\_del\_vxlan\_catchall\_rule}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02021}02021 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02022}02022         \mbox{\hyperlink{fs_8h_a4edebcab04b40addc3bf6e8d9ab83075}{mlx5\_del\_flow\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_ab3dca5dc799d8da8dd3dcaecdd9b9254}{vxlan\_catchall\_ft\_rule}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02023}02023 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02024}02024 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02025}02025 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02026}\mbox{\hyperlink{mlx5__en__flow__table_8c_a249ea2aa41f729b7bf9345afd931bf84}{02026}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a249ea2aa41f729b7bf9345afd931bf84}{mlx5e\_vxlan\_start}}(\textcolor{keywordtype}{void} *arg, \textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}} \_\_unused, sa\_family\_t family,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02027}02027     u\_int \mbox{\hyperlink{structmlx5e__vxlan__db__el_a687293963f23a9d54287980722ff65dc}{port}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02028}02028 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02029}02029         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02030}02030         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02031}02031 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02032}02032         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02033}02033         err = \mbox{\hyperlink{driver_8h_abe0618b565e0309fb16f8cda19739702}{mlx5\_vxlan\_udp\_port\_add}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, port);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02034}02034         \textcolor{keywordflow}{if} (err == 0 \&\& test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a46224f776e49b4d7b8b78f025553a533}{MLX5E\_STATE\_FLOW\_RULES\_READY}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02035}02035                 \mbox{\hyperlink{mlx5__en__flow__table_8c_a434a3b527bbe3f5647c2c8c556c496ce}{mlx5e\_add\_vxlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, family, port);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02036}02036         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02037}02037 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02038}02038 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02039}02039 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02040}\mbox{\hyperlink{mlx5__en__flow__table_8c_a8f618ebf50c506c6b404c8823f58dce7}{02040}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a8f618ebf50c506c6b404c8823f58dce7}{mlx5e\_vxlan\_stop}}(\textcolor{keywordtype}{void} *arg, \textcolor{keyword}{struct} ifnet *\mbox{\hyperlink{en_8h_a55ba31cf9df263813f4c49c32e4de4f2}{ifp}} \_\_unused, sa\_family\_t family,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02041}02041     u\_int port)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02042}02042 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02043}02043         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}} = arg;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02044}02044 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02045}02045         \mbox{\hyperlink{en_8h_a620151530f515c0208ad0bfe37cfc130}{PRIV\_LOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02046}02046         \textcolor{keywordflow}{if} (test\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a46224f776e49b4d7b8b78f025553a533}{MLX5E\_STATE\_FLOW\_RULES\_READY}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}}))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02047}02047                 \mbox{\hyperlink{mlx5__en__flow__table_8c_a601b5b728506128f262bb9e822a7d2ac}{mlx5e\_del\_vxlan\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, family, port);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02048}02048         (void)\mbox{\hyperlink{driver_8h_a937bee6341de9d04883f260ad7e8709d}{mlx5\_vxlan\_udp\_port\_delete}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, port);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02049}02049         \mbox{\hyperlink{en_8h_addaf2f16168bbed718b7be9e5cd27b4c}{PRIV\_UNLOCK}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02050}02050 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02051}02051 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02052}\mbox{\hyperlink{mlx5__en__flow__table_8c_a2843d393ce212fa012d432c46315fb34}{02052}} \textcolor{preprocessor}{\#define MLX5E\_VXLAN\_GROUP0\_SIZE BIT(3)  }\textcolor{comment}{/* XXXKIB */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02053}\mbox{\hyperlink{mlx5__en__flow__table_8c_a4b93ee3d39346434b5d79e75154a88f3}{02053}} \textcolor{preprocessor}{\#define MLX5E\_VXLAN\_GROUP1\_SIZE BIT(0)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02054}\mbox{\hyperlink{mlx5__en__flow__table_8c_a2a8decaefbcc7bc8f2c32d99d43ead41}{02054}} \textcolor{preprocessor}{\#define MLX5E\_NUM\_VXLAN\_GROUPS  BIT(1)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02055}\mbox{\hyperlink{mlx5__en__flow__table_8c_a36c80e97063384341241240038d7a8f7}{02055}} \textcolor{preprocessor}{\#define MLX5E\_VXLAN\_TABLE\_SIZE  \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02056}02056 \textcolor{preprocessor}{    (MLX5E\_VXLAN\_GROUP0\_SIZE + MLX5E\_VXLAN\_GROUP1\_SIZE)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02057}02057 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02058}02058 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02059}\mbox{\hyperlink{mlx5__en__flow__table_8c_a0ade4f3923d3f434d7821681b59f9c18}{02059}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a0ade4f3923d3f434d7821681b59f9c18}{mlx5e\_create\_vxlan\_groups\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft, u32 *in,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02060}02060                                       \textcolor{keywordtype}{int} inlen)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02061}02061 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02062}02062         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02063}02063         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02064}02064         u8 *mc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_flow\_group\_in, in, match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02065}02065 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02066}02066         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02067}02067         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47bae7403af68298370ee07f0907fba731f4}{MLX5\_MATCH\_OUTER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02068}02068         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02069}02069         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02070}02070         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, outer\_headers.udp\_dport);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02071}02071         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02072}02072         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a2843d393ce212fa012d432c46315fb34}{MLX5E\_VXLAN\_GROUP0\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02073}02073         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02074}02074         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02075}02075         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02076}02076                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02077}02077         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02078}02078 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02079}02079         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02080}02080         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02081}02081         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a4b93ee3d39346434b5d79e75154a88f3}{MLX5E\_VXLAN\_GROUP1\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02082}02082         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02083}02083         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02084}02084         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02085}02085                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02086}02086         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02087}02087 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02088}02088         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02089}02089 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02090}02090 err\_destory\_groups:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02091}02091         err = PTR\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02092}02092         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02093}02093         \mbox{\hyperlink{mlx5__en__flow__table_8c_a5a53c12b158e0b8577cdefb5ae741557}{mlx5e\_destroy\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02094}02094 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02095}02095         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02096}02096 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02097}02097 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02098}02098 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02099}\mbox{\hyperlink{mlx5__en__flow__table_8c_acf5149e11ca5c1e8b4d3356d8f6a5038}{02099}} \mbox{\hyperlink{mlx5__en__flow__table_8c_acf5149e11ca5c1e8b4d3356d8f6a5038}{mlx5e\_create\_vxlan\_groups}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02100}02100 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02101}02101         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02102}02102         \textcolor{keywordtype}{int} inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_flow\_group\_in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02103}02103         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02104}02104 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02105}02105         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02106}02106         \textcolor{keywordflow}{if} (!in)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02107}02107                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02108}02108 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02109}02109         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a0ade4f3923d3f434d7821681b59f9c18}{mlx5e\_create\_vxlan\_groups\_sub}}(ft, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02110}02110 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02111}02111         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02112}02112         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02113}02113 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02114}02114 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02115}02115 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02116}\mbox{\hyperlink{mlx5__en__flow__table_8c_a1699b8c122b14ff9e87b35bfab00a6b9}{02116}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a1699b8c122b14ff9e87b35bfab00a6b9}{mlx5e\_create\_vxlan\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02117}02117 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02118}02118         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_af805a37489bc1987cfcd13f630c91200}{vxlan}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02119}02119         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02120}02120 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02121}02121         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02122}02122         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = \mbox{\hyperlink{fs_8h_a8432b1e5fac9fe0982d51395545c55e3}{mlx5\_create\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a3d9c192fa59827f7c1be6686094c21a7}{ns}}, 0, \textcolor{stringliteral}{"{}vxlan"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02123}02123                                        \mbox{\hyperlink{mlx5__en__flow__table_8c_a36c80e97063384341241240038d7a8f7}{MLX5E\_VXLAN\_TABLE\_SIZE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02124}02124 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02125}02125         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02126}02126                 err = PTR\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02127}02127                 ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02128}02128                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02129}02129         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02130}02130         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}} = kcalloc(\mbox{\hyperlink{mlx5__en__flow__table_8c_a2a8decaefbcc7bc8f2c32d99d43ead41}{MLX5E\_NUM\_VXLAN\_GROUPS}}, \textcolor{keyword}{sizeof}(*ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}), GFP\_KERNEL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02131}02131         \textcolor{keywordflow}{if} (!ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02132}02132                 err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02133}02133                 \textcolor{keywordflow}{goto} err\_destroy\_vxlan\_flow\_table;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02134}02134         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02135}02135 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02136}02136         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_acf5149e11ca5c1e8b4d3356d8f6a5038}{mlx5e\_create\_vxlan\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02137}02137         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02138}02138                 \textcolor{keywordflow}{goto} err\_free\_g;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02139}02139 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02140}02140         TAILQ\_INIT(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ab89201338b80f954092ac1ba9f168c51}{vxlan}}.head);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02141}02141         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02142}02142 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02143}02143 err\_free\_g:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02144}02144         kfree(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02145}02145 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02146}02146 err\_destroy\_vxlan\_flow\_table:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02147}02147         \mbox{\hyperlink{fs_8h_ae0fca9adb99d0de56dd209f5d80ac76f}{mlx5\_destroy\_flow\_table}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02148}02148         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02149}02149 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02150}02150         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02151}02151 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02152}02152 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02153}\mbox{\hyperlink{mlx5__en__flow__table_8c_a6698135e762845947b26ef047750863e}{02153}} \textcolor{preprocessor}{\#define MLX5E\_NUM\_INNER\_RSS\_GROUPS      3}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02154}\mbox{\hyperlink{mlx5__en__flow__table_8c_a1df02d22923efa8b441ef721838d8297}{02154}} \textcolor{preprocessor}{\#define MLX5E\_INNER\_RSS\_GROUP0\_SIZE     BIT(3)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02155}\mbox{\hyperlink{mlx5__en__flow__table_8c_a70c17e0ab777c83d14b6f835d4b0d2e5}{02155}} \textcolor{preprocessor}{\#define MLX5E\_INNER\_RSS\_GROUP1\_SIZE     BIT(1)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02156}\mbox{\hyperlink{mlx5__en__flow__table_8c_af991897409bc802e6cb7b188801b6494}{02156}} \textcolor{preprocessor}{\#define MLX5E\_INNER\_RSS\_GROUP2\_SIZE     BIT(0)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02157}\mbox{\hyperlink{mlx5__en__flow__table_8c_a210a703cc14f695e98e27575f2e34119}{02157}} \textcolor{preprocessor}{\#define MLX5E\_INNER\_RSS\_TABLE\_SIZE      (MLX5E\_INNER\_RSS\_GROUP0\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02158}02158 \textcolor{preprocessor}{                                         MLX5E\_INNER\_RSS\_GROUP1\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02159}02159 \textcolor{preprocessor}{                                         MLX5E\_INNER\_RSS\_GROUP2\_SIZE +\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02160}02160 \textcolor{preprocessor}{                                         0)}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02161}02161 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02162}02162 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02163}\mbox{\hyperlink{mlx5__en__flow__table_8c_ae3da7c798be66190a3bfed7145f63eff}{02163}} \mbox{\hyperlink{mlx5__en__flow__table_8c_ae3da7c798be66190a3bfed7145f63eff}{mlx5e\_create\_inner\_rss\_groups\_sub}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft, u32 *in,}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02164}02164                                            \textcolor{keywordtype}{int} inlen)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02165}02165 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02166}02166         u8 *mc = \mbox{\hyperlink{device_8h_ad5cad9c2e464873013bfb7b9761d25a1}{MLX5\_ADDR\_OF}}(create\_flow\_group\_in, in, match\_criteria);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02167}02167         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02168}02168         \textcolor{keywordtype}{int} \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02169}02169 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02170}02170         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02171}02171         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47ba70ee34b924d9505903bf2a1cefdb6f63}{MLX5\_MATCH\_INNER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02172}02172         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, inner\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02173}02173         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, inner\_headers.ip\_protocol);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02174}02174         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02175}02175         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a1df02d22923efa8b441ef721838d8297}{MLX5E\_INNER\_RSS\_GROUP0\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02176}02176         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02177}02177         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02178}02178         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02179}02179                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02180}02180         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02181}02181 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02182}02182         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02183}02183         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, match\_criteria\_enable, \mbox{\hyperlink{device_8h_a900dca9b26de42491763226e12dcd47ba70ee34b924d9505903bf2a1cefdb6f63}{MLX5\_MATCH\_INNER\_HEADERS}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02184}02184         \mbox{\hyperlink{device_8h_a5771abbaf67aa376010ef29922b9a0d2}{MLX5\_SET\_TO\_ONES}}(fte\_match\_param, mc, inner\_headers.ethertype);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02185}02185         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02186}02186         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_a70c17e0ab777c83d14b6f835d4b0d2e5}{MLX5E\_INNER\_RSS\_GROUP1\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02187}02187         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02188}02188         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02189}02189         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02190}02190                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02191}02191         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02192}02192 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02193}02193         memset(in, 0, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02194}02194         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, start\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02195}02195         \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} += \mbox{\hyperlink{mlx5__en__flow__table_8c_af991897409bc802e6cb7b188801b6494}{MLX5E\_INNER\_RSS\_GROUP2\_SIZE}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02196}02196         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1cf331adac09a277012b6e5148aed52}{MLX5\_SET\_CFG}}(in, end\_flow\_index, \mbox{\hyperlink{en_8h_a61990b7f5388ef0010c75a5d80f58da9}{ix}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02197}02197         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = \mbox{\hyperlink{fs_8h_ae1bd708c33f57ee6dba4fb0bb546a1dd}{mlx5\_create\_flow\_group}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}}, in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02198}02198         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]))}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02199}02199                 \textcolor{keywordflow}{goto} err\_destory\_groups;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02200}02200         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}++;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02201}02201 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02202}02202         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02203}02203 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02204}02204 err\_destory\_groups:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02205}02205         err = PTR\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}]);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02206}02206         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}[ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}}] = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02207}02207         \mbox{\hyperlink{mlx5__en__flow__table_8c_a5a53c12b158e0b8577cdefb5ae741557}{mlx5e\_destroy\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02208}02208 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02209}02209         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02210}02210 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02211}02211 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02212}02212 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02213}\mbox{\hyperlink{mlx5__en__flow__table_8c_a93b821f1c0b76051573cac9781a5eda4}{02213}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a93b821f1c0b76051573cac9781a5eda4}{mlx5e\_create\_inner\_rss\_groups}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02214}02214 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02215}02215         u32 *in;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02216}02216         \textcolor{keywordtype}{int} inlen = \mbox{\hyperlink{device_8h_a459f4e51a5d10dfb6fed7cafff215cb4}{MLX5\_ST\_SZ\_BYTES}}(create\_flow\_group\_in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02217}02217         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02218}02218 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02219}02219         in = \mbox{\hyperlink{driver_8h_af928b1985830513c1c81b095b31ad8a7}{mlx5\_vzalloc}}(inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02220}02220         \textcolor{keywordflow}{if} (!in)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02221}02221                 \textcolor{keywordflow}{return} (-\/ENOMEM);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02222}02222 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02223}02223         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_ae3da7c798be66190a3bfed7145f63eff}{mlx5e\_create\_inner\_rss\_groups\_sub}}(ft, in, inlen);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02224}02224 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02225}02225         kvfree(in);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02226}02226         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02227}02227 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02228}02228 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02229}02229 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02230}\mbox{\hyperlink{mlx5__en__flow__table_8c_aca3bc5672db5e80895f4844c1e360d31}{02230}} \mbox{\hyperlink{mlx5__en__flow__table_8c_aca3bc5672db5e80895f4844c1e360d31}{mlx5e\_create\_inner\_rss\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02231}02231 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02232}02232         \textcolor{keyword}{struct }\mbox{\hyperlink{structmlx5e__flow__table}{mlx5e\_flow\_table}} *ft = \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a91852a1eed845c0166317a4e2f42b662}{inner\_rss}};}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02233}02233         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02234}02234 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02235}02235         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_a1eef0e75c80cec3ca97bb82375f3f4ee}{num\_groups}} = 0;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02236}02236         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = \mbox{\hyperlink{fs_8h_a8432b1e5fac9fe0982d51395545c55e3}{mlx5\_create\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a3d9c192fa59827f7c1be6686094c21a7}{ns}}, 0, \textcolor{stringliteral}{"{}inner\_rss"{}},}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02237}02237                                        \mbox{\hyperlink{mlx5__en__flow__table_8c_a210a703cc14f695e98e27575f2e34119}{MLX5E\_INNER\_RSS\_TABLE\_SIZE}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02238}02238 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02239}02239         \textcolor{keywordflow}{if} (IS\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}})) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02240}02240                 err = PTR\_ERR(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02241}02241                 ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02242}02242                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02243}02243         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02244}02244         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}} = kcalloc(\mbox{\hyperlink{mlx5__en__flow__table_8c_a6698135e762845947b26ef047750863e}{MLX5E\_NUM\_INNER\_RSS\_GROUPS}}, \textcolor{keyword}{sizeof}(*ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}),}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02245}02245                         GFP\_KERNEL);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02246}02246         \textcolor{keywordflow}{if} (!ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}}) \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02247}02247                 err = -\/ENOMEM;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02248}02248                 \textcolor{keywordflow}{goto} err\_destroy\_inner\_rss\_flow\_table;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02249}02249         \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02250}02250 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02251}02251         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a93b821f1c0b76051573cac9781a5eda4}{mlx5e\_create\_inner\_rss\_groups}}(ft);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02252}02252         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02253}02253                 \textcolor{keywordflow}{goto} err\_free\_g;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02254}02254 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02255}02255         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02256}02256 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02257}02257 err\_free\_g:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02258}02258         kfree(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_ad72a0ee7168de979ac78fa46d1017382}{g}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02259}02259 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02260}02260 err\_destroy\_inner\_rss\_flow\_table:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02261}02261         \mbox{\hyperlink{fs_8h_ae0fca9adb99d0de56dd209f5d80ac76f}{mlx5\_destroy\_flow\_table}}(ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02262}02262         ft-\/>\mbox{\hyperlink{structmlx5e__flow__table_abe53df65c002a6e659a4d7e848f1279a}{t}} = NULL;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02263}02263 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02264}02264         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02265}02265 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02266}02266 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02267}\mbox{\hyperlink{mlx5__en__flow__table_8c_a32634d3a8f519575950a96b646ed19ca}{02267}} \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{mlx5__en__flow__table_8c_a32634d3a8f519575950a96b646ed19ca}{mlx5e\_destroy\_inner\_rss\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02268}02268 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02269}02269         \mbox{\hyperlink{mlx5__en__flow__table_8c_ae9fd7975b3b323bfdff01a2d9e771a21}{mlx5e\_destroy\_flow\_table}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a91852a1eed845c0166317a4e2f42b662}{inner\_rss}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02270}02270 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02271}02271 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02272}02272 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02273}\mbox{\hyperlink{mlx5__en__flow__table_8c_aa23c119df04451bbbfa417b7884c7730}{02273}} \mbox{\hyperlink{mlx5__en__flow__table_8c_aa23c119df04451bbbfa417b7884c7730}{mlx5e\_destroy\_vxlan\_flow\_table}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02274}02274 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02275}02275         \mbox{\hyperlink{mlx5__en__flow__table_8c_ae9fd7975b3b323bfdff01a2d9e771a21}{mlx5e\_destroy\_flow\_table}}(\&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_af805a37489bc1987cfcd13f630c91200}{vxlan}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02276}02276 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02277}02277 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02278}02278 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02279}\mbox{\hyperlink{en_8h_a26b0dc537956b4ba2a60c9db98653006}{02279}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a26b0dc537956b4ba2a60c9db98653006}{mlx5e\_open\_flow\_tables}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02280}02280 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02281}02281         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02282}02282 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02283}02283         \textcolor{comment}{/* setup namespace pointer */}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02284}02284         \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a41953cab2cf0ecb7b71c0d3476edbb4e}{fts}}.\mbox{\hyperlink{structmlx5e__flow__tables_a3d9c192fa59827f7c1be6686094c21a7}{ns}} = \mbox{\hyperlink{fs_8h_a30d2c82fd713ed1d26a9ad835f1ed21f}{mlx5\_get\_flow\_namespace}}(}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02285}02285             \mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_a2223d57c4964aa044a50089734600ab8}{mdev}}, \mbox{\hyperlink{fs_8h_ab4cc9ec86ed186a2bb03cf5bc1600e1eaf656267eddda2b036be3fe3ec63a007e}{MLX5\_FLOW\_NAMESPACE\_KERNEL}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02286}02286 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02287}02287         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a2b81c0b619e43c023c677353c9d91ae1}{mlx5e\_create\_vlan\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02288}02288         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02289}02289                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02290}02290 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02291}02291         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a1699b8c122b14ff9e87b35bfab00a6b9}{mlx5e\_create\_vxlan\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02292}02292         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02293}02293                 \textcolor{keywordflow}{goto} err\_destroy\_vlan\_flow\_table;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02294}02294 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02295}02295         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a101931775102349f09a2cca391308c1c}{mlx5e\_create\_main\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{true});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02296}02296         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02297}02297                 \textcolor{keywordflow}{goto} err\_destroy\_vxlan\_flow\_table;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02298}02298 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02299}02299         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_aca3bc5672db5e80895f4844c1e360d31}{mlx5e\_create\_inner\_rss\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02300}02300         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02301}02301                 \textcolor{keywordflow}{goto} err\_destroy\_main\_flow\_table\_true;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02302}02302 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02303}02303         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a101931775102349f09a2cca391308c1c}{mlx5e\_create\_main\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{false});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02304}02304         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02305}02305                 \textcolor{keywordflow}{goto} err\_destroy\_inner\_rss\_flow\_table;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02306}02306 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02307}02307         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a4aa94f464561b4db81751a6a3d9f3f70}{mlx5e\_add\_vxlan\_catchall\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02308}02308         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02309}02309                 \textcolor{keywordflow}{goto} err\_destroy\_main\_flow\_table\_false;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02310}02310 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02311}02311         err = \mbox{\hyperlink{fs__tcp_8h_ae6c9111eec2822af482ec2ccde711809}{mlx5e\_accel\_fs\_tcp\_create}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02312}02312         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02313}02313                 \textcolor{keywordflow}{goto} err\_del\_vxlan\_catchall\_rule;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02314}02314 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02315}02315         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02316}02316 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02317}02317 err\_del\_vxlan\_catchall\_rule:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02318}02318         \mbox{\hyperlink{mlx5__en__flow__table_8c_a77683d8d4e8fe4e1b518b9ba3f562075}{mlx5e\_del\_vxlan\_catchall\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02319}02319 err\_destroy\_main\_flow\_table\_false:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02320}02320         \mbox{\hyperlink{mlx5__en__flow__table_8c_af0f4a75498cc51ad3e14a568b9696bc7}{mlx5e\_destroy\_main\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02321}02321 err\_destroy\_inner\_rss\_flow\_table:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02322}02322         \mbox{\hyperlink{mlx5__en__flow__table_8c_a32634d3a8f519575950a96b646ed19ca}{mlx5e\_destroy\_inner\_rss\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02323}02323 err\_destroy\_main\_flow\_table\_true:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02324}02324         \mbox{\hyperlink{mlx5__en__flow__table_8c_a408744d3e0b2b29cfba33477f1362578}{mlx5e\_destroy\_main\_vxlan\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02325}02325 err\_destroy\_vxlan\_flow\_table:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02326}02326         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa23c119df04451bbbfa417b7884c7730}{mlx5e\_destroy\_vxlan\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02327}02327 err\_destroy\_vlan\_flow\_table:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02328}02328         \mbox{\hyperlink{mlx5__en__flow__table_8c_aceb8e64bc64246b21fc443e133ab0707}{mlx5e\_destroy\_vlan\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02329}02329 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02330}02330         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02331}02331 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02332}02332 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02333}02333 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02334}\mbox{\hyperlink{en_8h_ac790f2435a972165a3841e27c3a70e39}{02334}} \mbox{\hyperlink{mlx5__en__flow__table_8c_ac790f2435a972165a3841e27c3a70e39}{mlx5e\_close\_flow\_tables}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02335}02335 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02336}02336         \mbox{\hyperlink{fs__tcp_8h_aecb3143908a874282774efea5391bb2a}{mlx5e\_accel\_fs\_tcp\_destroy}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02337}02337         \mbox{\hyperlink{mlx5__en__flow__table_8c_a77683d8d4e8fe4e1b518b9ba3f562075}{mlx5e\_del\_vxlan\_catchall\_rule}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02338}02338         \mbox{\hyperlink{mlx5__en__flow__table_8c_af0f4a75498cc51ad3e14a568b9696bc7}{mlx5e\_destroy\_main\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02339}02339         \mbox{\hyperlink{mlx5__en__flow__table_8c_a32634d3a8f519575950a96b646ed19ca}{mlx5e\_destroy\_inner\_rss\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02340}02340         \mbox{\hyperlink{mlx5__en__flow__table_8c_a408744d3e0b2b29cfba33477f1362578}{mlx5e\_destroy\_main\_vxlan\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02341}02341         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa23c119df04451bbbfa417b7884c7730}{mlx5e\_destroy\_vxlan\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02342}02342         \mbox{\hyperlink{mlx5__en__flow__table_8c_aceb8e64bc64246b21fc443e133ab0707}{mlx5e\_destroy\_vlan\_flow\_table}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02343}02343 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02344}02344 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02345}02345 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02346}\mbox{\hyperlink{en_8h_a7203ff752956b1815b6e17678d7bfc16}{02346}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a7203ff752956b1815b6e17678d7bfc16}{mlx5e\_open\_flow\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02347}02347 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02348}02348         \textcolor{keywordtype}{int} err;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02349}02349 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02350}02350         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_aa1780c5957d47520ab93fecc409fff89}{mlx5e\_add\_all\_vlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02351}02351         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02352}02352                 \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02353}02353 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02354}02354         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_a3c2650096865bf09eb854932ab278ce1}{mlx5e\_add\_main\_vxlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02355}02355         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02356}02356                 \textcolor{keywordflow}{goto} err\_del\_all\_vlan\_rules;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02357}02357 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02358}02358         err = \mbox{\hyperlink{mlx5__en__flow__table_8c_adb5952fdf9c00faac9e4611af2063c2a}{mlx5e\_add\_all\_vxlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02359}02359         \textcolor{keywordflow}{if} (err)}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02360}02360                 \textcolor{keywordflow}{goto} err\_del\_main\_vxlan\_rules;}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02361}02361 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02362}02362         \mbox{\hyperlink{mlx5__en__flow__table_8c_a04b2484915fa99b3514375c887fa4475}{mlx5e\_set\_rx\_mode\_core}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{true});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02363}02363 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02364}02364         set\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a46224f776e49b4d7b8b78f025553a533}{MLX5E\_STATE\_FLOW\_RULES\_READY}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02365}02365 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02366}02366         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02367}02367 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02368}02368 err\_del\_main\_vxlan\_rules:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02369}02369         \mbox{\hyperlink{mlx5__en__flow__table_8c_a7246af03bf70258a0bc999d26e8f3f1a}{mlx5e\_del\_main\_vxlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02370}02370 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02371}02371 err\_del\_all\_vlan\_rules:}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02372}02372         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa9f0b186f572faacf2020eae10317b41}{mlx5e\_del\_all\_vlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02373}02373 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02374}02374         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02375}02375 \}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02376}02376 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02377}02377 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02378}\mbox{\hyperlink{en_8h_a9ed07d4ff0c4d60b7336c709a0df6d9b}{02378}} \mbox{\hyperlink{mlx5__en__flow__table_8c_a9ed07d4ff0c4d60b7336c709a0df6d9b}{mlx5e\_close\_flow\_rules}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structmlx5e__priv}{mlx5e\_priv}} *\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}})}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02379}02379 \{}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02380}02380         clear\_bit(\mbox{\hyperlink{en_8h_a39b4e25c4e8f5fed29720be17a532fa8a46224f776e49b4d7b8b78f025553a533}{MLX5E\_STATE\_FLOW\_RULES\_READY}}, \&\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}-\/>\mbox{\hyperlink{structmlx5e__priv_ac8a64ac65b617b8f5fc8a6c90b095797}{state}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02381}02381 }
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02382}02382         \mbox{\hyperlink{mlx5__en__flow__table_8c_a04b2484915fa99b3514375c887fa4475}{mlx5e\_set\_rx\_mode\_core}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}}, \textcolor{keyword}{false});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02383}02383         \mbox{\hyperlink{mlx5__en__flow__table_8c_afd3085353d739c6a76924baaa2e35777}{mlx5e\_del\_all\_vxlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02384}02384         \mbox{\hyperlink{mlx5__en__flow__table_8c_a7246af03bf70258a0bc999d26e8f3f1a}{mlx5e\_del\_main\_vxlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02385}02385         \mbox{\hyperlink{mlx5__en__flow__table_8c_aa9f0b186f572faacf2020eae10317b41}{mlx5e\_del\_all\_vlan\_rules}}(\mbox{\hyperlink{en_8h_a5fb0e4bc38f8b60aad81d13acf50020f}{priv}});}
\DoxyCodeLine{\Hypertarget{mlx5__en__flow__table_8c_source_l02386}02386 \}}

\end{DoxyCode}
