From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <srikanth044@gmail.com>
Received: from mail-vk0-f50.google.com (mail-vk0-f50.google.com
 [209.85.213.50]) by dpdk.org (Postfix) with ESMTP id D68865A49
 for <dev@dpdk.org>; Thu,  8 Oct 2015 02:06:02 +0200 (CEST)
Received: by vkao3 with SMTP id o3so22062698vka.2
 for <dev@dpdk.org>; Wed, 07 Oct 2015 17:06:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :cc:content-type;
 bh=5/J0xSFqqGAC0R9a9DtOkpJccUGxA4zLNt9hN1JQGOg=;
 b=amgawFS20RwjT4TM0bqgyIzzG+SL+jIG7vduNu7dV2Qhs3bGWNmck42KxIBvv2OOwR
 da3qhOim2YntVXKKZwBvjFifyC/j7OhjsKzKp8b4Jy/9HVbtnovZ26drOXVMPrOSuYE7
 nE/3nLgzcrhU+3PWYwhtsRS4mu38zpd1K7jJub9j2VdV4IsKRSxD//PyvVTaU4Pk3bxH
 BOw/ol7owIbxW6Vu186BKrfcY2CjozuXW4eZYhL/H4x17cBHYXSNrTDE5Uddx/o5+nUs
 MjP69808K7AYKcxhWTIfB5Xv2hDDd6gq5nrGS7/+8Jfhj+gzJEQlgwVm4DvEaIt6x/iW
 avPA==
MIME-Version: 1.0
X-Received: by 10.31.140.143 with SMTP id o137mr3099093vkd.56.1444262762279;
 Wed, 07 Oct 2015 17:06:02 -0700 (PDT)
Received: by 10.103.79.207 with HTTP; Wed, 7 Oct 2015 17:06:02 -0700 (PDT)
In-Reply-To: <5615AE9D.7070103@igel.co.jp>
References: <1439463883-19689-1-git-send-email-john.mcnamara@intel.com>
 <1439463883-19689-2-git-send-email-john.mcnamara@intel.com>
 <8CEF83825BEC744B83065625E567D7C219F39EE3@IRSMSX108.ger.corp.intel.com>
 <CA+8eA5kYvvpLzx1J=sY7FFVExKgpguUCqABAzOf-UfYtK1ZA7w@mail.gmail.com>
 <20150928214434.1c8c9c33@urahara>
 <CA+8eA5kadfrYcYZCXzYGwps4pjEGNrq4DvbyvzxVinXJdsiLrQ@mail.gmail.com>
 <5615AE9D.7070103@igel.co.jp>
Date: Wed, 7 Oct 2015 17:06:02 -0700
Message-ID: <CA+8eA5mDRYmeGFnBcGqAdxTv9kjMg_x1+B6X+NSYSiKL7Ce29Q@mail.gmail.com>
From: Srikanth Akula <srikanth044@gmail.com>
To: Tetsuya Mukawa <mukawa@igel.co.jp>
Content-Type: text/plain; charset=UTF-8
X-Content-Filtered-By: Mailman/MimeDel 2.1.15
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] Hotplug
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Thu, 08 Oct 2015 00:06:03 -0000

Hi Tetsuya ,

Thank you for your inputs .

I have thought about this API , but looks like it takes interface name as
argument ( which is a unique name from the rte_pci_dev instance) . But i am
looking to check if the device is attached based on the PCI address .

But ,I am going to test this too

Regards,
Srikanth

On Wed, Oct 7, 2015 at 4:45 PM, Tetsuya Mukawa <mukawa@igel.co.jp> wrote:

> On 2015/10/07 22:16, Srikanth Akula wrote:
> > Thank you for the inputs .
> >
> > I was able to solve the problem of device notification from my control
> > plane.
> >
> > I would like to know if we have any way to know if the PCI device is
> > already attached before we try to attach it ( if the device is already
> > attached pci probe will result an error ) .
> > But i want to know before hand to verify if the device is already
> attached
> > or not .
>
> Hi  Srikanth,
>
> I guess below API may help you.
> (Unfortunately, I am out of office now, so I haven't checked it, but I
> guess it works.)
>
>  - struct rte_eth_dev *rte_eth_dev_allocated(const char *name)
>
> If none NULL value is returned, a device has been already attached.
> If you want to check a physical NIC, above 'name' parameter will be like
> below.
>
>     snprintf(name, size, "%d:%d.%d",
>                         pci_dev->addr.bus, pci_dev->addr.devid,
>                         pci_dev->addr.function);
>
> Thanks,
> Tetsuya
>
> >
> > I came with small API which can be used to check if the pci device is
> > already bound to any driver .
> >
> > +int
> > +rte_eal_pci_is_attached(const char *devargs)
> > +{
> > +        struct rte_pci_device *dev = NULL;
> > +        struct rte_pci_addr addr;
> > +        memset(&addr,0,sizeof(struct rte_pci_addr));
> > +
> > +        if (eal_parse_pci_DomBDF(devargs, &addr) == 0)
> > +          {
> > +            TAILQ_FOREACH(dev, &pci_device_list, next) {
> > +            if (!rte_eal_compare_pci_addr(&dev->addr, &addr))
> > +              {
> > +                if (dev->driver)
> > +                  {
> > +                    /*pci_dump_one_device(stdout,dev);*/
> > +                    RTE_LOG(WARNING, EAL, "Requested device "
> PCI_PRI_FMT
> > +                      " cannot be used\n", dev->addr.domain,
> dev->addr.bus,
> > +                    dev->addr.devid, dev->addr.function);
> > +                   return -1;
> > +                 }
> > +              }
> > +           }
> > +         }
> > +   return 0;
> > +}
> > +
> >
> > Could you please let me know if it is good to have such APIs
> >
> > Regards,
> > _Srikanth_
> >
> >
> > On Mon, Sep 28, 2015 at 9:44 PM, Stephen Hemminger <
> > stephen@networkplumber.org> wrote:
> >
> >> On Mon, 28 Sep 2015 21:12:50 -0700
> >> Srikanth Akula <srikanth044@gmail.com> wrote:
> >>
> >>> Hello ,
> >>>
> >>> I am trying to write an application based on DPDK port hotplug feature
> .
> >> My
> >>> requirement is to get an event when a new PCI devices gets added to the
> >>> system on the go.
> >>>
> >>> Do we have any in-built mechanism in DPDK (UIO/e1000/vfio drivers )
> that
> >> i
> >>> can use to get notifications when a new device gets added . I know the
> >>> alternatives such as inotify etc .
> >>>
> >>> But i am more interested to get equivalent support in dpdk drivers .
> >>>
> >>> Please let me know .
> >>>
> >>> Srikanth
> >> Implementing hotplug requires integration with the OS more than any
> >> additional
> >> DPDK support. What the Brocade vRouter does is leverage the existing
> Linux
> >> udev infrastructure to send a message to the router application which
> then
> >> initializes and sets up the new hardware. Most of the DPDK changes are
> >> upstream
> >> already and involve being able to dynamically add ports on the fly.
> >>
> >>
>
>