/* Parse and check optional cookie */
        if (session->peer_cookie_len > 0) {
                if (memcmp(ptr, &session->peer_cookie[0], session->peer_cookie_len)) {
-                       l2tp_warn(tunnel, L2TP_MSG_DATA,
-                                 "%s: cookie mismatch (%u/%u). Discarding.\n",
-                                 tunnel->name, tunnel->tunnel_id,
-                                 session->session_id);
+                       pr_warn_ratelimited("%s: cookie mismatch (%u/%u). Discarding.\n",
+                                           tunnel->name, tunnel->tunnel_id,
+                                           session->session_id);
                        atomic_long_inc(&session->stats.rx_cookie_discards);
                        goto discard;
                }
                 * If user has configured mandatory sequence numbers, discard.
                 */
                if (session->recv_seq) {
-                       l2tp_warn(session, L2TP_MSG_SEQ,
-                                 "%s: recv data has no seq numbers when required. Discarding.\n",
-                                 session->name);
+                       pr_warn_ratelimited("%s: recv data has no seq numbers when required. Discarding.\n",
+                                           session->name);
                        atomic_long_inc(&session->stats.rx_seq_discards);
                        goto discard;
                }
                        session->send_seq = 0;
                        l2tp_session_set_header_len(session, tunnel->version);
                } else if (session->send_seq) {
-                       l2tp_warn(session, L2TP_MSG_SEQ,
-                                 "%s: recv data has no seq numbers when required. Discarding.\n",
-                                 session->name);
+                       pr_warn_ratelimited("%s: recv data has no seq numbers when required. Discarding.\n",
+                                           session->name);
                        atomic_long_inc(&session->stats.rx_seq_discards);
                        goto discard;
                }
 
        /* Short packet? */
        if (!pskb_may_pull(skb, L2TP_HDR_SIZE_MAX)) {
-               l2tp_warn(tunnel, L2TP_MSG_DATA,
-                         "%s: recv short packet (len=%d)\n",
-                         tunnel->name, skb->len);
+               pr_warn_ratelimited("%s: recv short packet (len=%d)\n",
+                                   tunnel->name, skb->len);
                goto error;
        }
 
        /* Check protocol version */
        version = hdrflags & L2TP_HDR_VER_MASK;
        if (version != tunnel->version) {
-               l2tp_warn(tunnel, L2TP_MSG_DATA,
-                         "%s: recv protocol version mismatch: got %d expected %d\n",
-                         tunnel->name, version, tunnel->version);
+               pr_warn_ratelimited("%s: recv protocol version mismatch: got %d expected %d\n",
+                                   tunnel->name, version, tunnel->version);
                goto error;
        }
 
                        l2tp_session_dec_refcount(session);
 
                /* Not found? Pass to userspace to deal with */
-               l2tp_warn(tunnel, L2TP_MSG_DATA,
-                         "%s: no session found (%u/%u). Passing up.\n",
-                         tunnel->name, tunnel_id, session_id);
+               pr_warn_ratelimited("%s: no session found (%u/%u). Passing up.\n",
+                                   tunnel->name, tunnel_id, session_id);
                goto error;
        }