@@ -63,9 +63,82 @@ static void test_self_id_sequence_enumerator_invalid(struct kunit *test)
6363 KUNIT_EXPECT_EQ (test , PTR_ERR (entry ), - EPROTO );
6464}
6565
66+ static void test_self_id_sequence_get_port_status (struct kunit * test )
67+ {
68+ static const u32 expected [] = {
69+ 0x000000e5 ,
70+ 0x00839e79 ,
71+ 0x0091e79d ,
72+ 0x00a279e4 ,
73+ };
74+ u32 quadlets [] = {
75+ 0x00000001 ,
76+ 0x00800001 ,
77+ 0x00900001 ,
78+ 0x00a00000 ,
79+ };
80+ enum phy_packet_self_id_port_status port_status [28 ];
81+ unsigned int port_capacity ;
82+ unsigned int port_index ;
83+
84+ KUNIT_ASSERT_EQ (test , ARRAY_SIZE (expected ), ARRAY_SIZE (quadlets ));
85+
86+ // With an extra port.
87+ port_capacity = self_id_sequence_get_port_capacity (ARRAY_SIZE (expected )) + 1 ;
88+ KUNIT_ASSERT_EQ (test , port_capacity , ARRAY_SIZE (port_status ));
89+
90+ for (port_index = 0 ; port_index < port_capacity ; ++ port_index ) {
91+ port_status [port_index ] =
92+ self_id_sequence_get_port_status (expected , ARRAY_SIZE (expected ), port_index );
93+ self_id_sequence_set_port_status (quadlets , ARRAY_SIZE (quadlets ), port_index ,
94+ port_status [port_index ]);
95+ }
96+
97+ // Self ID zero.
98+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_CHILD , port_status [0 ]);
99+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_PARENT , port_status [1 ]);
100+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NCONN , port_status [2 ]);
101+
102+ // Self ID one.
103+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_CHILD , port_status [3 ]);
104+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_PARENT , port_status [4 ]);
105+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NCONN , port_status [5 ]);
106+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_CHILD , port_status [6 ]);
107+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_PARENT , port_status [7 ]);
108+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NCONN , port_status [8 ]);
109+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_CHILD , port_status [9 ]);
110+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_PARENT , port_status [10 ]);
111+
112+ // Self ID two.
113+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NCONN , port_status [11 ]);
114+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_CHILD , port_status [12 ]);
115+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_PARENT , port_status [13 ]);
116+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NCONN , port_status [14 ]);
117+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_CHILD , port_status [15 ]);
118+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_PARENT , port_status [16 ]);
119+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NCONN , port_status [17 ]);
120+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_CHILD , port_status [18 ]);
121+
122+ // Self ID three.
123+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_PARENT , port_status [19 ]);
124+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NCONN , port_status [20 ]);
125+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_CHILD , port_status [21 ]);
126+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_PARENT , port_status [22 ]);
127+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NCONN , port_status [23 ]);
128+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_CHILD , port_status [24 ]);
129+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_PARENT , port_status [25 ]);
130+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NCONN , port_status [26 ]);
131+
132+ // Our of order.
133+ KUNIT_EXPECT_EQ (test , PHY_PACKET_SELF_ID_PORT_STATUS_NONE , port_status [27 ]);
134+
135+ KUNIT_EXPECT_MEMEQ (test , quadlets , expected , sizeof (expected ));
136+ }
137+
66138static struct kunit_case self_id_sequence_helper_test_cases [] = {
67139 KUNIT_CASE (test_self_id_sequence_enumerator_valid ),
68140 KUNIT_CASE (test_self_id_sequence_enumerator_invalid ),
141+ KUNIT_CASE (test_self_id_sequence_get_port_status ),
69142 {}
70143};
71144
0 commit comments