Skip to content

Commit d39e134

Browse files
Wei Fangkuba-moo
authored andcommitted
net: fec: add fec_set_hw_mac_addr() helper function
In the current driver, the MAC address is set in both fec_restart() and fec_set_mac_address(), so a generic helper function fec_set_hw_mac_addr() is added to set the hardware MAC address to make the code more compact. Signed-off-by: Wei Fang <wei.fang@nxp.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/20250711091639.1374411-4-wei.fang@nxp.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 2d33dc6 commit d39e134

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

drivers/net/ethernet/freescale/fec_main.c

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,6 +1123,17 @@ static void fec_ctrl_reset(struct fec_enet_private *fep, bool allow_wol)
11231123
}
11241124
}
11251125

1126+
static void fec_set_hw_mac_addr(struct net_device *ndev)
1127+
{
1128+
struct fec_enet_private *fep = netdev_priv(ndev);
1129+
1130+
writel(ndev->dev_addr[3] | (ndev->dev_addr[2] << 8) |
1131+
(ndev->dev_addr[1] << 16) | (ndev->dev_addr[0] << 24),
1132+
fep->hwp + FEC_ADDR_LOW);
1133+
writel((ndev->dev_addr[5] << 16) | (ndev->dev_addr[4] << 24),
1134+
fep->hwp + FEC_ADDR_HIGH);
1135+
}
1136+
11261137
/*
11271138
* This function is called to start or restart the FEC during a link
11281139
* change, transmit timeout, or to reconfigure the FEC. The network
@@ -1132,7 +1143,6 @@ static void
11321143
fec_restart(struct net_device *ndev)
11331144
{
11341145
struct fec_enet_private *fep = netdev_priv(ndev);
1135-
u32 temp_mac[2];
11361146
u32 rcntl = OPT_FRAME_SIZE | FEC_RCR_MII;
11371147
u32 ecntl = FEC_ECR_ETHEREN;
11381148

@@ -1145,11 +1155,7 @@ fec_restart(struct net_device *ndev)
11451155
* enet-mac reset will reset mac address registers too,
11461156
* so need to reconfigure it.
11471157
*/
1148-
memcpy(&temp_mac, ndev->dev_addr, ETH_ALEN);
1149-
writel((__force u32)cpu_to_be32(temp_mac[0]),
1150-
fep->hwp + FEC_ADDR_LOW);
1151-
writel((__force u32)cpu_to_be32(temp_mac[1]),
1152-
fep->hwp + FEC_ADDR_HIGH);
1158+
fec_set_hw_mac_addr(ndev);
11531159

11541160
/* Clear any outstanding interrupt, except MDIO. */
11551161
writel((0xffffffff & ~FEC_ENET_MII), fep->hwp + FEC_IEVENT);
@@ -3693,7 +3699,6 @@ static void set_multicast_list(struct net_device *ndev)
36933699
static int
36943700
fec_set_mac_address(struct net_device *ndev, void *p)
36953701
{
3696-
struct fec_enet_private *fep = netdev_priv(ndev);
36973702
struct sockaddr *addr = p;
36983703

36993704
if (addr) {
@@ -3710,11 +3715,8 @@ fec_set_mac_address(struct net_device *ndev, void *p)
37103715
if (!netif_running(ndev))
37113716
return 0;
37123717

3713-
writel(ndev->dev_addr[3] | (ndev->dev_addr[2] << 8) |
3714-
(ndev->dev_addr[1] << 16) | (ndev->dev_addr[0] << 24),
3715-
fep->hwp + FEC_ADDR_LOW);
3716-
writel((ndev->dev_addr[5] << 16) | (ndev->dev_addr[4] << 24),
3717-
fep->hwp + FEC_ADDR_HIGH);
3718+
fec_set_hw_mac_addr(ndev);
3719+
37183720
return 0;
37193721
}
37203722

0 commit comments

Comments
 (0)