/****************************************************************************** * mv_eth_tool_get_link * Description: * ethtool get link status * INPUT: * netdev Network device structure pointer * OUTPUT * None * RETURN: * 0 if link is down, 1 if link is up * *******************************************************************************/ u32 mv_eth_tool_get_link(struct net_device *netdev) { struct eth_port *pp = MV_ETH_PRIV(netdev); #ifdef CONFIG_MV_ETH_SWITCH if (isSwitch(pp)) return -EPERM; #endif /* CONFIG_MV_ETH_SWITCH */ if (pp) { if (mvNetaLinkIsUp(pp->port)) return 1; } return 0; }
/****************************************************************************** * mv_eth_tool_get_link * Description: * ethtool get link status * INPUT: * netdev Network device structure pointer * OUTPUT * None * RETURN: * 0 if link is down, 1 if link is up * *******************************************************************************/ u32 mv_eth_tool_get_link(struct net_device *netdev) { struct eth_port *pp = MV_ETH_PRIV(netdev); struct eth_netdev *dev_priv = MV_DEV_PRIV(netdev); if (pp == NULL) { printk(KERN_ERR "interface %s is not supported\n", netdev->name); return -EOPNOTSUPP; } if (isSwitch(pp)) { if (dev_priv == NULL) return -EOPNOTSUPP; return (dev_priv->link_map != 0); } #ifdef CONFIG_MV_PON if (MV_PON_PORT(pp->port)) return mv_pon_link_status(); #endif /* CONFIG_MV_PON */ return mvNetaLinkIsUp(pp->port); }