Date: Wed, 01 Jul 2015 07:05:47 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 201240] Ping does not work after MAC change on ixl (Intel Fortville NIC) link Message-ID: <bug-201240-8@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
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@FreeBSD.org Reporter: pushkar.kothavade@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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-201240-8>