Skip to content

Commit 368fc26

Browse files
eth: mac address update handling
1 parent e59f2ee commit 368fc26

File tree

4 files changed

+24
-15
lines changed

4 files changed

+24
-15
lines changed

drivers/net/ethernet/altera/intel_fpga_eth_etile.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2633,6 +2633,7 @@ int xtile_check_counter_complete(struct intel_fpga_etile_eth_private *priv,
26332633
u8 bit_mask,
26342634
bool set_bit,
26352635
int align);
2636+
void etile_update_mac_addr(struct intel_fpga_etile_eth_private *priv, u8 *addr);
26362637

26372638
#ifdef CONFIG_INTEL_FPGA_ETILE_DEBUG_FS
26382639
int intel_fpga_etile_init_fs(struct net_device *dev);

drivers/net/ethernet/altera/intel_fpga_eth_main.c

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -652,10 +652,8 @@ static int xtile_open(struct net_device *dev)
652652

653653
init_error:
654654
xtile_free_skbufs(dev);
655-
xtile_free_skbufs(dev);
656-
phy_error:
657-
658655
alloc_skbuf_error:
656+
phy_error:
659657
return ret;
660658
}
661659

@@ -704,6 +702,20 @@ static int xtile_shutdown(struct net_device *dev)
704702
return 0;
705703
}
706704

705+
static int xtile_change_mac(struct net_device *dev, void *inet_ds) {
706+
707+
struct sockaddr *addr = inet_ds;
708+
intel_fpga_xtile_eth_private *priv = netdev_priv(dev);
709+
710+
if (!is_valid_ether_addr(addr->sa_data))
711+
return -EADDRNOTAVAIL;
712+
713+
memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
714+
etile_update_mac_addr(priv, priv->dev->dev_addr);
715+
716+
return 0;
717+
}
718+
707719
/* Transmit a packet (called by the kernel). Dispatches
708720
* either the SGDMA method for transmitting or the
709721
* MSGDMA method, assumes no scatter/gather support,
@@ -713,7 +725,7 @@ static int xtile_shutdown(struct net_device *dev)
713725
*
714726
* Exec: xmit time taken 10us
715727
*/
716-
static int xtile_start_xmit(struct sk_buff *skb, struct net_device *dev)
728+
int xtile_start_xmit(struct sk_buff *skb, struct net_device *dev)
717729
{
718730
unsigned int entry;
719731
dma_addr_t dma_addr;
@@ -921,7 +933,7 @@ static const struct net_device_ops intel_fpga_xtile_netdev_ops = {
921933
.ndo_open = xtile_open,
922934
.ndo_stop = xtile_shutdown,
923935
.ndo_start_xmit = xtile_start_xmit,
924-
.ndo_set_mac_address = eth_mac_addr,
936+
.ndo_set_mac_address = xtile_change_mac,
925937
.ndo_set_rx_mode = xtile_set_rx_mode,
926938
.ndo_change_mtu = xtile_change_mtu,
927939
.ndo_do_ioctl = xtile_do_ioctl,
@@ -1353,14 +1365,12 @@ static int intel_fpga_xtile_probe(struct platform_device *pdev)
13531365
goto err_init_fec;
13541366
}
13551367

1356-
#if 0
13571368
/* disable hotplug in hssi */
1358-
hssi_disable_hotplug(pdev_hssi);
1359-
#endif
1369+
//hssi_disable_hotplug(pdev_hssi);
1370+
13601371
return 0;
13611372

13621373
err_init_fec:
1363-
err_init_phy:
13641374
unregister_netdev(ndev);
13651375
err_register_netdev:
13661376
netif_napi_del(&priv->napi);
@@ -1397,7 +1407,6 @@ intel_fpga_xtile_qsfp_up(intel_fpga_xtile_eth_private *priv) {
13971407
}
13981408

13991409
napi_enable(&priv->napi);
1400-
14011410
rtnl_unlock();
14021411
}
14031412

@@ -1406,10 +1415,7 @@ intel_fpga_xtile_qsfp_down(intel_fpga_xtile_eth_private *priv) {
14061415

14071416
rtnl_lock();
14081417
netif_stop_queue(priv->dev);
1409-
1410-
14111418
napi_disable(&priv->napi);
1412-
14131419
rtnl_unlock();
14141420
}
14151421

drivers/net/ethernet/altera/intel_fpga_eth_main.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
typedef struct intel_fpga_etile_eth_private intel_fpga_xtile_eth_private;
2121

22+
int xtile_start_xmit(struct sk_buff *skb, struct net_device *dev);
23+
2224
int fec_init(struct platform_device *pdev, struct intel_fpga_etile_eth_private *priv);
2325
void intel_fpga_xtile_set_ethtool_ops(struct net_device *dev);
2426

drivers/net/ethernet/altera/intel_fpga_etile_driver.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ static void etile_set_mac(struct intel_fpga_etile_eth_private *priv,
4141
}
4242
}
4343

44-
static void etile_update_mac_addr(struct intel_fpga_etile_eth_private *priv,
45-
u8 *addr)
44+
void etile_update_mac_addr(struct intel_fpga_etile_eth_private *priv,
45+
u8 *addr)
4646
{
4747
u32 msb;
4848
u32 lsb;

0 commit comments

Comments
 (0)