On Tue, 2016-04-05 at 04:22 -0400, Michael Chan wrote: > Allow users to get|set EEE parameters. > > Signed-off-by: Michael Chan <michael.c...@broadcom.com> > --- > drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 73 > +++++++++++++++++++++++ > 1 file changed, 73 insertions(+) > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > index 14f0520..3d5c64f 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > @@ -1379,6 +1379,77 @@ static int bnxt_set_eeprom(struct net_device *dev, > eeprom->len); > } > > +static int bnxt_set_eee(struct net_device *dev, struct ethtool_eee *edata) > +{ > + struct bnxt *bp = netdev_priv(dev); > + struct ethtool_eee *eee = &bp->eee; > + struct bnxt_link_info *link_info = &bp->link_info; > + u32 advertising = > + _bnxt_fw_to_ethtool_adv_spds(link_info->advertising, 0); > + int rc = 0; > + > + if (BNXT_VF(bp)) > + return 0; > + > + if (!(bp->flags & BNXT_FLAG_EEE_CAP)) > + return -EOPNOTSUPP; > + > + if (!edata->eee_enabled) > + goto eee_ok; [...] > + eee->advertised = edata->advertised; > + eee->tx_lpi_enabled = edata->tx_lpi_enabled; > + eee->tx_lpi_timer = edata->tx_lpi_timer; > +eee_ok: > + eee->eee_enabled = edata->eee_enabled; > + > + if (netif_running(dev)) > + rc = bnxt_hwrm_set_link_setting(bp, false, true); > + > + return rc; > +} > + > +static int bnxt_get_eee(struct net_device *dev, struct ethtool_eee *edata) > +{ > + struct bnxt *bp = netdev_priv(dev); > + > + if (!(bp->flags & BNXT_FLAG_EEE_CAP)) > + return -EOPNOTSUPP; > + > + *edata = bp->eee; > + if (!bp->eee.eee_enabled) { > + edata->advertised = 0; > + edata->tx_lpi_enabled = 0;
What about tx_lpi_timer? And, wouldn't it make more sense to do these fixups to the internal state in bnxt_set_eee()? Ben. > + } > + > + if (!bp->eee.eee_active) > + edata->lp_advertised = 0; > + > + return 0; > +} [...] -- Ben Hutchings No political challenge can be met by shopping. - George Monbiot
signature.asc
Description: This is a digitally signed message part