MCPcopy Create free account
hub / github.com/F-Stack/f-stack / tbl8_recycle

Function tbl8_recycle

dpdk/lib/fib/trie.c:172–226  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

170}
171
172static void
173tbl8_recycle(struct rte_trie_tbl *dp, void *par, uint64_t tbl8_idx)
174{
175 uint32_t i;
176 uint64_t nh;
177 uint16_t *ptr16;
178 uint32_t *ptr32;
179 uint64_t *ptr64;
180
181 switch (dp->nh_sz) {
182 case RTE_FIB6_TRIE_2B:
183 ptr16 = &((uint16_t *)dp->tbl8)[tbl8_idx *
184 TRIE_TBL8_GRP_NUM_ENT];
185 nh = *ptr16;
186 if (nh & TRIE_EXT_ENT)
187 return;
188 for (i = 1; i < TRIE_TBL8_GRP_NUM_ENT; i++) {
189 if (nh != ptr16[i])
190 return;
191 }
192 write_to_dp(par, nh, dp->nh_sz, 1);
193 for (i = 0; i < TRIE_TBL8_GRP_NUM_ENT; i++)
194 ptr16[i] = 0;
195 break;
196 case RTE_FIB6_TRIE_4B:
197 ptr32 = &((uint32_t *)dp->tbl8)[tbl8_idx *
198 TRIE_TBL8_GRP_NUM_ENT];
199 nh = *ptr32;
200 if (nh & TRIE_EXT_ENT)
201 return;
202 for (i = 1; i < TRIE_TBL8_GRP_NUM_ENT; i++) {
203 if (nh != ptr32[i])
204 return;
205 }
206 write_to_dp(par, nh, dp->nh_sz, 1);
207 for (i = 0; i < TRIE_TBL8_GRP_NUM_ENT; i++)
208 ptr32[i] = 0;
209 break;
210 case RTE_FIB6_TRIE_8B:
211 ptr64 = &((uint64_t *)dp->tbl8)[tbl8_idx *
212 TRIE_TBL8_GRP_NUM_ENT];
213 nh = *ptr64;
214 if (nh & TRIE_EXT_ENT)
215 return;
216 for (i = 1; i < TRIE_TBL8_GRP_NUM_ENT; i++) {
217 if (nh != ptr64[i])
218 return;
219 }
220 write_to_dp(par, nh, dp->nh_sz, 1);
221 for (i = 0; i < TRIE_TBL8_GRP_NUM_ENT; i++)
222 ptr64[i] = 0;
223 break;
224 }
225 tbl8_put(dp, tbl8_idx);
226}
227
228#define BYTE_SIZE 8
229static inline uint32_t

Callers 2

recycle_root_pathFunction · 0.70
write_edgeFunction · 0.70

Calls 2

write_to_dpFunction · 0.85
tbl8_putFunction · 0.70

Tested by

no test coverage detected