[Bug 201240] Ping does not work after MAC change on ixl (Intel Fortville NIC) link

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Jul 1 07:05:48 UTC 2015


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=201240

            Bug ID: 201240
           Summary: Ping does not work after MAC change on ixl (Intel
                    Fortville NIC) link
           Product: Base System
           Version: 11.0-CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: pushkar.kothavade at msystechnologies.com

Issue

I am evaluating functionality of Intel Fortville NIC on FreeBSD platform.
Change in MAC address on a ixl (Intel Fortville NIC) link does not reflect on
NIC. Ping stops working after change in MAC address. Ping works, if PROMISC
mode is set.

Steps to reproduce the problem

# ifconfig ixl1

ixl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000

options=6407bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether 68:05:ca:35:97:29
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (10Gbase-Twinax <full-duplex>)
status: active

# ping XYZ
Ping Works

# ifconfig ixl1 ether 58:04:89:12:34:56
Assign new MAC to the link.

# ping XYZ
Ping does _NOT_ Work

Bug Analysis

While working on this issue, I found bug in the code.
Refer 'ixl_init_locked(struct ixl_pf *pf) function' present in
'dev/ixl/if_ixl.c' file.

 1080         /* Get the latest mac address... User might use a LAA */
 1081         bcopy(IF_LLADDR(vsi->ifp), tmpaddr,
 1082               I40E_ETH_LENGTH_OF_ADDRESS);
 1083         if (!cmp_etheraddr(hw->mac.addr, tmpaddr) &&
 1084             i40e_validate_mac_addr(tmpaddr)) {
 1085                 bcopy(tmpaddr, hw->mac.addr,
 1086                     I40E_ETH_LENGTH_OF_ADDRESS);
 1087                 ret = i40e_aq_mac_address_write(hw,
 1088                     I40E_AQC_WRITE_TYPE_LAA_ONLY,
 1089                     hw->mac.addr, NULL);
 1090                 if (ret) {
 1091                         device_printf(dev, "LLA address"
 1092                          "change failed!!\n");
 1093                         return;
 1094                 }
 1095         }

Refer lines 1083 & 1084 - 'i40e_validate_mac_addr(tmpaddr)' function returns 0
on success. Therefore 'i40e_aq_mac_address_write()' function is not getting
called.

Bug Fix is as Follows -

        if (!cmp_etheraddr(hw->mac.addr, tmpaddr) &&
            i40e_validate_mac_addr(tmpaddr) == I40E_SUCCESS)

After this fix, 'i40e_aq_mac_address_write()' function is getting called.

Conclusion
This 'bug fix' could not resolve the Ping issue.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list