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

Commit 6878f79a authored by dingtianhong's avatar dingtianhong Committed by David S. Miller
Browse files

net: qlcnic: slight optimization of addr compare



Use the possibly more efficient ether_addr_equal or
ether_addr_equal_unaligned to instead of memcmp.

Cc: Himanshu Madhani <himanshu.madhani@qlogic.com>
Cc: Rajesh Borundia <rajesh.borundia@qlogic.com>
Signed-off-by: default avatarDing Tianhong <dingtianhong@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 202af853
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -462,7 +462,7 @@ int qlcnic_nic_del_mac(struct qlcnic_adapter *adapter, const u8 *addr)
	/* Delete MAC from the existing list */
	list_for_each(head, &adapter->mac_list) {
		cur = list_entry(head, struct qlcnic_mac_vlan_list, list);
		if (memcmp(addr, cur->mac_addr, ETH_ALEN) == 0) {
		if (ether_addr_equal(addr, cur->mac_addr)) {
			err = qlcnic_sre_macaddr_change(adapter, cur->mac_addr,
							0, QLCNIC_MAC_DEL);
			if (err)
@@ -483,7 +483,7 @@ int qlcnic_nic_add_mac(struct qlcnic_adapter *adapter, const u8 *addr, u16 vlan)
	/* look up if already exists */
	list_for_each(head, &adapter->mac_list) {
		cur = list_entry(head, struct qlcnic_mac_vlan_list, list);
		if (memcmp(addr, cur->mac_addr, ETH_ALEN) == 0 &&
		if (ether_addr_equal(addr, cur->mac_addr) &&
		    cur->vlan_id == vlan)
			return 0;
	}
+2 −2
Original line number Diff line number Diff line
@@ -202,7 +202,7 @@ static struct qlcnic_filter *qlcnic_find_mac_filter(struct hlist_head *head,
	struct hlist_node *n;

	hlist_for_each_entry_safe(tmp_fil, n, head, fnode) {
		if (!memcmp(tmp_fil->faddr, addr, ETH_ALEN) &&
		if (ether_addr_equal(tmp_fil->faddr, addr) &&
		    tmp_fil->vlan_id == vlan_id)
			return tmp_fil;
	}
@@ -346,7 +346,7 @@ static void qlcnic_send_filter(struct qlcnic_adapter *adapter,
	head = &(adapter->fhash.fhead[hindex]);

	hlist_for_each_entry_safe(tmp_fil, n, head, fnode) {
		if (!memcmp(tmp_fil->faddr, &src_addr, ETH_ALEN) &&
		if (ether_addr_equal(tmp_fil->faddr, &src_addr) &&
		    tmp_fil->vlan_id == vlan_id) {
			if (jiffies > (QLCNIC_READD_AGE * HZ + tmp_fil->ftime))
				qlcnic_change_filter(adapter, &src_addr,
+2 −2
Original line number Diff line number Diff line
@@ -313,7 +313,7 @@ static void qlcnic_delete_adapter_mac(struct qlcnic_adapter *adapter)

	list_for_each(head, &adapter->mac_list) {
		cur = list_entry(head, struct qlcnic_mac_vlan_list, list);
		if (!memcmp(adapter->mac_addr, cur->mac_addr, ETH_ALEN)) {
		if (ether_addr_equal_unaligned(adapter->mac_addr, cur->mac_addr)) {
			qlcnic_sre_macaddr_change(adapter, cur->mac_addr,
						  0, QLCNIC_MAC_DEL);
			list_del(&cur->list);
@@ -337,7 +337,7 @@ static int qlcnic_set_mac(struct net_device *netdev, void *p)
	if (!is_valid_ether_addr(addr->sa_data))
		return -EINVAL;

	if (!memcmp(adapter->mac_addr, addr->sa_data, ETH_ALEN))
	if (ether_addr_equal_unaligned(adapter->mac_addr, addr->sa_data))
		return 0;

	if (test_bit(__QLCNIC_DEV_UP, &adapter->state)) {