From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Samudrala, Sridhar" Subject: Re: [PATCH net-next v11 2/5] netvsc: refactor notifier/event handling code to use the failover framework Date: Wed, 23 May 2018 09:16:59 -0700 Message-ID: References: <1526954781-35359-1-git-send-email-sridhar.samudrala@intel.com> <1526954781-35359-3-git-send-email-sridhar.samudrala@intel.com> <20180522090637.GE2149@nanopsycho> <20180522090853.GF2149@nanopsycho> <39081bce-3913-5b07-3d07-0c476fca5e78@intel.com> <20180522153614.GK2149@nanopsycho> <20180522184112-mutt-send-email-mst@kernel.org> <20180522161246.GN2149@nanopsycho> <8f611f3b-88d7-4d41-fd47-d07f11d0f25a@intel.com> <20180523062748.GA3155@nanopsycho> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: "Michael S. Tsirkin" , stephen@networkplumber.org, davem@davemloft.net, netdev@vger.kernel.org, virtualization@lists.linux-foundation.org, virtio-dev@lists.oasis-open.org, jesse.brandeburg@intel.com, alexander.h.duyck@intel.com, kubakici@wp.pl, jasowang@redhat.com, loseweigh@gmail.com, aaron.f.brown@intel.com, anjali.singhai@intel.com To: Jiri Pirko Return-path: Sender: List-Post: List-Help: List-Unsubscribe: List-Subscribe: In-Reply-To: <20180523062748.GA3155@nanopsycho> Content-Language: en-US List-Id: netdev.vger.kernel.org On 5/22/2018 11:27 PM, Jiri Pirko wrote: > Tue, May 22, 2018 at 10:54:29PM CEST, sridhar.samudrala@intel.com wrote: >> >> On 5/22/2018 9:12 AM, Jiri Pirko wrote: >>> Fixing the subj, sorry about that. >>> >>> Tue, May 22, 2018 at 05:46:21PM CEST, mst@redhat.com wrote: >>>> On Tue, May 22, 2018 at 05:36:14PM +0200, Jiri Pirko wrote: >>>>> Tue, May 22, 2018 at 05:28:42PM CEST, sridhar.samudrala@intel.com wrote: >>>>>> On 5/22/2018 2:08 AM, Jiri Pirko wrote: >>>>>>> Tue, May 22, 2018 at 11:06:37AM CEST, jiri@resnulli.us wrote: >>>>>>>> Tue, May 22, 2018 at 04:06:18AM CEST, sridhar.samudrala@intel.com wrote: >>>>>>>>> Use the registration/notification framework supported by the generic >>>>>>>>> failover infrastructure. >>>>>>>>> >>>>>>>>> Signed-off-by: Sridhar Samudrala >>>>>>>> In previous patchset versions, the common code did >>>>>>>> netdev_rx_handler_register() and netdev_upper_dev_link() etc >>>>>>>> (netvsc_vf_join()). Now, this is still done in netvsc. Why? >>>>>>>> >>>>>>>> This should be part of the common "failover" code. >>>>>> Based on Stephen's feedback on earlier patches, i tried to minimize the changes to >>>>>> netvsc and only commonize the notifier and the main event handler routine. >>>>>> Another complication is that netvsc does part of registration in a delayed workqueue. >>>>> :( This kind of degrades the whole efford of having single solution >>>>> in "failover" module. I think that common parts, as >>>>> netdev_rx_handler_register() and others certainly is should be inside >>>>> the common module. This is not a good time to minimize changes. Let's do >>>>> the thing properly and fix the netvsc mess now. >>>>> >>>>> >>>>>> It should be possible to move some of the code from net_failover.c to generic >>>>>> failover.c in future if Stephen is ok with it. >>>>>> >>>>>> >>>>>>> Also note that in the current patchset you use IFF_FAILOVER flag for >>>>>>> master, yet for the slave you use IFF_SLAVE. That is wrong. >>>>>>> IFF_FAILOVER_SLAVE should be used. >>>>>> Not sure which code you are referring to.  I only set IFF_FAILOVER_SLAVE >>>>>> in patch 3. >>>>> The existing netvsc driver. >>>> We really can't change netvsc's flags now, even if it's interface is >>>> messy, it's being used in the field. We can add a flag that makes netvsc >>>> behave differently, and if this flag also allows enhanced functionality >>>> userspace will gradually switch. >>> Okay, although in this case, it really does not make much sense, so be >>> it. Leave the netvsc set the ->priv flag to IFF_SLAVE as it is doing >>> now. (This once-wrong-forever-wrong policy is flustrating me). >>> >>> But since this patchset introduces private flag IFF_FAILOVER and >>> IFF_FAILOVER_SLAVE, and we set IFF_FAILOVER to the netvsc netdev >>> instance, we should also set IFF_FAILOVER_SLAVE to the enslaved VF >>> netdevice to get at least some consistency between virtio_net and >>> netvsc. >> OK. I can make this change to set/unset IFF_FAILOVER_SLAVE in the netvsc >> register/unregister routines so that it is consistent with virtio_net. >> >> Based on your discussion with mst, i think we can even remove IFF_SLAVE >> setting on netvsc as it should not impact userspace. If Stephen is OK >> we can make this change too. >> >> Do you see any other items that need to be resolved for this series to go in >> this merge window? > As I wrote previously, the common code including rx_handler registration > and setting of flags and master link should be done in a common code, > moved away from netvsc code. > This requires re-introducing the 2 additional ops pre_register and pre_unregister that i removed in the last couple of revisions to minimize netvsc changes and the indirect calls that Stephen expressed some concern. But, as these calls don't happen in hot path, i guess it should not be a big issue and the right way to go. Will submit a v12 with these updates.