aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Reynolds <keith.reynolds@hpe.com>2024-08-05 19:10:18 +0000
committerKevin Bowling <kbowling@FreeBSD.org>2024-08-05 19:10:18 +0000
commit792226e53023cb09566cb78b2135b052e9b62e0e (patch)
tree3fdfcd52d1984580d5cc8059f0e56756840eb76c
parent6cb8b61efe8899ee9194563108d0ae90c1eb89e3 (diff)
qlnxe: Allow MAC address override
The qlnxe driver always sets the NIC's rx mac address to the card's default MAC, ignoring any MAC address set via ifconfig. PR: 278085 MFC after: 1 week
-rw-r--r--sys/dev/qlnx/qlnxe/qlnx_os.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/dev/qlnx/qlnxe/qlnx_os.c b/sys/dev/qlnx/qlnxe/qlnx_os.c
index 6665894d058d..49d3f20aa0c2 100644
--- a/sys/dev/qlnx/qlnxe/qlnx_os.c
+++ b/sys/dev/qlnx/qlnxe/qlnx_os.c
@@ -7055,8 +7055,17 @@ qlnx_set_rx_mode(qlnx_host_t *ha)
{
int rc = 0;
uint8_t filter;
+ const struct ifnet *ifp = ha->ifp;
+ struct sockaddr_dl *sdl;
- rc = qlnx_set_ucast_rx_mac(ha, ECORE_FILTER_REPLACE, ha->primary_mac);
+ if (ifp->if_type == IFT_ETHER && ifp->if_addr != NULL &&
+ ifp->if_addr->ifa_addr != NULL) {
+ sdl = (struct sockaddr_dl *) ifp->if_addr->ifa_addr;
+
+ rc = qlnx_set_ucast_rx_mac(ha, ECORE_FILTER_REPLACE, LLADDR(sdl));
+ } else {
+ rc = qlnx_set_ucast_rx_mac(ha, ECORE_FILTER_REPLACE, ha->primary_mac);
+ }
if (rc)
return rc;