From patchwork Sun Jan 13 13:59:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zahari Doychev X-Patchwork-Id: 1024079 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=linux.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=googlemail.com header.i=@googlemail.com header.b="dmRJ4wX5"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43cym92KL3z9sCh for ; Mon, 14 Jan 2019 00:55:21 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726582AbfAMNzA (ORCPT ); Sun, 13 Jan 2019 08:55:00 -0500 Received: from mail-wm1-f65.google.com ([209.85.128.65]:35162 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726434AbfAMNzA (ORCPT ); Sun, 13 Jan 2019 08:55:00 -0500 Received: by mail-wm1-f65.google.com with SMTP id t200so6435170wmt.0 for ; Sun, 13 Jan 2019 05:54:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=T6MKAF5sO0UFF7jfE2JZusXPWSZfUX6ZOmp/4r7o2uM=; b=dmRJ4wX5JToMweQLUWBDSKfPW4PdeHbYMrwY+y/IKvZhNVwv5UNHgsHrlrqoHykwwi 5mDPpP0fcN/wfPbowbPlOemZOedBiN0cGjuT0eSRdWFUcAR2DAgguRu7yPF8iAnMXpwa b5WKvg+aXA3+Po22gQFD2CEOIUhruJCeqWXGsB+X8hdkU3XH4DVHcoa+gh65Fr4vQunO GWB0/8hq6QI221D/AyQul4JwN69iflQN5Dm8WXC1Ku4xmvT3654J9nxa2bbPLJbla3fy hiqbGv7wW16MHjQBjOomcmDUhhrKw1cXxEtJO9ymvmaW0HUhaUj8IscOukj2EiOwzxaP hplg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=T6MKAF5sO0UFF7jfE2JZusXPWSZfUX6ZOmp/4r7o2uM=; b=mfLHNc8AMQMuj7XUKS0bX3rJWL82G5Va6n4yIKLHw448oinE1MJeGfDXZaaaqMTrMD OJrtXKMBlqv2HAFIyUJ7A8DyMtjHnDjQ1vdJS9cCzfkneB1qPln9DloZgInWG3WO2MI4 QRUW4Ayfe2r7pGgsVNq58COZ1GRU6f1dlIuNtPS/fqxthTDQqfWBXuub5PbcVEH59FFA dk/BmZvKmiSaAtw66xLXSgSv0ouLKFHloUUohb3sL7KZ1EAQkapTG29g2euwy1lblLod HYBhyESmAOONNJ4H/QEnZ2kgm6ZY0lMcPLYXeTQ9Ly0FodVyQrhrdHIyfaiZEH4O2SaX 4QBA== X-Gm-Message-State: AJcUukfgrX8rcn1bwIf3ovryvhRRM/vOxtVgmykvvQGsFna2Qil25ABc 4SACIhWzwIzEkE7Eba6ddHevmBRL9dw= X-Google-Smtp-Source: ALg8bN62/ewBl4sj35hExvAnugHJDzceIu34BeA8ejuu1dECHuq/cayxLFCcOuHn3uUK0JEhjVK2zQ== X-Received: by 2002:a1c:1902:: with SMTP id 2mr8849259wmz.150.1547387698118; Sun, 13 Jan 2019 05:54:58 -0800 (PST) Received: from localhost.localdomain (ipbcc05724.dynamic.kabel-deutschland.de. [188.192.87.36]) by smtp.gmail.com with ESMTPSA id m4sm21407879wmi.3.2019.01.13.05.54.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 13 Jan 2019 05:54:57 -0800 (PST) From: Zahari Doychev To: netdev@vger.kernel.org, bridge@lists.linux-foundation.org, nikolay@cumulusnetworks.com, roopa@cumulusnetworks.com Cc: jhs@mojatatu.com, johannes@sipsolutions.net, zahari.doychev@linux.com Subject: [PATCH 1/2] net: bridge: fix tc added QinQ forwarding Date: Sun, 13 Jan 2019 14:59:38 +0100 Message-Id: <20190113135939.8970-2-zahari.doychev@linux.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190113135939.8970-1-zahari.doychev@linux.com> References: <20190113135939.8970-1-zahari.doychev@linux.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Use the skb->mac_len instead of using the ETH_HLEN when pushing the skb data pointer. This fixes sending incorrect packets when more than one vlan tags are pushed by tc-vlan and the mac header length is bigger than ETH_HLEN. In this way the vlan tagged contained in the skb is inserted at right offset in the packet payload before sending the packet. Signed-off-by: Zahari Doychev --- net/bridge/br_forward.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c index 5372e2042adf..55f928043f77 100644 --- a/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c @@ -39,7 +39,7 @@ int br_dev_queue_push_xmit(struct net *net, struct sock *sk, struct sk_buff *skb if (!is_skb_forwardable(skb->dev, skb)) goto drop; - skb_push(skb, ETH_HLEN); + skb_push(skb, skb->mac_len); br_drop_fake_rtable(skb); if (skb->ip_summed == CHECKSUM_PARTIAL && From patchwork Sun Jan 13 13:59:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zahari Doychev X-Patchwork-Id: 1024080 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=linux.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=googlemail.com header.i=@googlemail.com header.b="f1rzUEHm"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43cymB2wKsz9sCr for ; Mon, 14 Jan 2019 00:55:22 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726599AbfAMNzC (ORCPT ); Sun, 13 Jan 2019 08:55:02 -0500 Received: from mail-wr1-f68.google.com ([209.85.221.68]:45471 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726434AbfAMNzC (ORCPT ); Sun, 13 Jan 2019 08:55:02 -0500 Received: by mail-wr1-f68.google.com with SMTP id t6so19911497wrr.12 for ; Sun, 13 Jan 2019 05:55:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qNxM9Hb0kCtLvQAiNq6wya0I6xrnWFNPO2CcDtAeFFo=; b=f1rzUEHmxzLqYV9qswwFq7Zc/A+rC4uPY2Ugk3ZAUEiz2DSymGvfwA0bekELK3VkZH WZG+TRemIsM1IHb592EJP9ngXl/a2iqhvyOP3dUHgZaLaa9D2orTDYMlsjnY0IXqtP+E GcqFO5b9eE3Rl5E0tELEbR1bd+iUT6nSH82ioHhXhW9aKBn3HJB8o3YrD/Jyb0muQQJ5 b++mcneB4TVuhmtDkENqIfyj9zTP56rQd1ycmw9ptKg4JA5Sbrmb395+zTEgdyReNpT5 vCtcHl7/leNK5pyn+u6oXZuLdf/THdnYi7hFbg7z0RZ2rfbVwRTdkyzv+w0QSH1iHyRC jURA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=qNxM9Hb0kCtLvQAiNq6wya0I6xrnWFNPO2CcDtAeFFo=; b=tzQGCiEm9N3T/cAu4qFrj2aKovZFK1Ko8E7pnsIi5DsuXoL6bXPt3DxnO++QwFTNM4 tf1/o4vGlYD1EoxWI3Qpt2p55/cvFtSA30MQdX4O8Yz+CefOAjzXrqKq8J2vBJIIxDOL hrqkFHg6kpUipRQCtJpymuhOzYN6q/re19xVXSBQBHHH0Y22/JS6vgmJ2ldpWfXaXtne JwZnI0Ylva4v0TmxrIBM8qD+qRU4hydfo+/Wvaoi9G0H+87BPW+VBaDi/zaTcnXY5DA7 J854gs2/L39RR4GacjJM2lBodriDZIUCbMiK2r0JrqTPY7saQmCP+TvwarLThUWultad hDIw== X-Gm-Message-State: AJcUukdEKjWaLmLSl5woWfEyitL3JvSTb7ZYrGcNBL6lHMN+3sNhXIfP OumJ53rUXZ4m5vQJbArGVkBw9wLVSHQ= X-Google-Smtp-Source: ALg8bN4+BjN/p6K7bhegjDpYemzjAcShDbB7N8eeq9w8bssw/Pann/nOG2uE7SYOV4zO93JMwXuj9Q== X-Received: by 2002:adf:9422:: with SMTP id 31mr22053845wrq.106.1547387700199; Sun, 13 Jan 2019 05:55:00 -0800 (PST) Received: from localhost.localdomain (ipbcc05724.dynamic.kabel-deutschland.de. [188.192.87.36]) by smtp.gmail.com with ESMTPSA id m4sm21407879wmi.3.2019.01.13.05.54.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 13 Jan 2019 05:54:59 -0800 (PST) From: Zahari Doychev To: netdev@vger.kernel.org, bridge@lists.linux-foundation.org, nikolay@cumulusnetworks.com, roopa@cumulusnetworks.com Cc: jhs@mojatatu.com, johannes@sipsolutions.net, zahari.doychev@linux.com Subject: [PATCH 2/2] net: bridge: fix tc added vlan insert as payload Date: Sun, 13 Jan 2019 14:59:39 +0100 Message-Id: <20190113135939.8970-3-zahari.doychev@linux.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190113135939.8970-1-zahari.doychev@linux.com> References: <20190113135939.8970-1-zahari.doychev@linux.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The skb->mac_len is used for the skb_push before inserting the vlan tag to the packet payload. After that the skb is pulled only ETH_HLEN and the network header is being reset to get the correct packet mac header. This avoids sending packets with incorrect mac header when vlan tags are pushed with tc-vlan and the bridge tpid does not match the inserted vlan tpid. The vlan tag is inserted at the right place of the header. Signed-off-by: Zahari Doychev --- net/bridge/br_vlan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/bridge/br_vlan.c b/net/bridge/br_vlan.c index 4a2f31157ef5..f857487245c6 100644 --- a/net/bridge/br_vlan.c +++ b/net/bridge/br_vlan.c @@ -460,13 +460,14 @@ static bool __allowed_ingress(const struct net_bridge *br, /* Tagged frame */ if (skb->vlan_proto != br->vlan_proto) { /* Protocol-mismatch, empty out vlan_tci for new tag */ - skb_push(skb, ETH_HLEN); + skb_push(skb, skb->mac_len); skb = vlan_insert_tag_set_proto(skb, skb->vlan_proto, skb_vlan_tag_get(skb)); if (unlikely(!skb)) return false; skb_pull(skb, ETH_HLEN); + skb_reset_network_header(skb); skb_reset_mac_len(skb); *vid = 0; tagged = false;