Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d47a0f38 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by David S. Miller
Browse files

net: cls_u32: be more strict about skip-sw flag



Return an error if user requested skip-sw and the underlaying
hardware cannot handle tc offloads (or offloads are disabled).

Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1a0f7d29
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -457,10 +457,12 @@ static int u32_replace_hw_hnode(struct tcf_proto *tp,
	struct tc_to_netdev offload;
	int err;

	if (!tc_should_offload(dev, flags))
		return tc_skip_sw(flags) ? -EINVAL : 0;

	offload.type = TC_SETUP_CLSU32;
	offload.cls_u32 = &u32_offload;

	if (tc_should_offload(dev, flags)) {
	offload.cls_u32->command = TC_CLSU32_NEW_HNODE;
	offload.cls_u32->hnode.divisor = h->divisor;
	offload.cls_u32->hnode.handle = h->handle;
@@ -470,7 +472,6 @@ static int u32_replace_hw_hnode(struct tcf_proto *tp,
					    tp->protocol, &offload);
	if (tc_skip_sw(flags))
		return err;
	}

	return 0;
}