name: irq
         doc: The associated interrupt vector number for the napi
         type: u32
+      -
+        name: pid
+        doc: PID of the napi thread, if NAPI is configured to operate in
+             threaded mode. If NAPI is not in threaded mode (i.e. uses normal
+             softirq context), the attribute will be absent.
+        type: u32
   -
     name: queue
     attributes:
             - id
             - ifindex
             - irq
+            - pid
       dump:
         request:
           attributes:
 
        [NETDEV_A_NAPI_IFINDEX] = { .name = "ifindex", .type = YNL_PT_U32, },
        [NETDEV_A_NAPI_ID] = { .name = "id", .type = YNL_PT_U32, },
        [NETDEV_A_NAPI_IRQ] = { .name = "irq", .type = YNL_PT_U32, },
+       [NETDEV_A_NAPI_PID] = { .name = "pid", .type = YNL_PT_U32, },
 };
 
 struct ynl_policy_nest netdev_napi_nest = {
                                return MNL_CB_ERROR;
                        dst->_present.irq = 1;
                        dst->irq = mnl_attr_get_u32(attr);
+               } else if (type == NETDEV_A_NAPI_PID) {
+                       if (ynl_attr_validate(yarg, attr))
+                               return MNL_CB_ERROR;
+                       dst->_present.pid = 1;
+                       dst->pid = mnl_attr_get_u32(attr);
                }
        }