Lines Matching refs:eth
17 struct ethhdr eth; member
57 mtk_flow_set_ipv4_addr(struct mtk_eth *eth, struct mtk_foe_entry *foe, in mtk_flow_set_ipv4_addr() argument
60 return mtk_foe_entry_set_ipv4_tuple(eth, foe, egress, in mtk_flow_set_ipv4_addr()
66 mtk_flow_set_ipv6_addr(struct mtk_eth *eth, struct mtk_foe_entry *foe, in mtk_flow_set_ipv6_addr() argument
69 return mtk_foe_entry_set_ipv6_tuple(eth, foe, in mtk_flow_set_ipv6_addr()
75 mtk_flow_offload_mangle_eth(const struct flow_action_entry *act, void *eth) in mtk_flow_offload_mangle_eth() argument
77 void *dest = eth + act->mangle.offset; in mtk_flow_offload_mangle_eth()
188 mtk_flow_set_output_device(struct mtk_eth *eth, struct mtk_foe_entry *foe, in mtk_flow_set_output_device() argument
196 mtk_foe_entry_set_wdma(eth, foe, info.wdma_idx, info.queue, in mtk_flow_set_output_device()
198 if (mtk_is_netsys_v2_or_greater(eth)) { in mtk_flow_set_output_device()
218 if (dev == eth->netdev[0]) in mtk_flow_set_output_device()
220 else if (dev == eth->netdev[1]) in mtk_flow_set_output_device()
222 else if (dev == eth->netdev[2]) in mtk_flow_set_output_device()
228 mtk_foe_entry_set_dsa(eth, foe, dsa_port); in mtk_flow_set_output_device()
233 mtk_foe_entry_set_queue(eth, foe, queue); in mtk_flow_set_output_device()
236 mtk_foe_entry_set_pse_port(eth, foe, pse_port); in mtk_flow_set_output_device()
242 mtk_flow_offload_replace(struct mtk_eth *eth, struct flow_cls_offload *f, in mtk_flow_offload_replace() argument
258 if (rhashtable_lookup(ð->flow_table, &f->cookie, mtk_flow_ht_params)) in mtk_flow_offload_replace()
294 memcpy(data.eth.h_dest, match.key->dst, ETH_ALEN); in mtk_flow_offload_replace()
295 memcpy(data.eth.h_source, match.key->src, ETH_ALEN); in mtk_flow_offload_replace()
327 mtk_flow_offload_mangle_eth(act, &data.eth); in mtk_flow_offload_replace()
358 if (!is_valid_ether_addr(data.eth.h_source) || in mtk_flow_offload_replace()
359 !is_valid_ether_addr(data.eth.h_dest)) in mtk_flow_offload_replace()
362 err = mtk_foe_entry_prepare(eth, &foe, offload_type, l4proto, 0, in mtk_flow_offload_replace()
363 data.eth.h_source, data.eth.h_dest); in mtk_flow_offload_replace()
388 mtk_flow_set_ipv4_addr(eth, &foe, &data, false); in mtk_flow_offload_replace()
399 mtk_flow_set_ipv6_addr(eth, &foe, &data); in mtk_flow_offload_replace()
429 err = mtk_flow_set_ipv4_addr(eth, &foe, &data, true); in mtk_flow_offload_replace()
438 mtk_foe_entry_set_vlan(eth, &foe, data.vlan.vlans[i].id); in mtk_flow_offload_replace()
441 mtk_foe_entry_set_pppoe(eth, &foe, data.pppoe.sid); in mtk_flow_offload_replace()
443 err = mtk_flow_set_output_device(eth, &foe, odev, data.eth.h_dest, in mtk_flow_offload_replace()
460 err = mtk_foe_entry_commit(eth->ppe[entry->ppe_index], entry); in mtk_flow_offload_replace()
464 err = rhashtable_insert_fast(ð->flow_table, &entry->node, in mtk_flow_offload_replace()
472 mtk_foe_entry_clear(eth->ppe[entry->ppe_index], entry); in mtk_flow_offload_replace()
481 mtk_flow_offload_destroy(struct mtk_eth *eth, struct flow_cls_offload *f) in mtk_flow_offload_destroy() argument
485 entry = rhashtable_lookup(ð->flow_table, &f->cookie, in mtk_flow_offload_destroy()
490 mtk_foe_entry_clear(eth->ppe[entry->ppe_index], entry); in mtk_flow_offload_destroy()
491 rhashtable_remove_fast(ð->flow_table, &entry->node, in mtk_flow_offload_destroy()
501 mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f) in mtk_flow_offload_stats() argument
507 entry = rhashtable_lookup(ð->flow_table, &f->cookie, in mtk_flow_offload_stats()
512 idle = mtk_foe_entry_idle_time(eth->ppe[entry->ppe_index], entry); in mtk_flow_offload_stats()
516 mtk_foe_entry_get_mib(eth->ppe[entry->ppe_index], entry->hash, in mtk_flow_offload_stats()
527 int mtk_flow_offload_cmd(struct mtk_eth *eth, struct flow_cls_offload *cls, in mtk_flow_offload_cmd() argument
535 err = mtk_flow_offload_replace(eth, cls, ppe_index); in mtk_flow_offload_cmd()
538 err = mtk_flow_offload_destroy(eth, cls); in mtk_flow_offload_cmd()
541 err = mtk_flow_offload_stats(eth, cls); in mtk_flow_offload_cmd()
558 struct mtk_eth *eth; in mtk_eth_setup_tc_block_cb() local
561 eth = mac->hw; in mtk_eth_setup_tc_block_cb()
569 return mtk_flow_offload_cmd(eth, cls, 0); in mtk_eth_setup_tc_block_cb()
576 struct mtk_eth *eth = mac->hw; in mtk_eth_setup_tc_block() local
581 if (!eth->soc->offload_version) in mtk_eth_setup_tc_block()
632 int mtk_eth_offload_init(struct mtk_eth *eth) in mtk_eth_offload_init() argument
634 return rhashtable_init(ð->flow_table, &mtk_flow_ht_params); in mtk_eth_offload_init()