)]}'
{
  "commit": "5d4e039b2cb1ca4de9774344ea7b61ad7fa1b0a1",
  "tree": "8db8402dab8a3cffbf67fb846e35c45beb3d31a0",
  "parents": [
    "4d5ef9f0f588045d5e53e51816bd619d82385676"
  ],
  "author": {
    "name": "Jiri Pirko",
    "email": "jpirko@redhat.com",
    "time": "Thu May 28 01:05:00 2009 +0000"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Fri May 29 01:51:23 2009 -0700"
  },
  "message": "bonding: allow bond in mode balance-alb to work properly in bridge -try4.3\n\n[PATCH net-next] bonding: allow bond in mode balance-alb to work properly in bridge -try4.3\n\n(updated)\nchanges v4.2 -\u003e v4.3\n- memcpy the address always, not just in case it differs from master-\u003edev_addr\n- compare_ether_addr_64bits() is not used so there is no direct need to make new\n  header file (I think it would be good to have bond stuff in separate file\n  anyway).\n\nchanges v4.1 -\u003e v4.2\n- use skb-\u003epkt_type \u003d\u003d PACKET_HOST compare rather then comparing skb dest addr\n  against skb-\u003edev-\u003edev_addr\n\nThe problem is described in following bugzilla:\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d487763\n\nBasically here\u0027s what\u0027s going on. In every mode, bonding interface uses the same\nmac address for all enslaved devices (except fail_over_mac). Only balance-alb\nwill simultaneously use multiple MAC addresses across different slaves. When you\nput this kind of bond device into a bridge it will only add one of mac adresses\ninto a hash list of mac addresses, say X. This mac address is marked as local.\nBut this bonding interface also has mac address Y. Now then packet arrives with\ndestination address Y, this address is not marked as local and the packed looks\nlike it needs to be forwarded. This packet is then lost which is wrong.\n\nNotice that interfaces can be added and removed from bond while it is in bridge.\n\n***\nWhen the multiple addresses for bridge port approach failed to solve this issue\ndue to STP I started to think other way to solve this. I returned to previous\nsolution but tweaked one.\n\nThis patch solves the situation in the bonding without touching bridge code.\nFor every incoming frame to bonding the destination address is compared to\ncurrent address of the slave device from which tha packet came. If these two\nmatch destination address is replaced by mac address of the master. This address\nis known by bridge so it is delivered properly. Note that the comparsion is not\nmade directly, it\u0027s used skb-\u003epkt_type \u003d\u003d PACKET_HOST instead. This is \"set\"\npreviously in eth_type_trans().\n\nI experimentally tried that this works as good as searching through the slave\nlist (v4 of this patch).\n\nJirka\n\nSigned-off-by: Jiri Pirko \u003cjpirko@redhat.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Andy Gospodarek \u003candy@greyhouse.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8e03b06e638e8ae235ce11c97f107d5d7257fec9",
      "old_mode": 33188,
      "old_path": "include/linux/netdevice.h",
      "new_id": "1eaf5ae14fea37c3765dd75f075872abdecc8f32",
      "new_mode": 33188,
      "new_path": "include/linux/netdevice.h"
    }
  ]
}
