When replacing compare_ether_addr() with
ether_addr_equal() result check condition
isn't revised:

  - compare_ether_addr() returns zero in case
    of both MAC addreses are same and non-zero
    overwise. Result type is unsigned int.

  - ether_addr_equal() returns non-zero (1, true)
    in case of both MAC addresses are same and
    zero (0, false) overwise. Result type is bool (0,1).

Thus igb_del_mac_filter() can't delete MAC address
from filter because it looks for address not equal
to being deleted.

Signed-off-by: Serhii Popovych <spopo...@cisco.com>
---
 src/igb_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/igb_main.c b/src/igb_main.c
index 2dff0f4..13cf6b6 100644
--- a/src/igb_main.c
+++ b/src/igb_main.c
@@ -9447,7 +9447,7 @@ int igb_del_mac_filter(struct igb_adapter *adapter, u8 
*addr, u16 queue)
        if (is_zero_ether_addr(addr))
                return 0;
        for (i = 0; i < hw->mac.rar_entry_count; i++) {
-               if (!ether_addr_equal(addr, adapter->mac_table[i].addr) &&
+               if (ether_addr_equal(addr, adapter->mac_table[i].addr) &&
                    adapter->mac_table[i].queue == queue) {
                        adapter->mac_table[i].state = IGB_MAC_STATE_MODIFIED;
                        memset(adapter->mac_table[i].addr, 0, ETH_ALEN);
-- 
1.8.3.1


------------------------------------------------------------------------------
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to