Thread (17 messages) flat view 17 messages, 2 authors, 2021-08-19

RE: [RFC v2 net-next 4/8] net: mscc: ocelot: add gate and police action offload to PSFP

From: Xiaoliang Yang <hidden>
Date: 2021-08-19 10:00:49
Also in: lkml

Hi Vladimir,

On Wed, Aug 18, 2021 at 23:01:23PM +0800, Vladimir Oltean wrote:
quoted
@@ -718,6 +734,15 @@ int ocelot_cls_flower_replace(struct ocelot *ocelot,
int port,
quoted
 	if (filter->type == OCELOT_VCAP_FILTER_DUMMY)
 		return ocelot_vcap_dummy_filter_add(ocelot, filter);

+	if (filter->type == OCELOT_PSFP_FILTER_OFFLOAD) {
+		kfree(filter);
+		if (ocelot->ops->psfp_filter_add)
+			return ocelot->ops->psfp_filter_add(ocelot, f);
+
+		NL_SET_ERR_MSG_MOD(extack, "PSFP chain is not supported in
HW");
quoted
+		return -EOPNOTSUPP;
+	}
+
 	return ocelot_vcap_filter_add(ocelot, filter, f->common.extack);  }
Hmm, I don't really like the idea of allocating an ocelot_vcap_filter which we
don't need for PSFP filters, just to kfree it later.

Is it that much more complicated to not allocate it at all in the first place, add
a bunch of "if" conditions that allocate a VCAP filter only if we are offloading a
VCAP chain?

And that means, don't create ocelot_vcap_filter::type ==
OCELOT_PSFP_FILTER_OFFLOAD, because PSFP filters are not VCAP filters.
The "vcap filter" variable need to be created and use ocelot_flower_parse() to get the type. If the rule is checked as a OCELOT_VCAP_FILTER_DUMMY, the chain 30000 dummy rule will be added in vcap_dummy_filter. And not offload to PSFP filter function. So I created the "vcap filter" and free it before offload to PSFP filter function.

Thanks,
xiaoliang
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help