[Intel-wired-lan] [PATCH net-next v1] ice: report hash type such as L2/L3/L4

Maciej Fijalkowski maciej.fijalkowski at intel.com
Mon Feb 22 22:26:16 UTC 2021


On Mon, Feb 22, 2021 at 02:00:46PM -0800, Jesse Brandeburg wrote:
> The hardware is reporting the type of the hash used for RSS
> as a PTYPE field in the receive descriptor. Use this value to set
> the skb packet hash type by extending the hash type table to
> cover all 10-bits of possible values (requiring some variables
> to be changed to u16), and then use that table to convert
> to one of the four possible values in enum pkt_hash_types.
> 
> Without this change, the kernel will recalculate the hash in software,
> which can consume extra CPU cycles.
> 
> Signed-off-by: Kiran Patil <kiran.patil at intel.com>
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg at intel.com>
> ---
>  .../net/ethernet/intel/ice/ice_lan_tx_rx.h    | 868 ++++++++++++++++++
>  drivers/net/ethernet/intel/ice/ice_txrx.c     |   2 +-
>  drivers/net/ethernet/intel/ice/ice_txrx_lib.c |  23 +-
>  drivers/net/ethernet/intel/ice/ice_txrx_lib.h |   2 +-
>  drivers/net/ethernet/intel/ice/ice_xsk.c      |   2 +-
>  5 files changed, 889 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h b/drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h
> index 4ec24c3e813f..a5d5baf697b5 100644
> --- a/drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h
> +++ b/drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h
> @@ -584,6 +584,29 @@ struct ice_tlan_ctx {
>  	u8 int_q_state;	/* width not needed - internal - DO NOT WRITE!!! */
>  };
>  
> +/* The ice_ptype_lkup table is used to convert from the 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.
> + *
> + * We store the PTYPE in the top byte of the bit field - this is just so that
> + * we can check that the table doesn't have a row missing, as the index into
> + * the table should be the PTYPE.
> + *
> + * Typical work flow:
> + *
> + * IF NOT ice_ptype_lkup[ptype].known
> + * THEN
> + *      Packet is unknown
> + * ELSE IF ice_ptype_lkup[ptype].outer_ip == ICE_RX_PTYPE_OUTER_IP
> + *      Use the rest of the fields to look at the tunnels, inner protocols, etc
> + * ELSE
> + *      Use the enum ice_rx_l2_ptype to decode the packet type
> + * ENDIF
> + */
> +
>  /* macro to make the table lines short */
>  #define ICE_PTT(PTYPE, OUTER_IP, OUTER_IP_VER, OUTER_FRAG, T, TE, TEF, I, PL)\
>  	{	PTYPE, \
> @@ -922,6 +945,851 @@ static const struct ice_rx_ptype_decoded ice_ptype_lkup[] = {
>  	ICE_PTT_UNUSED_ENTRY(253),
>  	ICE_PTT_UNUSED_ENTRY(254),
>  	ICE_PTT_UNUSED_ENTRY(255),
> +	ICE_PTT_UNUSED_ENTRY(256),
> +	ICE_PTT_UNUSED_ENTRY(257),
> +	ICE_PTT_UNUSED_ENTRY(258),
> +	ICE_PTT_UNUSED_ENTRY(259),

I think I need some justification for chosen approach. Do you envision
random entries for a particular ptype being changed from unused to used?

I might be missing something obvious, but given that *all* entries
[255,1023] are currently unused, why couldn't you do something among lines
below:

struct entry {
	int a;
	int b;
};

static struct entry entries[1024] = {
	{1, 2},
	{10, 20},
};

static void update_unused_entries(void)
{
	int i;

	for (i = 255; i < 1024; i++)
		entries[i].a = i;
}

int main(void)
{
	int i;

	for (i = 0; i < 1024; i++)
		printf("entry: a %d b %d\n", entries[i].a, entries[i].b);

	update_unused_entries();

	for (i = 0; i < 1024; i++)
		printf("entry: a %d b %d\n", entries[i].a, entries[i].b);

	return 0;
}

as you only need the ptype to be set per each entry.

> +
> +	ICE_PTT_UNUSED_ENTRY(260),
> +	ICE_PTT_UNUSED_ENTRY(261),
> +	ICE_PTT_UNUSED_ENTRY(262),
> +	ICE_PTT_UNUSED_ENTRY(263),
> +	ICE_PTT_UNUSED_ENTRY(264),
> +	ICE_PTT_UNUSED_ENTRY(265),
> +	ICE_PTT_UNUSED_ENTRY(266),
> +	ICE_PTT_UNUSED_ENTRY(267),
> +	ICE_PTT_UNUSED_ENTRY(268),
> +	ICE_PTT_UNUSED_ENTRY(269),
> +
> +	ICE_PTT_UNUSED_ENTRY(270),
> +	ICE_PTT_UNUSED_ENTRY(271),
> +	ICE_PTT_UNUSED_ENTRY(272),
> +	ICE_PTT_UNUSED_ENTRY(273),
> +	ICE_PTT_UNUSED_ENTRY(274),
> +	ICE_PTT_UNUSED_ENTRY(275),
> +	ICE_PTT_UNUSED_ENTRY(276),
> +	ICE_PTT_UNUSED_ENTRY(277),
> +	ICE_PTT_UNUSED_ENTRY(278),
> +	ICE_PTT_UNUSED_ENTRY(279),
> +
> +	ICE_PTT_UNUSED_ENTRY(280),
> +	ICE_PTT_UNUSED_ENTRY(281),
> +	ICE_PTT_UNUSED_ENTRY(282),
> +	ICE_PTT_UNUSED_ENTRY(283),
> +	ICE_PTT_UNUSED_ENTRY(284),
> +	ICE_PTT_UNUSED_ENTRY(285),
> +	ICE_PTT_UNUSED_ENTRY(286),
> +	ICE_PTT_UNUSED_ENTRY(287),
> +	ICE_PTT_UNUSED_ENTRY(288),
> +	ICE_PTT_UNUSED_ENTRY(289),
> +
> +	ICE_PTT_UNUSED_ENTRY(290),
> +	ICE_PTT_UNUSED_ENTRY(291),
> +	ICE_PTT_UNUSED_ENTRY(292),
> +	ICE_PTT_UNUSED_ENTRY(293),
> +	ICE_PTT_UNUSED_ENTRY(294),
> +	ICE_PTT_UNUSED_ENTRY(295),
> +	ICE_PTT_UNUSED_ENTRY(296),
> +	ICE_PTT_UNUSED_ENTRY(297),
> +	ICE_PTT_UNUSED_ENTRY(298),
> +	ICE_PTT_UNUSED_ENTRY(299),
> +
> +	ICE_PTT_UNUSED_ENTRY(300),
> +	ICE_PTT_UNUSED_ENTRY(301),
> +	ICE_PTT_UNUSED_ENTRY(302),
> +	ICE_PTT_UNUSED_ENTRY(303),
> +	ICE_PTT_UNUSED_ENTRY(304),
> +	ICE_PTT_UNUSED_ENTRY(305),
> +	ICE_PTT_UNUSED_ENTRY(306),
> +	ICE_PTT_UNUSED_ENTRY(307),
> +	ICE_PTT_UNUSED_ENTRY(308),
> +	ICE_PTT_UNUSED_ENTRY(309),
> +
> +	ICE_PTT_UNUSED_ENTRY(310),
> +	ICE_PTT_UNUSED_ENTRY(311),
> +	ICE_PTT_UNUSED_ENTRY(312),
> +	ICE_PTT_UNUSED_ENTRY(313),
> +	ICE_PTT_UNUSED_ENTRY(314),
> +	ICE_PTT_UNUSED_ENTRY(315),
> +	ICE_PTT_UNUSED_ENTRY(316),
> +	ICE_PTT_UNUSED_ENTRY(317),
> +	ICE_PTT_UNUSED_ENTRY(318),
> +	ICE_PTT_UNUSED_ENTRY(319),
> +
> +	ICE_PTT_UNUSED_ENTRY(320),
> +	ICE_PTT_UNUSED_ENTRY(321),
> +	ICE_PTT_UNUSED_ENTRY(322),
> +	ICE_PTT_UNUSED_ENTRY(323),
> +	ICE_PTT_UNUSED_ENTRY(324),
> +	ICE_PTT_UNUSED_ENTRY(325),
> +	ICE_PTT_UNUSED_ENTRY(326),
> +	ICE_PTT_UNUSED_ENTRY(327),
> +	ICE_PTT_UNUSED_ENTRY(328),
> +	ICE_PTT_UNUSED_ENTRY(329),
> +
> +	ICE_PTT_UNUSED_ENTRY(330),
> +	ICE_PTT_UNUSED_ENTRY(331),
> +	ICE_PTT_UNUSED_ENTRY(332),
> +	ICE_PTT_UNUSED_ENTRY(333),
> +	ICE_PTT_UNUSED_ENTRY(334),
> +	ICE_PTT_UNUSED_ENTRY(335),
> +	ICE_PTT_UNUSED_ENTRY(336),
> +	ICE_PTT_UNUSED_ENTRY(337),
> +	ICE_PTT_UNUSED_ENTRY(338),
> +	ICE_PTT_UNUSED_ENTRY(339),
> +
> +	ICE_PTT_UNUSED_ENTRY(340),
> +	ICE_PTT_UNUSED_ENTRY(341),
> +	ICE_PTT_UNUSED_ENTRY(342),
> +	ICE_PTT_UNUSED_ENTRY(343),
> +	ICE_PTT_UNUSED_ENTRY(344),
> +	ICE_PTT_UNUSED_ENTRY(345),
> +	ICE_PTT_UNUSED_ENTRY(346),
> +	ICE_PTT_UNUSED_ENTRY(347),
> +	ICE_PTT_UNUSED_ENTRY(348),
> +	ICE_PTT_UNUSED_ENTRY(349),
> +
> +	ICE_PTT_UNUSED_ENTRY(350),
> +	ICE_PTT_UNUSED_ENTRY(351),
> +	ICE_PTT_UNUSED_ENTRY(352),
> +	ICE_PTT_UNUSED_ENTRY(353),
> +	ICE_PTT_UNUSED_ENTRY(354),
> +	ICE_PTT_UNUSED_ENTRY(355),
> +	ICE_PTT_UNUSED_ENTRY(356),
> +	ICE_PTT_UNUSED_ENTRY(357),
> +	ICE_PTT_UNUSED_ENTRY(358),
> +	ICE_PTT_UNUSED_ENTRY(359),
> +
> +	ICE_PTT_UNUSED_ENTRY(360),
> +	ICE_PTT_UNUSED_ENTRY(361),
> +	ICE_PTT_UNUSED_ENTRY(362),
> +	ICE_PTT_UNUSED_ENTRY(363),
> +	ICE_PTT_UNUSED_ENTRY(364),
> +	ICE_PTT_UNUSED_ENTRY(365),
> +	ICE_PTT_UNUSED_ENTRY(366),
> +	ICE_PTT_UNUSED_ENTRY(367),
> +	ICE_PTT_UNUSED_ENTRY(368),
> +	ICE_PTT_UNUSED_ENTRY(369),
> +
> +	ICE_PTT_UNUSED_ENTRY(370),
> +	ICE_PTT_UNUSED_ENTRY(371),
> +	ICE_PTT_UNUSED_ENTRY(372),
> +	ICE_PTT_UNUSED_ENTRY(373),
> +	ICE_PTT_UNUSED_ENTRY(374),
> +	ICE_PTT_UNUSED_ENTRY(375),
> +	ICE_PTT_UNUSED_ENTRY(376),
> +	ICE_PTT_UNUSED_ENTRY(377),
> +	ICE_PTT_UNUSED_ENTRY(378),
> +	ICE_PTT_UNUSED_ENTRY(379),
> +
> +	ICE_PTT_UNUSED_ENTRY(380),
> +	ICE_PTT_UNUSED_ENTRY(381),
> +	ICE_PTT_UNUSED_ENTRY(382),
> +	ICE_PTT_UNUSED_ENTRY(383),
> +	ICE_PTT_UNUSED_ENTRY(384),
> +	ICE_PTT_UNUSED_ENTRY(385),
> +	ICE_PTT_UNUSED_ENTRY(386),
> +	ICE_PTT_UNUSED_ENTRY(387),
> +	ICE_PTT_UNUSED_ENTRY(388),
> +	ICE_PTT_UNUSED_ENTRY(389),
> +
> +	ICE_PTT_UNUSED_ENTRY(390),
> +	ICE_PTT_UNUSED_ENTRY(391),
> +	ICE_PTT_UNUSED_ENTRY(392),
> +	ICE_PTT_UNUSED_ENTRY(393),
> +	ICE_PTT_UNUSED_ENTRY(394),
> +	ICE_PTT_UNUSED_ENTRY(395),
> +	ICE_PTT_UNUSED_ENTRY(396),
> +	ICE_PTT_UNUSED_ENTRY(397),
> +	ICE_PTT_UNUSED_ENTRY(398),
> +	ICE_PTT_UNUSED_ENTRY(399),
> +
> +	ICE_PTT_UNUSED_ENTRY(400),
> +	ICE_PTT_UNUSED_ENTRY(401),
> +	ICE_PTT_UNUSED_ENTRY(402),
> +	ICE_PTT_UNUSED_ENTRY(403),
> +	ICE_PTT_UNUSED_ENTRY(404),
> +	ICE_PTT_UNUSED_ENTRY(405),
> +	ICE_PTT_UNUSED_ENTRY(406),
> +	ICE_PTT_UNUSED_ENTRY(407),
> +	ICE_PTT_UNUSED_ENTRY(408),
> +	ICE_PTT_UNUSED_ENTRY(409),
> +
> +	ICE_PTT_UNUSED_ENTRY(410),
> +	ICE_PTT_UNUSED_ENTRY(411),
> +	ICE_PTT_UNUSED_ENTRY(412),
> +	ICE_PTT_UNUSED_ENTRY(413),
> +	ICE_PTT_UNUSED_ENTRY(414),
> +	ICE_PTT_UNUSED_ENTRY(415),
> +	ICE_PTT_UNUSED_ENTRY(416),
> +	ICE_PTT_UNUSED_ENTRY(417),
> +	ICE_PTT_UNUSED_ENTRY(418),
> +	ICE_PTT_UNUSED_ENTRY(419),
> +
> +	ICE_PTT_UNUSED_ENTRY(420),
> +	ICE_PTT_UNUSED_ENTRY(421),
> +	ICE_PTT_UNUSED_ENTRY(422),
> +	ICE_PTT_UNUSED_ENTRY(423),
> +	ICE_PTT_UNUSED_ENTRY(424),
> +	ICE_PTT_UNUSED_ENTRY(425),
> +	ICE_PTT_UNUSED_ENTRY(426),
> +	ICE_PTT_UNUSED_ENTRY(427),
> +	ICE_PTT_UNUSED_ENTRY(428),
> +	ICE_PTT_UNUSED_ENTRY(429),
> +
> +	ICE_PTT_UNUSED_ENTRY(430),
> +	ICE_PTT_UNUSED_ENTRY(431),
> +	ICE_PTT_UNUSED_ENTRY(432),
> +	ICE_PTT_UNUSED_ENTRY(433),
> +	ICE_PTT_UNUSED_ENTRY(434),
> +	ICE_PTT_UNUSED_ENTRY(435),
> +	ICE_PTT_UNUSED_ENTRY(436),
> +	ICE_PTT_UNUSED_ENTRY(437),
> +	ICE_PTT_UNUSED_ENTRY(438),
> +	ICE_PTT_UNUSED_ENTRY(439),
> +
> +	ICE_PTT_UNUSED_ENTRY(440),
> +	ICE_PTT_UNUSED_ENTRY(441),
> +	ICE_PTT_UNUSED_ENTRY(442),
> +	ICE_PTT_UNUSED_ENTRY(443),
> +	ICE_PTT_UNUSED_ENTRY(444),
> +	ICE_PTT_UNUSED_ENTRY(445),
> +	ICE_PTT_UNUSED_ENTRY(446),
> +	ICE_PTT_UNUSED_ENTRY(447),
> +	ICE_PTT_UNUSED_ENTRY(448),
> +	ICE_PTT_UNUSED_ENTRY(449),
> +
> +	ICE_PTT_UNUSED_ENTRY(450),
> +	ICE_PTT_UNUSED_ENTRY(451),
> +	ICE_PTT_UNUSED_ENTRY(452),
> +	ICE_PTT_UNUSED_ENTRY(453),
> +	ICE_PTT_UNUSED_ENTRY(454),
> +	ICE_PTT_UNUSED_ENTRY(455),
> +	ICE_PTT_UNUSED_ENTRY(456),
> +	ICE_PTT_UNUSED_ENTRY(457),
> +	ICE_PTT_UNUSED_ENTRY(458),
> +	ICE_PTT_UNUSED_ENTRY(459),
> +
> +	ICE_PTT_UNUSED_ENTRY(460),
> +	ICE_PTT_UNUSED_ENTRY(461),
> +	ICE_PTT_UNUSED_ENTRY(462),
> +	ICE_PTT_UNUSED_ENTRY(463),
> +	ICE_PTT_UNUSED_ENTRY(464),
> +	ICE_PTT_UNUSED_ENTRY(465),
> +	ICE_PTT_UNUSED_ENTRY(466),
> +	ICE_PTT_UNUSED_ENTRY(467),
> +	ICE_PTT_UNUSED_ENTRY(468),
> +	ICE_PTT_UNUSED_ENTRY(469),
> +
> +	ICE_PTT_UNUSED_ENTRY(470),
> +	ICE_PTT_UNUSED_ENTRY(471),
> +	ICE_PTT_UNUSED_ENTRY(472),
> +	ICE_PTT_UNUSED_ENTRY(473),
> +	ICE_PTT_UNUSED_ENTRY(474),
> +	ICE_PTT_UNUSED_ENTRY(475),
> +	ICE_PTT_UNUSED_ENTRY(476),
> +	ICE_PTT_UNUSED_ENTRY(477),
> +	ICE_PTT_UNUSED_ENTRY(478),
> +	ICE_PTT_UNUSED_ENTRY(479),
> +
> +	ICE_PTT_UNUSED_ENTRY(480),
> +	ICE_PTT_UNUSED_ENTRY(481),
> +	ICE_PTT_UNUSED_ENTRY(482),
> +	ICE_PTT_UNUSED_ENTRY(483),
> +	ICE_PTT_UNUSED_ENTRY(484),
> +	ICE_PTT_UNUSED_ENTRY(485),
> +	ICE_PTT_UNUSED_ENTRY(486),
> +	ICE_PTT_UNUSED_ENTRY(487),
> +	ICE_PTT_UNUSED_ENTRY(488),
> +	ICE_PTT_UNUSED_ENTRY(489),
> +
> +	ICE_PTT_UNUSED_ENTRY(490),
> +	ICE_PTT_UNUSED_ENTRY(491),
> +	ICE_PTT_UNUSED_ENTRY(492),
> +	ICE_PTT_UNUSED_ENTRY(493),
> +	ICE_PTT_UNUSED_ENTRY(494),
> +	ICE_PTT_UNUSED_ENTRY(495),
> +	ICE_PTT_UNUSED_ENTRY(496),
> +	ICE_PTT_UNUSED_ENTRY(497),
> +	ICE_PTT_UNUSED_ENTRY(498),
> +	ICE_PTT_UNUSED_ENTRY(499),
> +
> +	ICE_PTT_UNUSED_ENTRY(500),
> +	ICE_PTT_UNUSED_ENTRY(501),
> +	ICE_PTT_UNUSED_ENTRY(502),
> +	ICE_PTT_UNUSED_ENTRY(503),
> +	ICE_PTT_UNUSED_ENTRY(504),
> +	ICE_PTT_UNUSED_ENTRY(505),
> +	ICE_PTT_UNUSED_ENTRY(506),
> +	ICE_PTT_UNUSED_ENTRY(507),
> +	ICE_PTT_UNUSED_ENTRY(508),
> +	ICE_PTT_UNUSED_ENTRY(509),
> +
> +	ICE_PTT_UNUSED_ENTRY(510),
> +	ICE_PTT_UNUSED_ENTRY(511),
> +	ICE_PTT_UNUSED_ENTRY(512),
> +	ICE_PTT_UNUSED_ENTRY(513),
> +	ICE_PTT_UNUSED_ENTRY(514),
> +	ICE_PTT_UNUSED_ENTRY(515),
> +	ICE_PTT_UNUSED_ENTRY(516),
> +	ICE_PTT_UNUSED_ENTRY(517),
> +	ICE_PTT_UNUSED_ENTRY(518),
> +	ICE_PTT_UNUSED_ENTRY(519),
> +
> +	ICE_PTT_UNUSED_ENTRY(520),
> +	ICE_PTT_UNUSED_ENTRY(521),
> +	ICE_PTT_UNUSED_ENTRY(522),
> +	ICE_PTT_UNUSED_ENTRY(523),
> +	ICE_PTT_UNUSED_ENTRY(524),
> +	ICE_PTT_UNUSED_ENTRY(525),
> +	ICE_PTT_UNUSED_ENTRY(526),
> +	ICE_PTT_UNUSED_ENTRY(527),
> +	ICE_PTT_UNUSED_ENTRY(528),
> +	ICE_PTT_UNUSED_ENTRY(529),
> +
> +	ICE_PTT_UNUSED_ENTRY(530),
> +	ICE_PTT_UNUSED_ENTRY(531),
> +	ICE_PTT_UNUSED_ENTRY(532),
> +	ICE_PTT_UNUSED_ENTRY(533),
> +	ICE_PTT_UNUSED_ENTRY(534),
> +	ICE_PTT_UNUSED_ENTRY(535),
> +	ICE_PTT_UNUSED_ENTRY(536),
> +	ICE_PTT_UNUSED_ENTRY(537),
> +	ICE_PTT_UNUSED_ENTRY(538),
> +	ICE_PTT_UNUSED_ENTRY(539),
> +
> +	ICE_PTT_UNUSED_ENTRY(540),
> +	ICE_PTT_UNUSED_ENTRY(541),
> +	ICE_PTT_UNUSED_ENTRY(542),
> +	ICE_PTT_UNUSED_ENTRY(543),
> +	ICE_PTT_UNUSED_ENTRY(544),
> +	ICE_PTT_UNUSED_ENTRY(545),
> +	ICE_PTT_UNUSED_ENTRY(546),
> +	ICE_PTT_UNUSED_ENTRY(547),
> +	ICE_PTT_UNUSED_ENTRY(548),
> +	ICE_PTT_UNUSED_ENTRY(549),
> +
> +	ICE_PTT_UNUSED_ENTRY(550),
> +	ICE_PTT_UNUSED_ENTRY(551),
> +	ICE_PTT_UNUSED_ENTRY(552),
> +	ICE_PTT_UNUSED_ENTRY(553),
> +	ICE_PTT_UNUSED_ENTRY(554),
> +	ICE_PTT_UNUSED_ENTRY(555),
> +	ICE_PTT_UNUSED_ENTRY(556),
> +	ICE_PTT_UNUSED_ENTRY(557),
> +	ICE_PTT_UNUSED_ENTRY(558),
> +	ICE_PTT_UNUSED_ENTRY(559),
> +
> +	ICE_PTT_UNUSED_ENTRY(560),
> +	ICE_PTT_UNUSED_ENTRY(561),
> +	ICE_PTT_UNUSED_ENTRY(562),
> +	ICE_PTT_UNUSED_ENTRY(563),
> +	ICE_PTT_UNUSED_ENTRY(564),
> +	ICE_PTT_UNUSED_ENTRY(565),
> +	ICE_PTT_UNUSED_ENTRY(566),
> +	ICE_PTT_UNUSED_ENTRY(567),
> +	ICE_PTT_UNUSED_ENTRY(568),
> +	ICE_PTT_UNUSED_ENTRY(569),
> +
> +	ICE_PTT_UNUSED_ENTRY(570),
> +	ICE_PTT_UNUSED_ENTRY(571),
> +	ICE_PTT_UNUSED_ENTRY(572),
> +	ICE_PTT_UNUSED_ENTRY(573),
> +	ICE_PTT_UNUSED_ENTRY(574),
> +	ICE_PTT_UNUSED_ENTRY(575),
> +	ICE_PTT_UNUSED_ENTRY(576),
> +	ICE_PTT_UNUSED_ENTRY(577),
> +	ICE_PTT_UNUSED_ENTRY(578),
> +	ICE_PTT_UNUSED_ENTRY(579),
> +
> +	ICE_PTT_UNUSED_ENTRY(580),
> +	ICE_PTT_UNUSED_ENTRY(581),
> +	ICE_PTT_UNUSED_ENTRY(582),
> +	ICE_PTT_UNUSED_ENTRY(583),
> +	ICE_PTT_UNUSED_ENTRY(584),
> +	ICE_PTT_UNUSED_ENTRY(585),
> +	ICE_PTT_UNUSED_ENTRY(586),
> +	ICE_PTT_UNUSED_ENTRY(587),
> +	ICE_PTT_UNUSED_ENTRY(588),
> +	ICE_PTT_UNUSED_ENTRY(589),
> +
> +	ICE_PTT_UNUSED_ENTRY(590),
> +	ICE_PTT_UNUSED_ENTRY(591),
> +	ICE_PTT_UNUSED_ENTRY(592),
> +	ICE_PTT_UNUSED_ENTRY(593),
> +	ICE_PTT_UNUSED_ENTRY(594),
> +	ICE_PTT_UNUSED_ENTRY(595),
> +	ICE_PTT_UNUSED_ENTRY(596),
> +	ICE_PTT_UNUSED_ENTRY(597),
> +	ICE_PTT_UNUSED_ENTRY(598),
> +	ICE_PTT_UNUSED_ENTRY(599),
> +
> +	ICE_PTT_UNUSED_ENTRY(600),
> +	ICE_PTT_UNUSED_ENTRY(601),
> +	ICE_PTT_UNUSED_ENTRY(602),
> +	ICE_PTT_UNUSED_ENTRY(603),
> +	ICE_PTT_UNUSED_ENTRY(604),
> +	ICE_PTT_UNUSED_ENTRY(605),
> +	ICE_PTT_UNUSED_ENTRY(606),
> +	ICE_PTT_UNUSED_ENTRY(607),
> +	ICE_PTT_UNUSED_ENTRY(608),
> +	ICE_PTT_UNUSED_ENTRY(609),
> +
> +	ICE_PTT_UNUSED_ENTRY(610),
> +	ICE_PTT_UNUSED_ENTRY(611),
> +	ICE_PTT_UNUSED_ENTRY(612),
> +	ICE_PTT_UNUSED_ENTRY(613),
> +	ICE_PTT_UNUSED_ENTRY(614),
> +	ICE_PTT_UNUSED_ENTRY(615),
> +	ICE_PTT_UNUSED_ENTRY(616),
> +	ICE_PTT_UNUSED_ENTRY(617),
> +	ICE_PTT_UNUSED_ENTRY(618),
> +	ICE_PTT_UNUSED_ENTRY(619),
> +
> +	ICE_PTT_UNUSED_ENTRY(620),
> +	ICE_PTT_UNUSED_ENTRY(621),
> +	ICE_PTT_UNUSED_ENTRY(622),
> +	ICE_PTT_UNUSED_ENTRY(623),
> +	ICE_PTT_UNUSED_ENTRY(624),
> +	ICE_PTT_UNUSED_ENTRY(625),
> +	ICE_PTT_UNUSED_ENTRY(626),
> +	ICE_PTT_UNUSED_ENTRY(627),
> +	ICE_PTT_UNUSED_ENTRY(628),
> +	ICE_PTT_UNUSED_ENTRY(629),
> +
> +	ICE_PTT_UNUSED_ENTRY(630),
> +	ICE_PTT_UNUSED_ENTRY(631),
> +	ICE_PTT_UNUSED_ENTRY(632),
> +	ICE_PTT_UNUSED_ENTRY(633),
> +	ICE_PTT_UNUSED_ENTRY(634),
> +	ICE_PTT_UNUSED_ENTRY(635),
> +	ICE_PTT_UNUSED_ENTRY(636),
> +	ICE_PTT_UNUSED_ENTRY(637),
> +	ICE_PTT_UNUSED_ENTRY(638),
> +	ICE_PTT_UNUSED_ENTRY(639),
> +
> +	ICE_PTT_UNUSED_ENTRY(640),
> +	ICE_PTT_UNUSED_ENTRY(641),
> +	ICE_PTT_UNUSED_ENTRY(642),
> +	ICE_PTT_UNUSED_ENTRY(643),
> +	ICE_PTT_UNUSED_ENTRY(644),
> +	ICE_PTT_UNUSED_ENTRY(645),
> +	ICE_PTT_UNUSED_ENTRY(646),
> +	ICE_PTT_UNUSED_ENTRY(647),
> +	ICE_PTT_UNUSED_ENTRY(648),
> +	ICE_PTT_UNUSED_ENTRY(649),
> +
> +	ICE_PTT_UNUSED_ENTRY(650),
> +	ICE_PTT_UNUSED_ENTRY(651),
> +	ICE_PTT_UNUSED_ENTRY(652),
> +	ICE_PTT_UNUSED_ENTRY(653),
> +	ICE_PTT_UNUSED_ENTRY(654),
> +	ICE_PTT_UNUSED_ENTRY(655),
> +	ICE_PTT_UNUSED_ENTRY(656),
> +	ICE_PTT_UNUSED_ENTRY(657),
> +	ICE_PTT_UNUSED_ENTRY(658),
> +	ICE_PTT_UNUSED_ENTRY(659),
> +
> +	ICE_PTT_UNUSED_ENTRY(660),
> +	ICE_PTT_UNUSED_ENTRY(661),
> +	ICE_PTT_UNUSED_ENTRY(662),
> +	ICE_PTT_UNUSED_ENTRY(663),
> +	ICE_PTT_UNUSED_ENTRY(664),
> +	ICE_PTT_UNUSED_ENTRY(665),
> +	ICE_PTT_UNUSED_ENTRY(666),
> +	ICE_PTT_UNUSED_ENTRY(667),
> +	ICE_PTT_UNUSED_ENTRY(668),
> +	ICE_PTT_UNUSED_ENTRY(669),
> +
> +	ICE_PTT_UNUSED_ENTRY(670),
> +	ICE_PTT_UNUSED_ENTRY(671),
> +	ICE_PTT_UNUSED_ENTRY(672),
> +	ICE_PTT_UNUSED_ENTRY(673),
> +	ICE_PTT_UNUSED_ENTRY(674),
> +	ICE_PTT_UNUSED_ENTRY(675),
> +	ICE_PTT_UNUSED_ENTRY(676),
> +	ICE_PTT_UNUSED_ENTRY(677),
> +	ICE_PTT_UNUSED_ENTRY(678),
> +	ICE_PTT_UNUSED_ENTRY(679),
> +
> +	ICE_PTT_UNUSED_ENTRY(680),
> +	ICE_PTT_UNUSED_ENTRY(681),
> +	ICE_PTT_UNUSED_ENTRY(682),
> +	ICE_PTT_UNUSED_ENTRY(683),
> +	ICE_PTT_UNUSED_ENTRY(684),
> +	ICE_PTT_UNUSED_ENTRY(685),
> +	ICE_PTT_UNUSED_ENTRY(686),
> +	ICE_PTT_UNUSED_ENTRY(687),
> +	ICE_PTT_UNUSED_ENTRY(688),
> +	ICE_PTT_UNUSED_ENTRY(689),
> +
> +	ICE_PTT_UNUSED_ENTRY(690),
> +	ICE_PTT_UNUSED_ENTRY(691),
> +	ICE_PTT_UNUSED_ENTRY(692),
> +	ICE_PTT_UNUSED_ENTRY(693),
> +	ICE_PTT_UNUSED_ENTRY(694),
> +	ICE_PTT_UNUSED_ENTRY(695),
> +	ICE_PTT_UNUSED_ENTRY(696),
> +	ICE_PTT_UNUSED_ENTRY(697),
> +	ICE_PTT_UNUSED_ENTRY(698),
> +	ICE_PTT_UNUSED_ENTRY(699),
> +
> +	ICE_PTT_UNUSED_ENTRY(700),
> +	ICE_PTT_UNUSED_ENTRY(701),
> +	ICE_PTT_UNUSED_ENTRY(702),
> +	ICE_PTT_UNUSED_ENTRY(703),
> +	ICE_PTT_UNUSED_ENTRY(704),
> +	ICE_PTT_UNUSED_ENTRY(705),
> +	ICE_PTT_UNUSED_ENTRY(706),
> +	ICE_PTT_UNUSED_ENTRY(707),
> +	ICE_PTT_UNUSED_ENTRY(708),
> +	ICE_PTT_UNUSED_ENTRY(709),
> +
> +	ICE_PTT_UNUSED_ENTRY(710),
> +	ICE_PTT_UNUSED_ENTRY(711),
> +	ICE_PTT_UNUSED_ENTRY(712),
> +	ICE_PTT_UNUSED_ENTRY(713),
> +	ICE_PTT_UNUSED_ENTRY(714),
> +	ICE_PTT_UNUSED_ENTRY(715),
> +	ICE_PTT_UNUSED_ENTRY(716),
> +	ICE_PTT_UNUSED_ENTRY(717),
> +	ICE_PTT_UNUSED_ENTRY(718),
> +	ICE_PTT_UNUSED_ENTRY(719),
> +
> +	ICE_PTT_UNUSED_ENTRY(720),
> +	ICE_PTT_UNUSED_ENTRY(721),
> +	ICE_PTT_UNUSED_ENTRY(722),
> +	ICE_PTT_UNUSED_ENTRY(723),
> +	ICE_PTT_UNUSED_ENTRY(724),
> +	ICE_PTT_UNUSED_ENTRY(725),
> +	ICE_PTT_UNUSED_ENTRY(726),
> +	ICE_PTT_UNUSED_ENTRY(727),
> +	ICE_PTT_UNUSED_ENTRY(728),
> +	ICE_PTT_UNUSED_ENTRY(729),
> +
> +	ICE_PTT_UNUSED_ENTRY(730),
> +	ICE_PTT_UNUSED_ENTRY(731),
> +	ICE_PTT_UNUSED_ENTRY(732),
> +	ICE_PTT_UNUSED_ENTRY(733),
> +	ICE_PTT_UNUSED_ENTRY(734),
> +	ICE_PTT_UNUSED_ENTRY(735),
> +	ICE_PTT_UNUSED_ENTRY(736),
> +	ICE_PTT_UNUSED_ENTRY(737),
> +	ICE_PTT_UNUSED_ENTRY(738),
> +	ICE_PTT_UNUSED_ENTRY(739),
> +
> +	ICE_PTT_UNUSED_ENTRY(740),
> +	ICE_PTT_UNUSED_ENTRY(741),
> +	ICE_PTT_UNUSED_ENTRY(742),
> +	ICE_PTT_UNUSED_ENTRY(743),
> +	ICE_PTT_UNUSED_ENTRY(744),
> +	ICE_PTT_UNUSED_ENTRY(745),
> +	ICE_PTT_UNUSED_ENTRY(746),
> +	ICE_PTT_UNUSED_ENTRY(747),
> +	ICE_PTT_UNUSED_ENTRY(748),
> +	ICE_PTT_UNUSED_ENTRY(749),
> +
> +	ICE_PTT_UNUSED_ENTRY(750),
> +	ICE_PTT_UNUSED_ENTRY(751),
> +	ICE_PTT_UNUSED_ENTRY(752),
> +	ICE_PTT_UNUSED_ENTRY(753),
> +	ICE_PTT_UNUSED_ENTRY(754),
> +	ICE_PTT_UNUSED_ENTRY(755),
> +	ICE_PTT_UNUSED_ENTRY(756),
> +	ICE_PTT_UNUSED_ENTRY(757),
> +	ICE_PTT_UNUSED_ENTRY(758),
> +	ICE_PTT_UNUSED_ENTRY(759),
> +
> +	ICE_PTT_UNUSED_ENTRY(760),
> +	ICE_PTT_UNUSED_ENTRY(761),
> +	ICE_PTT_UNUSED_ENTRY(762),
> +	ICE_PTT_UNUSED_ENTRY(763),
> +	ICE_PTT_UNUSED_ENTRY(764),
> +	ICE_PTT_UNUSED_ENTRY(765),
> +	ICE_PTT_UNUSED_ENTRY(766),
> +	ICE_PTT_UNUSED_ENTRY(767),
> +	ICE_PTT_UNUSED_ENTRY(768),
> +	ICE_PTT_UNUSED_ENTRY(769),
> +
> +	ICE_PTT_UNUSED_ENTRY(770),
> +	ICE_PTT_UNUSED_ENTRY(771),
> +	ICE_PTT_UNUSED_ENTRY(772),
> +	ICE_PTT_UNUSED_ENTRY(773),
> +	ICE_PTT_UNUSED_ENTRY(774),
> +	ICE_PTT_UNUSED_ENTRY(775),
> +	ICE_PTT_UNUSED_ENTRY(776),
> +	ICE_PTT_UNUSED_ENTRY(777),
> +	ICE_PTT_UNUSED_ENTRY(778),
> +	ICE_PTT_UNUSED_ENTRY(779),
> +
> +	ICE_PTT_UNUSED_ENTRY(780),
> +	ICE_PTT_UNUSED_ENTRY(781),
> +	ICE_PTT_UNUSED_ENTRY(782),
> +	ICE_PTT_UNUSED_ENTRY(783),
> +	ICE_PTT_UNUSED_ENTRY(784),
> +	ICE_PTT_UNUSED_ENTRY(785),
> +	ICE_PTT_UNUSED_ENTRY(786),
> +	ICE_PTT_UNUSED_ENTRY(787),
> +	ICE_PTT_UNUSED_ENTRY(788),
> +	ICE_PTT_UNUSED_ENTRY(789),
> +
> +	ICE_PTT_UNUSED_ENTRY(790),
> +	ICE_PTT_UNUSED_ENTRY(791),
> +	ICE_PTT_UNUSED_ENTRY(792),
> +	ICE_PTT_UNUSED_ENTRY(793),
> +	ICE_PTT_UNUSED_ENTRY(794),
> +	ICE_PTT_UNUSED_ENTRY(795),
> +	ICE_PTT_UNUSED_ENTRY(796),
> +	ICE_PTT_UNUSED_ENTRY(797),
> +	ICE_PTT_UNUSED_ENTRY(798),
> +	ICE_PTT_UNUSED_ENTRY(799),
> +
> +	ICE_PTT_UNUSED_ENTRY(800),
> +	ICE_PTT_UNUSED_ENTRY(801),
> +	ICE_PTT_UNUSED_ENTRY(802),
> +	ICE_PTT_UNUSED_ENTRY(803),
> +	ICE_PTT_UNUSED_ENTRY(804),
> +	ICE_PTT_UNUSED_ENTRY(805),
> +	ICE_PTT_UNUSED_ENTRY(806),
> +	ICE_PTT_UNUSED_ENTRY(807),
> +	ICE_PTT_UNUSED_ENTRY(808),
> +	ICE_PTT_UNUSED_ENTRY(809),
> +
> +	ICE_PTT_UNUSED_ENTRY(810),
> +	ICE_PTT_UNUSED_ENTRY(811),
> +	ICE_PTT_UNUSED_ENTRY(812),
> +	ICE_PTT_UNUSED_ENTRY(813),
> +	ICE_PTT_UNUSED_ENTRY(814),
> +	ICE_PTT_UNUSED_ENTRY(815),
> +	ICE_PTT_UNUSED_ENTRY(816),
> +	ICE_PTT_UNUSED_ENTRY(817),
> +	ICE_PTT_UNUSED_ENTRY(818),
> +	ICE_PTT_UNUSED_ENTRY(819),
> +
> +	ICE_PTT_UNUSED_ENTRY(820),
> +	ICE_PTT_UNUSED_ENTRY(821),
> +	ICE_PTT_UNUSED_ENTRY(822),
> +	ICE_PTT_UNUSED_ENTRY(823),
> +	ICE_PTT_UNUSED_ENTRY(824),
> +	ICE_PTT_UNUSED_ENTRY(825),
> +	ICE_PTT_UNUSED_ENTRY(826),
> +	ICE_PTT_UNUSED_ENTRY(827),
> +	ICE_PTT_UNUSED_ENTRY(828),
> +	ICE_PTT_UNUSED_ENTRY(829),
> +
> +	ICE_PTT_UNUSED_ENTRY(830),
> +	ICE_PTT_UNUSED_ENTRY(831),
> +	ICE_PTT_UNUSED_ENTRY(832),
> +	ICE_PTT_UNUSED_ENTRY(833),
> +	ICE_PTT_UNUSED_ENTRY(834),
> +	ICE_PTT_UNUSED_ENTRY(835),
> +	ICE_PTT_UNUSED_ENTRY(836),
> +	ICE_PTT_UNUSED_ENTRY(837),
> +	ICE_PTT_UNUSED_ENTRY(838),
> +	ICE_PTT_UNUSED_ENTRY(839),
> +
> +	ICE_PTT_UNUSED_ENTRY(840),
> +	ICE_PTT_UNUSED_ENTRY(841),
> +	ICE_PTT_UNUSED_ENTRY(842),
> +	ICE_PTT_UNUSED_ENTRY(843),
> +	ICE_PTT_UNUSED_ENTRY(844),
> +	ICE_PTT_UNUSED_ENTRY(845),
> +	ICE_PTT_UNUSED_ENTRY(846),
> +	ICE_PTT_UNUSED_ENTRY(847),
> +	ICE_PTT_UNUSED_ENTRY(848),
> +	ICE_PTT_UNUSED_ENTRY(849),
> +
> +	ICE_PTT_UNUSED_ENTRY(850),
> +	ICE_PTT_UNUSED_ENTRY(851),
> +	ICE_PTT_UNUSED_ENTRY(852),
> +	ICE_PTT_UNUSED_ENTRY(853),
> +	ICE_PTT_UNUSED_ENTRY(854),
> +	ICE_PTT_UNUSED_ENTRY(855),
> +	ICE_PTT_UNUSED_ENTRY(856),
> +	ICE_PTT_UNUSED_ENTRY(857),
> +	ICE_PTT_UNUSED_ENTRY(858),
> +	ICE_PTT_UNUSED_ENTRY(859),
> +
> +	ICE_PTT_UNUSED_ENTRY(860),
> +	ICE_PTT_UNUSED_ENTRY(861),
> +	ICE_PTT_UNUSED_ENTRY(862),
> +	ICE_PTT_UNUSED_ENTRY(863),
> +	ICE_PTT_UNUSED_ENTRY(864),
> +	ICE_PTT_UNUSED_ENTRY(865),
> +	ICE_PTT_UNUSED_ENTRY(866),
> +	ICE_PTT_UNUSED_ENTRY(867),
> +	ICE_PTT_UNUSED_ENTRY(868),
> +	ICE_PTT_UNUSED_ENTRY(869),
> +
> +	ICE_PTT_UNUSED_ENTRY(870),
> +	ICE_PTT_UNUSED_ENTRY(871),
> +	ICE_PTT_UNUSED_ENTRY(872),
> +	ICE_PTT_UNUSED_ENTRY(873),
> +	ICE_PTT_UNUSED_ENTRY(874),
> +	ICE_PTT_UNUSED_ENTRY(875),
> +	ICE_PTT_UNUSED_ENTRY(876),
> +	ICE_PTT_UNUSED_ENTRY(877),
> +	ICE_PTT_UNUSED_ENTRY(878),
> +	ICE_PTT_UNUSED_ENTRY(879),
> +
> +	ICE_PTT_UNUSED_ENTRY(880),
> +	ICE_PTT_UNUSED_ENTRY(881),
> +	ICE_PTT_UNUSED_ENTRY(882),
> +	ICE_PTT_UNUSED_ENTRY(883),
> +	ICE_PTT_UNUSED_ENTRY(884),
> +	ICE_PTT_UNUSED_ENTRY(885),
> +	ICE_PTT_UNUSED_ENTRY(886),
> +	ICE_PTT_UNUSED_ENTRY(887),
> +	ICE_PTT_UNUSED_ENTRY(888),
> +	ICE_PTT_UNUSED_ENTRY(889),
> +
> +	ICE_PTT_UNUSED_ENTRY(890),
> +	ICE_PTT_UNUSED_ENTRY(891),
> +	ICE_PTT_UNUSED_ENTRY(892),
> +	ICE_PTT_UNUSED_ENTRY(893),
> +	ICE_PTT_UNUSED_ENTRY(894),
> +	ICE_PTT_UNUSED_ENTRY(895),
> +	ICE_PTT_UNUSED_ENTRY(896),
> +	ICE_PTT_UNUSED_ENTRY(897),
> +	ICE_PTT_UNUSED_ENTRY(898),
> +	ICE_PTT_UNUSED_ENTRY(899),
> +
> +	ICE_PTT_UNUSED_ENTRY(900),
> +	ICE_PTT_UNUSED_ENTRY(901),
> +	ICE_PTT_UNUSED_ENTRY(902),
> +	ICE_PTT_UNUSED_ENTRY(903),
> +	ICE_PTT_UNUSED_ENTRY(904),
> +	ICE_PTT_UNUSED_ENTRY(905),
> +	ICE_PTT_UNUSED_ENTRY(906),
> +	ICE_PTT_UNUSED_ENTRY(907),
> +	ICE_PTT_UNUSED_ENTRY(908),
> +	ICE_PTT_UNUSED_ENTRY(909),
> +
> +	ICE_PTT_UNUSED_ENTRY(910),
> +	ICE_PTT_UNUSED_ENTRY(911),
> +	ICE_PTT_UNUSED_ENTRY(912),
> +	ICE_PTT_UNUSED_ENTRY(913),
> +	ICE_PTT_UNUSED_ENTRY(914),
> +	ICE_PTT_UNUSED_ENTRY(915),
> +	ICE_PTT_UNUSED_ENTRY(916),
> +	ICE_PTT_UNUSED_ENTRY(917),
> +	ICE_PTT_UNUSED_ENTRY(918),
> +	ICE_PTT_UNUSED_ENTRY(919),
> +
> +	ICE_PTT_UNUSED_ENTRY(920),
> +	ICE_PTT_UNUSED_ENTRY(921),
> +	ICE_PTT_UNUSED_ENTRY(922),
> +	ICE_PTT_UNUSED_ENTRY(923),
> +	ICE_PTT_UNUSED_ENTRY(924),
> +	ICE_PTT_UNUSED_ENTRY(925),
> +	ICE_PTT_UNUSED_ENTRY(926),
> +	ICE_PTT_UNUSED_ENTRY(927),
> +	ICE_PTT_UNUSED_ENTRY(928),
> +	ICE_PTT_UNUSED_ENTRY(929),
> +
> +	ICE_PTT_UNUSED_ENTRY(930),
> +	ICE_PTT_UNUSED_ENTRY(931),
> +	ICE_PTT_UNUSED_ENTRY(932),
> +	ICE_PTT_UNUSED_ENTRY(933),
> +	ICE_PTT_UNUSED_ENTRY(934),
> +	ICE_PTT_UNUSED_ENTRY(935),
> +	ICE_PTT_UNUSED_ENTRY(936),
> +	ICE_PTT_UNUSED_ENTRY(937),
> +	ICE_PTT_UNUSED_ENTRY(938),
> +	ICE_PTT_UNUSED_ENTRY(939),
> +
> +	ICE_PTT_UNUSED_ENTRY(940),
> +	ICE_PTT_UNUSED_ENTRY(941),
> +	ICE_PTT_UNUSED_ENTRY(942),
> +	ICE_PTT_UNUSED_ENTRY(943),
> +	ICE_PTT_UNUSED_ENTRY(944),
> +	ICE_PTT_UNUSED_ENTRY(945),
> +	ICE_PTT_UNUSED_ENTRY(946),
> +	ICE_PTT_UNUSED_ENTRY(947),
> +	ICE_PTT_UNUSED_ENTRY(948),
> +	ICE_PTT_UNUSED_ENTRY(949),
> +
> +	ICE_PTT_UNUSED_ENTRY(950),
> +	ICE_PTT_UNUSED_ENTRY(951),
> +	ICE_PTT_UNUSED_ENTRY(952),
> +	ICE_PTT_UNUSED_ENTRY(953),
> +	ICE_PTT_UNUSED_ENTRY(954),
> +	ICE_PTT_UNUSED_ENTRY(955),
> +	ICE_PTT_UNUSED_ENTRY(956),
> +	ICE_PTT_UNUSED_ENTRY(957),
> +	ICE_PTT_UNUSED_ENTRY(958),
> +	ICE_PTT_UNUSED_ENTRY(959),
> +
> +	ICE_PTT_UNUSED_ENTRY(960),
> +	ICE_PTT_UNUSED_ENTRY(961),
> +	ICE_PTT_UNUSED_ENTRY(962),
> +	ICE_PTT_UNUSED_ENTRY(963),
> +	ICE_PTT_UNUSED_ENTRY(964),
> +	ICE_PTT_UNUSED_ENTRY(965),
> +	ICE_PTT_UNUSED_ENTRY(966),
> +	ICE_PTT_UNUSED_ENTRY(967),
> +	ICE_PTT_UNUSED_ENTRY(968),
> +	ICE_PTT_UNUSED_ENTRY(969),
> +
> +	ICE_PTT_UNUSED_ENTRY(970),
> +	ICE_PTT_UNUSED_ENTRY(971),
> +	ICE_PTT_UNUSED_ENTRY(972),
> +	ICE_PTT_UNUSED_ENTRY(973),
> +	ICE_PTT_UNUSED_ENTRY(974),
> +	ICE_PTT_UNUSED_ENTRY(975),
> +	ICE_PTT_UNUSED_ENTRY(976),
> +	ICE_PTT_UNUSED_ENTRY(977),
> +	ICE_PTT_UNUSED_ENTRY(978),
> +	ICE_PTT_UNUSED_ENTRY(979),
> +
> +	ICE_PTT_UNUSED_ENTRY(980),
> +	ICE_PTT_UNUSED_ENTRY(981),
> +	ICE_PTT_UNUSED_ENTRY(982),
> +	ICE_PTT_UNUSED_ENTRY(983),
> +	ICE_PTT_UNUSED_ENTRY(984),
> +	ICE_PTT_UNUSED_ENTRY(985),
> +	ICE_PTT_UNUSED_ENTRY(986),
> +	ICE_PTT_UNUSED_ENTRY(987),
> +	ICE_PTT_UNUSED_ENTRY(988),
> +	ICE_PTT_UNUSED_ENTRY(989),
> +
> +	ICE_PTT_UNUSED_ENTRY(990),
> +	ICE_PTT_UNUSED_ENTRY(991),
> +	ICE_PTT_UNUSED_ENTRY(992),
> +	ICE_PTT_UNUSED_ENTRY(993),
> +	ICE_PTT_UNUSED_ENTRY(994),
> +	ICE_PTT_UNUSED_ENTRY(995),
> +	ICE_PTT_UNUSED_ENTRY(996),
> +	ICE_PTT_UNUSED_ENTRY(997),
> +	ICE_PTT_UNUSED_ENTRY(998),
> +	ICE_PTT_UNUSED_ENTRY(999),
> +
> +	ICE_PTT_UNUSED_ENTRY(1000),
> +	ICE_PTT_UNUSED_ENTRY(1001),
> +	ICE_PTT_UNUSED_ENTRY(1002),
> +	ICE_PTT_UNUSED_ENTRY(1003),
> +	ICE_PTT_UNUSED_ENTRY(1004),
> +	ICE_PTT_UNUSED_ENTRY(1005),
> +	ICE_PTT_UNUSED_ENTRY(1006),
> +	ICE_PTT_UNUSED_ENTRY(1007),
> +	ICE_PTT_UNUSED_ENTRY(1008),
> +	ICE_PTT_UNUSED_ENTRY(1009),
> +
> +	ICE_PTT_UNUSED_ENTRY(1010),
> +	ICE_PTT_UNUSED_ENTRY(1011),
> +	ICE_PTT_UNUSED_ENTRY(1012),
> +	ICE_PTT_UNUSED_ENTRY(1013),
> +	ICE_PTT_UNUSED_ENTRY(1014),
> +	ICE_PTT_UNUSED_ENTRY(1015),
> +	ICE_PTT_UNUSED_ENTRY(1016),
> +	ICE_PTT_UNUSED_ENTRY(1017),
> +	ICE_PTT_UNUSED_ENTRY(1018),
> +	ICE_PTT_UNUSED_ENTRY(1019),
> +
> +	ICE_PTT_UNUSED_ENTRY(1020),
> +	ICE_PTT_UNUSED_ENTRY(1021),
> +	ICE_PTT_UNUSED_ENTRY(1022),
> +	ICE_PTT_UNUSED_ENTRY(1023),
>  };
>  
>  static inline struct ice_rx_ptype_decoded ice_decode_rx_desc_ptype(u16 ptype)
> diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c
> index da0d1337a423..9c5426ee4983 100644
> --- a/drivers/net/ethernet/intel/ice/ice_txrx.c
> +++ b/drivers/net/ethernet/intel/ice/ice_txrx.c
> @@ -1094,7 +1094,7 @@ int ice_clean_rx_irq(struct ice_ring *rx_ring, int budget)
>  		u16 stat_err_bits;
>  		int rx_buf_pgcnt;
>  		u16 vlan_tag = 0;
> -		u8 rx_ptype;
> +		u16 rx_ptype;
>  
>  		/* get the Rx desc from Rx ring based on 'next_to_clean' */
>  		rx_desc = ICE_RX_DESC(rx_ring, rx_ring->next_to_clean);
> diff --git a/drivers/net/ethernet/intel/ice/ice_txrx_lib.c b/drivers/net/ethernet/intel/ice/ice_txrx_lib.c
> index 8fe5d22ae4c3..443203bafca4 100644
> --- a/drivers/net/ethernet/intel/ice/ice_txrx_lib.c
> +++ b/drivers/net/ethernet/intel/ice/ice_txrx_lib.c
> @@ -38,10 +38,23 @@ void ice_release_rx_desc(struct ice_ring *rx_ring, u16 val)
>   * ice_ptype_to_htype - get a hash type
>   * @ptype: the ptype value from the descriptor
>   *
> - * Returns a hash type to be used by skb_set_hash
> + * Returns appropriate hash type (such as PKT_HASH_TYPE_L2/L3/L4) to be used by
> + * skb_set_hash based on PTYPE as parsed by HW Rx pipeline and is part of
> + * Rx desc.
>   */
> -static enum pkt_hash_types ice_ptype_to_htype(u8 __always_unused ptype)
> +static enum pkt_hash_types ice_ptype_to_htype(u16 ptype)
>  {
> +	struct ice_rx_ptype_decoded decoded = ice_decode_rx_desc_ptype(ptype);
> +
> +	if (!decoded.known)
> +		return PKT_HASH_TYPE_NONE;
> +	if (decoded.payload_layer == ICE_RX_PTYPE_PAYLOAD_LAYER_PAY4)
> +		return PKT_HASH_TYPE_L4;
> +	if (decoded.payload_layer == ICE_RX_PTYPE_PAYLOAD_LAYER_PAY3)
> +		return PKT_HASH_TYPE_L3;
> +	if (decoded.outer_ip == ICE_RX_PTYPE_OUTER_L2)
> +		return PKT_HASH_TYPE_L2;
> +
>  	return PKT_HASH_TYPE_NONE;
>  }
>  
> @@ -54,7 +67,7 @@ static enum pkt_hash_types ice_ptype_to_htype(u8 __always_unused ptype)
>   */
>  static void
>  ice_rx_hash(struct ice_ring *rx_ring, union ice_32b_rx_flex_desc *rx_desc,
> -	    struct sk_buff *skb, u8 rx_ptype)
> +	    struct sk_buff *skb, u16 rx_ptype)
>  {
>  	struct ice_32b_rx_flex_desc_nic *nic_mdid;
>  	u32 hash;
> @@ -81,7 +94,7 @@ ice_rx_hash(struct ice_ring *rx_ring, union ice_32b_rx_flex_desc *rx_desc,
>   */
>  static void
>  ice_rx_csum(struct ice_ring *ring, struct sk_buff *skb,
> -	    union ice_32b_rx_flex_desc *rx_desc, u8 ptype)
> +	    union ice_32b_rx_flex_desc *rx_desc, u16 ptype)
>  {
>  	struct ice_rx_ptype_decoded decoded;
>  	u16 rx_status0, rx_status1;
> @@ -166,7 +179,7 @@ ice_rx_csum(struct ice_ring *ring, struct sk_buff *skb,
>  void
>  ice_process_skb_fields(struct ice_ring *rx_ring,
>  		       union ice_32b_rx_flex_desc *rx_desc,
> -		       struct sk_buff *skb, u8 ptype)
> +		       struct sk_buff *skb, u16 ptype)
>  {
>  	ice_rx_hash(rx_ring, rx_desc, skb, ptype);
>  
> diff --git a/drivers/net/ethernet/intel/ice/ice_txrx_lib.h b/drivers/net/ethernet/intel/ice/ice_txrx_lib.h
> index 58ff58f0f972..05ac30752902 100644
> --- a/drivers/net/ethernet/intel/ice/ice_txrx_lib.h
> +++ b/drivers/net/ethernet/intel/ice/ice_txrx_lib.h
> @@ -53,7 +53,7 @@ void ice_release_rx_desc(struct ice_ring *rx_ring, u16 val);
>  void
>  ice_process_skb_fields(struct ice_ring *rx_ring,
>  		       union ice_32b_rx_flex_desc *rx_desc,
> -		       struct sk_buff *skb, u8 ptype);
> +		       struct sk_buff *skb, u16 ptype);
>  void
>  ice_receive_skb(struct ice_ring *rx_ring, struct sk_buff *skb, u16 vlan_tag);
>  #endif /* !_ICE_TXRX_LIB_H_ */
> diff --git a/drivers/net/ethernet/intel/ice/ice_xsk.c b/drivers/net/ethernet/intel/ice/ice_xsk.c
> index 68d8defd021c..a5b49cad15a6 100644
> --- a/drivers/net/ethernet/intel/ice/ice_xsk.c
> +++ b/drivers/net/ethernet/intel/ice/ice_xsk.c
> @@ -524,7 +524,7 @@ int ice_clean_rx_irq_zc(struct ice_ring *rx_ring, int budget)
>  		struct sk_buff *skb;
>  		u16 stat_err_bits;
>  		u16 vlan_tag = 0;
> -		u8 rx_ptype;
> +		u16 rx_ptype;
>  
>  		rx_desc = ICE_RX_DESC(rx_ring, rx_ring->next_to_clean);
>  
> 
> base-commit: 3df64581f83a4583315aa062de4920b1dda9ae2f
> -- 
> 2.29.2
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan at osuosl.org
> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan


More information about the Intel-wired-lan mailing list