[NHA_ENCAP]             = { .type = NLA_NESTED },
        [NHA_FDB]               = { .type = NLA_FLAG },
        [NHA_RES_GROUP]         = { .type = NLA_NESTED },
+       [NHA_HW_STATS_ENABLE]   = NLA_POLICY_MAX(NLA_U32, true),
 };
 
 static const struct nla_policy rtm_nh_policy_get[] = {
                goto nla_put_failure;
 
        if (op_flags & NHA_OP_FLAG_DUMP_STATS &&
-           nla_put_nh_group_stats(skb, nh))
+           (nla_put_u32(skb, NHA_HW_STATS_ENABLE, nhg->hw_stats) ||
+            nla_put_nh_group_stats(skb, nh)))
                goto nla_put_failure;
 
        return 0;
                if (!tb[i])
                        continue;
                switch (i) {
+               case NHA_HW_STATS_ENABLE:
                case NHA_FDB:
                        continue;
                case NHA_RES_GROUP:
        if (cfg->nh_fdb)
                nhg->fdb_nh = 1;
 
+       if (cfg->nh_hw_stats)
+               nhg->hw_stats = true;
+
        rcu_assign_pointer(nh->nh_grp, nhg);
 
        return nh;
                        err = rtm_to_nh_config_grp_res(tb[NHA_RES_GROUP],
                                                       cfg, extack);
 
+               if (tb[NHA_HW_STATS_ENABLE])
+                       cfg->nh_hw_stats = nla_get_u32(tb[NHA_HW_STATS_ENABLE]);
+
                /* no other attributes should be set */
                goto out;
        }
                goto out;
        }
 
+       if (tb[NHA_HW_STATS_ENABLE]) {
+               NL_SET_ERR_MSG(extack, "Cannot enable nexthop hardware statistics for non-group nexthops");
+               goto out;
+       }
 
        err = 0;
 out: