/****************************************************************************** * mv_eth_tool_get_pauseparam * Description: * ethtool get pause parameters * INPUT: * netdev Network device structure pointer * OUTPUT * pause Pause paranmeters * RETURN: * None * *******************************************************************************/ void mv_eth_tool_get_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause) { struct eth_port *priv = MV_ETH_PRIV(netdev); int port = priv->port; MV_ETH_PORT_STATUS portStatus; MV_ETH_PORT_FC flowCtrl; if ((priv == NULL) || (isSwitch(priv)) || (MV_PON_PORT(priv->port))) { printk(KERN_ERR "%s is not supported on %s\n", __func__, netdev->name); return; } mvNetaFlowCtrlGet(port, &flowCtrl); if ((flowCtrl == MV_ETH_FC_AN_NO) || (flowCtrl == MV_ETH_FC_AN_SYM) || (flowCtrl == MV_ETH_FC_AN_ASYM)) pause->autoneg = AUTONEG_ENABLE; else pause->autoneg = AUTONEG_DISABLE; mvNetaLinkStatus(port, &portStatus); if (portStatus.rxFc == MV_ETH_FC_DISABLE) pause->rx_pause = 0; else pause->rx_pause = 1; if (portStatus.txFc == MV_ETH_FC_DISABLE) pause->tx_pause = 0; else pause->tx_pause = 1; }
/****************************************************************************** * mv_eth_tool_get_pauseparam * Description: * ethtool get pause parameters * INPUT: * netdev Network device structure pointer * OUTPUT * pause Pause paranmeters * RETURN: * None * *******************************************************************************/ void mv_eth_tool_get_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause) { struct eth_port *priv = MV_ETH_PRIV(netdev); int port = priv->port; MV_ETH_PORT_STATUS portStatus; MV_ETH_PORT_FC flowCtrl; #ifdef CONFIG_MV_ETH_SWITCH if (isSwitch(priv)) { printk("mv_eth_tool_get_pauseparam() is not supported on a switch port\n"); return; } #endif /* CONFIG_MV_ETH_SWITCH */ mvNetaFlowCtrlGet(port, &flowCtrl); if ((flowCtrl == MV_ETH_FC_AN_NO) || (flowCtrl == MV_ETH_FC_AN_SYM) || (flowCtrl == MV_ETH_FC_AN_ASYM)) pause->autoneg = AUTONEG_ENABLE; else pause->autoneg = AUTONEG_DISABLE; mvNetaLinkStatus(port, &portStatus); if (portStatus.rxFc == MV_ETH_FC_DISABLE) pause->rx_pause = 0; else pause->rx_pause = 1; if (portStatus.txFc == MV_ETH_FC_DISABLE) pause->tx_pause = 0; else pause->tx_pause = 1; }