Lines Matching refs:track
284 static bool nft_bitwise_reduce(struct nft_regs_track *track,
293 if (!track->regs[priv->sreg].selector)
296 bitwise = nft_expr_priv(track->regs[priv->dreg].selector);
297 if (track->regs[priv->sreg].selector == track->regs[priv->dreg].selector &&
298 track->regs[priv->sreg].num_reg == 0 &&
299 track->regs[priv->dreg].bitwise &&
300 track->regs[priv->dreg].bitwise->ops == expr->ops &&
308 track->cur = expr;
312 if (track->regs[priv->sreg].bitwise ||
313 track->regs[priv->sreg].num_reg != 0) {
314 nft_reg_track_cancel(track, priv->dreg, priv->len);
319 nft_reg_track_update(track, track->regs[priv->sreg].selector,
326 track->regs[dreg].bitwise = expr;
439 static bool nft_bitwise_fast_reduce(struct nft_regs_track *track,
445 if (!track->regs[priv->sreg].selector)
448 bitwise = nft_expr_priv(track->regs[priv->dreg].selector);
449 if (track->regs[priv->sreg].selector == track->regs[priv->dreg].selector &&
450 track->regs[priv->dreg].bitwise &&
451 track->regs[priv->dreg].bitwise->ops == expr->ops &&
456 track->cur = expr;
460 if (track->regs[priv->sreg].bitwise) {
461 nft_reg_track_cancel(track, priv->dreg, NFT_REG32_SIZE);
466 track->regs[priv->dreg].selector =
467 track->regs[priv->sreg].selector;
469 track->regs[priv->dreg].bitwise = expr;
518 bool nft_expr_reduce_bitwise(struct nft_regs_track *track,
521 const struct nft_expr *last = track->last;
529 return nft_bitwise_reduce(track, next);
531 return nft_bitwise_fast_reduce(track, next);