Hi Jan,

> -----Original Message-----
> From: Jan Viktorin [mailto:viktorin at rehivetech.com]
> Sent: Sunday, October 16, 2016 6:27 AM
> To: Shreyansh Jain <shreyansh.jain at nxp.com>
> Cc: dev at dpdk.org; thomas.monjalon at 6wind.com; david.marchand at 6wind.com
> Subject: Re: [PATCH v4 11/17] eal/soc: add default scan for Soc devices
> 
> On Sat, 15 Oct 2016 19:15:02 +0530
> Shreyansh Jain <shreyansh.jain at nxp.com> wrote:
> 
> > From: Jan Viktorin <viktorin at rehivetech.com>
> >
> > Default implementation which scans the sysfs platform devices hierarchy.
> > For each device, extract the ueven and convert into rte_soc_device.
> >
> > The information populated can then be used in probe to match against
> > the drivers registered.
> >
> > Signed-off-by: Jan Viktorin <viktorin at rehivetech.com>
> > [Shreyansh: restructure commit to be an optional implementation]
> > Signed-off-by: Shreyansh Jain <shreyansh.jain at nxp.com>
> 
> [...]
> 
> > +
> > +int
> > +rte_eal_soc_scan(void)
> 
> What about naming it rte_eal_soc_scan_default? This would underline the
> fact that this function can be replaced.

Yes, that would be in sync with match default. I will do it.

> 
> Second, this is for the 7/17 patch:
> 
> -/* register a driver */
>  void
>  rte_eal_soc_register(struct rte_soc_driver *driver)
>  {
> +     /* For a valid soc driver, match and scan function
> +      * should be provided.
> +      */
> +     RTE_VERIFY(driver != NULL);
> +     RTE_VERIFY(driver->match_fn != NULL);
> +     RTE_VERIFY(driver->scan_fn != NULL);
> 
> What about setting the match_fn and scan_fn to default implementations if
> they
> are NULL? This would make the standard/default approach easier to use.
> 
>       TAILQ_INSERT_TAIL(&soc_driver_list, driver, next);
>  }

I am not in favor of a forced default. What if user never intended it - it 
would lead to wrong scan being used and only intimation which can provided to 
user is a log.
Selecting such functions should be a model of PMD - one which is enforced.

> 
> > +{
> > +   struct dirent *e;
> > +   DIR *dir;
> > +   char dirname[PATH_MAX];
> > +
> > +   dir = opendir(soc_get_sysfs_path());
> > +   if (dir == NULL) {
> > +           RTE_LOG(ERR, EAL, "%s(): opendir failed: %s\n",
> > +                   __func__, strerror(errno));
> > +           return -1;
> > +   }
> > +
> > +   while ((e = readdir(dir)) != NULL) {
> > +           if (e->d_name[0] == '.')
> > +                   continue;
> > +
> > +           snprintf(dirname, sizeof(dirname), "%s/%s",
> > +                           soc_get_sysfs_path(), e->d_name);
> > +           if (soc_scan_one(dirname, e->d_name) < 0)
> > +                   goto error;
> > +   }
> > +   closedir(dir);
> > +   return 0;
> > +
> > +error:
> > +   closedir(dir);
> > +   return -1;
> > +}
> > +
> >  /* Init the SoC EAL subsystem */
> >  int
> >  rte_eal_soc_init(void)
> 
> 
> 
> --
>   Jan Viktorin                E-mail: Viktorin at RehiveTech.com
>   System Architect            Web:    www.RehiveTech.com
>   RehiveTech
>   Brno, Czech Republic

Thanks for your quick comments.

I have not yet taken all the inputs you had provided in review of v3 - I will 
be replying to those soon marking out what I have taken and what I have not.

-
Shreyansh

Reply via email to