struct l1oip                    *hc = bch->hw;
        int                     ret = -EINVAL;
        struct mISDNhead        *hh = mISDN_HEAD_P(skb);
-       int                     l, ll, i;
+       int                     l, ll;
        unsigned char           *p;
 
        switch (hh->prim) {
                        break;
                }
                /* check for AIS / ulaw-silence */
-               p = skb->data;
                l = skb->len;
-               for (i = 0; i < l; i++) {
-                       if (*p++ != 0xff)
-                               break;
-               }
-               if (i == l) {
+               if (!memchr_inv(skb->data, 0xff, l)) {
                        if (debug & DEBUG_L1OIP_MSG)
                                printk(KERN_DEBUG "%s: got AIS, not sending, "
                                        "but counting\n", __func__);
                        return 0;
                }
                /* check for silence */
-               p = skb->data;
                l = skb->len;
-               for (i = 0; i < l; i++) {
-                       if (*p++ != 0x2a)
-                               break;
-               }
-               if (i == l) {
+               if (!memchr_inv(skb->data, 0x2a, l)) {
                        if (debug & DEBUG_L1OIP_MSG)
                                printk(KERN_DEBUG "%s: got silence, not sending"
                                        ", but counting\n", __func__);