Revert "net: sched: cls: Fix offloading when ingress dev is vxlan"

This reverts commit d96a43c664.

This potentially breaks things, so reverting as per
request by Jakub Kicinski.

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2018-06-06 13:55:47 -04:00
parent 5040cc990c
commit 9a99dc1c41

View File

@ -807,6 +807,10 @@ static int tcf_block_cb_call(struct tcf_block *block, enum tc_setup_type type,
int ok_count = 0; int ok_count = 0;
int err; int err;
/* Make sure all netdevs sharing this block are offload-capable. */
if (block->nooffloaddevcnt && err_stop)
return -EOPNOTSUPP;
list_for_each_entry(block_cb, &block->cb_list, list) { list_for_each_entry(block_cb, &block->cb_list, list) {
err = block_cb->cb(type, type_data, block_cb->cb_priv); err = block_cb->cb(type, type_data, block_cb->cb_priv);
if (err) { if (err) {
@ -1725,31 +1729,21 @@ static int tc_exts_setup_cb_egdev_call(struct tcf_exts *exts,
int tc_setup_cb_call(struct tcf_block *block, struct tcf_exts *exts, int tc_setup_cb_call(struct tcf_block *block, struct tcf_exts *exts,
enum tc_setup_type type, void *type_data, bool err_stop) enum tc_setup_type type, void *type_data, bool err_stop)
{ {
int ok_count = 0; int ok_count;
int ret; int ret;
if (!block->nooffloaddevcnt) {
ret = tcf_block_cb_call(block, type, type_data, err_stop); ret = tcf_block_cb_call(block, type, type_data, err_stop);
if (ret < 0) if (ret < 0)
return ret; return ret;
ok_count = ret; ok_count = ret;
}
if (!exts || ok_count) if (!exts || ok_count)
goto skip_egress; return ok_count;
ret = tc_exts_setup_cb_egdev_call(exts, type, type_data, err_stop); ret = tc_exts_setup_cb_egdev_call(exts, type, type_data, err_stop);
if (ret < 0) if (ret < 0)
return ret; return ret;
ok_count += ret; ok_count += ret;
skip_egress:
/* if one of the netdevs sharing this block are not offload-capable
* make sure we succeeded in egress instead.
*/
if (block->nooffloaddevcnt && !ok_count && err_stop)
return -EOPNOTSUPP;
return ok_count; return ok_count;
} }
EXPORT_SYMBOL(tc_setup_cb_call); EXPORT_SYMBOL(tc_setup_cb_call);