)]}'
{
  "log": [
    {
      "commit": "c9a9f12aa619288fd3d4e16bc4b3c73b655a4efe",
      "tree": "6991a50632a4dc919e33ed2d60a0d4be3fb508ff",
      "parents": [
        "7340b539841dc739bc0b813e8e86825bc1eb5a4c"
      ],
      "author": {
        "name": "Kuniyuki Iwashima",
        "email": "kuniyu@google.com",
        "time": "Mon Jun 08 03:16:58 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Jun 11 12:59:06 2026 -0600"
      },
      "message": "iplink_geneve: Support IFLA_GENEVE_LOCAL and IFLA_GENEVE_LOCAL6.\n\nIFLA_GENEVE_LOCAL and IFLA_GENEVE_LOCAL6 allow specifying a local\nIPv4/IPv6 address for the backend UDP socket of a GENEVE devcie.\n\nLet\u0027s support the attributes with the \"local\" keyword.\n\n  # for i in $(seq 1 2);\n  do\n          ip link add geneve4_${i} type geneve local 192.168.0.${i} external\n          ip addr add 192.168.0.${i}/24 dev geneve4_${i}\n          ip link set geneve4_${i} up\n\n          ip link add geneve6_${i} type geneve local 2001:9292::${i} external\n          ip addr add 2001:9292::${i}/64 dev geneve6_${i} nodad\n          ip link set geneve6_${i} up\n  done\n\n  # ip -d l | grep geneve\n  9: geneve4_1: \u003cBROADCAST,MULTICAST,UP,LOWER_UP\u003e ...\n      geneve external id 0 local 192.168.0.1 ...\n  10: geneve6_1: \u003cBROADCAST,MULTICAST,UP,LOWER_UP\u003e ...\n      geneve external id 0 local 2001:9292::1 ...\n  11: geneve4_2: \u003cBROADCAST,MULTICAST,UP,LOWER_UP\u003e ...\n      geneve external id 0 local 192.168.0.2 ...\n  12: geneve6_2: \u003cBROADCAST,MULTICAST,UP,LOWER_UP\u003e ...\n      geneve external id 0 local 2001:9292::2 ...\n\n  # ss -ua | grep geneve\n  UNCONN 0      0         192.168.0.2:geneve      0.0.0.0:*\n  UNCONN 0      0         192.168.0.1:geneve      0.0.0.0:*\n  UNCONN 0      0      [2001:9292::2]:geneve            *:*\n  UNCONN 0      0      [2001:9292::1]:geneve            *:*\n\nNote that kernel dumps the wildcard address if the device created\nwith IFLA_GENEVE_COLLECT_METADATA is not dualstack.\n\nSigned-off-by: Kuniyuki Iwashima \u003ckuniyu@google.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "7340b539841dc739bc0b813e8e86825bc1eb5a4c",
      "tree": "5774addbd56a8d2e7dbfa0e2295c6e58db99a4fc",
      "parents": [
        "6592993853c0482733445a952a5b2a73835444a0"
      ],
      "author": {
        "name": "Fernando Fernandez Mancera",
        "email": "fmancera@suse.de",
        "time": "Sun Jun 07 08:57:15 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Jun 07 07:45:23 2026 -0600"
      },
      "message": "iplink: set NLA_F_NESTED for IPv4 devconf attributes\n\nIn order to use set multiple IPv4 devconf parameters at once,\nNLA_F_NESTED flag is required.\n\nip link set dev enp8s0 inet forwarding on proxy_arp off\n\nFixes: fdb064bf64e5 (\"iplink: add support for setting IPv4 devconf parameters\")\nSigned-off-by: Fernando Fernandez Mancera \u003cfmancera@suse.de\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "6592993853c0482733445a952a5b2a73835444a0",
      "tree": "5bffecef9bbdf7c388b0c618a6580a3f9a854e92",
      "parents": [
        "e942438fd7ed1651bc6ad3db2806677436a0d1bd"
      ],
      "author": {
        "name": "Fernando Fernandez Mancera",
        "email": "fmancera@suse.de",
        "time": "Sun Jun 07 08:57:14 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Jun 07 07:45:23 2026 -0600"
      },
      "message": "man: iplink: fix indentation level after inet parameter\n\nThe indentation for inet block opens with +8 but closes with -10. Fix\nthe imbalance.\n\nFixes: fdb064bf64e5 (\"iplink: add support for setting IPv4 devconf parameters\")\nSigned-off-by: Fernando Fernandez Mancera \u003cfmancera@suse.de\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "e942438fd7ed1651bc6ad3db2806677436a0d1bd",
      "tree": "1b2cb1c711f941174ab649b5c2f6f4cabc225940",
      "parents": [
        "2d84aef19e9670ba57db6920cb00707b71e6713e"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Jun 07 07:44:44 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Jun 07 07:44:44 2026 -0600"
      },
      "message": "Update kernel headers\n\nUpdate kernel headers to commit:\n\t903db046d557: (\"net: stmmac: xgmac: report L3/L4 filter match count in ethtool stats\")\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "2d84aef19e9670ba57db6920cb00707b71e6713e",
      "tree": "71abd6bcd2f9fda3a4fca8b1ebc2594e043f529a",
      "parents": [
        "fdb064bf64e5df738f5f823a11f315340679d336"
      ],
      "author": {
        "name": "Andy Roulin",
        "email": "aroulin@nvidia.com",
        "time": "Wed Jun 03 10:33:04 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Jun 04 09:11:53 2026 -0600"
      },
      "message": "iplink: bridge: add stp_mode support\n\nAdd support for the IFLA_BR_STP_MODE bridge attribute that allows\nuserspace to explicitly select the STP mode:\n\n  - auto (0): default, try /sbin/bridge-stp helper in init_net\n  - user (1): directly enable userspace STP without the helper,\n    works in any network namespace\n  - kernel (2): directly enable kernel STP without the helper\n\nA shared file-scope stp_modes[] table indexed by BR_STP_MODE_* drives\nboth directions: parsing uses parse_one_of(), printing goes through a\nstp_mode_to_str() helper that returns \"(unknown)\" for modes not yet\nknown to iproute2, keeping the JSON type of stp_mode consistently a\nstring.\n\nExample usage:\n  ip link set br0 type bridge stp_mode user\n  ip link set br0 type bridge stp_state 1\n\nLink: https://lore.kernel.org/netdev/20260405205224.3163000-1-aroulin@nvidia.com/\nAssisted-by: Claude:claude-opus-4-7\nReviewed-by: Ido Schimmel \u003cidosch@nvidia.com\u003e\nReviewed-by: Nikolay Aleksandrov \u003cnikolay@nvidia.com\u003e\nSigned-off-by: Andy Roulin \u003caroulin@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "fdb064bf64e5df738f5f823a11f315340679d336",
      "tree": "042bd761d24b53b92b3c0a888869d92f3112951b",
      "parents": [
        "83ba195fa4f6e9004f59a0121dfb034fa911f65b"
      ],
      "author": {
        "name": "Fernando Fernandez Mancera",
        "email": "fmancera@suse.de",
        "time": "Mon Jun 01 16:32:42 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Jun 04 08:58:52 2026 -0600"
      },
      "message": "iplink: add support for setting IPv4 devconf parameters\n\nCurrently, modifying IPv4 interface configuration parameters requires\ninteracting with sysctl (/proc/sys/net/ipv4/conf/*). While\nip-netconf exists for monitoring these values, there has been no native\nway to set them directly through iproute2.\n\nThis patch introduces the support for that via \u0027inet\u0027 at the \u0027ip link\nset\u0027. It uses IFLA_INET_CONF netlink attribute to set the parameter.\n\nExample to enable forwarding on an interface:\n\nip link set dev enp8s0 inet forwarding on\n\nSigned-off-by: Fernando Fernandez Mancera \u003cfmancera@suse.de\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n(Code length fixups and s/matches/strcmp/ when applying)\n"
    },
    {
      "commit": "83ba195fa4f6e9004f59a0121dfb034fa911f65b",
      "tree": "b5b31a9059b61fc1d8770f0d435e290331226743",
      "parents": [
        "28352e7c0d6e72bb9ff895f5fe961003efb0b349"
      ],
      "author": {
        "name": "Petr Oros",
        "email": "poros@redhat.com",
        "time": "Tue May 26 13:52:45 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Wed May 27 15:24:01 2026 -0600"
      },
      "message": "dpll: monitor: add -t/--timestamp and --tshort options\n\nBring dpll monitor in line with the rest of iproute2 by allowing each\nreceived notification to be prefixed with a wall-clock timestamp.\n\n  -t / --timestamp  emit a separate \"Timestamp:\" line before each event,\n                    using the default text form of print_timestamp()\n                    (matches ip / bridge / tc -t monitor)\n  --tshort          emit a compact ISO 8601 prefix\n                    \"[YYYY-MM-DDTHH:MM:SS.uuuuuu]\" inline instead\n                    (matches ip -ts monitor)\n\nWhen combined with -j, the timestamp shows up as a \"timestamp\" /\n\"timestamp_short\" field on each notification object, the same way\nip -j -t mptcp monitor integrates the helper.\n\nThe flag is parsed globally but only consulted from the monitor\ncallback, so passing -t to non-monitor commands is a no-op.\n\n--tshort has no short alias, so its long_options entry uses an\nidentifier above the ASCII range (OPT_TSHORT \u003d 256) following the\niproute2 convention used in misc/ss.c, instead of consuming an\nASCII letter that could later collide with a real short option.\n\nReviewed-by: Ivan Vecera \u003civecera@redhat.com\u003e\nSigned-off-by: Petr Oros \u003cporos@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "28352e7c0d6e72bb9ff895f5fe961003efb0b349",
      "tree": "2e4ecaa79bccb2f958e92c5627b3db6a00463f5c",
      "parents": [
        "de91e928ff57bc11bdcf76c8d6d302fe788e0440"
      ],
      "author": {
        "name": "Petr Oros",
        "email": "poros@redhat.com",
        "time": "Tue May 26 13:53:09 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Wed May 27 15:24:00 2026 -0600"
      },
      "message": "dpll: man: restore Frequency monitor status in device show output\n\nThe dpll(8) merge of main into next (commit 62d1e70fa85a37 (\"Merge\nremote-tracking branch \u0027main/main\u0027 into next\")) resolved the conflict\nin the \"dpll device show\" output bullet list by keeping main\u0027s three\nnew entries (Supported modes, Phase offset monitor status, Phase\noffset averaging factor) but inadvertently dropped the\n\"Frequency monitor status (enable/disable)\" entry that was\nintroduced on next by commit 12954bc7d2c3 (\"dpll: add frequency\nmonitoring support\").\n\nThe frequency-monitor feature itself is still present (parser,\ndevice-set documentation and pin \"Measured frequency in Hz\" line\nare intact), only the corresponding bullet in the device-get output\nlist was lost.  Add it back so the listed attributes match what\n\"dpll device show\" actually prints.\n\nSigned-off-by: Petr Oros \u003cporos@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "de91e928ff57bc11bdcf76c8d6d302fe788e0440",
      "tree": "4f3d5f88a34c402f771b3dec104303063096e8de",
      "parents": [
        "53ee32da16b368e9607680a258be91ef8061c44d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed May 20 10:30:43 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 22 16:15:35 2026 -0600"
      },
      "message": "ll_map: add RTEXT_FILTER_NAME_ONLY to ll_link_get() and ll_init_map()\n\niproute2 can spend considerable amount of time in ll_init_map()\nor ll_link_get() to dump verbose netdev attributes, contributing\nto RTNL pressure.\n\nAdd RTEXT_FILTER_NAME_ONLY new flag so that rtnl_fill_ifinfo()\nlimits its output to:\n\n    - struct nlmsghdr\n    - IFLA_IFNAME\n    - IFLA_PROP_LIST (alternate names)\n\nThis is supported in linux 7.2+ (and ignored in old kernels).\n\nRTNL avoidance should be automatically provided in upcoming\nkernel patches.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "53ee32da16b368e9607680a258be91ef8061c44d",
      "tree": "6a1ea5aaa897a40a9d0056090f1621ccb8157ee1",
      "parents": [
        "a9f9448b345d417db0d87fc4fe61831617d069ce"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 22 16:14:39 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 22 16:14:39 2026 -0600"
      },
      "message": "Update kernel headers\n\nUpdate kernel headers to commit:\n\t95fab46aea57: (\"Merge branch \u0027net-convert-atm-xdp-af_iucv-l2tp_ppp-rxrpc-tipc-to-getsockopt_iter\u0027\")\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "a9f9448b345d417db0d87fc4fe61831617d069ce",
      "tree": "9f653a6244e9729ad8a84044790c1e1f183670fd",
      "parents": [
        "de8c3aaa35456ef4f9d4bff0806340aa5d597810"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Wed May 20 10:34:46 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 22 16:13:04 2026 -0600"
      },
      "message": "tc/netem: display per-impairment xstats counters\n\nThe kernel now reports struct tc_netem_xstats via TCA_STATS_APP with\nper-impairment counters: delayed, loss, corrupted, duplicated,\nreordered, and ecn_marked.\n\nAdd netem_print_xstats() following the same pattern as\nfq_print_xstats()\n\nExample output of `tc -s qdisc show dev eth0`:\n  qdisc netem 8001: root refcnt 2 limit 1000 delay 100ms loss 5%\n   Sent 1234567 bytes 15483 pkt (dropped 774, overlimits 0 requeues 0)\n   delayed 14709 dropped 774 corrupted 154 duplicated 309 reordered 61 ecn_marked 0\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "de8c3aaa35456ef4f9d4bff0806340aa5d597810",
      "tree": "dfd5bf12a136c37bd1bb4283a6155c555c1447d3",
      "parents": [
        "2bcb830285019bad01dfe7ae789a38c11adede1d"
      ],
      "author": {
        "name": "Mohsin Bashir",
        "email": "hmohsin@meta.com",
        "time": "Thu May 21 20:07:02 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 22 16:09:32 2026 -0600"
      },
      "message": "netshaper: Fix man page accuracy and formatting issues\n\nThis is a follow up to a previous patch that was merged before the\nfeedback was provided. See link below for previous patch series.\nhttps://lore.kernel.org/netdev/20260518202353.390827-1-mohsin.bashr@gmail.com\n\nAddress the following concerns:\n\n- Document that parent scope must be node or netdev; queue is\n  rejected by parse_scope_id() but the man page did not state this.\n\n- Document that parent scope node requires an id, while parent scope\n  netdev may omit the id.\n\n- Document that leaf scope must be queue; parse_leaves() enforces\n  this but the man page only implied it by example.\n\n- Replace \"scheduling groups\" with \"intermediate scheduling nodes\"\n  for the node scope to avoid confusion with the group command name.\n\n- Show group handle scope choices explicitly in the synopsis as\n  { node | netdev } instead of an unrestricted HANDLE_SCOPE token.\n\n- Replace unusual { } repeat-group notation for leaves with a\n  separate LEAF_SPEC definition using standard [ SPEC ... ] syntax.\n\n- Use .B/.RB for literal keywords (bw-min, bw-max, weight, id,\n  parent, leaves) and .I for metavariables, matching iproute2\n  man page conventions.\n\n- Clarify example 4 so the 10 Gbit/s cap clearly applies to the\n  node, not the netdev parent.\n\n- Update .TH date.\n\nAssisted-by: Claude:claude-opus-4.7\nSigned-off-by: Mohsin Bashir \u003chmohsin@meta.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "2bcb830285019bad01dfe7ae789a38c11adede1d",
      "tree": "b6204cd3ec104dbcbbb0a26813acdff743f58333",
      "parents": [
        "fcf926464c3eb9acb70382e88286ccf342b4292a",
        "2638fef148e6b36d43abdcb04ed344f1003021a9"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 19:06:02 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 19:06:02 2026 -0600"
      },
      "message": "Merge branch \u0027netshaper-updates\u0027 into next\n\nMohsin Bashir  says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nFrom: Mohsin Bashir \u003chmohsin@meta.com\u003e\n\nThis series extends the netshaper CLI with missing parameter support\nand adds the group command for building scheduling hierarchies.\n\nThe existing netshaper tool only supports setting bw-max on individual\nshapers. This series adds the remaining shaper attributes (bw-min,\nweight) needed for TX scheduling, and introduces the group command\nwhich ties leaf shapers to a parent node in a single operation.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "2638fef148e6b36d43abdcb04ed344f1003021a9",
      "tree": "b6204cd3ec104dbcbbb0a26813acdff743f58333",
      "parents": [
        "e14b336a31b49a441883fd218399a537f580040f"
      ],
      "author": {
        "name": "Mohsin Bashir",
        "email": "hmohsin@meta.com",
        "time": "Mon May 18 13:23:53 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:47:08 2026 -0600"
      },
      "message": "netshaper: Update man page for new parameters and group command\n\nDocument bw-min, weight, and the group command in the netshaper\nman page. Node id is required for set/show/delete but optional\nfor the group command. Leaves support optional per-queue weight\nand priority parameters for scheduling within the group.\n\nAssisted-by: Claude:claude-opus-4.7\nSigned-off-by: Mohsin Bashir \u003chmohsin@meta.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "e14b336a31b49a441883fd218399a537f580040f",
      "tree": "3853169fa470fd49f6f2f16e51ebf5da8fe0d6e3",
      "parents": [
        "00a40c697f9cd791e154ae056c473f76fe631fb5"
      ],
      "author": {
        "name": "Mohsin Bashir",
        "email": "hmohsin@meta.com",
        "time": "Mon May 18 13:23:52 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:47:02 2026 -0600"
      },
      "message": "netshaper: Add group command for creating scheduling hierarchies\n\nAdd the group command to create and update scheduling groups via the\nNET_SHAPER_CMD_GROUP netlink operation. This enables building shaper\nhierarchies by specifying a node handle, parent scope, rate parameters,\nand a set of leaf shapers to attach.\n\nThe group command allows the node handle id to be omitted, letting\nthe kernel auto-assign one for new nodes. Group handle and parent\nscopes are validated to accept only node or netdev. Parent node scope\nrequires an explicit id since it must reference an existing node.\n\nLeaf parsing is extracted into parse_leaves() which dynamically\nallocates the leaves array via realloc, avoiding arbitrary limits.\nEach leaf accepts optional weight and priority parameters for\nper-queue scheduling control within the group. Handle and parent\nparsing share parse_scope_id() to avoid code duplication. Common\nargument parsing (dev, bw-min, bw-max, weight) reuses the\nparse_shaper_arg() helper introduced in the previous patch.\n\nExample usage:\n  netshaper group dev foo handle scope node parent scope netdev \\\n      bw-max 1gbit leaves scope queue id 0 weight 3 \\\n      scope queue id 1 weight 2\n\nAssisted-by: Claude:claude-opus-4.7\nSigned-off-by: Mohsin Bashir \u003chmohsin@meta.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "00a40c697f9cd791e154ae056c473f76fe631fb5",
      "tree": "77afe17d83ac220f89a3d796087535fba883c132",
      "parents": [
        "8c3177b174e7e57f93634110b8558c9261dfa23f"
      ],
      "author": {
        "name": "Mohsin Bashir",
        "email": "hmohsin@meta.com",
        "time": "Mon May 18 13:23:51 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:46:48 2026 -0600"
      },
      "message": "netshaper: Extract struct shaper_args and parse_shaper_arg() helper\n\nExtract common shaper parameters (dev, bw-min, bw-max, weight) into\nstruct shaper_args and add parse_shaper_arg() to parse them. This\navoids duplicating argument parsing when the group command is added\nin the next patch.\n\nAssisted-by: Claude:claude-opus-4.7\nSigned-off-by: Mohsin Bashir \u003chmohsin@meta.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "8c3177b174e7e57f93634110b8558c9261dfa23f",
      "tree": "2700875d6f8953dce15e3480d30593fa8aa0464e",
      "parents": [
        "dc5f7db81442ffc7359d59d455d980b4aa85e60a"
      ],
      "author": {
        "name": "Mohsin Bashir",
        "email": "hmohsin@meta.com",
        "time": "Mon May 18 13:23:50 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:46:37 2026 -0600"
      },
      "message": "netshaper: Extend show output with parent, bw-min and weight\n\nExtend print_netshaper_attrs() to display parent scope/id, bw-min,\nand weight fields in the show output. Replace the switch-based\niteration with direct attribute checks for cleaner output formatting.\nUse print_rate() for bandwidth display so that sub-Mbps rates\nlike 100kbit render correctly instead of truncating to 0 mbps.\n\nAssisted-by: Claude:claude-opus-4.7\nSigned-off-by: Mohsin Bashir \u003chmohsin@meta.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "dc5f7db81442ffc7359d59d455d980b4aa85e60a",
      "tree": "556274b93c1362fed13442420d19a9213703969b",
      "parents": [
        "fd9d12a1423e4dd1684cd32751629d47ab935996"
      ],
      "author": {
        "name": "Mohsin Bashir",
        "email": "hmohsin@meta.com",
        "time": "Mon May 18 13:23:49 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:46:24 2026 -0600"
      },
      "message": "netshaper: Add bw-min and weight parameter support\n\nAdd bw-min and weight parameters to the set command. Previously\nonly bw-max was supported. Use boolean flags (has_bw_min,\nhas_bw_max, has_weight) to track which parameters were provided,\nso that zero-valued attrs like bw-max 0 are correctly sent.\nOnly emit rate and weight attrs for the set command. Add device\nname validation and only send handle id when explicitly provided.\nUpdate usage text to reflect the new parameters.\n\nAssisted-by: Claude:claude-opus-4.7\nSigned-off-by: Mohsin Bashir \u003chmohsin@meta.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "fd9d12a1423e4dd1684cd32751629d47ab935996",
      "tree": "d6a0cb1b8e7009fd7cac81ff87e8316a64e3a5a0",
      "parents": [
        "fcf926464c3eb9acb70382e88286ccf342b4292a"
      ],
      "author": {
        "name": "Mohsin Bashir",
        "email": "hmohsin@meta.com",
        "time": "Mon May 18 13:23:48 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:46:07 2026 -0600"
      },
      "message": "netshaper: Extract parse_scope() and parse_rate() helpers\n\nAdd parse_scope() and parse_rate() helpers in preparation for\nadding the group command which will need scope and rate parsing\nat various places in the code. This patch will help to avoid\ncode duplication.\n\nVerify that the tool works as before:\n./netshaper set dev eth2 handle scope queue id 0 bw-max 100kbit\n./netshaper delete dev eth2 handle scope queue id 0 bw-max 100kbit\n\nAssisted-by: Claude:claude-opus-4.7\nSigned-off-by: Mohsin Bashir \u003chmohsin@meta.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "fcf926464c3eb9acb70382e88286ccf342b4292a",
      "tree": "5c1884ff24733ef87059c76ee05e000715022645",
      "parents": [
        "62d1e70fa85a37c77693883f997bfa86aa10381f",
        "5d8d82f60c5288ab8a20d70672dcb738209bd734"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:44:24 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:44:24 2026 -0600"
      },
      "message": "Merge branch \u0027neigh-fwd-grat\u0027 into next\n\nDanielle Ratson  says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe existing neighbor suppression unconditionally suppresses gratuitous\nARP and unsolicited Neighbor Advertisements, which breaks legitimate use\ncases like Multi-Homing and EVPN where these announcements need to\npropagate across the VXLAN fabric.\n\nThis series adds a new neigh_forward_grat option that provides\nindependent control of gratuitous ARP and unsolicited NA forwarding.\nWhen neigh_suppress is enabled and neigh_forward_grat is also enabled,\nregular neighbor discovery is suppressed while gratuitous announcements\nare forwarded.\n\nBoth port-level control (via IFLA_BRPORT_NEIGH_FORWARD_GRAT) and\nper-VLAN control (via BRIDGE_VLANDB_ENTRY_NEIGH_FORWARD_GRAT) are\nprovided. The default value of OFF preserves existing behavior.\n\nThe new attributes use NLA_U8, although the kernel netlink guideline\nrecommends NLA_U32 as the minimum integer type on the grounds that\nalignment makes smaller types equivalent on the wire. For a simple\non/off attribute there is no technical advantage to u32 over u8, and\nkeeping u8 preserves consistency with all surrounding bridge port\nattributes and avoids introducing new helpers alongside the existing\ninfrastructure.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "5d8d82f60c5288ab8a20d70672dcb738209bd734",
      "tree": "5c1884ff24733ef87059c76ee05e000715022645",
      "parents": [
        "2c6d5e670539590d466428aeb904780557bdcd32"
      ],
      "author": {
        "name": "Danielle Ratson",
        "email": "danieller@nvidia.com",
        "time": "Sun May 17 11:25:01 2026 +0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:43:49 2026 -0600"
      },
      "message": "bridge: vlan: Add support for neigh_forward_grat\n\nAdd support for controlling gratuitous ARP and unsolicited NA\nforwarding at the per-VLAN level via the neigh_forward_grat option.\n\nThis allows configuring the option via:\n$ bridge vlan set dev \u003cport\u003e vid \u003cvlan\u003e neigh_forward_grat {on|off}\n\nReviewed-by: Ido Schimmel \u003cidosch@nvidia.com\u003e\nReviewed-by: Petr Machata \u003cpetrm@nvidia.com\u003e\nSigned-off-by: Danielle Ratson \u003cdanieller@nvidia.com\u003e\nAcked-by: Nikolay Aleksandrov \u003crazor@blackwall.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "2c6d5e670539590d466428aeb904780557bdcd32",
      "tree": "a423ae97a20c189a5de1f4b8e6905ac2bbc76433",
      "parents": [
        "62d1e70fa85a37c77693883f997bfa86aa10381f"
      ],
      "author": {
        "name": "Danielle Ratson",
        "email": "danieller@nvidia.com",
        "time": "Sun May 17 11:25:00 2026 +0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:43:42 2026 -0600"
      },
      "message": "iplink: bridge_slave: Add support for neigh_forward_grat\n\nAdd support for controlling gratuitous ARP and unsolicited NA\nforwarding at the port level via the neigh_forward_grat option.\n\nThis allows configuring the option via:\n$ ip link set dev \u003cport\u003e type bridge_slave neigh_forward_grat {on|off}\n\nOr via the bridge command:\n$ bridge link set dev \u003cport\u003e neigh_forward_grat {on|off}\n\nReviewed-by: Ido Schimmel \u003cidosch@nvidia.com\u003e\nReviewed-by: Petr Machata \u003cpetrm@nvidia.com\u003e\nSigned-off-by: Danielle Ratson \u003cdanieller@nvidia.com\u003e\nAcked-by: Nikolay Aleksandrov \u003crazor@blackwall.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "62d1e70fa85a37c77693883f997bfa86aa10381f",
      "tree": "8abdc622b6d7ffb097b15cd08215a4ee2876c747",
      "parents": [
        "1ffc5715b9a7e140d6b44935531912a4cab79d86",
        "62d47c2dbc0eaecdd20c0e19406067488025e92e"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:38:59 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue May 19 18:38:59 2026 -0600"
      },
      "message": "Merge remote-tracking branch \u0027main/main\u0027 into next\n\nConflicts:\n\tman/man8/dpll.8\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "62d47c2dbc0eaecdd20c0e19406067488025e92e",
      "tree": "bcc5db913070d6205f8f00085ec0cea8608fac5c",
      "parents": [
        "87c66f79d8b09779c01c07122b0846f83b566dc1"
      ],
      "author": {
        "name": "Petr Oros",
        "email": "poros@redhat.com",
        "time": "Tue May 12 15:52:24 2026 +0200"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Sun May 17 15:35:09 2026 -0700"
      },
      "message": "dpll: align help and man notation with actual option parsing\n\ndpll uses getopt_long(), which only accepts long options with the\n\"--\" prefix.  The iproute2-wide \"-X[name]\" shorthand used in the\nhelp text and man page implies a single-dash long form\n(e.g. -Version, -json, -pretty) that getopt_long does not parse;\nonly -V/--Version, -j/--json and -p/--pretty actually work.\n\nReplace the misleading shorthand with explicit \"-V | --Version\"\nstyle so the documented forms match what the parser accepts, and\ndrop the redundant second usage line in help() that listed only a\nsubset of the options and implied dpll could be invoked without an\nOBJECT.  No functional change.\n\nSigned-off-by: Petr Oros \u003cporos@redhat.com\u003e\nReviewed-by: Ivan Vecera \u003civecera@redhat.com\u003e\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "1ffc5715b9a7e140d6b44935531912a4cab79d86",
      "tree": "d31afa2ea416624289954f39fc1105e02640871f",
      "parents": [
        "2a8b53446ff5636b0f412eb3665f83378d1cb5b2"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dahern@nvidia.com",
        "time": "Tue May 12 13:29:33 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 15 13:23:25 2026 -0600"
      },
      "message": "devlink: Drop now duplicate pid fallback for netns\n\nNow that netns_get_fd handles by name and pid, the special\nhandling in devlink to fallback to PID can be removed with\nboth cases handled by the FD attribute.\n\nSigned-off-by: David Ahern \u003cdahern@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "2a8b53446ff5636b0f412eb3665f83378d1cb5b2",
      "tree": "17686dc423e642e3fa417b9aeb1a0ed5240e4abb",
      "parents": [
        "22061a6354c08002254003d4e6f7d9e1129371b6"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dahern@nvidia.com",
        "time": "Tue May 12 13:27:41 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 15 13:22:46 2026 -0600"
      },
      "message": "rdma: Allow netns to be specified by pid\n\nUpdate rdma dev to work like ip link where the netns can be a\nname or a pid by using netns_get_fd. Update man page and help\naccordingly.\n\nSigned-off-by: David Ahern \u003cdahern@nvidia.com\u003e\nReviewed-by: Leon Romanovsky \u003cleonro@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "22061a6354c08002254003d4e6f7d9e1129371b6",
      "tree": "f6217695fde1b62a7656725bf7fbdab3f2ddeca9",
      "parents": [
        "d6a1612bacfe2bf559325610e32a137aa0705598"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dahern@nvidia.com",
        "time": "Tue May 12 13:26:19 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 15 13:22:38 2026 -0600"
      },
      "message": "iplink: Drop pid fallback code for netns\n\nPrior commit handles the fallback to pid, so remove\nthe now duplicate code from iplink_parse.\n\nSigned-off-by: David Ahern \u003cdahern@nvidia.com\u003e\nReviewed-by: Leon Romanovsky \u003cleonro@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "d6a1612bacfe2bf559325610e32a137aa0705598",
      "tree": "7dc8eb4ccaee58e4ba77f3b0a26d60e7106d08a2",
      "parents": [
        "dde3f17bc311a38e02cc4f0e1a51d44cfbe059f1"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dahern@nvidia.com",
        "time": "Tue May 12 13:26:03 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 15 13:22:35 2026 -0600"
      },
      "message": "namespace: Add fallback to netns by pid\n\nUpdate netns_get_fd to try the passed in string as a name first. If the\nnetns filesystem entry does not exist, try converting the string to an\ninteger and if successful return an fd to /proc/\u003cpid\u003e/ns/net.\n\nThis allows netns_get_fd to uniformly handle the 2 common use cases of\nspecifying network namespace by name and pid.\n\nSigned-off-by: David Ahern \u003cdahern@nvidia.com\u003e\nReviewed-by: Leon Romanovsky \u003cleonro@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "dde3f17bc311a38e02cc4f0e1a51d44cfbe059f1",
      "tree": "531a06141a6803f907a654840cd19299d8052ef4",
      "parents": [
        "55cbf807b378e876db8091b58ebecfcca8dd6962"
      ],
      "author": {
        "name": "Ivan Vecera",
        "email": "ivecera@redhat.com",
        "time": "Wed May 13 16:51:15 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 15 13:21:23 2026 -0600"
      },
      "message": "dpll: add fractional-frequency-offset to parent-device\n\nKernel commit 9c11fcb2e9a54 (\"dpll: add fractional frequency offset\nto pin-parent-device\") added fractional-frequency-offset (PPM) and\nfractional-frequency-offset-ppt (PPT) attributes to the\npin-parent-device nested attribute set, alongside the existing\ntop-level pin attributes. Add their display into\ndpll_pin_print_parent_devices() and add ppm and ppt units to the\nrespective outputs.\n\nExtract dpll_pr_ffo() helper to consolidate the duplicated PPM/PPT\nfallback logic used in both top-level and parent-device contexts.\n\nSigned-off-by: Ivan Vecera \u003civecera@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "55cbf807b378e876db8091b58ebecfcca8dd6962",
      "tree": "6f3dde70947f2f37c7013abb93a1c797809d1e95",
      "parents": [
        "7579d9faeaf15b115539feedec891eec39284b36"
      ],
      "author": {
        "name": "Ivan Vecera",
        "email": "ivecera@redhat.com",
        "time": "Wed May 13 16:51:14 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 15 13:21:12 2026 -0600"
      },
      "message": "dpll: add pin operstate attribute support\n\nKernel commit 781c8893a5da8 (\"dpll: add pin operational state\")\nadded the DPLL_A_PIN_OPERSTATE attribute which reports the operational\nstate of a pin with respect to its parent DPLL device. The attribute\nis nested inside parent-device and can have values: active, standby,\nno-signal, qual-failed.\n\nAdd operstate filtering for pin show command, allowing to filter pins\nby their operational state on parent device. Update bash-completion\nand man page accordingly.\n\nSigned-off-by: Ivan Vecera \u003civecera@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "7579d9faeaf15b115539feedec891eec39284b36",
      "tree": "8ae504e0252b86a73c3e2f10bd738d4cbb767b71",
      "parents": [
        "b9345a8850efb5e8e271064615cfd1701e0e5e15"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 15 13:20:51 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri May 15 13:20:51 2026 -0600"
      },
      "message": "Update kernel headers\n\nUpdate kernel headers to commit:\n\t822d4a8e390a: (\"net: usb: usbnet: use proper ep number macros\")\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "87c66f79d8b09779c01c07122b0846f83b566dc1",
      "tree": "09e66c023fbacafc1d767f4f716bd73001161c7d",
      "parents": [
        "0bbe88abb731618db7bddd9db462d09b21de4c3b"
      ],
      "author": {
        "name": "Michael Guralnik",
        "email": "michaelgur@nvidia.com",
        "time": "Thu May 07 21:46:09 2026 +0300"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Thu May 07 13:42:05 2026 -0700"
      },
      "message": "rdma: Align FRMR pool UAPI names with merged kernel UAPI\n\nThe FRMR pools UAPI merged in kernel v7.0-rc1 commit dbd0472fd7a5\n(\"RDMA/nldev: Expose kernel-internal FRMR pools in netlink\")\nuses different identifier names than what the iproute2 FRMR pools\nseries was developed against.\n\nUpdate the vendored copy of RDMA UAPI and all references in the rdma\ntool to match the names that actually shipped in the kernel.\n\nFixes: 93368ee34528 (\"rdma: Update headers\")\nSigned-off-by: Michael Guralnik \u003cmichaelgur@nvidia.com\u003e\nSigned-off-by: Chiara Meiohas \u003ccmeiohas@nvidia.com\u003e\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "b9345a8850efb5e8e271064615cfd1701e0e5e15",
      "tree": "542a275dff8c150fbfa559ac2e447cab66948c67",
      "parents": [
        "eff6e4dad32c44f67a6d14e74d3f2a3d79068dcd",
        "12954bc7d2c3bdb86eb5e8740119079173c4ef9d"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu May 07 09:24:02 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu May 07 09:24:02 2026 -0600"
      },
      "message": "Merge branch \u0027dpll-phase-unit-freq-monitor\u0027 into next\n\nIvan Vecera  says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThis series improves dpll pin output formatting and adds support for\nthe frequency monitoring feature.\n\nPatch 1 adds picosecond unit to phase-adjust-min, phase-adjust-max\nand phase-adjust attributes. It also introduces dpll_pr_phase_offset()\nhelper that properly formats phase-offset as fractional picoseconds by\ndividing the raw kernel value by DPLL_PHASE_OFFSET_DIVIDER.\n\nPatch 2 adds support for the new frequency monitoring feature including\nthe DPLL_A_FREQUENCY_MONITOR device attribute and\nDPLL_A_PIN_MEASURED_FREQUENCY pin attribute. The measured frequency is\ndisplayed as fractional Hz using dpll_pr_measured_frequency() helper\nsince the kernel reports the value in millihertz. It also refactors\nphase-offset-monitor parsing into a shared helper.\n\nTested on EDS2 development board with zl3073x DPLL:\n\n  # dpll pin show package-label REF0P\n  pin id 196:\n    module-name: zl3073x\n    clock-id: 13709406750444215013\n    board-label: SyncE IN M1 CLK1\n    package-label: REF0P\n    type: synce-eth-port\n    frequency: 125000000 Hz\n    measured-frequency: 124999326.000 Hz\n    frequency-supported:\n      2500000 Hz\n      25000000 Hz\n      125000000 Hz\n    capabilities: 0x6 state-can-change priority-can-change\n    phase-adjust-min: -2147483648 ps\n    phase-adjust-max: 2147483647 ps\n    phase-adjust: 0 ps\n    parent-device:\n      id 14 direction input prio 10 state selectable phase-offset 0.000 ps\n      id 15 direction input prio 0 state connected phase-offset 323.000 ps\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "12954bc7d2c3bdb86eb5e8740119079173c4ef9d",
      "tree": "542a275dff8c150fbfa559ac2e447cab66948c67",
      "parents": [
        "410888eea295a860491aa343d1b8298cb3b40af7"
      ],
      "author": {
        "name": "Ivan Vecera",
        "email": "ivecera@redhat.com",
        "time": "Mon May 04 18:30:14 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu May 07 09:20:23 2026 -0600"
      },
      "message": "dpll: add frequency monitoring support\n\nAdd support for the new frequency monitoring feature from the kernel\npatch series \"dpll: add actual frequency monitoring feature\". This\nincludes:\n\n- DPLL_A_FREQUENCY_MONITOR device attribute (enable/disable)\n- DPLL_A_PIN_MEASURED_FREQUENCY pin attribute displayed as fractional Hz\n  using DPLL_PR_MEASURED_FREQUENCY macro (kernel reports in mHz)\n- device set: frequency-monitor { enable | disable }\n- Refactor phase-offset-monitor to use new dpll_parse_attr_feature_state\n  helper shared with frequency-monitor\n- Update man page and bash-completion\n\nReviewed-by: Petr Oros \u003cporos@redhat.com\u003e\nSigned-off-by: Ivan Vecera \u003civecera@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "410888eea295a860491aa343d1b8298cb3b40af7",
      "tree": "b8a5f3825dbef64b621123bf701e33fe2538aa24",
      "parents": [
        "eff6e4dad32c44f67a6d14e74d3f2a3d79068dcd"
      ],
      "author": {
        "name": "Ivan Vecera",
        "email": "ivecera@redhat.com",
        "time": "Mon May 04 18:30:13 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu May 07 09:20:08 2026 -0600"
      },
      "message": "dpll: add ps unit to phase-related pin attributes\n\nDisplay phase-adjust-min, phase-adjust-max and phase-adjust values\nwith ps unit. Add DPLL_PR_PHASE_OFFSET macro that properly formats\nphase-offset as fractional picoseconds by dividing the raw kernel\nvalue by DPLL_PHASE_OFFSET_DIVIDER.\n\nReviewed-by: Petr Oros \u003cporos@redhat.com\u003e\nSigned-off-by: Ivan Vecera \u003civecera@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "eff6e4dad32c44f67a6d14e74d3f2a3d79068dcd",
      "tree": "27818f2b737b4d631df506591e3f7033390cf613",
      "parents": [
        "0fbce40d480fd4b01246ab9ee85d870287805ce3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed May 06 16:06:56 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu May 07 09:18:31 2026 -0600"
      },
      "message": "tc/class: use rtnl_dump_request_n() in tc_class_list()\n\nstrace tc -s class sh dev eth1 parent 2:\n\nstrace is fooled with rtnl_dump_request() way:\n\nsendmsg(3, {msg_name\u003d{sa_family\u003dAF_NETLINK, nl_pid\u003d0, nl_groups\u003d00000000},\n        msg_namelen\u003d12,\n\tmsg_iov\u003d[{iov_base\u003d{nlmsg_len\u003d36,\n\t\t\tnlmsg_type\u003dRTM_GETTCLASS,\n\t\t\tnlmsg_flags\u003dNLM_F_REQUEST|NLM_F_DUMP,\n\t\t\tnlmsg_seq\u003d1778082626, nlmsg_pid\u003d0},\n\t\t\tiov_len\u003d16},\n\t\t{iov_base\u003d{nlmsg_len\u003d0, nlmsg_type\u003dNLMSG_NOOP, nlmsg_flags\u003d0, nlmsg_seq\u003d0, nlmsg_pid\u003d131072},\n\t\t        iov_len\u003d20}],\n\t\tmsg_iovlen\u003d2, msg_controllen\u003d0, msg_flags\u003d0}, 0) \u003d 36\n\nWith rtnl_dump_request_n() we get instead:\n\nsendmsg(3, {msg_name\u003d{sa_family\u003dAF_NETLINK, nl_pid\u003d0, nl_groups\u003d00000000},\n\tmsg_namelen\u003d12,\n\tmsg_iov\u003d[{iov_base\u003d[{nlmsg_len\u003d36,\n\t\t\tnlmsg_type\u003dRTM_GETTCLASS,\n\t\t\tnlmsg_flags\u003dNLM_F_REQUEST|NLM_F_DUMP,\n\t\t\tnlmsg_seq\u003d1778082790, nlmsg_pid\u003d0},\n\t\t{tcm_family\u003dAF_UNSPEC,\n\t\t tcm_ifindex\u003dif_nametoindex(\"eth1\"), tcm_handle\u003d0, tcm_parent\u003d131072, tcm_info\u003d0}],\n\t\tiov_len\u003d36}], msg_iovlen\u003d1, msg_controllen\u003d0, msg_flags\u003d0}, 0) \u003d 36\n\nThis will also permit future attribute additions, like skip stats.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nAcked-by: Jamal Hadi Salim \u003cjhs@mojatatu.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "0bbe88abb731618db7bddd9db462d09b21de4c3b",
      "tree": "8fc1f928bd8e6d019beecb70c2ecd9f1d94b40fd",
      "parents": [
        "b468824a278648ce384f39a4bb1c9dd45a9b3772"
      ],
      "author": {
        "name": "Ivan Vecera",
        "email": "ivecera@redhat.com",
        "time": "Sun May 03 18:42:00 2026 +0200"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Tue May 05 10:42:33 2026 -0700"
      },
      "message": "dpll: fix man page correctness issues\n\nFix several inaccuracies in dpll.8 man page:\n- Remove bogus \"holdover\" and \"freerun\" from operating modes list,\n  only \"manual\" and \"automatic\" modes exist in the DPLL API\n- Fix typo \"locked-ho-ack\" -\u003e \"locked-ho-acq\" in lock status list\n- Add missing device show output fields: lock-status-error,\n  clock-quality-level, mode-supported, phase-offset-monitor and\n  phase-offset-avg-factor\n- Add missing pin show output fields: panel-label, package-label,\n  fractional-frequency-offset and esync-pulse\n- Remove non-existent exit codes 2 and 255, the tool only returns\n  0 (success) or 1 (failure)\n- Use canonical enable/disable for phase-offset-monitor to match\n  the tool\u0027s help text\n\nFixes: 656cfc3ce05b (\"dpll: Add dpll command\")\nSigned-off-by: Ivan Vecera \u003civecera@redhat.com\u003e\nReviewed-by: Vadim Fedorenko \u003cvadim.fedorenko@linux.dev\u003e\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "0fbce40d480fd4b01246ab9ee85d870287805ce3",
      "tree": "8f619ed7c5cfb71086d72772c1732772d3955ab0",
      "parents": [
        "4f5de57e2ff11a5925dacdf3deeeabee7ba9502a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Sun May 03 11:51:37 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Mon May 04 18:58:47 2026 -0600"
      },
      "message": "tc: qdisc: provide tcm_handle and tcm_parent to kernel dump requests\n\nlinux-7.2 can filter \"tc qdisc show ...\" on tcm_handle / tcm_parent and\nreduce dump costs.\n\nOld kernels ignore these values.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nAcked-by: Jamal Hadi Salim \u003cjhs@mojatatu.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "4f5de57e2ff11a5925dacdf3deeeabee7ba9502a",
      "tree": "cdcd03014841677cb6a9a4c7fbfef8a104ce2db8",
      "parents": [
        "c99a85a7c8eb5cafbe0f4f681b108a58617c983b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Apr 28 08:28:51 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sat May 02 12:06:15 2026 -0600"
      },
      "message": "tc: use ll_init_map() only when needed\n\nSome setups can have thousands of devices.\n\nll_init_map() is rather expensive for them.\n\nOnly call ll_init_map() in the following cases:\n\n1) tc runs in batch mode.\n2) tc runs in monitor mode.\n3) tc dumps qdiscs/classes/filters for all netdev.\n\nThis greatly reduces RTNL pressure on common operations.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nAcked-by: Jamal Hadi Salim \u003cjhs@mojatatu.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "c99a85a7c8eb5cafbe0f4f681b108a58617c983b",
      "tree": "b7641286cd8bb763ab7dbf725d6d37e3d1eaef4d",
      "parents": [
        "fa2309a9e91ed0634da763aed664380663e6b090"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Tue Apr 21 13:23:59 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Apr 30 09:44:50 2026 -0600"
      },
      "message": "lib: add input validation for time, rate, and size parsing functions\n\nThe parsing functions get_time(), get_time64(), get_rate(), get_rate64(),\nand get_size64() use strtod() to convert user input but don\u0027t validate\nthe parsed values. This allows negative numbers and overflow values to\nbe passed through, which can cause unexpected behavior or security issues\nwhen these values reach the kernel as unsigned integers.\n\nAdd validation to reject:\n- Negative values (which make no sense for time, rate, or size)\n- Overflow conditions (when strtod() returns HUGE_VAL with ERANGE)\n- Empty strings (already checked, but now with explicit comments)\n\nThis prevents potential issues and provides clearer error reporting.\nFixing it in iproute2 does not mean that the kernel is off the hook\nfor handling negative values. Checks are still needed.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "fa2309a9e91ed0634da763aed664380663e6b090",
      "tree": "90ef7adbdc792da4764d2e53635ea2b34010a1c7",
      "parents": [
        "03b33c7550e911b04f8ad06a0f93447308079fcf"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Apr 27 10:28:27 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Apr 30 09:44:30 2026 -0600"
      },
      "message": "man: remove libnetlink man page\n\nThe iproute2 libnetlink is not a public and stable API.\nHaving a man page encourages users to think it is available.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "03b33c7550e911b04f8ad06a0f93447308079fcf",
      "tree": "c7788688afcbe87600edd075365e16a73c5e5b15",
      "parents": [
        "7bd7f33509d0091a0b3ebdef34f70b6d086560d1"
      ],
      "author": {
        "name": "Danielle Ratson",
        "email": "danieller@nvidia.com",
        "time": "Sun Apr 26 14:51:39 2026 +0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Apr 30 09:37:14 2026 -0600"
      },
      "message": "bash-completion: devlink: Fix dev completion trailing colon\n\nCited commit extended \u0027devlink dev show\u0027 to print the instance index when\nthe kernel provides DEVLINK_ATTR_INDEX, printing the device handle followed\nby a colon and the index. The completion code was using the raw text output\nas a word list, causing the device handle to be offered with a trailing\ncolon, e.g. \"pci/0000:01:00.0:\" instead of \"pci/0000:01:00.0\".\n\nSwitch to JSON output and extract device names using jq, consistent\nwith how port completion already works, to reliably get only the device\nhandle names regardless of what additional attributes are printed.\n\nFixes: 36252727bfc6 (\"devlink: show devlink instance index in dev output\")\nSigned-off-by: Danielle Ratson \u003cdanieller@nvidia.com\u003e\nReviewed-by: Ido Schimmel \u003cidosch@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "7bd7f33509d0091a0b3ebdef34f70b6d086560d1",
      "tree": "e1c3825c06f672eb9e8e0b455073306f682e2036",
      "parents": [
        "c7f51f540e6a535fbe7fae0ec0cbf2c335759d0c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Apr 28 07:56:47 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Apr 30 09:33:11 2026 -0600"
      },
      "message": "ll_map: add RTEXT_FILTER_SKIP_STATS to ll_init_map()\n\nll_init_map() only cares about names and ifindex.\n\nWe can save ~300 bytes per device if we ask the kernel to skip stats,\nnot counting many cpu cycles if per-cpu stats are involved.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "c7f51f540e6a535fbe7fae0ec0cbf2c335759d0c",
      "tree": "5eab513d41b26b689bd5d5578d4d2c259c1f7464",
      "parents": [
        "e0517e612199cacaf2dc4d54cbed52deec640c94",
        "b468824a278648ce384f39a4bb1c9dd45a9b3772"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Apr 30 09:32:18 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Apr 30 09:32:18 2026 -0600"
      },
      "message": "Merge remote-tracking branch \u0027main/main\u0027 into next\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "b468824a278648ce384f39a4bb1c9dd45a9b3772",
      "tree": "5eab513d41b26b689bd5d5578d4d2c259c1f7464",
      "parents": [
        "f46186fd0332640cb09f719627e5e14d38d54472"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Apr 27 09:26:58 2026 -0700"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Apr 27 11:39:56 2026 -0700"
      },
      "message": "libnetlink: flush stdout only in monitor mode\n\nAs Eric pointed out, fflush() only makes sense in monitor mode.\nIn other modes buffering the output helps with large outputs\nlike route dumps.\n\nMove the fflush() into rtnl_listen() which is the common code\nused by all monitoring subcommands. This also ensures any future\nmonitor subcommand gets correct flushing behavior automatically.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "f46186fd0332640cb09f719627e5e14d38d54472",
      "tree": "3eb2b777630774a364ca4a60a8097a02163094f0",
      "parents": [
        "29daefc0865b9b2cb81b1476cd0d36564699f7e4"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Fri Apr 24 16:22:57 2026 -0700"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Apr 27 11:39:56 2026 -0700"
      },
      "message": "remove hamradio protocols\n\nThe ax25, rose, and netrom have been removed upstream.\nDrop support for those protocols from iproute2.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "29daefc0865b9b2cb81b1476cd0d36564699f7e4",
      "tree": "a3ca78860884f4188078fe1925c3d429661df362",
      "parents": [
        "e0517e612199cacaf2dc4d54cbed52deec640c94"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Apr 27 10:49:17 2026 -0700"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Apr 27 11:39:56 2026 -0700"
      },
      "message": "uapi: update to 7.1-rc1\n\nUpdate headers from rc1\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "e0517e612199cacaf2dc4d54cbed52deec640c94",
      "tree": "b9514da3e3b4eb6e72e86bd008e6c67dd7706ccf",
      "parents": [
        "7d6709dc732bb9a7ada2a86314f3286ccc0460ba",
        "4d82739fda719a02a0790084ad400061877a3e08"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Wed Apr 15 19:13:12 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Wed Apr 15 19:13:12 2026 -0600"
      },
      "message": "Merge remote-tracking branch \u0027main/main\u0027 into next\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "4d82739fda719a02a0790084ad400061877a3e08",
      "tree": "6827dd9d850ede0eedb9d8a2e386374695b00727",
      "parents": [
        "4151eafe813535de1ce756e978874dca43f439e4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed Apr 15 13:03:07 2026 +0000"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Wed Apr 15 07:29:26 2026 -0700"
      },
      "message": "ss: force a flush in monitor mode\n\nCall fflush() from generic_show_sock() in order to work\nwith pipes and redirects.\n\nAfter this patch, \"ss -E \u0026\u003elog_file\" works as expected.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\n"
    },
    {
      "commit": "4151eafe813535de1ce756e978874dca43f439e4",
      "tree": "d5478a7d5bc786066fb344e9968f2b6d60841450",
      "parents": [
        "fe811be6564c88b9f54cf1c738178dd4be7c5ead"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Apr 13 12:02:03 2026 -0700"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Apr 13 12:42:58 2026 -0700"
      },
      "message": "v7.0.0\n"
    },
    {
      "commit": "fe811be6564c88b9f54cf1c738178dd4be7c5ead",
      "tree": "6ced85aaae2c8918c67991cbc2ae1c3631d87156",
      "parents": [
        "9e99260759b7bb1970745047f6f48bb80e64f2f3"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Fri Apr 10 15:46:27 2026 -0700"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Fri Apr 10 15:46:27 2026 -0700"
      },
      "message": "json_writer: fix builtin test code\n\nThe code under #ifdef was not generating valid JSON\nand it is missing test for control characters.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "9e99260759b7bb1970745047f6f48bb80e64f2f3",
      "tree": "507b5b021cd10fd0219cb624fed330e56c3b90de",
      "parents": [
        "bb647e93db6307c6bef8eaec85a453a3ba0dbeac"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Fri Apr 10 15:38:36 2026 -0700"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Fri Apr 10 15:44:23 2026 -0700"
      },
      "message": "json_writer: support control character escaping\n\nIproute2 never handled control characters in strings correctly.\nThere are some cases like where string is under user control\nlike paths in ss command. Make iproute2 json output conform\nto RFC 8259.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "7d6709dc732bb9a7ada2a86314f3286ccc0460ba",
      "tree": "9a9e57b02935338f68ea34fd7ec66c39f4adffef",
      "parents": [
        "8442022fe4536f5fc04288be86f0c57e1d86a1e5"
      ],
      "author": {
        "name": "Justin Iurman",
        "email": "justin.iurman@6wind.com",
        "time": "Fri Mar 20 15:08:47 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Apr 07 09:02:16 2026 -0600"
      },
      "message": "man8: update seg6 encap documentation\n\nInclude \"tunsrc\" in the man page.\n\nSigned-off-by: Justin Iurman \u003cjustin.iurman@6wind.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "8442022fe4536f5fc04288be86f0c57e1d86a1e5",
      "tree": "ce4c2f414a01589616187a447908e2f04c1c7933",
      "parents": [
        "52204702bde3c5c5b7681541dda294bbf7c0baa4"
      ],
      "author": {
        "name": "Justin Iurman",
        "email": "justin.iurman@6wind.com",
        "time": "Fri Mar 20 15:08:46 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Apr 07 09:02:14 2026 -0600"
      },
      "message": "seg6: add tunsrc support in iproute_lwtunnel\n\nAdd support for the new optional \"tunsrc\" parameter. Now, a tunnel\nsource address can be configured per route and has priority over the\nconfigured per-netns source address (if any).\n\nExample:\nip -6 r a 2001:db8:1::/64 encap seg6 mode encap tunsrc 2001:db8:ab::\n    segs 2001:db8:42::1,2001:db8:ffff::2 dev eth0\n\nSigned-off-by: Justin Iurman \u003cjustin.iurman@6wind.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "52204702bde3c5c5b7681541dda294bbf7c0baa4",
      "tree": "d9f4b101ad88ab479cd64d621df713a4e5eef431",
      "parents": [
        "08095844e6beeb92bea6c6f4c39824f59e9e77f7"
      ],
      "author": {
        "name": "Vitaly Grinberg",
        "email": "vgrinber@redhat.com",
        "time": "Sun Mar 29 10:51:01 2026 +0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 11:23:02 2026 -0600"
      },
      "message": "dpll: Send object per event in JSON monitor mode\n\nPreviously, monitor mode wrapped all events in a single JSON array\ninside a top-level object, which made piping the output to external\ntools (such as `jq`) impossible.\nSend a separate JSON object for each event in monitor mode,\nmaking the output suitable for line-by-line consumers. Skip the\nglobal JSON wrapper for monitor mode.\n\nSigned-off-by: Vitaly Grinberg \u003cvgrinber@redhat.com\u003e\nReviewed-by: Petr Oros \u003cporos@redhat.com\u003e\nReviewed-by: Ivan Vecera \u003civecera@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "08095844e6beeb92bea6c6f4c39824f59e9e77f7",
      "tree": "dcf516eac2005b678f589bd29af36bf9e0d68eea",
      "parents": [
        "73ce1d13ef7d5efe1926c55d05d39a43f5bfe2b8",
        "b71929f43a43745a072453a6296e1fb164b692c6"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 11:07:21 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 11:07:21 2026 -0600"
      },
      "message": "Merge branch \u0027frmr-pools\u0027 into next\n\nChiara Meiohas  says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThis series adds support for managing Fast Registration Memory Region\n(FRMR) pools in rdma tool, enabling users to monitor and configure FRMR\npool behavior.\n\nFRMR pools are used to cache and reuse Fast Registration Memory Region\nhandles to improve performance by avoiding the overhead of repeated\nmemory region creation and destruction. This series introduces commands\nto view FRMR pool statistics and configure pool parameters such as\naging time and pinned handle count.\n\nThe \u0027show\u0027 command allows users to display FRMR pools created on\ndevices, their properties, and usage statistics. Each pool is identified\nby a unique key (hex-encoded properties) for easy reference in\nsubsequent operations.\n\nThe aging \u0027set\u0027 command allows users to modify the aging time parameter,\nwhich controls how long unused FRMR handles remain in the pool before\nbeing released.\n\nThe pinned \u0027set\u0027 command allows users to configure the number of pinned\nhandles in a pool. Pinned handles are exempt from aging and remain\npermanently available for reuse, which is useful for workloads with\npredictable memory region usage patterns.\n\nCommand usage and examples are included in the commits and man pages.\n\nThese patches are complimentary to the kernel patches:\nhttps://lore.kernel.org/linux-rdma/20260226-frmr_pools-v4-0-95360b54f15e@nvidia.com/\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "b71929f43a43745a072453a6296e1fb164b692c6",
      "tree": "dcf516eac2005b678f589bd29af36bf9e0d68eea",
      "parents": [
        "26c8bc1e65635beb7f5061a482aafaba1966b67c"
      ],
      "author": {
        "name": "Michael Guralnik",
        "email": "michaelgur@nvidia.com",
        "time": "Mon Mar 30 20:31:18 2026 +0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 11:03:57 2026 -0600"
      },
      "message": "rdma: Add FRMR pools set pinned command\n\nAdd an option to set the amount of pinned handles to FRMR pool.\nPinned handles are not affected by aging and stay available for reuse in\nthe FRMR pool.\n\nThe pool is identified by a colon-separated key of hexadecimal fields\n(vendor_key:num_dma_blocks:access_flags:ats) as shown in the \u0027show\u0027\ncommand output.\n\nUsage:\n  Set 250 pinned handles to FRMR pool with key 0:800:0:0 on\n  device rocep8s0f0\n  $rdma resource set frmr_pools dev rocep8s0f0 pinned 0:800:0:0 250\n\nSigned-off-by: Michael Guralnik \u003cmichaelgur@nvidia.com\u003e\nReviewed-by: Patrisious Haddad \u003cphaddad@nvidia.com\u003e\nReviewed-by: Chiara Meiohas \u003ccmeiohas@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "26c8bc1e65635beb7f5061a482aafaba1966b67c",
      "tree": "3ef83a361408e8a829741f86f223a4c7d1693fa4",
      "parents": [
        "960b387802507faefcc3ca998e1630fc63f0cfd5"
      ],
      "author": {
        "name": "Michael Guralnik",
        "email": "michaelgur@nvidia.com",
        "time": "Mon Mar 30 20:31:17 2026 +0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 11:02:13 2026 -0600"
      },
      "message": "rdma: Add FRMR pools set aging command\n\nAdd support for configuring the aging period of FRMR pools.\nThe aging mechanism frees unused FRMR handles that have not been\nin use for the specified period.\n\nUsage:\n  rdma resource set frmr_pools dev DEV aging AGING_PERIOD\n\nSigned-off-by: Michael Guralnik \u003cmichaelgur@nvidia.com\u003e\nReviewed-by: Patrisious Haddad \u003cphaddad@nvidia.com\u003e\nReviewed-by: Chiara Meiohas \u003ccmeiohas@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "960b387802507faefcc3ca998e1630fc63f0cfd5",
      "tree": "23664756ccbe181656ae47655f480fc0171f2797",
      "parents": [
        "93368ee345289ed78ff3fdd5b2c11cc85edc4477"
      ],
      "author": {
        "name": "Michael Guralnik",
        "email": "michaelgur@nvidia.com",
        "time": "Mon Mar 30 20:31:16 2026 +0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 11:02:06 2026 -0600"
      },
      "message": "rdma: Add resource FRMR pools show command\n\nAllow users to see the FRMR pools that were created on the devices,\ntheir properties and their usage statistics.\nThe set of properties of each pool are encoded as a colon-separated\nlist of hexadecimal fields (vendor_key:num_dma_blocks:access_flags:ats)\nto simplify referencing a specific pool in \u0027set\u0027 commands.\n\nSample output:\n\n$rdma resource show frmr_pools\ndev rocep8s0f0 key 0:1000:0:0 queue 0 in_use 0 max_in_use 200\ndev rocep8s0f0 key 0:800:0:0 queue 0 in_use 0 max_in_use 200\ndev rocep8s0f0 key 0:400:0:0 queue 0 in_use 0 max_in_use 200\n\n$rdma resource show frmr_pools -d\ndev rocep8s0f0 key 0:1000:0:0 ats 0 access_flags 0 vendor_key 0 num_dma_blocks 4096 queue 0 in_use 0 max_in_use 200\ndev rocep8s0f0 key 0:800:0:0 ats 0 access_flags 0 vendor_key 0 num_dma_blocks 2048 queue 0 in_use 0 max_in_use 200\ndev rocep8s0f0 key 0:400:0:0 ats 0 access_flags 0 vendor_key 0 num_dma_blocks 1024 queue 0 in_use 0 max_in_use 200\n\n$rdma resource show frmr_pools num_dma_blocks 2048\ndev rocep8s0f0 key 0:800:0:0 queue 0 in_use 0 max_in_use 200\n\nSigned-off-by: Michael Guralnik \u003cmichaelgur@nvidia.com\u003e\nReviewed-by: Patrisious Haddad \u003cphaddad@nvidia.com\u003e\nReviewed-by: Chiara Meiohas \u003ccmeiohas@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "93368ee345289ed78ff3fdd5b2c11cc85edc4477",
      "tree": "a563d5d784872c4bd7ab0e74ca66f4ff77ad946b",
      "parents": [
        "73ce1d13ef7d5efe1926c55d05d39a43f5bfe2b8"
      ],
      "author": {
        "name": "Michael Guralnik",
        "email": "michaelgur@nvidia.com",
        "time": "Mon Mar 30 20:31:15 2026 +0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 11:02:03 2026 -0600"
      },
      "message": "rdma: Update headers\n\nUpdate rdma_netlink.h file up to kernel commit dbd0472fd7a5\n(\"RDMA/nldev: Expose kernel-internal FRMR pools in netlink\")\n\nSigned-off-by: Michael Guralnik \u003cmichaelgur@nvidia.com\u003e\nReviewed-by: Patrisious Haddad \u003cphaddad@nvidia.com\u003e\nReviewed-by: Chiara Meiohas \u003ccmeiohas@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "73ce1d13ef7d5efe1926c55d05d39a43f5bfe2b8",
      "tree": "5617094177b4d2504c7d9d7db4d564d62e0f84d5",
      "parents": [
        "8cd29e7e76b0586a2c959696e61a0a2d7334b0d7"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 10:34:21 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 10:34:21 2026 -0600"
      },
      "message": "Update kernel headers\n\nUpdate kernel headers to commit:\n\t3741f8fa004b: (\"Merge branch \u0027dpll-add-frequency-monitoring-feature\u0027\")\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "8cd29e7e76b0586a2c959696e61a0a2d7334b0d7",
      "tree": "ba29a1f6c2e5055d6619e91cc83eeb9e23878a9f",
      "parents": [
        "37c010d59a44beff3f49f3e4cbd49dbd5ba1fb8d",
        "f6cb25efa1b20485f20b9e4cd36679c6060c1ec8"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 10:32:35 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 10:32:35 2026 -0600"
      },
      "message": "Merge branch \u0027tc-64b-burst\u0027 into next\n\nIoana Lazea  says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n        This patchset updates the TBF and HTB queuing discipline\nconfigurations to support burst sizes beyond the legacy 32-bit limits.\nAs network interface speeds increase, the kernel’s internal\nrepresentation of burst (calculated as time at a specific rate) can\neasily exceed the 4 GB threshold. These changes enable userspace to\naccommodate these larger values where the kernel API allows.\n\n        Additionally, if the burst exceeds the upper limit supported by\nthe kernel API, it is now reported as an error in userspace before\nattempting the Netlink transition. Previously, such values would\nsilently overflow, causing corrupted values to be passed to the kernel.\n\n        The implementation follows the approach used for tc police burst\nhandling introduced in commit 3b26e8abf404 (\"tc/police: enable use of 64\nbit burst parameter\"). The reasoning behind the patches proposed here is\nlargely based on the rationale described in the aforementioned change.\n\n        Similarly to the case of the tc police burst option, as\nimplemented now the TBF and HTB burst option limit the sizes of the\nburst up to 4 GB (UINT_MAX for a 32 bit unsigned int) due to the\nconstraints in the user space tooling. Historically, TBF and HTB burst\noptions were capped at 32 bits, which was a sufficient limit for the\nlower line rates common when they were initially developed. However,\nsince the underlying kernel logic treats the burst as a time-based\nvalue, it is already capable of handling larger sizes at high rates\nwithout requiring internal modifications. This patchset bridges that gap\nin the user space tools.\n\n        The detailed technical explanation for this change was\npreviously detailed by Jay Vosburgh:\n\nLink: https://lore.kernel.org/netdev/20250916215731.3431465-1-jay.vosburgh@canonical.com/\n\n        To summarize the details at the link, the burst size is limited\nby the kernel to approximately 274 seconds at the specified rate, and\nhas no inherent 4 GB limit.\n\n        Below is a short description of the main changes made to the TBF\nand HTB queuing disciplines.\n\n        In both TBF and HTB, the primary modification replaces the\nunsigned integer burst variable with an unsigned 64 bit integer variable\n(buffer64) so that burst sizes larger than 4 GB can be represented and\npassed correctly through the kernel API.\n\n        For the TBF qdisc specifically, the following logic was added:\n\nif (buffer64 \u003c (1ULL \u003c\u003c 32)) {\n        __u32 buffer32 \u003d (__u32)buffer64;\n\n        addattr_l(n, 2124, TCA_TBF_BURST, \u0026buffer32, sizeof(buffer32));\n}\n\n        Increasing the burst size representation to 64 bits introduces\nan issue with TCA_TBF_BURST. The kernel expects this attribute as\nNLA_U32 (a 32-bit unsigned value), while the updated implementation may\nproduce burst values exceeding this range. Passing such values would\ncause the tbf_policy validation in the kernel to fail. To avoid this,\nTCA_TBF_BURST is only included when the value fits within 32 bits. When\nthe attribute is omitted (for example, when buffer64 exceeds the 32-bit\nlimit), the kernel falls back to using the value stored in qopt-\u003ebuffer,\nwhich already supports larger burst sizes.\n        As seen in commit 2e04ad424b03 (\"sch_tbf: add\nTBF_BURST/TBF_PBURST attribute\"), TCA_TBF_BURST was originally\nintroduced to handle issues with very small burst values. Omitting the\nattribute for large bursts therefore preserves the intended behavior\nwhile avoiding incompatibilities with the kernel attribute policy.\nAdditionally, the burst value is explicitly cast to 32 bits where\nrequired, ensuring that 64-bit values are not passed to kernel\ninterfaces expecting 32-bit fields.\n\n        These modifications bring the user space tools in line with the\nkernel\u0027s internal 64-bit handling. The logic effectively avoids Netlink\nattribute validation failures while preserving the original intent of\nthe burst mechanism for small values.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "f6cb25efa1b20485f20b9e4cd36679c6060c1ec8",
      "tree": "ba29a1f6c2e5055d6619e91cc83eeb9e23878a9f",
      "parents": [
        "063071c4a8ba860dcb005d6e8d0c92352ade13f0"
      ],
      "author": {
        "name": "Ioana Lazea",
        "email": "ioana.lazea@canonical.com",
        "time": "Mon Mar 23 09:29:13 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 10:30:40 2026 -0600"
      },
      "message": "tc/htb: enable use of 64 bit burst\n\nModify the HTB queueing discipline to allow burst sizes up to the\nlimits supported by the kernel API, which may exceed 4 GB at higher rates.\n\nIn the current implementation, the burst option is effectively limited\nto 4 GB due to the use of a 32-bit field while parsing the burst size.\nHowever, the kernel internally represents the burst in terms of time\nderived from the configured rate. As a result, at sufficiently high\nrates this time-based representation can correspond to burst sizes\nlarger than 4 GB, making such bursts feasible without requiring changes\nto the kernel.\n\nThis change removes the artificial 4 GB limit and allows larger burst\nsizes where supported by the kernel API.\n\nSigned-off-by: Ioana Lazea \u003cioana.lazea@canonical.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "063071c4a8ba860dcb005d6e8d0c92352ade13f0",
      "tree": "989b46878da54994486bbb9a42c19886255b24ad",
      "parents": [
        "37c010d59a44beff3f49f3e4cbd49dbd5ba1fb8d"
      ],
      "author": {
        "name": "Ioana Lazea",
        "email": "ioana.lazea@canonical.com",
        "time": "Mon Mar 23 09:29:12 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 10:30:25 2026 -0600"
      },
      "message": "tc/tbf: enable use of 64 bit burst\n\nModify the TBF queueing discipline configuration to allow burst sizes up\nto the limits supported by the kernel API, which may exceed 4 GB at\nhigher rates.\n\nIn the current implementation, the burst option is effectively limited\nto 4 GB because it is stored in a 32-bit field. However, the kernel\ninternally represents the burst in psched ticks (64 nsec each). At\nsufficiently high rates, this representation can correspond to burst\nsizes larger than 4 GB without requiring kernel changes.\n\nOverflows (burst values that exceed UINT_MAX psched ticks) are now\ncorrectly detected, and flagged as an error, rather than passing\narbitrary psched tick values to the kernel.\n\nThe change to increase the burst size to 64-bit introduced an issue with\nTCA_TBF_BURST. The kernel expects this attribute as NLA_U32 (a 32-bit\nunsigned value), but the updated implementation may produce a 64-bit\nvalue, causing the tbf_policy check in the kernel to fail. However, when\nTCA_TBF_BURST is omitted (which occurs when buffer64 \u003e\u003d UINT_MAX), the\nkernel falls back to using the value assigned to qopt-\u003ebuffer, which\ncorrectly supports large burst sizes. Omitting TCA_TBF_BURST for large\nbursts preserves backward compatibility and aligns with existing kernel\nbehavior. This change therefore ensures correct handling of large burst\nsizes while remaining compatible with kernel and iproute2 expectations.\n\nSigned-off-by: Ioana Lazea \u003cioana.lazea@canonical.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "37c010d59a44beff3f49f3e4cbd49dbd5ba1fb8d",
      "tree": "40ea1b74f7ad82bcd1bcc6e8e32035c707acc948",
      "parents": [
        "90a9c94bdb797292b9d22ca20c66458491c72175"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Fri Apr 03 10:23:09 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 10:27:08 2026 -0600"
      },
      "message": "ss: add support for TCP delack timers\n\nKernel commit c698f5cc940d (\"inet_diag: report delayed ack timer information\")\nadded a new enum for idiag_timer values and support for delayed ack timers.\n\nChange tcp_timer_print() to use the new enum and display \"delack\"\ninstead of \"unknown\":\n\ntt -to\n...\n   ESTAB 10     0   [2002:a05:6830:1f86::]:12875 [2002:a05:6830:1f85::]:50438\n\n        timer:(delack,003ms,0) ino:152178 sk:3004 cgroup:unreachable:189 \u003c-\u003e\n\n        skmem:(r1344,rb12780520,t0,tb262144,f2752,w0,o250,bl0,d0) ts usec_ts\n        ...\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nReviewed-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "90a9c94bdb797292b9d22ca20c66458491c72175",
      "tree": "939ab4ac3daff93bc4757e4c7700489b4ee1032f",
      "parents": [
        "36252727bfc653905bb39bec115a32869452beb1"
      ],
      "author": {
        "name": "Petr Oros",
        "email": "poros@redhat.com",
        "time": "Tue Mar 31 15:59:18 2026 +0200"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Apr 05 10:06:10 2026 -0600"
      },
      "message": "dpll: add direction and state filtering for pin show\n\nAllow filtering pins by direction (input/output) and state\n(connected/disconnected/selectable) in the pin show command.\nThese filters match against parent-device nested attributes and\ncan be combined with the parent-device filter to check a specific\nparent-device relationship.\n\nExample: dpll pin show parent-device 0 direction input state connected\nSigned-off-by: Petr Oros \u003cporos@redhat.com\u003e\nTested-by: Ivan Vecera \u003civecera@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "bb647e93db6307c6bef8eaec85a453a3ba0dbeac",
      "tree": "08d8443e99c0d29913975653e99941fd3a76cf0c",
      "parents": [
        "4942e67f71f2df8e45eff723af114644b0eb9894"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Thu Mar 26 00:03:02 2026 +0100"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Sun Apr 05 08:50:17 2026 -0700"
      },
      "message": "ss: escape characters in command name\n\nSince the process name is under user control with prctl(PR_SET_NAME)\nit may contain escape characters to try and mess with screen output.\n\nReuse the existing string logic from procps (used by ps command).\n\nReported-by: Josiah Stearns \u003cB00TK1D@proton.me\u003e\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\nReviewed-by: Michal Kubecek \u003cmkubecek@suse.cz\u003e\nTested-by: Michal Kubecek \u003cmkubecek@suse.cz\u003e\n"
    },
    {
      "commit": "4942e67f71f2df8e45eff723af114644b0eb9894",
      "tree": "7de0ef65986cb664dc10bf1a1d881cb991e19be7",
      "parents": [
        "b7d23e62224ff3c18611c962c76a937b1ce29191"
      ],
      "author": {
        "name": "Andrea Claudi",
        "email": "aclaudi@redhat.com",
        "time": "Thu Mar 12 19:35:47 2026 +0100"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Tue Mar 24 09:18:56 2026 -0700"
      },
      "message": "dpll: Fix missing notifications in monitor mode\n\nWhen running dpll monitor with output redirected to a file, notifications\ncould be lost because stdout is fully buffered for file redirection instead\nof line-buffered like in interactive mode. If the program is killed or\ncrashes, buffered data is lost before reaching the file.\n\nFix by calling fflush(stdout) after each notification to ensure immediate\nwrites to the log file.\n\nFixes: 656cfc3ce05b (\"dpll: Add dpll command\")\nSigned-off-by: Andrea Claudi \u003caclaudi@redhat.com\u003e\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "36252727bfc653905bb39bec115a32869452beb1",
      "tree": "2605554bc627c65856b3f734ad496c193698b553",
      "parents": [
        "bef61beb2edf354e87130a92d72246a78ac9dbf2"
      ],
      "author": {
        "name": "Jiri Pirko",
        "email": "jiri@nvidia.com",
        "time": "Mon Mar 16 16:44:18 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Mar 22 18:09:58 2026 -0600"
      },
      "message": "devlink: show devlink instance index in dev output\n\nPrint devlink instance index in dev show output when\nthe kernel provides it.\n\nSigned-off-by: Jiri Pirko \u003cjiri@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "bef61beb2edf354e87130a92d72246a78ac9dbf2",
      "tree": "be12bf86b8b6c48987e6db3745dff208dec5fe20",
      "parents": [
        "63a390792dca0a6f71a467043cf7458c916b1977"
      ],
      "author": {
        "name": "Jiri Pirko",
        "email": "jiri@nvidia.com",
        "time": "Mon Mar 16 16:44:17 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Mar 22 18:08:48 2026 -0600"
      },
      "message": "mnl: add fallback implementation for mnl_attr_get_uint()\n\nlibmnl introduced mnl_attr_get_uint() to handle NLA_UINT\nvariable-width attributes. Add a configure check to detect it\nand provide a fallback implementation for older libmnl versions.\n\nSigned-off-by: Jiri Pirko \u003cjiri@nvidia.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "63a390792dca0a6f71a467043cf7458c916b1977",
      "tree": "0e4cd4f71e2f1b58881ec17fcd54d3c3271847aa",
      "parents": [
        "4ac8d234f7361fcba57d2f6b4ff5a27cd1deba2a"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Mar 22 18:07:36 2026 -0600"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sun Mar 22 18:07:36 2026 -0600"
      },
      "message": "Update kernel headers\n\nUpdate kernel headers to commit:\n\tfb78a629b4f0: (\"Merge branch \u0027netdevsim-support-ets-offload\u0027\")\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "4ac8d234f7361fcba57d2f6b4ff5a27cd1deba2a",
      "tree": "c5e2d4dc6ae6513e2c72c26cabeb807094ca647d",
      "parents": [
        "935b2aea06417d5e158c9c8bb2b43047d85793c5"
      ],
      "author": {
        "name": "Victor Nogueira",
        "email": "victor@mojatatu.com",
        "time": "Tue Mar 03 10:07:33 2026 -0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri Mar 06 18:13:49 2026 -0700"
      },
      "message": "tc: Add JSON output support to multiq\n\nSince qdisc core already assumes all qdiscs are able to output JSON,\nadd JSON output support to multiq.\n\nFixes: c91d262f414d (\"tc: jsonify qdisc core\")\nSigned-off-by: Victor Nogueira \u003cvictor@mojatatu.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "935b2aea06417d5e158c9c8bb2b43047d85793c5",
      "tree": "1485f752e859e9b1e7665d3132955c86977272e4",
      "parents": [
        "3ebe6ec196b6d9f4ce4e80f27f85c512f1b5139c"
      ],
      "author": {
        "name": "Victor Nogueira",
        "email": "victor@mojatatu.com",
        "time": "Tue Mar 03 10:07:32 2026 -0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri Mar 06 18:13:44 2026 -0700"
      },
      "message": "tc: Add JSON output support to QFQ\n\nSince qdisc core already assumes all qdiscs are able to output JSON,\nadd JSON output support to QFQ.\n\nFixes: c91d262f414d (\"tc: jsonify qdisc core\")\nSigned-off-by: Victor Nogueira \u003cvictor@mojatatu.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "3ebe6ec196b6d9f4ce4e80f27f85c512f1b5139c",
      "tree": "1cd80071f258def278676bada4f69e9467821252",
      "parents": [
        "e0233c9ea6cdc7a0fd277f4e2a88e07468bb342d"
      ],
      "author": {
        "name": "Victor Nogueira",
        "email": "victor@mojatatu.com",
        "time": "Tue Mar 03 10:07:31 2026 -0300"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Fri Mar 06 18:13:26 2026 -0700"
      },
      "message": "tc: Add JSON output support to HFSC\n\nSince qdisc core already assumes all qdiscs are able to output JSON,\nadd JSON output support to HFSC.\n\nFixes: c91d262f414d (\"tc: jsonify qdisc core\")\nReported-by: Deren Teo \u003cderen.teo@outlook.com\u003e\nCloses: https://lore.kernel.org/netdev/SI2PPF4F82E9256898C9826AF17C3AE8AD9F467A@SI2PPF4F82E9256.apcprd04.prod.outlook.com/\nSigned-off-by: Victor Nogueira \u003cvictor@mojatatu.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "b7d23e62224ff3c18611c962c76a937b1ce29191",
      "tree": "d938124bea3ce54d6bdc57f6307c07d8377e8470",
      "parents": [
        "bf0f8e79cd13dfd782bbeedcf6ace27f076fd144"
      ],
      "author": {
        "name": "Petr Oros",
        "email": "poros@redhat.com",
        "time": "Tue Feb 24 10:12:40 2026 +0100"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Mar 02 08:41:05 2026 -0800"
      },
      "message": "dpll: fix pin id-get type filter parsing\n\ndpll_parse_attr_enum() expects the keyword to be already consumed,\nbut cmd_pin_id_get() used dpll_argv_match() which does not advance\nthe argument pointer. This caused the parser to read the keyword\n\"type\" as the enum value instead of the actual type (e.g. \"gnss\").\n\nUse dpll_argv_match_inc() to properly consume the keyword before\nparsing the value.\n\nFixes: 656cfc3ce05b (\"dpll: Add dpll command\")\nSigned-off-by: Petr Oros \u003cporos@redhat.com\u003e\n"
    },
    {
      "commit": "bf0f8e79cd13dfd782bbeedcf6ace27f076fd144",
      "tree": "50742df578bd005f3448585bf7fc290ca36fcdf2",
      "parents": [
        "218757a8b8bb431b382d7a104edb6ed4336d3b43"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Mar 02 08:37:53 2026 -0800"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Mon Mar 02 08:37:53 2026 -0800"
      },
      "message": "remove leftover references to /usr/lib/route2\n\nSince commit 962692356a1c (\"Makefile: use /usr/share/iproute2 for config\nfiles\") the path was moved to /usr/share in Makefile; but there\nwere leftover references.\n\nReported-by: Yedaya Katsman \u003cyedaya.ka@gmail.com\u003e\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "e0233c9ea6cdc7a0fd277f4e2a88e07468bb342d",
      "tree": "1a8ce4816e7adc972bf6a2e927f3dff0a44f56b4",
      "parents": [
        "e092ff4c9b1b19ebb79b660c04db1644191f66af",
        "5d9d0ae4d7e518220841c0eb24788c0a1373587b"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Mon Mar 02 09:14:46 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Mon Mar 02 09:14:46 2026 -0700"
      },
      "message": "Merge branch \u0027dpll-filter\u0027 into next\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "5d9d0ae4d7e518220841c0eb24788c0a1373587b",
      "tree": "1a8ce4816e7adc972bf6a2e927f3dff0a44f56b4",
      "parents": [
        "0a0fe9c8390deeabf76887c059fa68eb1643b91c"
      ],
      "author": {
        "name": "Petr Oros",
        "email": "poros@redhat.com",
        "time": "Tue Feb 24 10:12:43 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Mon Mar 02 08:44:16 2026 -0700"
      },
      "message": "dpll: add pin filtering by parent-device and parent-pin\n\nThe existing \"device\" argument in \"dpll pin show\" sent DPLL_A_ID\nin the pin dump request, but the kernel does not use this attribute\nfor pin dump filtering. Replace it with client-side parent-device\nfiltering that checks DPLL_A_PIN_PARENT_ID inside nested\nDPLL_A_PIN_PARENT_DEVICE attributes.\n\nAlso add parent-pin filtering for mux pin hierarchies using the\nsame approach with DPLL_A_PIN_PARENT_PIN nested attributes.\n\nRename the \"device\" argument to \"parent-device\" to better reflect\nthe actual semantics.\n\nSigned-off-by: Petr Oros \u003cporos@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "0a0fe9c8390deeabf76887c059fa68eb1643b91c",
      "tree": "c2063dbfd923ad51bd67caca82971cd72c4ee173",
      "parents": [
        "4c4dfe5b4a38933eaa5e585a8ebcefd7e8dcc3e8"
      ],
      "author": {
        "name": "Petr Oros",
        "email": "poros@redhat.com",
        "time": "Tue Feb 24 10:12:42 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Mon Mar 02 08:44:15 2026 -0700"
      },
      "message": "dpll: add client-side filtering for pin show\n\nAdd client-side filtering support for dpll pin show command.\nUsers can filter pins by module-name, clock-id, board-label,\npanel-label, package-label, and type. Multiple filters use AND\nsemantics. Filters work with both dump and single GET operations.\n\nSigned-off-by: Petr Oros \u003cporos@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "4c4dfe5b4a38933eaa5e585a8ebcefd7e8dcc3e8",
      "tree": "c6835bfbc4def20073c68d1d90603c419fa7924c",
      "parents": [
        "e092ff4c9b1b19ebb79b660c04db1644191f66af"
      ],
      "author": {
        "name": "Petr Oros",
        "email": "poros@redhat.com",
        "time": "Tue Feb 24 10:12:41 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Mon Mar 02 08:44:13 2026 -0700"
      },
      "message": "dpll: add client-side filtering for device show\n\nAdd client-side filtering support for dpll device show command.\nUsers can filter devices by module-name, clock-id, type, mode,\nand lock-status. Multiple filters use AND semantics. Filters\nwork with both dump (all devices) and single GET (by id) operations.\n\nSigned-off-by: Petr Oros \u003cporos@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "e092ff4c9b1b19ebb79b660c04db1644191f66af",
      "tree": "f31b76ec2a0af28429bca774efe3b7e5839b452c",
      "parents": [
        "18fbff3d71a86a8bb8e220a0a7d53266bc04d761"
      ],
      "author": {
        "name": "Hangbin Liu",
        "email": "liuhangbin@gmail.com",
        "time": "Thu Feb 26 03:38:44 2026 +0000"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Mon Mar 02 08:35:21 2026 -0700"
      },
      "message": "iplink: bond_slave: print actor and partner churn state\n\nAdd ability to print both actor and partner port churn states\n(MONITOR/CHURN/NO_CHURN) via netlink attributes. This provides\nvisibility into the LACP churn detection state for bond slaves.\n\nSigned-off-by: Hangbin Liu \u003cliuhangbin@gmail.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "18fbff3d71a86a8bb8e220a0a7d53266bc04d761",
      "tree": "8e1a3fade59c956b221b27f740875daaec2559d1",
      "parents": [
        "d37b3aed28c084a73adc5b9988005c5f60ef2f78"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Mon Mar 02 08:32:55 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Mon Mar 02 08:32:55 2026 -0700"
      },
      "message": "Update kernel headers\n\nUpdate kernel headers to commit:\n\t01857fc712f6: (\"Merge branch \u0027net-sched-refactor-qdisc-drop-reasons-into-dedicated-tracepoint\u0027\")\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "218757a8b8bb431b382d7a104edb6ed4336d3b43",
      "tree": "96bcb29f3ece5a8e9b32061bdb5399412f022748",
      "parents": [
        "987be669151005097c84d842563b45e0d04c9be5"
      ],
      "author": {
        "name": "Daniel Schulte",
        "email": "trilader@schroedingers-bit.net",
        "time": "Wed Feb 25 20:39:03 2026 +0100"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Fri Feb 27 17:04:52 2026 -0800"
      },
      "message": "ss: Remove trailing whitespace when output is not a TTY\n\nSometimes a value in the last column might be very long.\nWhen grepping ss output the matched lines are also padded to the longest value.\nIn some cases this can result in multiple lines of the terminal getting filled\nwith spaces.\n\nDon\u0027t print right padding in last visible column when ss can\u0027t determine the\nscreen width.\n\nSigned-off-by: Daniel Schulte \u003ctrilader@schroedingers-bit.net\u003e\n"
    },
    {
      "commit": "987be669151005097c84d842563b45e0d04c9be5",
      "tree": "69a118dfec771146996c4ed418926511b7a5c042",
      "parents": [
        "f08cfd36cdf96b3352a2378fd426378310c455fe"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyich@gmail.com",
        "time": "Mon Feb 23 22:34:35 2026 +0000"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Fri Feb 27 17:04:04 2026 -0800"
      },
      "message": "include/json_print.h: add includes for `__u32` and `timeval` declarations\n\nWithout the change the build fails on `musl` as:\n\n```\n../include/json_print.h:100:44: error: unknown type name ‘__u32’\n  100 | unsigned int print_range(const char *name, __u32 start, __u32 end);\n      |                                            ^~~~~\n...\n../include/json_print.h:82:30: warning: ‘struct timeval’ declared inside parameter list will not be visible outside of this definition or declaration\n   82 | _PRINT_FUNC(tv, const struct timeval *)\n      |                              ^~~~~~~\n../include/json_print.h:57:45: note: in definition of macro ‘_PRINT_FUNC’\n   57 |                                             type value)                 \\\n      |                                             ^~~~\n../include/json_print.h: In function ‘print_tv’:\n../include/json_print.h:60:48: error: passing argument 5 of ‘print_color_tv’ from incompatible pointer type [-Wincompatible-pointer-types]\n   60 |                                                value);                  \\\n      |                                                ^~~~~\n      |                                                |\n      |                                                const struct timeval *\n```\n"
    },
    {
      "commit": "f08cfd36cdf96b3352a2378fd426378310c455fe",
      "tree": "f62b446121048996b0bebbd3e276e922c622731b",
      "parents": [
        "f120cdb35da76ca99932d0428a0917bd01a843da"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Wed Feb 25 12:59:13 2026 -0800"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Wed Feb 25 12:59:13 2026 -0800"
      },
      "message": "ss: suppress netlink errors for unsupported protocols\n\nError messages from sock_diag were only suppressed for extended\nprotocols (\u003e 255).  Protocols like SCTP and DCCP also get EINVAL\nwhen their kernel modules are not loaded.  Remove the conditional\nso all protocols suppress the error.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "d37b3aed28c084a73adc5b9988005c5f60ef2f78",
      "tree": "58997195eb213633cb1beca087d9dd4e957650c3",
      "parents": [
        "1fea8c6f3d9b680ce7457a647d5bffb1bbd9843e"
      ],
      "author": {
        "name": "Matthieu Baerts (NGI0)",
        "email": "matttbe@kernel.org",
        "time": "Mon Feb 23 16:28:40 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Wed Feb 25 08:49:49 2026 -0700"
      },
      "message": "mptcp: monitor: add JSON support\n\nThe command \u0027ip [-t[s]] mptcp monitor\u0027 now produces an output with the JSON\nformat.\n\nThe previous text output has been preserved.\n\nThe JSON support has been added thanks to the print_*() helpers. Note that\nit is also needed to add a signal handler to exit without errors in case of\nSIGINT or SIGTERM, and close the JSON. This last step will print the final\n\u0027]\u0027 when stopping \u0027ip -j mptcp monitor\u0027.\n\nSigned-off-by: Matthieu Baerts (NGI0) \u003cmatttbe@kernel.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "1fea8c6f3d9b680ce7457a647d5bffb1bbd9843e",
      "tree": "41d676226769234172400a325ada745c6ebe63e5",
      "parents": [
        "fa0217870a8b36b81f5c997e897eae86291c429d"
      ],
      "author": {
        "name": "Matthieu Baerts (NGI0)",
        "email": "matttbe@kernel.org",
        "time": "Mon Feb 23 16:28:39 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Wed Feb 25 08:49:46 2026 -0700"
      },
      "message": "utils: timestamp: add JSON support\n\nSupporting JSON is easy with the helpers. The biggest modification is to\nextract the end value. Different keys are used depending on the short or\nlong timestamp option being used, to ease the parsing.\n\nNo behavioural changes intended for the moment, this is a preparation for a\nfuture usage of print_timestamp() within a JSON context.\n\nLike in other helpers supporting JSON, the output stream \u0027fp\u0027 is ignored,\nwhich is fine, because it is always set to \u0027stdout\u0027.\n\nSigned-off-by: Matthieu Baerts (NGI0) \u003cmatttbe@kernel.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "fa0217870a8b36b81f5c997e897eae86291c429d",
      "tree": "72ddd2ce71faf42ae92fe1b73e869d6c0a536247",
      "parents": [
        "f120cdb35da76ca99932d0428a0917bd01a843da"
      ],
      "author": {
        "name": "Matthieu Baerts (NGI0)",
        "email": "matttbe@kernel.org",
        "time": "Mon Feb 23 16:28:38 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Wed Feb 25 08:49:16 2026 -0700"
      },
      "message": "mptcp: uniform stream closure\n\nUse print_nl() instead of print_string(), close the json object, then flush\nthe stream to flush the end of the JSON object ASAP.\n\nNote that in print_mptcp_limit(), the flush should have been done before\nclosing the JSON object, but because there is only one object and the\nclosure was done just before exiting, there was no visual impact.\n\nSigned-off-by: Matthieu Baerts (NGI0) \u003cmatttbe@kernel.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "f120cdb35da76ca99932d0428a0917bd01a843da",
      "tree": "8339b63751e594b9451bbd7c1e6cff0d69e26bd8",
      "parents": [
        "446dd2c18952b4932f5ad1fc274536f26bbaffed",
        "dac1bc6021693902b25a961227e289791e429b91"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Feb 19 09:58:20 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Thu Feb 19 09:58:20 2026 -0700"
      },
      "message": "Merge remote-tracking branch \u0027main\u0027 into next\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "dac1bc6021693902b25a961227e289791e429b91",
      "tree": "2902e8f6964b5362656d5e4740c5e0acfa628e2b",
      "parents": [
        "72f679c0d07629fe9e462c2c52bbe48aaeaa7f83"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Wed Feb 18 07:36:13 2026 -0800"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Wed Feb 18 07:36:13 2026 -0800"
      },
      "message": "v6.19.0\n"
    },
    {
      "commit": "446dd2c18952b4932f5ad1fc274536f26bbaffed",
      "tree": "2502090955cc8db5f95a9b76eb941fde13a5f5a3",
      "parents": [
        "bbe2c8b3229df1752083d1fe7861f1eef5936d2d"
      ],
      "author": {
        "name": "Daniel Zahka",
        "email": "daniel.zahka@gmail.com",
        "time": "Fri Feb 06 13:11:30 2026 -0800"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Wed Feb 18 08:27:30 2026 -0700"
      },
      "message": "devlink: support displaying and resetting to default params\n\nAdd devlink cli support for default param values.\n\nFor param-get, any default values provided by the kernel will be\ndisplayed next to the current value. For param-set,\nDEVLINK_ATTR_PARAM_RESET_DEFAULT can be included in the request to\nrequest that the parameter be reset to its default value.\n\nDefault values of type bool are encoded with a u8 by the kernel to\ndistinguish \"false\" from \"not present\".\n\nSigned-off-by: Daniel Zahka \u003cdaniel.zahka@gmail.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "bbe2c8b3229df1752083d1fe7861f1eef5936d2d",
      "tree": "086690b2a87e0014a6a9787ea3197bc6a49bc7bf",
      "parents": [
        "55600ddd9b6b48b735f1ba875e6c4458b0821892"
      ],
      "author": {
        "name": "Daniel Zahka",
        "email": "daniel.zahka@gmail.com",
        "time": "Fri Feb 06 13:11:29 2026 -0800"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Feb 17 20:54:31 2026 -0700"
      },
      "message": "devlink: Pull the value printing logic out of pr_out_param_value()\n\nSplit the type demux and value print out of pr_out_param_value() into\na new function pr_out_param_value_print(). This new function can be\nre-used for printing additional kinds of values e.g., a default value\nreported by the kernel.\n\nSigned-off-by: Daniel Zahka \u003cdaniel.zahka@gmail.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "55600ddd9b6b48b735f1ba875e6c4458b0821892",
      "tree": "64f5dbcd5f938d164cb404f5343eefe51da3449c",
      "parents": [
        "ff8a8423f6139269c82ba440a4008d21c9e13a87"
      ],
      "author": {
        "name": "Matthieu Baerts (NGI0)",
        "email": "matttbe@kernel.org",
        "time": "Wed Feb 11 13:03:18 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Feb 17 20:52:00 2026 -0700"
      },
      "message": "mptcp: display addr \u0026 ifname in color\n\nSimilar to other commands, now the addresses and interface names in\n\"ip mptcp\" commands are now displayed in color if supported/requested.\n\nThat\u0027s the only attributes that are used in ipmptcp.c: no MAC or state\n(UP/DOWN) attributes.\n\nSigned-off-by: Matthieu Baerts (NGI0) \u003cmatttbe@kernel.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "ff8a8423f6139269c82ba440a4008d21c9e13a87",
      "tree": "a227ad7e4c111052e17cf28932c78a2fdc7178a1",
      "parents": [
        "82c8b9fe511e6c503ef60c16eebc7a715c3189eb"
      ],
      "author": {
        "name": "Matthieu Baerts (NGI0)",
        "email": "matttbe@kernel.org",
        "time": "Wed Feb 11 13:03:17 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Feb 17 20:51:53 2026 -0700"
      },
      "message": "mptcp: monitor: also show iface name\n\nPreviously, only the interface index was printed.\n\nIt is helpful to display the interface name, instead of letting the\nreader doing the translation from the index to the name.\n\nBecause the index was already displayed before, keep it instead of\nreplacing it, just not to break some possible scripts parsing this\noutput.\n\nSigned-off-by: Matthieu Baerts (NGI0) \u003cmatttbe@kernel.org\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "82c8b9fe511e6c503ef60c16eebc7a715c3189eb",
      "tree": "f07ef6554a3b3dbab9a87bea46fc9aa25174328c",
      "parents": [
        "30ff1d8ef2ca98f091535b6960dbd36d6d9b8a3e"
      ],
      "author": {
        "name": "Chen Linxuan",
        "email": "me@black-desk.cn",
        "time": "Tue Feb 10 12:11:48 2026 +0800"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Feb 17 20:18:47 2026 -0700"
      },
      "message": "ip/netns: avoid redundant mounts\n\nOn Ubuntu 24.04, I observed redundant mounts after adding a netns with\nthe commands below:\n\n\tsudo ip netns add xxx\n\tcat /proc/self/mountinfo | grep /run\n\nOutput:\n\n\t29 31 0:26 / /run rw,nosuid,nodev,noexec,relatime shared:5 - tmpfs tmpfs ...\n\t...\n\t203 29 0:26 /netns /run/netns rw,nosuid,nodev,noexec,relatime shared:5 - tmpfs tmpfs ...\n\t6443 203 0:4 net:[4026533578] /run/netns/xxx rw shared:917 - nsfs nsfs rw\n\t6444 29 0:4 net:[4026533578] /run/netns/xxx rw shared:917 - nsfs nsfs rw\n\nThere are two mounts (6443 and 6444) related to the \"xxx\" netns created\nabove.\n\nThis redundancy occurs because systemd changed the default system mount\npropagation to \"shared\" since commit b3ac5f8cb987 (\"mount-setup: change\nsystem mount propagation to shared by default\"). Consequently, mount\npropagation of `/run` is shared.\n\nLink: https://docs.kernel.org/filesystems/sharedsubtree.html\nLink: https://github.com/systemd/systemd/commit/b3ac5f8cb98757416d8660023d6564a7c411f0a0\n\nWhen `ip netns` makes `/run/netns` a mount point, a new bind mount (203)\nis created and attached to the same peer group as mount 29. Since mount\n29 and 203 are in the same peer group (shared:5), any mount under 203\npropagates back to 29, resulting in the redundant mount 6444.\n\nTo prevent this, `/run/netns` should be placed in a new peer group. This\ncan be achieved by reconfiguring `/run/netns` to MS_PRIVATE first, and\nthen to MS_SHARED again.\n\nWith this patch applied, the redundant mount is no longer present, and\n`/run/netns` is in a new peer group (917):\n\n\t29 31 0:26 / /run rw,nosuid,nodev,noexec,relatime shared:5 - tmpfs tmpfs ...\n\t...\n\t203 29 0:26 /netns /run/netns rw,nosuid,nodev,noexec,relatime shared:917 - tmpfs tmpfs ...\n\t6443 203 0:4 net:[4026533578] /run/netns/xxx rw shared:918 - nsfs nsfs rw\n\nI also verified that mount propagation to containers remains functional.\n\nSigned-off-by: Chen Linxuan \u003cme@black-desk.cn\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "30ff1d8ef2ca98f091535b6960dbd36d6d9b8a3e",
      "tree": "72c1d45bc6d7b3aced4a9dad90a7b50b9c31a52d",
      "parents": [
        "58683ee857f11112cad3247e9ddf46f161fb86bc",
        "9f13435a4837343aa9d9c19328bc13d038635cf9"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Feb 17 19:30:24 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Feb 17 19:30:24 2026 -0700"
      },
      "message": "Merge remote-tracking branch \u0027main\u0027 into next\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "58683ee857f11112cad3247e9ddf46f161fb86bc",
      "tree": "04f689be88b29d2bfa75c930db046a2afd66a2dc",
      "parents": [
        "eba20825c41c3c4b4def497a7589ea7006b5fd23"
      ],
      "author": {
        "name": "Ivan Vecera",
        "email": "ivecera@redhat.com",
        "time": "Tue Feb 03 11:14:21 2026 +0100"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Feb 17 15:04:27 2026 -0700"
      },
      "message": "dpll: add support for fractional frequency offset in ppt\n\nAdd support for the DPLL_A_PIN_FRACTIONAL_FREQUENCY_OFFSET_PPT attribute\nto the pin print attributes.\n\nThe logic ensures that in standard (human-readable) output, the legacy\nfractional-frequency-offset is hidden if the new ppt (parts per trillion)\nvalue is present, preventing redundant information.\n\nHowever, the legacy attribute is still printed if:\n1. The output format is JSON (to maintain full data availability).\n2. The new PPT attribute is missing (backward compatibility with older\n   kernels).\n\nHuman-readable output example:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[root@host iproute2-next]# ./dpll/dpll pin show id 5\npin id 5:\n  module-name: zl3073x\n  clock-id: 5855731461854439600\n  board-label: TCX0\n  package-label: REF4P\n  type: ext\n  frequency: 20000000 Hz\n  frequency-supported:\n    20000000 Hz\n  capabilities: 0x6 state-can-change priority-can-change\n  phase-adjust-min: -2147483648\n  phase-adjust-max: 2147483647\n  phase-adjust: 0\n  fractional-frequency-offset-ppt: 3003980\n  esync-frequency: 0 Hz\n  esync-pulse: 0\n  parent-device:\n    id 0 direction input prio 14 state disconnected phase-offset 0\n    id 1 direction input prio 14 state disconnected phase-offset 0\n\nJSON output example:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[root@host iproute2-next]# ./dpll/dpll -j -p pin show id 5\n{\n    \"id\": 5,\n    \"module-name\": \"zl3073x\",\n    \"clock-id\": 5855731461854439600,\n    \"board-label\": \"TCX0\",\n    \"package-label\": \"REF4P\",\n    \"type\": \"ext\",\n    \"frequency\": 20000000,\n    \"frequency-supported\": [ {\n            \"frequency-min\": 20000000,\n            \"frequency-max\": 20000000\n        } ],\n    \"capabilities\": [ \"state-can-change\",\"priority-can-change\" ],\n    \"phase-adjust-min\": -2147483648,\n    \"phase-adjust-max\": 2147483647,\n    \"phase-adjust\": 0,\n    \"fractional-frequency-offset\": 3,\n    \"fractional-frequency-offset-ppt\": 3042863,\n    \"esync-frequency\": 0,\n    \"esync-pulse\": 0,\n    \"parent-device\": [ {\n            \"parent-id\": 0,\n            \"direction\": \"input\",\n            \"prio\": 14,\n            \"state\": \"disconnected\",\n            \"phase-offset\": 0\n        },{\n            \"parent-id\": 1,\n            \"direction\": \"input\",\n            \"prio\": 14,\n            \"state\": \"disconnected\",\n            \"phase-offset\": 0\n        } ]\n}\n\nSigned-off-by: Ivan Vecera \u003civecera@redhat.com\u003e\nReviewed-by: Petr Oros \u003cporos@redhat.com\u003e\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "eba20825c41c3c4b4def497a7589ea7006b5fd23",
      "tree": "b4cda28acec33f4b101917d71bc5f8b6904b5e7e",
      "parents": [
        "cd01762163b719361ff7aeaa7f433ee94363497f"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Feb 17 10:22:49 2026 -0700"
      },
      "committer": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Tue Feb 17 10:22:49 2026 -0700"
      },
      "message": "Update kernel headers\n\nUpdate kernel headers to commit:\n\t37a93dd5c49b: (\"Merge tag \u0027net-next-7.0\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next\")\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    },
    {
      "commit": "9f13435a4837343aa9d9c19328bc13d038635cf9",
      "tree": "11da6b79d5ccdf24e30ae02d8bc502d1f5a03a88",
      "parents": [
        "72f679c0d07629fe9e462c2c52bbe48aaeaa7f83"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Sun Feb 15 17:16:48 2026 -0800"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Sun Feb 15 17:16:48 2026 -0800"
      },
      "message": "uapi: headers update from 7.0-rc0\n\nUpdates from upstream.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\n"
    },
    {
      "commit": "72f679c0d07629fe9e462c2c52bbe48aaeaa7f83",
      "tree": "3c62be7a23218e07b09de65e3787bcc78b8e7606",
      "parents": [
        "96e411ae8e4f248b49ee3e321525ae500be2ea90"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsahern@kernel.org",
        "time": "Sat Jan 31 12:17:40 2026 -0700"
      },
      "committer": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Sat Jan 31 11:44:17 2026 -0800"
      },
      "message": "man: Fix spelling in tipc-link man page\n\nSigned-off-by: David Ahern \u003cdsahern@kernel.org\u003e\n"
    }
  ],
  "next": "96e411ae8e4f248b49ee3e321525ae500be2ea90"
}
