Lines Matching refs:zt

545 	struct nfp_fl_ct_zone_entry *zt = m_entry->zt;  in nfp_fl_ct_add_offload()  local
547 struct nfp_flower_priv *priv = zt->priv; in nfp_fl_ct_add_offload()
898 static int nfp_ct_do_nft_merge(struct nfp_fl_ct_zone_entry *zt, in nfp_ct_do_nft_merge() argument
934 nft_m_entry = get_hashentry(&zt->nft_merge_tb, in nfp_ct_do_nft_merge()
947 nft_m_entry->zt = zt; in nfp_ct_do_nft_merge()
965 err = rhashtable_insert_fast(&zt->nft_merge_tb, &nft_m_entry->hash_node, in nfp_ct_do_nft_merge()
970 zt->nft_merge_count++; in nfp_ct_do_nft_merge()
975 nfp_fl_ct_del_offload(zt->priv->app, nft_m_entry->tc_flower_cookie, in nfp_ct_do_nft_merge()
984 static int nfp_ct_do_tc_merge(struct nfp_fl_ct_zone_entry *zt, in nfp_ct_do_tc_merge() argument
1016 m_entry = get_hashentry(&zt->tc_merge_tb, &new_cookie, in nfp_ct_do_tc_merge()
1026 m_entry->zt = zt; in nfp_ct_do_tc_merge()
1035 err = rhashtable_insert_fast(&zt->tc_merge_tb, &m_entry->hash_node, in nfp_ct_do_tc_merge()
1039 zt->tc_merge_count++; in nfp_ct_do_tc_merge()
1042 list_for_each_entry_safe(nft_entry, nft_tmp, &zt->nft_flows_list, in nfp_ct_do_tc_merge()
1044 nfp_ct_do_nft_merge(zt, nft_entry, m_entry); in nfp_ct_do_tc_merge()
1060 struct nfp_fl_ct_zone_entry *zt; in get_nfp_zone_entry() local
1067 zt = get_hashentry(&priv->ct_zone_table, &zone, in get_nfp_zone_entry()
1068 nfp_zone_table_params, sizeof(*zt)); in get_nfp_zone_entry()
1071 if (IS_ERR(zt) || zt->priv) in get_nfp_zone_entry()
1072 return zt; in get_nfp_zone_entry()
1074 zt = kzalloc(sizeof(*zt), GFP_KERNEL); in get_nfp_zone_entry()
1075 if (!zt) in get_nfp_zone_entry()
1079 zt->zone = zone; in get_nfp_zone_entry()
1080 zt->priv = priv; in get_nfp_zone_entry()
1081 zt->nft = NULL; in get_nfp_zone_entry()
1084 INIT_LIST_HEAD(&zt->pre_ct_list); in get_nfp_zone_entry()
1085 INIT_LIST_HEAD(&zt->post_ct_list); in get_nfp_zone_entry()
1086 INIT_LIST_HEAD(&zt->nft_flows_list); in get_nfp_zone_entry()
1088 err = rhashtable_init(&zt->tc_merge_tb, &nfp_tc_ct_merge_params); in get_nfp_zone_entry()
1092 err = rhashtable_init(&zt->nft_merge_tb, &nfp_nft_ct_merge_params); in get_nfp_zone_entry()
1097 priv->ct_zone_wc = zt; in get_nfp_zone_entry()
1100 &zt->hash_node, in get_nfp_zone_entry()
1106 return zt; in get_nfp_zone_entry()
1109 rhashtable_destroy(&zt->nft_merge_tb); in get_nfp_zone_entry()
1111 rhashtable_destroy(&zt->tc_merge_tb); in get_nfp_zone_entry()
1113 kfree(zt); in get_nfp_zone_entry()
1118 nfp_fl_ct_flow_entry *nfp_fl_ct_add_flow(struct nfp_fl_ct_zone_entry *zt, in nfp_fl_ct_add_flow() argument
1163 entry->zt = zt; in nfp_fl_ct_add_flow()
1199 map = get_hashentry(&zt->priv->ct_map_table, &flow->cookie, in nfp_fl_ct_add_flow()
1209 err = rhashtable_insert_fast(&zt->priv->ct_map_table, in nfp_fl_ct_add_flow()
1236 struct nfp_fl_ct_zone_entry *zt; in cleanup_nft_merge_entry() local
1239 zt = m_entry->zt; in cleanup_nft_merge_entry()
1243 err = nfp_fl_ct_del_offload(zt->priv->app, m_entry->tc_flower_cookie, in cleanup_nft_merge_entry()
1249 WARN_ON_ONCE(rhashtable_remove_fast(&zt->nft_merge_tb, in cleanup_nft_merge_entry()
1252 zt->nft_merge_count--; in cleanup_nft_merge_entry()
1289 struct nfp_fl_ct_zone_entry *zt; in nfp_del_tc_merge_entry() local
1292 zt = m_ent->zt; in nfp_del_tc_merge_entry()
1293 err = rhashtable_remove_fast(&zt->tc_merge_tb, in nfp_del_tc_merge_entry()
1298 zt->tc_merge_count--; in nfp_del_tc_merge_entry()
1389 struct nfp_fl_ct_zone_entry *zt) in nfp_ct_merge_nft_with_tc() argument
1394 rhashtable_walk_enter(&zt->tc_merge_tb, &iter); in nfp_ct_merge_nft_with_tc()
1400 nfp_ct_do_nft_merge(zt, nft_entry, tc_merge_entry); in nfp_ct_merge_nft_with_tc()
1414 struct nfp_fl_ct_zone_entry *zt; in nfp_fl_ct_handle_pre_ct() local
1431 zt = get_nfp_zone_entry(priv, ct_act->ct.zone, false); in nfp_fl_ct_handle_pre_ct()
1432 if (IS_ERR(zt)) { in nfp_fl_ct_handle_pre_ct()
1435 return PTR_ERR(zt); in nfp_fl_ct_handle_pre_ct()
1438 if (!zt->nft) { in nfp_fl_ct_handle_pre_ct()
1439 zt->nft = ct_act->ct.flow_table; in nfp_fl_ct_handle_pre_ct()
1440 err = nf_flow_table_offload_add_cb(zt->nft, nfp_fl_ct_handle_nft_flow, zt); in nfp_fl_ct_handle_pre_ct()
1449 ct_entry = nfp_fl_ct_add_flow(zt, netdev, flow, false, extack); in nfp_fl_ct_handle_pre_ct()
1454 list_add(&ct_entry->list_node, &zt->pre_ct_list); in nfp_fl_ct_handle_pre_ct()
1455 zt->pre_ct_count++; in nfp_fl_ct_handle_pre_ct()
1457 nfp_ct_merge_tc_entries(ct_entry, zt, zt); in nfp_fl_ct_handle_pre_ct()
1461 nfp_ct_merge_tc_entries(ct_entry, priv->ct_zone_wc, zt); in nfp_fl_ct_handle_pre_ct()
1473 struct nfp_fl_ct_zone_entry *zt; in nfp_fl_ct_handle_post_ct() local
1486 zt = get_nfp_zone_entry(priv, ct.key->ct_zone, wildcarded); in nfp_fl_ct_handle_post_ct()
1487 if (IS_ERR(zt)) { in nfp_fl_ct_handle_post_ct()
1490 return PTR_ERR(zt); in nfp_fl_ct_handle_post_ct()
1494 ct_entry = nfp_fl_ct_add_flow(zt, netdev, flow, false, extack); in nfp_fl_ct_handle_post_ct()
1500 list_add(&ct_entry->list_node, &zt->post_ct_list); in nfp_fl_ct_handle_post_ct()
1501 zt->post_ct_count++; in nfp_fl_ct_handle_post_ct()
1522 nfp_ct_merge_tc_entries(ct_entry, zt, zt); in nfp_fl_ct_handle_post_ct()
1533 struct nfp_flower_priv *priv = nft_merge->zt->priv; in nfp_fl_ct_sub_stats()
1588 spin_lock_bh(&ct_entry->zt->priv->stats_lock); in nfp_fl_ct_stats()
1656 spin_unlock_bh(&ct_entry->zt->priv->stats_lock); in nfp_fl_ct_stats()
1662 nfp_fl_ct_offload_nft_flow(struct nfp_fl_ct_zone_entry *zt, struct flow_cls_offload *flow) in nfp_fl_ct_offload_nft_flow() argument
1676 ct_map_ent = rhashtable_lookup_fast(&zt->priv->ct_map_table, &flow->cookie, in nfp_fl_ct_offload_nft_flow()
1679 ct_entry = nfp_fl_ct_add_flow(zt, NULL, flow, true, extack); in nfp_fl_ct_offload_nft_flow()
1683 list_add(&ct_entry->list_node, &zt->nft_flows_list); in nfp_fl_ct_offload_nft_flow()
1684 zt->nft_flows_count++; in nfp_fl_ct_offload_nft_flow()
1685 nfp_ct_merge_nft_with_tc(ct_entry, zt); in nfp_fl_ct_offload_nft_flow()
1689 ct_map_ent = rhashtable_lookup_fast(&zt->priv->ct_map_table, &flow->cookie, in nfp_fl_ct_offload_nft_flow()
1693 ct_map_ent = rhashtable_lookup_fast(&zt->priv->ct_map_table, &flow->cookie, in nfp_fl_ct_offload_nft_flow()
1707 struct nfp_fl_ct_zone_entry *zt = cb_priv; in nfp_fl_ct_handle_nft_flow() local
1713 err = nfp_fl_ct_offload_nft_flow(zt, flow); in nfp_fl_ct_handle_nft_flow()
1723 nfp_fl_ct_clean_nft_entries(struct nfp_fl_ct_zone_entry *zt) in nfp_fl_ct_clean_nft_entries() argument
1728 list_for_each_entry_safe(nft_entry, ct_tmp, &zt->nft_flows_list, in nfp_fl_ct_clean_nft_entries()
1730 ct_map_ent = rhashtable_lookup_fast(&zt->priv->ct_map_table, in nfp_fl_ct_clean_nft_entries()
1740 struct nfp_fl_ct_zone_entry *zt; in nfp_fl_ct_del_flow() local
1746 zt = ct_map_ent->ct_entry->zt; in nfp_fl_ct_del_flow()
1748 m_table = &zt->priv->ct_map_table; in nfp_fl_ct_del_flow()
1752 zt->pre_ct_count--; in nfp_fl_ct_del_flow()
1758 if (!zt->pre_ct_count) { in nfp_fl_ct_del_flow()
1759 zt->nft = NULL; in nfp_fl_ct_del_flow()
1760 nfp_fl_ct_clean_nft_entries(zt); in nfp_fl_ct_del_flow()
1764 zt->post_ct_count--; in nfp_fl_ct_del_flow()
1771 zt->nft_flows_count--; in nfp_fl_ct_del_flow()