From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCHv3 2/2] tg3: Allow ethtool to enable/disable loopback. Date: Wed, 4 May 2011 08:04:08 -0700 Message-ID: <20110504080408.0142f701@nehalam> References: <1304471935-402-1-git-send-email-maheshb@google.com> <1304471935-402-2-git-send-email-maheshb@google.com> <1304471935-402-3-git-send-email-maheshb@google.com> <20110504111112.GA15486@rere.qmqm.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: Mahesh Bandewar , Matt Carlson , David Miller , netdev , Michael Chan , Ben Hutchings , Tom Herbert To: =?UTF-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= Return-path: Received: from mail.vyatta.com ([76.74.103.46]:45493 "EHLO mail.vyatta.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754693Ab1EDPEM convert rfc822-to-8bit (ORCPT ); Wed, 4 May 2011 11:04:12 -0400 In-Reply-To: <20110504111112.GA15486@rere.qmqm.pl> Sender: netdev-owner@vger.kernel.org List-ID: On Wed, 4 May 2011 13:11:12 +0200 Micha=C5=82 Miros=C5=82aw wrote: > On Tue, May 03, 2011 at 06:18:55PM -0700, Mahesh Bandewar wrote: > > This patch adds tg3_set_features() to handle loopback mode. Current= ly the > > capability is added for the devices which support internal MAC loop= back mode. > > So when enabled, it enables internal-MAC loopback. > [...] > > diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c > > index 7c7c9a8..46de633 100644 > > --- a/drivers/net/tg3.c > > +++ b/drivers/net/tg3.c > > @@ -6319,6 +6319,51 @@ static u32 tg3_fix_features(struct net_devic= e *dev, u32 features) > > return features; > > } > > =20 > > +static int tg3_set_features(struct net_device *dev, u32 features) > > +{ > > + struct tg3 *tp =3D netdev_priv(dev); > > + u32 cur_mode =3D 0; > > + int err =3D 0; > > + > > + if (!netif_running(dev)) { > > + err =3D -EAGAIN; > > + goto sfeatures_out; > > + } >=20 > netdev_update_features() is not designed to handle -EAGAIN from > ndo_set_features callback. It might be useful to implement this > handling, but in this case you should just return 0 and check > dev->features in ndo_open callback. >=20 > Best Regards, > Micha=C5=82 Miros=C5=82aw EAGAIN is a bad choice of error code anyway. It implies that the application should retry, which in this case is not true. This error code is used for things like flow controlled sockets where the application should do a select/poll and the condition will clear when other side has read. Why not use ENETDOWN instead?