pkt->xt.state = state;
 }
 
-static inline void nft_set_pktinfo_proto_unspec(struct nft_pktinfo *pkt,
-                                               struct sk_buff *skb)
+static inline void nft_set_pktinfo_unspec(struct nft_pktinfo *pkt,
+                                         struct sk_buff *skb)
 {
        pkt->tprot_set = false;
        pkt->tprot = 0;
        pkt->xt.fragoff = 0;
 }
 
-static inline void nft_set_pktinfo_unspec(struct nft_pktinfo *pkt,
-                                         struct sk_buff *skb,
-                                         const struct nf_hook_state *state)
-{
-       nft_set_pktinfo(pkt, skb, state);
-       nft_set_pktinfo_proto_unspec(pkt, skb);
-}
-
 /**
  *     struct nft_verdict - nf_tables verdict
  *
 
 #include <net/netfilter/nf_tables.h>
 #include <net/ip.h>
 
-static inline void
-nft_set_pktinfo_ipv4(struct nft_pktinfo *pkt,
-                    struct sk_buff *skb,
-                    const struct nf_hook_state *state)
+static inline void nft_set_pktinfo_ipv4(struct nft_pktinfo *pkt,
+                                       struct sk_buff *skb)
 {
        struct iphdr *ip;
 
-       nft_set_pktinfo(pkt, skb, state);
-
        ip = ip_hdr(pkt->skb);
        pkt->tprot_set = true;
        pkt->tprot = ip->protocol;
        pkt->xt.fragoff = ntohs(ip->frag_off) & IP_OFFSET;
 }
 
-static inline int
-__nft_set_pktinfo_ipv4_validate(struct nft_pktinfo *pkt,
-                               struct sk_buff *skb,
-                               const struct nf_hook_state *state)
+static inline int __nft_set_pktinfo_ipv4_validate(struct nft_pktinfo *pkt,
+                                                 struct sk_buff *skb)
 {
        struct iphdr *iph, _iph;
        u32 len, thoff;
        return 0;
 }
 
-static inline void
-nft_set_pktinfo_ipv4_validate(struct nft_pktinfo *pkt,
-                             struct sk_buff *skb,
-                             const struct nf_hook_state *state)
+static inline void nft_set_pktinfo_ipv4_validate(struct nft_pktinfo *pkt,
+                                                struct sk_buff *skb)
 {
-       nft_set_pktinfo(pkt, skb, state);
-       if (__nft_set_pktinfo_ipv4_validate(pkt, skb, state) < 0)
-               nft_set_pktinfo_proto_unspec(pkt, skb);
+       if (__nft_set_pktinfo_ipv4_validate(pkt, skb) < 0)
+               nft_set_pktinfo_unspec(pkt, skb);
 }
 
 extern struct nft_af_info nft_af_ipv4;
 
 #include <linux/netfilter_ipv6/ip6_tables.h>
 #include <net/ipv6.h>
 
-static inline void
-nft_set_pktinfo_ipv6(struct nft_pktinfo *pkt,
-                    struct sk_buff *skb,
-                    const struct nf_hook_state *state)
+static inline void nft_set_pktinfo_ipv6(struct nft_pktinfo *pkt,
+                                       struct sk_buff *skb)
 {
        unsigned int flags = IP6_FH_F_AUTH;
        int protohdr, thoff = 0;
        unsigned short frag_off;
 
-       nft_set_pktinfo(pkt, skb, state);
-
        protohdr = ipv6_find_hdr(pkt->skb, &thoff, -1, &frag_off, &flags);
        if (protohdr < 0) {
-               nft_set_pktinfo_proto_unspec(pkt, skb);
+               nft_set_pktinfo_unspec(pkt, skb);
                return;
        }
 
        pkt->xt.fragoff = frag_off;
 }
 
-static inline int
-__nft_set_pktinfo_ipv6_validate(struct nft_pktinfo *pkt,
-                               struct sk_buff *skb,
-                               const struct nf_hook_state *state)
+static inline int __nft_set_pktinfo_ipv6_validate(struct nft_pktinfo *pkt,
+                                                 struct sk_buff *skb)
 {
 #if IS_ENABLED(CONFIG_IPV6)
        unsigned int flags = IP6_FH_F_AUTH;
 #endif
 }
 
-static inline void
-nft_set_pktinfo_ipv6_validate(struct nft_pktinfo *pkt,
-                             struct sk_buff *skb,
-                             const struct nf_hook_state *state)
+static inline void nft_set_pktinfo_ipv6_validate(struct nft_pktinfo *pkt,
+                                                struct sk_buff *skb)
 {
-       nft_set_pktinfo(pkt, skb, state);
-       if (__nft_set_pktinfo_ipv6_validate(pkt, skb, state) < 0)
-               nft_set_pktinfo_proto_unspec(pkt, skb);
+       if (__nft_set_pktinfo_ipv6_validate(pkt, skb) < 0)
+               nft_set_pktinfo_unspec(pkt, skb);
 }
 
 extern struct nft_af_info nft_af_ipv6;
 
 {
        struct nft_pktinfo pkt;
 
+       nft_set_pktinfo(&pkt, skb, state);
+
        switch (eth_hdr(skb)->h_proto) {
        case htons(ETH_P_IP):
-               nft_set_pktinfo_ipv4_validate(&pkt, skb, state);
+               nft_set_pktinfo_ipv4_validate(&pkt, skb);
                break;
        case htons(ETH_P_IPV6):
-               nft_set_pktinfo_ipv6_validate(&pkt, skb, state);
+               nft_set_pktinfo_ipv6_validate(&pkt, skb);
                break;
        default:
-               nft_set_pktinfo_unspec(&pkt, skb, state);
+               nft_set_pktinfo_unspec(&pkt, skb);
                break;
        }
 
 
 {
        struct nft_pktinfo pkt;
 
-       nft_set_pktinfo_unspec(&pkt, skb, state);
+       nft_set_pktinfo(&pkt, skb, state);
+       nft_set_pktinfo_unspec(&pkt, skb);
 
        return nft_do_chain(&pkt, priv);
 }
 
 {
        struct nft_pktinfo pkt;
 
-       nft_set_pktinfo_ipv4(&pkt, skb, state);
+       nft_set_pktinfo(&pkt, skb, state);
+       nft_set_pktinfo_ipv4(&pkt, skb);
 
        return nft_do_chain(&pkt, priv);
 }
 
 {
        struct nft_pktinfo pkt;
 
-       nft_set_pktinfo_ipv4(&pkt, skb, state);
+       nft_set_pktinfo(&pkt, skb, state);
+       nft_set_pktinfo_ipv4(&pkt, skb);
 
        return nft_do_chain(&pkt, priv);
 }
 
            ip_hdrlen(skb) < sizeof(struct iphdr))
                return NF_ACCEPT;
 
-       nft_set_pktinfo_ipv4(&pkt, skb, state);
+       nft_set_pktinfo(&pkt, skb, state);
+       nft_set_pktinfo_ipv4(&pkt, skb);
 
        mark = skb->mark;
        iph = ip_hdr(skb);
 
 {
        struct nft_pktinfo pkt;
 
-       nft_set_pktinfo_ipv6(&pkt, skb, state);
+       nft_set_pktinfo(&pkt, skb, state);
+       nft_set_pktinfo_ipv6(&pkt, skb);
 
        return nft_do_chain(&pkt, priv);
 }
 
 {
        struct nft_pktinfo pkt;
 
-       nft_set_pktinfo_ipv6(&pkt, skb, state);
+       nft_set_pktinfo(&pkt, skb, state);
+       nft_set_pktinfo_ipv6(&pkt, skb);
 
        return nft_do_chain(&pkt, priv);
 }
 
        u32 mark, flowlabel;
        int err;
 
-       nft_set_pktinfo_ipv6(&pkt, skb, state);
+       nft_set_pktinfo(&pkt, skb, state);
+       nft_set_pktinfo_ipv6(&pkt, skb);
 
        /* save source/dest address, mark, hoplimit, flowlabel, priority */
        memcpy(&saddr, &ipv6_hdr(skb)->saddr, sizeof(saddr));
 
 {
        struct nft_pktinfo pkt;
 
+       nft_set_pktinfo(&pkt, skb, state);
+
        switch (skb->protocol) {
        case htons(ETH_P_IP):
-               nft_set_pktinfo_ipv4_validate(&pkt, skb, state);
+               nft_set_pktinfo_ipv4_validate(&pkt, skb);
                break;
        case htons(ETH_P_IPV6):
-               nft_set_pktinfo_ipv6_validate(&pkt, skb, state);
+               nft_set_pktinfo_ipv6_validate(&pkt, skb);
                break;
        default:
-               nft_set_pktinfo_unspec(&pkt, skb, state);
+               nft_set_pktinfo_unspec(&pkt, skb);
                break;
        }