Lines Matching refs:flow
309 OfDpaFlow *flow = value; in _of_dpa_flow_match() local
311 uint64_t *k = (uint64_t *)&flow->key; in _of_dpa_flow_match()
312 uint64_t *m = (uint64_t *)&flow->mask; in _of_dpa_flow_match()
316 if (flow->key.tbl_id == match->value.tbl_id) { in _of_dpa_flow_match()
317 of_dpa_flow_key_dump(&flow->key, &flow->mask); in _of_dpa_flow_match()
320 if (flow->key.width > match->value.width) { in _of_dpa_flow_match()
324 for (i = 0; i < flow->key.width; i++, k++, m++, v++) { in _of_dpa_flow_match()
333 flow->priority > match->best->priority || in _of_dpa_flow_match()
334 flow->lpm > match->best->lpm) { in _of_dpa_flow_match()
335 match->best = flow; in _of_dpa_flow_match()
354 static int of_dpa_flow_add(OfDpa *of_dpa, OfDpaFlow *flow) in of_dpa_flow_add() argument
356 g_hash_table_insert(of_dpa->flow_tbl, &flow->cookie, flow); in of_dpa_flow_add()
361 static void of_dpa_flow_del(OfDpa *of_dpa, OfDpaFlow *flow) in of_dpa_flow_del() argument
363 g_hash_table_remove(of_dpa->flow_tbl, &flow->cookie); in of_dpa_flow_del()
368 OfDpaFlow *flow; in of_dpa_flow_alloc() local
371 flow = g_new0(OfDpaFlow, 1); in of_dpa_flow_alloc()
373 flow->cookie = cookie; in of_dpa_flow_alloc()
374 flow->mask.tbl_id = 0xffffffff; in of_dpa_flow_alloc()
376 flow->stats.install_time = flow->stats.refresh_time = now; in of_dpa_flow_alloc()
378 return flow; in of_dpa_flow_alloc()
547 OfDpaFlow *flow) in of_dpa_vlan_insert() argument
549 if (flow->action.apply.new_vlan_id) { in of_dpa_vlan_insert()
550 of_dpa_flow_pkt_insert_vlan(fc, flow->action.apply.new_vlan_id); in of_dpa_vlan_insert()
572 OfDpaFlow *flow) in of_dpa_apply_actions() argument
574 fc->action_set.apply.copy_to_cpu = flow->action.apply.copy_to_cpu; in of_dpa_apply_actions()
575 fc->action_set.apply.vlan_id = flow->key.eth.vlan_id; in of_dpa_apply_actions()
596 OfDpaFlow *flow; in of_dpa_bridging_learn() local
612 flow = of_dpa_flow_match(fc->of_dpa, &match); in of_dpa_bridging_learn()
613 if (flow) { in of_dpa_bridging_learn()
614 if (!memcmp(flow->mask.eth.dst.a, ff_mac.a, in of_dpa_bridging_learn()
615 sizeof(flow->mask.eth.dst.a))) { in of_dpa_bridging_learn()
620 if (now - flow->stats.refresh_time < refresh_delay) { in of_dpa_bridging_learn()
623 flow->stats.refresh_time = now; in of_dpa_bridging_learn()
643 OfDpaFlow *flow) in of_dpa_bridging_action_write() argument
645 if (flow->action.write.group_id != ROCKER_GROUP_NONE) { in of_dpa_bridging_action_write()
646 fc->action_set.write.group_id = flow->action.write.group_id; in of_dpa_bridging_action_write()
648 fc->action_set.write.tun_log_lport = flow->action.write.tun_log_lport; in of_dpa_bridging_action_write()
672 OfDpaFlow *flow) in of_dpa_unicast_routing_action_write() argument
674 if (flow->action.write.group_id != ROCKER_GROUP_NONE) { in of_dpa_unicast_routing_action_write()
675 fc->action_set.write.group_id = flow->action.write.group_id; in of_dpa_unicast_routing_action_write()
708 OfDpaFlow *flow) in of_dpa_multicast_routing_action_write() argument
710 if (flow->action.write.group_id != ROCKER_GROUP_NONE) { in of_dpa_multicast_routing_action_write()
711 fc->action_set.write.group_id = flow->action.write.group_id; in of_dpa_multicast_routing_action_write()
713 fc->action_set.write.vlan_id = flow->action.write.vlan_id; in of_dpa_multicast_routing_action_write()
748 OfDpaFlow *flow) in of_dpa_acl_action_write() argument
750 if (flow->action.write.group_id != ROCKER_GROUP_NONE) { in of_dpa_acl_action_write()
751 fc->action_set.write.group_id = flow->action.write.group_id; in of_dpa_acl_action_write()
947 void (*hit)(OfDpaFlowContext *fc, OfDpaFlow *flow);
950 void (*action_apply)(OfDpaFlowContext *fc, OfDpaFlow *flow);
951 void (*action_write)(OfDpaFlowContext *fc, OfDpaFlow *flow);
1004 OfDpaFlow *flow; in of_dpa_flow_ig_tbl() local
1012 flow = of_dpa_flow_match(fc->of_dpa, &match); in of_dpa_flow_ig_tbl()
1013 if (!flow) { in of_dpa_flow_ig_tbl()
1020 flow->stats.hits++; in of_dpa_flow_ig_tbl()
1023 ops->action_apply(fc, flow); in of_dpa_flow_ig_tbl()
1027 ops->action_write(fc, flow); in of_dpa_flow_ig_tbl()
1031 ops->hit(fc, flow); in of_dpa_flow_ig_tbl()
1034 if (flow->action.goto_tbl) { in of_dpa_flow_ig_tbl()
1035 of_dpa_flow_ig_tbl(fc, flow->action.goto_tbl); in of_dpa_flow_ig_tbl()
1062 static int of_dpa_cmd_add_ig_port(OfDpaFlow *flow, RockerTlv **flow_tlvs) in of_dpa_cmd_add_ig_port() argument
1064 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_ig_port()
1065 OfDpaFlowKey *mask = &flow->mask; in of_dpa_cmd_add_ig_port()
1066 OfDpaFlowAction *action = &flow->action; in of_dpa_cmd_add_ig_port()
1099 static int of_dpa_cmd_add_vlan(OfDpaFlow *flow, RockerTlv **flow_tlvs) in of_dpa_cmd_add_vlan() argument
1101 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_vlan()
1102 OfDpaFlowKey *mask = &flow->mask; in of_dpa_cmd_add_vlan()
1103 OfDpaFlowAction *action = &flow->action; in of_dpa_cmd_add_vlan()
1163 static int of_dpa_cmd_add_term_mac(OfDpaFlow *flow, RockerTlv **flow_tlvs) in of_dpa_cmd_add_term_mac() argument
1165 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_term_mac()
1166 OfDpaFlowKey *mask = &flow->mask; in of_dpa_cmd_add_term_mac()
1167 OfDpaFlowAction *action = &flow->action; in of_dpa_cmd_add_term_mac()
1259 static int of_dpa_cmd_add_bridging(OfDpaFlow *flow, RockerTlv **flow_tlvs) in of_dpa_cmd_add_bridging() argument
1261 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_bridging()
1262 OfDpaFlowKey *mask = &flow->mask; in of_dpa_cmd_add_bridging()
1263 OfDpaFlowAction *action = &flow->action; in of_dpa_cmd_add_bridging()
1420 static int of_dpa_cmd_add_unicast_routing(OfDpaFlow *flow, in of_dpa_cmd_add_unicast_routing() argument
1423 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_unicast_routing()
1424 OfDpaFlowKey *mask = &flow->mask; in of_dpa_cmd_add_unicast_routing()
1425 OfDpaFlowAction *action = &flow->action; in of_dpa_cmd_add_unicast_routing()
1463 flow->lpm = of_dpa_mask2prefix(htonl(0xffffffff)); in of_dpa_cmd_add_unicast_routing()
1467 flow->lpm = of_dpa_mask2prefix(mask->ipv4.addr.dst); in of_dpa_cmd_add_unicast_routing()
1512 static int of_dpa_cmd_add_multicast_routing(OfDpaFlow *flow, in of_dpa_cmd_add_multicast_routing() argument
1515 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_multicast_routing()
1516 OfDpaFlowKey *mask = &flow->mask; in of_dpa_cmd_add_multicast_routing()
1517 OfDpaFlowAction *action = &flow->action; in of_dpa_cmd_add_multicast_routing()
1674 static int of_dpa_cmd_add_acl(OfDpaFlow *flow, RockerTlv **flow_tlvs) in of_dpa_cmd_add_acl() argument
1676 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_acl()
1677 OfDpaFlowKey *mask = &flow->mask; in of_dpa_cmd_add_acl()
1678 OfDpaFlowAction *action = &flow->action; in of_dpa_cmd_add_acl()
1793 static int of_dpa_cmd_flow_add_mod(OfDpa *of_dpa, OfDpaFlow *flow, in of_dpa_cmd_flow_add_mod() argument
1806 flow->priority = rocker_tlv_get_le32(flow_tlvs[ROCKER_TLV_OF_DPA_PRIORITY]); in of_dpa_cmd_flow_add_mod()
1807 flow->hardtime = rocker_tlv_get_le32(flow_tlvs[ROCKER_TLV_OF_DPA_HARDTIME]); in of_dpa_cmd_flow_add_mod()
1815 flow->idletime = in of_dpa_cmd_flow_add_mod()
1821 err = of_dpa_cmd_add_ig_port(flow, flow_tlvs); in of_dpa_cmd_flow_add_mod()
1824 err = of_dpa_cmd_add_vlan(flow, flow_tlvs); in of_dpa_cmd_flow_add_mod()
1827 err = of_dpa_cmd_add_term_mac(flow, flow_tlvs); in of_dpa_cmd_flow_add_mod()
1830 err = of_dpa_cmd_add_bridging(flow, flow_tlvs); in of_dpa_cmd_flow_add_mod()
1833 err = of_dpa_cmd_add_unicast_routing(flow, flow_tlvs); in of_dpa_cmd_flow_add_mod()
1836 err = of_dpa_cmd_add_multicast_routing(flow, flow_tlvs); in of_dpa_cmd_flow_add_mod()
1839 err = of_dpa_cmd_add_acl(flow, flow_tlvs); in of_dpa_cmd_flow_add_mod()
1849 OfDpaFlow *flow = of_dpa_flow_find(of_dpa, cookie); in of_dpa_cmd_flow_add() local
1852 if (flow) { in of_dpa_cmd_flow_add()
1856 flow = of_dpa_flow_alloc(cookie); in of_dpa_cmd_flow_add()
1858 err = of_dpa_cmd_flow_add_mod(of_dpa, flow, flow_tlvs); in of_dpa_cmd_flow_add()
1860 g_free(flow); in of_dpa_cmd_flow_add()
1864 return of_dpa_flow_add(of_dpa, flow); in of_dpa_cmd_flow_add()
1870 OfDpaFlow *flow = of_dpa_flow_find(of_dpa, cookie); in of_dpa_cmd_flow_mod() local
1872 if (!flow) { in of_dpa_cmd_flow_mod()
1876 return of_dpa_cmd_flow_add_mod(of_dpa, flow, flow_tlvs); in of_dpa_cmd_flow_mod()
1881 OfDpaFlow *flow = of_dpa_flow_find(of_dpa, cookie); in of_dpa_cmd_flow_del() local
1883 if (!flow) { in of_dpa_cmd_flow_del()
1887 of_dpa_flow_del(of_dpa, flow); in of_dpa_cmd_flow_del()
1895 OfDpaFlow *flow = of_dpa_flow_find(of_dpa, cookie); in of_dpa_cmd_flow_get_stats() local
1900 if (!flow) { in of_dpa_cmd_flow_get_stats()
1914 (int32_t)(now - flow->stats.install_time)); in of_dpa_cmd_flow_get_stats()
1916 flow->stats.rx_pkts); in of_dpa_cmd_flow_get_stats()
1918 flow->stats.tx_pkts); in of_dpa_cmd_flow_get_stats()
2288 struct of_dpa_flow *flow = value; in of_dpa_flow_fill() local
2289 struct of_dpa_flow_key *key = &flow->key; in of_dpa_flow_fill()
2290 struct of_dpa_flow_key *mask = &flow->mask; in of_dpa_flow_fill()
2307 nflow->cookie = flow->cookie; in of_dpa_flow_fill()
2308 nflow->hits = flow->stats.hits; in of_dpa_flow_fill()
2309 nkey->priority = flow->priority; in of_dpa_flow_fill()
2398 if (flow->action.goto_tbl) { in of_dpa_flow_fill()
2400 naction->goto_tbl = flow->action.goto_tbl; in of_dpa_flow_fill()
2403 if (flow->action.write.group_id) { in of_dpa_flow_fill()
2405 naction->group_id = flow->action.write.group_id; in of_dpa_flow_fill()
2408 if (flow->action.apply.new_vlan_id) { in of_dpa_flow_fill()
2410 naction->new_vlan_id = flow->action.apply.new_vlan_id; in of_dpa_flow_fill()