Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: dvb_core: slight optimization of addr compare

Use possibly more efficient ether_addr_equal
instead of memcmp.

Cc: Mauro Carvalho Chehab <m.chehab@samsung.com>
Cc: linux-media@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

dingtianhong and committed by
David S. Miller
5e231c2c 48f045b9

+6 -4
+6 -4
drivers/media/dvb-core/dvb_net.c
··· 179 179 eth = eth_hdr(skb); 180 180 181 181 if (*eth->h_dest & 1) { 182 - if(memcmp(eth->h_dest,dev->broadcast, ETH_ALEN)==0) 182 + if(ether_addr_equal(eth->h_dest,dev->broadcast)) 183 183 skb->pkt_type=PACKET_BROADCAST; 184 184 else 185 185 skb->pkt_type=PACKET_MULTICAST; ··· 674 674 if (priv->rx_mode != RX_MODE_PROMISC) { 675 675 if (priv->ule_skb->data[0] & 0x01) { 676 676 /* multicast or broadcast */ 677 - if (memcmp(priv->ule_skb->data, bc_addr, ETH_ALEN)) { 677 + if (!ether_addr_equal(priv->ule_skb->data, bc_addr)) { 678 678 /* multicast */ 679 679 if (priv->rx_mode == RX_MODE_MULTI) { 680 680 int i; 681 - for(i = 0; i < priv->multi_num && memcmp(priv->ule_skb->data, priv->multi_macs[i], ETH_ALEN); i++) 681 + for(i = 0; i < priv->multi_num && 682 + !ether_addr_equal(priv->ule_skb->data, 683 + priv->multi_macs[i]); i++) 682 684 ; 683 685 if (i == priv->multi_num) 684 686 drop = 1; ··· 690 688 } 691 689 /* else: broadcast */ 692 690 } 693 - else if (memcmp(priv->ule_skb->data, dev->dev_addr, ETH_ALEN)) 691 + else if (!ether_addr_equal(priv->ule_skb->data, dev->dev_addr)) 694 692 drop = 1; 695 693 /* else: destination address matches the MAC address of our receiver device */ 696 694 }