}
 EXPORT_SYMBOL_GPL(generic_xdp_tx);
 
-static struct static_key generic_xdp_needed __read_mostly;
+static DEFINE_STATIC_KEY_FALSE(generic_xdp_needed_key);
 
 int do_xdp_generic(struct bpf_prog *xdp_prog, struct sk_buff *skb)
 {
 
        trace_netif_rx(skb);
 
-       if (static_key_false(&generic_xdp_needed)) {
+       if (static_branch_unlikely(&generic_xdp_needed_key)) {
                int ret;
 
                preempt_disable();
                        bpf_prog_put(old);
 
                if (old && !new) {
-                       static_key_slow_dec(&generic_xdp_needed);
+                       static_branch_dec(&generic_xdp_needed_key);
                } else if (new && !old) {
-                       static_key_slow_inc(&generic_xdp_needed);
+                       static_branch_inc(&generic_xdp_needed_key);
                        dev_disable_lro(dev);
                        dev_disable_gro_hw(dev);
                }
        if (skb_defer_rx_timestamp(skb))
                return NET_RX_SUCCESS;
 
-       if (static_key_false(&generic_xdp_needed)) {
+       if (static_branch_unlikely(&generic_xdp_needed_key)) {
                int ret;
 
                preempt_disable();