)]}'
{
  "log": [
    {
      "commit": "aaa0c23cb90141309f5076ba5e3bfbd39544b985",
      "tree": "b6aa0989e463fbc803474c077e5a3ab512017024",
      "parents": [
        "1e731cb986d564c4938bcba89ff5f4aea1d8e2fb"
      ],
      "author": {
        "name": "Zhouyi Zhou",
        "email": "zhouzhouyi@gmail.com",
        "time": "Thu Mar 14 17:21:50 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 15 09:06:58 2013 -0400"
      },
      "message": "Fix dst_neigh_lookup/dst_neigh_lookup_skb return value handling bug\n\nWhen neighbour table is full, dst_neigh_lookup/dst_neigh_lookup_skb will return\n-ENOBUFS which is absolutely non zero, while all the code in kernel which use\nabove functions assume failure only on zero return which will cause panic. (for\nexample: : https://bugzilla.kernel.org/show_bug.cgi?id\u003d54731).\n\nThis patch corrects above error with smallest changes to kernel source code and\nalso correct two return value check missing bugs in drivers/infiniband/hw/cxgb4/cm.c\n\nTested on my x86_64 SMP machine\n\nReported-by: Zhouyi Zhou \u003czhouzhouyi@gmail.com\u003e\nTested-by: Zhouyi Zhou \u003czhouzhouyi@gmail.com\u003e\nSigned-off-by: Zhouyi Zhou \u003czhouzhouyi@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ecd9883724b78cc72ed92c98bcb1a46c764fff21",
      "tree": "c18d4c96f7e4dcf278c88e505be8225af7374800",
      "parents": [
        "68534c682e8f5c333f835818ca5a89d3e6288870"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki / 吉藤英明",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Feb 20 00:29:08 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 20 15:11:45 2013 -0500"
      },
      "message": "ipv6: fix race condition regarding dst-\u003eexpires and dst-\u003efrom.\n\nEric Dumazet wrote:\n| Some strange crashes happen in rt6_check_expired(), with access\n| to random addresses.\n|\n| At first glance, it looks like the RTF_EXPIRES and\n| stuff added in commit 1716a96101c49186b\n| (ipv6: fix problem with expired dst cache)\n| are racy : same dst could be manipulated at the same time\n| on different cpus.\n|\n| At some point, our stack believes rt-\u003edst.from contains a dst pointer,\n| while its really a jiffie value (as rt-\u003edst.expires shares the same area\n| of memory)\n|\n| rt6_update_expires() should be fixed, or am I missing something ?\n|\n| CC Neil because of https://bugzilla.redhat.com/show_bug.cgi?id\u003d892060\n\nBecause we do not have any locks for dst_entry, we cannot change\nessential structure in the entry; e.g., we cannot change reference\nto other entity.\n\nTo fix this issue, split \u0027from\u0027 and \u0027expires\u0027 field in dst_entry\nout of union.  Once it is \u0027from\u0027 is assigned in the constructor,\nkeep the reference until the very last stage of the life time of\nthe object.\n\nOf course, it is unsafe to change \u0027from\u0027, so make rt6_set_from simple\njust for fresh entries.\n\nReported-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReported-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCC: Gao Feng \u003cgaofeng@cn.fujitsu.com\u003e\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nReviewed-by: Eric Dumazet \u003cedumazet@google.com\u003e\nReported-by: Steinar H. Gunderson \u003csesse@google.com\u003e\nReviewed-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a0073fe18e718a1c815fe8b0120f1ac3c60284ba",
      "tree": "1f30d5f9415a90c5662376fd3e4c0420a431b9f1",
      "parents": [
        "fa8599db8f222fd9d351a640074377a841979187"
      ],
      "author": {
        "name": "Steffen Klassert",
        "email": "steffen.klassert@secunet.com",
        "time": "Tue Feb 05 12:52:55 2013 +0100"
      },
      "committer": {
        "name": "Steffen Klassert",
        "email": "steffen.klassert@secunet.com",
        "time": "Wed Feb 06 08:31:10 2013 +0100"
      },
      "message": "xfrm: Add a state resolution packet queue\n\nAs the default, we blackhole packets until the key manager resolves\nthe states. This patch implements a packet queue where IPsec packets\nare queued until the states are resolved. We generate a dummy xfrm\nbundle, the output routine of the returned route enqueues the packet\nto a per policy queue and arms a timer that checks for state resolution\nwhen dst_output() is called. Once the states are resolved, the packets\nare sent out of the queue. If the states are not resolved after some\ntime, the queue is flushed.\n\nThis patch keeps the defaut behaviour to blackhole packets as long\nas we have no states. To enable the packet queue the sysctl\nxfrm_larval_drop must be switched off.\n\nSigned-off-by: Steffen Klassert \u003csteffen.klassert@secunet.com\u003e\n"
    },
    {
      "commit": "1304a7343b30fc4f16045412efdbb4179a3d9255",
      "tree": "83d667ac4f62e30f70305ce4cc7e030e3465f92e",
      "parents": [
        "1d76efe1577b4323609b1bcbfafa8b731eda071a",
        "23dcfa61bac244e1200ff9ad19c6e9144dcb6bb5"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 22 14:21:38 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 22 14:21:38 2012 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n"
    },
    {
      "commit": "a37e6e344910a43b9ebc2bbf29a029f5ea942598",
      "tree": "028fe1af3e85510fa7c341bfe3dadd099189156b",
      "parents": [
        "0c03eca3d995e73d691edea8c787e25929ec156d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Aug 07 10:55:45 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 08 16:00:28 2012 -0700"
      },
      "message": "net: force dst_default_metrics to const section\n\nWhile investigating on network performance problems, I found this little\ngem :\n\n$ nm -v vmlinux | grep -1 dst_default_metrics\nffffffff82736540 b busy.46605\nffffffff82736560 B dst_default_metrics\nffffffff82736598 b dst_busy_list\n\nApparently, declaring a const array without initializer put it in\n(writeable) bss section, in middle of possibly often dirtied cache\nlines.\n\nSince we really want dst_default_metrics be const to avoid any possible\nfalse sharing and catch any buggy writes, I force a null initializer.\n\nffffffff818a4c20 R dst_default_metrics\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "425f09ab7d1c9da6ca4137dd639cb6fe3f8a88f3",
      "tree": "49c586d8025f671a8e47415f4364bfb818534569",
      "parents": [
        "e07b94f1352723994d8b588ac5ed8af91bcc9fb6"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Aug 07 02:19:56 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Aug 07 16:24:55 2012 -0700"
      },
      "message": "net: output path optimizations\n\n1) Avoid dirtying neighbour\u0027s confirmed field.\n\n  TCP workloads hits this cache line for each incoming ACK.\n  Lets write n-\u003econfirmed only if there is a jiffie change.\n\n2) Optimize neigh_hh_output() for the common Ethernet case, were\n   hh_len is less than 16 bytes. Replace the memcpy() call\n   by two inlined 64bit load/stores on x86_64.\n\nBench results using udpflood test, with -C option (MSG_CONFIRM flag\nadded to sendto(), to reproduce the n-\u003econfirmed dirtying on UDP)\n\n24 threads doing 1.000.000 UDP sendto() on dummy device, 4 runs.\n\nbefore : 2.247s, 2.235s, 2.247s, 2.318s\nafter  : 1.884s, 1.905s, 1.891s, 1.895s\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ceb3320610d6f15ff20dd4c042b36473d77de76f",
      "tree": "4a0d367032aaaa085d02fa7038cfb6e5ea65d0cd",
      "parents": [
        "f5b0a8743601a4477419171f5046bd07d1c080a0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 17 11:31:28 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 20 13:31:22 2012 -0700"
      },
      "message": "ipv4: Kill routes during PMTU/redirect updates.\n\nMark them obsolete so there will be a re-lookup to fetch the\nFIB nexthop exception info.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f5b0a8743601a4477419171f5046bd07d1c080a0",
      "tree": "92e17ec293c3d0e35a0deda5d3bbf43710fb96ff",
      "parents": [
        "f8126f1d5136be1ca1a3536d43ad7a710b5620f8"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 19 12:31:33 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 20 13:31:21 2012 -0700"
      },
      "message": "net: Document dst-\u003eobsolete better.\n\nAdd a big comment explaining how the field works, and use defines\ninstead of magic constants for the values assigned to it.\n\nSuggested by Joe Perches.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "94334d5ed4b64ebcd2c4b421e133b921f8ccf75d",
      "tree": "31b9093759fed4dfb9ab9546e1116981112f98cf",
      "parents": [
        "794785bf12d5d6ad7f557d78d203bb0bbfcd8da2"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 00:53:48 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 22:40:07 2012 -0700"
      },
      "message": "net: Kill set_dst_metric_rtt().\n\nNo longer used.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "36bdbcae2fa2a6dfa99344d4190fcea0aa7b7c25",
      "tree": "79d4167b6913428522dc6e5a0bf98a9d58d36f9e",
      "parents": [
        "d1e31fb02b31ba88d5650d97c35eb58f52bfe0e1"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 02 22:58:02 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 05 02:42:00 2012 -0700"
      },
      "message": "net: Kill dst-\u003e_neighbour, accessors, and final uses.\n\nNo longer used.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f894cbf847c9bea1955095bf37aca6c050553167",
      "tree": "9cc63b36c2d299bba95ea90213f4a9ef0ae433d6",
      "parents": [
        "5110effee8fde2edfacac9cd12a9960ab2dc39ea"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 02 21:52:24 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 05 01:04:01 2012 -0700"
      },
      "message": "net: Add optional SKB arg to dst_ops-\u003eneigh_lookup().\n\nCauses the handler to use the daddr in the ipv4/ipv6 header when\nthe route gateway is unspecified (local subnet).\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5110effee8fde2edfacac9cd12a9960ab2dc39ea",
      "tree": "f74fff97af20ffdf805fedc56f0c8f88bbef2df7",
      "parents": [
        "60d354ebebd9d0f760cb6c3b9f53a7ade0f8cd0e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 02 02:21:03 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 05 01:03:06 2012 -0700"
      },
      "message": "net: Do delayed neigh confirmation.\n\nWhen a dst_confirm() happens, mark the confirmation as pending in the\ndst.  Then on the next packet out, when we have the neigh in-hand, do\nthe update.\n\nThis removes the dependency in dst_confirm() of dst\u0027s having an\nattached neigh.\n\nWhile we\u0027re here, remove the explicit \u0027dst\u0027 NULL check, all except 2\nor 3 call sites ensure it\u0027s not NULL.  So just fix those cases up.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7f95e1880e70bb351b992b01ef70ff083fc00d30",
      "tree": "685089b20242917d648c41f887d82d653fd00535",
      "parents": [
        "aee289baaa02dd2ffa1189c1600d5572a10e0714"
      ],
      "author": {
        "name": "Eldad Zack",
        "email": "eldad@fogrefinery.com",
        "time": "Sat Jun 16 15:14:49 2012 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 16 15:20:35 2012 -0700"
      },
      "message": "include/net/dst.h: neaten asterisk placement\n\nFix code style - place the asterisk where it belongs.\n\nSigned-off-by: Eldad Zack \u003celdad@fogrefinery.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0c1833797a5a6ec23ea9261d979aa18078720b74",
      "tree": "1ea0d0ee1fb3915b30f7b40a91c0d047db5aeac3",
      "parents": [
        "91657eafb64b4cb53ec3a2fbc4afc3497f735788"
      ],
      "author": {
        "name": "Gao feng",
        "email": "gaofeng@cn.fujitsu.com",
        "time": "Sat May 26 01:30:53 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 27 01:11:22 2012 -0400"
      },
      "message": "ipv6: fix incorrect ipsec fragment\n\nSince commit ad0081e43a\n\"ipv6: Fragment locally generated tunnel-mode IPSec6 packets as needed\"\nthe fragment of packets is incorrect.\nbecause tunnel mode needs IPsec headers and trailer for all fragments,\nwhile on transport mode it is sufficient to add the headers to the\nfirst fragment and the trailer to the last.\n\nso modify mtu and maxfraglen base on ipsec mode and if fragment is first\nor last.\n\nwith my test,it work well(every fragment\u0027s size is the mtu)\nand does not trigger slow fragment path.\n\nChanges from v1:\n\tthough optimization, mtu_prev and maxfraglen_prev can be delete.\n\treplace xfrm mode codes with dst_entry\u0027s new frag DST_XFRM_TUNNEL.\n\tadd fuction ip6_append_data_mtu to make codes clearer.\n\nSigned-off-by: Gao feng \u003cgaofeng@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a881e963c7fe1f226e991ee9bbe8907acda93294",
      "tree": "5d2b2c01097300377821132f743cddd4fc90fed6",
      "parents": [
        "4d634ca35a8b38530b134ae92bc9e3cc9c23c030"
      ],
      "author": {
        "name": "Peter Huang (Peng)",
        "email": "peter.huangpeng@huawei.com",
        "time": "Thu Apr 19 20:12:51 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 24 00:16:24 2012 -0400"
      },
      "message": "set fake_rtable\u0027s dst to NULL to avoid kernel Oops\n\nbridge: set fake_rtable\u0027s dst to NULL to avoid kernel Oops\n\nwhen bridge is deleted before tap/vif device\u0027s delete, kernel may\nencounter an oops because of NULL reference to fake_rtable\u0027s dst.\nSet fake_rtable\u0027s dst to NULL before sending packets out can solve\nthis problem.\n\nv4 reformat, change br_drop_fake_rtable(skb) to {}\n\nv3 enrich commit header\n\nv2 introducing new flag DST_FAKE_RTABLE to dst_entry struct.\n\n[ Use \"do { } while (0)\" for nop br_drop_fake_rtable()\n  implementation -DaveM ]\n\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Peter Huang \u003cpeter.huangpeng@huawei.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1716a96101c49186bb0b8491922fd3e69030235f",
      "tree": "43794d2f033f439d25c63b1796e138d65fd746a8",
      "parents": [
        "d62f8dbb5b7771910f7c4657345df8ac93acb832"
      ],
      "author": {
        "name": "Gao feng",
        "email": "gaofeng@cn.fujitsu.com",
        "time": "Fri Apr 06 00:13:10 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 13 12:58:29 2012 -0400"
      },
      "message": "ipv6: fix problem with expired dst cache\n\nIf the ipv6 dst cache which copy from the dst generated by ICMPV6 RA packet.\nthis dst cache will not check expire because it has no RTF_EXPIRES flag.\nSo this dst cache will always be used until the dst gc run.\n\nChange the struct dst_entry,add a union contains new pointer from and expires.\nWhen rt6_info.rt6i_flags has no RTF_EXPIRES flag,the dst.expires has no use.\nwe can use this field to point to where the dst cache copy from.\nThe dst.from is only used in IPV6.\n\nrt6_check_expired check if rt6_info.dst.from is expired.\n\nip6_rt_copy only set dst.from when the ort has flag RTF_ADDRCONF\nand RTF_DEFAULT.then hold the ort.\n\nip6_dst_destroy release the ort.\n\nAdd some functions to operate the RTF_EXPIRES flag and expires(from) together.\nand change the code to use these new adding functions.\n\nChanges from v5:\nmodify ip6_route_add and ndisc_router_discovery to use new adding functions.\n\nOnly set dst.from when the ort has flag RTF_ADDRCONF\nand RTF_DEFAULT.then hold the ort.\n\nSigned-off-by: Gao feng \u003cgaofeng@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "187f1882b5b0748b3c4c22274663fdb372ac0452",
      "tree": "36283f258cf65f03599a045d48bb05d0ec27f3f9",
      "parents": [
        "50af5ead3b44ccf8bd2b4d2a50c1b610f557c480"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Nov 23 20:12:59 2011 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Mar 04 17:54:34 2012 -0500"
      },
      "message": "BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n\nIf a header file is making use of BUG, BUG_ON, BUILD_BUG_ON, or any\nother BUG variant in a static inline (i.e. not in a #define) then\nthat header really should be including \u003clinux/bug.h\u003e and not just\nexpecting it to be implicitly present.\n\nWe can make this change risk-free, since if the files using these\nheaders didn\u0027t have exposure to linux/bug.h already, they would have\nbeen causing compile failures/warnings.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "abb434cb0539fb355c1c921f8fd761efbbac3462",
      "tree": "24a7d99ec161f8fd4dc9ff03c9c4cc93be883ce6",
      "parents": [
        "2494654d4890316e7340fb8b3458daad0474a1b9",
        "6350323ad8def2ac00d77cdee3b79c9b9fba75c4"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 23 17:13:56 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 23 17:13:56 2011 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nConflicts:\n\tnet/bluetooth/l2cap_core.c\n\nJust two overlapping changes, one added an initialization of\na local variable, and another change added a new local variable.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e688a604807647c9450f9c12a7cb6d027150a895",
      "tree": "6b3df826b4a42affdfc9d58d74f5e17c063cc7d6",
      "parents": [
        "7838f2ce36b6ab5c13ef20b1857e3bbd567f1759"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Dec 22 04:15:53 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 22 22:34:56 2011 -0500"
      },
      "message": "net: introduce DST_NOPEER dst flag\n\nChris Boot reported crashes occurring in ipv6_select_ident().\n\n[  461.457562] RIP: 0010:[\u003cffffffff812dde61\u003e]  [\u003cffffffff812dde61\u003e]\nipv6_select_ident+0x31/0xa7\n\n[  461.578229] Call Trace:\n[  461.580742] \u003cIRQ\u003e\n[  461.582870]  [\u003cffffffff812efa7f\u003e] ? udp6_ufo_fragment+0x124/0x1a2\n[  461.589054]  [\u003cffffffff812dbfe0\u003e] ? ipv6_gso_segment+0xc0/0x155\n[  461.595140]  [\u003cffffffff812700c6\u003e] ? skb_gso_segment+0x208/0x28b\n[  461.601198]  [\u003cffffffffa03f236b\u003e] ? ipv6_confirm+0x146/0x15e\n[nf_conntrack_ipv6]\n[  461.608786]  [\u003cffffffff81291c4d\u003e] ? nf_iterate+0x41/0x77\n[  461.614227]  [\u003cffffffff81271d64\u003e] ? dev_hard_start_xmit+0x357/0x543\n[  461.620659]  [\u003cffffffff81291cf6\u003e] ? nf_hook_slow+0x73/0x111\n[  461.626440]  [\u003cffffffffa0379745\u003e] ? br_parse_ip_options+0x19a/0x19a\n[bridge]\n[  461.633581]  [\u003cffffffff812722ff\u003e] ? dev_queue_xmit+0x3af/0x459\n[  461.639577]  [\u003cffffffffa03747d2\u003e] ? br_dev_queue_push_xmit+0x72/0x76\n[bridge]\n[  461.646887]  [\u003cffffffffa03791e3\u003e] ? br_nf_post_routing+0x17d/0x18f\n[bridge]\n[  461.653997]  [\u003cffffffff81291c4d\u003e] ? nf_iterate+0x41/0x77\n[  461.659473]  [\u003cffffffffa0374760\u003e] ? br_flood+0xfa/0xfa [bridge]\n[  461.665485]  [\u003cffffffff81291cf6\u003e] ? nf_hook_slow+0x73/0x111\n[  461.671234]  [\u003cffffffffa0374760\u003e] ? br_flood+0xfa/0xfa [bridge]\n[  461.677299]  [\u003cffffffffa0379215\u003e] ?\nnf_bridge_update_protocol+0x20/0x20 [bridge]\n[  461.684891]  [\u003cffffffffa03bb0e5\u003e] ? nf_ct_zone+0xa/0x17 [nf_conntrack]\n[  461.691520]  [\u003cffffffffa0374760\u003e] ? br_flood+0xfa/0xfa [bridge]\n[  461.697572]  [\u003cffffffffa0374812\u003e] ? NF_HOOK.constprop.8+0x3c/0x56\n[bridge]\n[  461.704616]  [\u003cffffffffa0379031\u003e] ?\nnf_bridge_push_encap_header+0x1c/0x26 [bridge]\n[  461.712329]  [\u003cffffffffa037929f\u003e] ? br_nf_forward_finish+0x8a/0x95\n[bridge]\n[  461.719490]  [\u003cffffffffa037900a\u003e] ?\nnf_bridge_pull_encap_header+0x1c/0x27 [bridge]\n[  461.727223]  [\u003cffffffffa0379974\u003e] ? br_nf_forward_ip+0x1c0/0x1d4 [bridge]\n[  461.734292]  [\u003cffffffff81291c4d\u003e] ? nf_iterate+0x41/0x77\n[  461.739758]  [\u003cffffffffa03748cc\u003e] ? __br_deliver+0xa0/0xa0 [bridge]\n[  461.746203]  [\u003cffffffff81291cf6\u003e] ? nf_hook_slow+0x73/0x111\n[  461.751950]  [\u003cffffffffa03748cc\u003e] ? __br_deliver+0xa0/0xa0 [bridge]\n[  461.758378]  [\u003cffffffffa037533a\u003e] ? NF_HOOK.constprop.4+0x56/0x56\n[bridge]\n\nThis is caused by bridge netfilter special dst_entry (fake_rtable), a\nspecial shared entry, where attaching an inetpeer makes no sense.\n\nProblem is present since commit 87c48fa3b46 (ipv6: make fragment\nidentifications less predictable)\n\nIntroduce DST_NOPEER dst flag and make sure ipv6_select_ident() and\n__ip_select_ident() fallback to the \u0027no peer attached\u0027 handling.\n\nReported-by: Chris Boot \u003cbootc@bootc.net\u003e\nTested-by: Chris Boot \u003cbootc@bootc.net\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2721745501a26d0dc3b88c0d2f3aa11471891388",
      "tree": "e9c09622b11ad7d9317b4b01824374a852867c28",
      "parents": [
        "761965eab38d2cbc59c36e355c59609e3a04705a"
      ],
      "author": {
        "name": "David Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 02 16:52:08 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 05 15:20:19 2011 -0500"
      },
      "message": "net: Rename dst_get_neighbour{, _raw} to dst_get_neighbour_noref{, _raw}.\n\nTo reflect the fact that a refrence is not obtained to the\nresulting neighbour entry.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Roland Dreier \u003croland@purestorage.com\u003e\n"
    },
    {
      "commit": "618f9bc74a039da76fa027ac2600c5b785b964c5",
      "tree": "ff69bc14b711c9c9d4c691d2a8c262401d62c8c9",
      "parents": [
        "ebb762f27fed083cb993a0816393aba4615f6544"
      ],
      "author": {
        "name": "Steffen Klassert",
        "email": "steffen.klassert@secunet.com",
        "time": "Wed Nov 23 02:13:31 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 26 14:29:51 2011 -0500"
      },
      "message": "net: Move mtu handling down to the protocol depended handlers\n\nWe move all mtu handling from dst_mtu() down to the protocol\nlayer. So each protocol can implement the mtu handling in\na different manner.\n\nSigned-off-by: Steffen Klassert \u003csteffen.klassert@secunet.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ebb762f27fed083cb993a0816393aba4615f6544",
      "tree": "c065070f78d4a272d99183606d103519426bb344",
      "parents": [
        "6b600b26c0215bf9ed04062ecfacf0bc20e2588c"
      ],
      "author": {
        "name": "Steffen Klassert",
        "email": "steffen.klassert@secunet.com",
        "time": "Wed Nov 23 02:12:51 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 26 14:29:50 2011 -0500"
      },
      "message": "net: Rename the dst_opt default_mtu method to mtu\n\nWe plan to invoke the dst_opt-\u003edefault_mtu() method unconditioally\nfrom dst_mtu(). So rename the method to dst_opt-\u003emtu() to match\nthe name with the new meaning.\n\nSigned-off-by: Steffen Klassert \u003csteffen.klassert@secunet.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bdeab991918663aed38757904219e8398214334c",
      "tree": "bc6c02da7ed88e3e568677b4a35fb4e55de363de",
      "parents": [
        "792df22cd0499b4e662d4618b0008fdcfef8b04e"
      ],
      "author": {
        "name": "Tom Herbert",
        "email": "therbert@google.com",
        "time": "Sun Aug 14 19:45:55 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 17 20:06:03 2011 -0700"
      },
      "message": "rps: Add flag to skb to indicate rxhash is based on L4 tuple\n\nThe l4_rxhash flag was added to the skb structure to indicate\nthat the rxhash value was computed over the 4 tuple for the\npacket which includes the port information in the encapsulated\ntransport packet.  This is used by the stack to preserve the\nrxhash value in __skb_rx_tunnel.\n\nSigned-off-by: Tom Herbert \u003ctherbert@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f2c31e32b378a6653f8de606149d963baf11d7d3",
      "tree": "4eeb8075a93520935381a75514f309228e6824c0",
      "parents": [
        "28f4881cbf9ce285edfc245a8990af36d21c062f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Jul 29 19:00:53 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 03 03:34:12 2011 -0700"
      },
      "message": "net: fix NULL dereferences in check_peer_redir()\n\nGergely Kalman reported crashes in check_peer_redir().\n\nIt appears commit f39925dbde778 (ipv4: Cache learned redirect\ninformation in inetpeer.) added a race, leading to possible NULL ptr\ndereference.\n\nSince we can now change dst neighbour, we should make sure a reader can\nsafely use a neighbour.\n\nAdd RCU protection to dst neighbour, and make sure check_peer_redir()\ncan be called safely by different cpus in parallel.\n\nAs neighbours are already freed after one RCU grace period, this patch\nshould not add typical RCU penalty (cache cold effects)\n\nMany thanks to Gergely for providing a pretty report pointing to the\nbug.\n\nReported-by: Gergely Kalman \u003csynapse@hippy.csoma.elte.hu\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d3aaeb38c40e5a6c08dd31a1b64da65c4352be36",
      "tree": "1c17b41d11edc7a7b3477a294cba440f2a14796c",
      "parents": [
        "69cce1d1404968f78b177a0314f5822d5afdbbfb"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 18 00:40:17 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 18 00:40:17 2011 -0700"
      },
      "message": "net: Add -\u003eneigh_lookup() operation to dst_ops\n\nIn the future dst entries will be neigh-less.  In that environment we\nneed to have an easy transition point for current users of\ndst-\u003eneighbour outside of the packet output fast path.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "69cce1d1404968f78b177a0314f5822d5afdbbfb",
      "tree": "26223264fd69ea8078d0013fd5a76eb7aeb04c12",
      "parents": [
        "9cbb7ecbcff85077bb12301aaf4c9b5a56c5993d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 17 23:09:49 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 17 23:11:35 2011 -0700"
      },
      "message": "net: Abstract dst-\u003eneighbour accesses behind helpers.\n\ndst_{get,set}_neighbour()\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f6b72b6217f8c24f2a54988e58af858b4e66024d",
      "tree": "c59d5adcf9bb226db6f602c5078106052524cfea",
      "parents": [
        "390fd0b388e4f85549e5d60bdeb21364b344d9b9"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 14 07:53:20 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 14 07:53:20 2011 -0700"
      },
      "message": "net: Embed hh_cache inside of struct neighbour.\n\nNow that there is a one-to-one correspondance between neighbour\nand hh_cache entries, we no longer need:\n\n1) dynamic allocation\n2) attachment to dst-\u003ehh\n3) refcounting\n\nInitialization of the hh_cache entry is indicated by hh_len\nbeing non-zero, and such initialization is always done with\nthe neighbour\u0027s lock held as a writer.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "957c665f37007de93ccbe45902a23143724170d0",
      "tree": "d49f13d5b34ed1b1fc34828cbcd60afdbc9c4e5b",
      "parents": [
        "11d53b4990226247a950e2b1ccfa4cf93bfbc822"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 24 15:25:00 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 01 17:30:43 2011 -0700"
      },
      "message": "ipv6: Don\u0027t put artificial limit on routing table size.\n\nIPV6, unlike IPV4, doesn\u0027t have a routing cache.\n\nRouting table entries, as well as clones made in response\nto route lookup requests, all live in the same table.  And\nall of these things are together collected in the destination\ncache table for ipv6.\n\nThis means that routing table entries count against the garbage\ncollection limits, even though such entries cannot ever be reclaimed\nand are added explicitly by the administrator (rather than being\ncreated in response to lookups).\n\nTherefore it makes no sense to count ipv6 routing table entries\nagainst the GC limits.\n\nAdd a DST_NOCOUNT destination cache entry flag, and skip the counting\nif it is set.  Use this flag bit in ipv6 when adding routing table\nentries.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1f37070d3ff325827c6213e51b57f21fd5ac9d05",
      "tree": "ac0d1bc0a5e2cdaaeedb72b2ba049141ea16121c",
      "parents": [
        "5d8bee676fc9fc9389302baa9ba47bc2ed885f64"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue May 24 13:50:52 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 24 13:50:52 2011 -0400"
      },
      "message": "dst: catch uninitialized metrics\n\nCatch cases where dst_metric_set() and other functions are called\nbut _metrics is NULL.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6882f933ccee5c3a86443ffc7621ce888b93ab6b",
      "tree": "07998f54bd459c5345491fbaeae03bd60540c6e8",
      "parents": [
        "12f4d0a8770ab26639091d0b2509b19681daad69"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 18 18:23:21 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 18 18:23:21 2011 -0400"
      },
      "message": "ipv4: Kill RT_CACHE_DEBUG\n\nIt\u0027s way past it\u0027s usefulness.  And this gets rid of a bunch\nof stray -\u003ert_{dst,src} references.\n\nEven the comment documenting the macro was inaccurate (stated\ndefault was 1 when it\u0027s 0).\n\nIf reintroduced, it should be done properly, with dynamic debug\nfacilities.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5c1e6aa300a7a669dc469d2dcb20172c6bd8fed9",
      "tree": "61796a49f8b9236eee4730ff8142e79bd43f0f51",
      "parents": [
        "778865a550e7958c1211242cc481f48d46de0f04"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 28 14:13:38 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 28 22:25:59 2011 -0700"
      },
      "message": "net: Make dst_alloc() take more explicit initializations.\n\nNow the dst-\u003edev, dev-\u003eobsolete, and dst-\u003eflags values can\nbe specified as well.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2a9e9507011440a57d6356ded630ba0c0f5d4b77",
      "tree": "0c6c99b350f69f82ca9a2f602b075f1126d5b2b2",
      "parents": [
        "b71d1d426d263b0b6cb5760322efebbfc89d4463"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 24 10:54:56 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 24 10:54:56 2011 -0700"
      },
      "message": "net: Remove __KERNEL__ cpp checks from include/net\n\nThese header files are never installed to user consumption, so any\n__KERNEL__ cpp checks are superfluous.\n\nProjects should also not copy these files into their userland utility\nsources and try to use them there.  If they insist on doing so, the\nonus is on them to sanitize the headers as needed.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e433430a0ca9cc1b851a83ac3b305e955b64880a",
      "tree": "129e0c5db7e5643352ac55a920b5d6c5ef65fb66",
      "parents": [
        "3bc07321ccc236f693ce1b6a8786f0a2e38bb87e"
      ],
      "author": {
        "name": "Steffen Klassert",
        "email": "steffen.klassert@secunet.com",
        "time": "Tue Mar 15 21:09:32 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Mar 27 17:55:01 2011 -0700"
      },
      "message": "dst: Clone child entry in skb_dst_pop\n\nWe clone the child entry in skb_dst_pop before we call\nskb_dst_drop(). Otherwise we might kill the child right\nbefore we return it to the caller.\n\nSigned-off-by: Steffen Klassert \u003csteffen.klassert@secunet.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "452edd598f60522c11f7f88fdbab27eb36509d1a",
      "tree": "df1510e9848e591a412c8bfa724253470c48c4c2",
      "parents": [
        "3872b284087081ee5cb0e4630954c2f7a2153cf5"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 02 13:27:41 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 02 13:27:41 2011 -0800"
      },
      "message": "xfrm: Return dst directly from xfrm_lookup()\n\nInstead of on the stack.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2774c131b1d19920b4587db1cfbd6f0750ad1f15",
      "tree": "3a0482c727cf4dcc046a211214f12459dcba8271",
      "parents": [
        "69ead7afdf6028184f713a77376ee26f8aaafdcd"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:59:04 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:59:04 2011 -0800"
      },
      "message": "xfrm: Handle blackhole route creation via afinfo.\n\nThat way we don\u0027t have to potentially do this in every xfrm_lookup()\ncaller.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "80c0bc9e37adfc892af82cb6aa8cace79f8a96cb",
      "tree": "0f4abc233d9661e85c7c7ecb064a75a8f0984f1f",
      "parents": [
        "a1414715f0ac905fb4b3a158ff6548d37bbe6165"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:36:37 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:36:37 2011 -0800"
      },
      "message": "xfrm: Kill XFRM_LOOKUP_WAIT flag.\n\nThis can be determined from the flow flags instead.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dee9f4bceb5fd9dbfcc1567148fccdbf16d6a38a",
      "tree": "4b88bec4650dbc539594ae5027d7a1e34c196c88",
      "parents": [
        "4ca2e685114c55e6777022a46849795d2aa1d31a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 22 18:44:31 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 22 18:44:31 2011 -0800"
      },
      "message": "net: Make flow cache paths use a const struct flowi.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3c7bd1a14071b99d6535b710bc998ae5d3abbb66",
      "tree": "05f31758aa4d6b49b70a4af4a8df4a83588610c2",
      "parents": [
        "0c4dcd58fd69aded93b0dc6917cd88b262c8aa3f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 16 14:08:44 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 17 15:44:00 2011 -0800"
      },
      "message": "net: Add initial_ref arg to dst_alloc().\n\nThis allows avoiding multiple writes to the initial __refcnt.\n\nThe most simplest cases of wanting an initial reference of \"1\"\nin ipv4 and ipv6 have been converted, the rest have been left\nalong and kept at the existing \"0\".\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e7b66bdc02592f5573ade667e4d68ac6e7b0f9e1",
      "tree": "66008bbdacf067c8dfc63619656c554de8dd7cec",
      "parents": [
        "fa9921e46fd52b78070dc67ce0d27ec301a90410"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 08 15:33:22 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 08 15:33:22 2011 -0800"
      },
      "message": "net: Remove bogus barrier() in dst_allfrag().\n\nI simply missed this one when modifying the other dst\nmetric interfaces earlier.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "92d8682926342d2b6aa5b2ecc02221e00e1573a0",
      "tree": "7f70b9cc2975716ab60ddd632b9fecf0a51b828d",
      "parents": [
        "0131ba451e20239c5dc701027c1a2edef95e1a6e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 04 15:55:25 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 04 15:59:53 2011 -0800"
      },
      "message": "inetpeer: Move ICMP rate limiting state into inet_peer entries.\n\nLike metrics, the ICMP rate limiting bits are cached state about\na destination.  So move it into the inet_peer entries.\n\nIf an inet_peer cannot be bound (the reason is memory allocation\nfailure or similar), the policy is to allow.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "725d1e1b457dc2bbebb337677e73efe7c6d14da5",
      "tree": "b001a08feeff741963d8232ecb26e5c1a75efb92",
      "parents": [
        "9c150e82ac50a611237bbebd508d17f6347d577c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jan 28 14:05:05 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jan 28 14:05:05 2011 -0800"
      },
      "message": "ipv4: Attach FIB info to dst_default_metrics when possible\n\nIf there are no explicit metrics attached to a route, hook\nfi-\u003efib_info up to dst_default_metrics.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "62fa8a846d7de4b299232e330c74b7783539df76",
      "tree": "e401dbdbf4b11cbd27bdc3a47d9dc8b512173c9f",
      "parents": [
        "b4e69ac670d71b5748dc81e536b2cb103489badd"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 26 20:51:05 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 26 20:51:05 2011 -0800"
      },
      "message": "net: Implement read-only protection and COW\u0027ing of metrics.\n\nRouting metrics are now copy-on-write.\n\nInitially a route entry points it\u0027s metrics at a read-only location.\nIf a routing table entry exists, it will point there.  Else it will\npoint at the all zero metric place-holder called \u0027dst_default_metrics\u0027.\n\nThe writeability state of the metrics is stored in the low bits of the\nmetrics pointer, we have two bits left to spare if we want to store\nmore states.\n\nFor the initial implementation, COW is implemented simply via kmalloc.\nHowever future enhancements will change this to place the writable\nmetrics somewhere else, in order to increase sharing.  Very likely\nthis \"somewhere else\" will be the inetpeer cache.\n\nNote also that this means that metrics updates may transiently fail\nif we cannot COW the metrics successfully.\n\nBut even by itself, this patch should decrease memory usage and\nincrease cache locality especially for routing workloads.  In those\ncases the read-only metric copies stay in place and never get written\nto.\n\nTCP workloads where metrics get updated, and those rare cases where\nPMTU triggers occur, will take a very slight performance hit.  But\nthat hit will be alleviated when the long-term writable metrics\nmove to a more sharable location.\n\nSince the metrics storage went from a u32 array of RTAX_MAX entries to\nwhat is essentially a pointer, some retooling of the dst_entry layout\nwas necessary.\n\nMost importantly, we need to preserve the alignment of the reference\ncount so that it doesn\u0027t share cache lines with the read-mostly state,\nas per Eric Dumazet\u0027s alignment assertion checks.\n\nThe only non-trivial bit here is the move of the \u0027flags\u0027 member into\nthe writeable cacheline.  This is OK since we are always accessing the\nflags around the same moment when we made a modification to the\nreference count.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0134e89c7bcc9fde1da962c82a120691e185619f",
      "tree": "3e03335cf001019a2687d161e956de4f73379984",
      "parents": [
        "c7066f70d9610df0b9406cc635fc09e86136e714",
        "6faee60a4e82075853a437831768cc9e2e563e4e"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jan 14 14:12:37 2011 +0100"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jan 14 14:12:37 2011 +0100"
      },
      "message": "Merge branch \u0027master\u0027 of git://1984.lsi.us.es/net-next-2.6\n\nConflicts:\n\tnet/ipv4/route.c\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "c7066f70d9610df0b9406cc635fc09e86136e714",
      "tree": "ce98855b2c1ba2da15b7b47fc7a447d1903c4d89",
      "parents": [
        "ae90bdeaeac6b964b7a1e853a90a19f358a9ac20"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jan 14 13:36:42 2011 +0100"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jan 14 13:36:42 2011 +0100"
      },
      "message": "netfilter: fix Kconfig dependencies\n\nFix dependencies of netfilter realm match: it depends on NET_CLS_ROUTE,\nwhich itself depends on NET_SCHED; this dependency is missing from netfilter.\n\nSince matching on realms is also useful without having NET_SCHED enabled and\nthe option really only controls whether the tclassid member is included in\nroute and dst entries, rename the config option to IP_ROUTE_CLASSID and move\nit outside of traffic scheduling context to get rid of the NET_SCHED dependeny.\n\nReported-by: Vladis Kletnieks \u003cValdis.Kletnieks@vt.edu\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "d33e455337ea2c71d09d7f4367d6ad6dd32b6965",
      "tree": "d1b35b1be5ab73df6f7e57b86a2e68fad2990adf",
      "parents": [
        "9fe146aef44afe5ec677d8150b6ae94e09b773f7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 14 13:01:14 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 14 13:01:14 2010 -0800"
      },
      "message": "net: Abstract default MTU metric calculation behind an accessor.\n\nLike RTAX_ADVMSS, make the default calculation go through a dst_ops\nmethod rather than caching the computation in the routing cache\nentries.\n\nNow dst metrics are pretty much left as-is when new entries are\ncreated, thus optimizing metric sharing becomes a real possibility.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0dbaee3b37e118a96bb7b8eb0d9bbaeeb46264be",
      "tree": "37000c5d7e663e4ae9800a7bcde9934984b8bae9",
      "parents": [
        "cc6f02dd490dac4ad821d5077b934c9b37037cd0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 13 12:52:14 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 13 12:52:14 2010 -0800"
      },
      "message": "net: Abstract default ADVMSS behind an accessor.\n\nMake all RTAX_ADVMSS metric accesses go through a new helper function,\ndst_metric_advmss().\n\nLeave the actual default metric as \"zero\" in the real metric slot,\nand compute the actual default value dynamically via a new dst_ops\nAF specific callback.\n\nFor stacked IPSEC routes, we use the advmss of the path which\npreserves existing behavior.\n\nUnlike ipv4/ipv6, DecNET ties the advmss to the mtu and thus updates\nadvmss on pmtu updates.  This inconsistency in advmss handling\nresults in more raw metric accesses than I wish we ended up with.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "323e126f0c5995f779d7df7fd035f6e8fed8764d",
      "tree": "402c7267a45ae488363bb1ef8e4c786b65b82572",
      "parents": [
        "a02e4b7dae455151c423e2f69ef222c502a321fd"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 12 21:55:08 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 12 22:08:17 2010 -0800"
      },
      "message": "ipv4: Don\u0027t pre-seed hoplimit metric.\n\nAlways go through a new ip4_dst_hoplimit() helper, just like ipv6.\n\nThis allowed several simplifications:\n\n1) The interim dst_metric_hoplimit() can go as it\u0027s no longer\n   userd.\n\n2) The sysctl_ip_default_ttl entry no longer needs to use\n   ipv4_doint_and_flush, since the sysctl is not cached in\n   routing cache metrics any longer.\n\n3) ipv4_doint_and_flush no longer needs to be exported and\n   therefore can be marked static.\n\nWhen ipv4_doint_and_flush_strategy was removed some time ago,\nthe external declaration in ip.h was mistakenly left around\nso kill that off too.\n\nWe have to move the sysctl_ip_default_ttl declaration into\nipv4\u0027s route cache definition header net/route.h, because\ncurrently net/ip.h (where the declaration lives now) has\na back dependency on net/route.h\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5170ae824ddf1988a63fb12cbedcff817634c444",
      "tree": "9f1619ca6edd0e8078bfcd9d6123e119b935e43b",
      "parents": [
        "abbf46ae0e4954584eac599bec73502c1c805e9e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 12 21:35:57 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 12 21:35:57 2010 -0800"
      },
      "message": "net: Abstract RTAX_HOPLIMIT metric accesses behind helper.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "defb3519a64141608725e2dac5a5aa9a3c644bae",
      "tree": "2f44985e44aef53a0d99991b9f5c2f0eb6dbf4ad",
      "parents": [
        "84b3cdc38cd2882d7ac3c2ae4b6faf5c199874e3"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 08 21:16:57 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 09 10:46:36 2010 -0800"
      },
      "message": "net: Abstract away all dst_entry metrics accesses.\n\nUse helper functions to hide all direct accesses, especially writes,\nto dst_entry metrics values.\n\nThis will allow us to:\n\n1) More easily change how the metrics are stored.\n\n2) Implement COW for metrics.\n\nIn particular this will help us put metrics into the inetpeer\ncache if that is what we end up doing.  We can make the _metrics\nmember a pointer instead of an array, initially have it point\nat the read-only metrics in the FIB, and then on the first set\ngrab an inetpeer entry and point the _metrics member there.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\n"
    },
    {
      "commit": "fc766e4c4965915ab52a1d1fa3c7a7b3e7bc07f0",
      "tree": "d45160f52eea37d4e5149d511c3c577bef253801",
      "parents": [
        "e4a7b93bd5d84e1e79917d024d17d745d190fc9a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Oct 29 03:09:24 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 08 13:50:08 2010 -0800"
      },
      "message": "decnet: RCU conversion and get rid of dev_base_lock\n\nWhile tracking dev_base_lock users, I found decnet used it in\ndnet_select_source(), but for a wrong purpose:\n\nWriters only hold RTNL, not dev_base_lock, so readers must use RCU if\nthey cannot use RTNL.\n\nAdds an rcu_head in struct dn_ifaddr and handle proper RCU management.\n\nAdds __rcu annotation in dn_route as well.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1c31720a74e19bb57f301350a3b03210fa2ba9e3",
      "tree": "053f29ffa53383eb003ac632971f31e1643ef1d9",
      "parents": [
        "c1b60092cf307fef12f793abf7cf8167e26a6ccf"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Oct 25 21:02:07 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 27 11:37:31 2010 -0700"
      },
      "message": "ipv4: add __rcu annotations to routes.c\n\nAdd __rcu annotations to :\n        (struct dst_entry)-\u003ert_next\n        (struct rt_hash_bucket)-\u003echain\n\nAnd use appropriate rcu primitives to reduce sparse warnings if\nCONFIG_SPARSE_RCU_POINTER\u003dy\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c7d4426a98a5f6654cd0b4b33d9dab2e77192c18",
      "tree": "0db2524e6f3f742861765dd6aa696a9271767056",
      "parents": [
        "9a7241c21b06c3a3f8ebcf3e347bd68556369da7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Oct 03 22:17:54 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 03 22:17:54 2010 -0700"
      },
      "message": "net: introduce DST_NOCACHE flag\n\nWhile doing stress tests with IP route cache disabled, and multi queue\ndevices, I noticed a very high contention on one rwlock used in\nneighbour code.\n\nWhen many cpus are trying to send frames (possibly using a high\nperformance multiqueue device) to the same neighbour, they fight for the\nneigh-\u003elock rwlock in order to call neigh_hh_init(), and fight on\nhh-\u003ehh_refcnt (a pair of atomic_inc/atomic_dec_and_test())\n\nBut we dont need to call neigh_hh_init() for dst that are used only\nonce. It costs four atomic operations at least, on two contended cache\nlines, plus the high contention on neigh-\u003elock rwlock.\n\nIntroduce a new dst flag, DST_NOCACHE, that is set when dst was not\ninserted in route cache.\n\nWith the stress test bench, sending 160000000 frames on one neighbour,\nresults are :\n\nBefore patch:\n\nreal\t2m28.406s\nuser\t0m11.781s\nsys\t36m17.964s\n\n\nAfter patch:\n\nreal\t1m26.532s\nuser\t0m12.185s\nsys\t20m3.903s\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "290b895e0ba4552dfcfc4bd35759c192345b934a",
      "tree": "439ffccea9fa87b28b6af2a06e562cc5a0c01f80",
      "parents": [
        "af5ef241133b602a77b682009f112e7c3f7604e5"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Sep 27 00:33:35 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 27 21:30:42 2010 -0700"
      },
      "message": "tunnels: prepare percpu accounting\n\nTunnels are going to use percpu for their accounting.\n\nThey are going to use a new tstats field in net_device.\n\nskb_tunnel_rx() is changed to be a wrapper around __skb_tunnel_rx()\n\nIPTUNNEL_XMIT() is changed to be a wrapper around __IPTUNNEL_XMIT()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "693019e90ca45d881109d32c0c6d29adf03f6447",
      "tree": "76142f67118da6998584172d609a32d989bfccc8",
      "parents": [
        "a3d6713fbd2ccb50898a6f88664da96a7857c039"
      ],
      "author": {
        "name": "Tom Herbert",
        "email": "therbert@google.com",
        "time": "Thu Sep 23 11:19:54 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 26 18:48:40 2010 -0700"
      },
      "message": "net: reset skb queue mapping when rx\u0027ing over tunnel\n\nReset queue mapping when an skb is reentering the stack via a tunnel.\nOn second pass, the queue mapping from the original device is no\nlonger valid.\n\nSigned-off-by: Tom Herbert \u003ctherbert@google.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8764ab2ca7ab5055e1ca80f9cfa4970c34acb804",
      "tree": "ca0a6ea6c6fabbb98220f5b700981f7f23855f42",
      "parents": [
        "4f4aeb7fd0f7e6ca008bb2147ba36cee13876595"
      ],
      "author": {
        "name": "Steffen Klassert",
        "email": "steffen.klassert@secunet.com",
        "time": "Fri Jun 04 01:57:38 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 04 15:56:00 2010 -0700"
      },
      "message": "net: check for refcount if pop a stacked dst_entry\n\nxfrm triggers a warning if dst_pop() drops a refcount\non a noref dst. This patch changes dst_pop() to\nskb_dst_pop(). skb_dst_pop() drops the refcnt only\non a refcounted dst. Also we don\u0027t clone the child\ndst_entry, so it is not refcounted and we can use\nskb_dst_set_noref() in xfrm_output_one().\n\nSigned-off-by: Steffen Klassert \u003csteffen.klassert@secunet.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d19d56ddc88e7895429ef118db9c83c7bbe3ce6a",
      "tree": "c0db76f3527c88c95a8793c871f62d628fb3fd1d",
      "parents": [
        "de213e5eedecdfb1b1eea7e6be28bc64cac5c078"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 17 22:36:55 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 22:36:55 2010 -0700"
      },
      "message": "net: Introduce skb_tunnel_rx() helper\n\nskb rxhash should be cleared when a skb is handled by a tunnel before\nbeing delivered again, so that correct packet steering can take place.\n\nThere are other cleanups and accounting that we can factorize in a new\nhelper, skb_tunnel_rx()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7fee226ad2397b635e2fd565a59ca3ae08a164cd",
      "tree": "0bcd26150ad74ec1a237109de87a3d214a07fc22",
      "parents": [
        "ebda37c27d0c768947e9b058332d7ea798210cf8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue May 11 23:19:48 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:18:50 2010 -0700"
      },
      "message": "net: add a noref bit on skb dst\n\nUse low order bit of skb-\u003e_skb_dst to tell dst is not refcounted.\n\nChange _skb_dst to _skb_refdst to make sure all uses are catched.\n\nskb_dst() returns the dst, regardless of noref bit set or not, but\nwith a lockdep check to make sure a noref dst is not given if current\nuser is not rcu protected.\n\nNew skb_dst_set_noref() helper to set an notrefcounted dst on a skb.\n(with lockdep check)\n\nskb_dst_drop() drops a reference only if skb dst was refcounted.\n\nskb_dst_force() helper is used to force a refcount on dst, when skb\nis queued and not anymore RCU protected.\n\nUse skb_dst_force() in __sk_add_backlog(), __dev_xmit_skb() if\n!IFF_XMIT_DST_RELEASE or skb enqueued on qdisc queue, in\nsock_queue_rcv_skb(), in __nf_queue().\n\nUse skb_dst_force() in dev_requeue_skb().\n\nNote: dst_use_noref() still dirties dst, we might transform it\nlater to do one dirtying per jiffies.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b6c6712a42ca3f9fa7f4a3d7c40e3a9dd1fd9e03",
      "tree": "42032b4978874e8ffcf6c851d13324b8c8c7c113",
      "parents": [
        "7a161ea92471087a1579239d7a58dd06eaa5601c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 08 23:03:29 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 13 01:41:33 2010 -0700"
      },
      "message": "net: sk_dst_cache RCUification\n\nWith latest CONFIG_PROVE_RCU stuff, I felt more comfortable to make this\nwork.\n\nsk-\u003esk_dst_cache is currently protected by a rwlock (sk_dst_lock)\n\nThis rwlock is readlocked for a very small amount of time, and dst\nentries are already freed after RCU grace period. This calls for RCU\nagain :)\n\nThis patch converts sk_dst_lock to a spinlock, and use RCU for readers.\n\n__sk_dst_get() is supposed to be called with rcu_read_lock() or if\nsocket locked by user, so use appropriate rcu_dereference_check()\ncondition (rcu_read_lock_held() || sock_owned_by_user(sk))\n\nThis patch avoids two atomic ops per tx packet on UDP connected sockets,\nfor example, and permits sk_dst_lock to be much less dirtied.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "31d12926e37291970dd4f6e9940df3897766a81d",
      "tree": "7f20713b70fc2c9e03aa1f7fcf71ffa651c464fc",
      "parents": [
        "068a2de57ddf4f472e32e7af868613c574ad1d88"
      ],
      "author": {
        "name": "laurent chavey",
        "email": "chavey@google.com",
        "time": "Tue Dec 15 11:15:28 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 23 14:13:30 2009 -0800"
      },
      "message": "net: Add rtnetlink init_rcvwnd to set the TCP initial receive window\n\nAdd rtnetlink init_rcvwnd to set the TCP initial receive window size\nadvertised by passive and active TCP connections.\nThe current Linux TCP implementation limits the advertised TCP initial\nreceive window to the one prescribed by slow start. For short lived\nTCP connections used for transaction type of traffic (i.e. http\nrequests), bounding the advertised TCP initial receive window results\nin increased latency to complete the transaction.\nSupport for setting initial congestion window is already supported\nusing rtnetlink init_cwnd, but the feature is useless without the\nability to set a larger TCP initial receive window.\nThe rtnetlink init_rcvwnd allows increasing the TCP initial receive\nwindow, allowing TCP connection to advertise larger TCP receive window\nthan the ones bounded by slow start.\n\nSigned-off-by: Laurent Chavey \u003cchavey@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bb5b7c11263dbbe78253cd05945a6bf8f55add8e",
      "tree": "7a639cbd6d6ad968ca22427f2b8697aadb37a907",
      "parents": [
        "166a0fd4c788ec7f10ca8194ec6d526afa12db75"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 15 20:56:42 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 15 20:56:42 2009 -0800"
      },
      "message": "tcp: Revert per-route SACK/DSACK/TIMESTAMP changes.\n\nIt creates a regression, triggering badness for SYN_RECV\nsockets, for example:\n\n[19148.022102] Badness at net/ipv4/inet_connection_sock.c:293\n[19148.022570] NIP: c02a0914 LR: c02a0904 CTR: 00000000\n[19148.023035] REGS: eeecbd30 TRAP: 0700   Not tainted  (2.6.32)\n[19148.023496] MSR: 00029032 \u003cEE,ME,CE,IR,DR\u003e  CR: 24002442  XER: 00000000\n[19148.024012] TASK \u003d eee9a820[1756] \u0027privoxy\u0027 THREAD: eeeca000\n\nThis is likely caused by the change in the \u0027estab\u0027 parameter\npassed to tcp_parse_options() when invoked by the functions\nin net/ipv4/tcp_minisocks.c\n\nBut even if that is fixed, the -\u003econn_request() changes made in\nthis patch series is fundamentally wrong.  They try to use the\nlistening socket\u0027s \u0027dst\u0027 to probe the route settings.  The\nlistening socket doesn\u0027t even have a route, and you can\u0027t\nget the right route (the child request one) until much later\nafter we setup all of the state, and it must be done by hand.\n\nThis stuff really isn\u0027t ready, so the best thing to do is a\nfull revert.  This reverts the following commits:\n\nf55017a93f1a74d50244b1254b9a2bd7ac9bbf7d\n022c3f7d82f0f1c68018696f2f027b87b9bb45c2\n1aba721eba1d84a2defce45b950272cee1e6c72a\ncda42ebd67ee5fdf09d7057b5a4584d36fe8a335\n345cda2fd695534be5a4494f1b59da9daed33663\ndc343475ed062e13fc260acccaab91d7d80fd5b2\n05eaade2782fb0c90d3034fd7a7d5a16266182bb\n6a2a2d6bf8581216e08be15fcb563cfd6c430e1e\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6a2a2d6bf8581216e08be15fcb563cfd6c430e1e",
      "tree": "001dd331cb0ef37fbb0e84bb557aaee9e22d8fc3",
      "parents": [
        "05eaade2782fb0c90d3034fd7a7d5a16266182bb"
      ],
      "author": {
        "name": "Gilad Ben-Yossef",
        "email": "gilad@codefidence.com",
        "time": "Wed Nov 04 23:23:10 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 04 23:24:15 2009 -0800"
      },
      "message": "tcp: Use defaults when no route options are available\n\nTrying to parse the option of a SYN packet that we have\nno route entry for should just use global wide defaults\nfor route entry options.\n\nSigned-off-by: Gilad Ben-Yossef \u003cgilad@codefidence.com\u003e\nTested-by: Valdis.Kletnieks@vt.edu\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fd2c3ef761fbc5e6c27fa7d40b30cda06bfcd7d8",
      "tree": "25922196160e9d5be8aa2a473ce981756926390f",
      "parents": [
        "4b7673a04a16f1d8faf1e367ae28a6ee1671843d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Nov 03 03:26:03 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 04 05:06:25 2009 -0800"
      },
      "message": "net: cleanup include/net\n\nThis cleanup patch puts struct/union/enum opening braces,\nin first line to ease grep games.\n\nstruct something\n{\n\nbecomes :\n\nstruct something {\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0c3adfb8ec9f85a63556b70f11e0fcf280545951",
      "tree": "20e23bfa4fb94e7eb9f8e4128e493eaf83b2dbd0",
      "parents": [
        "022c3f7d82f0f1c68018696f2f027b87b9bb45c2"
      ],
      "author": {
        "name": "Gilad Ben-Yossef",
        "email": "gilad@codefidence.com",
        "time": "Wed Oct 28 04:15:23 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 29 01:28:42 2009 -0700"
      },
      "message": "Add dst_feature to query route entry features\n\nAdding an accessor to existing  dst_entry feautres field and\nrefactor the only supported feature (allfrag) to use it.\n\nSigned-off-by: Gilad Ben-Yossef \u003cgilad@codefidence.com\u003e\nSigend-off-by: Ori Finkelman \u003cori@comsleep.com\u003e\nSigend-off-by: Yony Amit \u003cyony@comsleep.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ea94ff3b55188df157a8740bdf3976a87563d705",
      "tree": "a124cd047f8ed18c27aace29eafd2b343575857a",
      "parents": [
        "f04c8276248d3dd3e15a9a72f9711ba5e4069049"
      ],
      "author": {
        "name": "Krishna Kumar",
        "email": "krkumar2@in.ibm.com",
        "time": "Mon Oct 19 23:46:45 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 20 18:55:46 2009 -0700"
      },
      "message": "net: Fix for dst_negative_advice\n\ndst_negative_advice() should check for changed dst and reset\nsk_tx_queue_mapping accordingly. Pass sock to the callers of\ndst_negative_advice.\n\n(sk_reset_txq is defined just for use by dst_negative_advice. The\nonly way I could find to get around this is to move dst_negative_()\nfrom dst.h to dst.c, include sock.h in dst.c, etc)\n\nSigned-off-by: Krishna Kumar \u003ckrkumar2@in.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "86393e52c3f1e2f6be18383f6ecdbcdc5727d545",
      "tree": "f5c688c0cb5292143478249f807c4b2372f69dfd",
      "parents": [
        "885a136c52a8871175477baf3903e1c38751b35a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Aug 29 01:34:49 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 01 17:40:31 2009 -0700"
      },
      "message": "netns: embed ip6_dst_ops directly\n\nstruct net::ipv6.ip6_dst_ops is separatedly dynamically allocated,\nbut there is no fundamental reason for it. Embed it directly into\nstruct netns_ipv6.\n\nFor that:\n* move struct dst_ops into separate header to fix circular dependencies\n\tI honestly tried not to, it\u0027s pretty impossible to do other way\n* drop dynamical allocation, allocate together with netns\n\nFor a change, remove struct dst_ops::dst_net, it\u0027s deducible\nby using container_of() given dst_ops pointer.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "adf30907d63893e4208dfe3f5c88ae12bc2f25d5",
      "tree": "0f07542bb95de2ad537540868aba6cf87a86e17d",
      "parents": [
        "511c3f92ad5b6d9f8f6464be1b4f85f0422be91a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 02 05:19:30 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 03 02:51:04 2009 -0700"
      },
      "message": "net: skb-\u003edst accessors\n\nDefine three accessors to get/set dst attached to a skb\n\nstruct dst_entry *skb_dst(const struct sk_buff *skb)\n\nvoid skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)\n\nvoid skb_dst_drop(struct sk_buff *skb)\nThis one should replace occurrences of :\ndst_release(skb-\u003edst)\nskb-\u003edst \u003d NULL;\n\nDelete skb-\u003edst field\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "52479b623d3d41df84c499325b6a8c7915413032",
      "tree": "196f303f296b53dc89a05954d9c03226a9b4158b",
      "parents": [
        "cdcbca7c1f1946758cfacb69bc1c7eeaccb11e2d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Nov 25 17:35:18 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 17:35:18 2008 -0800"
      },
      "message": "netns xfrm: lookup in netns\n\nPass netns to xfrm_lookup()/__xfrm_lookup(). For that pass netns\nto flow_cache_lookup() and resolver callback.\n\nTake it from socket or netdevice. Stub DECnet to init_net.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5635c10d976716ef47ae441998aeae144c7e7387",
      "tree": "03cb08b634fba283bbde42ea290c92048045d2fd",
      "parents": [
        "536533e69e3e4a9f0174509813f8df28970d6ebe"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Nov 16 19:46:36 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 19:46:36 2008 -0800"
      },
      "message": "net: make sure struct dst_entry refcount is aligned on 64 bytes\n\nAs found in the past (commit f1dd9c379cac7d5a76259e7dffcd5f8edc697d17\n[NET]: Fix tbench regression in 2.6.25-rc1), it is really\nimportant that struct dst_entry refcount is aligned on a cache line.\n\nWe cannot use __atribute((aligned)), so manually pad the structure\nfor 32 and 64 bit arches.\n\nfor 32bit : offsetof(truct dst_entry, __refcnt) is 0x80\nfor 64bit : offsetof(truct dst_entry, __refcnt) is 0xc0\n\nAs it is not possible to guess at compile time cache line size,\nwe use a generic value of 64 bytes, that satisfies many current arches.\n(Using 128 bytes alignment on 64bit arches would waste 64 bytes)\n\nAdd a BUILD_BUG_ON to catch future updates to \"struct dst_entry\" dont\nbreak this alignment.\n\n\"tbench 8\" is 4.4 % faster on a dual quad core (HP BL460c G1), Intel E5450 @3.00GHz\n(2350 MB/s instead of 2250 MB/s)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6bb3ce25d05f2990c8a19adaf427531430267c1f",
      "tree": "38c19e4776b36163b9d100258139d58287475f6b",
      "parents": [
        "9b739ba5e66c96938fbc07a4dbd9da5b81eac56f"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Nov 11 17:25:22 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 11 17:25:22 2008 -0800"
      },
      "message": "net: remove struct dst_entry::entry_size\n\nUnused after kmem_cache_zalloc() conversion.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "def8b4faff5ca349beafbbfeb2c51f3602a6ef3a",
      "tree": "a90fbb0b6ae2a49c507465801f31df77bc5ebf9d",
      "parents": [
        "b057efd4d226fcc3a92b0dc6d8ea8e8185ecb260"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Oct 28 13:24:06 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 28 13:24:06 2008 -0700"
      },
      "message": "net: reduce structures when XFRM\u003dn\n\nifdef out\n* struct sk_buff::sp\t\t(pointer)\n* struct dst_entry::xfrm\t(pointer)\n* struct sock::sk_policy\t(2 pointers)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cc6533e98a7f3cb7fce9d740da49195c7aa523a4",
      "tree": "23b1a33c9c6894f799808e7dcbcf3afeb1d71192",
      "parents": [
        "c27f339af90bb874a7a9c680b17abfd32d4a727b"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 04 23:04:08 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 04 23:04:08 2008 -0700"
      },
      "message": "net: Kill plain NET_XMIT_BYPASS.\n\ndst_input() was doing something completely absurd, looping\non skb-\u003edst-\u003einput() if NET_XMIT_BYPASS was seen, but these\nfunctions never return such an error.\n\nAnd as a result plain ole\u0027 NET_XMIT_BYPASS has no more\nreferences and can be completely killed off.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c1e20f7c8b9ccbafc9ea78f2b406738728ce6b81",
      "tree": "807dacbfdc6ebfde27ba4d4f46dd1572c4a07cde",
      "parents": [
        "30ee42be00b7a50929a73cb617f70b1d3219eb69"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jul 18 23:02:15 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:02:15 2008 -0700"
      },
      "message": "tcp: RTT metrics scaling\n\nSome of the metrics (RTT, RTTVAR and RTAX_RTO_MIN) are stored in\nkernel units (jiffies) and this leaks out through the netlink API to\nuser space where the units for jiffies are unknown.\n\nThis patches changes the kernel to convert to/from milliseconds. This\nchanges the ABI, but milliseconds seemed like the most natural unit\nfor these parameters.  Values available via syscall in\n/proc/net/rt_cache and netlink will be in milliseconds.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8d3308687f7f1eaa1bb5d202d14752d5f90068eb",
      "tree": "fa32a8ac2818950bbe7ab1e5f1e3a2ab4970b9b5",
      "parents": [
        "c2aa270ad73d385bd6cdebf5d741bdf18a3e17ad"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Mar 27 17:53:31 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 27 17:53:31 2008 -0700"
      },
      "message": "[NET]: uninline dst_release\n\nCodiff stats (allyesconfig, v2.6.24-mm1):\n-16420  187 funcs, 103 +, 16523 -, diff: -16420 --- dst_release\n\nWithout number of debug related CONFIGs (v2.6.25-rc2-mm1):\n-7257  186 funcs, 70 +, 7327 -, diff: -7257 --- dst_release\ndst_release                   |  +40\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f1dd9c379cac7d5a76259e7dffcd5f8edc697d17",
      "tree": "ea1870f5720d842ae8968922226a424f3cb28726",
      "parents": [
        "22626216c46f2ec86287e75ea86dd9ac3df54265"
      ],
      "author": {
        "name": "Zhang Yanmin",
        "email": "yanmin.zhang@intel.com",
        "time": "Wed Mar 12 22:52:37 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 12 22:52:37 2008 -0700"
      },
      "message": "[NET]: Fix tbench regression in 2.6.25-rc1\n\nComparing with kernel 2.6.24, tbench result has regression with\n2.6.25-rc1.\n\n1) On 2 quad-core processor stoakley: 4%.\n2) On 4 quad-core processor tigerton: more than 30%.\n\nbisect located below patch.\n\nb4ce92775c2e7ff9cf79cca4e0a19c8c5fd6287b is first bad commit\ncommit b4ce92775c2e7ff9cf79cca4e0a19c8c5fd6287b\nAuthor: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nDate:   Tue Nov 13 21:33:32 2007 -0800\n\n    [IPV6]: Move nfheader_len into rt6_info\n\n    The dst member nfheader_len is only used by IPv6.  It\u0027s also currently\n    creating a rather ugly alignment hole in struct dst.  Therefore this patch\n    moves it from there into struct rt6_info.\n\nAbove patch changes the cache line alignment, especially member\n__refcnt. I did a testing by adding 2 unsigned long pading before\nlastuse, so the 3 members, lastuse/__refcnt/__use, are moved to next\ncache line. The performance is recovered.\n\nI created a patch to rearrange the members in struct dst_entry.\n\nWith Eric and Valdis Kletnieks\u0027s suggestion, I made finer arrangement.\n\n1) Move tclassid under ops in case CONFIG_NET_CLS_ROUTE\u003dy. So\n   sizeof(dst_entry)\u003d200 no matter if CONFIG_NET_CLS_ROUTE\u003dy/n. I\n   tested many patches on my 16-core tigerton by moving tclassid to\n   different place. It looks like tclassid could also have impact on\n   performance.  If moving tclassid before metrics, or just don\u0027t move\n   tclassid, the performance isn\u0027t good. So I move it behind metrics.\n\n2) Add comments before __refcnt.\n\nOn 16-core tigerton:\n\nIf CONFIG_NET_CLS_ROUTE\u003dy, the result with below patch is about 18%\nbetter than the one without the patch;\n\nIf CONFIG_NET_CLS_ROUTE\u003dn, the result with below patch is about 30%\nbetter than the one without the patch.\n\nWith 32bit 2.6.25-rc1 on 8-core stoakley, the new patch doesn\u0027t\nintroduce regression.\n\nThank Eric, Valdis, and David!\n\nSigned-off-by: Zhang Yanmin \u003cyanmin.zhang@intel.com\u003e\nAcked-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "69a73829dbb10e7c8554e66a80cb4fde57347fff",
      "tree": "032f67850cd73fc71b573f2a155a5037bde53f71",
      "parents": [
        "81566e8322c3f6c6f9a2277fe0e440fee8d917bd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Jan 22 06:18:34 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:10:41 2008 -0800"
      },
      "message": "[DST]: shrinks sizeof(struct rtable) by 64 bytes on x86_64\n\nOn x86_64, sizeof(struct rtable) is 0x148, which is rounded up to\n0x180 bytes by SLAB allocator.\n\nWe can reduce this to exactly 0x140 bytes, without alignment overhead,\nand store 12 struct rtable per PAGE instead of 10.\n\nrate_tokens is currently defined as an \"unsigned long\", while its\ncontent should not exceed 6*HZ. It can safely be converted to an\nunsigned int.\n\nMoving tclassid right after rate_tokens to fill the 4 bytes hole\npermits to save 8 bytes on \u0027struct dst_entry\u0027, which finally permits\nto save 8 bytes on \u0027struct rtable\u0027\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d4fa26ff44e31c2636a985e3092e2cd55d8045de",
      "tree": "303b9cc2a871ba04fc3abadfb5c1c9831c8a6eb5",
      "parents": [
        "569d36452ee26c08523cc9f658901c5188640853"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "dlezcano@fr.ibm.com",
        "time": "Fri Jan 18 03:58:07 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:02:47 2008 -0800"
      },
      "message": "[NETNS][DST]: Add the network namespace pointer in dst_ops\n\nThe network namespace pointer can be stored into the dst_ops structure.\nThis is usefull when there are multiple instances of the dst_ops for a\nprotocol. When there are no several instances, this field will be never\nused in the protocol. So there is no impact for the protocols which do\nimplement the network namespaces.\n\nSigned-off-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "569d36452ee26c08523cc9f658901c5188640853",
      "tree": "f296ea41b92f655031f9345d3febd8319e5a06ee",
      "parents": [
        "a6501e080c318f8d4467679d17807f42b3a33cd5"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "dlezcano@fr.ibm.com",
        "time": "Fri Jan 18 03:56:57 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:02:46 2008 -0800"
      },
      "message": "[NETNS][DST] dst: pass the dst_ops as parameter to the gc functions\n\nThe garbage collection function receive the dst_ops structure as\nparameter. This is useful for the next incoming patchset because it\nwill need the dst_ops (there will be several instances) and the\nnetwork namespace pointer (contained in the dst_ops).\n\nThe protocols which do not take care of the namespaces will not be\nimpacted by this change (expect for the function signature), they do\njust ignore the parameter.\n\nSigned-off-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3becd578c5c9aafde6f562bb1dfe20d420bce6e8",
      "tree": "0aa9bfc0b2804f93d89543ba621fa913f2849c26",
      "parents": [
        "64c31b3f76482bb64459e786f9eca3bd0164d153"
      ],
      "author": {
        "name": "Rami Rosen",
        "email": "ramirose@gmail.com",
        "time": "Mon Jan 07 22:36:54 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:00:47 2008 -0800"
      },
      "message": "[NET]: Remove unused member of dst_entry\n\nThe info placeholder member of dst_entry seems to be unused in the\nnetwork stack.\n\nSigned-off-by: Rami Rosen \u003cramirose@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8b7817f3a959ed99d7443afc12f78a7e1fcc2063",
      "tree": "7e315dfbf5c77e67f6e7ad56f14eaddca621212b",
      "parents": [
        "d5422efe680fc55010c6ddca2370ca9548a96355"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Dec 12 10:44:43 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:23 2008 -0800"
      },
      "message": "[IPSEC]: Add ICMP host relookup support\n\nRFC 4301 requires us to relookup ICMP traffic that does not match any\npolicies using the reverse of its payload.  This patch implements this\nfor ICMP traffic that originates from or terminates on localhost.\n\nThis is activated on outbound with the new policy flag XFRM_POLICY_ICMP,\nand on inbound by the new state flag XFRM_STATE_ICMP.\n\nOn inbound the policy check is now performed by the ICMP protocol so\nthat it can repeat the policy check where necessary.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "815f4e57e9fc67456624ecde0515a901368c78d2",
      "tree": "a93d4c3922d9711a6d29d909c8d79694c931e2a4",
      "parents": [
        "3f71c81ac37b27b824e9ce18fe17438dc2af4a16"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Dec 12 10:36:59 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:21 2008 -0800"
      },
      "message": "[IPSEC]: Make xfrm_lookup flags argument a bit-field\n\nThis patch introduces an enum for bits in the flags argument of xfrm_lookup.\nThis is so that we can cram more information into it later.\n\nSince all current users use just the values 0 and 1, XFRM_LOOKUP_WAIT has\nbeen added with the value 1 \u003c\u003c 0 to represent the current meaning of flags.\n\nThe test in __xfrm_lookup has been changed accordingly.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "862b82c6f960cc61274d370aa78ce1112f92a83e",
      "tree": "51e252e1525dd7d02a695d428890a4c37fae2442",
      "parents": [
        "ef76bc23ef2acf20c8f7f841a542d8ab74c827c6"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Nov 13 21:43:11 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:53:48 2008 -0800"
      },
      "message": "[IPSEC]: Merge most of the output path\n\nAs part of the work on asynchrnous cryptographic operations, we need\nto be able to resume from the spot where they occur.  As such, it\nhelps if we isolate them to one spot.\n\nThis patch moves most of the remaining family-specific processing into\nthe common output code.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "352e512c32b634768303a43768245a0363cebbe7",
      "tree": "97509ac130ecbe2084808271ccc459918a9d5fc1",
      "parents": [
        "b4ce92775c2e7ff9cf79cca4e0a19c8c5fd6287b"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Nov 13 21:34:06 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:53:37 2008 -0800"
      },
      "message": "[NET]: Eliminate duplicate copies of dst_discard\n\nWe have a number of copies of dst_discard scattered around the place\nwhich all do the same thing, namely free a packet on the input or\noutput paths.\n\nThis patch deletes all of them except dst_discard and points all the\nusers to it.\n\nThe only non-trivial bit is decnet where it returns an error.\nHowever, conceptually this is identical to the blackhole functions\nused in IPv4 and IPv6 which do not return errors.  So they should\neither all return errors or all return zero.  For now I\u0027ve stuck with\nthe majority and picked zero as the return value.\n\nIt doesn\u0027t really matter in practice since few if any driver would\nreact differently depending on a zero return value or NET_RX_DROP.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b4ce92775c2e7ff9cf79cca4e0a19c8c5fd6287b",
      "tree": "c057ff62b03582493b74005f7959a0207e748468",
      "parents": [
        "550ade8432a2a6fbfb48ba7018750b0e8c81e8d0"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Nov 13 21:33:32 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:53:37 2008 -0800"
      },
      "message": "[IPV6]: Move nfheader_len into rt6_info\n\nThe dst member nfheader_len is only used by IPv6.  It\u0027s also currently\ncreating a rather ugly alignment hole in struct dst.  Therefore this patch\nmoves it from there into struct rt6_info.\n\nIt also reorders the fields in rt6_info to minimize holes.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "03f49f345749abc08bc84b835433c94eea6e972b",
      "tree": "8fad6fef152adaa473e2ab3a824cb04fe98b3bf1",
      "parents": [
        "b1667609cd9a98ce32559e06f36fca54c775a51f"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Nov 10 21:28:34 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 10 21:28:34 2007 -0800"
      },
      "message": "[NET]: Make helper to get dst entry and \"use\" it\n\nThere are many places that get the dst entry, increase the\n__use counter and set the \"lastuse\" time stamp.\n\nMake a helper for this.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e06e7c615877026544ad7f8b309d1a3706410383",
      "tree": "eb087b49279e6db492039a5d684ca9acb13265a3",
      "parents": [
        "4eb6bf6bfb580afaf1e1a1d30cba17a078530cf4"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sun Jun 10 17:22:39 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jul 10 22:05:57 2007 -0700"
      },
      "message": "[IPV4]: The scheduled removal of multipath cached routing support.\n\nWith help from Chris Wedgwood.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "14e50e57aedb2a89cf79b77782879769794cab7b",
      "tree": "46cbdab9c8007cea0821294c9d397214b38ea4c8",
      "parents": [
        "04efb8787e4d8a7b21a61aeb723de33154311256"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu May 24 18:17:54 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu May 24 18:17:54 2007 -0700"
      },
      "message": "[XFRM]: Allow packet drops during larval state resolution.\n\nThe current IPSEC rule resolution behavior we have does not work for a\nlot of people, even though technically it\u0027s an improvement from the\n-EAGAIN buisness we had before.\n\nRight now we\u0027ll block until the key manager resolves the route.  That\nworks for simple cases, but many folks would rather packets get\nsilently dropped until the key manager resolves the IPSEC rules.\n\nWe can\u0027t tell these folks to \"set the socket non-blocking\" because\nthey don\u0027t have control over the non-block setting of things like the\nsockets used to resolve DNS deep inside of the resolver libraries in\nlibc.\n\nWith that in mind I coded up the patch below with some help from\nHerbert Xu which provides packet-drop behavior during larval state\nresolution, controllable via sysctl and off by default.\n\nThis lays the framework to either:\n\n1) Make this default at some point or...\n\n2) Move this logic into xfrm{4,6}_policy.c and implement the\n   ARP-like resolution queue we\u0027ve all been dreaming of.\n   The idea would be to queue packets to the policy, then\n   once the larval state is resolved by the key manager we\n   re-resolve the route and push the packets out.  The\n   packets would timeout if the rule didn\u0027t get resolved\n   in a certain amount of time.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1e19e02ca0c5e33ea73a25127dbe6c3b8fcaac4b",
      "tree": "23afba2945a9e09b137b094a868ea176c1e1c800",
      "parents": [
        "0c195c3fc4e95a06b0c0017506f074c94af99c35"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Fri Feb 09 16:26:55 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Feb 10 23:20:45 2007 -0800"
      },
      "message": "[NET]: Reorder fields of struct dst_entry\n\nThis last patch (but not least :) ) finally moves the next pointer at\nthe end of struct dst_entry. This permits to perform route cache\nlookups with a minimal cost of one cache line per entry, instead of\ntwo.\n\nBoth 32bits and 64bits platforms benefit from this new layout.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "75ce7ceaa1221858c0163e75d19eb8a423a212ff",
      "tree": "8314e9997683d74767f6c1290bc946fb4cde424c",
      "parents": [
        "f7b14315faf62935a791dd67969c4289563058f0"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Fri Feb 09 16:14:24 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Feb 10 23:20:36 2007 -0800"
      },
      "message": "[NET]: Introduce union in struct dst_entry to hold \u0027next\u0027 pointer\n\nThis patch introduces an anonymous union to nicely express the fact that all\nobjects inherited from struct dst_entry should access to the generic \u0027next\u0027\npointer but with appropriate type verification.\n\nThis patch is a prereq before following patches.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d77072ecfb6d28287d5e2a61d60d87a3a444ac97",
      "tree": "459319535a67ecca3f615dd8aefc36f2b56a7f49",
      "parents": [
        "75b31c33512f46bf650f4652272d8bef39881890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Sep 28 14:20:34 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 28 18:02:58 2006 -0700"
      },
      "message": "[NET]: Annotate dst_ops protocol\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1b5c229987dc4d0c92a38fac0cde2aeec08cd775",
      "tree": "5726243af6aa7194f1ed65e0340539e1ee5c6a42",
      "parents": [
        "99505a843673faeae962a8cde128c7c034ba6b5e"
      ],
      "author": {
        "name": "Masahide NAKAMURA",
        "email": "nakam@linux-ipv6.org",
        "time": "Wed Aug 23 18:11:50 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Fri Sep 22 15:06:41 2006 -0700"
      },
      "message": "[XFRM] STATE: Support non-fragment outbound transformation headers.\n\nFor originated outbound IPv6 packets which will fragment, ip6_append_data()\nshould know length of extension headers before sending them and\nthe length is carried by dst_entry.\nIPv6 IPsec headers fragment then transformation was\ndesigned to place all headers after fragment header.\nOTOH Mobile IPv6 extension headers do not fragment then\nit is a good idea to make dst_entry have non-fragment length to tell it\nto ip6_append_data().\n\nSigned-off-by: Masahide NAKAMURA \u003cnakam@linux-ipv6.org\u003e\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "62c4f0a2d5a188f73a94f2cb8ea0dba3e7cf0a7f",
      "tree": "e85ca2d0dd43f90dccf758338764c3caa55f333f",
      "parents": [
        "089f26d5e31b7bf42a9a8fefec08b30cd27f4b0e"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "message": "Don\u0027t include linux/config.h from anywhere else in include/\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n"
    },
    {
      "commit": "16a6677fdf1d1194f688f8291b06fbaff248c353",
      "tree": "61badedc44ed88eb8f39e082d1abf114252cc686",
      "parents": [
        "ee2e6841b934d76cb944a3390bbea84da777d4fa"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jan 06 23:01:48 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Jan 07 12:57:28 2006 -0800"
      },
      "message": "[XFRM]: Netfilter IPsec output hooks\n\nCall netfilter hooks before IPsec transforms. Packets visit the\nFORWARD/LOCAL_OUT and POST_ROUTING hook before the first encapsulation\nand the LOCAL_OUT and POST_ROUTING hook before each following tunnel mode\ntransform.\n\nPatch from Herbert Xu \u003cherbert@gondor.apana.org.au\u003e:\n\nMove the loop from dst_output into xfrm4_output/xfrm6_output since they\u0027re\nthe only ones who need to it. xfrm{4,6}_output_one() processes the first SA\nall subsequent transport mode SAs and is called in a loop that calls the\nnetfilter hooks between each two calls.\n\nIn order to avoid the tail call issue, I\u0027ve added the inline function\nnf_hook which is nf_hook_slow plus the empty list check.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "14c850212ed8f8cbb5972ad6b8812e08a0bc901c",
      "tree": "53c88f03e7bbac4064f6e80d462ad484ee038326",
      "parents": [
        "25995ff577675b58dbd848b7758e7bad87411947"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Dec 27 02:43:12 2005 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jan 03 13:11:21 2006 -0800"
      },
      "message": "[INET_SOCK]: Move struct inet_sock \u0026 helper functions to net/inet_sock.h\n\nTo help in reducing the number of include dependencies, several files were\ntouched as they were getting needed headers indirectly for stuff they use.\n\nThanks also to Alan Menegotto for pointing out that net/dccp/proto.c had\nlinux/dccp.h include twice.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "80b30c1023dbd795faf948dee0cfb3b270b56d47",
      "tree": "18a6c4d4647e6b52ea9b53e1f938b5e7f7e97f8f",
      "parents": [
        "1371e37da299d4df6267ad0ddf010435782c28e9"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Sat Oct 15 10:58:30 2005 +1000"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Wed Oct 26 00:48:45 2005 -0200"
      },
      "message": "[IPSEC]: Kill obsolete get_mss function\n\nNow that we\u0027ve switched over to storing MTUs in the xfrm_dst entries,\nwe no longer need the dst\u0027s get_mss methods.  This patch gets rid of\nthem.\n\nIt also documents the fact that our MTU calculation is not optimal\nfor ESP.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "c4d541106bc5d0a2134aaf9e8735eee3c70b0db2",
      "tree": "bff220245285154b45094d89e8b75f94d61d502b",
      "parents": [
        "561bbe3235da614562fb26bb14042af684971a2d"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Apr 19 20:46:37 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@nuts.(none)",
        "time": "Tue Apr 19 20:46:37 2005 -0700"
      },
      "message": "[NET]: Shave sizeof(ptr) bytes off dst_entry\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
