)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
