Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 134669
b: refs/heads/master
c: 4da1294
h: refs/heads/master
i:
  134667: 498357d
v: v3
  • Loading branch information
Dhananjay Phadke authored and David S. Miller committed Feb 25, 2009
1 parent 7044a4a commit 08702cf
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ba599d4f0d2071abc049cb6345eab510a8a3643e
refs/heads/master: 4da129421f898147235a3e6b40234d789df208b7
49 changes: 49 additions & 0 deletions trunk/drivers/net/netxen/netxen_nic_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -810,6 +810,53 @@ static int netxen_nic_set_tso(struct net_device *dev, u32 data)
return 0;
}

static void
netxen_nic_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
{
struct netxen_adapter *adapter = netdev_priv(dev);
u32 wol_cfg = 0;

wol->supported = 0;
wol->wolopts = 0;

if (NX_IS_REVISION_P2(adapter->ahw.revision_id))
return;

wol_cfg = netxen_nic_reg_read(adapter, NETXEN_WOL_CONFIG_NV);
if (wol_cfg & (1UL << adapter->portnum))
wol->supported |= WAKE_MAGIC;

wol_cfg = netxen_nic_reg_read(adapter, NETXEN_WOL_CONFIG);
if (wol_cfg & (1UL << adapter->portnum))
wol->wolopts |= WAKE_MAGIC;
}

static int
netxen_nic_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
{
struct netxen_adapter *adapter = netdev_priv(dev);
u32 wol_cfg = 0;

if (NX_IS_REVISION_P2(adapter->ahw.revision_id))
return -EOPNOTSUPP;

if (wol->wolopts & ~WAKE_MAGIC)
return -EOPNOTSUPP;

wol_cfg = netxen_nic_reg_read(adapter, NETXEN_WOL_CONFIG_NV);
if (!(wol_cfg & (1 << adapter->portnum)))
return -EOPNOTSUPP;

wol_cfg = netxen_nic_reg_read(adapter, NETXEN_WOL_CONFIG);
if (wol->wolopts & WAKE_MAGIC)
wol_cfg |= 1UL << adapter->portnum;
else
wol_cfg &= ~(1UL << adapter->portnum);
netxen_nic_reg_write(adapter, NETXEN_WOL_CONFIG, wol_cfg);

return 0;
}

/*
* Set the coalescing parameters. Currently only normal is supported.
* If rx_coalesce_usecs == 0 or rx_max_coalesced_frames == 0 then set the
Expand Down Expand Up @@ -916,6 +963,8 @@ struct ethtool_ops netxen_nic_ethtool_ops = {
.set_sg = ethtool_op_set_sg,
.get_tso = netxen_nic_get_tso,
.set_tso = netxen_nic_set_tso,
.get_wol = netxen_nic_get_wol,
.set_wol = netxen_nic_set_wol,
.self_test = netxen_nic_diag_test,
.get_strings = netxen_nic_get_strings,
.get_ethtool_stats = netxen_nic_get_ethtool_stats,
Expand Down
3 changes: 3 additions & 0 deletions trunk/drivers/net/netxen/netxen_nic_hdr.h
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,9 @@ enum {
#define NETXEN_PORT_MODE_ADDR (NETXEN_CAM_RAM(0x24))
#define NETXEN_WOL_PORT_MODE (NETXEN_CAM_RAM(0x198))

#define NETXEN_WOL_CONFIG_NV (NETXEN_CAM_RAM(0x184))
#define NETXEN_WOL_CONFIG (NETXEN_CAM_RAM(0x188))

#define NX_PEG_TUNE_MN_PRESENT 0x1
#define NX_PEG_TUNE_CAPABILITY (NETXEN_CAM_RAM(0x02c))

Expand Down

0 comments on commit 08702cf

Please sign in to comment.