ethtool工具中的wol功能一直很迷惑。今天看了代码将其帮助中下面的参数说明下,如果有不懂wake on lan的请自己到
intel官网查下。
p|u|m|b|a|g|s|d
if (wolopts & WAKE_PHY)//物理接口
*p++ = 'p';
if (wolopts & WAKE_UCAST)//单播
*p++ = 'u';
if (wolopts & WAKE_MCAST)//多播
*p++ = 'm';
if (wolopts & WAKE_BCAST)//广播
*p++ = 'b';
if (wolopts & WAKE_ARP)//arp包
*p++ = 'a';
if (wolopts & WAKE_MAGIC)//magic 包
*p++ = 'g';
if (wolopts & WAKE_MAGICSECURE)//magic 加密包
*p++ = 's';
d很明显了是关闭。
ethtool.c: if (adapter->wol & E1000_WUFC_EX)
ethtool.c: wol->wolopts |= WAKE_UCAST; u
ethtool.c: if (adapter->wol & E1000_WUFC_MC)
ethtool.c: wol->wolopts |= WAKE_MCAST; m
ethtool.c: if (adapter->wol & E1000_WUFC_BC)
ethtool.c: wol->wolopts |= WAKE_BCAST; b
ethtool.c: if (adapter->wol & E1000_WUFC_MAG)
ethtool.c: wol->wolopts |= WAKE_MAGIC; g
ethtool.c: if (adapter->wol & E1000_WUFC_LNKC)
ethtool.c: wol->wolopts |= WAKE_PHY; p
ethtool.c: if (adapter->wol & E1000_WUFC_ARP)
ethtool.c: wol->wolopts |= WAKE_ARP; a
ethtool.c:static int e1000_set_wol(struct net_device *netdev,
ethtool.c: struct ethtool_wolinfo *wol)
ethtool.c: (wol->wolopts & ~(WAKE_UCAST | WAKE_MCAST | WAKE_BCAST |
ethtool.c: adapter->wol = 0;
ethtool.c: if (wol->wolopts & WAKE_UCAST)
ethtool.c: adapter->wol |= E1000_WUFC_EX;
ethtool.c: if (wol->wolopts & WAKE_MCAST)
ethtool.c: adapter->wol |= E1000_WUFC_MC;
ethtool.c: if (wol->wolopts & WAKE_BCAST)
ethtool.c: adapter->wol |= E1000_WUFC_BC;
ethtool.c: if (wol->wolopts & WAKE_MAGIC)
ethtool.c: adapter->wol |= E1000_WUFC_MAG;
ethtool.c: if (wol->wolopts & WAKE_PHY)
ethtool.c: adapter->wol |= E1000_WUFC_LNKC;
ethtool.c: if (wol->wolopts & WAKE_ARP)
ethtool.c: adapter->wol |= E1000_WUFC_ARP;
本文详细解析了ethtool工具中关于WOL(Wake On LAN)功能的实现逻辑,包括其背后的参数说明和具体代码实现过程。通过分析不同选项如物理接口、单播、多播、广播、ARP包、magic包及其加密版本等如何影响WOL功能的激活方式,读者可以深入了解如何利用这些选项来唤醒处于休眠状态的网络设备。
5879

被折叠的 条评论
为什么被折叠?



