Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F29F2C43441 for ; Wed, 28 Nov 2018 14:21:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B4F5B20832 for ; Wed, 28 Nov 2018 14:21:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=toke.dk header.i=@toke.dk header.b="rk0zpBIA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B4F5B20832 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=toke.dk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728550AbeK2BX3 (ORCPT ); Wed, 28 Nov 2018 20:23:29 -0500 Received: from mail.toke.dk ([52.28.52.200]:60441 "EHLO mail.toke.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727726AbeK2BX3 (ORCPT ); Wed, 28 Nov 2018 20:23:29 -0500 From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=20161023; t=1543414898; bh=q7L4F0hJW7tPfDzy+MIMW+YmfVbt5jlL2zpWAOhXc6M=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=rk0zpBIAGUEksKi7dyJnWnZyvyAU+n8Eed8abz0ZylMSeZNoaatqTKXBEXlCEBl4w Eq3LoDBRKJn3AmFIDhFYkXs3mdn3sBTz/jcTEPNzmh2MMZEAX7HZiKgWwLjC2aXIQo 5SLC1d1TKe9d5LuCIyiysraqK7xb48KdOqhqP50g3uo9lbq2Y4y3xvVb+u70ThLWpH zCBjwGFe8E+ltscdDHBryZ32tA9Q+mgZ+H796gdMPvem5ad0fhwo0G6elnIlOxlcUq Cnsait87xvTWIHs2Q5Y+BXRk8SfcAmcqEo9IrpFKxEJOWIjHNA1nnGUW9gXXODFf5M Wd+s045QtkRxg== To: Lorenzo Bianconi Cc: Kalle Valo , linux-wireless@vger.kernel.org, nbd@nbd.name, brouer@redhat.com Subject: Re: [RFC 0/5] add XDP support to mt76x2e/mt76x0e drivers In-Reply-To: <20181128131141.GD2298@localhost.localdomain> References: <8736rla4ow.fsf@purkki.adurom.net> <20181128104436.GA2298@localhost.localdomain> <87bm69v0ol.fsf@toke.dk> <20181128131141.GD2298@localhost.localdomain> Date: Wed, 28 Nov 2018 15:21:37 +0100 X-Clacks-Overhead: GNU Terry Pratchett Message-ID: <875zwhuvta.fsf@toke.dk> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Lorenzo Bianconi writes: >> >> > This series is intended as a playground to start experimenting/developing >> >> > with XDP/eBPF over WiFi and collect ideas/concerns about it. >> >> > Introduce XDP support to mt76x2e/mt76x0e drivers. Currently supported >> >> > actions are: >> >> > - XDP_PASS >> >> > - XDP_ABORTED >> >> > - XDP_DROP >> >> > Introduce ndo_bpf mac80211 callback in order to to load a bpf >> >> > program into low level driver XDP rx hook. >> >> > This series has been tested through a simple bpf program (available here: >> >> > https://github.com/LorenzoBianconi/bpf-workspace/tree/master/mt76_xdp_stats) >> >> > used to count frame types received by the device. >> >> > Possible eBPF use cases could be: >> >> > - implement new statistics through bpf maps >> >> > - implement fast packet filtering (e.g in monitor mode) >> >> > - ... >> > >> > Hi Kalle, >> > >> >> >> >> This is most likely a stupid question, but why do this in the driver and >> >> not in mac80211 so that all drivers could benefit from it? I guess there >> >> are reasons for that, I just can't figure that out. >> >> XDP achieves its speedup by running the eBPF program inside the driver >> NAPI loop, before the kernel even touches the data in any other capacity >> (and in particular, before it allocates an SKB). Which kinda means the >> hook needs to be in the driver... Could be a fallback in mac80211, >> though; although we'd have to figure out how that interacts with Generic >> XDP. >> >> > This is an early stage implementation, at this point I would collect >> > other people opinions/concerns about using bpf/xdp directly on 802.11 >> > frames. >> >> Thanks for looking into this! > > Hi Toke, > >> >> I have two concerns with running XDP on 802.11 frames: >> >> 1. It makes it more difficult to add other XDP actions (such as >> REDIRECT), as the XDP program would then have to make sure that the >> outer packet headers are removed before, say, redirecting the packet >> out of an ethernet interface. Also, if we do add redirect, we would >> be bypassing mac80211 entirely; to what extent would that mess up >> internal state? >> > > You are right, my assumption here is the logic/complexity is moved to > the bpf program that needs to take care of all possible issues that > can be introduced. More or less it is the same if a bpf program mess > up with TCP segments on a wired connection, isn't it? No, I guess not; except here it potentially applies to all packets (things like BAW tracking), and it is *in addition* to TCP. >> 2. UI consistency; suddenly, the user needs to know which kind of >> frames to expect, and XDP program reuse becomes more difficult. This >> may be unavoidable given the nature of XDP, but some thought needs to >> go into this. Especially since we wouldn't necessarily be consistent >> between WiFi drivers (there are fullmac devices that remove 802.11 >> headers before sending up the frame, right?). >> > > Right, maybe can we have some kind of 'wifi' bpf helpers? Yeah, I guess we would at least need helpers to update any internal state in mac80211 (such as BAW), or BPF programs wouldn't even be able to drop packets without messing things up... -Toke