)]}'
{
  "commit": "c71bb79c597912a6ce344c6277ee116bd59ebd6c",
  "tree": "ace635a5b283b67c89c165d59932842c1544cb17",
  "parents": [
    "6e4664525b1db28f8c4e1130957f70a94c19213e"
  ],
  "author": {
    "name": "Willy Tarreau",
    "email": "w@1wt.eu",
    "time": "Thu Jun 27 14:52:43 2013 +0200"
  },
  "committer": {
    "name": "Willy Tarreau",
    "email": "w@1wt.eu",
    "time": "Wed Sep 21 12:13:16 2016 +0200"
  },
  "message": "net: mvneta: add support for multiplying Tx packets using SO_MARK\n\nSometimes it\u0027s quite convenient to be able to emit wire-rate packets,\nbut passing via skbs is very expensive and generally makes this\nimpossible.\n\nHere we use a different approach. The xmit function checks if the\nskb belongs to a SOCK_PACKET, and if so, then it uses sk-\u003esk_mark as\na number of replicas to send (0 by default). It then iterates over\nthe same skb for the announced number of replicas and decrements\nsk_mark as it adds them.\n\nIn order to know when to release the DMA mapping, an extra skb_get()\nis performed. That way we can check the skb_shared() upon Tx completion\nand release the skb and DMA mapping when we reach the last packet for\nthe skb.\n\nThe caller just has to set the desired number of replicas by issuing\na setsockopt(SOL_SOCKET, SO_MARK) on the socket. It knows how many of\nthem were left to be sent on return, so it can count the effective\nnumber of packets sent (1+initial-final).\n\nUsing this mechanism, it is possible to produce 1.485 Mpps on a very\nsmall fanless machine.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b017818bccae1a06bc0c85e88d29733f9a1365e6",
      "old_mode": 33188,
      "old_path": "drivers/net/ethernet/marvell/mvneta.c",
      "new_id": "d707cd0581b0597f3c48824906e8195a671051b7",
      "new_mode": 33188,
      "new_path": "drivers/net/ethernet/marvell/mvneta.c"
    }
  ]
}
