)]}'
{
  "commit": "3b098e2d7c693796cc4dffb07caa249fc0f70771",
  "tree": "586c4f5dc57988ade175ffc7e4b6d0261b12e166",
  "parents": [
    "a1aa3483041bd3691c7f029272ccef4ce70bd957"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "eric.dumazet@gmail.com",
    "time": "Sat May 15 23:57:10 2010 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Sat May 15 23:57:10 2010 -0700"
  },
  "message": "net: Consistent skb timestamping\n\nWith RPS inclusion, skb timestamping is not consistent in RX path.\n\nIf netif_receive_skb() is used, its deferred after RPS dispatch.\n\nIf netif_rx() is used, its done before RPS dispatch.\n\nThis can give strange tcpdump timestamps results.\n\nI think timestamping should be done as soon as possible in the receive\npath, to get meaningful values (ie timestamps taken at the time packet\nwas delivered by NIC driver to our stack), even if NAPI already can\ndefer timestamping a bit (RPS can help to reduce the gap)\n\nTom Herbert prefer to sample timestamps after RPS dispatch. In case\nsampling is expensive (HPET/acpi_pm on x86), this makes sense.\n\nLet admins switch from one mode to another, using a new\nsysctl, /proc/sys/net/core/netdev_tstamp_prequeue\n\nIts default value (1), means timestamps are taken as soon as possible,\nbefore backlog queueing, giving accurate timestamps.\n\nSetting a 0 value permits to sample timestamps when processing backlog,\nafter RPS dispatch, to lower the load of the pre-RPS cpu.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "df38ef046f8d1372ef2ff0d45debb7b15c04f64c",
      "old_mode": 33188,
      "old_path": "Documentation/sysctl/net.txt",
      "new_id": "cbd05ffc606baa1ca06c59ca0c2ab19cac6c8e62",
      "new_mode": 33188,
      "new_path": "Documentation/sysctl/net.txt"
    },
    {
      "type": "modify",
      "old_id": "69022d47d6f2ee5848af3f2211e0c3f2007633c1",
      "old_mode": 33188,
      "old_path": "include/linux/netdevice.h",
      "new_id": "c1b2341897c25681191f64bf99024c59531937ac",
      "new_mode": 33188,
      "new_path": "include/linux/netdevice.h"
    },
    {
      "type": "modify",
      "old_id": "5cbba0927a8e57eec79f062bd93e0fb0137a1dfe",
      "old_mode": 33188,
      "old_path": "net/core/dev.c",
      "new_id": "988e42912e722c07739cf82f2f5b04c1310cd7c2",
      "new_mode": 33188,
      "new_path": "net/core/dev.c"
    },
    {
      "type": "modify",
      "old_id": "dcc7d25996ab32f3687b148100107a1b0f1e0ec6",
      "old_mode": 33188,
      "old_path": "net/core/sysctl_net_core.c",
      "new_id": "01eee5d984be4b6d838357a56e0211508d0e31ba",
      "new_mode": 33188,
      "new_path": "net/core/sysctl_net_core.c"
    }
  ]
}
