|
|
#include <sys/types.h> #include <sys/stream.h> #include <sys/mdi.h> #include <sys/confmgr.h> #include <sys/ddi.h>int mdi_hw_suspended(queue_t *q, rm_key_t rmkey);
Driver-defined basic locks, read/write locks, and sleep locks may not be held across calls to this function.
The caller cannot have the stream frozen (see freezestr(D3str)) when calling this function.
``Hotplug devices'' in HDK Technical Reference
int e3Dconfig(cfg_func_t func, void *idata, rm_key_t rmkey) { int ret; e3Ddev_t *dev=idata;switch(func) { case CFG_SUSPEND: /* tell whatever's above us (dlpi module, stream head) that * we're going to start dropping packets. config(D2) says we * should queue frames but that's not reasonable for STREAMS -- * we must drop. */ ASSERT(dev->rmkey == rmkey); /* if we've issued a MAC_BIND_REQ then send a suspend notice * up stack. We actually don't save the queue information in * our open routine so we don't have much of a choice here. * It also means that if we've opened up the card but not yet * issued the BIND_REQ then we'll fail any attempt at the * point we try to issue the BIND_REQ. */ if (dev->ex_up_queue) { if ((ret=mdi_hw_suspended(dev->ex_up_queue, rmkey)) != 0) { return(ret); } } else { /* suspending a driver that has been opened but * no BIND_REQ seen yet. don't call mdi_hw_suspended. */ } } }