public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Marcin Wojtas <mw@semihalf.com>
Cc: edk2-devel@ml01.01.org, "Tian, Feng" <feng.tian@intel.com>,
	Joe Zhou <shjzhou@marvell.com>,
	Leif Lindholm <leif.lindholm@linaro.org>,
	nadavh@marvell.com, Neta Zur Hershkovits <neta@marvell.com>,
	"Gao, Liming" <liming.gao@intel.com>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: Force reconnect children from within a DXE driver
Date: Mon, 17 Oct 2016 19:00:27 +0200	[thread overview]
Message-ID: <46cc75e7-ea19-a10d-36ea-470d6ef29d62@redhat.com> (raw)
In-Reply-To: <CAPv3WKdMO2QZj9yUVM-49rEwfwbweE04ADjVFKQ2vNQwM-rHDg@mail.gmail.com>

On 10/17/16 18:05, Marcin Wojtas wrote:
> Hi,
> 
> Short introduction to the problem I'm facing with EDK2: I implemented
> 'ifconfig' command extension allowing to change interface's MAC
> address or reset it to the default value. For that I needed to add a
> couple of helper functions in DxeNetLib, which parse input string and
> one that calls Snp->StationAddress callback from the NIC driver.
> 
> The problem is that the drivers associated to interface device
> comprise a copy of SnpMode, not original pointer. It causes an obvious
> mismatch, because only the latter got updated with new
> Snp->Mode->CurrentAddress. I found out that using 'reconnect' command
> after MAC address change from uefi shell helps and the network can
> operate properly.
> 
> Hence I have a question - is there a way to force reconnecting all
> children drivers from the network controller driver level? I.e. it
> would be great if it was possible not to be forced to call 'ifconfig'
> command and then 'reconnect', but call some function(s) e.g. from
> Snp->StationAddress callback.

I would try this:
- From the shell command (which is running in the shell application),
open the SNP interface in exclusive mode. This should either fail (if
there's already an exclusive open on the interface), or succeed and
force other drivers to disconnect, recursively.
- Call Snp->StationAddress to change the MAC.
- Close the protocol interface.
- Call gBS->ConnectController() to (re)connect all the drivers,
recursively, to the handle with the SNP on it.

Thanks
Laszlo



  reply	other threads:[~2016-10-17 17:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-17 16:05 Force reconnect children from within a DXE driver Marcin Wojtas
2016-10-17 17:00 ` Laszlo Ersek [this message]
2016-10-26 16:02   ` Marcin Wojtas
2016-10-26 17:40     ` Laszlo Ersek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=46cc75e7-ea19-a10d-36ea-470d6ef29d62@redhat.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox