From patchwork Fri Dec 15 18:23:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Eckelmann X-Patchwork-Id: 849345 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=openmesh-com.20150623.gappssmtp.com header.i=@openmesh-com.20150623.gappssmtp.com header.b="QgNjjasr"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yyzMS6cqGz9sBW for ; Sat, 16 Dec 2017 05:23:32 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755861AbdLOSX3 (ORCPT ); Fri, 15 Dec 2017 13:23:29 -0500 Received: from mail-wr0-f174.google.com ([209.85.128.174]:39838 "EHLO mail-wr0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755534AbdLOSX1 (ORCPT ); Fri, 15 Dec 2017 13:23:27 -0500 Received: by mail-wr0-f174.google.com with SMTP id a41so8775829wra.6 for ; Fri, 15 Dec 2017 10:23:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openmesh-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=guM593nifOy/6jDrqPShS5d04QEAL+qlFLGSseHKzIY=; b=QgNjjasrM4W+Ryl7wFxx+GGtWR5G7jWvyNPvvvp6sAaIvmXsIL63uwmvfLP+AKGVb7 SQsSjuJu8sA7IH5VKUSoBgkBi0G9vHhXE6KtX8uafElNyPa0Fvt2saUQjuUGJ0Qzbg3R NKazr4aeZSCK8BgMR6rod+jRSmpP55fyfiIbAfKWt/ktgpM0cqCHE8dBt++nPSrLNR82 3K81D4RYnd+lIIdNOWPASFCAz3LzZRnJYKPhkDu4343ZZcKQiN/9bciCSmgHC9nUkufy sAEt3kautqXgkOKv5zbRmiAFGrXVrOAj0rhfywp1c0/q09HGqHLH/NtEgQlYNj4Q9NfO htlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=guM593nifOy/6jDrqPShS5d04QEAL+qlFLGSseHKzIY=; b=X3nCFGJ66+VI6rNydqepXMygfbNDvfgNZ8nDhBme8pQA1z9W9BSDO/wtnpzRyNeZpr lEAq6vbcQLWsNYGdLgFKQb1CyqmmytFPH7r2bp0CM9MMaQ0DIb2goYxVAmzgBuXLREEh o3b12JSBJE6C6aPQVATFyORaU25DWE1vd0SyPcYlLFoLlZFHPaSoW0182C7qo/m1XW4E QXLzlKHbp6ULG8nCeUesTRrzqRxp+b+OmUQ/BcVu6OlxJVQbKjck2FqCu+rfKu/hr2m5 uIsEzXjToRJbql1o4gVEWQmo3YMi2W74Y6gSeQLmAUEBAhDkuRUqtj1KSa5CD5pCHZ5k I//A== X-Gm-Message-State: AKGB3mJikbSaCiAyfTH+ll5UwfUF4WmoiMBUxZ6TyC54c+ePIHCXZ+0y kZgd4ZWRTQqOU5FTPgLIV0tahSAf X-Google-Smtp-Source: ACJfBouhE4dRKiz/UBwX91HQYUV4mojQ7T8f9Tdq63j4oWMqI7bAagnMuGgHy4EnwClGWpd2wZ06UA== X-Received: by 10.223.128.195 with SMTP id 61mr10325228wrl.122.1513362205523; Fri, 15 Dec 2017 10:23:25 -0800 (PST) Received: from sven-desktop.home.narfation.org (p200300C593C571F90000000000004065.dip0.t-ipconnect.de. [2003:c5:93c5:71f9::4065]) by smtp.gmail.com with ESMTPSA id k30sm7871200wrf.63.2017.12.15.10.23.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 15 Dec 2017 10:23:24 -0800 (PST) From: Sven Eckelmann To: netdev@vger.kernel.org Cc: b.a.t.m.a.n@lists.open-mesh.org, Eric Dumazet , linux-kernel@vger.kernel.org, Jiri Pirko , "David S . Miller" , Willem de Bruijn , Tom Herbert , Sven Eckelmann Subject: [RFC v3 0/4] flow_dissector: Provide basic batman-adv unicast handling Date: Fri, 15 Dec 2017 19:23:09 +0100 Message-Id: <20171215182313.15767-1-sven.eckelmann@openmesh.com> X-Mailer: git-send-email 2.11.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Hi, we are currently starting to use batman-adv as mesh protocol on multicore embedded devices. These usually don't have a lot of CPU power per core but are reasonable fast when using multiple cores. It was noticed that sending was working very well but receiving was basically only using on CPU core per neighbor. The reason for that is format of the (normal) incoming packet: +--------------------+ | ip(v6)hdr | +--------------------+ | inner ethhdr | +--------------------+ | batadv unicast hdr | +--------------------+ | outer ethhdr | +--------------------+ The flow dissector will therefore stop after parsing the outer ethernet header and will not parse the actual ipv(4|6)/... header of the packet. Our assumption was now that it would help us to add minimal support to the flow dissector to jump over the batman-adv unicast and inner ethernet header (like in gre ETH_P_TEB). The patch was implemented in a slightly hacky way [1] and the results looked quite promising. I didn't get any feedback how the files should actually be named and I am not really happy with the current names - so please feel free to propose better names. The discussion of the RFC v2 can be found in the related patches of https://patchwork.ozlabs.org/cover/844783/ Changes in v3: ============== * removed change of uapi/linux/batman_adv.h to uapi/linux/batadv_genl.h - requested by Willem de Bruijn * removed naming fixes for enums/defines in uapi/linux/batadv_genl.h - requested by Willem de Bruijn * renamed uapi/linux/batadv.h to uapi/linux/batadv_packet.h * moved batadv dissector functionality in own function - requested by Tom Herbert * added support for flags FLOW_DISSECTOR_F_STOP_AT_ENCAP and FLOW_DIS_ENCAPSULATION - requested by Willem de Bruijn Changes in v2: ============== * removed the batman-adv unicast packet header definition from flow_dissector.c * moved the batman-adv packet.h/uapi headers around to provide the correct definitions to flow_dissector.c Kind regards, Sven [1] https://patchwork.open-mesh.org/patch/17162/ Sven Eckelmann (4): batman-adv: Let packet.h include its headers directly batman-adv: Remove usage of BIT(x) in packet.h batman-adv: Convert packet.h to uapi header flow_dissector: Parse batman-adv unicast headers MAINTAINERS | 1 + .../packet.h => include/uapi/linux/batadv_packet.h | 31 ++++++------ net/batman-adv/bat_iv_ogm.c | 2 +- net/batman-adv/bat_v.c | 2 +- net/batman-adv/bat_v_elp.c | 2 +- net/batman-adv/bat_v_ogm.c | 2 +- net/batman-adv/bridge_loop_avoidance.c | 2 +- net/batman-adv/distributed-arp-table.h | 2 +- net/batman-adv/fragmentation.c | 2 +- net/batman-adv/gateway_client.c | 2 +- net/batman-adv/gateway_common.c | 2 +- net/batman-adv/hard-interface.c | 2 +- net/batman-adv/icmp_socket.c | 2 +- net/batman-adv/main.c | 2 +- net/batman-adv/main.h | 4 +- net/batman-adv/multicast.c | 2 +- net/batman-adv/netlink.c | 2 +- net/batman-adv/network-coding.c | 2 +- net/batman-adv/routing.c | 2 +- net/batman-adv/send.h | 3 +- net/batman-adv/soft-interface.c | 2 +- net/batman-adv/sysfs.c | 2 +- net/batman-adv/tp_meter.c | 2 +- net/batman-adv/translation-table.c | 2 +- net/batman-adv/tvlv.c | 2 +- net/batman-adv/types.h | 3 +- net/core/flow_dissector.c | 57 ++++++++++++++++++++++ 27 files changed, 98 insertions(+), 43 deletions(-) rename net/batman-adv/packet.h => include/uapi/linux/batadv_packet.h (96%)