Cover Letter Detail
Show a cover letter.
GET /api/covers/810326/?format=api
{ "id": 810326, "url": "http://patchwork.ozlabs.org/api/covers/810326/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/cover/1504654510-31004-1-git-send-email-andrew@lunn.ch/", "project": { "id": 7, "url": "http://patchwork.ozlabs.org/api/projects/7/?format=api", "name": "Linux network development", "link_name": "netdev", "list_id": "netdev.vger.kernel.org", "list_email": "netdev@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1504654510-31004-1-git-send-email-andrew@lunn.ch>", "list_archive_url": null, "date": "2017-09-05T23:35:02", "name": "[v2,rfc,0/8] IGMP snooping for local traffic", "submitter": { "id": 13608, "url": "http://patchwork.ozlabs.org/api/people/13608/?format=api", "name": "Andrew Lunn", "email": "andrew@lunn.ch" }, "mbox": "http://patchwork.ozlabs.org/project/netdev/cover/1504654510-31004-1-git-send-email-andrew@lunn.ch/mbox/", "series": [ { "id": 1666, "url": "http://patchwork.ozlabs.org/api/series/1666/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=1666", "date": "2017-09-05T23:35:04", "name": "IGMP snooping for local traffic", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/1666/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/810326/comments/", "headers": { "Return-Path": "<netdev-owner@vger.kernel.org>", "X-Original-To": "patchwork-incoming@ozlabs.org", "Delivered-To": "patchwork-incoming@ozlabs.org", "Authentication-Results": "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)", "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xn37V0fGLz9t2c\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed, 6 Sep 2017 09:38:30 +1000 (AEST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1754452AbdIEXi2 (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tTue, 5 Sep 2017 19:38:28 -0400", "from vps0.lunn.ch ([178.209.37.122]:58228 \"EHLO vps0.lunn.ch\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1753545AbdIEXi0 (ORCPT <rfc822;netdev@vger.kernel.org>);\n\tTue, 5 Sep 2017 19:38:26 -0400", "from andrew by vps0.lunn.ch with local (Exim 4.84_2)\n\t(envelope-from <andrew@lunn.ch>)\n\tid 1dpNNG-00084f-EF; Wed, 06 Sep 2017 01:35:18 +0200" ], "From": "Andrew Lunn <andrew@lunn.ch>", "To": "netdev <netdev@vger.kernel.org>", "Cc": "jiri@resnulli.us, nikolay@cumulusnetworks.com,\n\tFlorian Fainelli <f.fainelli@gmail.com>,\n\tVivien Didelot <vivien.didelot@savoirfairelinux.com>,\n\tAndrew Lunn <andrew@lunn.ch>", "Subject": "[PATCH v2 rfc 0/8] IGMP snooping for local traffic", "Date": "Wed, 6 Sep 2017 01:35:02 +0200", "Message-Id": "<1504654510-31004-1-git-send-email-andrew@lunn.ch>", "X-Mailer": "git-send-email 2.1.4", "Sender": "netdev-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<netdev.vger.kernel.org>", "X-Mailing-List": "netdev@vger.kernel.org" }, "content": "After the very useful feedback from Nikolay, i threw away what i had,\nand started again. To recap:\n\nThe linux bridge supports IGMP snooping. It will listen to IGMP\nreports on bridge ports and keep track of which groups have been\njoined on an interface. It will then forward multicast based on this\ngroup membership.\n\nWhen the bridge adds or removed groups from an interface, it uses\nswitchdev to request the hardware add an mdb to a port, so the\nhardware can perform the selective forwarding between ports.\n\nWhat is not covered by the current bridge code, is IGMP joins/leaves\nfrom the host on the brX interface. These are not reported via\nswitchdev so that hardware knows the local host is interested in the\nmulticast frames.\n\nLuckily, the bridge does track joins/leaves on the brX interface. The\ncode is obfusticated, which is why i missed it with my first attempt.\nSo the first patch tries to remove this obfustication. Currently,\nthere is no notifications sent when the bridge interface joins a\ngroup. The second patch adds them. bridge monitor then shows\njoins/leaves in the same way as for other ports of the bridge.\n\nThen starts the work passing down to the hardware that the host has\njoined/left a group. The existing switchdev mdb object cannot be used,\nsince the semantics are different. The existing\nSWITCHDEV_OBJ_ID_PORT_MDB is used to indicate a specific multicast\ngroup should be forwarded out that port of the switch. However here we\nrequire the exact opposite. We want multicast frames for the group\nreceived on the port to the forwarded to the host. Hence add a new\nobject SWITCHDEV_OBJ_ID_HOST_MDB, a multicast database entry to\nforward to the host. This new object is then propagated through the\nDSA layers. No DSA driver changes should be needed, this should just\nwork...\n\nGetting the frames to the bridge as requested turned up an issue or\nthree. The offload_fwd_mark is not being set by DSA, so the bridge\nfloods the received frames back to the switch ports, resulting in\nduplication since the hardware has already flooded the packet. Fixing\nthat turned up an issue with the meaning of\nSWITCHDEV_ATTR_ID_PORT_PARENT_ID in DSA. A DSA fabric of three\nswitches needs to look to the software bridge as a single\nswitch. Otherwise the offload_fwd_mark does not work, and we get\nduplication on the non-ingress switch. But each switch returned a\ndifferent value. And they were not unique.\n\nThe third and last issue will be explained in a followup email.\n\nOpen questions:\n\nIs sending notifications going to break userspace?\nIs this new switchdev object O.K. for the few non-DSA switches that exist?\nIs the SWITCHDEV_ATTR_ID_PORT_PARENT_ID change acceptable?\n\n Andrew\n\nAndrew Lunn (8):\n net: bridge: Rename mglist to host_joined\n net: bridge: Send notification when host join/leaves a group\n net: bridge: Add/del switchdev object on host join/leave\n net: dsa: slave: Handle switchdev host mdb add/del\n net: dsa: switch: handle host mdb add/remove\n net: dsa: switch: Don't add CPU port to an mdb by default\n net: dsa: set offload_fwd_mark on received packets\n net: dsa: Fix SWITCHDEV_ATTR_ID_PORT_PARENT_ID\n\n include/net/switchdev.h | 1 +\n net/bridge/br_input.c | 2 +-\n net/bridge/br_mdb.c | 50 +++++++++++++++++++++++++++++---\n net/bridge/br_multicast.c | 18 +++++++-----\n net/bridge/br_private.h | 2 +-\n net/dsa/dsa.c | 1 +\n net/dsa/dsa_priv.h | 7 +++++\n net/dsa/port.c | 26 +++++++++++++++++\n net/dsa/slave.c | 16 ++++++++---\n net/dsa/switch.c | 72 +++++++++++++++++++++++++++++++++++++++--------\n net/switchdev/switchdev.c | 2 ++\n 11 files changed, 168 insertions(+), 29 deletions(-)" }