Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b5d5843a authored by Akinobu Mita's avatar Akinobu Mita Committed by David S. Miller
Browse files

mISDN: use memchr_inv



Use memchr_inv to check if the data contains all same bytes.  It is
faster than looping for each byte.

Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Cc: Karsten Keil <isdn@linux-pingi.de>
Cc: netdev@vger.kernel.org
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 658ddaaf
Loading
Loading
Loading
Loading
+3 −13
Original line number Diff line number Diff line
@@ -1112,7 +1112,7 @@ handle_bmsg(struct mISDNchannel *ch, struct sk_buff *skb)
	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) {
@@ -1128,13 +1128,8 @@ handle_bmsg(struct mISDNchannel *ch, struct sk_buff *skb)
			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__);
@@ -1144,13 +1139,8 @@ handle_bmsg(struct mISDNchannel *ch, struct sk_buff *skb)
			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__);