[ovs-dev] [PATCH] netdev-tc-offloads: Fix probe tc block support
John Hurley
john.hurley at netronome.com
Mon Apr 8 13:02:53 UTC 2019
On Mon, Apr 8, 2019 at 1:43 PM Roi Dayan <roid at mellanox.com> wrote:
>
> From: Raed Salem <raeds at mellanox.com>
>
> Current implementation will try to create an qdisk of type ingress with
> block id 1 to check for kernel ingress block support, this check is
> insufficient as old kernels without ingress block support will
> successfully create an ingress qdisc, ignoring the ingress block.
>
> Fix by trying to add a test rule on the ingress block.
>
Good catch.
Thanks for this.
Acked-by: John Hurley <john.hurley at netronome.com>
> Fixes 093c9458fb02 ("tc: allow offloading of block ids")
> Signed-off-by: Raed Salem <raeds at mellanox.com>
> Reviewed-by: Roi Dayan <roid at mellanox.com>
> ---
> lib/netdev-tc-offloads.c | 16 ++++++++++++++--
> 1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/lib/netdev-tc-offloads.c b/lib/netdev-tc-offloads.c
> index f5555e418e0d..e57de3b47f3d 100644
> --- a/lib/netdev-tc-offloads.c
> +++ b/lib/netdev-tc-offloads.c
> @@ -1497,6 +1497,7 @@ out:
> static void
> probe_tc_block_support(int ifindex)
> {
> + struct tc_flower flower;
> uint32_t block_id = 1;
> int error;
>
> @@ -1505,10 +1506,21 @@ probe_tc_block_support(int ifindex)
> return;
> }
>
> + memset(&flower, 0, sizeof flower);
> +
> + flower.key.eth_type = htons(ETH_P_IP);
> + flower.mask.eth_type = OVS_BE16_MAX;
> + memset(&flower.key.dst_mac, 0x11, sizeof flower.key.dst_mac);
> + memset(&flower.mask.dst_mac, 0xff, sizeof flower.mask.dst_mac);
> +
> + error = tc_replace_flower(ifindex, 1, 1, &flower, block_id);
> +
> tc_add_del_ingress_qdisc(ifindex, false, block_id);
>
> - block_support = true;
> - VLOG_INFO("probe tc: block offload is supported.");
> + if (!error) {
> + block_support = true;
> + VLOG_INFO("probe tc: block offload is supported.");
> + }
> }
>
> int
> --
> 2.7.5
>
More information about the dev
mailing list