From patchwork Thu Jan 18 03:13:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 862731 X-Patchwork-Delegate: bpf@iogearbox.net 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=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="N2NEq0MV"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zMTbQ17W4z9t2Q for ; Thu, 18 Jan 2018 14:14:58 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754130AbeARDO4 (ORCPT ); Wed, 17 Jan 2018 22:14:56 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:44379 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753923AbeARDOs (ORCPT ); Wed, 17 Jan 2018 22:14:48 -0500 Received: by mail-pf0-f193.google.com with SMTP id m26so13187379pfj.11 for ; Wed, 17 Jan 2018 19:14:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ClsysTXPNojmhSUbh7RR5Ryyv+shP1mBLGZnUiJvHFQ=; b=N2NEq0MVTO4zjhd1Dkmeee/ivd+3FwZKeQpMZBkW+Uty7cnOQ0w9cRTrD7Nxd/nUP3 /GKWFiKUGsexrgP4OtSul2LD7eGa0iD+aFzKlMn0PLX/aS9fYGNIRY+WSqbhE85cJRoL 6vcWKMUzDkdJAufQEzeqWG9JQ2rBeVKD9syYP4EEsic8IFo51mp/XcDYYk5P+Yf1MaPt NoZHvzYhhtRh78psxYDoIyGRu7H9ujh1AAOGULjHVfe4xGAZfMZb2irLGUa1uOcBWFz/ FrJr8LkTJ8l4ILHLch1KA4rsetkG7QeQjgqn7/X+3NEL71oFuwgOKsTAxFB/QV1R3pi3 SdzQ== 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:in-reply-to :references; bh=ClsysTXPNojmhSUbh7RR5Ryyv+shP1mBLGZnUiJvHFQ=; b=cwV8T7GTa5kRuM6RMHWmRoXpVTOMQJ3L/2dWJHUzh0mMujZxRLzUPtps5qEgUDDEo0 jFWimGqUKbBy17iWx0bMidw2uESctjhm9eAvXhq3r1j84OwGHd4TUgPTyK904m3p0jJy TXivvoDkSvdSNJews8E75nmMp3VM0wn+VfzIUi8U6vNpTa+kiKVq50qCprE+4tFAHWwM JFjAwDLVBskLatUD/p/E8NFFB07fzYGrFPxQEz7v3kkWsEI2wBYxPpBAt6hjILjqVjSQ JHhycTCeNbsJ+UMY83+VdWEttuwA7cRaCx/yOBpvCqexRaVk3qK8gDRPE7s/E+FG1WH2 MFeg== X-Gm-Message-State: AKwxyteeC+TpC0X5OwkhLn3fto7ILxiSVOuHI+Cb/RCOSxriZI9WYMEI KtD5lXndfAmz8cbGD+ycewu94Q== X-Google-Smtp-Source: ACJfBosnb2zDyLsN8f/dBW5W7sPhybq7f3OrTiWscawp8ZJg8LIzrCkh7nAbWS6BlayRZYjQyU0/nQ== X-Received: by 10.98.73.76 with SMTP id w73mr16906598pfa.61.1516245288033; Wed, 17 Jan 2018 19:14:48 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id s67sm10693223pfe.133.2018.01.17.19.14.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 17 Jan 2018 19:14:47 -0800 (PST) From: Jakub Kicinski To: daniel@iogearbox.net, alexei.starovoitov@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, tehnerd@fb.com, Jakub Kicinski Subject: [PATCH bpf-next 3/8] bpf: offload: allow array map offload Date: Wed, 17 Jan 2018 19:13:27 -0800 Message-Id: <20180118031332.32225-4-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180118031332.32225-1-jakub.kicinski@netronome.com> References: <20180118031332.32225-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The special handling of different map types is left to the driver. Allow offload of array maps by simply adding it to accepted types. For nfp we have to make sure array elements are not deleted. Signed-off-by: Jakub Kicinski --- drivers/net/ethernet/netronome/nfp/bpf/offload.c | 2 ++ kernel/bpf/offload.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/netronome/nfp/bpf/offload.c b/drivers/net/ethernet/netronome/nfp/bpf/offload.c index c452bf9462e0..1a357aacc444 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/offload.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/offload.c @@ -176,6 +176,8 @@ nfp_bpf_map_get_next_key(struct bpf_offloaded_map *offmap, static int nfp_bpf_map_delete_elem(struct bpf_offloaded_map *offmap, void *key) { + if (offmap->map.map_type == BPF_MAP_TYPE_ARRAY) + return -EINVAL; return nfp_bpf_ctrl_del_entry(offmap, key); } diff --git a/kernel/bpf/offload.c b/kernel/bpf/offload.c index 6c0baa1cf8f8..2657976aec2a 100644 --- a/kernel/bpf/offload.c +++ b/kernel/bpf/offload.c @@ -299,7 +299,8 @@ struct bpf_map *bpf_map_offload_map_alloc(union bpf_attr *attr) if (!capable(CAP_SYS_ADMIN)) return ERR_PTR(-EPERM); - if (attr->map_type != BPF_MAP_TYPE_HASH) + if (attr->map_type != BPF_MAP_TYPE_ARRAY && + attr->map_type != BPF_MAP_TYPE_HASH) return ERR_PTR(-EINVAL); offmap = kzalloc(sizeof(*offmap), GFP_USER);