Lines Matching refs:conn

45 	struct efx_tc_ct_entry *conn = ptr;
50 conn->cookie);
55 efx_tc_flower_release_counter(efx, conn->cnt);
56 kfree(conn);
94 struct efx_tc_ct_entry *conn)
147 conn->eth_proto = fm.key->n_proto;
148 if (conn->eth_proto != (ipv == 4 ? htons(ETH_P_IP)
152 ipv, ntohs(conn->eth_proto));
161 conn->ip_proto = fm.key->ip_proto;
162 switch (conn->ip_proto) {
171 conn->ip_proto);
190 conn->src_ip = fm.key->src;
197 conn->dst_ip = fm.key->dst;
208 conn->src_ip6 = fm.key->src;
215 conn->dst_ip6 = fm.key->dst;
232 conn->l4_sport = fm.key->src;
239 conn->l4_dport = fm.key->dst;
290 static int efx_tc_ct_mangle(struct efx_nic *efx, struct efx_tc_ct_entry *conn,
307 conn->nat_ip = htonl(fa->mangle.val);
332 conn->l4_natport = htons(fa->mangle.val);
346 conn->dnat = dnat;
347 else if (conn->dnat != dnat)
357 struct efx_tc_ct_entry *conn, *old;
368 conn = kzalloc(sizeof(*conn), GFP_USER);
369 if (!conn)
371 conn->cookie = tc->cookie;
373 &conn->linkage,
386 conn->zone = ct_zone;
387 rc = efx_tc_ct_parse_match(efx, fr, conn);
395 conn->mark = fa->ct_metadata.mark;
404 if (conn->eth_proto != htons(ETH_P_IP)) {
410 rc = efx_tc_ct_mangle(efx, conn, fa, &mung);
424 conn->nat_ip = conn->dnat ? conn->dst_ip : conn->src_ip;
426 conn->l4_natport = conn->dnat ? conn->l4_dport : conn->l4_sport;
433 conn->cnt = cnt;
435 rc = efx_mae_insert_ct(efx, conn);
442 list_add_tail(&conn->list, &ct_zone->cts);
446 if (conn->cnt)
447 efx_tc_flower_release_counter(efx, conn->cnt);
449 rhashtable_remove_fast(&efx->tc->ct_ht, &conn->linkage,
451 kfree(conn);
456 static void efx_tc_ct_remove(struct efx_nic *efx, struct efx_tc_ct_entry *conn)
461 rc = efx_mae_remove_ct(efx, conn);
463 rhashtable_remove_fast(&efx->tc->ct_ht, &conn->linkage,
468 conn->cookie, rc);
471 conn->cookie);
475 static void efx_tc_ct_remove_finish(struct efx_nic *efx, struct efx_tc_ct_entry *conn)
477 /* Remove related CT counter. This is delayed after the conn object we
481 efx_tc_flower_release_counter(efx, conn->cnt);
482 kfree(conn);
489 struct efx_tc_ct_entry *conn;
491 conn = rhashtable_lookup_fast(&efx->tc->ct_ht, &tc->cookie,
493 if (!conn) {
500 list_del(&conn->list);
501 efx_tc_ct_remove(efx, conn);
504 efx_tc_ct_remove_finish(efx, conn);
512 struct efx_tc_ct_entry *conn;
516 conn = rhashtable_lookup_fast(&efx->tc->ct_ht, &tc->cookie,
518 if (!conn) {
525 cnt = conn->cnt;
606 struct efx_tc_ct_entry *conn, *next;
614 list_for_each_entry(conn, &ct_zone->cts, list)
615 efx_tc_ct_remove(efx, conn);
617 /* need to use _safe because efx_tc_ct_remove_finish() frees conn */
618 list_for_each_entry_safe(conn, next, &ct_zone->cts, list)
619 efx_tc_ct_remove_finish(efx, conn);