*            This helper is available only if the kernel was compiled with
   *            **CONFIG_NET** configuration option.
   *    Return
 - *            A pointer to **struct bpf_sock**, or **NULL** in case of
 - *            failure. For sockets with reuseport option, **struct bpf_sock**
 - *            return is from **reuse->socks**\ [] using hash of the packet.
 + *            Pointer to *struct bpf_sock*, or NULL in case of failure.
 + *            For sockets with reuseport option, the *struct bpf_sock*
 + *            result is from reuse->socks[] using the hash of the tuple.
   *
-  * int bpf_sk_release(struct bpf_sock *sk)
+  * int bpf_sk_release(struct bpf_sock *sock)
   *    Description
-  *            Release the reference held by *sock*. *sock* must be a non-NULL
-  *            pointer that was returned from bpf_sk_lookup_xxx\ ().
+  *            Release the reference held by *sock*. *sock* must be a
+  *            non-**NULL** pointer that was returned from
+  *            **bpf_sk_lookup_xxx**\ ().
   *    Return
   *            0 on success, or a negative error in case of failure.
   *
        /* ... here. */
  
        __u32 data_meta;
 -      struct bpf_flow_keys *flow_keys;
 +      __bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
        __u64 tstamp;
+       __u32 wire_len;
  };
  
  struct bpf_tunnel_key {
 
        case bpf_ctx_range(struct __sk_buff, data):
        case bpf_ctx_range(struct __sk_buff, data_meta):
        case bpf_ctx_range(struct __sk_buff, data_end):
 -      case bpf_ctx_range(struct __sk_buff, flow_keys):
 +      case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
        case bpf_ctx_range_till(struct __sk_buff, family, local_port):
        case bpf_ctx_range(struct __sk_buff, tstamp):
+       case bpf_ctx_range(struct __sk_buff, wire_len):
                return false;
        }
  
        switch (off) {
        case bpf_ctx_range(struct __sk_buff, tc_classid):
        case bpf_ctx_range(struct __sk_buff, data_meta):
 -      case bpf_ctx_range(struct __sk_buff, flow_keys):
 +      case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
+       case bpf_ctx_range(struct __sk_buff, wire_len):
                return false;
        case bpf_ctx_range(struct __sk_buff, data):
        case bpf_ctx_range(struct __sk_buff, data_end):
        case bpf_ctx_range(struct __sk_buff, tc_classid):
        case bpf_ctx_range_till(struct __sk_buff, family, local_port):
        case bpf_ctx_range(struct __sk_buff, data_meta):
 -      case bpf_ctx_range(struct __sk_buff, flow_keys):
 +      case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
        case bpf_ctx_range(struct __sk_buff, tstamp):
+       case bpf_ctx_range(struct __sk_buff, wire_len):
                return false;
        }
  
        switch (off) {
        case bpf_ctx_range(struct __sk_buff, tc_classid):
        case bpf_ctx_range(struct __sk_buff, data_meta):
 -      case bpf_ctx_range(struct __sk_buff, flow_keys):
 +      case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
        case bpf_ctx_range(struct __sk_buff, tstamp):
+       case bpf_ctx_range(struct __sk_buff, wire_len):
                return false;
        }