panic: non blocking command disallowed

Jan Stary hans at stare.cz
Thu Sep 2 14:07:06 CEST 2004


> >>>acx0 takovehle problemy, pri blbem /etc/rc.d/dhclient...
> >>
> >>	"Najednou" - to je skutecne divne. Ocekaval bych, ze neco se zmenilo
> >
> >No vida, kartu jsem preci prendal!
> 
> 	To znamena, ze to chodi ?

Ne :-) To znamena, ze jsem zapomnel, ze karta je ted v jinem slotu
nez byvala ... zkusim to vratit zpatky.

> 	To by znamenalo (s vysokou pravdepodobnosti), ze chyba nastava v
> souvislosti se sdilenim preruseni.

Asi jo. Koukal jsem do tech zdrojaku, a tam rikaji, ze

:with the acx100 firmware api, a command is issued and then
:an interrupt is generated to signify command completion.
:
:a command is entered into the queue and if the queue
:was previously empty, then this command is sent to the acx100.
: 
:if the queue was not empty, then this command is issued later.
: 
:when the acx100 interrupt occurs to indicate a command completion the
:topmost queue entry is inspected, and it's callback routine executed or
:it's thread is woken up. in combination these methods allow both
==>:blocking and non blocking command execution.
:
:if another entry moves to the top when a command is removed this is then
:sent to the acx100 for processing to bump the queue along.
:
:critical aspects in this process are queue locking. it is important that
:the queue is locked whilst inserting and deleting entries.
:
:during the sysinit stage of freebsd, we are unable to benefit from
:certain functionality, consequently there exists a third overriding and
:transparent method of command execution.
:
:this scheme is busy block waiting, and will only be used in the init
:stage prior to IRQs becoming active, calls using callback (non blocking)
:will not be available.

V podstate se mi stane to, ze (if_acxcmd.c)

if( sc->irq_enabled )   /* irqs available */ {
	/* insert command into queue */
	/* block or return */
} else if( cmd->callback_func==ACX_CMD_BLOCK ) {
	/* start command */
	/* wait for firmware */
} else {
	panic("acx%d: non blocking command disallowed in this context\n", sc->unit);
	mtx_unlock(&sc->cmd_lock);
}


Nerozumim ale tomu, jak to souvisi s DHCP vs. static konfiguraci;
'ifconfig acx0 inet 1.2.3.4 bla bla' projde v poradku.

Zkusim jeste starou verzi, s timhle kodem se pry ted hybalo.

	Diky

		Honza
	




More information about the Users-l mailing list