* [RFC] net/i40e: backport i40e fixes and share code to 21.11
@ 2022-03-28 8:05 Steve Yang
2022-04-07 6:14 ` [RFC v2] " Steve Yang
0 siblings, 1 reply; 2+ messages in thread
From: Steve Yang @ 2022-03-28 8:05 UTC (permalink / raw)
To: dev; +Cc: qiming.yang, Steve Yang
Backport all the i40e share code to 21.11 based on cid-i40e.2022.03.08.
Backport all the iavf share code to 21.11 based on cid-avf.2022.03.08.
Backport all DPDK bug fixes of i40e and iavf to 21.11 from 22.03.
Signed-off-by: Steve Yang <stevex.yang@intel.com>
---
drivers/common/iavf/README | 2 +-
drivers/common/iavf/iavf_common.c | 861 +++++++++++++++++++-
drivers/common/iavf/iavf_prototype.h | 4 +-
drivers/common/iavf/iavf_status.h | 2 +-
drivers/common/iavf/iavf_type.h | 87 +-
drivers/common/iavf/virtchnl.h | 36 +-
drivers/common/iavf/virtchnl_inline_ipsec.h | 9 +
drivers/net/bonding/rte_eth_bond_pmd.c | 16 +-
drivers/net/i40e/base/README | 2 +-
drivers/net/i40e/base/i40e_common.c | 46 +-
drivers/net/i40e/base/i40e_devids.h | 2 +
drivers/net/i40e/base/i40e_prototype.h | 1 +
drivers/net/i40e/base/i40e_register.h | 45 +-
drivers/net/i40e/base/i40e_status.h | 2 +-
drivers/net/i40e/base/i40e_type.h | 7 +
drivers/net/i40e/i40e_ethdev.c | 43 +-
drivers/net/i40e/i40e_pf.c | 4 +-
drivers/net/i40e/i40e_regs.h | 11 +-
drivers/net/i40e/i40e_rxtx_vec_common.h | 2 +-
drivers/net/iavf/iavf_ethdev.c | 3 +
drivers/net/iavf/iavf_ipsec_crypto.c | 24 +-
drivers/net/iavf/iavf_ipsec_crypto.h | 4 +-
drivers/net/iavf/iavf_rxtx.c | 105 ++-
drivers/net/iavf/iavf_rxtx.h | 43 +-
drivers/net/iavf/iavf_rxtx_vec_avx2.c | 4 +-
drivers/net/iavf/iavf_rxtx_vec_avx512.c | 4 +-
drivers/net/iavf/iavf_rxtx_vec_sse.c | 4 +-
drivers/net/iavf/iavf_vchnl.c | 4 +-
drivers/net/ice/ice_dcf.c | 4 +-
29 files changed, 1200 insertions(+), 181 deletions(-)
diff --git a/drivers/common/iavf/README b/drivers/common/iavf/README
index 89bdbc827e..f59839ff97 100644
--- a/drivers/common/iavf/README
+++ b/drivers/common/iavf/README
@@ -6,7 +6,7 @@ Intel® IAVF driver
=================
This directory contains source code of FreeBSD IAVF driver of version
-cid-avf.2021.08.16.tar.gz released by the team which develops
+cid-avf.2022.03.08.tar.gz released by the team which develops
basic drivers for any IAVF NIC. The directory of base/ contains the
original source package.
diff --git a/drivers/common/iavf/iavf_common.c b/drivers/common/iavf/iavf_common.c
index 855a0ab2f5..03872dece8 100644
--- a/drivers/common/iavf/iavf_common.c
+++ b/drivers/common/iavf/iavf_common.c
@@ -135,8 +135,8 @@ const char *iavf_stat_str(struct iavf_hw *hw, enum iavf_status stat_err)
return "IAVF_ERR_INVALID_MAC_ADDR";
case IAVF_ERR_DEVICE_NOT_SUPPORTED:
return "IAVF_ERR_DEVICE_NOT_SUPPORTED";
- case IAVF_ERR_MASTER_REQUESTS_PENDING:
- return "IAVF_ERR_MASTER_REQUESTS_PENDING";
+ case IAVF_ERR_PRIMARY_REQUESTS_PENDING:
+ return "IAVF_ERR_PRIMARY_REQUESTS_PENDING";
case IAVF_ERR_INVALID_LINK_SETTINGS:
return "IAVF_ERR_INVALID_LINK_SETTINGS";
case IAVF_ERR_AUTONEG_NOT_COMPLETE:
@@ -520,9 +520,9 @@ enum iavf_status iavf_aq_set_rss_key(struct iavf_hw *hw,
return iavf_aq_get_set_rss_key(hw, vsi_id, key, true);
}
-/* The iavf_ptype_lookup table is used to convert from the 8-bit ptype in the
- * hardware to a bit-field that can be used by SW to more easily determine the
- * packet type.
+/* The iavf_ptype_lookup table is used to convert from the 8-bit and 10-bit
+ * ptype in the hardware to a bit-field that can be used by SW to more easily
+ * determine the packet type.
*
* Macros are used to shorten the table lines and make this table human
* readable.
@@ -882,7 +882,852 @@ struct iavf_rx_ptype_decoded iavf_ptype_lookup[] = {
IAVF_PTT_UNUSED_ENTRY(252),
IAVF_PTT_UNUSED_ENTRY(253),
IAVF_PTT_UNUSED_ENTRY(254),
- IAVF_PTT_UNUSED_ENTRY(255)
+ IAVF_PTT_UNUSED_ENTRY(255),
+ IAVF_PTT_UNUSED_ENTRY(256),
+ IAVF_PTT_UNUSED_ENTRY(257),
+ IAVF_PTT_UNUSED_ENTRY(258),
+ IAVF_PTT_UNUSED_ENTRY(259),
+
+ IAVF_PTT_UNUSED_ENTRY(260),
+ IAVF_PTT_UNUSED_ENTRY(261),
+ IAVF_PTT_UNUSED_ENTRY(262),
+ IAVF_PTT_UNUSED_ENTRY(263),
+ IAVF_PTT_UNUSED_ENTRY(264),
+ IAVF_PTT_UNUSED_ENTRY(265),
+ IAVF_PTT_UNUSED_ENTRY(266),
+ IAVF_PTT_UNUSED_ENTRY(267),
+ IAVF_PTT_UNUSED_ENTRY(268),
+ IAVF_PTT_UNUSED_ENTRY(269),
+
+ IAVF_PTT_UNUSED_ENTRY(270),
+ IAVF_PTT_UNUSED_ENTRY(271),
+ IAVF_PTT_UNUSED_ENTRY(272),
+ IAVF_PTT_UNUSED_ENTRY(273),
+ IAVF_PTT_UNUSED_ENTRY(274),
+ IAVF_PTT_UNUSED_ENTRY(275),
+ IAVF_PTT_UNUSED_ENTRY(276),
+ IAVF_PTT_UNUSED_ENTRY(277),
+ IAVF_PTT_UNUSED_ENTRY(278),
+ IAVF_PTT_UNUSED_ENTRY(279),
+
+ IAVF_PTT_UNUSED_ENTRY(280),
+ IAVF_PTT_UNUSED_ENTRY(281),
+ IAVF_PTT_UNUSED_ENTRY(282),
+ IAVF_PTT_UNUSED_ENTRY(283),
+ IAVF_PTT_UNUSED_ENTRY(284),
+ IAVF_PTT_UNUSED_ENTRY(285),
+ IAVF_PTT_UNUSED_ENTRY(286),
+ IAVF_PTT_UNUSED_ENTRY(287),
+ IAVF_PTT_UNUSED_ENTRY(288),
+ IAVF_PTT_UNUSED_ENTRY(289),
+
+ IAVF_PTT_UNUSED_ENTRY(290),
+ IAVF_PTT_UNUSED_ENTRY(291),
+ IAVF_PTT_UNUSED_ENTRY(292),
+ IAVF_PTT_UNUSED_ENTRY(293),
+ IAVF_PTT_UNUSED_ENTRY(294),
+ IAVF_PTT_UNUSED_ENTRY(295),
+ IAVF_PTT_UNUSED_ENTRY(296),
+ IAVF_PTT_UNUSED_ENTRY(297),
+ IAVF_PTT_UNUSED_ENTRY(298),
+ IAVF_PTT_UNUSED_ENTRY(299),
+
+ IAVF_PTT_UNUSED_ENTRY(300),
+ IAVF_PTT_UNUSED_ENTRY(301),
+ IAVF_PTT_UNUSED_ENTRY(302),
+ IAVF_PTT_UNUSED_ENTRY(303),
+ IAVF_PTT_UNUSED_ENTRY(304),
+ IAVF_PTT_UNUSED_ENTRY(305),
+ IAVF_PTT_UNUSED_ENTRY(306),
+ IAVF_PTT_UNUSED_ENTRY(307),
+ IAVF_PTT_UNUSED_ENTRY(308),
+ IAVF_PTT_UNUSED_ENTRY(309),
+
+ IAVF_PTT_UNUSED_ENTRY(310),
+ IAVF_PTT_UNUSED_ENTRY(311),
+ IAVF_PTT_UNUSED_ENTRY(312),
+ IAVF_PTT_UNUSED_ENTRY(313),
+ IAVF_PTT_UNUSED_ENTRY(314),
+ IAVF_PTT_UNUSED_ENTRY(315),
+ IAVF_PTT_UNUSED_ENTRY(316),
+ IAVF_PTT_UNUSED_ENTRY(317),
+ IAVF_PTT_UNUSED_ENTRY(318),
+ IAVF_PTT_UNUSED_ENTRY(319),
+
+ IAVF_PTT_UNUSED_ENTRY(320),
+ IAVF_PTT_UNUSED_ENTRY(321),
+ IAVF_PTT_UNUSED_ENTRY(322),
+ IAVF_PTT_UNUSED_ENTRY(323),
+ IAVF_PTT_UNUSED_ENTRY(324),
+ IAVF_PTT_UNUSED_ENTRY(325),
+ IAVF_PTT_UNUSED_ENTRY(326),
+ IAVF_PTT_UNUSED_ENTRY(327),
+ IAVF_PTT_UNUSED_ENTRY(328),
+ IAVF_PTT_UNUSED_ENTRY(329),
+
+ IAVF_PTT_UNUSED_ENTRY(330),
+ IAVF_PTT_UNUSED_ENTRY(331),
+ IAVF_PTT_UNUSED_ENTRY(332),
+ IAVF_PTT_UNUSED_ENTRY(333),
+ IAVF_PTT_UNUSED_ENTRY(334),
+ IAVF_PTT_UNUSED_ENTRY(335),
+ IAVF_PTT_UNUSED_ENTRY(336),
+ IAVF_PTT_UNUSED_ENTRY(337),
+ IAVF_PTT_UNUSED_ENTRY(338),
+ IAVF_PTT_UNUSED_ENTRY(339),
+
+ IAVF_PTT_UNUSED_ENTRY(340),
+ IAVF_PTT_UNUSED_ENTRY(341),
+ IAVF_PTT_UNUSED_ENTRY(342),
+ IAVF_PTT_UNUSED_ENTRY(343),
+ IAVF_PTT_UNUSED_ENTRY(344),
+ IAVF_PTT_UNUSED_ENTRY(345),
+ IAVF_PTT_UNUSED_ENTRY(346),
+ IAVF_PTT_UNUSED_ENTRY(347),
+ IAVF_PTT_UNUSED_ENTRY(348),
+ IAVF_PTT_UNUSED_ENTRY(349),
+
+ IAVF_PTT_UNUSED_ENTRY(350),
+ IAVF_PTT_UNUSED_ENTRY(351),
+ IAVF_PTT_UNUSED_ENTRY(352),
+ IAVF_PTT_UNUSED_ENTRY(353),
+ IAVF_PTT_UNUSED_ENTRY(354),
+ IAVF_PTT_UNUSED_ENTRY(355),
+ IAVF_PTT_UNUSED_ENTRY(356),
+ IAVF_PTT_UNUSED_ENTRY(357),
+ IAVF_PTT_UNUSED_ENTRY(358),
+ IAVF_PTT_UNUSED_ENTRY(359),
+
+ IAVF_PTT_UNUSED_ENTRY(360),
+ IAVF_PTT_UNUSED_ENTRY(361),
+ IAVF_PTT_UNUSED_ENTRY(362),
+ IAVF_PTT_UNUSED_ENTRY(363),
+ IAVF_PTT_UNUSED_ENTRY(364),
+ IAVF_PTT_UNUSED_ENTRY(365),
+ IAVF_PTT_UNUSED_ENTRY(366),
+ IAVF_PTT_UNUSED_ENTRY(367),
+ IAVF_PTT_UNUSED_ENTRY(368),
+ IAVF_PTT_UNUSED_ENTRY(369),
+
+ IAVF_PTT_UNUSED_ENTRY(370),
+ IAVF_PTT_UNUSED_ENTRY(371),
+ IAVF_PTT_UNUSED_ENTRY(372),
+ IAVF_PTT_UNUSED_ENTRY(373),
+ IAVF_PTT_UNUSED_ENTRY(374),
+ IAVF_PTT_UNUSED_ENTRY(375),
+ IAVF_PTT_UNUSED_ENTRY(376),
+ IAVF_PTT_UNUSED_ENTRY(377),
+ IAVF_PTT_UNUSED_ENTRY(378),
+ IAVF_PTT_UNUSED_ENTRY(379),
+
+ IAVF_PTT_UNUSED_ENTRY(380),
+ IAVF_PTT_UNUSED_ENTRY(381),
+ IAVF_PTT_UNUSED_ENTRY(382),
+ IAVF_PTT_UNUSED_ENTRY(383),
+ IAVF_PTT_UNUSED_ENTRY(384),
+ IAVF_PTT_UNUSED_ENTRY(385),
+ IAVF_PTT_UNUSED_ENTRY(386),
+ IAVF_PTT_UNUSED_ENTRY(387),
+ IAVF_PTT_UNUSED_ENTRY(388),
+ IAVF_PTT_UNUSED_ENTRY(389),
+
+ IAVF_PTT_UNUSED_ENTRY(390),
+ IAVF_PTT_UNUSED_ENTRY(391),
+ IAVF_PTT_UNUSED_ENTRY(392),
+ IAVF_PTT_UNUSED_ENTRY(393),
+ IAVF_PTT_UNUSED_ENTRY(394),
+ IAVF_PTT_UNUSED_ENTRY(395),
+ IAVF_PTT_UNUSED_ENTRY(396),
+ IAVF_PTT_UNUSED_ENTRY(397),
+ IAVF_PTT_UNUSED_ENTRY(398),
+ IAVF_PTT_UNUSED_ENTRY(399),
+
+ IAVF_PTT_UNUSED_ENTRY(400),
+ IAVF_PTT_UNUSED_ENTRY(401),
+ IAVF_PTT_UNUSED_ENTRY(402),
+ IAVF_PTT_UNUSED_ENTRY(403),
+ IAVF_PTT_UNUSED_ENTRY(404),
+ IAVF_PTT_UNUSED_ENTRY(405),
+ IAVF_PTT_UNUSED_ENTRY(406),
+ IAVF_PTT_UNUSED_ENTRY(407),
+ IAVF_PTT_UNUSED_ENTRY(408),
+ IAVF_PTT_UNUSED_ENTRY(409),
+
+ IAVF_PTT_UNUSED_ENTRY(410),
+ IAVF_PTT_UNUSED_ENTRY(411),
+ IAVF_PTT_UNUSED_ENTRY(412),
+ IAVF_PTT_UNUSED_ENTRY(413),
+ IAVF_PTT_UNUSED_ENTRY(414),
+ IAVF_PTT_UNUSED_ENTRY(415),
+ IAVF_PTT_UNUSED_ENTRY(416),
+ IAVF_PTT_UNUSED_ENTRY(417),
+ IAVF_PTT_UNUSED_ENTRY(418),
+ IAVF_PTT_UNUSED_ENTRY(419),
+
+ IAVF_PTT_UNUSED_ENTRY(420),
+ IAVF_PTT_UNUSED_ENTRY(421),
+ IAVF_PTT_UNUSED_ENTRY(422),
+ IAVF_PTT_UNUSED_ENTRY(423),
+ IAVF_PTT_UNUSED_ENTRY(424),
+ IAVF_PTT_UNUSED_ENTRY(425),
+ IAVF_PTT_UNUSED_ENTRY(426),
+ IAVF_PTT_UNUSED_ENTRY(427),
+ IAVF_PTT_UNUSED_ENTRY(428),
+ IAVF_PTT_UNUSED_ENTRY(429),
+
+ IAVF_PTT_UNUSED_ENTRY(430),
+ IAVF_PTT_UNUSED_ENTRY(431),
+ IAVF_PTT_UNUSED_ENTRY(432),
+ IAVF_PTT_UNUSED_ENTRY(433),
+ IAVF_PTT_UNUSED_ENTRY(434),
+ IAVF_PTT_UNUSED_ENTRY(435),
+ IAVF_PTT_UNUSED_ENTRY(436),
+ IAVF_PTT_UNUSED_ENTRY(437),
+ IAVF_PTT_UNUSED_ENTRY(438),
+ IAVF_PTT_UNUSED_ENTRY(439),
+
+ IAVF_PTT_UNUSED_ENTRY(440),
+ IAVF_PTT_UNUSED_ENTRY(441),
+ IAVF_PTT_UNUSED_ENTRY(442),
+ IAVF_PTT_UNUSED_ENTRY(443),
+ IAVF_PTT_UNUSED_ENTRY(444),
+ IAVF_PTT_UNUSED_ENTRY(445),
+ IAVF_PTT_UNUSED_ENTRY(446),
+ IAVF_PTT_UNUSED_ENTRY(447),
+ IAVF_PTT_UNUSED_ENTRY(448),
+ IAVF_PTT_UNUSED_ENTRY(449),
+
+ IAVF_PTT_UNUSED_ENTRY(450),
+ IAVF_PTT_UNUSED_ENTRY(451),
+ IAVF_PTT_UNUSED_ENTRY(452),
+ IAVF_PTT_UNUSED_ENTRY(453),
+ IAVF_PTT_UNUSED_ENTRY(454),
+ IAVF_PTT_UNUSED_ENTRY(455),
+ IAVF_PTT_UNUSED_ENTRY(456),
+ IAVF_PTT_UNUSED_ENTRY(457),
+ IAVF_PTT_UNUSED_ENTRY(458),
+ IAVF_PTT_UNUSED_ENTRY(459),
+
+ IAVF_PTT_UNUSED_ENTRY(460),
+ IAVF_PTT_UNUSED_ENTRY(461),
+ IAVF_PTT_UNUSED_ENTRY(462),
+ IAVF_PTT_UNUSED_ENTRY(463),
+ IAVF_PTT_UNUSED_ENTRY(464),
+ IAVF_PTT_UNUSED_ENTRY(465),
+ IAVF_PTT_UNUSED_ENTRY(466),
+ IAVF_PTT_UNUSED_ENTRY(467),
+ IAVF_PTT_UNUSED_ENTRY(468),
+ IAVF_PTT_UNUSED_ENTRY(469),
+
+ IAVF_PTT_UNUSED_ENTRY(470),
+ IAVF_PTT_UNUSED_ENTRY(471),
+ IAVF_PTT_UNUSED_ENTRY(472),
+ IAVF_PTT_UNUSED_ENTRY(473),
+ IAVF_PTT_UNUSED_ENTRY(474),
+ IAVF_PTT_UNUSED_ENTRY(475),
+ IAVF_PTT_UNUSED_ENTRY(476),
+ IAVF_PTT_UNUSED_ENTRY(477),
+ IAVF_PTT_UNUSED_ENTRY(478),
+ IAVF_PTT_UNUSED_ENTRY(479),
+
+ IAVF_PTT_UNUSED_ENTRY(480),
+ IAVF_PTT_UNUSED_ENTRY(481),
+ IAVF_PTT_UNUSED_ENTRY(482),
+ IAVF_PTT_UNUSED_ENTRY(483),
+ IAVF_PTT_UNUSED_ENTRY(484),
+ IAVF_PTT_UNUSED_ENTRY(485),
+ IAVF_PTT_UNUSED_ENTRY(486),
+ IAVF_PTT_UNUSED_ENTRY(487),
+ IAVF_PTT_UNUSED_ENTRY(488),
+ IAVF_PTT_UNUSED_ENTRY(489),
+
+ IAVF_PTT_UNUSED_ENTRY(490),
+ IAVF_PTT_UNUSED_ENTRY(491),
+ IAVF_PTT_UNUSED_ENTRY(492),
+ IAVF_PTT_UNUSED_ENTRY(493),
+ IAVF_PTT_UNUSED_ENTRY(494),
+ IAVF_PTT_UNUSED_ENTRY(495),
+ IAVF_PTT_UNUSED_ENTRY(496),
+ IAVF_PTT_UNUSED_ENTRY(497),
+ IAVF_PTT_UNUSED_ENTRY(498),
+ IAVF_PTT_UNUSED_ENTRY(499),
+
+ IAVF_PTT_UNUSED_ENTRY(500),
+ IAVF_PTT_UNUSED_ENTRY(501),
+ IAVF_PTT_UNUSED_ENTRY(502),
+ IAVF_PTT_UNUSED_ENTRY(503),
+ IAVF_PTT_UNUSED_ENTRY(504),
+ IAVF_PTT_UNUSED_ENTRY(505),
+ IAVF_PTT_UNUSED_ENTRY(506),
+ IAVF_PTT_UNUSED_ENTRY(507),
+ IAVF_PTT_UNUSED_ENTRY(508),
+ IAVF_PTT_UNUSED_ENTRY(509),
+
+ IAVF_PTT_UNUSED_ENTRY(510),
+ IAVF_PTT_UNUSED_ENTRY(511),
+ IAVF_PTT_UNUSED_ENTRY(512),
+ IAVF_PTT_UNUSED_ENTRY(513),
+ IAVF_PTT_UNUSED_ENTRY(514),
+ IAVF_PTT_UNUSED_ENTRY(515),
+ IAVF_PTT_UNUSED_ENTRY(516),
+ IAVF_PTT_UNUSED_ENTRY(517),
+ IAVF_PTT_UNUSED_ENTRY(518),
+ IAVF_PTT_UNUSED_ENTRY(519),
+
+ IAVF_PTT_UNUSED_ENTRY(520),
+ IAVF_PTT_UNUSED_ENTRY(521),
+ IAVF_PTT_UNUSED_ENTRY(522),
+ IAVF_PTT_UNUSED_ENTRY(523),
+ IAVF_PTT_UNUSED_ENTRY(524),
+ IAVF_PTT_UNUSED_ENTRY(525),
+ IAVF_PTT_UNUSED_ENTRY(526),
+ IAVF_PTT_UNUSED_ENTRY(527),
+ IAVF_PTT_UNUSED_ENTRY(528),
+ IAVF_PTT_UNUSED_ENTRY(529),
+
+ IAVF_PTT_UNUSED_ENTRY(530),
+ IAVF_PTT_UNUSED_ENTRY(531),
+ IAVF_PTT_UNUSED_ENTRY(532),
+ IAVF_PTT_UNUSED_ENTRY(533),
+ IAVF_PTT_UNUSED_ENTRY(534),
+ IAVF_PTT_UNUSED_ENTRY(535),
+ IAVF_PTT_UNUSED_ENTRY(536),
+ IAVF_PTT_UNUSED_ENTRY(537),
+ IAVF_PTT_UNUSED_ENTRY(538),
+ IAVF_PTT_UNUSED_ENTRY(539),
+
+ IAVF_PTT_UNUSED_ENTRY(540),
+ IAVF_PTT_UNUSED_ENTRY(541),
+ IAVF_PTT_UNUSED_ENTRY(542),
+ IAVF_PTT_UNUSED_ENTRY(543),
+ IAVF_PTT_UNUSED_ENTRY(544),
+ IAVF_PTT_UNUSED_ENTRY(545),
+ IAVF_PTT_UNUSED_ENTRY(546),
+ IAVF_PTT_UNUSED_ENTRY(547),
+ IAVF_PTT_UNUSED_ENTRY(548),
+ IAVF_PTT_UNUSED_ENTRY(549),
+
+ IAVF_PTT_UNUSED_ENTRY(550),
+ IAVF_PTT_UNUSED_ENTRY(551),
+ IAVF_PTT_UNUSED_ENTRY(552),
+ IAVF_PTT_UNUSED_ENTRY(553),
+ IAVF_PTT_UNUSED_ENTRY(554),
+ IAVF_PTT_UNUSED_ENTRY(555),
+ IAVF_PTT_UNUSED_ENTRY(556),
+ IAVF_PTT_UNUSED_ENTRY(557),
+ IAVF_PTT_UNUSED_ENTRY(558),
+ IAVF_PTT_UNUSED_ENTRY(559),
+
+ IAVF_PTT_UNUSED_ENTRY(560),
+ IAVF_PTT_UNUSED_ENTRY(561),
+ IAVF_PTT_UNUSED_ENTRY(562),
+ IAVF_PTT_UNUSED_ENTRY(563),
+ IAVF_PTT_UNUSED_ENTRY(564),
+ IAVF_PTT_UNUSED_ENTRY(565),
+ IAVF_PTT_UNUSED_ENTRY(566),
+ IAVF_PTT_UNUSED_ENTRY(567),
+ IAVF_PTT_UNUSED_ENTRY(568),
+ IAVF_PTT_UNUSED_ENTRY(569),
+
+ IAVF_PTT_UNUSED_ENTRY(570),
+ IAVF_PTT_UNUSED_ENTRY(571),
+ IAVF_PTT_UNUSED_ENTRY(572),
+ IAVF_PTT_UNUSED_ENTRY(573),
+ IAVF_PTT_UNUSED_ENTRY(574),
+ IAVF_PTT_UNUSED_ENTRY(575),
+ IAVF_PTT_UNUSED_ENTRY(576),
+ IAVF_PTT_UNUSED_ENTRY(577),
+ IAVF_PTT_UNUSED_ENTRY(578),
+ IAVF_PTT_UNUSED_ENTRY(579),
+
+ IAVF_PTT_UNUSED_ENTRY(580),
+ IAVF_PTT_UNUSED_ENTRY(581),
+ IAVF_PTT_UNUSED_ENTRY(582),
+ IAVF_PTT_UNUSED_ENTRY(583),
+ IAVF_PTT_UNUSED_ENTRY(584),
+ IAVF_PTT_UNUSED_ENTRY(585),
+ IAVF_PTT_UNUSED_ENTRY(586),
+ IAVF_PTT_UNUSED_ENTRY(587),
+ IAVF_PTT_UNUSED_ENTRY(588),
+ IAVF_PTT_UNUSED_ENTRY(589),
+
+ IAVF_PTT_UNUSED_ENTRY(590),
+ IAVF_PTT_UNUSED_ENTRY(591),
+ IAVF_PTT_UNUSED_ENTRY(592),
+ IAVF_PTT_UNUSED_ENTRY(593),
+ IAVF_PTT_UNUSED_ENTRY(594),
+ IAVF_PTT_UNUSED_ENTRY(595),
+ IAVF_PTT_UNUSED_ENTRY(596),
+ IAVF_PTT_UNUSED_ENTRY(597),
+ IAVF_PTT_UNUSED_ENTRY(598),
+ IAVF_PTT_UNUSED_ENTRY(599),
+
+ IAVF_PTT_UNUSED_ENTRY(600),
+ IAVF_PTT_UNUSED_ENTRY(601),
+ IAVF_PTT_UNUSED_ENTRY(602),
+ IAVF_PTT_UNUSED_ENTRY(603),
+ IAVF_PTT_UNUSED_ENTRY(604),
+ IAVF_PTT_UNUSED_ENTRY(605),
+ IAVF_PTT_UNUSED_ENTRY(606),
+ IAVF_PTT_UNUSED_ENTRY(607),
+ IAVF_PTT_UNUSED_ENTRY(608),
+ IAVF_PTT_UNUSED_ENTRY(609),
+
+ IAVF_PTT_UNUSED_ENTRY(610),
+ IAVF_PTT_UNUSED_ENTRY(611),
+ IAVF_PTT_UNUSED_ENTRY(612),
+ IAVF_PTT_UNUSED_ENTRY(613),
+ IAVF_PTT_UNUSED_ENTRY(614),
+ IAVF_PTT_UNUSED_ENTRY(615),
+ IAVF_PTT_UNUSED_ENTRY(616),
+ IAVF_PTT_UNUSED_ENTRY(617),
+ IAVF_PTT_UNUSED_ENTRY(618),
+ IAVF_PTT_UNUSED_ENTRY(619),
+
+ IAVF_PTT_UNUSED_ENTRY(620),
+ IAVF_PTT_UNUSED_ENTRY(621),
+ IAVF_PTT_UNUSED_ENTRY(622),
+ IAVF_PTT_UNUSED_ENTRY(623),
+ IAVF_PTT_UNUSED_ENTRY(624),
+ IAVF_PTT_UNUSED_ENTRY(625),
+ IAVF_PTT_UNUSED_ENTRY(626),
+ IAVF_PTT_UNUSED_ENTRY(627),
+ IAVF_PTT_UNUSED_ENTRY(628),
+ IAVF_PTT_UNUSED_ENTRY(629),
+
+ IAVF_PTT_UNUSED_ENTRY(630),
+ IAVF_PTT_UNUSED_ENTRY(631),
+ IAVF_PTT_UNUSED_ENTRY(632),
+ IAVF_PTT_UNUSED_ENTRY(633),
+ IAVF_PTT_UNUSED_ENTRY(634),
+ IAVF_PTT_UNUSED_ENTRY(635),
+ IAVF_PTT_UNUSED_ENTRY(636),
+ IAVF_PTT_UNUSED_ENTRY(637),
+ IAVF_PTT_UNUSED_ENTRY(638),
+ IAVF_PTT_UNUSED_ENTRY(639),
+
+ IAVF_PTT_UNUSED_ENTRY(640),
+ IAVF_PTT_UNUSED_ENTRY(641),
+ IAVF_PTT_UNUSED_ENTRY(642),
+ IAVF_PTT_UNUSED_ENTRY(643),
+ IAVF_PTT_UNUSED_ENTRY(644),
+ IAVF_PTT_UNUSED_ENTRY(645),
+ IAVF_PTT_UNUSED_ENTRY(646),
+ IAVF_PTT_UNUSED_ENTRY(647),
+ IAVF_PTT_UNUSED_ENTRY(648),
+ IAVF_PTT_UNUSED_ENTRY(649),
+
+ IAVF_PTT_UNUSED_ENTRY(650),
+ IAVF_PTT_UNUSED_ENTRY(651),
+ IAVF_PTT_UNUSED_ENTRY(652),
+ IAVF_PTT_UNUSED_ENTRY(653),
+ IAVF_PTT_UNUSED_ENTRY(654),
+ IAVF_PTT_UNUSED_ENTRY(655),
+ IAVF_PTT_UNUSED_ENTRY(656),
+ IAVF_PTT_UNUSED_ENTRY(657),
+ IAVF_PTT_UNUSED_ENTRY(658),
+ IAVF_PTT_UNUSED_ENTRY(659),
+
+ IAVF_PTT_UNUSED_ENTRY(660),
+ IAVF_PTT_UNUSED_ENTRY(661),
+ IAVF_PTT_UNUSED_ENTRY(662),
+ IAVF_PTT_UNUSED_ENTRY(663),
+ IAVF_PTT_UNUSED_ENTRY(664),
+ IAVF_PTT_UNUSED_ENTRY(665),
+ IAVF_PTT_UNUSED_ENTRY(666),
+ IAVF_PTT_UNUSED_ENTRY(667),
+ IAVF_PTT_UNUSED_ENTRY(668),
+ IAVF_PTT_UNUSED_ENTRY(669),
+
+ IAVF_PTT_UNUSED_ENTRY(670),
+ IAVF_PTT_UNUSED_ENTRY(671),
+ IAVF_PTT_UNUSED_ENTRY(672),
+ IAVF_PTT_UNUSED_ENTRY(673),
+ IAVF_PTT_UNUSED_ENTRY(674),
+ IAVF_PTT_UNUSED_ENTRY(675),
+ IAVF_PTT_UNUSED_ENTRY(676),
+ IAVF_PTT_UNUSED_ENTRY(677),
+ IAVF_PTT_UNUSED_ENTRY(678),
+ IAVF_PTT_UNUSED_ENTRY(679),
+
+ IAVF_PTT_UNUSED_ENTRY(680),
+ IAVF_PTT_UNUSED_ENTRY(681),
+ IAVF_PTT_UNUSED_ENTRY(682),
+ IAVF_PTT_UNUSED_ENTRY(683),
+ IAVF_PTT_UNUSED_ENTRY(684),
+ IAVF_PTT_UNUSED_ENTRY(685),
+ IAVF_PTT_UNUSED_ENTRY(686),
+ IAVF_PTT_UNUSED_ENTRY(687),
+ IAVF_PTT_UNUSED_ENTRY(688),
+ IAVF_PTT_UNUSED_ENTRY(689),
+
+ IAVF_PTT_UNUSED_ENTRY(690),
+ IAVF_PTT_UNUSED_ENTRY(691),
+ IAVF_PTT_UNUSED_ENTRY(692),
+ IAVF_PTT_UNUSED_ENTRY(693),
+ IAVF_PTT_UNUSED_ENTRY(694),
+ IAVF_PTT_UNUSED_ENTRY(695),
+ IAVF_PTT_UNUSED_ENTRY(696),
+ IAVF_PTT_UNUSED_ENTRY(697),
+ IAVF_PTT_UNUSED_ENTRY(698),
+ IAVF_PTT_UNUSED_ENTRY(699),
+
+ IAVF_PTT_UNUSED_ENTRY(700),
+ IAVF_PTT_UNUSED_ENTRY(701),
+ IAVF_PTT_UNUSED_ENTRY(702),
+ IAVF_PTT_UNUSED_ENTRY(703),
+ IAVF_PTT_UNUSED_ENTRY(704),
+ IAVF_PTT_UNUSED_ENTRY(705),
+ IAVF_PTT_UNUSED_ENTRY(706),
+ IAVF_PTT_UNUSED_ENTRY(707),
+ IAVF_PTT_UNUSED_ENTRY(708),
+ IAVF_PTT_UNUSED_ENTRY(709),
+
+ IAVF_PTT_UNUSED_ENTRY(710),
+ IAVF_PTT_UNUSED_ENTRY(711),
+ IAVF_PTT_UNUSED_ENTRY(712),
+ IAVF_PTT_UNUSED_ENTRY(713),
+ IAVF_PTT_UNUSED_ENTRY(714),
+ IAVF_PTT_UNUSED_ENTRY(715),
+ IAVF_PTT_UNUSED_ENTRY(716),
+ IAVF_PTT_UNUSED_ENTRY(717),
+ IAVF_PTT_UNUSED_ENTRY(718),
+ IAVF_PTT_UNUSED_ENTRY(719),
+
+ IAVF_PTT_UNUSED_ENTRY(720),
+ IAVF_PTT_UNUSED_ENTRY(721),
+ IAVF_PTT_UNUSED_ENTRY(722),
+ IAVF_PTT_UNUSED_ENTRY(723),
+ IAVF_PTT_UNUSED_ENTRY(724),
+ IAVF_PTT_UNUSED_ENTRY(725),
+ IAVF_PTT_UNUSED_ENTRY(726),
+ IAVF_PTT_UNUSED_ENTRY(727),
+ IAVF_PTT_UNUSED_ENTRY(728),
+ IAVF_PTT_UNUSED_ENTRY(729),
+
+ IAVF_PTT_UNUSED_ENTRY(730),
+ IAVF_PTT_UNUSED_ENTRY(731),
+ IAVF_PTT_UNUSED_ENTRY(732),
+ IAVF_PTT_UNUSED_ENTRY(733),
+ IAVF_PTT_UNUSED_ENTRY(734),
+ IAVF_PTT_UNUSED_ENTRY(735),
+ IAVF_PTT_UNUSED_ENTRY(736),
+ IAVF_PTT_UNUSED_ENTRY(737),
+ IAVF_PTT_UNUSED_ENTRY(738),
+ IAVF_PTT_UNUSED_ENTRY(739),
+
+ IAVF_PTT_UNUSED_ENTRY(740),
+ IAVF_PTT_UNUSED_ENTRY(741),
+ IAVF_PTT_UNUSED_ENTRY(742),
+ IAVF_PTT_UNUSED_ENTRY(743),
+ IAVF_PTT_UNUSED_ENTRY(744),
+ IAVF_PTT_UNUSED_ENTRY(745),
+ IAVF_PTT_UNUSED_ENTRY(746),
+ IAVF_PTT_UNUSED_ENTRY(747),
+ IAVF_PTT_UNUSED_ENTRY(748),
+ IAVF_PTT_UNUSED_ENTRY(749),
+
+ IAVF_PTT_UNUSED_ENTRY(750),
+ IAVF_PTT_UNUSED_ENTRY(751),
+ IAVF_PTT_UNUSED_ENTRY(752),
+ IAVF_PTT_UNUSED_ENTRY(753),
+ IAVF_PTT_UNUSED_ENTRY(754),
+ IAVF_PTT_UNUSED_ENTRY(755),
+ IAVF_PTT_UNUSED_ENTRY(756),
+ IAVF_PTT_UNUSED_ENTRY(757),
+ IAVF_PTT_UNUSED_ENTRY(758),
+ IAVF_PTT_UNUSED_ENTRY(759),
+
+ IAVF_PTT_UNUSED_ENTRY(760),
+ IAVF_PTT_UNUSED_ENTRY(761),
+ IAVF_PTT_UNUSED_ENTRY(762),
+ IAVF_PTT_UNUSED_ENTRY(763),
+ IAVF_PTT_UNUSED_ENTRY(764),
+ IAVF_PTT_UNUSED_ENTRY(765),
+ IAVF_PTT_UNUSED_ENTRY(766),
+ IAVF_PTT_UNUSED_ENTRY(767),
+ IAVF_PTT_UNUSED_ENTRY(768),
+ IAVF_PTT_UNUSED_ENTRY(769),
+
+ IAVF_PTT_UNUSED_ENTRY(770),
+ IAVF_PTT_UNUSED_ENTRY(771),
+ IAVF_PTT_UNUSED_ENTRY(772),
+ IAVF_PTT_UNUSED_ENTRY(773),
+ IAVF_PTT_UNUSED_ENTRY(774),
+ IAVF_PTT_UNUSED_ENTRY(775),
+ IAVF_PTT_UNUSED_ENTRY(776),
+ IAVF_PTT_UNUSED_ENTRY(777),
+ IAVF_PTT_UNUSED_ENTRY(778),
+ IAVF_PTT_UNUSED_ENTRY(779),
+
+ IAVF_PTT_UNUSED_ENTRY(780),
+ IAVF_PTT_UNUSED_ENTRY(781),
+ IAVF_PTT_UNUSED_ENTRY(782),
+ IAVF_PTT_UNUSED_ENTRY(783),
+ IAVF_PTT_UNUSED_ENTRY(784),
+ IAVF_PTT_UNUSED_ENTRY(785),
+ IAVF_PTT_UNUSED_ENTRY(786),
+ IAVF_PTT_UNUSED_ENTRY(787),
+ IAVF_PTT_UNUSED_ENTRY(788),
+ IAVF_PTT_UNUSED_ENTRY(789),
+
+ IAVF_PTT_UNUSED_ENTRY(790),
+ IAVF_PTT_UNUSED_ENTRY(791),
+ IAVF_PTT_UNUSED_ENTRY(792),
+ IAVF_PTT_UNUSED_ENTRY(793),
+ IAVF_PTT_UNUSED_ENTRY(794),
+ IAVF_PTT_UNUSED_ENTRY(795),
+ IAVF_PTT_UNUSED_ENTRY(796),
+ IAVF_PTT_UNUSED_ENTRY(797),
+ IAVF_PTT_UNUSED_ENTRY(798),
+ IAVF_PTT_UNUSED_ENTRY(799),
+
+ IAVF_PTT_UNUSED_ENTRY(800),
+ IAVF_PTT_UNUSED_ENTRY(801),
+ IAVF_PTT_UNUSED_ENTRY(802),
+ IAVF_PTT_UNUSED_ENTRY(803),
+ IAVF_PTT_UNUSED_ENTRY(804),
+ IAVF_PTT_UNUSED_ENTRY(805),
+ IAVF_PTT_UNUSED_ENTRY(806),
+ IAVF_PTT_UNUSED_ENTRY(807),
+ IAVF_PTT_UNUSED_ENTRY(808),
+ IAVF_PTT_UNUSED_ENTRY(809),
+
+ IAVF_PTT_UNUSED_ENTRY(810),
+ IAVF_PTT_UNUSED_ENTRY(811),
+ IAVF_PTT_UNUSED_ENTRY(812),
+ IAVF_PTT_UNUSED_ENTRY(813),
+ IAVF_PTT_UNUSED_ENTRY(814),
+ IAVF_PTT_UNUSED_ENTRY(815),
+ IAVF_PTT_UNUSED_ENTRY(816),
+ IAVF_PTT_UNUSED_ENTRY(817),
+ IAVF_PTT_UNUSED_ENTRY(818),
+ IAVF_PTT_UNUSED_ENTRY(819),
+
+ IAVF_PTT_UNUSED_ENTRY(820),
+ IAVF_PTT_UNUSED_ENTRY(821),
+ IAVF_PTT_UNUSED_ENTRY(822),
+ IAVF_PTT_UNUSED_ENTRY(823),
+ IAVF_PTT_UNUSED_ENTRY(824),
+ IAVF_PTT_UNUSED_ENTRY(825),
+ IAVF_PTT_UNUSED_ENTRY(826),
+ IAVF_PTT_UNUSED_ENTRY(827),
+ IAVF_PTT_UNUSED_ENTRY(828),
+ IAVF_PTT_UNUSED_ENTRY(829),
+
+ IAVF_PTT_UNUSED_ENTRY(830),
+ IAVF_PTT_UNUSED_ENTRY(831),
+ IAVF_PTT_UNUSED_ENTRY(832),
+ IAVF_PTT_UNUSED_ENTRY(833),
+ IAVF_PTT_UNUSED_ENTRY(834),
+ IAVF_PTT_UNUSED_ENTRY(835),
+ IAVF_PTT_UNUSED_ENTRY(836),
+ IAVF_PTT_UNUSED_ENTRY(837),
+ IAVF_PTT_UNUSED_ENTRY(838),
+ IAVF_PTT_UNUSED_ENTRY(839),
+
+ IAVF_PTT_UNUSED_ENTRY(840),
+ IAVF_PTT_UNUSED_ENTRY(841),
+ IAVF_PTT_UNUSED_ENTRY(842),
+ IAVF_PTT_UNUSED_ENTRY(843),
+ IAVF_PTT_UNUSED_ENTRY(844),
+ IAVF_PTT_UNUSED_ENTRY(845),
+ IAVF_PTT_UNUSED_ENTRY(846),
+ IAVF_PTT_UNUSED_ENTRY(847),
+ IAVF_PTT_UNUSED_ENTRY(848),
+ IAVF_PTT_UNUSED_ENTRY(849),
+
+ IAVF_PTT_UNUSED_ENTRY(850),
+ IAVF_PTT_UNUSED_ENTRY(851),
+ IAVF_PTT_UNUSED_ENTRY(852),
+ IAVF_PTT_UNUSED_ENTRY(853),
+ IAVF_PTT_UNUSED_ENTRY(854),
+ IAVF_PTT_UNUSED_ENTRY(855),
+ IAVF_PTT_UNUSED_ENTRY(856),
+ IAVF_PTT_UNUSED_ENTRY(857),
+ IAVF_PTT_UNUSED_ENTRY(858),
+ IAVF_PTT_UNUSED_ENTRY(859),
+
+ IAVF_PTT_UNUSED_ENTRY(860),
+ IAVF_PTT_UNUSED_ENTRY(861),
+ IAVF_PTT_UNUSED_ENTRY(862),
+ IAVF_PTT_UNUSED_ENTRY(863),
+ IAVF_PTT_UNUSED_ENTRY(864),
+ IAVF_PTT_UNUSED_ENTRY(865),
+ IAVF_PTT_UNUSED_ENTRY(866),
+ IAVF_PTT_UNUSED_ENTRY(867),
+ IAVF_PTT_UNUSED_ENTRY(868),
+ IAVF_PTT_UNUSED_ENTRY(869),
+
+ IAVF_PTT_UNUSED_ENTRY(870),
+ IAVF_PTT_UNUSED_ENTRY(871),
+ IAVF_PTT_UNUSED_ENTRY(872),
+ IAVF_PTT_UNUSED_ENTRY(873),
+ IAVF_PTT_UNUSED_ENTRY(874),
+ IAVF_PTT_UNUSED_ENTRY(875),
+ IAVF_PTT_UNUSED_ENTRY(876),
+ IAVF_PTT_UNUSED_ENTRY(877),
+ IAVF_PTT_UNUSED_ENTRY(878),
+ IAVF_PTT_UNUSED_ENTRY(879),
+
+ IAVF_PTT_UNUSED_ENTRY(880),
+ IAVF_PTT_UNUSED_ENTRY(881),
+ IAVF_PTT_UNUSED_ENTRY(882),
+ IAVF_PTT_UNUSED_ENTRY(883),
+ IAVF_PTT_UNUSED_ENTRY(884),
+ IAVF_PTT_UNUSED_ENTRY(885),
+ IAVF_PTT_UNUSED_ENTRY(886),
+ IAVF_PTT_UNUSED_ENTRY(887),
+ IAVF_PTT_UNUSED_ENTRY(888),
+ IAVF_PTT_UNUSED_ENTRY(889),
+
+ IAVF_PTT_UNUSED_ENTRY(890),
+ IAVF_PTT_UNUSED_ENTRY(891),
+ IAVF_PTT_UNUSED_ENTRY(892),
+ IAVF_PTT_UNUSED_ENTRY(893),
+ IAVF_PTT_UNUSED_ENTRY(894),
+ IAVF_PTT_UNUSED_ENTRY(895),
+ IAVF_PTT_UNUSED_ENTRY(896),
+ IAVF_PTT_UNUSED_ENTRY(897),
+ IAVF_PTT_UNUSED_ENTRY(898),
+ IAVF_PTT_UNUSED_ENTRY(899),
+
+ IAVF_PTT_UNUSED_ENTRY(900),
+ IAVF_PTT_UNUSED_ENTRY(901),
+ IAVF_PTT_UNUSED_ENTRY(902),
+ IAVF_PTT_UNUSED_ENTRY(903),
+ IAVF_PTT_UNUSED_ENTRY(904),
+ IAVF_PTT_UNUSED_ENTRY(905),
+ IAVF_PTT_UNUSED_ENTRY(906),
+ IAVF_PTT_UNUSED_ENTRY(907),
+ IAVF_PTT_UNUSED_ENTRY(908),
+ IAVF_PTT_UNUSED_ENTRY(909),
+
+ IAVF_PTT_UNUSED_ENTRY(910),
+ IAVF_PTT_UNUSED_ENTRY(911),
+ IAVF_PTT_UNUSED_ENTRY(912),
+ IAVF_PTT_UNUSED_ENTRY(913),
+ IAVF_PTT_UNUSED_ENTRY(914),
+ IAVF_PTT_UNUSED_ENTRY(915),
+ IAVF_PTT_UNUSED_ENTRY(916),
+ IAVF_PTT_UNUSED_ENTRY(917),
+ IAVF_PTT_UNUSED_ENTRY(918),
+ IAVF_PTT_UNUSED_ENTRY(919),
+
+ IAVF_PTT_UNUSED_ENTRY(920),
+ IAVF_PTT_UNUSED_ENTRY(921),
+ IAVF_PTT_UNUSED_ENTRY(922),
+ IAVF_PTT_UNUSED_ENTRY(923),
+ IAVF_PTT_UNUSED_ENTRY(924),
+ IAVF_PTT_UNUSED_ENTRY(925),
+ IAVF_PTT_UNUSED_ENTRY(926),
+ IAVF_PTT_UNUSED_ENTRY(927),
+ IAVF_PTT_UNUSED_ENTRY(928),
+ IAVF_PTT_UNUSED_ENTRY(929),
+
+ IAVF_PTT_UNUSED_ENTRY(930),
+ IAVF_PTT_UNUSED_ENTRY(931),
+ IAVF_PTT_UNUSED_ENTRY(932),
+ IAVF_PTT_UNUSED_ENTRY(933),
+ IAVF_PTT_UNUSED_ENTRY(934),
+ IAVF_PTT_UNUSED_ENTRY(935),
+ IAVF_PTT_UNUSED_ENTRY(936),
+ IAVF_PTT_UNUSED_ENTRY(937),
+ IAVF_PTT_UNUSED_ENTRY(938),
+ IAVF_PTT_UNUSED_ENTRY(939),
+
+ IAVF_PTT_UNUSED_ENTRY(940),
+ IAVF_PTT_UNUSED_ENTRY(941),
+ IAVF_PTT_UNUSED_ENTRY(942),
+ IAVF_PTT_UNUSED_ENTRY(943),
+ IAVF_PTT_UNUSED_ENTRY(944),
+ IAVF_PTT_UNUSED_ENTRY(945),
+ IAVF_PTT_UNUSED_ENTRY(946),
+ IAVF_PTT_UNUSED_ENTRY(947),
+ IAVF_PTT_UNUSED_ENTRY(948),
+ IAVF_PTT_UNUSED_ENTRY(949),
+
+ IAVF_PTT_UNUSED_ENTRY(950),
+ IAVF_PTT_UNUSED_ENTRY(951),
+ IAVF_PTT_UNUSED_ENTRY(952),
+ IAVF_PTT_UNUSED_ENTRY(953),
+ IAVF_PTT_UNUSED_ENTRY(954),
+ IAVF_PTT_UNUSED_ENTRY(955),
+ IAVF_PTT_UNUSED_ENTRY(956),
+ IAVF_PTT_UNUSED_ENTRY(957),
+ IAVF_PTT_UNUSED_ENTRY(958),
+ IAVF_PTT_UNUSED_ENTRY(959),
+
+ IAVF_PTT_UNUSED_ENTRY(960),
+ IAVF_PTT_UNUSED_ENTRY(961),
+ IAVF_PTT_UNUSED_ENTRY(962),
+ IAVF_PTT_UNUSED_ENTRY(963),
+ IAVF_PTT_UNUSED_ENTRY(964),
+ IAVF_PTT_UNUSED_ENTRY(965),
+ IAVF_PTT_UNUSED_ENTRY(966),
+ IAVF_PTT_UNUSED_ENTRY(967),
+ IAVF_PTT_UNUSED_ENTRY(968),
+ IAVF_PTT_UNUSED_ENTRY(969),
+
+ IAVF_PTT_UNUSED_ENTRY(970),
+ IAVF_PTT_UNUSED_ENTRY(971),
+ IAVF_PTT_UNUSED_ENTRY(972),
+ IAVF_PTT_UNUSED_ENTRY(973),
+ IAVF_PTT_UNUSED_ENTRY(974),
+ IAVF_PTT_UNUSED_ENTRY(975),
+ IAVF_PTT_UNUSED_ENTRY(976),
+ IAVF_PTT_UNUSED_ENTRY(977),
+ IAVF_PTT_UNUSED_ENTRY(978),
+ IAVF_PTT_UNUSED_ENTRY(979),
+
+ IAVF_PTT_UNUSED_ENTRY(980),
+ IAVF_PTT_UNUSED_ENTRY(981),
+ IAVF_PTT_UNUSED_ENTRY(982),
+ IAVF_PTT_UNUSED_ENTRY(983),
+ IAVF_PTT_UNUSED_ENTRY(984),
+ IAVF_PTT_UNUSED_ENTRY(985),
+ IAVF_PTT_UNUSED_ENTRY(986),
+ IAVF_PTT_UNUSED_ENTRY(987),
+ IAVF_PTT_UNUSED_ENTRY(988),
+ IAVF_PTT_UNUSED_ENTRY(989),
+
+ IAVF_PTT_UNUSED_ENTRY(990),
+ IAVF_PTT_UNUSED_ENTRY(991),
+ IAVF_PTT_UNUSED_ENTRY(992),
+ IAVF_PTT_UNUSED_ENTRY(993),
+ IAVF_PTT_UNUSED_ENTRY(994),
+ IAVF_PTT_UNUSED_ENTRY(995),
+ IAVF_PTT_UNUSED_ENTRY(996),
+ IAVF_PTT_UNUSED_ENTRY(997),
+ IAVF_PTT_UNUSED_ENTRY(998),
+ IAVF_PTT_UNUSED_ENTRY(999),
+
+ IAVF_PTT_UNUSED_ENTRY(1000),
+ IAVF_PTT_UNUSED_ENTRY(1001),
+ IAVF_PTT_UNUSED_ENTRY(1002),
+ IAVF_PTT_UNUSED_ENTRY(1003),
+ IAVF_PTT_UNUSED_ENTRY(1004),
+ IAVF_PTT_UNUSED_ENTRY(1005),
+ IAVF_PTT_UNUSED_ENTRY(1006),
+ IAVF_PTT_UNUSED_ENTRY(1007),
+ IAVF_PTT_UNUSED_ENTRY(1008),
+ IAVF_PTT_UNUSED_ENTRY(1009),
+
+ IAVF_PTT_UNUSED_ENTRY(1010),
+ IAVF_PTT_UNUSED_ENTRY(1011),
+ IAVF_PTT_UNUSED_ENTRY(1012),
+ IAVF_PTT_UNUSED_ENTRY(1013),
+ IAVF_PTT_UNUSED_ENTRY(1014),
+ IAVF_PTT_UNUSED_ENTRY(1015),
+ IAVF_PTT_UNUSED_ENTRY(1016),
+ IAVF_PTT_UNUSED_ENTRY(1017),
+ IAVF_PTT_UNUSED_ENTRY(1018),
+ IAVF_PTT_UNUSED_ENTRY(1019),
+
+ IAVF_PTT_UNUSED_ENTRY(1020),
+ IAVF_PTT_UNUSED_ENTRY(1021),
+ IAVF_PTT_UNUSED_ENTRY(1022),
+ IAVF_PTT_UNUSED_ENTRY(1023),
};
/**
@@ -924,7 +1769,7 @@ enum iavf_status iavf_validate_mac_addr(u8 *mac_addr)
**/
enum iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw,
enum virtchnl_ops v_opcode,
- enum iavf_status v_retval,
+ enum virtchnl_status_code v_retval,
u8 *msg, u16 msglen,
struct iavf_asq_cmd_details *cmd_details)
{
@@ -1001,7 +1846,7 @@ void iavf_vf_parse_hw_config(struct iavf_hw *hw,
enum iavf_status iavf_vf_reset(struct iavf_hw *hw)
{
return iavf_aq_send_msg_to_pf(hw, VIRTCHNL_OP_RESET_VF,
- IAVF_SUCCESS, NULL, 0, NULL);
+ VIRTCHNL_STATUS_SUCCESS, NULL, 0, NULL);
}
/**
diff --git a/drivers/common/iavf/iavf_prototype.h b/drivers/common/iavf/iavf_prototype.h
index 1c125d1d94..16cb973bb8 100644
--- a/drivers/common/iavf/iavf_prototype.h
+++ b/drivers/common/iavf/iavf_prototype.h
@@ -69,7 +69,7 @@ enum iavf_status iavf_set_mac_type(struct iavf_hw *hw);
extern struct iavf_rx_ptype_decoded iavf_ptype_lookup[];
-STATIC INLINE struct iavf_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype)
+STATIC INLINE struct iavf_rx_ptype_decoded decode_rx_desc_ptype(u16 ptype)
{
return iavf_ptype_lookup[ptype];
}
@@ -87,7 +87,7 @@ enum iavf_status iavf_vf_reset(struct iavf_hw *hw);
__rte_internal
enum iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw,
enum virtchnl_ops v_opcode,
- enum iavf_status v_retval,
+ enum virtchnl_status_code v_retval,
u8 *msg, u16 msglen,
struct iavf_asq_cmd_details *cmd_details);
enum iavf_status iavf_aq_debug_dump(struct iavf_hw *hw, u8 cluster_id,
diff --git a/drivers/common/iavf/iavf_status.h b/drivers/common/iavf/iavf_status.h
index b96887738d..4dd0f5c5d8 100644
--- a/drivers/common/iavf/iavf_status.h
+++ b/drivers/common/iavf/iavf_status.h
@@ -19,7 +19,7 @@ enum iavf_status {
IAVF_ERR_ADAPTER_STOPPED = -9,
IAVF_ERR_INVALID_MAC_ADDR = -10,
IAVF_ERR_DEVICE_NOT_SUPPORTED = -11,
- IAVF_ERR_MASTER_REQUESTS_PENDING = -12,
+ IAVF_ERR_PRIMARY_REQUESTS_PENDING = -12,
IAVF_ERR_INVALID_LINK_SETTINGS = -13,
IAVF_ERR_AUTONEG_NOT_COMPLETE = -14,
IAVF_ERR_RESET_FAILED = -15,
diff --git a/drivers/common/iavf/iavf_type.h b/drivers/common/iavf/iavf_type.h
index 51267ca3b3..49d262d795 100644
--- a/drivers/common/iavf/iavf_type.h
+++ b/drivers/common/iavf/iavf_type.h
@@ -397,6 +397,45 @@ union iavf_16byte_rx_desc {
} wb; /* writeback */
};
+/* Rx Flex Descriptor NIC Profile
+ * RxDID Profile ID 2
+ * Flex-field 0: RSS hash lower 16-bits
+ * Flex-field 1: RSS hash upper 16-bits
+ * Flex-field 2: Flow ID lower 16-bits
+ * Flex-field 3: Flow ID higher 16-bits
+ * Flex-field 4: reserved, VLAN ID taken from L2Tag
+ */
+struct iavf_32byte_rx_flex_wb {
+ /* Qword 0 */
+ u8 rxdid;
+ u8 mir_id_umb_cast;
+ __le16 ptype_flexi_flags0;
+ __le16 pkt_len;
+ __le16 hdr_len_sph_flex_flags1;
+
+ /* Qword 1 */
+ __le16 status_error0;
+ __le16 l2tag1;
+ __le32 rss_hash;
+
+ /* Qword 2 */
+ __le16 status_error1;
+ u8 flexi_flags2;
+ u8 ts_low;
+ __le16 l2tag2_1st;
+ __le16 l2tag2_2nd;
+
+ /* Qword 3 */
+ __le32 flow_id;
+ union {
+ struct {
+ __le16 rsvd;
+ __le16 flow_id_ipv6;
+ } flex;
+ __le32 ts_high;
+ } flex_ts;
+};
+
union iavf_32byte_rx_desc {
struct {
__le64 pkt_addr; /* Packet buffer address */
@@ -444,6 +483,7 @@ union iavf_32byte_rx_desc {
} hi_dword;
} qword3;
} wb; /* writeback */
+ struct iavf_32byte_rx_flex_wb flex_wb;
};
#define IAVF_RXD_QW0_MIRROR_STATUS_SHIFT 8
@@ -528,6 +568,51 @@ enum iavf_rx_desc_error_l3l4e_fcoe_masks {
#define IAVF_RXD_QW1_PTYPE_SHIFT 30
#define IAVF_RXD_QW1_PTYPE_MASK (0xFFULL << IAVF_RXD_QW1_PTYPE_SHIFT)
+/* for iavf_32byte_rx_flex_wb.ptype_flexi_flags0 member */
+#define IAVF_RX_FLEX_DESC_PTYPE_M (0x3FF) /* 10-bits */
+
+/* for iavf_32byte_rx_flex_wb.pkt_length member */
+#define IAVF_RX_FLEX_DESC_PKT_LEN_M (0x3FFF) /* 14-bits */
+
+enum iavf_rx_flex_desc_status_error_0_bits {
+ /* Note: These are predefined bit offsets */
+ IAVF_RX_FLEX_DESC_STATUS0_DD_S = 0,
+ IAVF_RX_FLEX_DESC_STATUS0_EOF_S,
+ IAVF_RX_FLEX_DESC_STATUS0_HBO_S,
+ IAVF_RX_FLEX_DESC_STATUS0_L3L4P_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XSUM_IPE_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XSUM_L4E_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XSUM_EIPE_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XSUM_EUDPE_S,
+ IAVF_RX_FLEX_DESC_STATUS0_LPBK_S,
+ IAVF_RX_FLEX_DESC_STATUS0_IPV6EXADD_S,
+ IAVF_RX_FLEX_DESC_STATUS0_RXE_S,
+ IAVF_RX_FLEX_DESC_STATUS0_CRCP_S,
+ IAVF_RX_FLEX_DESC_STATUS0_RSS_VALID_S,
+ IAVF_RX_FLEX_DESC_STATUS0_L2TAG1P_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XTRMD0_VALID_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XTRMD1_VALID_S,
+ IAVF_RX_FLEX_DESC_STATUS0_LAST /* this entry must be last!!! */
+};
+
+enum iavf_rx_flex_desc_status_error_1_bits {
+ /* Note: These are predefined bit offsets */
+ /* Bits 3:0 are reserved for inline ipsec status */
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_0 = 0,
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_1,
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_2,
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_3,
+ IAVF_RX_FLEX_DESC_STATUS1_NAT_S,
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_PROCESSED,
+ /* [10:6] reserved */
+ IAVF_RX_FLEX_DESC_STATUS1_L2TAG2P_S = 11,
+ IAVF_RX_FLEX_DESC_STATUS1_XTRMD2_VALID_S = 12,
+ IAVF_RX_FLEX_DESC_STATUS1_XTRMD3_VALID_S = 13,
+ IAVF_RX_FLEX_DESC_STATUS1_XTRMD4_VALID_S = 14,
+ IAVF_RX_FLEX_DESC_STATUS1_XTRMD5_VALID_S = 15,
+ IAVF_RX_FLEX_DESC_STATUS1_LAST /* this entry must be last!!! */
+};
+
/* Packet type non-ip values */
enum iavf_rx_l2_ptype {
IAVF_RX_PTYPE_L2_RESERVED = 0,
@@ -560,7 +645,7 @@ enum iavf_rx_l2_ptype {
};
struct iavf_rx_ptype_decoded {
- u32 ptype:8;
+ u32 ptype:10;
u32 known:1;
u32 outer_ip:1;
u32 outer_ip_ver:1;
diff --git a/drivers/common/iavf/virtchnl.h b/drivers/common/iavf/virtchnl.h
index 269578f7c0..d015a785b9 100644
--- a/drivers/common/iavf/virtchnl.h
+++ b/drivers/common/iavf/virtchnl.h
@@ -23,7 +23,7 @@
*
* The PF is required to return a status code in v_retval for all messages
* except RESET_VF, which does not require any response. The returned value
- * is of virtchnl_status_code type, defined in the shared type.h.
+ * is of virtchnl_status_code type, defined here.
*
* In general, VF driver initialization should roughly follow the order of
* these opcodes. The VF driver must first validate the API version of the
@@ -40,7 +40,11 @@
#include "virtchnl_inline_ipsec.h"
-/* Error Codes */
+/* Error Codes
+ * Note that many older versions of various iAVF drivers convert the reported
+ * status code directly into an iavf_status enumeration. For this reason, it
+ * is important that the values of these enumerations line up.
+ */
enum virtchnl_status_code {
VIRTCHNL_STATUS_SUCCESS = 0,
VIRTCHNL_STATUS_ERR_PARAM = -5,
@@ -281,6 +285,30 @@ static inline const char *virtchnl_op_str(enum virtchnl_ops v_opcode)
}
}
+static inline const char *virtchnl_stat_str(enum virtchnl_status_code v_status)
+{
+ switch (v_status) {
+ case VIRTCHNL_STATUS_SUCCESS:
+ return "VIRTCHNL_STATUS_SUCCESS";
+ case VIRTCHNL_STATUS_ERR_PARAM:
+ return "VIRTCHNL_STATUS_ERR_PARAM";
+ case VIRTCHNL_STATUS_ERR_NO_MEMORY:
+ return "VIRTCHNL_STATUS_ERR_NO_MEMORY";
+ case VIRTCHNL_STATUS_ERR_OPCODE_MISMATCH:
+ return "VIRTCHNL_STATUS_ERR_OPCODE_MISMATCH";
+ case VIRTCHNL_STATUS_ERR_CQP_COMPL_ERROR:
+ return "VIRTCHNL_STATUS_ERR_CQP_COMPL_ERROR";
+ case VIRTCHNL_STATUS_ERR_INVALID_VF_ID:
+ return "VIRTCHNL_STATUS_ERR_INVALID_VF_ID";
+ case VIRTCHNL_STATUS_ERR_ADMIN_QUEUE_ERROR:
+ return "VIRTCHNL_STATUS_ERR_ADMIN_QUEUE_ERROR";
+ case VIRTCHNL_STATUS_ERR_NOT_SUPPORTED:
+ return "VIRTCHNL_STATUS_ERR_NOT_SUPPORTED";
+ default:
+ return "Unknown status code (update virtchnl.h)";
+ }
+}
+
/* These macros are used to generate compilation errors if a structure/union
* is not exactly the correct length. It gives a divide by zero error if the
* structure/union is not of the correct size, otherwise it creates an enum
@@ -1653,6 +1681,10 @@ enum virtchnl_proto_hdr_field {
PROTO_HDR_FIELD_START(VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_DWN),
VIRTCHNL_PROTO_HDR_GTPU_UP_QFI =
PROTO_HDR_FIELD_START(VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_UP),
+ /* L2TPv2 */
+ VIRTCHNL_PROTO_HDR_L2TPV2_SESS_ID =
+ PROTO_HDR_FIELD_START(VIRTCHNL_PROTO_HDR_L2TPV2),
+ VIRTCHNL_PROTO_HDR_L2TPV2_LEN_SESS_ID,
};
struct virtchnl_proto_hdr {
diff --git a/drivers/common/iavf/virtchnl_inline_ipsec.h b/drivers/common/iavf/virtchnl_inline_ipsec.h
index 1e9134501e..2f4bf15725 100644
--- a/drivers/common/iavf/virtchnl_inline_ipsec.h
+++ b/drivers/common/iavf/virtchnl_inline_ipsec.h
@@ -446,6 +446,15 @@ struct virtchnl_ipsec_sp_cfg {
/* Set TC (congestion domain) if true. For future use. */
u8 set_tc;
+
+ /* 0 for NAT-T unsupported, 1 for NAT-T supported */
+ u8 is_udp;
+
+ /* reserved */
+ u8 reserved;
+
+ /* NAT-T UDP port number. Only valid in case NAT-T supported */
+ u16 udp_port;
} __rte_packed;
diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 84f4900ee5..2e381ee174 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -1734,14 +1734,6 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
}
}
- errval = rte_eth_dev_set_mtu(slave_eth_dev->data->port_id,
- bonded_eth_dev->data->mtu);
- if (errval != 0 && errval != -ENOTSUP) {
- RTE_BOND_LOG(ERR, "rte_eth_dev_set_mtu: port %u, err (%d)",
- slave_eth_dev->data->port_id, errval);
- return errval;
- }
-
/* Configure device */
errval = rte_eth_dev_configure(slave_eth_dev->data->port_id,
nb_rx_queues, nb_tx_queues,
@@ -1752,6 +1744,14 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
return errval;
}
+ errval = rte_eth_dev_set_mtu(slave_eth_dev->data->port_id,
+ bonded_eth_dev->data->mtu);
+ if (errval != 0 && errval != -ENOTSUP) {
+ RTE_BOND_LOG(ERR, "rte_eth_dev_set_mtu: port %u, err (%d)",
+ slave_eth_dev->data->port_id, errval);
+ return errval;
+ }
+
/* Setup Rx Queues */
for (q_id = 0; q_id < bonded_eth_dev->data->nb_rx_queues; q_id++) {
bd_rx_q = (struct bond_rx_queue *)bonded_eth_dev->data->rx_queues[q_id];
diff --git a/drivers/net/i40e/base/README b/drivers/net/i40e/base/README
index 2e4fa5a921..b1da53db2b 100644
--- a/drivers/net/i40e/base/README
+++ b/drivers/net/i40e/base/README
@@ -6,7 +6,7 @@ Intel® I40E driver
==================
This directory contains source code of FreeBSD i40e driver of version
-cid-i40e.2021.08.16.tar.gz released by the team which develops
+cid-i40e.2022.03.08.tar.gz released by the team which develops
basic drivers for any i40e NIC. The directory of base/ contains the
original source package.
This driver is valid for the product(s) listed below
diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
index 9eee104063..122a3782a4 100644
--- a/drivers/net/i40e/base/i40e_common.c
+++ b/drivers/net/i40e/base/i40e_common.c
@@ -37,6 +37,7 @@ enum i40e_status_code i40e_set_mac_type(struct i40e_hw *hw)
case I40E_DEV_ID_10G_B:
case I40E_DEV_ID_10G_SFP:
case I40E_DEV_ID_5G_BASE_T_BC:
+ case I40E_DEV_ID_1G_BASE_T_BC:
case I40E_DEV_ID_20G_KR2:
case I40E_DEV_ID_20G_KR2_A:
case I40E_DEV_ID_25G_B:
@@ -54,6 +55,7 @@ enum i40e_status_code i40e_set_mac_type(struct i40e_hw *hw)
case I40E_DEV_ID_1G_BASE_T_X722:
case I40E_DEV_ID_10G_BASE_T_X722:
case I40E_DEV_ID_SFP_I_X722:
+ case I40E_DEV_ID_SFP_X722_A:
hw->mac.type = I40E_MAC_X722;
break;
#if defined(INTEGRATED_VF) || defined(VF_DRIVER)
@@ -176,8 +178,8 @@ const char *i40e_stat_str(struct i40e_hw *hw, enum i40e_status_code stat_err)
return "I40E_ERR_INVALID_MAC_ADDR";
case I40E_ERR_DEVICE_NOT_SUPPORTED:
return "I40E_ERR_DEVICE_NOT_SUPPORTED";
- case I40E_ERR_MASTER_REQUESTS_PENDING:
- return "I40E_ERR_MASTER_REQUESTS_PENDING";
+ case I40E_ERR_PRIMARY_REQUESTS_PENDING:
+ return "I40E_ERR_PRIMARY_REQUESTS_PENDING";
case I40E_ERR_INVALID_LINK_SETTINGS:
return "I40E_ERR_INVALID_LINK_SETTINGS";
case I40E_ERR_AUTONEG_NOT_COMPLETE:
@@ -1624,6 +1626,35 @@ u32 i40e_led_get(struct i40e_hw *hw)
return mode;
}
+/**
+ * i40e_led_get_blink - return current LED blink setting
+ * @hw: pointer to the hw struct
+ *
+ * The value returned is the LED_BLINK bit as defined in the
+ * GPIO register definitions (0 = no blink, 1 = do blink).
+ **/
+bool i40e_led_get_blink(struct i40e_hw *hw)
+{
+ bool blink = 0;
+ int i;
+
+ /* as per the documentation GPIO 22-29 are the LED
+ * GPIO pins named LED0..LED7
+ */
+ for (i = I40E_LED0; i <= I40E_GLGEN_GPIO_CTL_MAX_INDEX; i++) {
+ u32 gpio_val = i40e_led_is_mine(hw, i);
+
+ if (!gpio_val)
+ continue;
+
+ blink = (gpio_val & I40E_GLGEN_GPIO_CTL_LED_BLINK_MASK) >>
+ I40E_GLGEN_GPIO_CTL_LED_BLINK_SHIFT;
+ break;
+ }
+
+ return blink;
+}
+
/**
* i40e_led_set - set new on/off mode
* @hw: pointer to the hw struct
@@ -5661,7 +5692,6 @@ STATIC enum i40e_status_code i40e_validate_filter_settings(struct i40e_hw *hw,
struct i40e_filter_control_settings *settings)
{
u32 fcoe_cntx_size, fcoe_filt_size;
- u32 pe_cntx_size, pe_filt_size;
u32 fcoe_fmax;
u32 val;
@@ -5706,8 +5736,6 @@ STATIC enum i40e_status_code i40e_validate_filter_settings(struct i40e_hw *hw,
case I40E_HASH_FILTER_SIZE_256K:
case I40E_HASH_FILTER_SIZE_512K:
case I40E_HASH_FILTER_SIZE_1M:
- pe_filt_size = I40E_HASH_FILTER_BASE_SIZE;
- pe_filt_size <<= (u32)settings->pe_filt_num;
break;
default:
return I40E_ERR_PARAM;
@@ -5724,8 +5752,6 @@ STATIC enum i40e_status_code i40e_validate_filter_settings(struct i40e_hw *hw,
case I40E_DMA_CNTX_SIZE_64K:
case I40E_DMA_CNTX_SIZE_128K:
case I40E_DMA_CNTX_SIZE_256K:
- pe_cntx_size = I40E_DMA_CNTX_BASE_SIZE;
- pe_cntx_size <<= (u32)settings->pe_cntx_num;
break;
default:
return I40E_ERR_PARAM;
@@ -6910,6 +6936,7 @@ enum i40e_status_code i40e_write_phy_register(struct i40e_hw *hw,
case I40E_DEV_ID_10G_BASE_T4:
case I40E_DEV_ID_10G_BASE_T_BC:
case I40E_DEV_ID_5G_BASE_T_BC:
+ case I40E_DEV_ID_1G_BASE_T_BC:
case I40E_DEV_ID_10G_BASE_T_X722:
case I40E_DEV_ID_25G_B:
case I40E_DEV_ID_25G_SFP28:
@@ -6946,7 +6973,9 @@ enum i40e_status_code i40e_read_phy_register(struct i40e_hw *hw,
break;
case I40E_DEV_ID_10G_BASE_T:
case I40E_DEV_ID_10G_BASE_T4:
+ case I40E_DEV_ID_10G_BASE_T_BC:
case I40E_DEV_ID_5G_BASE_T_BC:
+ case I40E_DEV_ID_1G_BASE_T_BC:
case I40E_DEV_ID_10G_BASE_T_X722:
case I40E_DEV_ID_25G_B:
case I40E_DEV_ID_25G_SFP28:
@@ -8198,7 +8227,8 @@ i40e_validate_profile(struct i40e_hw *hw, struct i40e_profile_segment *profile,
u32 sec_off;
u32 i;
- if (track_id == I40E_DDP_TRACKID_INVALID) {
+ if (track_id == I40E_DDP_TRACKID_INVALID ||
+ track_id == I40E_DDP_TRACKID_RDONLY) {
i40e_debug(hw, I40E_DEBUG_PACKAGE, "Invalid track_id\n");
return I40E_NOT_SUPPORTED;
}
diff --git a/drivers/net/i40e/base/i40e_devids.h b/drivers/net/i40e/base/i40e_devids.h
index 02ae7be550..be261423b8 100644
--- a/drivers/net/i40e/base/i40e_devids.h
+++ b/drivers/net/i40e/base/i40e_devids.h
@@ -26,6 +26,7 @@
#define I40E_DEV_ID_XXV710_N3000 0x0D58
#define I40E_DEV_ID_10G_BASE_T_BC 0x15FF
#define I40E_DEV_ID_5G_BASE_T_BC 0x101F
+#define I40E_DEV_ID_1G_BASE_T_BC 0x0DD2
#if defined(INTEGRATED_VF) || defined(VF_DRIVER) || defined(I40E_NDIS_SUPPORT)
#define I40E_DEV_ID_VF 0x154C
#define I40E_DEV_ID_VF_HV 0x1571
@@ -48,6 +49,7 @@
#define I40E_DEV_ID_1G_BASE_T_X722 0x37D1
#define I40E_DEV_ID_10G_BASE_T_X722 0x37D2
#define I40E_DEV_ID_SFP_I_X722 0x37D3
+#define I40E_DEV_ID_SFP_X722_A 0x0DDA
#if defined(INTEGRATED_VF) || defined(VF_DRIVER) || defined(I40E_NDIS_SUPPORT)
#define I40E_DEV_ID_X722_VF 0x37CD
#endif /* VF_DRIVER */
diff --git a/drivers/net/i40e/base/i40e_prototype.h b/drivers/net/i40e/base/i40e_prototype.h
index 29c86c7fe8..8c21ac71ab 100644
--- a/drivers/net/i40e/base/i40e_prototype.h
+++ b/drivers/net/i40e/base/i40e_prototype.h
@@ -73,6 +73,7 @@ const char *i40e_stat_str(struct i40e_hw *hw, enum i40e_status_code stat_err);
#ifdef PF_DRIVER
u32 i40e_led_get(struct i40e_hw *hw);
+bool i40e_led_get_blink(struct i40e_hw *hw);
void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink);
enum i40e_status_code i40e_led_set_phy(struct i40e_hw *hw, bool on,
u16 led_addr, u32 mode);
diff --git a/drivers/net/i40e/base/i40e_register.h b/drivers/net/i40e/base/i40e_register.h
index 75eff845f1..651b0230f7 100644
--- a/drivers/net/i40e/base/i40e_register.h
+++ b/drivers/net/i40e/base/i40e_register.h
@@ -2395,10 +2395,14 @@
#define I40E_GL_FCOERPDC_MAX_INDEX 143
#define I40E_GL_FCOERPDC_FCOERPDC_SHIFT 0
#define I40E_GL_FCOERPDC_FCOERPDC_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_FCOERPDC_FCOERPDC_SHIFT)
-#define I40E_GL_RXERR1_L(_i) (0x00318000 + ((_i) * 8)) /* _i=0...143 */ /* Reset: CORER */
-#define I40E_GL_RXERR1_L_MAX_INDEX 143
-#define I40E_GL_RXERR1_L_FCOEDIFRC_SHIFT 0
-#define I40E_GL_RXERR1_L_FCOEDIFRC_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1_L_FCOEDIFRC_SHIFT)
+#define I40E_GL_RXERR1H(_i) (0x00318004 + ((_i) * 8)) /* _i=0...143 */ /* Reset: CORER */
+#define I40E_GL_RXERR1H_MAX_INDEX 143
+#define I40E_GL_RXERR1H_RXERR1H_SHIFT 0
+#define I40E_GL_RXERR1H_RXERR1H_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1H_RXERR1H_SHIFT)
+#define I40E_GL_RXERR1L(_i) (0x00318000 + ((_i) * 8)) /* _i=0...143 */ /* Reset: CORER */
+#define I40E_GL_RXERR1L_MAX_INDEX 143
+#define I40E_GL_RXERR1L_RXERR1L_SHIFT 0
+#define I40E_GL_RXERR1L_RXERR1L_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1L_RXERR1L_SHIFT)
#define I40E_GL_RXERR2_L(_i) (0x0031c000 + ((_i) * 8)) /* _i=0...143 */ /* Reset: CORER */
#define I40E_GL_RXERR2_L_MAX_INDEX 143
#define I40E_GL_RXERR2_L_FCOEDIXAC_SHIFT 0
@@ -3625,27 +3629,6 @@
#define I40E_GLHMC_PETIMEROBJSZ 0x000C2080 /* Reset: CORER */
#define I40E_GLHMC_PETIMEROBJSZ_PMPETIMEROBJSZ_SHIFT 0
#define I40E_GLHMC_PETIMEROBJSZ_PMPETIMEROBJSZ_MASK I40E_MASK(0xF, I40E_GLHMC_PETIMEROBJSZ_PMPETIMEROBJSZ_SHIFT)
-#define I40E_GLHMC_PEXFBASE(_i) (0x000C4e00 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
-#define I40E_GLHMC_PEXFBASE_MAX_INDEX 15
-#define I40E_GLHMC_PEXFBASE_FPMPEXFBASE_SHIFT 0
-#define I40E_GLHMC_PEXFBASE_FPMPEXFBASE_MASK I40E_MASK(0xFFFFFF, I40E_GLHMC_PEXFBASE_FPMPEXFBASE_SHIFT)
-#define I40E_GLHMC_PEXFCNT(_i) (0x000C4f00 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
-#define I40E_GLHMC_PEXFCNT_MAX_INDEX 15
-#define I40E_GLHMC_PEXFCNT_FPMPEXFCNT_SHIFT 0
-#define I40E_GLHMC_PEXFCNT_FPMPEXFCNT_MASK I40E_MASK(0x1FFFFFFF, I40E_GLHMC_PEXFCNT_FPMPEXFCNT_SHIFT)
-#define I40E_GLHMC_PEXFFLBASE(_i) (0x000C5000 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
-#define I40E_GLHMC_PEXFFLBASE_MAX_INDEX 15
-#define I40E_GLHMC_PEXFFLBASE_FPMPEXFFLBASE_SHIFT 0
-#define I40E_GLHMC_PEXFFLBASE_FPMPEXFFLBASE_MASK I40E_MASK(0xFFFFFF, I40E_GLHMC_PEXFFLBASE_FPMPEXFFLBASE_SHIFT)
-#define I40E_GLHMC_PEXFFLMAX 0x000C204c /* Reset: CORER */
-#define I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_SHIFT 0
-#define I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_MASK I40E_MASK(0x1FFFFFF, I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_SHIFT)
-#define I40E_GLHMC_PEXFMAX 0x000C2048 /* Reset: CORER */
-#define I40E_GLHMC_PEXFMAX_PMPEXFMAX_SHIFT 0
-#define I40E_GLHMC_PEXFMAX_PMPEXFMAX_MASK I40E_MASK(0x3FFFFFF, I40E_GLHMC_PEXFMAX_PMPEXFMAX_SHIFT)
-#define I40E_GLHMC_PEXFOBJSZ 0x000C2044 /* Reset: CORER */
-#define I40E_GLHMC_PEXFOBJSZ_PMPEXFOBJSZ_SHIFT 0
-#define I40E_GLHMC_PEXFOBJSZ_PMPEXFOBJSZ_MASK I40E_MASK(0xF, I40E_GLHMC_PEXFOBJSZ_PMPEXFOBJSZ_SHIFT)
#define I40E_GLHMC_PFPESDPART(_i) (0x000C0880 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
#define I40E_GLHMC_PFPESDPART_MAX_INDEX 15
#define I40E_GLHMC_PFPESDPART_PMSDBASE_SHIFT 0
@@ -3766,18 +3749,6 @@
#define I40E_GLHMC_VFPETIMERCNT_MAX_INDEX 31
#define I40E_GLHMC_VFPETIMERCNT_FPMPETIMERCNT_SHIFT 0
#define I40E_GLHMC_VFPETIMERCNT_FPMPETIMERCNT_MASK I40E_MASK(0x1FFFFFFF, I40E_GLHMC_VFPETIMERCNT_FPMPETIMERCNT_SHIFT)
-#define I40E_GLHMC_VFPEXFBASE(_i) (0x000Cce00 + ((_i) * 4)) /* _i=0...31 */ /* Reset: CORER */
-#define I40E_GLHMC_VFPEXFBASE_MAX_INDEX 31
-#define I40E_GLHMC_VFPEXFBASE_FPMPEXFBASE_SHIFT 0
-#define I40E_GLHMC_VFPEXFBASE_FPMPEXFBASE_MASK I40E_MASK(0xFFFFFF, I40E_GLHMC_VFPEXFBASE_FPMPEXFBASE_SHIFT)
-#define I40E_GLHMC_VFPEXFCNT(_i) (0x000Ccf00 + ((_i) * 4)) /* _i=0...31 */ /* Reset: CORER */
-#define I40E_GLHMC_VFPEXFCNT_MAX_INDEX 31
-#define I40E_GLHMC_VFPEXFCNT_FPMPEXFCNT_SHIFT 0
-#define I40E_GLHMC_VFPEXFCNT_FPMPEXFCNT_MASK I40E_MASK(0x1FFFFFFF, I40E_GLHMC_VFPEXFCNT_FPMPEXFCNT_SHIFT)
-#define I40E_GLHMC_VFPEXFFLBASE(_i) (0x000Cd000 + ((_i) * 4)) /* _i=0...31 */ /* Reset: CORER */
-#define I40E_GLHMC_VFPEXFFLBASE_MAX_INDEX 31
-#define I40E_GLHMC_VFPEXFFLBASE_FPMPEXFFLBASE_SHIFT 0
-#define I40E_GLHMC_VFPEXFFLBASE_FPMPEXFFLBASE_MASK I40E_MASK(0xFFFFFF, I40E_GLHMC_VFPEXFFLBASE_FPMPEXFFLBASE_SHIFT)
#define I40E_GLHMC_VFSDPART(_i) (0x000C8800 + ((_i) * 4)) /* _i=0...31 */ /* Reset: CORER */
#define I40E_GLHMC_VFSDPART_MAX_INDEX 31
#define I40E_GLHMC_VFSDPART_PMSDBASE_SHIFT 0
diff --git a/drivers/net/i40e/base/i40e_status.h b/drivers/net/i40e/base/i40e_status.h
index cd72169f14..89b05ede3e 100644
--- a/drivers/net/i40e/base/i40e_status.h
+++ b/drivers/net/i40e/base/i40e_status.h
@@ -19,7 +19,7 @@ enum i40e_status_code {
I40E_ERR_ADAPTER_STOPPED = -9,
I40E_ERR_INVALID_MAC_ADDR = -10,
I40E_ERR_DEVICE_NOT_SUPPORTED = -11,
- I40E_ERR_MASTER_REQUESTS_PENDING = -12,
+ I40E_ERR_PRIMARY_REQUESTS_PENDING = -12,
I40E_ERR_INVALID_LINK_SETTINGS = -13,
I40E_ERR_AUTONEG_NOT_COMPLETE = -14,
I40E_ERR_RESET_FAILED = -15,
diff --git a/drivers/net/i40e/base/i40e_type.h b/drivers/net/i40e/base/i40e_type.h
index f4a3d66759..3cfb0ca430 100644
--- a/drivers/net/i40e/base/i40e_type.h
+++ b/drivers/net/i40e/base/i40e_type.h
@@ -1428,6 +1428,7 @@ struct i40e_eth_stats {
u64 tx_broadcast; /* bptc */
u64 tx_discards; /* tdpc */
u64 tx_errors; /* tepc */
+ u64 rx_discards_other; /* rxerr1 */
};
/* Statistics collected per VEB per TC */
@@ -1922,6 +1923,10 @@ struct i40e_lldp_variables {
#define I40E_PFQF_CTL_0_HASHLUTSIZE_512 0x00010000
/* INPUT SET MASK for RSS, flow director, and flexible payload */
+#define I40E_X722_L3_SRC_SHIFT 49
+#define I40E_X722_L3_SRC_MASK (0x3ULL << I40E_X722_L3_SRC_SHIFT)
+#define I40E_X722_L3_DST_SHIFT 41
+#define I40E_X722_L3_DST_MASK (0x3ULL << I40E_X722_L3_DST_SHIFT)
#define I40E_L3_SRC_SHIFT 47
#define I40E_L3_SRC_MASK (0x3ULL << I40E_L3_SRC_SHIFT)
#define I40E_L3_V6_SRC_SHIFT 43
@@ -1990,6 +1995,8 @@ struct i40e_metadata_segment {
#define I40E_DDP_TRACKID_INVALID 0xFFFFFFFF
#define I40E_DDP_TRACKID_GRP_MSK 0x00FF0000
#define I40E_DDP_TRACKID_GRP_COMP_ALL 0xFF
+#define I40E_DDP_TRACKID_PKGTYPE_MSK 0xFF000000
+#define I40E_DDP_TRACKID_PKGTYPE_RDONLY 0
u32 track_id;
char name[I40E_DDP_NAME_SIZE];
};
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index c0bfff43ee..14c46cc2b1 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -386,6 +386,7 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev,
struct rte_ether_addr *mac_addr);
static int i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
+static void i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size);
static int i40e_ethertype_filter_convert(
const struct rte_eth_ethertype_filter *input,
@@ -1709,11 +1710,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
*/
i40e_add_tx_flow_control_drop_filter(pf);
- /* Set the max frame size to 0x2600 by default,
- * in case other drivers changed the default value.
- */
- i40e_aq_set_mac_config(hw, I40E_FRAME_SIZE_MAX, TRUE, false, 0, NULL);
-
/* initialize RSS rule list */
TAILQ_INIT(&pf->rss_config_list);
@@ -2364,6 +2360,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
uint32_t intr_vector = 0;
struct i40e_vsi *vsi;
uint16_t nb_rxq, nb_txq;
+ uint16_t max_frame_size;
hw->adapter_stopped = 0;
@@ -2502,6 +2499,9 @@ i40e_dev_start(struct rte_eth_dev *dev)
"please call hierarchy_commit() "
"before starting the port");
+ max_frame_size = dev->data->mtu + I40E_ETH_OVERHEAD;
+ i40e_set_mac_max_frame(dev, max_frame_size);
+
return I40E_SUCCESS;
tx_err:
@@ -2848,6 +2848,9 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev)
return i40e_phy_conf_link(hw, abilities, speed, false);
}
+#define CHECK_INTERVAL 100 /* 100ms */
+#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */
+
static __rte_always_inline void
update_link_reg(struct i40e_hw *hw, struct rte_eth_link *link)
{
@@ -2914,8 +2917,6 @@ static __rte_always_inline void
update_link_aq(struct i40e_hw *hw, struct rte_eth_link *link,
bool enable_lse, int wait_to_complete)
{
-#define CHECK_INTERVAL 100 /* 100ms */
-#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */
uint32_t rep_cnt = MAX_REPEAT_TIME;
struct i40e_link_status link_status;
int status;
@@ -3202,7 +3203,7 @@ i40e_read_stats_registers(struct i40e_pf *pf, struct i40e_hw *hw)
&os->eth.rx_unknown_protocol,
&ns->eth.rx_unknown_protocol);
i40e_stat_update_48(hw, I40E_GL_RXERR1_H(hw->pf_id + I40E_MAX_VF),
- I40E_GL_RXERR1_L(hw->pf_id + I40E_MAX_VF),
+ I40E_GL_RXERR1L(hw->pf_id + I40E_MAX_VF),
pf->offset_loaded, &pf->rx_err1_offset,
&pf->rx_err1);
i40e_stat_update_48_in_64(hw, I40E_GLPRT_GOTCH(hw->port),
@@ -6719,6 +6720,7 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev)
if (!ret)
rte_eth_dev_callback_process(dev,
RTE_ETH_EVENT_INTR_LSC, NULL);
+
break;
default:
PMD_DRV_LOG(DEBUG, "Request %u is not supported yet",
@@ -12103,6 +12105,31 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
return ret;
}
+static void
+i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size)
+{
+ struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+ uint32_t rep_cnt = MAX_REPEAT_TIME;
+ struct rte_eth_link link;
+ enum i40e_status_code status;
+
+ do {
+ update_link_reg(hw, &link);
+ if (link.link_status)
+ break;
+
+ rte_delay_ms(CHECK_INTERVAL);
+ } while (--rep_cnt);
+
+ if (link.link_status) {
+ status = i40e_aq_set_mac_config(hw, size, TRUE, 0, false, NULL);
+ if (status != I40E_SUCCESS)
+ PMD_DRV_LOG(ERR, "Failed to set max frame size at port level");
+ } else {
+ PMD_DRV_LOG(ERR, "Set max frame size at port level not applicable on link down");
+ }
+}
+
RTE_LOG_REGISTER_SUFFIX(i40e_logtype_init, init, NOTICE);
RTE_LOG_REGISTER_SUFFIX(i40e_logtype_driver, driver, NOTICE);
#ifdef RTE_ETHDEV_DEBUG_RX
diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
index ccb3924a5f..43b0fcea6b 100644
--- a/drivers/net/i40e/i40e_pf.c
+++ b/drivers/net/i40e/i40e_pf.c
@@ -597,14 +597,14 @@ i40e_pf_config_irq_link_list(struct i40e_pf_vf *vf,
tempmap = vvm->rxq_map;
for (i = 0; i < sizeof(vvm->rxq_map) * BITS_PER_CHAR; i++) {
if (tempmap & 0x1)
- linklistmap |= (1 << (2 * i));
+ linklistmap |= RTE_BIT64(2 * i);
tempmap >>= 1;
}
tempmap = vvm->txq_map;
for (i = 0; i < sizeof(vvm->txq_map) * BITS_PER_CHAR; i++) {
if (tempmap & 0x1)
- linklistmap |= (1 << (2 * i + 1));
+ linklistmap |= RTE_BIT64(2 * i + 1);
tempmap >>= 1;
}
diff --git a/drivers/net/i40e/i40e_regs.h b/drivers/net/i40e/i40e_regs.h
index b19bb1d5a5..cf62c9dfb7 100644
--- a/drivers/net/i40e/i40e_regs.h
+++ b/drivers/net/i40e/i40e_regs.h
@@ -586,9 +586,6 @@ static const struct i40e_reg_info i40e_regs_others[] = {
{I40E_GLHMC_PEARPMAX, 0, 0, 0, 0, "GLHMC_PEARPMAX"},
{I40E_GLHMC_PEMROBJSZ, 0, 0, 0, 0, "GLHMC_PEMROBJSZ"},
{I40E_GLHMC_PEMRMAX, 0, 0, 0, 0, "GLHMC_PEMRMAX"},
- {I40E_GLHMC_PEXFOBJSZ, 0, 0, 0, 0, "GLHMC_PEXFOBJSZ"},
- {I40E_GLHMC_PEXFMAX, 0, 0, 0, 0, "GLHMC_PEXFMAX"},
- {I40E_GLHMC_PEXFFLMAX, 0, 0, 0, 0, "GLHMC_PEXFFLMAX"},
{I40E_GLHMC_PEQ1OBJSZ, 0, 0, 0, 0, "GLHMC_PEQ1OBJSZ"},
{I40E_GLHMC_PEQ1MAX, 0, 0, 0, 0, "GLHMC_PEQ1MAX"},
{I40E_GLHMC_PEQ1FLMAX, 0, 0, 0, 0, "GLHMC_PEQ1FLMAX"},
@@ -616,9 +613,6 @@ static const struct i40e_reg_info i40e_regs_others[] = {
{I40E_GLHMC_APBVTINUSEBASE(0), 15, 4, 0, 0, "GLHMC_APBVTINUSEBASE"},
{I40E_GLHMC_PEMRBASE(0), 15, 4, 0, 0, "GLHMC_PEMRBASE"},
{I40E_GLHMC_PEMRCNT(0), 15, 4, 0, 0, "GLHMC_PEMRCNT"},
- {I40E_GLHMC_PEXFBASE(0), 15, 4, 0, 0, "GLHMC_PEXFBASE"},
- {I40E_GLHMC_PEXFCNT(0), 15, 4, 0, 0, "GLHMC_PEXFCNT"},
- {I40E_GLHMC_PEXFFLBASE(0), 15, 4, 0, 0, "GLHMC_PEXFFLBASE"},
{I40E_GLHMC_PEQ1BASE(0), 15, 4, 0, 0, "GLHMC_PEQ1BASE"},
{I40E_GLHMC_PEQ1CNT(0), 15, 4, 0, 0, "GLHMC_PEQ1CNT"},
{I40E_GLHMC_PEQ1FLBASE(0), 15, 4, 0, 0, "GLHMC_PEQ1FLBASE"},
@@ -653,9 +647,6 @@ static const struct i40e_reg_info i40e_regs_others[] = {
{I40E_GLHMC_VFAPBVTINUSEBASE(0), 31, 4, 0, 0, "GLHMC_VFAPBVTINUSEBASE"},
{I40E_GLHMC_VFPEMRBASE(0), 31, 4, 0, 0, "GLHMC_VFPEMRBASE"},
{I40E_GLHMC_VFPEMRCNT(0), 31, 4, 0, 0, "GLHMC_VFPEMRCNT"},
- {I40E_GLHMC_VFPEXFBASE(0), 31, 4, 0, 0, "GLHMC_VFPEXFBASE"},
- {I40E_GLHMC_VFPEXFCNT(0), 31, 4, 0, 0, "GLHMC_VFPEXFCNT"},
- {I40E_GLHMC_VFPEXFFLBASE(0), 31, 4, 0, 0, "GLHMC_VFPEXFFLBASE"},
{I40E_GLHMC_VFPEQ1BASE(0), 31, 4, 0, 0, "GLHMC_VFPEQ1BASE"},
{I40E_GLHMC_VFPEQ1CNT(0), 31, 4, 0, 0, "GLHMC_VFPEQ1CNT"},
{I40E_GLHMC_VFPEQ1FLBASE(0), 31, 4, 0, 0, "GLHMC_VFPEQ1FLBASE"},
@@ -896,7 +887,7 @@ static const struct i40e_reg_info i40e_regs_others[] = {
{I40E_GL_FCOEDDPC(0), 143, 8, 0, 0, "GL_FCOEDDPC"},
{I40E_GL_FCOECRC(0), 143, 8, 0, 0, "GL_FCOECRC"},
{I40E_GL_FCOEPRC(0), 143, 8, 0, 0, "GL_FCOEPRC"},
- {I40E_GL_RXERR1_L(0), 143, 8, 0, 0, "GL_RXERR1_L"},
+ {I40E_GL_RXERR1L(0), 143, 8, 0, 0, "GL_RXERR1_L"},
{I40E_GL_FCOEDIFEC(0), 143, 8, 0, 0, "GL_FCOEDIFEC"},
{I40E_GL_RXERR2_L(0), 143, 8, 0, 0, "GL_RXERR2_L"},
{I40E_GL_FCOEDWRCL(0), 143, 8, 0, 0, "GL_FCOEDWRCL"},
diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h b/drivers/net/i40e/i40e_rxtx_vec_common.h
index f9a7f46550..959832ed6a 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_common.h
+++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
@@ -103,7 +103,7 @@ i40e_tx_free_bufs(struct i40e_tx_queue *txq)
if (txq->offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) {
for (i = 0; i < n; i++) {
free[i] = txep[i].mbuf;
- txep[i].mbuf = NULL;
+ /* no need to reset txep[i].mbuf in vector path */
}
rte_mempool_put_bulk(free[0]->pool, (void **)free, n);
goto done;
diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 377d7bc7a6..502b952837 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -2278,6 +2278,9 @@ iavf_init_vf(struct rte_eth_dev *dev)
}
}
+ if (vf->vsi_res->num_queue_pairs > IAVF_MAX_NUM_QUEUES_DFLT)
+ vf->lv_enabled = true;
+
if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC) {
if (iavf_get_supported_rxdid(adapter) != 0) {
PMD_INIT_LOG(ERR, "failed to do get supported rxdid");
diff --git a/drivers/net/iavf/iavf_ipsec_crypto.c b/drivers/net/iavf/iavf_ipsec_crypto.c
index 884169e061..144d8cd520 100644
--- a/drivers/net/iavf/iavf_ipsec_crypto.c
+++ b/drivers/net/iavf/iavf_ipsec_crypto.c
@@ -614,7 +614,7 @@ set_session_parameter(struct iavf_security_ctx *iavf_sctx,
if (conf->crypto_xform->auth.algo == RTE_CRYPTO_AUTH_AES_GMAC) {
sess->block_sz = get_auth_blocksize(iavf_sctx,
conf->crypto_xform->auth.algo);
- sess->iv_sz = conf->crypto_xform->auth.iv.length;
+ sess->iv_sz = sizeof(uint64_t); /* iv len inc. salt */
sess->icv_sz = conf->crypto_xform->auth.digest_length;
} else {
sess->block_sz = get_cipher_blocksize(iavf_sctx,
@@ -736,7 +736,9 @@ iavf_ipsec_crypto_inbound_security_policy_add(struct iavf_adapter *adapter,
uint8_t is_v4,
rte_be32_t v4_dst_addr,
uint8_t *v6_dst_addr,
- uint8_t drop)
+ uint8_t drop,
+ bool is_udp,
+ uint16_t udp_port)
{
struct inline_ipsec_msg *request = NULL, *response = NULL;
size_t request_len, response_len;
@@ -781,6 +783,8 @@ iavf_ipsec_crypto_inbound_security_policy_add(struct iavf_adapter *adapter,
/** Traffic Class/Congestion Domain currently not support */
request->ipsec_data.sp_cfg->set_tc = 0;
request->ipsec_data.sp_cfg->cgd = 0;
+ request->ipsec_data.sp_cfg->is_udp = is_udp;
+ request->ipsec_data.sp_cfg->udp_port = htons(udp_port);
response_len = sizeof(struct inline_ipsec_msg) +
sizeof(struct virtchnl_ipsec_sp_cfg_resp);
@@ -1352,6 +1356,8 @@ iavf_ipsec_crypto_set_security_capabililites(struct iavf_security_ctx
capabilities = rte_zmalloc("crypto_cap",
sizeof(struct rte_cryptodev_capabilities) *
(number_of_capabilities + 1), 0);
+ if (!capabilities)
+ return -ENOMEM;
capabilities[number_of_capabilities].op = RTE_CRYPTO_OP_TYPE_UNDEFINED;
/**
@@ -1551,8 +1557,8 @@ iavf_security_ctx_destroy(struct iavf_adapter *adapter)
rte_free(iavf_sctx);
rte_free(sctx);
- iavf_sctx = NULL;
- sctx = NULL;
+ adapter->security_ctx = NULL;
+ adapter->vf.eth_dev->security_ctx = NULL;
return 0;
}
@@ -1623,6 +1629,7 @@ struct iavf_ipsec_flow_item {
struct rte_ipv6_hdr ipv6_hdr;
};
struct rte_udp_hdr udp_hdr;
+ uint8_t is_udp;
};
static void
@@ -1735,6 +1742,7 @@ iavf_ipsec_flow_item_parse(struct rte_eth_dev *ethdev,
parse_udp_item((const struct rte_flow_item_udp *)
pattern[2].spec,
&ipsec_flow->udp_hdr);
+ ipsec_flow->is_udp = true;
ipsec_flow->spi =
((const struct rte_flow_item_esp *)
pattern[3].spec)->hdr.spi;
@@ -1804,7 +1812,9 @@ iavf_ipsec_flow_create(struct iavf_adapter *ad,
1,
ipsec_flow->ipv4_hdr.dst_addr,
NULL,
- 0);
+ 0,
+ ipsec_flow->is_udp,
+ ipsec_flow->udp_hdr.dst_port);
} else {
ipsec_flow->id =
iavf_ipsec_crypto_inbound_security_policy_add(ad,
@@ -1812,7 +1822,9 @@ iavf_ipsec_flow_create(struct iavf_adapter *ad,
0,
0,
ipsec_flow->ipv6_hdr.dst_addr,
- 0);
+ 0,
+ ipsec_flow->is_udp,
+ ipsec_flow->udp_hdr.dst_port);
}
if (ipsec_flow->id < 1) {
diff --git a/drivers/net/iavf/iavf_ipsec_crypto.h b/drivers/net/iavf/iavf_ipsec_crypto.h
index 4e4c8798ec..d9652edcab 100644
--- a/drivers/net/iavf/iavf_ipsec_crypto.h
+++ b/drivers/net/iavf/iavf_ipsec_crypto.h
@@ -145,7 +145,9 @@ iavf_ipsec_crypto_inbound_security_policy_add(struct iavf_adapter *adapter,
uint8_t is_v4,
rte_be32_t v4_dst_addr,
uint8_t *v6_dst_addr,
- uint8_t drop);
+ uint8_t drop,
+ bool is_udp,
+ uint16_t udp_port);
/**
* Delete inbound security policy rule from hardware
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index 154472c50f..bb6d4c6f50 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -476,54 +476,59 @@ iavf_rxd_to_pkt_fields_by_comms_aux_v2(struct iavf_rx_queue *rxq,
#endif
}
+static const
+iavf_rxd_to_pkt_fields_t rxd_to_pkt_fields_ops[IAVF_RXDID_LAST + 1] = {
+ [IAVF_RXDID_LEGACY_0] = iavf_rxd_to_pkt_fields_by_comms_ovs,
+ [IAVF_RXDID_LEGACY_1] = iavf_rxd_to_pkt_fields_by_comms_ovs,
+ [IAVF_RXDID_COMMS_AUX_VLAN] = iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_IPV4] = iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_IPV6] = iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_IPV6_FLOW] =
+ iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_TCP] = iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_IP_OFFSET] =
+ iavf_rxd_to_pkt_fields_by_comms_aux_v2,
+ [IAVF_RXDID_COMMS_IPSEC_CRYPTO] =
+ iavf_rxd_to_pkt_fields_by_comms_aux_v2,
+ [IAVF_RXDID_COMMS_OVS_1] = iavf_rxd_to_pkt_fields_by_comms_ovs,
+};
+
static void
iavf_select_rxd_to_pkt_fields_handler(struct iavf_rx_queue *rxq, uint32_t rxdid)
{
+ rxq->rxdid = rxdid;
+
switch (rxdid) {
case IAVF_RXDID_COMMS_AUX_VLAN:
rxq->xtr_ol_flag = rte_pmd_ifd_dynflag_proto_xtr_vlan_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_IPV4:
rxq->xtr_ol_flag = rte_pmd_ifd_dynflag_proto_xtr_ipv4_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_IPV6:
rxq->xtr_ol_flag = rte_pmd_ifd_dynflag_proto_xtr_ipv6_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_IPV6_FLOW:
rxq->xtr_ol_flag =
rte_pmd_ifd_dynflag_proto_xtr_ipv6_flow_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_TCP:
rxq->xtr_ol_flag = rte_pmd_ifd_dynflag_proto_xtr_tcp_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_IP_OFFSET:
rxq->xtr_ol_flag =
rte_pmd_ifd_dynflag_proto_xtr_ip_offset_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v2;
break;
case IAVF_RXDID_COMMS_IPSEC_CRYPTO:
rxq->xtr_ol_flag =
rte_pmd_ifd_dynflag_proto_xtr_ipsec_crypto_said_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v2;
break;
case IAVF_RXDID_COMMS_OVS_1:
- rxq->rxd_to_pkt_fields = iavf_rxd_to_pkt_fields_by_comms_ovs;
+ case IAVF_RXDID_LEGACY_0:
+ case IAVF_RXDID_LEGACY_1:
break;
default:
- /* update this according to the RXDID for FLEX_DESC_NONE */
- rxq->rxd_to_pkt_fields = iavf_rxd_to_pkt_fields_by_comms_ovs;
+ rxq->rxdid = IAVF_RXDID_COMMS_OVS_1;
break;
}
@@ -1484,7 +1489,7 @@ iavf_recv_pkts_flex_rxd(void *rx_queue,
iavf_flex_rxd_to_vlan_tci(rxm, &rxd);
iavf_flex_rxd_to_ipsec_crypto_status(rxm, &rxd,
&rxq->stats.ipsec_crypto);
- rxq->rxd_to_pkt_fields(rxq, rxm, &rxd);
+ rxd_to_pkt_fields_ops[rxq->rxdid](rxq, rxm, &rxd);
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0);
rxm->ol_flags |= pkt_flags;
@@ -1628,7 +1633,7 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts,
iavf_flex_rxd_to_vlan_tci(first_seg, &rxd);
iavf_flex_rxd_to_ipsec_crypto_status(first_seg, &rxd,
&rxq->stats.ipsec_crypto);
- rxq->rxd_to_pkt_fields(rxq, first_seg, &rxd);
+ rxd_to_pkt_fields_ops[rxq->rxdid](rxq, first_seg, &rxd);
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0);
first_seg->ol_flags |= pkt_flags;
@@ -1819,7 +1824,7 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq)
struct rte_mbuf *mb;
uint16_t stat_err0;
uint16_t pkt_len;
- int32_t s[IAVF_LOOK_AHEAD], nb_dd;
+ int32_t s[IAVF_LOOK_AHEAD], var, nb_dd;
int32_t i, j, nb_rx = 0;
uint64_t pkt_flags;
const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl;
@@ -1844,9 +1849,27 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq)
rte_smp_rmb();
- /* Compute how many status bits were set */
- for (j = 0, nb_dd = 0; j < IAVF_LOOK_AHEAD; j++)
- nb_dd += s[j] & (1 << IAVF_RX_FLEX_DESC_STATUS0_DD_S);
+ /* Compute how many contiguous DD bits were set */
+ for (j = 0, nb_dd = 0; j < IAVF_LOOK_AHEAD; j++) {
+ var = s[j] & (1 << IAVF_RX_FLEX_DESC_STATUS0_DD_S);
+#ifdef RTE_ARCH_ARM
+ /* For Arm platforms, count only contiguous descriptors
+ * whose DD bit is set to 1. On Arm platforms, reads of
+ * descriptors can be reordered. Since the CPU may
+ * be reading the descriptors as the NIC updates them
+ * in memory, it is possbile that the DD bit for a
+ * descriptor earlier in the queue is read as not set
+ * while the DD bit for a descriptor later in the queue
+ * is read as set.
+ */
+ if (var)
+ nb_dd += 1;
+ else
+ break;
+#else
+ nb_dd += var;
+#endif
+ }
nb_rx += nb_dd;
@@ -1868,7 +1891,7 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq)
iavf_flex_rxd_to_vlan_tci(mb, &rxdp[j]);
iavf_flex_rxd_to_ipsec_crypto_status(mb, &rxdp[j],
&rxq->stats.ipsec_crypto);
- rxq->rxd_to_pkt_fields(rxq, mb, &rxdp[j]);
+ rxd_to_pkt_fields_ops[rxq->rxdid](rxq, mb, &rxdp[j]);
stat_err0 = rte_le_to_cpu_16(rxdp[j].wb.status_error0);
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(stat_err0);
@@ -1898,7 +1921,7 @@ iavf_rx_scan_hw_ring(struct iavf_rx_queue *rxq)
uint16_t pkt_len;
uint64_t qword1;
uint32_t rx_status;
- int32_t s[IAVF_LOOK_AHEAD], nb_dd;
+ int32_t s[IAVF_LOOK_AHEAD], var, nb_dd;
int32_t i, j, nb_rx = 0;
uint64_t pkt_flags;
const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl;
@@ -1929,9 +1952,27 @@ iavf_rx_scan_hw_ring(struct iavf_rx_queue *rxq)
rte_smp_rmb();
- /* Compute how many status bits were set */
- for (j = 0, nb_dd = 0; j < IAVF_LOOK_AHEAD; j++)
- nb_dd += s[j] & (1 << IAVF_RX_DESC_STATUS_DD_SHIFT);
+ /* Compute how many contiguous DD bits were set */
+ for (j = 0, nb_dd = 0; j < IAVF_LOOK_AHEAD; j++) {
+ var = s[j] & (1 << IAVF_RX_DESC_STATUS_DD_SHIFT);
+#ifdef RTE_ARCH_ARM
+ /* For Arm platforms, count only contiguous descriptors
+ * whose DD bit is set to 1. On Arm platforms, reads of
+ * descriptors can be reordered. Since the CPU may
+ * be reading the descriptors as the NIC updates them
+ * in memory, it is possbile that the DD bit for a
+ * descriptor earlier in the queue is read as not set
+ * while the DD bit for a descriptor later in the queue
+ * is read as set.
+ */
+ if (var)
+ nb_dd += 1;
+ else
+ break;
+#else
+ nb_dd += var;
+#endif
+ }
nb_rx += nb_dd;
@@ -2439,6 +2480,14 @@ iavf_fill_data_desc(volatile struct iavf_tx_desc *desc,
if (m->ol_flags & RTE_MBUF_F_TX_SEC_OFFLOAD)
hdrlen += ipseclen;
bufsz = hdrlen + tlen;
+ } else if ((m->ol_flags & RTE_MBUF_F_TX_SEC_OFFLOAD) &&
+ (m->ol_flags & (RTE_MBUF_F_TX_TCP_SEG |
+ RTE_MBUF_F_TX_UDP_SEG))) {
+ hdrlen += m->outer_l3_len + m->l3_len + ipseclen;
+ if (m->ol_flags & RTE_MBUF_F_TX_L4_MASK)
+ hdrlen += m->l4_len;
+ bufsz = hdrlen + tlen;
+
} else {
bufsz = m->data_len;
}
diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
index b610176b30..503bed9b82 100644
--- a/drivers/net/iavf/iavf_rxtx.h
+++ b/drivers/net/iavf/iavf_rxtx.h
@@ -216,10 +216,8 @@ struct iavf_rx_queue {
#define IAVF_RX_FLAGS_VLAN_TAG_LOC_L2TAG2_2 BIT(1)
uint8_t proto_xtr; /* protocol extraction type */
uint64_t xtr_ol_flag;
- /* flexible descriptor metadata extraction offload flag */
- iavf_rxd_to_pkt_fields_t rxd_to_pkt_fields;
- /* handle flexible descriptor by RXDID */
struct iavf_rx_queue_stats stats;
+ /* flexible descriptor metadata extraction offload flag */
uint64_t offloads;
};
@@ -415,45 +413,6 @@ enum iavf_rxdid {
IAVF_RXDID_LAST = 63,
};
-enum iavf_rx_flex_desc_status_error_0_bits {
- /* Note: These are predefined bit offsets */
- IAVF_RX_FLEX_DESC_STATUS0_DD_S = 0,
- IAVF_RX_FLEX_DESC_STATUS0_EOF_S,
- IAVF_RX_FLEX_DESC_STATUS0_HBO_S,
- IAVF_RX_FLEX_DESC_STATUS0_L3L4P_S,
- IAVF_RX_FLEX_DESC_STATUS0_XSUM_IPE_S,
- IAVF_RX_FLEX_DESC_STATUS0_XSUM_L4E_S,
- IAVF_RX_FLEX_DESC_STATUS0_XSUM_EIPE_S,
- IAVF_RX_FLEX_DESC_STATUS0_XSUM_EUDPE_S,
- IAVF_RX_FLEX_DESC_STATUS0_LPBK_S,
- IAVF_RX_FLEX_DESC_STATUS0_IPV6EXADD_S,
- IAVF_RX_FLEX_DESC_STATUS0_RXE_S,
- IAVF_RX_FLEX_DESC_STATUS0_CRCP_S,
- IAVF_RX_FLEX_DESC_STATUS0_RSS_VALID_S,
- IAVF_RX_FLEX_DESC_STATUS0_L2TAG1P_S,
- IAVF_RX_FLEX_DESC_STATUS0_XTRMD0_VALID_S,
- IAVF_RX_FLEX_DESC_STATUS0_XTRMD1_VALID_S,
- IAVF_RX_FLEX_DESC_STATUS0_LAST /* this entry must be last!!! */
-};
-
-enum iavf_rx_flex_desc_status_error_1_bits {
- /* Note: These are predefined bit offsets */
- /* Bits 3:0 are reserved for inline ipsec status */
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_0 = 0,
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_1,
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_2,
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_3,
- IAVF_RX_FLEX_DESC_STATUS1_NAT_S,
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_PROCESSED,
- /* [10:6] reserved */
- IAVF_RX_FLEX_DESC_STATUS1_L2TAG2P_S = 11,
- IAVF_RX_FLEX_DESC_STATUS1_XTRMD2_VALID_S = 12,
- IAVF_RX_FLEX_DESC_STATUS1_XTRMD3_VALID_S = 13,
- IAVF_RX_FLEX_DESC_STATUS1_XTRMD4_VALID_S = 14,
- IAVF_RX_FLEX_DESC_STATUS1_XTRMD5_VALID_S = 15,
- IAVF_RX_FLEX_DESC_STATUS1_LAST /* this entry must be last!!! */
-};
-
#define IAVF_RX_FLEX_DESC_IPSEC_CRYPTO_STATUS_MASK ( \
BIT(IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_0) | \
BIT(IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_1) | \
diff --git a/drivers/net/iavf/iavf_rxtx_vec_avx2.c b/drivers/net/iavf/iavf_rxtx_vec_avx2.c
index b6ef1aea77..d6243b96e2 100644
--- a/drivers/net/iavf/iavf_rxtx_vec_avx2.c
+++ b/drivers/net/iavf/iavf_rxtx_vec_avx2.c
@@ -1450,9 +1450,6 @@ iavf_xmit_fixed_burst_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
uint64_t flags = IAVF_TX_DESC_CMD_EOP | IAVF_TX_DESC_CMD_ICRC;
uint64_t rs = IAVF_TX_DESC_CMD_RS | flags;
- /* cross rx_thresh boundary is not allowed */
- nb_pkts = RTE_MIN(nb_pkts, txq->rs_thresh);
-
if (txq->nb_free < txq->free_thresh)
iavf_tx_free_bufs(txq);
@@ -1516,6 +1513,7 @@ iavf_xmit_pkts_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
while (nb_pkts) {
uint16_t ret, num;
+ /* cross rs_thresh boundary is not allowed */
num = (uint16_t)RTE_MIN(nb_pkts, txq->rs_thresh);
ret = iavf_xmit_fixed_burst_vec_avx2(tx_queue, &tx_pkts[nb_tx],
num);
diff --git a/drivers/net/iavf/iavf_rxtx_vec_avx512.c b/drivers/net/iavf/iavf_rxtx_vec_avx512.c
index 6ff38ac368..7319d4cb65 100644
--- a/drivers/net/iavf/iavf_rxtx_vec_avx512.c
+++ b/drivers/net/iavf/iavf_rxtx_vec_avx512.c
@@ -1907,9 +1907,6 @@ iavf_xmit_fixed_burst_vec_avx512(void *tx_queue, struct rte_mbuf **tx_pkts,
uint64_t flags = IAVF_TX_DESC_CMD_EOP | IAVF_TX_DESC_CMD_ICRC;
uint64_t rs = IAVF_TX_DESC_CMD_RS | flags;
- /* cross rx_thresh boundary is not allowed */
- nb_pkts = RTE_MIN(nb_pkts, txq->rs_thresh);
-
if (txq->nb_free < txq->free_thresh)
iavf_tx_free_bufs_avx512(txq);
@@ -1975,6 +1972,7 @@ iavf_xmit_pkts_vec_avx512_cmn(void *tx_queue, struct rte_mbuf **tx_pkts,
while (nb_pkts) {
uint16_t ret, num;
+ /* cross rs_thresh boundary is not allowed */
num = (uint16_t)RTE_MIN(nb_pkts, txq->rs_thresh);
ret = iavf_xmit_fixed_burst_vec_avx512(tx_queue, &tx_pkts[nb_tx],
num, offload);
diff --git a/drivers/net/iavf/iavf_rxtx_vec_sse.c b/drivers/net/iavf/iavf_rxtx_vec_sse.c
index 1bac59bf0e..9cbdcbd43b 100644
--- a/drivers/net/iavf/iavf_rxtx_vec_sse.c
+++ b/drivers/net/iavf/iavf_rxtx_vec_sse.c
@@ -1120,9 +1120,6 @@ iavf_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
uint64_t rs = IAVF_TX_DESC_CMD_RS | flags;
int i;
- /* cross rx_thresh boundary is not allowed */
- nb_pkts = RTE_MIN(nb_pkts, txq->rs_thresh);
-
if (txq->nb_free < txq->free_thresh)
iavf_tx_free_bufs(txq);
@@ -1189,6 +1186,7 @@ iavf_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
while (nb_pkts) {
uint16_t ret, num;
+ /* cross rs_thresh boundary is not allowed */
num = (uint16_t)RTE_MIN(nb_pkts, txq->rs_thresh);
ret = iavf_xmit_fixed_burst_vec(tx_queue, &tx_pkts[nb_tx], num);
nb_tx += ret;
diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c
index 145b059837..b9871e9f4b 100644
--- a/drivers/net/iavf/iavf_vchnl.c
+++ b/drivers/net/iavf/iavf_vchnl.c
@@ -165,7 +165,7 @@ iavf_execute_vf_cmd(struct iavf_adapter *adapter, struct iavf_cmd_info *args,
return -1;
}
- ret = iavf_aq_send_msg_to_pf(hw, args->ops, IAVF_SUCCESS,
+ ret = iavf_aq_send_msg_to_pf(hw, args->ops, VIRTCHNL_STATUS_SUCCESS,
args->in_args, args->in_args_size, NULL);
if (ret) {
PMD_DRV_LOG(ERR, "fail to send cmd %d", args->ops);
@@ -502,7 +502,7 @@ iavf_get_vf_resource(struct iavf_adapter *adapter)
VIRTCHNL_VF_OFFLOAD_VLAN_V2 |
VIRTCHNL_VF_LARGE_NUM_QPAIRS |
VIRTCHNL_VF_OFFLOAD_QOS |
-+ VIRTCHNL_VF_OFFLOAD_INLINE_IPSEC_CRYPTO;
+ VIRTCHNL_VF_OFFLOAD_INLINE_IPSEC_CRYPTO;
args.in_args = (uint8_t *)∩︀
args.in_args_size = sizeof(caps);
diff --git a/drivers/net/ice/ice_dcf.c b/drivers/net/ice/ice_dcf.c
index cca1d7bf46..94099b0685 100644
--- a/drivers/net/ice/ice_dcf.c
+++ b/drivers/net/ice/ice_dcf.c
@@ -40,7 +40,7 @@ static __rte_always_inline int
ice_dcf_send_cmd_req_no_irq(struct ice_dcf_hw *hw, enum virtchnl_ops op,
uint8_t *req_msg, uint16_t req_msglen)
{
- return iavf_aq_send_msg_to_pf(&hw->avf, op, IAVF_SUCCESS,
+ return iavf_aq_send_msg_to_pf(&hw->avf, op, VIRTCHNL_STATUS_SUCCESS,
req_msg, req_msglen, NULL);
}
@@ -105,7 +105,7 @@ static __rte_always_inline int
ice_dcf_vc_cmd_send(struct ice_dcf_hw *hw, struct dcf_virtchnl_cmd *cmd)
{
return iavf_aq_send_msg_to_pf(&hw->avf,
- cmd->v_op, IAVF_SUCCESS,
+ cmd->v_op, VIRTCHNL_STATUS_SUCCESS,
cmd->req_msg, cmd->req_msglen, NULL);
}
--
2.27.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* [RFC v2] net/i40e: backport i40e fixes and share code to 21.11
2022-03-28 8:05 [RFC] net/i40e: backport i40e fixes and share code to 21.11 Steve Yang
@ 2022-04-07 6:14 ` Steve Yang
0 siblings, 0 replies; 2+ messages in thread
From: Steve Yang @ 2022-04-07 6:14 UTC (permalink / raw)
To: dev; +Cc: qiming.yang, Steve Yang
Backport all the i40e share code to 21.11 based on cid-i40e.2022.03.08.
Backport all the iavf share code to 21.11 based on cid-avf.2022.03.08.
Backport all DPDK bug fixes of i40e and iavf to 21.11 from 22.03.
Signed-off-by: Steve Yang <stevex.yang@intel.com>
---
v2: add new device id for i40e.
---
drivers/common/iavf/README | 2 +-
drivers/common/iavf/iavf_common.c | 861 +++++++++++++++++++-
drivers/common/iavf/iavf_prototype.h | 4 +-
drivers/common/iavf/iavf_status.h | 2 +-
drivers/common/iavf/iavf_type.h | 87 +-
drivers/common/iavf/virtchnl.h | 36 +-
drivers/common/iavf/virtchnl_inline_ipsec.h | 9 +
drivers/net/bonding/rte_eth_bond_pmd.c | 16 +-
drivers/net/i40e/base/README | 2 +-
drivers/net/i40e/base/i40e_common.c | 46 +-
drivers/net/i40e/base/i40e_devids.h | 2 +
drivers/net/i40e/base/i40e_prototype.h | 1 +
drivers/net/i40e/base/i40e_register.h | 45 +-
drivers/net/i40e/base/i40e_status.h | 2 +-
drivers/net/i40e/base/i40e_type.h | 7 +
drivers/net/i40e/i40e_ethdev.c | 46 +-
drivers/net/i40e/i40e_pf.c | 4 +-
drivers/net/i40e/i40e_regs.h | 11 +-
drivers/net/i40e/i40e_rxtx_vec_common.h | 2 +-
drivers/net/iavf/iavf_ethdev.c | 3 +
drivers/net/iavf/iavf_ipsec_crypto.c | 24 +-
drivers/net/iavf/iavf_ipsec_crypto.h | 4 +-
drivers/net/iavf/iavf_rxtx.c | 105 ++-
drivers/net/iavf/iavf_rxtx.h | 43 +-
drivers/net/iavf/iavf_rxtx_vec_avx2.c | 4 +-
drivers/net/iavf/iavf_rxtx_vec_avx512.c | 4 +-
drivers/net/iavf/iavf_rxtx_vec_sse.c | 4 +-
drivers/net/iavf/iavf_vchnl.c | 4 +-
drivers/net/ice/ice_dcf.c | 4 +-
29 files changed, 1203 insertions(+), 181 deletions(-)
diff --git a/drivers/common/iavf/README b/drivers/common/iavf/README
index 89bdbc827e..f59839ff97 100644
--- a/drivers/common/iavf/README
+++ b/drivers/common/iavf/README
@@ -6,7 +6,7 @@ Intel® IAVF driver
=================
This directory contains source code of FreeBSD IAVF driver of version
-cid-avf.2021.08.16.tar.gz released by the team which develops
+cid-avf.2022.03.08.tar.gz released by the team which develops
basic drivers for any IAVF NIC. The directory of base/ contains the
original source package.
diff --git a/drivers/common/iavf/iavf_common.c b/drivers/common/iavf/iavf_common.c
index 855a0ab2f5..03872dece8 100644
--- a/drivers/common/iavf/iavf_common.c
+++ b/drivers/common/iavf/iavf_common.c
@@ -135,8 +135,8 @@ const char *iavf_stat_str(struct iavf_hw *hw, enum iavf_status stat_err)
return "IAVF_ERR_INVALID_MAC_ADDR";
case IAVF_ERR_DEVICE_NOT_SUPPORTED:
return "IAVF_ERR_DEVICE_NOT_SUPPORTED";
- case IAVF_ERR_MASTER_REQUESTS_PENDING:
- return "IAVF_ERR_MASTER_REQUESTS_PENDING";
+ case IAVF_ERR_PRIMARY_REQUESTS_PENDING:
+ return "IAVF_ERR_PRIMARY_REQUESTS_PENDING";
case IAVF_ERR_INVALID_LINK_SETTINGS:
return "IAVF_ERR_INVALID_LINK_SETTINGS";
case IAVF_ERR_AUTONEG_NOT_COMPLETE:
@@ -520,9 +520,9 @@ enum iavf_status iavf_aq_set_rss_key(struct iavf_hw *hw,
return iavf_aq_get_set_rss_key(hw, vsi_id, key, true);
}
-/* The iavf_ptype_lookup table is used to convert from the 8-bit ptype in the
- * hardware to a bit-field that can be used by SW to more easily determine the
- * packet type.
+/* The iavf_ptype_lookup table is used to convert from the 8-bit and 10-bit
+ * ptype in the hardware to a bit-field that can be used by SW to more easily
+ * determine the packet type.
*
* Macros are used to shorten the table lines and make this table human
* readable.
@@ -882,7 +882,852 @@ struct iavf_rx_ptype_decoded iavf_ptype_lookup[] = {
IAVF_PTT_UNUSED_ENTRY(252),
IAVF_PTT_UNUSED_ENTRY(253),
IAVF_PTT_UNUSED_ENTRY(254),
- IAVF_PTT_UNUSED_ENTRY(255)
+ IAVF_PTT_UNUSED_ENTRY(255),
+ IAVF_PTT_UNUSED_ENTRY(256),
+ IAVF_PTT_UNUSED_ENTRY(257),
+ IAVF_PTT_UNUSED_ENTRY(258),
+ IAVF_PTT_UNUSED_ENTRY(259),
+
+ IAVF_PTT_UNUSED_ENTRY(260),
+ IAVF_PTT_UNUSED_ENTRY(261),
+ IAVF_PTT_UNUSED_ENTRY(262),
+ IAVF_PTT_UNUSED_ENTRY(263),
+ IAVF_PTT_UNUSED_ENTRY(264),
+ IAVF_PTT_UNUSED_ENTRY(265),
+ IAVF_PTT_UNUSED_ENTRY(266),
+ IAVF_PTT_UNUSED_ENTRY(267),
+ IAVF_PTT_UNUSED_ENTRY(268),
+ IAVF_PTT_UNUSED_ENTRY(269),
+
+ IAVF_PTT_UNUSED_ENTRY(270),
+ IAVF_PTT_UNUSED_ENTRY(271),
+ IAVF_PTT_UNUSED_ENTRY(272),
+ IAVF_PTT_UNUSED_ENTRY(273),
+ IAVF_PTT_UNUSED_ENTRY(274),
+ IAVF_PTT_UNUSED_ENTRY(275),
+ IAVF_PTT_UNUSED_ENTRY(276),
+ IAVF_PTT_UNUSED_ENTRY(277),
+ IAVF_PTT_UNUSED_ENTRY(278),
+ IAVF_PTT_UNUSED_ENTRY(279),
+
+ IAVF_PTT_UNUSED_ENTRY(280),
+ IAVF_PTT_UNUSED_ENTRY(281),
+ IAVF_PTT_UNUSED_ENTRY(282),
+ IAVF_PTT_UNUSED_ENTRY(283),
+ IAVF_PTT_UNUSED_ENTRY(284),
+ IAVF_PTT_UNUSED_ENTRY(285),
+ IAVF_PTT_UNUSED_ENTRY(286),
+ IAVF_PTT_UNUSED_ENTRY(287),
+ IAVF_PTT_UNUSED_ENTRY(288),
+ IAVF_PTT_UNUSED_ENTRY(289),
+
+ IAVF_PTT_UNUSED_ENTRY(290),
+ IAVF_PTT_UNUSED_ENTRY(291),
+ IAVF_PTT_UNUSED_ENTRY(292),
+ IAVF_PTT_UNUSED_ENTRY(293),
+ IAVF_PTT_UNUSED_ENTRY(294),
+ IAVF_PTT_UNUSED_ENTRY(295),
+ IAVF_PTT_UNUSED_ENTRY(296),
+ IAVF_PTT_UNUSED_ENTRY(297),
+ IAVF_PTT_UNUSED_ENTRY(298),
+ IAVF_PTT_UNUSED_ENTRY(299),
+
+ IAVF_PTT_UNUSED_ENTRY(300),
+ IAVF_PTT_UNUSED_ENTRY(301),
+ IAVF_PTT_UNUSED_ENTRY(302),
+ IAVF_PTT_UNUSED_ENTRY(303),
+ IAVF_PTT_UNUSED_ENTRY(304),
+ IAVF_PTT_UNUSED_ENTRY(305),
+ IAVF_PTT_UNUSED_ENTRY(306),
+ IAVF_PTT_UNUSED_ENTRY(307),
+ IAVF_PTT_UNUSED_ENTRY(308),
+ IAVF_PTT_UNUSED_ENTRY(309),
+
+ IAVF_PTT_UNUSED_ENTRY(310),
+ IAVF_PTT_UNUSED_ENTRY(311),
+ IAVF_PTT_UNUSED_ENTRY(312),
+ IAVF_PTT_UNUSED_ENTRY(313),
+ IAVF_PTT_UNUSED_ENTRY(314),
+ IAVF_PTT_UNUSED_ENTRY(315),
+ IAVF_PTT_UNUSED_ENTRY(316),
+ IAVF_PTT_UNUSED_ENTRY(317),
+ IAVF_PTT_UNUSED_ENTRY(318),
+ IAVF_PTT_UNUSED_ENTRY(319),
+
+ IAVF_PTT_UNUSED_ENTRY(320),
+ IAVF_PTT_UNUSED_ENTRY(321),
+ IAVF_PTT_UNUSED_ENTRY(322),
+ IAVF_PTT_UNUSED_ENTRY(323),
+ IAVF_PTT_UNUSED_ENTRY(324),
+ IAVF_PTT_UNUSED_ENTRY(325),
+ IAVF_PTT_UNUSED_ENTRY(326),
+ IAVF_PTT_UNUSED_ENTRY(327),
+ IAVF_PTT_UNUSED_ENTRY(328),
+ IAVF_PTT_UNUSED_ENTRY(329),
+
+ IAVF_PTT_UNUSED_ENTRY(330),
+ IAVF_PTT_UNUSED_ENTRY(331),
+ IAVF_PTT_UNUSED_ENTRY(332),
+ IAVF_PTT_UNUSED_ENTRY(333),
+ IAVF_PTT_UNUSED_ENTRY(334),
+ IAVF_PTT_UNUSED_ENTRY(335),
+ IAVF_PTT_UNUSED_ENTRY(336),
+ IAVF_PTT_UNUSED_ENTRY(337),
+ IAVF_PTT_UNUSED_ENTRY(338),
+ IAVF_PTT_UNUSED_ENTRY(339),
+
+ IAVF_PTT_UNUSED_ENTRY(340),
+ IAVF_PTT_UNUSED_ENTRY(341),
+ IAVF_PTT_UNUSED_ENTRY(342),
+ IAVF_PTT_UNUSED_ENTRY(343),
+ IAVF_PTT_UNUSED_ENTRY(344),
+ IAVF_PTT_UNUSED_ENTRY(345),
+ IAVF_PTT_UNUSED_ENTRY(346),
+ IAVF_PTT_UNUSED_ENTRY(347),
+ IAVF_PTT_UNUSED_ENTRY(348),
+ IAVF_PTT_UNUSED_ENTRY(349),
+
+ IAVF_PTT_UNUSED_ENTRY(350),
+ IAVF_PTT_UNUSED_ENTRY(351),
+ IAVF_PTT_UNUSED_ENTRY(352),
+ IAVF_PTT_UNUSED_ENTRY(353),
+ IAVF_PTT_UNUSED_ENTRY(354),
+ IAVF_PTT_UNUSED_ENTRY(355),
+ IAVF_PTT_UNUSED_ENTRY(356),
+ IAVF_PTT_UNUSED_ENTRY(357),
+ IAVF_PTT_UNUSED_ENTRY(358),
+ IAVF_PTT_UNUSED_ENTRY(359),
+
+ IAVF_PTT_UNUSED_ENTRY(360),
+ IAVF_PTT_UNUSED_ENTRY(361),
+ IAVF_PTT_UNUSED_ENTRY(362),
+ IAVF_PTT_UNUSED_ENTRY(363),
+ IAVF_PTT_UNUSED_ENTRY(364),
+ IAVF_PTT_UNUSED_ENTRY(365),
+ IAVF_PTT_UNUSED_ENTRY(366),
+ IAVF_PTT_UNUSED_ENTRY(367),
+ IAVF_PTT_UNUSED_ENTRY(368),
+ IAVF_PTT_UNUSED_ENTRY(369),
+
+ IAVF_PTT_UNUSED_ENTRY(370),
+ IAVF_PTT_UNUSED_ENTRY(371),
+ IAVF_PTT_UNUSED_ENTRY(372),
+ IAVF_PTT_UNUSED_ENTRY(373),
+ IAVF_PTT_UNUSED_ENTRY(374),
+ IAVF_PTT_UNUSED_ENTRY(375),
+ IAVF_PTT_UNUSED_ENTRY(376),
+ IAVF_PTT_UNUSED_ENTRY(377),
+ IAVF_PTT_UNUSED_ENTRY(378),
+ IAVF_PTT_UNUSED_ENTRY(379),
+
+ IAVF_PTT_UNUSED_ENTRY(380),
+ IAVF_PTT_UNUSED_ENTRY(381),
+ IAVF_PTT_UNUSED_ENTRY(382),
+ IAVF_PTT_UNUSED_ENTRY(383),
+ IAVF_PTT_UNUSED_ENTRY(384),
+ IAVF_PTT_UNUSED_ENTRY(385),
+ IAVF_PTT_UNUSED_ENTRY(386),
+ IAVF_PTT_UNUSED_ENTRY(387),
+ IAVF_PTT_UNUSED_ENTRY(388),
+ IAVF_PTT_UNUSED_ENTRY(389),
+
+ IAVF_PTT_UNUSED_ENTRY(390),
+ IAVF_PTT_UNUSED_ENTRY(391),
+ IAVF_PTT_UNUSED_ENTRY(392),
+ IAVF_PTT_UNUSED_ENTRY(393),
+ IAVF_PTT_UNUSED_ENTRY(394),
+ IAVF_PTT_UNUSED_ENTRY(395),
+ IAVF_PTT_UNUSED_ENTRY(396),
+ IAVF_PTT_UNUSED_ENTRY(397),
+ IAVF_PTT_UNUSED_ENTRY(398),
+ IAVF_PTT_UNUSED_ENTRY(399),
+
+ IAVF_PTT_UNUSED_ENTRY(400),
+ IAVF_PTT_UNUSED_ENTRY(401),
+ IAVF_PTT_UNUSED_ENTRY(402),
+ IAVF_PTT_UNUSED_ENTRY(403),
+ IAVF_PTT_UNUSED_ENTRY(404),
+ IAVF_PTT_UNUSED_ENTRY(405),
+ IAVF_PTT_UNUSED_ENTRY(406),
+ IAVF_PTT_UNUSED_ENTRY(407),
+ IAVF_PTT_UNUSED_ENTRY(408),
+ IAVF_PTT_UNUSED_ENTRY(409),
+
+ IAVF_PTT_UNUSED_ENTRY(410),
+ IAVF_PTT_UNUSED_ENTRY(411),
+ IAVF_PTT_UNUSED_ENTRY(412),
+ IAVF_PTT_UNUSED_ENTRY(413),
+ IAVF_PTT_UNUSED_ENTRY(414),
+ IAVF_PTT_UNUSED_ENTRY(415),
+ IAVF_PTT_UNUSED_ENTRY(416),
+ IAVF_PTT_UNUSED_ENTRY(417),
+ IAVF_PTT_UNUSED_ENTRY(418),
+ IAVF_PTT_UNUSED_ENTRY(419),
+
+ IAVF_PTT_UNUSED_ENTRY(420),
+ IAVF_PTT_UNUSED_ENTRY(421),
+ IAVF_PTT_UNUSED_ENTRY(422),
+ IAVF_PTT_UNUSED_ENTRY(423),
+ IAVF_PTT_UNUSED_ENTRY(424),
+ IAVF_PTT_UNUSED_ENTRY(425),
+ IAVF_PTT_UNUSED_ENTRY(426),
+ IAVF_PTT_UNUSED_ENTRY(427),
+ IAVF_PTT_UNUSED_ENTRY(428),
+ IAVF_PTT_UNUSED_ENTRY(429),
+
+ IAVF_PTT_UNUSED_ENTRY(430),
+ IAVF_PTT_UNUSED_ENTRY(431),
+ IAVF_PTT_UNUSED_ENTRY(432),
+ IAVF_PTT_UNUSED_ENTRY(433),
+ IAVF_PTT_UNUSED_ENTRY(434),
+ IAVF_PTT_UNUSED_ENTRY(435),
+ IAVF_PTT_UNUSED_ENTRY(436),
+ IAVF_PTT_UNUSED_ENTRY(437),
+ IAVF_PTT_UNUSED_ENTRY(438),
+ IAVF_PTT_UNUSED_ENTRY(439),
+
+ IAVF_PTT_UNUSED_ENTRY(440),
+ IAVF_PTT_UNUSED_ENTRY(441),
+ IAVF_PTT_UNUSED_ENTRY(442),
+ IAVF_PTT_UNUSED_ENTRY(443),
+ IAVF_PTT_UNUSED_ENTRY(444),
+ IAVF_PTT_UNUSED_ENTRY(445),
+ IAVF_PTT_UNUSED_ENTRY(446),
+ IAVF_PTT_UNUSED_ENTRY(447),
+ IAVF_PTT_UNUSED_ENTRY(448),
+ IAVF_PTT_UNUSED_ENTRY(449),
+
+ IAVF_PTT_UNUSED_ENTRY(450),
+ IAVF_PTT_UNUSED_ENTRY(451),
+ IAVF_PTT_UNUSED_ENTRY(452),
+ IAVF_PTT_UNUSED_ENTRY(453),
+ IAVF_PTT_UNUSED_ENTRY(454),
+ IAVF_PTT_UNUSED_ENTRY(455),
+ IAVF_PTT_UNUSED_ENTRY(456),
+ IAVF_PTT_UNUSED_ENTRY(457),
+ IAVF_PTT_UNUSED_ENTRY(458),
+ IAVF_PTT_UNUSED_ENTRY(459),
+
+ IAVF_PTT_UNUSED_ENTRY(460),
+ IAVF_PTT_UNUSED_ENTRY(461),
+ IAVF_PTT_UNUSED_ENTRY(462),
+ IAVF_PTT_UNUSED_ENTRY(463),
+ IAVF_PTT_UNUSED_ENTRY(464),
+ IAVF_PTT_UNUSED_ENTRY(465),
+ IAVF_PTT_UNUSED_ENTRY(466),
+ IAVF_PTT_UNUSED_ENTRY(467),
+ IAVF_PTT_UNUSED_ENTRY(468),
+ IAVF_PTT_UNUSED_ENTRY(469),
+
+ IAVF_PTT_UNUSED_ENTRY(470),
+ IAVF_PTT_UNUSED_ENTRY(471),
+ IAVF_PTT_UNUSED_ENTRY(472),
+ IAVF_PTT_UNUSED_ENTRY(473),
+ IAVF_PTT_UNUSED_ENTRY(474),
+ IAVF_PTT_UNUSED_ENTRY(475),
+ IAVF_PTT_UNUSED_ENTRY(476),
+ IAVF_PTT_UNUSED_ENTRY(477),
+ IAVF_PTT_UNUSED_ENTRY(478),
+ IAVF_PTT_UNUSED_ENTRY(479),
+
+ IAVF_PTT_UNUSED_ENTRY(480),
+ IAVF_PTT_UNUSED_ENTRY(481),
+ IAVF_PTT_UNUSED_ENTRY(482),
+ IAVF_PTT_UNUSED_ENTRY(483),
+ IAVF_PTT_UNUSED_ENTRY(484),
+ IAVF_PTT_UNUSED_ENTRY(485),
+ IAVF_PTT_UNUSED_ENTRY(486),
+ IAVF_PTT_UNUSED_ENTRY(487),
+ IAVF_PTT_UNUSED_ENTRY(488),
+ IAVF_PTT_UNUSED_ENTRY(489),
+
+ IAVF_PTT_UNUSED_ENTRY(490),
+ IAVF_PTT_UNUSED_ENTRY(491),
+ IAVF_PTT_UNUSED_ENTRY(492),
+ IAVF_PTT_UNUSED_ENTRY(493),
+ IAVF_PTT_UNUSED_ENTRY(494),
+ IAVF_PTT_UNUSED_ENTRY(495),
+ IAVF_PTT_UNUSED_ENTRY(496),
+ IAVF_PTT_UNUSED_ENTRY(497),
+ IAVF_PTT_UNUSED_ENTRY(498),
+ IAVF_PTT_UNUSED_ENTRY(499),
+
+ IAVF_PTT_UNUSED_ENTRY(500),
+ IAVF_PTT_UNUSED_ENTRY(501),
+ IAVF_PTT_UNUSED_ENTRY(502),
+ IAVF_PTT_UNUSED_ENTRY(503),
+ IAVF_PTT_UNUSED_ENTRY(504),
+ IAVF_PTT_UNUSED_ENTRY(505),
+ IAVF_PTT_UNUSED_ENTRY(506),
+ IAVF_PTT_UNUSED_ENTRY(507),
+ IAVF_PTT_UNUSED_ENTRY(508),
+ IAVF_PTT_UNUSED_ENTRY(509),
+
+ IAVF_PTT_UNUSED_ENTRY(510),
+ IAVF_PTT_UNUSED_ENTRY(511),
+ IAVF_PTT_UNUSED_ENTRY(512),
+ IAVF_PTT_UNUSED_ENTRY(513),
+ IAVF_PTT_UNUSED_ENTRY(514),
+ IAVF_PTT_UNUSED_ENTRY(515),
+ IAVF_PTT_UNUSED_ENTRY(516),
+ IAVF_PTT_UNUSED_ENTRY(517),
+ IAVF_PTT_UNUSED_ENTRY(518),
+ IAVF_PTT_UNUSED_ENTRY(519),
+
+ IAVF_PTT_UNUSED_ENTRY(520),
+ IAVF_PTT_UNUSED_ENTRY(521),
+ IAVF_PTT_UNUSED_ENTRY(522),
+ IAVF_PTT_UNUSED_ENTRY(523),
+ IAVF_PTT_UNUSED_ENTRY(524),
+ IAVF_PTT_UNUSED_ENTRY(525),
+ IAVF_PTT_UNUSED_ENTRY(526),
+ IAVF_PTT_UNUSED_ENTRY(527),
+ IAVF_PTT_UNUSED_ENTRY(528),
+ IAVF_PTT_UNUSED_ENTRY(529),
+
+ IAVF_PTT_UNUSED_ENTRY(530),
+ IAVF_PTT_UNUSED_ENTRY(531),
+ IAVF_PTT_UNUSED_ENTRY(532),
+ IAVF_PTT_UNUSED_ENTRY(533),
+ IAVF_PTT_UNUSED_ENTRY(534),
+ IAVF_PTT_UNUSED_ENTRY(535),
+ IAVF_PTT_UNUSED_ENTRY(536),
+ IAVF_PTT_UNUSED_ENTRY(537),
+ IAVF_PTT_UNUSED_ENTRY(538),
+ IAVF_PTT_UNUSED_ENTRY(539),
+
+ IAVF_PTT_UNUSED_ENTRY(540),
+ IAVF_PTT_UNUSED_ENTRY(541),
+ IAVF_PTT_UNUSED_ENTRY(542),
+ IAVF_PTT_UNUSED_ENTRY(543),
+ IAVF_PTT_UNUSED_ENTRY(544),
+ IAVF_PTT_UNUSED_ENTRY(545),
+ IAVF_PTT_UNUSED_ENTRY(546),
+ IAVF_PTT_UNUSED_ENTRY(547),
+ IAVF_PTT_UNUSED_ENTRY(548),
+ IAVF_PTT_UNUSED_ENTRY(549),
+
+ IAVF_PTT_UNUSED_ENTRY(550),
+ IAVF_PTT_UNUSED_ENTRY(551),
+ IAVF_PTT_UNUSED_ENTRY(552),
+ IAVF_PTT_UNUSED_ENTRY(553),
+ IAVF_PTT_UNUSED_ENTRY(554),
+ IAVF_PTT_UNUSED_ENTRY(555),
+ IAVF_PTT_UNUSED_ENTRY(556),
+ IAVF_PTT_UNUSED_ENTRY(557),
+ IAVF_PTT_UNUSED_ENTRY(558),
+ IAVF_PTT_UNUSED_ENTRY(559),
+
+ IAVF_PTT_UNUSED_ENTRY(560),
+ IAVF_PTT_UNUSED_ENTRY(561),
+ IAVF_PTT_UNUSED_ENTRY(562),
+ IAVF_PTT_UNUSED_ENTRY(563),
+ IAVF_PTT_UNUSED_ENTRY(564),
+ IAVF_PTT_UNUSED_ENTRY(565),
+ IAVF_PTT_UNUSED_ENTRY(566),
+ IAVF_PTT_UNUSED_ENTRY(567),
+ IAVF_PTT_UNUSED_ENTRY(568),
+ IAVF_PTT_UNUSED_ENTRY(569),
+
+ IAVF_PTT_UNUSED_ENTRY(570),
+ IAVF_PTT_UNUSED_ENTRY(571),
+ IAVF_PTT_UNUSED_ENTRY(572),
+ IAVF_PTT_UNUSED_ENTRY(573),
+ IAVF_PTT_UNUSED_ENTRY(574),
+ IAVF_PTT_UNUSED_ENTRY(575),
+ IAVF_PTT_UNUSED_ENTRY(576),
+ IAVF_PTT_UNUSED_ENTRY(577),
+ IAVF_PTT_UNUSED_ENTRY(578),
+ IAVF_PTT_UNUSED_ENTRY(579),
+
+ IAVF_PTT_UNUSED_ENTRY(580),
+ IAVF_PTT_UNUSED_ENTRY(581),
+ IAVF_PTT_UNUSED_ENTRY(582),
+ IAVF_PTT_UNUSED_ENTRY(583),
+ IAVF_PTT_UNUSED_ENTRY(584),
+ IAVF_PTT_UNUSED_ENTRY(585),
+ IAVF_PTT_UNUSED_ENTRY(586),
+ IAVF_PTT_UNUSED_ENTRY(587),
+ IAVF_PTT_UNUSED_ENTRY(588),
+ IAVF_PTT_UNUSED_ENTRY(589),
+
+ IAVF_PTT_UNUSED_ENTRY(590),
+ IAVF_PTT_UNUSED_ENTRY(591),
+ IAVF_PTT_UNUSED_ENTRY(592),
+ IAVF_PTT_UNUSED_ENTRY(593),
+ IAVF_PTT_UNUSED_ENTRY(594),
+ IAVF_PTT_UNUSED_ENTRY(595),
+ IAVF_PTT_UNUSED_ENTRY(596),
+ IAVF_PTT_UNUSED_ENTRY(597),
+ IAVF_PTT_UNUSED_ENTRY(598),
+ IAVF_PTT_UNUSED_ENTRY(599),
+
+ IAVF_PTT_UNUSED_ENTRY(600),
+ IAVF_PTT_UNUSED_ENTRY(601),
+ IAVF_PTT_UNUSED_ENTRY(602),
+ IAVF_PTT_UNUSED_ENTRY(603),
+ IAVF_PTT_UNUSED_ENTRY(604),
+ IAVF_PTT_UNUSED_ENTRY(605),
+ IAVF_PTT_UNUSED_ENTRY(606),
+ IAVF_PTT_UNUSED_ENTRY(607),
+ IAVF_PTT_UNUSED_ENTRY(608),
+ IAVF_PTT_UNUSED_ENTRY(609),
+
+ IAVF_PTT_UNUSED_ENTRY(610),
+ IAVF_PTT_UNUSED_ENTRY(611),
+ IAVF_PTT_UNUSED_ENTRY(612),
+ IAVF_PTT_UNUSED_ENTRY(613),
+ IAVF_PTT_UNUSED_ENTRY(614),
+ IAVF_PTT_UNUSED_ENTRY(615),
+ IAVF_PTT_UNUSED_ENTRY(616),
+ IAVF_PTT_UNUSED_ENTRY(617),
+ IAVF_PTT_UNUSED_ENTRY(618),
+ IAVF_PTT_UNUSED_ENTRY(619),
+
+ IAVF_PTT_UNUSED_ENTRY(620),
+ IAVF_PTT_UNUSED_ENTRY(621),
+ IAVF_PTT_UNUSED_ENTRY(622),
+ IAVF_PTT_UNUSED_ENTRY(623),
+ IAVF_PTT_UNUSED_ENTRY(624),
+ IAVF_PTT_UNUSED_ENTRY(625),
+ IAVF_PTT_UNUSED_ENTRY(626),
+ IAVF_PTT_UNUSED_ENTRY(627),
+ IAVF_PTT_UNUSED_ENTRY(628),
+ IAVF_PTT_UNUSED_ENTRY(629),
+
+ IAVF_PTT_UNUSED_ENTRY(630),
+ IAVF_PTT_UNUSED_ENTRY(631),
+ IAVF_PTT_UNUSED_ENTRY(632),
+ IAVF_PTT_UNUSED_ENTRY(633),
+ IAVF_PTT_UNUSED_ENTRY(634),
+ IAVF_PTT_UNUSED_ENTRY(635),
+ IAVF_PTT_UNUSED_ENTRY(636),
+ IAVF_PTT_UNUSED_ENTRY(637),
+ IAVF_PTT_UNUSED_ENTRY(638),
+ IAVF_PTT_UNUSED_ENTRY(639),
+
+ IAVF_PTT_UNUSED_ENTRY(640),
+ IAVF_PTT_UNUSED_ENTRY(641),
+ IAVF_PTT_UNUSED_ENTRY(642),
+ IAVF_PTT_UNUSED_ENTRY(643),
+ IAVF_PTT_UNUSED_ENTRY(644),
+ IAVF_PTT_UNUSED_ENTRY(645),
+ IAVF_PTT_UNUSED_ENTRY(646),
+ IAVF_PTT_UNUSED_ENTRY(647),
+ IAVF_PTT_UNUSED_ENTRY(648),
+ IAVF_PTT_UNUSED_ENTRY(649),
+
+ IAVF_PTT_UNUSED_ENTRY(650),
+ IAVF_PTT_UNUSED_ENTRY(651),
+ IAVF_PTT_UNUSED_ENTRY(652),
+ IAVF_PTT_UNUSED_ENTRY(653),
+ IAVF_PTT_UNUSED_ENTRY(654),
+ IAVF_PTT_UNUSED_ENTRY(655),
+ IAVF_PTT_UNUSED_ENTRY(656),
+ IAVF_PTT_UNUSED_ENTRY(657),
+ IAVF_PTT_UNUSED_ENTRY(658),
+ IAVF_PTT_UNUSED_ENTRY(659),
+
+ IAVF_PTT_UNUSED_ENTRY(660),
+ IAVF_PTT_UNUSED_ENTRY(661),
+ IAVF_PTT_UNUSED_ENTRY(662),
+ IAVF_PTT_UNUSED_ENTRY(663),
+ IAVF_PTT_UNUSED_ENTRY(664),
+ IAVF_PTT_UNUSED_ENTRY(665),
+ IAVF_PTT_UNUSED_ENTRY(666),
+ IAVF_PTT_UNUSED_ENTRY(667),
+ IAVF_PTT_UNUSED_ENTRY(668),
+ IAVF_PTT_UNUSED_ENTRY(669),
+
+ IAVF_PTT_UNUSED_ENTRY(670),
+ IAVF_PTT_UNUSED_ENTRY(671),
+ IAVF_PTT_UNUSED_ENTRY(672),
+ IAVF_PTT_UNUSED_ENTRY(673),
+ IAVF_PTT_UNUSED_ENTRY(674),
+ IAVF_PTT_UNUSED_ENTRY(675),
+ IAVF_PTT_UNUSED_ENTRY(676),
+ IAVF_PTT_UNUSED_ENTRY(677),
+ IAVF_PTT_UNUSED_ENTRY(678),
+ IAVF_PTT_UNUSED_ENTRY(679),
+
+ IAVF_PTT_UNUSED_ENTRY(680),
+ IAVF_PTT_UNUSED_ENTRY(681),
+ IAVF_PTT_UNUSED_ENTRY(682),
+ IAVF_PTT_UNUSED_ENTRY(683),
+ IAVF_PTT_UNUSED_ENTRY(684),
+ IAVF_PTT_UNUSED_ENTRY(685),
+ IAVF_PTT_UNUSED_ENTRY(686),
+ IAVF_PTT_UNUSED_ENTRY(687),
+ IAVF_PTT_UNUSED_ENTRY(688),
+ IAVF_PTT_UNUSED_ENTRY(689),
+
+ IAVF_PTT_UNUSED_ENTRY(690),
+ IAVF_PTT_UNUSED_ENTRY(691),
+ IAVF_PTT_UNUSED_ENTRY(692),
+ IAVF_PTT_UNUSED_ENTRY(693),
+ IAVF_PTT_UNUSED_ENTRY(694),
+ IAVF_PTT_UNUSED_ENTRY(695),
+ IAVF_PTT_UNUSED_ENTRY(696),
+ IAVF_PTT_UNUSED_ENTRY(697),
+ IAVF_PTT_UNUSED_ENTRY(698),
+ IAVF_PTT_UNUSED_ENTRY(699),
+
+ IAVF_PTT_UNUSED_ENTRY(700),
+ IAVF_PTT_UNUSED_ENTRY(701),
+ IAVF_PTT_UNUSED_ENTRY(702),
+ IAVF_PTT_UNUSED_ENTRY(703),
+ IAVF_PTT_UNUSED_ENTRY(704),
+ IAVF_PTT_UNUSED_ENTRY(705),
+ IAVF_PTT_UNUSED_ENTRY(706),
+ IAVF_PTT_UNUSED_ENTRY(707),
+ IAVF_PTT_UNUSED_ENTRY(708),
+ IAVF_PTT_UNUSED_ENTRY(709),
+
+ IAVF_PTT_UNUSED_ENTRY(710),
+ IAVF_PTT_UNUSED_ENTRY(711),
+ IAVF_PTT_UNUSED_ENTRY(712),
+ IAVF_PTT_UNUSED_ENTRY(713),
+ IAVF_PTT_UNUSED_ENTRY(714),
+ IAVF_PTT_UNUSED_ENTRY(715),
+ IAVF_PTT_UNUSED_ENTRY(716),
+ IAVF_PTT_UNUSED_ENTRY(717),
+ IAVF_PTT_UNUSED_ENTRY(718),
+ IAVF_PTT_UNUSED_ENTRY(719),
+
+ IAVF_PTT_UNUSED_ENTRY(720),
+ IAVF_PTT_UNUSED_ENTRY(721),
+ IAVF_PTT_UNUSED_ENTRY(722),
+ IAVF_PTT_UNUSED_ENTRY(723),
+ IAVF_PTT_UNUSED_ENTRY(724),
+ IAVF_PTT_UNUSED_ENTRY(725),
+ IAVF_PTT_UNUSED_ENTRY(726),
+ IAVF_PTT_UNUSED_ENTRY(727),
+ IAVF_PTT_UNUSED_ENTRY(728),
+ IAVF_PTT_UNUSED_ENTRY(729),
+
+ IAVF_PTT_UNUSED_ENTRY(730),
+ IAVF_PTT_UNUSED_ENTRY(731),
+ IAVF_PTT_UNUSED_ENTRY(732),
+ IAVF_PTT_UNUSED_ENTRY(733),
+ IAVF_PTT_UNUSED_ENTRY(734),
+ IAVF_PTT_UNUSED_ENTRY(735),
+ IAVF_PTT_UNUSED_ENTRY(736),
+ IAVF_PTT_UNUSED_ENTRY(737),
+ IAVF_PTT_UNUSED_ENTRY(738),
+ IAVF_PTT_UNUSED_ENTRY(739),
+
+ IAVF_PTT_UNUSED_ENTRY(740),
+ IAVF_PTT_UNUSED_ENTRY(741),
+ IAVF_PTT_UNUSED_ENTRY(742),
+ IAVF_PTT_UNUSED_ENTRY(743),
+ IAVF_PTT_UNUSED_ENTRY(744),
+ IAVF_PTT_UNUSED_ENTRY(745),
+ IAVF_PTT_UNUSED_ENTRY(746),
+ IAVF_PTT_UNUSED_ENTRY(747),
+ IAVF_PTT_UNUSED_ENTRY(748),
+ IAVF_PTT_UNUSED_ENTRY(749),
+
+ IAVF_PTT_UNUSED_ENTRY(750),
+ IAVF_PTT_UNUSED_ENTRY(751),
+ IAVF_PTT_UNUSED_ENTRY(752),
+ IAVF_PTT_UNUSED_ENTRY(753),
+ IAVF_PTT_UNUSED_ENTRY(754),
+ IAVF_PTT_UNUSED_ENTRY(755),
+ IAVF_PTT_UNUSED_ENTRY(756),
+ IAVF_PTT_UNUSED_ENTRY(757),
+ IAVF_PTT_UNUSED_ENTRY(758),
+ IAVF_PTT_UNUSED_ENTRY(759),
+
+ IAVF_PTT_UNUSED_ENTRY(760),
+ IAVF_PTT_UNUSED_ENTRY(761),
+ IAVF_PTT_UNUSED_ENTRY(762),
+ IAVF_PTT_UNUSED_ENTRY(763),
+ IAVF_PTT_UNUSED_ENTRY(764),
+ IAVF_PTT_UNUSED_ENTRY(765),
+ IAVF_PTT_UNUSED_ENTRY(766),
+ IAVF_PTT_UNUSED_ENTRY(767),
+ IAVF_PTT_UNUSED_ENTRY(768),
+ IAVF_PTT_UNUSED_ENTRY(769),
+
+ IAVF_PTT_UNUSED_ENTRY(770),
+ IAVF_PTT_UNUSED_ENTRY(771),
+ IAVF_PTT_UNUSED_ENTRY(772),
+ IAVF_PTT_UNUSED_ENTRY(773),
+ IAVF_PTT_UNUSED_ENTRY(774),
+ IAVF_PTT_UNUSED_ENTRY(775),
+ IAVF_PTT_UNUSED_ENTRY(776),
+ IAVF_PTT_UNUSED_ENTRY(777),
+ IAVF_PTT_UNUSED_ENTRY(778),
+ IAVF_PTT_UNUSED_ENTRY(779),
+
+ IAVF_PTT_UNUSED_ENTRY(780),
+ IAVF_PTT_UNUSED_ENTRY(781),
+ IAVF_PTT_UNUSED_ENTRY(782),
+ IAVF_PTT_UNUSED_ENTRY(783),
+ IAVF_PTT_UNUSED_ENTRY(784),
+ IAVF_PTT_UNUSED_ENTRY(785),
+ IAVF_PTT_UNUSED_ENTRY(786),
+ IAVF_PTT_UNUSED_ENTRY(787),
+ IAVF_PTT_UNUSED_ENTRY(788),
+ IAVF_PTT_UNUSED_ENTRY(789),
+
+ IAVF_PTT_UNUSED_ENTRY(790),
+ IAVF_PTT_UNUSED_ENTRY(791),
+ IAVF_PTT_UNUSED_ENTRY(792),
+ IAVF_PTT_UNUSED_ENTRY(793),
+ IAVF_PTT_UNUSED_ENTRY(794),
+ IAVF_PTT_UNUSED_ENTRY(795),
+ IAVF_PTT_UNUSED_ENTRY(796),
+ IAVF_PTT_UNUSED_ENTRY(797),
+ IAVF_PTT_UNUSED_ENTRY(798),
+ IAVF_PTT_UNUSED_ENTRY(799),
+
+ IAVF_PTT_UNUSED_ENTRY(800),
+ IAVF_PTT_UNUSED_ENTRY(801),
+ IAVF_PTT_UNUSED_ENTRY(802),
+ IAVF_PTT_UNUSED_ENTRY(803),
+ IAVF_PTT_UNUSED_ENTRY(804),
+ IAVF_PTT_UNUSED_ENTRY(805),
+ IAVF_PTT_UNUSED_ENTRY(806),
+ IAVF_PTT_UNUSED_ENTRY(807),
+ IAVF_PTT_UNUSED_ENTRY(808),
+ IAVF_PTT_UNUSED_ENTRY(809),
+
+ IAVF_PTT_UNUSED_ENTRY(810),
+ IAVF_PTT_UNUSED_ENTRY(811),
+ IAVF_PTT_UNUSED_ENTRY(812),
+ IAVF_PTT_UNUSED_ENTRY(813),
+ IAVF_PTT_UNUSED_ENTRY(814),
+ IAVF_PTT_UNUSED_ENTRY(815),
+ IAVF_PTT_UNUSED_ENTRY(816),
+ IAVF_PTT_UNUSED_ENTRY(817),
+ IAVF_PTT_UNUSED_ENTRY(818),
+ IAVF_PTT_UNUSED_ENTRY(819),
+
+ IAVF_PTT_UNUSED_ENTRY(820),
+ IAVF_PTT_UNUSED_ENTRY(821),
+ IAVF_PTT_UNUSED_ENTRY(822),
+ IAVF_PTT_UNUSED_ENTRY(823),
+ IAVF_PTT_UNUSED_ENTRY(824),
+ IAVF_PTT_UNUSED_ENTRY(825),
+ IAVF_PTT_UNUSED_ENTRY(826),
+ IAVF_PTT_UNUSED_ENTRY(827),
+ IAVF_PTT_UNUSED_ENTRY(828),
+ IAVF_PTT_UNUSED_ENTRY(829),
+
+ IAVF_PTT_UNUSED_ENTRY(830),
+ IAVF_PTT_UNUSED_ENTRY(831),
+ IAVF_PTT_UNUSED_ENTRY(832),
+ IAVF_PTT_UNUSED_ENTRY(833),
+ IAVF_PTT_UNUSED_ENTRY(834),
+ IAVF_PTT_UNUSED_ENTRY(835),
+ IAVF_PTT_UNUSED_ENTRY(836),
+ IAVF_PTT_UNUSED_ENTRY(837),
+ IAVF_PTT_UNUSED_ENTRY(838),
+ IAVF_PTT_UNUSED_ENTRY(839),
+
+ IAVF_PTT_UNUSED_ENTRY(840),
+ IAVF_PTT_UNUSED_ENTRY(841),
+ IAVF_PTT_UNUSED_ENTRY(842),
+ IAVF_PTT_UNUSED_ENTRY(843),
+ IAVF_PTT_UNUSED_ENTRY(844),
+ IAVF_PTT_UNUSED_ENTRY(845),
+ IAVF_PTT_UNUSED_ENTRY(846),
+ IAVF_PTT_UNUSED_ENTRY(847),
+ IAVF_PTT_UNUSED_ENTRY(848),
+ IAVF_PTT_UNUSED_ENTRY(849),
+
+ IAVF_PTT_UNUSED_ENTRY(850),
+ IAVF_PTT_UNUSED_ENTRY(851),
+ IAVF_PTT_UNUSED_ENTRY(852),
+ IAVF_PTT_UNUSED_ENTRY(853),
+ IAVF_PTT_UNUSED_ENTRY(854),
+ IAVF_PTT_UNUSED_ENTRY(855),
+ IAVF_PTT_UNUSED_ENTRY(856),
+ IAVF_PTT_UNUSED_ENTRY(857),
+ IAVF_PTT_UNUSED_ENTRY(858),
+ IAVF_PTT_UNUSED_ENTRY(859),
+
+ IAVF_PTT_UNUSED_ENTRY(860),
+ IAVF_PTT_UNUSED_ENTRY(861),
+ IAVF_PTT_UNUSED_ENTRY(862),
+ IAVF_PTT_UNUSED_ENTRY(863),
+ IAVF_PTT_UNUSED_ENTRY(864),
+ IAVF_PTT_UNUSED_ENTRY(865),
+ IAVF_PTT_UNUSED_ENTRY(866),
+ IAVF_PTT_UNUSED_ENTRY(867),
+ IAVF_PTT_UNUSED_ENTRY(868),
+ IAVF_PTT_UNUSED_ENTRY(869),
+
+ IAVF_PTT_UNUSED_ENTRY(870),
+ IAVF_PTT_UNUSED_ENTRY(871),
+ IAVF_PTT_UNUSED_ENTRY(872),
+ IAVF_PTT_UNUSED_ENTRY(873),
+ IAVF_PTT_UNUSED_ENTRY(874),
+ IAVF_PTT_UNUSED_ENTRY(875),
+ IAVF_PTT_UNUSED_ENTRY(876),
+ IAVF_PTT_UNUSED_ENTRY(877),
+ IAVF_PTT_UNUSED_ENTRY(878),
+ IAVF_PTT_UNUSED_ENTRY(879),
+
+ IAVF_PTT_UNUSED_ENTRY(880),
+ IAVF_PTT_UNUSED_ENTRY(881),
+ IAVF_PTT_UNUSED_ENTRY(882),
+ IAVF_PTT_UNUSED_ENTRY(883),
+ IAVF_PTT_UNUSED_ENTRY(884),
+ IAVF_PTT_UNUSED_ENTRY(885),
+ IAVF_PTT_UNUSED_ENTRY(886),
+ IAVF_PTT_UNUSED_ENTRY(887),
+ IAVF_PTT_UNUSED_ENTRY(888),
+ IAVF_PTT_UNUSED_ENTRY(889),
+
+ IAVF_PTT_UNUSED_ENTRY(890),
+ IAVF_PTT_UNUSED_ENTRY(891),
+ IAVF_PTT_UNUSED_ENTRY(892),
+ IAVF_PTT_UNUSED_ENTRY(893),
+ IAVF_PTT_UNUSED_ENTRY(894),
+ IAVF_PTT_UNUSED_ENTRY(895),
+ IAVF_PTT_UNUSED_ENTRY(896),
+ IAVF_PTT_UNUSED_ENTRY(897),
+ IAVF_PTT_UNUSED_ENTRY(898),
+ IAVF_PTT_UNUSED_ENTRY(899),
+
+ IAVF_PTT_UNUSED_ENTRY(900),
+ IAVF_PTT_UNUSED_ENTRY(901),
+ IAVF_PTT_UNUSED_ENTRY(902),
+ IAVF_PTT_UNUSED_ENTRY(903),
+ IAVF_PTT_UNUSED_ENTRY(904),
+ IAVF_PTT_UNUSED_ENTRY(905),
+ IAVF_PTT_UNUSED_ENTRY(906),
+ IAVF_PTT_UNUSED_ENTRY(907),
+ IAVF_PTT_UNUSED_ENTRY(908),
+ IAVF_PTT_UNUSED_ENTRY(909),
+
+ IAVF_PTT_UNUSED_ENTRY(910),
+ IAVF_PTT_UNUSED_ENTRY(911),
+ IAVF_PTT_UNUSED_ENTRY(912),
+ IAVF_PTT_UNUSED_ENTRY(913),
+ IAVF_PTT_UNUSED_ENTRY(914),
+ IAVF_PTT_UNUSED_ENTRY(915),
+ IAVF_PTT_UNUSED_ENTRY(916),
+ IAVF_PTT_UNUSED_ENTRY(917),
+ IAVF_PTT_UNUSED_ENTRY(918),
+ IAVF_PTT_UNUSED_ENTRY(919),
+
+ IAVF_PTT_UNUSED_ENTRY(920),
+ IAVF_PTT_UNUSED_ENTRY(921),
+ IAVF_PTT_UNUSED_ENTRY(922),
+ IAVF_PTT_UNUSED_ENTRY(923),
+ IAVF_PTT_UNUSED_ENTRY(924),
+ IAVF_PTT_UNUSED_ENTRY(925),
+ IAVF_PTT_UNUSED_ENTRY(926),
+ IAVF_PTT_UNUSED_ENTRY(927),
+ IAVF_PTT_UNUSED_ENTRY(928),
+ IAVF_PTT_UNUSED_ENTRY(929),
+
+ IAVF_PTT_UNUSED_ENTRY(930),
+ IAVF_PTT_UNUSED_ENTRY(931),
+ IAVF_PTT_UNUSED_ENTRY(932),
+ IAVF_PTT_UNUSED_ENTRY(933),
+ IAVF_PTT_UNUSED_ENTRY(934),
+ IAVF_PTT_UNUSED_ENTRY(935),
+ IAVF_PTT_UNUSED_ENTRY(936),
+ IAVF_PTT_UNUSED_ENTRY(937),
+ IAVF_PTT_UNUSED_ENTRY(938),
+ IAVF_PTT_UNUSED_ENTRY(939),
+
+ IAVF_PTT_UNUSED_ENTRY(940),
+ IAVF_PTT_UNUSED_ENTRY(941),
+ IAVF_PTT_UNUSED_ENTRY(942),
+ IAVF_PTT_UNUSED_ENTRY(943),
+ IAVF_PTT_UNUSED_ENTRY(944),
+ IAVF_PTT_UNUSED_ENTRY(945),
+ IAVF_PTT_UNUSED_ENTRY(946),
+ IAVF_PTT_UNUSED_ENTRY(947),
+ IAVF_PTT_UNUSED_ENTRY(948),
+ IAVF_PTT_UNUSED_ENTRY(949),
+
+ IAVF_PTT_UNUSED_ENTRY(950),
+ IAVF_PTT_UNUSED_ENTRY(951),
+ IAVF_PTT_UNUSED_ENTRY(952),
+ IAVF_PTT_UNUSED_ENTRY(953),
+ IAVF_PTT_UNUSED_ENTRY(954),
+ IAVF_PTT_UNUSED_ENTRY(955),
+ IAVF_PTT_UNUSED_ENTRY(956),
+ IAVF_PTT_UNUSED_ENTRY(957),
+ IAVF_PTT_UNUSED_ENTRY(958),
+ IAVF_PTT_UNUSED_ENTRY(959),
+
+ IAVF_PTT_UNUSED_ENTRY(960),
+ IAVF_PTT_UNUSED_ENTRY(961),
+ IAVF_PTT_UNUSED_ENTRY(962),
+ IAVF_PTT_UNUSED_ENTRY(963),
+ IAVF_PTT_UNUSED_ENTRY(964),
+ IAVF_PTT_UNUSED_ENTRY(965),
+ IAVF_PTT_UNUSED_ENTRY(966),
+ IAVF_PTT_UNUSED_ENTRY(967),
+ IAVF_PTT_UNUSED_ENTRY(968),
+ IAVF_PTT_UNUSED_ENTRY(969),
+
+ IAVF_PTT_UNUSED_ENTRY(970),
+ IAVF_PTT_UNUSED_ENTRY(971),
+ IAVF_PTT_UNUSED_ENTRY(972),
+ IAVF_PTT_UNUSED_ENTRY(973),
+ IAVF_PTT_UNUSED_ENTRY(974),
+ IAVF_PTT_UNUSED_ENTRY(975),
+ IAVF_PTT_UNUSED_ENTRY(976),
+ IAVF_PTT_UNUSED_ENTRY(977),
+ IAVF_PTT_UNUSED_ENTRY(978),
+ IAVF_PTT_UNUSED_ENTRY(979),
+
+ IAVF_PTT_UNUSED_ENTRY(980),
+ IAVF_PTT_UNUSED_ENTRY(981),
+ IAVF_PTT_UNUSED_ENTRY(982),
+ IAVF_PTT_UNUSED_ENTRY(983),
+ IAVF_PTT_UNUSED_ENTRY(984),
+ IAVF_PTT_UNUSED_ENTRY(985),
+ IAVF_PTT_UNUSED_ENTRY(986),
+ IAVF_PTT_UNUSED_ENTRY(987),
+ IAVF_PTT_UNUSED_ENTRY(988),
+ IAVF_PTT_UNUSED_ENTRY(989),
+
+ IAVF_PTT_UNUSED_ENTRY(990),
+ IAVF_PTT_UNUSED_ENTRY(991),
+ IAVF_PTT_UNUSED_ENTRY(992),
+ IAVF_PTT_UNUSED_ENTRY(993),
+ IAVF_PTT_UNUSED_ENTRY(994),
+ IAVF_PTT_UNUSED_ENTRY(995),
+ IAVF_PTT_UNUSED_ENTRY(996),
+ IAVF_PTT_UNUSED_ENTRY(997),
+ IAVF_PTT_UNUSED_ENTRY(998),
+ IAVF_PTT_UNUSED_ENTRY(999),
+
+ IAVF_PTT_UNUSED_ENTRY(1000),
+ IAVF_PTT_UNUSED_ENTRY(1001),
+ IAVF_PTT_UNUSED_ENTRY(1002),
+ IAVF_PTT_UNUSED_ENTRY(1003),
+ IAVF_PTT_UNUSED_ENTRY(1004),
+ IAVF_PTT_UNUSED_ENTRY(1005),
+ IAVF_PTT_UNUSED_ENTRY(1006),
+ IAVF_PTT_UNUSED_ENTRY(1007),
+ IAVF_PTT_UNUSED_ENTRY(1008),
+ IAVF_PTT_UNUSED_ENTRY(1009),
+
+ IAVF_PTT_UNUSED_ENTRY(1010),
+ IAVF_PTT_UNUSED_ENTRY(1011),
+ IAVF_PTT_UNUSED_ENTRY(1012),
+ IAVF_PTT_UNUSED_ENTRY(1013),
+ IAVF_PTT_UNUSED_ENTRY(1014),
+ IAVF_PTT_UNUSED_ENTRY(1015),
+ IAVF_PTT_UNUSED_ENTRY(1016),
+ IAVF_PTT_UNUSED_ENTRY(1017),
+ IAVF_PTT_UNUSED_ENTRY(1018),
+ IAVF_PTT_UNUSED_ENTRY(1019),
+
+ IAVF_PTT_UNUSED_ENTRY(1020),
+ IAVF_PTT_UNUSED_ENTRY(1021),
+ IAVF_PTT_UNUSED_ENTRY(1022),
+ IAVF_PTT_UNUSED_ENTRY(1023),
};
/**
@@ -924,7 +1769,7 @@ enum iavf_status iavf_validate_mac_addr(u8 *mac_addr)
**/
enum iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw,
enum virtchnl_ops v_opcode,
- enum iavf_status v_retval,
+ enum virtchnl_status_code v_retval,
u8 *msg, u16 msglen,
struct iavf_asq_cmd_details *cmd_details)
{
@@ -1001,7 +1846,7 @@ void iavf_vf_parse_hw_config(struct iavf_hw *hw,
enum iavf_status iavf_vf_reset(struct iavf_hw *hw)
{
return iavf_aq_send_msg_to_pf(hw, VIRTCHNL_OP_RESET_VF,
- IAVF_SUCCESS, NULL, 0, NULL);
+ VIRTCHNL_STATUS_SUCCESS, NULL, 0, NULL);
}
/**
diff --git a/drivers/common/iavf/iavf_prototype.h b/drivers/common/iavf/iavf_prototype.h
index 1c125d1d94..16cb973bb8 100644
--- a/drivers/common/iavf/iavf_prototype.h
+++ b/drivers/common/iavf/iavf_prototype.h
@@ -69,7 +69,7 @@ enum iavf_status iavf_set_mac_type(struct iavf_hw *hw);
extern struct iavf_rx_ptype_decoded iavf_ptype_lookup[];
-STATIC INLINE struct iavf_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype)
+STATIC INLINE struct iavf_rx_ptype_decoded decode_rx_desc_ptype(u16 ptype)
{
return iavf_ptype_lookup[ptype];
}
@@ -87,7 +87,7 @@ enum iavf_status iavf_vf_reset(struct iavf_hw *hw);
__rte_internal
enum iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw,
enum virtchnl_ops v_opcode,
- enum iavf_status v_retval,
+ enum virtchnl_status_code v_retval,
u8 *msg, u16 msglen,
struct iavf_asq_cmd_details *cmd_details);
enum iavf_status iavf_aq_debug_dump(struct iavf_hw *hw, u8 cluster_id,
diff --git a/drivers/common/iavf/iavf_status.h b/drivers/common/iavf/iavf_status.h
index b96887738d..4dd0f5c5d8 100644
--- a/drivers/common/iavf/iavf_status.h
+++ b/drivers/common/iavf/iavf_status.h
@@ -19,7 +19,7 @@ enum iavf_status {
IAVF_ERR_ADAPTER_STOPPED = -9,
IAVF_ERR_INVALID_MAC_ADDR = -10,
IAVF_ERR_DEVICE_NOT_SUPPORTED = -11,
- IAVF_ERR_MASTER_REQUESTS_PENDING = -12,
+ IAVF_ERR_PRIMARY_REQUESTS_PENDING = -12,
IAVF_ERR_INVALID_LINK_SETTINGS = -13,
IAVF_ERR_AUTONEG_NOT_COMPLETE = -14,
IAVF_ERR_RESET_FAILED = -15,
diff --git a/drivers/common/iavf/iavf_type.h b/drivers/common/iavf/iavf_type.h
index 51267ca3b3..49d262d795 100644
--- a/drivers/common/iavf/iavf_type.h
+++ b/drivers/common/iavf/iavf_type.h
@@ -397,6 +397,45 @@ union iavf_16byte_rx_desc {
} wb; /* writeback */
};
+/* Rx Flex Descriptor NIC Profile
+ * RxDID Profile ID 2
+ * Flex-field 0: RSS hash lower 16-bits
+ * Flex-field 1: RSS hash upper 16-bits
+ * Flex-field 2: Flow ID lower 16-bits
+ * Flex-field 3: Flow ID higher 16-bits
+ * Flex-field 4: reserved, VLAN ID taken from L2Tag
+ */
+struct iavf_32byte_rx_flex_wb {
+ /* Qword 0 */
+ u8 rxdid;
+ u8 mir_id_umb_cast;
+ __le16 ptype_flexi_flags0;
+ __le16 pkt_len;
+ __le16 hdr_len_sph_flex_flags1;
+
+ /* Qword 1 */
+ __le16 status_error0;
+ __le16 l2tag1;
+ __le32 rss_hash;
+
+ /* Qword 2 */
+ __le16 status_error1;
+ u8 flexi_flags2;
+ u8 ts_low;
+ __le16 l2tag2_1st;
+ __le16 l2tag2_2nd;
+
+ /* Qword 3 */
+ __le32 flow_id;
+ union {
+ struct {
+ __le16 rsvd;
+ __le16 flow_id_ipv6;
+ } flex;
+ __le32 ts_high;
+ } flex_ts;
+};
+
union iavf_32byte_rx_desc {
struct {
__le64 pkt_addr; /* Packet buffer address */
@@ -444,6 +483,7 @@ union iavf_32byte_rx_desc {
} hi_dword;
} qword3;
} wb; /* writeback */
+ struct iavf_32byte_rx_flex_wb flex_wb;
};
#define IAVF_RXD_QW0_MIRROR_STATUS_SHIFT 8
@@ -528,6 +568,51 @@ enum iavf_rx_desc_error_l3l4e_fcoe_masks {
#define IAVF_RXD_QW1_PTYPE_SHIFT 30
#define IAVF_RXD_QW1_PTYPE_MASK (0xFFULL << IAVF_RXD_QW1_PTYPE_SHIFT)
+/* for iavf_32byte_rx_flex_wb.ptype_flexi_flags0 member */
+#define IAVF_RX_FLEX_DESC_PTYPE_M (0x3FF) /* 10-bits */
+
+/* for iavf_32byte_rx_flex_wb.pkt_length member */
+#define IAVF_RX_FLEX_DESC_PKT_LEN_M (0x3FFF) /* 14-bits */
+
+enum iavf_rx_flex_desc_status_error_0_bits {
+ /* Note: These are predefined bit offsets */
+ IAVF_RX_FLEX_DESC_STATUS0_DD_S = 0,
+ IAVF_RX_FLEX_DESC_STATUS0_EOF_S,
+ IAVF_RX_FLEX_DESC_STATUS0_HBO_S,
+ IAVF_RX_FLEX_DESC_STATUS0_L3L4P_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XSUM_IPE_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XSUM_L4E_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XSUM_EIPE_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XSUM_EUDPE_S,
+ IAVF_RX_FLEX_DESC_STATUS0_LPBK_S,
+ IAVF_RX_FLEX_DESC_STATUS0_IPV6EXADD_S,
+ IAVF_RX_FLEX_DESC_STATUS0_RXE_S,
+ IAVF_RX_FLEX_DESC_STATUS0_CRCP_S,
+ IAVF_RX_FLEX_DESC_STATUS0_RSS_VALID_S,
+ IAVF_RX_FLEX_DESC_STATUS0_L2TAG1P_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XTRMD0_VALID_S,
+ IAVF_RX_FLEX_DESC_STATUS0_XTRMD1_VALID_S,
+ IAVF_RX_FLEX_DESC_STATUS0_LAST /* this entry must be last!!! */
+};
+
+enum iavf_rx_flex_desc_status_error_1_bits {
+ /* Note: These are predefined bit offsets */
+ /* Bits 3:0 are reserved for inline ipsec status */
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_0 = 0,
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_1,
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_2,
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_3,
+ IAVF_RX_FLEX_DESC_STATUS1_NAT_S,
+ IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_PROCESSED,
+ /* [10:6] reserved */
+ IAVF_RX_FLEX_DESC_STATUS1_L2TAG2P_S = 11,
+ IAVF_RX_FLEX_DESC_STATUS1_XTRMD2_VALID_S = 12,
+ IAVF_RX_FLEX_DESC_STATUS1_XTRMD3_VALID_S = 13,
+ IAVF_RX_FLEX_DESC_STATUS1_XTRMD4_VALID_S = 14,
+ IAVF_RX_FLEX_DESC_STATUS1_XTRMD5_VALID_S = 15,
+ IAVF_RX_FLEX_DESC_STATUS1_LAST /* this entry must be last!!! */
+};
+
/* Packet type non-ip values */
enum iavf_rx_l2_ptype {
IAVF_RX_PTYPE_L2_RESERVED = 0,
@@ -560,7 +645,7 @@ enum iavf_rx_l2_ptype {
};
struct iavf_rx_ptype_decoded {
- u32 ptype:8;
+ u32 ptype:10;
u32 known:1;
u32 outer_ip:1;
u32 outer_ip_ver:1;
diff --git a/drivers/common/iavf/virtchnl.h b/drivers/common/iavf/virtchnl.h
index 269578f7c0..d015a785b9 100644
--- a/drivers/common/iavf/virtchnl.h
+++ b/drivers/common/iavf/virtchnl.h
@@ -23,7 +23,7 @@
*
* The PF is required to return a status code in v_retval for all messages
* except RESET_VF, which does not require any response. The returned value
- * is of virtchnl_status_code type, defined in the shared type.h.
+ * is of virtchnl_status_code type, defined here.
*
* In general, VF driver initialization should roughly follow the order of
* these opcodes. The VF driver must first validate the API version of the
@@ -40,7 +40,11 @@
#include "virtchnl_inline_ipsec.h"
-/* Error Codes */
+/* Error Codes
+ * Note that many older versions of various iAVF drivers convert the reported
+ * status code directly into an iavf_status enumeration. For this reason, it
+ * is important that the values of these enumerations line up.
+ */
enum virtchnl_status_code {
VIRTCHNL_STATUS_SUCCESS = 0,
VIRTCHNL_STATUS_ERR_PARAM = -5,
@@ -281,6 +285,30 @@ static inline const char *virtchnl_op_str(enum virtchnl_ops v_opcode)
}
}
+static inline const char *virtchnl_stat_str(enum virtchnl_status_code v_status)
+{
+ switch (v_status) {
+ case VIRTCHNL_STATUS_SUCCESS:
+ return "VIRTCHNL_STATUS_SUCCESS";
+ case VIRTCHNL_STATUS_ERR_PARAM:
+ return "VIRTCHNL_STATUS_ERR_PARAM";
+ case VIRTCHNL_STATUS_ERR_NO_MEMORY:
+ return "VIRTCHNL_STATUS_ERR_NO_MEMORY";
+ case VIRTCHNL_STATUS_ERR_OPCODE_MISMATCH:
+ return "VIRTCHNL_STATUS_ERR_OPCODE_MISMATCH";
+ case VIRTCHNL_STATUS_ERR_CQP_COMPL_ERROR:
+ return "VIRTCHNL_STATUS_ERR_CQP_COMPL_ERROR";
+ case VIRTCHNL_STATUS_ERR_INVALID_VF_ID:
+ return "VIRTCHNL_STATUS_ERR_INVALID_VF_ID";
+ case VIRTCHNL_STATUS_ERR_ADMIN_QUEUE_ERROR:
+ return "VIRTCHNL_STATUS_ERR_ADMIN_QUEUE_ERROR";
+ case VIRTCHNL_STATUS_ERR_NOT_SUPPORTED:
+ return "VIRTCHNL_STATUS_ERR_NOT_SUPPORTED";
+ default:
+ return "Unknown status code (update virtchnl.h)";
+ }
+}
+
/* These macros are used to generate compilation errors if a structure/union
* is not exactly the correct length. It gives a divide by zero error if the
* structure/union is not of the correct size, otherwise it creates an enum
@@ -1653,6 +1681,10 @@ enum virtchnl_proto_hdr_field {
PROTO_HDR_FIELD_START(VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_DWN),
VIRTCHNL_PROTO_HDR_GTPU_UP_QFI =
PROTO_HDR_FIELD_START(VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_UP),
+ /* L2TPv2 */
+ VIRTCHNL_PROTO_HDR_L2TPV2_SESS_ID =
+ PROTO_HDR_FIELD_START(VIRTCHNL_PROTO_HDR_L2TPV2),
+ VIRTCHNL_PROTO_HDR_L2TPV2_LEN_SESS_ID,
};
struct virtchnl_proto_hdr {
diff --git a/drivers/common/iavf/virtchnl_inline_ipsec.h b/drivers/common/iavf/virtchnl_inline_ipsec.h
index 1e9134501e..2f4bf15725 100644
--- a/drivers/common/iavf/virtchnl_inline_ipsec.h
+++ b/drivers/common/iavf/virtchnl_inline_ipsec.h
@@ -446,6 +446,15 @@ struct virtchnl_ipsec_sp_cfg {
/* Set TC (congestion domain) if true. For future use. */
u8 set_tc;
+
+ /* 0 for NAT-T unsupported, 1 for NAT-T supported */
+ u8 is_udp;
+
+ /* reserved */
+ u8 reserved;
+
+ /* NAT-T UDP port number. Only valid in case NAT-T supported */
+ u16 udp_port;
} __rte_packed;
diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 84f4900ee5..2e381ee174 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -1734,14 +1734,6 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
}
}
- errval = rte_eth_dev_set_mtu(slave_eth_dev->data->port_id,
- bonded_eth_dev->data->mtu);
- if (errval != 0 && errval != -ENOTSUP) {
- RTE_BOND_LOG(ERR, "rte_eth_dev_set_mtu: port %u, err (%d)",
- slave_eth_dev->data->port_id, errval);
- return errval;
- }
-
/* Configure device */
errval = rte_eth_dev_configure(slave_eth_dev->data->port_id,
nb_rx_queues, nb_tx_queues,
@@ -1752,6 +1744,14 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
return errval;
}
+ errval = rte_eth_dev_set_mtu(slave_eth_dev->data->port_id,
+ bonded_eth_dev->data->mtu);
+ if (errval != 0 && errval != -ENOTSUP) {
+ RTE_BOND_LOG(ERR, "rte_eth_dev_set_mtu: port %u, err (%d)",
+ slave_eth_dev->data->port_id, errval);
+ return errval;
+ }
+
/* Setup Rx Queues */
for (q_id = 0; q_id < bonded_eth_dev->data->nb_rx_queues; q_id++) {
bd_rx_q = (struct bond_rx_queue *)bonded_eth_dev->data->rx_queues[q_id];
diff --git a/drivers/net/i40e/base/README b/drivers/net/i40e/base/README
index 2e4fa5a921..b1da53db2b 100644
--- a/drivers/net/i40e/base/README
+++ b/drivers/net/i40e/base/README
@@ -6,7 +6,7 @@ Intel® I40E driver
==================
This directory contains source code of FreeBSD i40e driver of version
-cid-i40e.2021.08.16.tar.gz released by the team which develops
+cid-i40e.2022.03.08.tar.gz released by the team which develops
basic drivers for any i40e NIC. The directory of base/ contains the
original source package.
This driver is valid for the product(s) listed below
diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
index 9eee104063..122a3782a4 100644
--- a/drivers/net/i40e/base/i40e_common.c
+++ b/drivers/net/i40e/base/i40e_common.c
@@ -37,6 +37,7 @@ enum i40e_status_code i40e_set_mac_type(struct i40e_hw *hw)
case I40E_DEV_ID_10G_B:
case I40E_DEV_ID_10G_SFP:
case I40E_DEV_ID_5G_BASE_T_BC:
+ case I40E_DEV_ID_1G_BASE_T_BC:
case I40E_DEV_ID_20G_KR2:
case I40E_DEV_ID_20G_KR2_A:
case I40E_DEV_ID_25G_B:
@@ -54,6 +55,7 @@ enum i40e_status_code i40e_set_mac_type(struct i40e_hw *hw)
case I40E_DEV_ID_1G_BASE_T_X722:
case I40E_DEV_ID_10G_BASE_T_X722:
case I40E_DEV_ID_SFP_I_X722:
+ case I40E_DEV_ID_SFP_X722_A:
hw->mac.type = I40E_MAC_X722;
break;
#if defined(INTEGRATED_VF) || defined(VF_DRIVER)
@@ -176,8 +178,8 @@ const char *i40e_stat_str(struct i40e_hw *hw, enum i40e_status_code stat_err)
return "I40E_ERR_INVALID_MAC_ADDR";
case I40E_ERR_DEVICE_NOT_SUPPORTED:
return "I40E_ERR_DEVICE_NOT_SUPPORTED";
- case I40E_ERR_MASTER_REQUESTS_PENDING:
- return "I40E_ERR_MASTER_REQUESTS_PENDING";
+ case I40E_ERR_PRIMARY_REQUESTS_PENDING:
+ return "I40E_ERR_PRIMARY_REQUESTS_PENDING";
case I40E_ERR_INVALID_LINK_SETTINGS:
return "I40E_ERR_INVALID_LINK_SETTINGS";
case I40E_ERR_AUTONEG_NOT_COMPLETE:
@@ -1624,6 +1626,35 @@ u32 i40e_led_get(struct i40e_hw *hw)
return mode;
}
+/**
+ * i40e_led_get_blink - return current LED blink setting
+ * @hw: pointer to the hw struct
+ *
+ * The value returned is the LED_BLINK bit as defined in the
+ * GPIO register definitions (0 = no blink, 1 = do blink).
+ **/
+bool i40e_led_get_blink(struct i40e_hw *hw)
+{
+ bool blink = 0;
+ int i;
+
+ /* as per the documentation GPIO 22-29 are the LED
+ * GPIO pins named LED0..LED7
+ */
+ for (i = I40E_LED0; i <= I40E_GLGEN_GPIO_CTL_MAX_INDEX; i++) {
+ u32 gpio_val = i40e_led_is_mine(hw, i);
+
+ if (!gpio_val)
+ continue;
+
+ blink = (gpio_val & I40E_GLGEN_GPIO_CTL_LED_BLINK_MASK) >>
+ I40E_GLGEN_GPIO_CTL_LED_BLINK_SHIFT;
+ break;
+ }
+
+ return blink;
+}
+
/**
* i40e_led_set - set new on/off mode
* @hw: pointer to the hw struct
@@ -5661,7 +5692,6 @@ STATIC enum i40e_status_code i40e_validate_filter_settings(struct i40e_hw *hw,
struct i40e_filter_control_settings *settings)
{
u32 fcoe_cntx_size, fcoe_filt_size;
- u32 pe_cntx_size, pe_filt_size;
u32 fcoe_fmax;
u32 val;
@@ -5706,8 +5736,6 @@ STATIC enum i40e_status_code i40e_validate_filter_settings(struct i40e_hw *hw,
case I40E_HASH_FILTER_SIZE_256K:
case I40E_HASH_FILTER_SIZE_512K:
case I40E_HASH_FILTER_SIZE_1M:
- pe_filt_size = I40E_HASH_FILTER_BASE_SIZE;
- pe_filt_size <<= (u32)settings->pe_filt_num;
break;
default:
return I40E_ERR_PARAM;
@@ -5724,8 +5752,6 @@ STATIC enum i40e_status_code i40e_validate_filter_settings(struct i40e_hw *hw,
case I40E_DMA_CNTX_SIZE_64K:
case I40E_DMA_CNTX_SIZE_128K:
case I40E_DMA_CNTX_SIZE_256K:
- pe_cntx_size = I40E_DMA_CNTX_BASE_SIZE;
- pe_cntx_size <<= (u32)settings->pe_cntx_num;
break;
default:
return I40E_ERR_PARAM;
@@ -6910,6 +6936,7 @@ enum i40e_status_code i40e_write_phy_register(struct i40e_hw *hw,
case I40E_DEV_ID_10G_BASE_T4:
case I40E_DEV_ID_10G_BASE_T_BC:
case I40E_DEV_ID_5G_BASE_T_BC:
+ case I40E_DEV_ID_1G_BASE_T_BC:
case I40E_DEV_ID_10G_BASE_T_X722:
case I40E_DEV_ID_25G_B:
case I40E_DEV_ID_25G_SFP28:
@@ -6946,7 +6973,9 @@ enum i40e_status_code i40e_read_phy_register(struct i40e_hw *hw,
break;
case I40E_DEV_ID_10G_BASE_T:
case I40E_DEV_ID_10G_BASE_T4:
+ case I40E_DEV_ID_10G_BASE_T_BC:
case I40E_DEV_ID_5G_BASE_T_BC:
+ case I40E_DEV_ID_1G_BASE_T_BC:
case I40E_DEV_ID_10G_BASE_T_X722:
case I40E_DEV_ID_25G_B:
case I40E_DEV_ID_25G_SFP28:
@@ -8198,7 +8227,8 @@ i40e_validate_profile(struct i40e_hw *hw, struct i40e_profile_segment *profile,
u32 sec_off;
u32 i;
- if (track_id == I40E_DDP_TRACKID_INVALID) {
+ if (track_id == I40E_DDP_TRACKID_INVALID ||
+ track_id == I40E_DDP_TRACKID_RDONLY) {
i40e_debug(hw, I40E_DEBUG_PACKAGE, "Invalid track_id\n");
return I40E_NOT_SUPPORTED;
}
diff --git a/drivers/net/i40e/base/i40e_devids.h b/drivers/net/i40e/base/i40e_devids.h
index 02ae7be550..be261423b8 100644
--- a/drivers/net/i40e/base/i40e_devids.h
+++ b/drivers/net/i40e/base/i40e_devids.h
@@ -26,6 +26,7 @@
#define I40E_DEV_ID_XXV710_N3000 0x0D58
#define I40E_DEV_ID_10G_BASE_T_BC 0x15FF
#define I40E_DEV_ID_5G_BASE_T_BC 0x101F
+#define I40E_DEV_ID_1G_BASE_T_BC 0x0DD2
#if defined(INTEGRATED_VF) || defined(VF_DRIVER) || defined(I40E_NDIS_SUPPORT)
#define I40E_DEV_ID_VF 0x154C
#define I40E_DEV_ID_VF_HV 0x1571
@@ -48,6 +49,7 @@
#define I40E_DEV_ID_1G_BASE_T_X722 0x37D1
#define I40E_DEV_ID_10G_BASE_T_X722 0x37D2
#define I40E_DEV_ID_SFP_I_X722 0x37D3
+#define I40E_DEV_ID_SFP_X722_A 0x0DDA
#if defined(INTEGRATED_VF) || defined(VF_DRIVER) || defined(I40E_NDIS_SUPPORT)
#define I40E_DEV_ID_X722_VF 0x37CD
#endif /* VF_DRIVER */
diff --git a/drivers/net/i40e/base/i40e_prototype.h b/drivers/net/i40e/base/i40e_prototype.h
index 29c86c7fe8..8c21ac71ab 100644
--- a/drivers/net/i40e/base/i40e_prototype.h
+++ b/drivers/net/i40e/base/i40e_prototype.h
@@ -73,6 +73,7 @@ const char *i40e_stat_str(struct i40e_hw *hw, enum i40e_status_code stat_err);
#ifdef PF_DRIVER
u32 i40e_led_get(struct i40e_hw *hw);
+bool i40e_led_get_blink(struct i40e_hw *hw);
void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink);
enum i40e_status_code i40e_led_set_phy(struct i40e_hw *hw, bool on,
u16 led_addr, u32 mode);
diff --git a/drivers/net/i40e/base/i40e_register.h b/drivers/net/i40e/base/i40e_register.h
index 75eff845f1..651b0230f7 100644
--- a/drivers/net/i40e/base/i40e_register.h
+++ b/drivers/net/i40e/base/i40e_register.h
@@ -2395,10 +2395,14 @@
#define I40E_GL_FCOERPDC_MAX_INDEX 143
#define I40E_GL_FCOERPDC_FCOERPDC_SHIFT 0
#define I40E_GL_FCOERPDC_FCOERPDC_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_FCOERPDC_FCOERPDC_SHIFT)
-#define I40E_GL_RXERR1_L(_i) (0x00318000 + ((_i) * 8)) /* _i=0...143 */ /* Reset: CORER */
-#define I40E_GL_RXERR1_L_MAX_INDEX 143
-#define I40E_GL_RXERR1_L_FCOEDIFRC_SHIFT 0
-#define I40E_GL_RXERR1_L_FCOEDIFRC_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1_L_FCOEDIFRC_SHIFT)
+#define I40E_GL_RXERR1H(_i) (0x00318004 + ((_i) * 8)) /* _i=0...143 */ /* Reset: CORER */
+#define I40E_GL_RXERR1H_MAX_INDEX 143
+#define I40E_GL_RXERR1H_RXERR1H_SHIFT 0
+#define I40E_GL_RXERR1H_RXERR1H_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1H_RXERR1H_SHIFT)
+#define I40E_GL_RXERR1L(_i) (0x00318000 + ((_i) * 8)) /* _i=0...143 */ /* Reset: CORER */
+#define I40E_GL_RXERR1L_MAX_INDEX 143
+#define I40E_GL_RXERR1L_RXERR1L_SHIFT 0
+#define I40E_GL_RXERR1L_RXERR1L_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1L_RXERR1L_SHIFT)
#define I40E_GL_RXERR2_L(_i) (0x0031c000 + ((_i) * 8)) /* _i=0...143 */ /* Reset: CORER */
#define I40E_GL_RXERR2_L_MAX_INDEX 143
#define I40E_GL_RXERR2_L_FCOEDIXAC_SHIFT 0
@@ -3625,27 +3629,6 @@
#define I40E_GLHMC_PETIMEROBJSZ 0x000C2080 /* Reset: CORER */
#define I40E_GLHMC_PETIMEROBJSZ_PMPETIMEROBJSZ_SHIFT 0
#define I40E_GLHMC_PETIMEROBJSZ_PMPETIMEROBJSZ_MASK I40E_MASK(0xF, I40E_GLHMC_PETIMEROBJSZ_PMPETIMEROBJSZ_SHIFT)
-#define I40E_GLHMC_PEXFBASE(_i) (0x000C4e00 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
-#define I40E_GLHMC_PEXFBASE_MAX_INDEX 15
-#define I40E_GLHMC_PEXFBASE_FPMPEXFBASE_SHIFT 0
-#define I40E_GLHMC_PEXFBASE_FPMPEXFBASE_MASK I40E_MASK(0xFFFFFF, I40E_GLHMC_PEXFBASE_FPMPEXFBASE_SHIFT)
-#define I40E_GLHMC_PEXFCNT(_i) (0x000C4f00 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
-#define I40E_GLHMC_PEXFCNT_MAX_INDEX 15
-#define I40E_GLHMC_PEXFCNT_FPMPEXFCNT_SHIFT 0
-#define I40E_GLHMC_PEXFCNT_FPMPEXFCNT_MASK I40E_MASK(0x1FFFFFFF, I40E_GLHMC_PEXFCNT_FPMPEXFCNT_SHIFT)
-#define I40E_GLHMC_PEXFFLBASE(_i) (0x000C5000 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
-#define I40E_GLHMC_PEXFFLBASE_MAX_INDEX 15
-#define I40E_GLHMC_PEXFFLBASE_FPMPEXFFLBASE_SHIFT 0
-#define I40E_GLHMC_PEXFFLBASE_FPMPEXFFLBASE_MASK I40E_MASK(0xFFFFFF, I40E_GLHMC_PEXFFLBASE_FPMPEXFFLBASE_SHIFT)
-#define I40E_GLHMC_PEXFFLMAX 0x000C204c /* Reset: CORER */
-#define I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_SHIFT 0
-#define I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_MASK I40E_MASK(0x1FFFFFF, I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_SHIFT)
-#define I40E_GLHMC_PEXFMAX 0x000C2048 /* Reset: CORER */
-#define I40E_GLHMC_PEXFMAX_PMPEXFMAX_SHIFT 0
-#define I40E_GLHMC_PEXFMAX_PMPEXFMAX_MASK I40E_MASK(0x3FFFFFF, I40E_GLHMC_PEXFMAX_PMPEXFMAX_SHIFT)
-#define I40E_GLHMC_PEXFOBJSZ 0x000C2044 /* Reset: CORER */
-#define I40E_GLHMC_PEXFOBJSZ_PMPEXFOBJSZ_SHIFT 0
-#define I40E_GLHMC_PEXFOBJSZ_PMPEXFOBJSZ_MASK I40E_MASK(0xF, I40E_GLHMC_PEXFOBJSZ_PMPEXFOBJSZ_SHIFT)
#define I40E_GLHMC_PFPESDPART(_i) (0x000C0880 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
#define I40E_GLHMC_PFPESDPART_MAX_INDEX 15
#define I40E_GLHMC_PFPESDPART_PMSDBASE_SHIFT 0
@@ -3766,18 +3749,6 @@
#define I40E_GLHMC_VFPETIMERCNT_MAX_INDEX 31
#define I40E_GLHMC_VFPETIMERCNT_FPMPETIMERCNT_SHIFT 0
#define I40E_GLHMC_VFPETIMERCNT_FPMPETIMERCNT_MASK I40E_MASK(0x1FFFFFFF, I40E_GLHMC_VFPETIMERCNT_FPMPETIMERCNT_SHIFT)
-#define I40E_GLHMC_VFPEXFBASE(_i) (0x000Cce00 + ((_i) * 4)) /* _i=0...31 */ /* Reset: CORER */
-#define I40E_GLHMC_VFPEXFBASE_MAX_INDEX 31
-#define I40E_GLHMC_VFPEXFBASE_FPMPEXFBASE_SHIFT 0
-#define I40E_GLHMC_VFPEXFBASE_FPMPEXFBASE_MASK I40E_MASK(0xFFFFFF, I40E_GLHMC_VFPEXFBASE_FPMPEXFBASE_SHIFT)
-#define I40E_GLHMC_VFPEXFCNT(_i) (0x000Ccf00 + ((_i) * 4)) /* _i=0...31 */ /* Reset: CORER */
-#define I40E_GLHMC_VFPEXFCNT_MAX_INDEX 31
-#define I40E_GLHMC_VFPEXFCNT_FPMPEXFCNT_SHIFT 0
-#define I40E_GLHMC_VFPEXFCNT_FPMPEXFCNT_MASK I40E_MASK(0x1FFFFFFF, I40E_GLHMC_VFPEXFCNT_FPMPEXFCNT_SHIFT)
-#define I40E_GLHMC_VFPEXFFLBASE(_i) (0x000Cd000 + ((_i) * 4)) /* _i=0...31 */ /* Reset: CORER */
-#define I40E_GLHMC_VFPEXFFLBASE_MAX_INDEX 31
-#define I40E_GLHMC_VFPEXFFLBASE_FPMPEXFFLBASE_SHIFT 0
-#define I40E_GLHMC_VFPEXFFLBASE_FPMPEXFFLBASE_MASK I40E_MASK(0xFFFFFF, I40E_GLHMC_VFPEXFFLBASE_FPMPEXFFLBASE_SHIFT)
#define I40E_GLHMC_VFSDPART(_i) (0x000C8800 + ((_i) * 4)) /* _i=0...31 */ /* Reset: CORER */
#define I40E_GLHMC_VFSDPART_MAX_INDEX 31
#define I40E_GLHMC_VFSDPART_PMSDBASE_SHIFT 0
diff --git a/drivers/net/i40e/base/i40e_status.h b/drivers/net/i40e/base/i40e_status.h
index cd72169f14..89b05ede3e 100644
--- a/drivers/net/i40e/base/i40e_status.h
+++ b/drivers/net/i40e/base/i40e_status.h
@@ -19,7 +19,7 @@ enum i40e_status_code {
I40E_ERR_ADAPTER_STOPPED = -9,
I40E_ERR_INVALID_MAC_ADDR = -10,
I40E_ERR_DEVICE_NOT_SUPPORTED = -11,
- I40E_ERR_MASTER_REQUESTS_PENDING = -12,
+ I40E_ERR_PRIMARY_REQUESTS_PENDING = -12,
I40E_ERR_INVALID_LINK_SETTINGS = -13,
I40E_ERR_AUTONEG_NOT_COMPLETE = -14,
I40E_ERR_RESET_FAILED = -15,
diff --git a/drivers/net/i40e/base/i40e_type.h b/drivers/net/i40e/base/i40e_type.h
index f4a3d66759..3cfb0ca430 100644
--- a/drivers/net/i40e/base/i40e_type.h
+++ b/drivers/net/i40e/base/i40e_type.h
@@ -1428,6 +1428,7 @@ struct i40e_eth_stats {
u64 tx_broadcast; /* bptc */
u64 tx_discards; /* tdpc */
u64 tx_errors; /* tepc */
+ u64 rx_discards_other; /* rxerr1 */
};
/* Statistics collected per VEB per TC */
@@ -1922,6 +1923,10 @@ struct i40e_lldp_variables {
#define I40E_PFQF_CTL_0_HASHLUTSIZE_512 0x00010000
/* INPUT SET MASK for RSS, flow director, and flexible payload */
+#define I40E_X722_L3_SRC_SHIFT 49
+#define I40E_X722_L3_SRC_MASK (0x3ULL << I40E_X722_L3_SRC_SHIFT)
+#define I40E_X722_L3_DST_SHIFT 41
+#define I40E_X722_L3_DST_MASK (0x3ULL << I40E_X722_L3_DST_SHIFT)
#define I40E_L3_SRC_SHIFT 47
#define I40E_L3_SRC_MASK (0x3ULL << I40E_L3_SRC_SHIFT)
#define I40E_L3_V6_SRC_SHIFT 43
@@ -1990,6 +1995,8 @@ struct i40e_metadata_segment {
#define I40E_DDP_TRACKID_INVALID 0xFFFFFFFF
#define I40E_DDP_TRACKID_GRP_MSK 0x00FF0000
#define I40E_DDP_TRACKID_GRP_COMP_ALL 0xFF
+#define I40E_DDP_TRACKID_PKGTYPE_MSK 0xFF000000
+#define I40E_DDP_TRACKID_PKGTYPE_RDONLY 0
u32 track_id;
char name[I40E_DDP_NAME_SIZE];
};
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index c0bfff43ee..840df56056 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -386,6 +386,7 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev,
struct rte_ether_addr *mac_addr);
static int i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
+static void i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size);
static int i40e_ethertype_filter_convert(
const struct rte_eth_ethertype_filter *input,
@@ -427,7 +428,10 @@ static const struct rte_pci_id pci_id_i40e_map[] = {
{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_10G_BASE_T4) },
{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_25G_B) },
{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_25G_SFP28) },
+#ifdef X722_A0_SUPPORT
{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_X722_A0) },
+#endif
+ { RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_SFP_X722_A) },
{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_KX_X722) },
{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_QSFP_X722) },
{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_SFP_X722) },
@@ -1709,11 +1713,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
*/
i40e_add_tx_flow_control_drop_filter(pf);
- /* Set the max frame size to 0x2600 by default,
- * in case other drivers changed the default value.
- */
- i40e_aq_set_mac_config(hw, I40E_FRAME_SIZE_MAX, TRUE, false, 0, NULL);
-
/* initialize RSS rule list */
TAILQ_INIT(&pf->rss_config_list);
@@ -2364,6 +2363,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
uint32_t intr_vector = 0;
struct i40e_vsi *vsi;
uint16_t nb_rxq, nb_txq;
+ uint16_t max_frame_size;
hw->adapter_stopped = 0;
@@ -2502,6 +2502,9 @@ i40e_dev_start(struct rte_eth_dev *dev)
"please call hierarchy_commit() "
"before starting the port");
+ max_frame_size = dev->data->mtu + I40E_ETH_OVERHEAD;
+ i40e_set_mac_max_frame(dev, max_frame_size);
+
return I40E_SUCCESS;
tx_err:
@@ -2848,6 +2851,9 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev)
return i40e_phy_conf_link(hw, abilities, speed, false);
}
+#define CHECK_INTERVAL 100 /* 100ms */
+#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */
+
static __rte_always_inline void
update_link_reg(struct i40e_hw *hw, struct rte_eth_link *link)
{
@@ -2914,8 +2920,6 @@ static __rte_always_inline void
update_link_aq(struct i40e_hw *hw, struct rte_eth_link *link,
bool enable_lse, int wait_to_complete)
{
-#define CHECK_INTERVAL 100 /* 100ms */
-#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */
uint32_t rep_cnt = MAX_REPEAT_TIME;
struct i40e_link_status link_status;
int status;
@@ -3202,7 +3206,7 @@ i40e_read_stats_registers(struct i40e_pf *pf, struct i40e_hw *hw)
&os->eth.rx_unknown_protocol,
&ns->eth.rx_unknown_protocol);
i40e_stat_update_48(hw, I40E_GL_RXERR1_H(hw->pf_id + I40E_MAX_VF),
- I40E_GL_RXERR1_L(hw->pf_id + I40E_MAX_VF),
+ I40E_GL_RXERR1L(hw->pf_id + I40E_MAX_VF),
pf->offset_loaded, &pf->rx_err1_offset,
&pf->rx_err1);
i40e_stat_update_48_in_64(hw, I40E_GLPRT_GOTCH(hw->port),
@@ -6719,6 +6723,7 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev)
if (!ret)
rte_eth_dev_callback_process(dev,
RTE_ETH_EVENT_INTR_LSC, NULL);
+
break;
default:
PMD_DRV_LOG(DEBUG, "Request %u is not supported yet",
@@ -12103,6 +12108,31 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
return ret;
}
+static void
+i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size)
+{
+ struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+ uint32_t rep_cnt = MAX_REPEAT_TIME;
+ struct rte_eth_link link;
+ enum i40e_status_code status;
+
+ do {
+ update_link_reg(hw, &link);
+ if (link.link_status)
+ break;
+
+ rte_delay_ms(CHECK_INTERVAL);
+ } while (--rep_cnt);
+
+ if (link.link_status) {
+ status = i40e_aq_set_mac_config(hw, size, TRUE, 0, false, NULL);
+ if (status != I40E_SUCCESS)
+ PMD_DRV_LOG(ERR, "Failed to set max frame size at port level");
+ } else {
+ PMD_DRV_LOG(ERR, "Set max frame size at port level not applicable on link down");
+ }
+}
+
RTE_LOG_REGISTER_SUFFIX(i40e_logtype_init, init, NOTICE);
RTE_LOG_REGISTER_SUFFIX(i40e_logtype_driver, driver, NOTICE);
#ifdef RTE_ETHDEV_DEBUG_RX
diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
index ccb3924a5f..43b0fcea6b 100644
--- a/drivers/net/i40e/i40e_pf.c
+++ b/drivers/net/i40e/i40e_pf.c
@@ -597,14 +597,14 @@ i40e_pf_config_irq_link_list(struct i40e_pf_vf *vf,
tempmap = vvm->rxq_map;
for (i = 0; i < sizeof(vvm->rxq_map) * BITS_PER_CHAR; i++) {
if (tempmap & 0x1)
- linklistmap |= (1 << (2 * i));
+ linklistmap |= RTE_BIT64(2 * i);
tempmap >>= 1;
}
tempmap = vvm->txq_map;
for (i = 0; i < sizeof(vvm->txq_map) * BITS_PER_CHAR; i++) {
if (tempmap & 0x1)
- linklistmap |= (1 << (2 * i + 1));
+ linklistmap |= RTE_BIT64(2 * i + 1);
tempmap >>= 1;
}
diff --git a/drivers/net/i40e/i40e_regs.h b/drivers/net/i40e/i40e_regs.h
index b19bb1d5a5..cf62c9dfb7 100644
--- a/drivers/net/i40e/i40e_regs.h
+++ b/drivers/net/i40e/i40e_regs.h
@@ -586,9 +586,6 @@ static const struct i40e_reg_info i40e_regs_others[] = {
{I40E_GLHMC_PEARPMAX, 0, 0, 0, 0, "GLHMC_PEARPMAX"},
{I40E_GLHMC_PEMROBJSZ, 0, 0, 0, 0, "GLHMC_PEMROBJSZ"},
{I40E_GLHMC_PEMRMAX, 0, 0, 0, 0, "GLHMC_PEMRMAX"},
- {I40E_GLHMC_PEXFOBJSZ, 0, 0, 0, 0, "GLHMC_PEXFOBJSZ"},
- {I40E_GLHMC_PEXFMAX, 0, 0, 0, 0, "GLHMC_PEXFMAX"},
- {I40E_GLHMC_PEXFFLMAX, 0, 0, 0, 0, "GLHMC_PEXFFLMAX"},
{I40E_GLHMC_PEQ1OBJSZ, 0, 0, 0, 0, "GLHMC_PEQ1OBJSZ"},
{I40E_GLHMC_PEQ1MAX, 0, 0, 0, 0, "GLHMC_PEQ1MAX"},
{I40E_GLHMC_PEQ1FLMAX, 0, 0, 0, 0, "GLHMC_PEQ1FLMAX"},
@@ -616,9 +613,6 @@ static const struct i40e_reg_info i40e_regs_others[] = {
{I40E_GLHMC_APBVTINUSEBASE(0), 15, 4, 0, 0, "GLHMC_APBVTINUSEBASE"},
{I40E_GLHMC_PEMRBASE(0), 15, 4, 0, 0, "GLHMC_PEMRBASE"},
{I40E_GLHMC_PEMRCNT(0), 15, 4, 0, 0, "GLHMC_PEMRCNT"},
- {I40E_GLHMC_PEXFBASE(0), 15, 4, 0, 0, "GLHMC_PEXFBASE"},
- {I40E_GLHMC_PEXFCNT(0), 15, 4, 0, 0, "GLHMC_PEXFCNT"},
- {I40E_GLHMC_PEXFFLBASE(0), 15, 4, 0, 0, "GLHMC_PEXFFLBASE"},
{I40E_GLHMC_PEQ1BASE(0), 15, 4, 0, 0, "GLHMC_PEQ1BASE"},
{I40E_GLHMC_PEQ1CNT(0), 15, 4, 0, 0, "GLHMC_PEQ1CNT"},
{I40E_GLHMC_PEQ1FLBASE(0), 15, 4, 0, 0, "GLHMC_PEQ1FLBASE"},
@@ -653,9 +647,6 @@ static const struct i40e_reg_info i40e_regs_others[] = {
{I40E_GLHMC_VFAPBVTINUSEBASE(0), 31, 4, 0, 0, "GLHMC_VFAPBVTINUSEBASE"},
{I40E_GLHMC_VFPEMRBASE(0), 31, 4, 0, 0, "GLHMC_VFPEMRBASE"},
{I40E_GLHMC_VFPEMRCNT(0), 31, 4, 0, 0, "GLHMC_VFPEMRCNT"},
- {I40E_GLHMC_VFPEXFBASE(0), 31, 4, 0, 0, "GLHMC_VFPEXFBASE"},
- {I40E_GLHMC_VFPEXFCNT(0), 31, 4, 0, 0, "GLHMC_VFPEXFCNT"},
- {I40E_GLHMC_VFPEXFFLBASE(0), 31, 4, 0, 0, "GLHMC_VFPEXFFLBASE"},
{I40E_GLHMC_VFPEQ1BASE(0), 31, 4, 0, 0, "GLHMC_VFPEQ1BASE"},
{I40E_GLHMC_VFPEQ1CNT(0), 31, 4, 0, 0, "GLHMC_VFPEQ1CNT"},
{I40E_GLHMC_VFPEQ1FLBASE(0), 31, 4, 0, 0, "GLHMC_VFPEQ1FLBASE"},
@@ -896,7 +887,7 @@ static const struct i40e_reg_info i40e_regs_others[] = {
{I40E_GL_FCOEDDPC(0), 143, 8, 0, 0, "GL_FCOEDDPC"},
{I40E_GL_FCOECRC(0), 143, 8, 0, 0, "GL_FCOECRC"},
{I40E_GL_FCOEPRC(0), 143, 8, 0, 0, "GL_FCOEPRC"},
- {I40E_GL_RXERR1_L(0), 143, 8, 0, 0, "GL_RXERR1_L"},
+ {I40E_GL_RXERR1L(0), 143, 8, 0, 0, "GL_RXERR1_L"},
{I40E_GL_FCOEDIFEC(0), 143, 8, 0, 0, "GL_FCOEDIFEC"},
{I40E_GL_RXERR2_L(0), 143, 8, 0, 0, "GL_RXERR2_L"},
{I40E_GL_FCOEDWRCL(0), 143, 8, 0, 0, "GL_FCOEDWRCL"},
diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h b/drivers/net/i40e/i40e_rxtx_vec_common.h
index f9a7f46550..959832ed6a 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_common.h
+++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
@@ -103,7 +103,7 @@ i40e_tx_free_bufs(struct i40e_tx_queue *txq)
if (txq->offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) {
for (i = 0; i < n; i++) {
free[i] = txep[i].mbuf;
- txep[i].mbuf = NULL;
+ /* no need to reset txep[i].mbuf in vector path */
}
rte_mempool_put_bulk(free[0]->pool, (void **)free, n);
goto done;
diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 377d7bc7a6..502b952837 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -2278,6 +2278,9 @@ iavf_init_vf(struct rte_eth_dev *dev)
}
}
+ if (vf->vsi_res->num_queue_pairs > IAVF_MAX_NUM_QUEUES_DFLT)
+ vf->lv_enabled = true;
+
if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC) {
if (iavf_get_supported_rxdid(adapter) != 0) {
PMD_INIT_LOG(ERR, "failed to do get supported rxdid");
diff --git a/drivers/net/iavf/iavf_ipsec_crypto.c b/drivers/net/iavf/iavf_ipsec_crypto.c
index 884169e061..144d8cd520 100644
--- a/drivers/net/iavf/iavf_ipsec_crypto.c
+++ b/drivers/net/iavf/iavf_ipsec_crypto.c
@@ -614,7 +614,7 @@ set_session_parameter(struct iavf_security_ctx *iavf_sctx,
if (conf->crypto_xform->auth.algo == RTE_CRYPTO_AUTH_AES_GMAC) {
sess->block_sz = get_auth_blocksize(iavf_sctx,
conf->crypto_xform->auth.algo);
- sess->iv_sz = conf->crypto_xform->auth.iv.length;
+ sess->iv_sz = sizeof(uint64_t); /* iv len inc. salt */
sess->icv_sz = conf->crypto_xform->auth.digest_length;
} else {
sess->block_sz = get_cipher_blocksize(iavf_sctx,
@@ -736,7 +736,9 @@ iavf_ipsec_crypto_inbound_security_policy_add(struct iavf_adapter *adapter,
uint8_t is_v4,
rte_be32_t v4_dst_addr,
uint8_t *v6_dst_addr,
- uint8_t drop)
+ uint8_t drop,
+ bool is_udp,
+ uint16_t udp_port)
{
struct inline_ipsec_msg *request = NULL, *response = NULL;
size_t request_len, response_len;
@@ -781,6 +783,8 @@ iavf_ipsec_crypto_inbound_security_policy_add(struct iavf_adapter *adapter,
/** Traffic Class/Congestion Domain currently not support */
request->ipsec_data.sp_cfg->set_tc = 0;
request->ipsec_data.sp_cfg->cgd = 0;
+ request->ipsec_data.sp_cfg->is_udp = is_udp;
+ request->ipsec_data.sp_cfg->udp_port = htons(udp_port);
response_len = sizeof(struct inline_ipsec_msg) +
sizeof(struct virtchnl_ipsec_sp_cfg_resp);
@@ -1352,6 +1356,8 @@ iavf_ipsec_crypto_set_security_capabililites(struct iavf_security_ctx
capabilities = rte_zmalloc("crypto_cap",
sizeof(struct rte_cryptodev_capabilities) *
(number_of_capabilities + 1), 0);
+ if (!capabilities)
+ return -ENOMEM;
capabilities[number_of_capabilities].op = RTE_CRYPTO_OP_TYPE_UNDEFINED;
/**
@@ -1551,8 +1557,8 @@ iavf_security_ctx_destroy(struct iavf_adapter *adapter)
rte_free(iavf_sctx);
rte_free(sctx);
- iavf_sctx = NULL;
- sctx = NULL;
+ adapter->security_ctx = NULL;
+ adapter->vf.eth_dev->security_ctx = NULL;
return 0;
}
@@ -1623,6 +1629,7 @@ struct iavf_ipsec_flow_item {
struct rte_ipv6_hdr ipv6_hdr;
};
struct rte_udp_hdr udp_hdr;
+ uint8_t is_udp;
};
static void
@@ -1735,6 +1742,7 @@ iavf_ipsec_flow_item_parse(struct rte_eth_dev *ethdev,
parse_udp_item((const struct rte_flow_item_udp *)
pattern[2].spec,
&ipsec_flow->udp_hdr);
+ ipsec_flow->is_udp = true;
ipsec_flow->spi =
((const struct rte_flow_item_esp *)
pattern[3].spec)->hdr.spi;
@@ -1804,7 +1812,9 @@ iavf_ipsec_flow_create(struct iavf_adapter *ad,
1,
ipsec_flow->ipv4_hdr.dst_addr,
NULL,
- 0);
+ 0,
+ ipsec_flow->is_udp,
+ ipsec_flow->udp_hdr.dst_port);
} else {
ipsec_flow->id =
iavf_ipsec_crypto_inbound_security_policy_add(ad,
@@ -1812,7 +1822,9 @@ iavf_ipsec_flow_create(struct iavf_adapter *ad,
0,
0,
ipsec_flow->ipv6_hdr.dst_addr,
- 0);
+ 0,
+ ipsec_flow->is_udp,
+ ipsec_flow->udp_hdr.dst_port);
}
if (ipsec_flow->id < 1) {
diff --git a/drivers/net/iavf/iavf_ipsec_crypto.h b/drivers/net/iavf/iavf_ipsec_crypto.h
index 4e4c8798ec..d9652edcab 100644
--- a/drivers/net/iavf/iavf_ipsec_crypto.h
+++ b/drivers/net/iavf/iavf_ipsec_crypto.h
@@ -145,7 +145,9 @@ iavf_ipsec_crypto_inbound_security_policy_add(struct iavf_adapter *adapter,
uint8_t is_v4,
rte_be32_t v4_dst_addr,
uint8_t *v6_dst_addr,
- uint8_t drop);
+ uint8_t drop,
+ bool is_udp,
+ uint16_t udp_port);
/**
* Delete inbound security policy rule from hardware
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index 154472c50f..bb6d4c6f50 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -476,54 +476,59 @@ iavf_rxd_to_pkt_fields_by_comms_aux_v2(struct iavf_rx_queue *rxq,
#endif
}
+static const
+iavf_rxd_to_pkt_fields_t rxd_to_pkt_fields_ops[IAVF_RXDID_LAST + 1] = {
+ [IAVF_RXDID_LEGACY_0] = iavf_rxd_to_pkt_fields_by_comms_ovs,
+ [IAVF_RXDID_LEGACY_1] = iavf_rxd_to_pkt_fields_by_comms_ovs,
+ [IAVF_RXDID_COMMS_AUX_VLAN] = iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_IPV4] = iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_IPV6] = iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_IPV6_FLOW] =
+ iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_TCP] = iavf_rxd_to_pkt_fields_by_comms_aux_v1,
+ [IAVF_RXDID_COMMS_AUX_IP_OFFSET] =
+ iavf_rxd_to_pkt_fields_by_comms_aux_v2,
+ [IAVF_RXDID_COMMS_IPSEC_CRYPTO] =
+ iavf_rxd_to_pkt_fields_by_comms_aux_v2,
+ [IAVF_RXDID_COMMS_OVS_1] = iavf_rxd_to_pkt_fields_by_comms_ovs,
+};
+
static void
iavf_select_rxd_to_pkt_fields_handler(struct iavf_rx_queue *rxq, uint32_t rxdid)
{
+ rxq->rxdid = rxdid;
+
switch (rxdid) {
case IAVF_RXDID_COMMS_AUX_VLAN:
rxq->xtr_ol_flag = rte_pmd_ifd_dynflag_proto_xtr_vlan_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_IPV4:
rxq->xtr_ol_flag = rte_pmd_ifd_dynflag_proto_xtr_ipv4_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_IPV6:
rxq->xtr_ol_flag = rte_pmd_ifd_dynflag_proto_xtr_ipv6_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_IPV6_FLOW:
rxq->xtr_ol_flag =
rte_pmd_ifd_dynflag_proto_xtr_ipv6_flow_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_TCP:
rxq->xtr_ol_flag = rte_pmd_ifd_dynflag_proto_xtr_tcp_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v1;
break;
case IAVF_RXDID_COMMS_AUX_IP_OFFSET:
rxq->xtr_ol_flag =
rte_pmd_ifd_dynflag_proto_xtr_ip_offset_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v2;
break;
case IAVF_RXDID_COMMS_IPSEC_CRYPTO:
rxq->xtr_ol_flag =
rte_pmd_ifd_dynflag_proto_xtr_ipsec_crypto_said_mask;
- rxq->rxd_to_pkt_fields =
- iavf_rxd_to_pkt_fields_by_comms_aux_v2;
break;
case IAVF_RXDID_COMMS_OVS_1:
- rxq->rxd_to_pkt_fields = iavf_rxd_to_pkt_fields_by_comms_ovs;
+ case IAVF_RXDID_LEGACY_0:
+ case IAVF_RXDID_LEGACY_1:
break;
default:
- /* update this according to the RXDID for FLEX_DESC_NONE */
- rxq->rxd_to_pkt_fields = iavf_rxd_to_pkt_fields_by_comms_ovs;
+ rxq->rxdid = IAVF_RXDID_COMMS_OVS_1;
break;
}
@@ -1484,7 +1489,7 @@ iavf_recv_pkts_flex_rxd(void *rx_queue,
iavf_flex_rxd_to_vlan_tci(rxm, &rxd);
iavf_flex_rxd_to_ipsec_crypto_status(rxm, &rxd,
&rxq->stats.ipsec_crypto);
- rxq->rxd_to_pkt_fields(rxq, rxm, &rxd);
+ rxd_to_pkt_fields_ops[rxq->rxdid](rxq, rxm, &rxd);
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0);
rxm->ol_flags |= pkt_flags;
@@ -1628,7 +1633,7 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts,
iavf_flex_rxd_to_vlan_tci(first_seg, &rxd);
iavf_flex_rxd_to_ipsec_crypto_status(first_seg, &rxd,
&rxq->stats.ipsec_crypto);
- rxq->rxd_to_pkt_fields(rxq, first_seg, &rxd);
+ rxd_to_pkt_fields_ops[rxq->rxdid](rxq, first_seg, &rxd);
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0);
first_seg->ol_flags |= pkt_flags;
@@ -1819,7 +1824,7 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq)
struct rte_mbuf *mb;
uint16_t stat_err0;
uint16_t pkt_len;
- int32_t s[IAVF_LOOK_AHEAD], nb_dd;
+ int32_t s[IAVF_LOOK_AHEAD], var, nb_dd;
int32_t i, j, nb_rx = 0;
uint64_t pkt_flags;
const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl;
@@ -1844,9 +1849,27 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq)
rte_smp_rmb();
- /* Compute how many status bits were set */
- for (j = 0, nb_dd = 0; j < IAVF_LOOK_AHEAD; j++)
- nb_dd += s[j] & (1 << IAVF_RX_FLEX_DESC_STATUS0_DD_S);
+ /* Compute how many contiguous DD bits were set */
+ for (j = 0, nb_dd = 0; j < IAVF_LOOK_AHEAD; j++) {
+ var = s[j] & (1 << IAVF_RX_FLEX_DESC_STATUS0_DD_S);
+#ifdef RTE_ARCH_ARM
+ /* For Arm platforms, count only contiguous descriptors
+ * whose DD bit is set to 1. On Arm platforms, reads of
+ * descriptors can be reordered. Since the CPU may
+ * be reading the descriptors as the NIC updates them
+ * in memory, it is possbile that the DD bit for a
+ * descriptor earlier in the queue is read as not set
+ * while the DD bit for a descriptor later in the queue
+ * is read as set.
+ */
+ if (var)
+ nb_dd += 1;
+ else
+ break;
+#else
+ nb_dd += var;
+#endif
+ }
nb_rx += nb_dd;
@@ -1868,7 +1891,7 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq)
iavf_flex_rxd_to_vlan_tci(mb, &rxdp[j]);
iavf_flex_rxd_to_ipsec_crypto_status(mb, &rxdp[j],
&rxq->stats.ipsec_crypto);
- rxq->rxd_to_pkt_fields(rxq, mb, &rxdp[j]);
+ rxd_to_pkt_fields_ops[rxq->rxdid](rxq, mb, &rxdp[j]);
stat_err0 = rte_le_to_cpu_16(rxdp[j].wb.status_error0);
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(stat_err0);
@@ -1898,7 +1921,7 @@ iavf_rx_scan_hw_ring(struct iavf_rx_queue *rxq)
uint16_t pkt_len;
uint64_t qword1;
uint32_t rx_status;
- int32_t s[IAVF_LOOK_AHEAD], nb_dd;
+ int32_t s[IAVF_LOOK_AHEAD], var, nb_dd;
int32_t i, j, nb_rx = 0;
uint64_t pkt_flags;
const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl;
@@ -1929,9 +1952,27 @@ iavf_rx_scan_hw_ring(struct iavf_rx_queue *rxq)
rte_smp_rmb();
- /* Compute how many status bits were set */
- for (j = 0, nb_dd = 0; j < IAVF_LOOK_AHEAD; j++)
- nb_dd += s[j] & (1 << IAVF_RX_DESC_STATUS_DD_SHIFT);
+ /* Compute how many contiguous DD bits were set */
+ for (j = 0, nb_dd = 0; j < IAVF_LOOK_AHEAD; j++) {
+ var = s[j] & (1 << IAVF_RX_DESC_STATUS_DD_SHIFT);
+#ifdef RTE_ARCH_ARM
+ /* For Arm platforms, count only contiguous descriptors
+ * whose DD bit is set to 1. On Arm platforms, reads of
+ * descriptors can be reordered. Since the CPU may
+ * be reading the descriptors as the NIC updates them
+ * in memory, it is possbile that the DD bit for a
+ * descriptor earlier in the queue is read as not set
+ * while the DD bit for a descriptor later in the queue
+ * is read as set.
+ */
+ if (var)
+ nb_dd += 1;
+ else
+ break;
+#else
+ nb_dd += var;
+#endif
+ }
nb_rx += nb_dd;
@@ -2439,6 +2480,14 @@ iavf_fill_data_desc(volatile struct iavf_tx_desc *desc,
if (m->ol_flags & RTE_MBUF_F_TX_SEC_OFFLOAD)
hdrlen += ipseclen;
bufsz = hdrlen + tlen;
+ } else if ((m->ol_flags & RTE_MBUF_F_TX_SEC_OFFLOAD) &&
+ (m->ol_flags & (RTE_MBUF_F_TX_TCP_SEG |
+ RTE_MBUF_F_TX_UDP_SEG))) {
+ hdrlen += m->outer_l3_len + m->l3_len + ipseclen;
+ if (m->ol_flags & RTE_MBUF_F_TX_L4_MASK)
+ hdrlen += m->l4_len;
+ bufsz = hdrlen + tlen;
+
} else {
bufsz = m->data_len;
}
diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
index b610176b30..503bed9b82 100644
--- a/drivers/net/iavf/iavf_rxtx.h
+++ b/drivers/net/iavf/iavf_rxtx.h
@@ -216,10 +216,8 @@ struct iavf_rx_queue {
#define IAVF_RX_FLAGS_VLAN_TAG_LOC_L2TAG2_2 BIT(1)
uint8_t proto_xtr; /* protocol extraction type */
uint64_t xtr_ol_flag;
- /* flexible descriptor metadata extraction offload flag */
- iavf_rxd_to_pkt_fields_t rxd_to_pkt_fields;
- /* handle flexible descriptor by RXDID */
struct iavf_rx_queue_stats stats;
+ /* flexible descriptor metadata extraction offload flag */
uint64_t offloads;
};
@@ -415,45 +413,6 @@ enum iavf_rxdid {
IAVF_RXDID_LAST = 63,
};
-enum iavf_rx_flex_desc_status_error_0_bits {
- /* Note: These are predefined bit offsets */
- IAVF_RX_FLEX_DESC_STATUS0_DD_S = 0,
- IAVF_RX_FLEX_DESC_STATUS0_EOF_S,
- IAVF_RX_FLEX_DESC_STATUS0_HBO_S,
- IAVF_RX_FLEX_DESC_STATUS0_L3L4P_S,
- IAVF_RX_FLEX_DESC_STATUS0_XSUM_IPE_S,
- IAVF_RX_FLEX_DESC_STATUS0_XSUM_L4E_S,
- IAVF_RX_FLEX_DESC_STATUS0_XSUM_EIPE_S,
- IAVF_RX_FLEX_DESC_STATUS0_XSUM_EUDPE_S,
- IAVF_RX_FLEX_DESC_STATUS0_LPBK_S,
- IAVF_RX_FLEX_DESC_STATUS0_IPV6EXADD_S,
- IAVF_RX_FLEX_DESC_STATUS0_RXE_S,
- IAVF_RX_FLEX_DESC_STATUS0_CRCP_S,
- IAVF_RX_FLEX_DESC_STATUS0_RSS_VALID_S,
- IAVF_RX_FLEX_DESC_STATUS0_L2TAG1P_S,
- IAVF_RX_FLEX_DESC_STATUS0_XTRMD0_VALID_S,
- IAVF_RX_FLEX_DESC_STATUS0_XTRMD1_VALID_S,
- IAVF_RX_FLEX_DESC_STATUS0_LAST /* this entry must be last!!! */
-};
-
-enum iavf_rx_flex_desc_status_error_1_bits {
- /* Note: These are predefined bit offsets */
- /* Bits 3:0 are reserved for inline ipsec status */
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_0 = 0,
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_1,
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_2,
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_3,
- IAVF_RX_FLEX_DESC_STATUS1_NAT_S,
- IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_PROCESSED,
- /* [10:6] reserved */
- IAVF_RX_FLEX_DESC_STATUS1_L2TAG2P_S = 11,
- IAVF_RX_FLEX_DESC_STATUS1_XTRMD2_VALID_S = 12,
- IAVF_RX_FLEX_DESC_STATUS1_XTRMD3_VALID_S = 13,
- IAVF_RX_FLEX_DESC_STATUS1_XTRMD4_VALID_S = 14,
- IAVF_RX_FLEX_DESC_STATUS1_XTRMD5_VALID_S = 15,
- IAVF_RX_FLEX_DESC_STATUS1_LAST /* this entry must be last!!! */
-};
-
#define IAVF_RX_FLEX_DESC_IPSEC_CRYPTO_STATUS_MASK ( \
BIT(IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_0) | \
BIT(IAVF_RX_FLEX_DESC_STATUS1_IPSEC_CRYPTO_STATUS_1) | \
diff --git a/drivers/net/iavf/iavf_rxtx_vec_avx2.c b/drivers/net/iavf/iavf_rxtx_vec_avx2.c
index b6ef1aea77..d6243b96e2 100644
--- a/drivers/net/iavf/iavf_rxtx_vec_avx2.c
+++ b/drivers/net/iavf/iavf_rxtx_vec_avx2.c
@@ -1450,9 +1450,6 @@ iavf_xmit_fixed_burst_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
uint64_t flags = IAVF_TX_DESC_CMD_EOP | IAVF_TX_DESC_CMD_ICRC;
uint64_t rs = IAVF_TX_DESC_CMD_RS | flags;
- /* cross rx_thresh boundary is not allowed */
- nb_pkts = RTE_MIN(nb_pkts, txq->rs_thresh);
-
if (txq->nb_free < txq->free_thresh)
iavf_tx_free_bufs(txq);
@@ -1516,6 +1513,7 @@ iavf_xmit_pkts_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
while (nb_pkts) {
uint16_t ret, num;
+ /* cross rs_thresh boundary is not allowed */
num = (uint16_t)RTE_MIN(nb_pkts, txq->rs_thresh);
ret = iavf_xmit_fixed_burst_vec_avx2(tx_queue, &tx_pkts[nb_tx],
num);
diff --git a/drivers/net/iavf/iavf_rxtx_vec_avx512.c b/drivers/net/iavf/iavf_rxtx_vec_avx512.c
index 6ff38ac368..7319d4cb65 100644
--- a/drivers/net/iavf/iavf_rxtx_vec_avx512.c
+++ b/drivers/net/iavf/iavf_rxtx_vec_avx512.c
@@ -1907,9 +1907,6 @@ iavf_xmit_fixed_burst_vec_avx512(void *tx_queue, struct rte_mbuf **tx_pkts,
uint64_t flags = IAVF_TX_DESC_CMD_EOP | IAVF_TX_DESC_CMD_ICRC;
uint64_t rs = IAVF_TX_DESC_CMD_RS | flags;
- /* cross rx_thresh boundary is not allowed */
- nb_pkts = RTE_MIN(nb_pkts, txq->rs_thresh);
-
if (txq->nb_free < txq->free_thresh)
iavf_tx_free_bufs_avx512(txq);
@@ -1975,6 +1972,7 @@ iavf_xmit_pkts_vec_avx512_cmn(void *tx_queue, struct rte_mbuf **tx_pkts,
while (nb_pkts) {
uint16_t ret, num;
+ /* cross rs_thresh boundary is not allowed */
num = (uint16_t)RTE_MIN(nb_pkts, txq->rs_thresh);
ret = iavf_xmit_fixed_burst_vec_avx512(tx_queue, &tx_pkts[nb_tx],
num, offload);
diff --git a/drivers/net/iavf/iavf_rxtx_vec_sse.c b/drivers/net/iavf/iavf_rxtx_vec_sse.c
index 1bac59bf0e..9cbdcbd43b 100644
--- a/drivers/net/iavf/iavf_rxtx_vec_sse.c
+++ b/drivers/net/iavf/iavf_rxtx_vec_sse.c
@@ -1120,9 +1120,6 @@ iavf_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
uint64_t rs = IAVF_TX_DESC_CMD_RS | flags;
int i;
- /* cross rx_thresh boundary is not allowed */
- nb_pkts = RTE_MIN(nb_pkts, txq->rs_thresh);
-
if (txq->nb_free < txq->free_thresh)
iavf_tx_free_bufs(txq);
@@ -1189,6 +1186,7 @@ iavf_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
while (nb_pkts) {
uint16_t ret, num;
+ /* cross rs_thresh boundary is not allowed */
num = (uint16_t)RTE_MIN(nb_pkts, txq->rs_thresh);
ret = iavf_xmit_fixed_burst_vec(tx_queue, &tx_pkts[nb_tx], num);
nb_tx += ret;
diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c
index 145b059837..b9871e9f4b 100644
--- a/drivers/net/iavf/iavf_vchnl.c
+++ b/drivers/net/iavf/iavf_vchnl.c
@@ -165,7 +165,7 @@ iavf_execute_vf_cmd(struct iavf_adapter *adapter, struct iavf_cmd_info *args,
return -1;
}
- ret = iavf_aq_send_msg_to_pf(hw, args->ops, IAVF_SUCCESS,
+ ret = iavf_aq_send_msg_to_pf(hw, args->ops, VIRTCHNL_STATUS_SUCCESS,
args->in_args, args->in_args_size, NULL);
if (ret) {
PMD_DRV_LOG(ERR, "fail to send cmd %d", args->ops);
@@ -502,7 +502,7 @@ iavf_get_vf_resource(struct iavf_adapter *adapter)
VIRTCHNL_VF_OFFLOAD_VLAN_V2 |
VIRTCHNL_VF_LARGE_NUM_QPAIRS |
VIRTCHNL_VF_OFFLOAD_QOS |
-+ VIRTCHNL_VF_OFFLOAD_INLINE_IPSEC_CRYPTO;
+ VIRTCHNL_VF_OFFLOAD_INLINE_IPSEC_CRYPTO;
args.in_args = (uint8_t *)∩︀
args.in_args_size = sizeof(caps);
diff --git a/drivers/net/ice/ice_dcf.c b/drivers/net/ice/ice_dcf.c
index cca1d7bf46..94099b0685 100644
--- a/drivers/net/ice/ice_dcf.c
+++ b/drivers/net/ice/ice_dcf.c
@@ -40,7 +40,7 @@ static __rte_always_inline int
ice_dcf_send_cmd_req_no_irq(struct ice_dcf_hw *hw, enum virtchnl_ops op,
uint8_t *req_msg, uint16_t req_msglen)
{
- return iavf_aq_send_msg_to_pf(&hw->avf, op, IAVF_SUCCESS,
+ return iavf_aq_send_msg_to_pf(&hw->avf, op, VIRTCHNL_STATUS_SUCCESS,
req_msg, req_msglen, NULL);
}
@@ -105,7 +105,7 @@ static __rte_always_inline int
ice_dcf_vc_cmd_send(struct ice_dcf_hw *hw, struct dcf_virtchnl_cmd *cmd)
{
return iavf_aq_send_msg_to_pf(&hw->avf,
- cmd->v_op, IAVF_SUCCESS,
+ cmd->v_op, VIRTCHNL_STATUS_SUCCESS,
cmd->req_msg, cmd->req_msglen, NULL);
}
--
2.27.0
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-04-07 6:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-28 8:05 [RFC] net/i40e: backport i40e fixes and share code to 21.11 Steve Yang
2022-04-07 6:14 ` [RFC v2] " Steve Yang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).