* [PATCH v2 net 1/3] lan78xx: Fix for eeprom read/write when device auto suspend
@ 2017-09-11 18:51 Nisar.Sayed
2017-09-11 20:24 ` Andrew Lunn
0 siblings, 1 reply; 3+ messages in thread
From: Nisar.Sayed @ 2017-09-11 18:51 UTC (permalink / raw)
To: davem; +Cc: UNGLinuxDriver, netdev
From: Nisar Sayed <Nisar.Sayed@microchip.com>
Fix for eeprom read/write when device auto suspend
Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
Signed-off-by: Nisar Sayed <Nisar.Sayed@microchip.com>
---
drivers/net/usb/lan78xx.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index b99a7fb..baf91c7 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -1265,30 +1265,44 @@ static int lan78xx_ethtool_get_eeprom(struct net_device *netdev,
struct ethtool_eeprom *ee, u8 *data)
{
struct lan78xx_net *dev = netdev_priv(netdev);
+ int ret = -EINVAL;
+
+ if (usb_autopm_get_interface(dev->intf) < 0)
+ return ret;
ee->magic = LAN78XX_EEPROM_MAGIC;
- return lan78xx_read_raw_eeprom(dev, ee->offset, ee->len, data);
+ ret = lan78xx_read_raw_eeprom(dev, ee->offset, ee->len, data);
+
+ usb_autopm_put_interface(dev->intf);
+
+ return ret;
}
static int lan78xx_ethtool_set_eeprom(struct net_device *netdev,
struct ethtool_eeprom *ee, u8 *data)
{
struct lan78xx_net *dev = netdev_priv(netdev);
+ int ret = -EINVAL;
+
+ if (usb_autopm_get_interface(dev->intf) < 0)
+ return ret;
/* Allow entire eeprom update only */
if ((ee->magic == LAN78XX_EEPROM_MAGIC) &&
(ee->offset == 0) &&
(ee->len == 512) &&
(data[0] == EEPROM_INDICATOR))
- return lan78xx_write_raw_eeprom(dev, ee->offset, ee->len, data);
+ ret = lan78xx_write_raw_eeprom(dev, ee->offset, ee->len, data);
else if ((ee->magic == LAN78XX_OTP_MAGIC) &&
(ee->offset == 0) &&
(ee->len == 512) &&
(data[0] == OTP_INDICATOR_1))
- return lan78xx_write_raw_otp(dev, ee->offset, ee->len, data);
+ ret = lan78xx_write_raw_otp(dev, ee->offset, ee->len, data);
- return -EINVAL;
+ usb_autopm_put_interface(dev->intf);
+
+ return ret;
}
static void lan78xx_get_strings(struct net_device *netdev, u32 stringset,
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2 net 1/3] lan78xx: Fix for eeprom read/write when device auto suspend
2017-09-11 18:51 [PATCH v2 net 1/3] lan78xx: Fix for eeprom read/write when device auto suspend Nisar.Sayed
@ 2017-09-11 20:24 ` Andrew Lunn
2017-09-12 13:01 ` Nisar.Sayed
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Lunn @ 2017-09-11 20:24 UTC (permalink / raw)
To: Nisar.Sayed; +Cc: davem, UNGLinuxDriver, netdev
On Mon, Sep 11, 2017 at 06:51:49PM +0000, Nisar.Sayed@microchip.com wrote:
> From: Nisar Sayed <Nisar.Sayed@microchip.com>
>
> Fix for eeprom read/write when device auto suspend
>
> Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
> Signed-off-by: Nisar Sayed <Nisar.Sayed@microchip.com>
> ---
> drivers/net/usb/lan78xx.c | 22 ++++++++++++++++++----
> 1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
> index b99a7fb..baf91c7 100644
> --- a/drivers/net/usb/lan78xx.c
> +++ b/drivers/net/usb/lan78xx.c
> @@ -1265,30 +1265,44 @@ static int lan78xx_ethtool_get_eeprom(struct net_device *netdev,
> struct ethtool_eeprom *ee, u8 *data)
> {
> struct lan78xx_net *dev = netdev_priv(netdev);
> + int ret = -EINVAL;
> +
> + if (usb_autopm_get_interface(dev->intf) < 0)
> + return ret;
Hi Nisar
It is better to do
ret = usb_autopm_get_interface(dev->intf;
if (ret)
return ret;
i.e. use the error code usb_autopm_get_interface() gives you.
> ee->magic = LAN78XX_EEPROM_MAGIC;
>
> - return lan78xx_read_raw_eeprom(dev, ee->offset, ee->len, data);
> + ret = lan78xx_read_raw_eeprom(dev, ee->offset, ee->len, data);
> +
> + usb_autopm_put_interface(dev->intf);
> +
> + return ret;
> }
>
> static int lan78xx_ethtool_set_eeprom(struct net_device *netdev,
> struct ethtool_eeprom *ee, u8 *data)
> {
> struct lan78xx_net *dev = netdev_priv(netdev);
> + int ret = -EINVAL;
> +
> + if (usb_autopm_get_interface(dev->intf) < 0)
> + return ret;
Same here.
Andrew
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH v2 net 1/3] lan78xx: Fix for eeprom read/write when device auto suspend
2017-09-11 20:24 ` Andrew Lunn
@ 2017-09-12 13:01 ` Nisar.Sayed
0 siblings, 0 replies; 3+ messages in thread
From: Nisar.Sayed @ 2017-09-12 13:01 UTC (permalink / raw)
To: andrew; +Cc: davem, UNGLinuxDriver, netdev
> > From: Nisar Sayed <Nisar.Sayed@microchip.com>
> >
> > Fix for eeprom read/write when device auto suspend
> >
> > Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to
> > 10/100/1000 Ethernet device driver")
> > Signed-off-by: Nisar Sayed <Nisar.Sayed@microchip.com>
> > ---
> > drivers/net/usb/lan78xx.c | 22 ++++++++++++++++++----
> > 1 file changed, 18 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
> > index b99a7fb..baf91c7 100644
> > --- a/drivers/net/usb/lan78xx.c
> > +++ b/drivers/net/usb/lan78xx.c
> > @@ -1265,30 +1265,44 @@ static int lan78xx_ethtool_get_eeprom(struct
> net_device *netdev,
> > struct ethtool_eeprom *ee, u8 *data) {
> > struct lan78xx_net *dev = netdev_priv(netdev);
> > + int ret = -EINVAL;
> > +
> > + if (usb_autopm_get_interface(dev->intf) < 0)
> > + return ret;
>
> Hi Nisar
>
> It is better to do
>
> ret = usb_autopm_get_interface(dev->intf;
> if (ret)
> return ret;
>
> i.e. use the error code usb_autopm_get_interface() gives you.
>
> > ee->magic = LAN78XX_EEPROM_MAGIC;
> >
> > - return lan78xx_read_raw_eeprom(dev, ee->offset, ee->len, data);
> > + ret = lan78xx_read_raw_eeprom(dev, ee->offset, ee->len, data);
> > +
> > + usb_autopm_put_interface(dev->intf);
> > +
> > + return ret;
> > }
> >
> > static int lan78xx_ethtool_set_eeprom(struct net_device *netdev,
> > struct ethtool_eeprom *ee, u8 *data) {
> > struct lan78xx_net *dev = netdev_priv(netdev);
> > + int ret = -EINVAL;
> > +
> > + if (usb_autopm_get_interface(dev->intf) < 0)
> > + return ret;
>
> Same here.
>
> Andrew
Thanks Andrew, will update it.
- Nisar
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-09-12 13:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-11 18:51 [PATCH v2 net 1/3] lan78xx: Fix for eeprom read/write when device auto suspend Nisar.Sayed
2017-09-11 20:24 ` Andrew Lunn
2017-09-12 13:01 ` Nisar.Sayed
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.