Lines Matching full:ocelot

2 /* Microsemi Ocelot Switch driver
35 * offload support in Ocelot in ocelot_chain_to_block()
119 ocelot_find_vcap_filter_that_points_at(struct ocelot *ocelot, int chain) in ocelot_find_vcap_filter_that_points_at() argument
130 block = &ocelot->block[VCAP_IS1]; in ocelot_find_vcap_filter_that_points_at()
138 list_for_each_entry(filter, &ocelot->dummy_rules, list) in ocelot_find_vcap_filter_that_points_at()
145 static int ocelot_flower_parse_action(struct ocelot *ocelot, int port, in ocelot_flower_parse_action() argument
149 struct ocelot_port *ocelot_port = ocelot->ports[port]; in ocelot_flower_parse_action()
240 egress_port = ocelot->ops->netdev_to_port(a->dev); in ocelot_flower_parse_action()
243 "Destination not an ocelot port"); in ocelot_flower_parse_action()
368 static int ocelot_flower_parse_indev(struct ocelot *ocelot, int port, in ocelot_flower_parse_indev() argument
373 const struct vcap_props *vcap = &ocelot->vcap[VCAP_ES0]; in ocelot_flower_parse_indev()
390 dev = ocelot->ops->port_to_netdev(ocelot, port); in ocelot_flower_parse_indev()
401 ingress_port = ocelot->ops->netdev_to_port(indev); in ocelot_flower_parse_indev()
404 "Can only offload an ocelot ingress port"); in ocelot_flower_parse_indev()
420 ocelot_flower_parse_key(struct ocelot *ocelot, int port, bool ingress, in ocelot_flower_parse_key() argument
445 ret = ocelot_flower_parse_indev(ocelot, port, f, filter); in ocelot_flower_parse_key()
618 static int ocelot_flower_parse(struct ocelot *ocelot, int port, bool ingress, in ocelot_flower_parse() argument
627 ret = ocelot_flower_parse_action(ocelot, port, ingress, f, filter); in ocelot_flower_parse()
631 return ocelot_flower_parse_key(ocelot, port, ingress, f, filter); in ocelot_flower_parse()
635 *ocelot_vcap_filter_create(struct ocelot *ocelot, int port, bool ingress, in ocelot_vcap_filter_create() argument
647 const struct vcap_props *vcap = &ocelot->vcap[VCAP_ES0]; in ocelot_vcap_filter_create()
657 static int ocelot_vcap_dummy_filter_add(struct ocelot *ocelot, in ocelot_vcap_dummy_filter_add() argument
660 list_add(&filter->list, &ocelot->dummy_rules); in ocelot_vcap_dummy_filter_add()
665 static int ocelot_vcap_dummy_filter_del(struct ocelot *ocelot, in ocelot_vcap_dummy_filter_del() argument
674 int ocelot_cls_flower_replace(struct ocelot *ocelot, int port, in ocelot_cls_flower_replace() argument
682 if (chain && !ocelot_find_vcap_filter_that_points_at(ocelot, chain)) { in ocelot_cls_flower_replace()
687 filter = ocelot_vcap_filter_create(ocelot, port, ingress, f); in ocelot_cls_flower_replace()
691 ret = ocelot_flower_parse(ocelot, port, ingress, f, filter); in ocelot_cls_flower_replace()
701 return ocelot_vcap_dummy_filter_add(ocelot, filter); in ocelot_cls_flower_replace()
703 return ocelot_vcap_filter_add(ocelot, filter, f->common.extack); in ocelot_cls_flower_replace()
707 int ocelot_cls_flower_destroy(struct ocelot *ocelot, int port, in ocelot_cls_flower_destroy() argument
718 block = &ocelot->block[block_id]; in ocelot_cls_flower_destroy()
725 return ocelot_vcap_dummy_filter_del(ocelot, filter); in ocelot_cls_flower_destroy()
727 return ocelot_vcap_filter_del(ocelot, filter); in ocelot_cls_flower_destroy()
731 int ocelot_cls_flower_stats(struct ocelot *ocelot, int port, in ocelot_cls_flower_stats() argument
742 block = &ocelot->block[block_id]; in ocelot_cls_flower_stats()
748 ret = ocelot_vcap_filter_stats_update(ocelot, filter); in ocelot_cls_flower_stats()