From mboxrd@z Thu Jan 1 00:00:00 1970 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=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT 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 4A7EEC43381 for ; Thu, 21 Feb 2019 12:40:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0BA6B2086A for ; Thu, 21 Feb 2019 12:40:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="nmN8SvBv" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726952AbfBUMkE (ORCPT ); Thu, 21 Feb 2019 07:40:04 -0500 Received: from mail-eopbgr20078.outbound.protection.outlook.com ([40.107.2.78]:6395 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725385AbfBUMkD (ORCPT ); Thu, 21 Feb 2019 07:40:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ytaGjruc7jxbim6uBk73FS8e+IQiYXRFlwlP63CQyec=; b=nmN8SvBvAuWNykVJ7bXoJKDMoPh+OoKf31g8qhHAg7NFldwsH7Zk9iAnFendOP9sXm5xYZWJ9vwAru6dlhSkOv2aivMj7VNO8AQbI/VCw9F3Ikg5hj4kpjv2Xkqzavger1EZ5rMijiaL1rcfFhO+RQZbRT3UxHnPAavBhJAP60U= Received: from AM6PR05MB5879.eurprd05.prod.outlook.com (20.179.0.76) by AM6PR05MB5816.eurprd05.prod.outlook.com (20.178.94.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.16; Thu, 21 Feb 2019 12:39:58 +0000 Received: from AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::98c7:b5be:ac6b:144]) by AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::98c7:b5be:ac6b:144%5]) with mapi id 15.20.1643.014; Thu, 21 Feb 2019 12:39:58 +0000 From: Maxim Mikityanskiy To: "David S. Miller" , Saeed Mahameed , Willem de Bruijn , Jason Wang , Eric Dumazet CC: "netdev@vger.kernel.org" , Eran Ben Elisha , Tariq Toukan , Maxim Mikityanskiy Subject: [PATCH net-next v2 2/7] net: Introduce parse_protocol header_ops callback Thread-Topic: [PATCH net-next v2 2/7] net: Introduce parse_protocol header_ops callback Thread-Index: AQHUyeKOWBGmSTFdlEG8zNxEJtmcaw== Date: Thu, 21 Feb 2019 12:39:58 +0000 Message-ID: <20190221123908.7196-3-maximmi@mellanox.com> References: <20190221123908.7196-1-maximmi@mellanox.com> In-Reply-To: <20190221123908.7196-1-maximmi@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LNXP265CA0070.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5d::34) To AM6PR05MB5879.eurprd05.prod.outlook.com (2603:10a6:20b:a2::12) authentication-results: spf=none (sender IP is ) smtp.mailfrom=maximmi@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.19.1 x-originating-ip: [141.226.120.58] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7a57adcd-aa66-4bcb-ddf5-08d697f9b05f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM6PR05MB5816; x-ms-traffictypediagnostic: AM6PR05MB5816: x-microsoft-exchange-diagnostics: =?iso-8859-1?Q?1;AM6PR05MB5816;23:CuqB9N7QFi3GLsBGcF9KDQMbU6H5yDMvpVAk4R+?= =?iso-8859-1?Q?LtFbaXzX3ituWwvJ4tMpAgOxi8jn1Ojsrs2s/EykMuCIbbP05kGipgyLNV?= =?iso-8859-1?Q?4Z4Xigk5K47qAD1XTni60Fkz8SqiR8wwEb/iSVRJmfz3CCpm8/ONIKCXjJ?= =?iso-8859-1?Q?+3OkYJmhlhT2eIX3P0Ff3P8Nv9dP1kZ+SwZ9tWaCRrdrLr7eX4CAD5pCaE?= =?iso-8859-1?Q?Ob0pJPCd7nCtk+rrkVhcQT/pUvVnFSdTa13mqvpb/sAuB7/c44skxEco+0?= =?iso-8859-1?Q?tB+wrev/7Ld0Mg845HSOVF16nytWUf2+SBw1awPnxoCgUQVBhglIOgp36k?= =?iso-8859-1?Q?EOG0xr+xnCDAzxN7cti9fGBONSv+Ou2I6X81zGecfe5hRLYJIC73DaQLNZ?= =?iso-8859-1?Q?TDe4GWVVXvD3JEtPgC3hELApAZlKWFAcGj1mb/WOt5f1Og6BFia+hED8SZ?= =?iso-8859-1?Q?XA0QSRlNI/6vDqyHLCpudJDZmn3M+HGTSe5/kgyYbnI5nmF1zBljXi79xG?= =?iso-8859-1?Q?Nh2E3TaoCpj8aDsIZEkPdgPA8lx9inRWsOYA8OsSsXJz0Q8JqW+1egEW+Q?= =?iso-8859-1?Q?tZtTbx8bcDn60eVy4kRNCKkkpcyZBH/r8rll02AzrmT4WvckVTCh72KBvH?= =?iso-8859-1?Q?Ow/FBEEoV3uJO392/iCJfOCL5kRuXZCsbbZfh87Y2kXSVuOMfa280ZCc16?= =?iso-8859-1?Q?DqwA0Rf01CELJb/oPFvTBXT0ShgnCMN0krdlZwwZtOPnRrjcel6UcoZDHI?= =?iso-8859-1?Q?kwfgkAt25MU6FA+6PUm3nkB6zCA1mSJce/teBfassUy5EfAm0ygeRYX3gD?= =?iso-8859-1?Q?CovDZ7UzUUUem6zOSBuyEDb3cU7i4I+asJURtpwelf1LjccY7fMs/Svf7P?= =?iso-8859-1?Q?kG6ju9mW10sIC1xhcJJLEZIMw9FSKinJosC46QPKrzNVlyXxRmJMUCQ+/g?= =?iso-8859-1?Q?RPzBSNtlxrmzw71H9rcJ4YszHm+3opHiC7RzQVHqeG30thmUXcy9Y1/9Kb?= =?iso-8859-1?Q?O07veKVNZY2WMA4HWWPu9W3kmg0L+J+73k1Qtid0Xy1lv+0CWQgyOhC6Ct?= =?iso-8859-1?Q?c27fqw0zH43T3y1rHEaL9NLm6X4Mk1WH1SChBGa8xProP4xGuSAL1pmda8?= =?iso-8859-1?Q?wXdXWyRiFYbkbE68afd7A5LAm//3sDJeIgU9wJ1TSp6s7R0XUpW2mVA/Wk?= =?iso-8859-1?Q?gOWI2nKKENI5jwtQwh6Ugp5WGPQ3cuQb6Okf+e0cc/ofd7CJr0GJz3A+40?= =?iso-8859-1?Q?28eFVW3gFSq319naQu9IRsr8O8qwdmktBdUs3m/j0318nXdNAMrrYoTR0L?= =?iso-8859-1?Q?Ek=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 09555FB1AD x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(39860400002)(366004)(376002)(396003)(346002)(189003)(199004)(6512007)(316002)(1076003)(54906003)(305945005)(25786009)(478600001)(7736002)(66066001)(81166006)(99286004)(53936002)(110136005)(68736007)(8676002)(8936002)(76176011)(71200400001)(71190400001)(6436002)(52116002)(5660300002)(81156014)(50226002)(6486002)(4326008)(256004)(107886003)(86362001)(102836004)(26005)(476003)(186003)(11346002)(14444005)(2906002)(3846002)(6116002)(105586002)(386003)(36756003)(6506007)(446003)(97736004)(14454004)(486006)(2616005)(106356001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB5816;H:AM6PR05MB5879.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: CIlTqw5deI3rd7hp/4OwWo364SgHgcGQ9ED6CAn7/Twe+pcnjNAxRhNtTCZmi+xs5GukvnrH2jaGyb6LLSye2qDNOKRVmSBCo1rOhG0l1rVnb/sJqILppMoxfww65lZ8xlrgbfXpG04p8+EheNp3/qmqeCdTmG8HbhhQH+Jl+EFcoQEFyDk9FfF9NEI6PlnG46ShxjeGIbo51APCjneFEN+oMz3lPh6PqwDFd79PBDDsCP4b/dw1DQULvULXEEFRRtRvvwL0qEhEUPY21V6nquJwJoCsF4FqFGO08qXepzM2/2cp3ejTW9AJMOkMUo+QBm48gP5KqrcBYBfweX2UmQkwLDEAbWeyzh9ZSrYiv5s1L2RcUjyJ62XzUIWNQ/Xo8LbHIJddUvyio2bmqCFidBsiOpABQMBwHrKaHKOuB3g= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7a57adcd-aa66-4bcb-ddf5-08d697f9b05f X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2019 12:39:57.2631 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB5816 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Introduce a new optional header_ops callback called parse_protocol and a wrapper function dev_parse_header_protocol, similar to dev_parse_header. The new callback's purpose is to extract the protocol number from the L2 header, the format of which is known to the driver, but not to the upper layers of the stack. Signed-off-by: Maxim Mikityanskiy --- include/linux/netdevice.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index aab4d9f6613d..6997f62cb6a0 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -274,6 +274,7 @@ struct header_ops { const struct net_device *dev, const unsigned char *haddr); bool (*validate)(const char *ll_header, unsigned int len); + __be16 (*parse_protocol)(const struct sk_buff *skb); }; =20 /* These flag bits are private to the generic network queueing @@ -2939,6 +2940,15 @@ static inline int dev_parse_header(const struct sk_b= uff *skb, return dev->header_ops->parse(skb, haddr); } =20 +static inline __be16 dev_parse_header_protocol(const struct sk_buff *skb) +{ + const struct net_device *dev =3D skb->dev; + + if (!dev->header_ops || !dev->header_ops->parse_protocol) + return 0; + return dev->header_ops->parse_protocol(skb); +} + /* ll_header must have at least hard_header_len allocated */ static inline bool dev_validate_header(const struct net_device *dev, char *ll_header, int len) --=20 2.19.1