2 * Atheros AR71xx built-in ethernet mac driver
4 * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
5 * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
7 * Based on Atheros' AG7100 driver
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License version 2 as published
11 * by the Free Software Foundation.
16 static int ag71xx_ethtool_get_settings(struct net_device
*dev
,
17 struct ethtool_cmd
*cmd
)
19 struct ag71xx
*ag
= netdev_priv(dev
);
20 struct phy_device
*phydev
= ag
->phy_dev
;
25 return phy_ethtool_gset(phydev
, cmd
);
28 static int ag71xx_ethtool_set_settings(struct net_device
*dev
,
29 struct ethtool_cmd
*cmd
)
31 struct ag71xx
*ag
= netdev_priv(dev
);
32 struct phy_device
*phydev
= ag
->phy_dev
;
37 return phy_ethtool_sset(phydev
, cmd
);
40 static void ag71xx_ethtool_get_drvinfo(struct net_device
*dev
,
41 struct ethtool_drvinfo
*info
)
43 struct ag71xx
*ag
= netdev_priv(dev
);
45 strcpy(info
->driver
, ag
->pdev
->dev
.driver
->name
);
46 strcpy(info
->version
, AG71XX_DRV_VERSION
);
47 strcpy(info
->bus_info
, dev_name(&ag
->pdev
->dev
));
50 static u32
ag71xx_ethtool_get_msglevel(struct net_device
*dev
)
52 struct ag71xx
*ag
= netdev_priv(dev
);
54 return ag
->msg_enable
;
57 static void ag71xx_ethtool_set_msglevel(struct net_device
*dev
, u32 msg_level
)
59 struct ag71xx
*ag
= netdev_priv(dev
);
61 ag
->msg_enable
= msg_level
;
64 struct ethtool_ops ag71xx_ethtool_ops
= {
65 .set_settings
= ag71xx_ethtool_set_settings
,
66 .get_settings
= ag71xx_ethtool_get_settings
,
67 .get_drvinfo
= ag71xx_ethtool_get_drvinfo
,
68 .get_msglevel
= ag71xx_ethtool_get_msglevel
,
69 .set_msglevel
= ag71xx_ethtool_set_msglevel
,
70 .get_link
= ethtool_op_get_link
,