[ipxe-devel] [PATCH] rndis: register netdev with MAC filled

Roman Kagan rkagan at virtuozzo.com
Fri Jun 8 10:51:42 UTC 2018


On Fri, Jun 08, 2018 at 12:14:00PM +0200, Geert Stappers wrote:
> On Fri, Jun 01, 2018 at 09:59:01AM +0300, Roman Kagan wrote:
> > register_netdev expects ->hw_addr and ->ll_addr to be already filled, so
> > move it towards the end of register_rndis, after the respective fields
> > have been successfully queried from the underlying device.
> > 
> > Signed-off-by: Roman Kagan <rkagan at virtuozzo.com>
> > ---
> >  src/net/rndis.c | 15 +++++++--------
> >  1 file changed, 7 insertions(+), 8 deletions(-)
> > 
> > diff --git a/src/net/rndis.c b/src/net/rndis.c
> > index 8c4fe8b3..f8a9f829 100644
> > --- a/src/net/rndis.c
> > +++ b/src/net/rndis.c
> > @@ -973,13 +973,6 @@ int register_rndis ( struct rndis_device *rndis ) {
> >  	/* Assign device name (for debugging) */
> >  	rndis->name = netdev->dev->name;
> >  
> >  [ ... seven lines ... ]
> >  	/* Open RNDIS device to read MAC addresses */
> >  	if ( ( rc = rndis->op->open ( rndis ) ) != 0 ) {
> >  		DBGC ( rndis, "RNDIS %s could not open: %s\n",
> > @@ -1012,6 +1005,13 @@ int register_rndis ( struct rndis_device *rndis ) {
> >  	/* Close RNDIS device */
> >  	rndis->op->close ( rndis );
> >  
> >  [ ... seven lines ... ]
> >  	return 0;
> >  
> >   err_query_link:
> > @@ -1021,7 +1021,6 @@ int register_rndis ( struct rndis_device *rndis ) {
> >   err_initialise:
> >  	rndis->op->close ( rndis );
> >   err_open:
> > -	unregister_netdev ( netdev );
> 
> Why the remove of that line?

The original sequence was

   register
   open
   query
   close

so one had to unregister if open failed.

The proposed sequence is

  open
  query
  close
  [the state is clean at this point]
  register

so there's one cleanup less.

Thanks,
Roman.



More information about the ipxe-devel mailing list