]> Zhao Yanbai Git Server - minix.git/commitdiff
libnetdriver: only block datalink messages 41/741/1
authorDavid van Moolenbroek <david@minix3.org>
Sun, 18 Aug 2013 10:04:25 +0000 (12:04 +0200)
committerDavid van Moolenbroek <david@minix3.org>
Sun, 18 Aug 2013 10:09:51 +0000 (12:09 +0200)
Previously, all incoming messages would be blocked before a DL_CONF
message arrives from the TCP/IP stack. This however makes it impossible
for a driver to process interrupts before the DL_CONF initialization.
This patch blocks only datalink messages before the initial DL_CONF,
and lets through all other messages to the driver.

Change-Id: I89988958c0bff9bb38e0379b66f6142491a67b61

include/minix/com.h
lib/libnetdriver/netdriver.c

index f35d0e108cc6794001eb30693b60dc1e746b4308..293a1a333448daf8fea914a18ecbef9fad99b644 100644 (file)
 #define DL_RQ_BASE     0x200           
 #define DL_RS_BASE     0x280           
 
+#define IS_DL_RQ(type) (((type) & ~0x7f) == DL_RQ_BASE)
+#define IS_DL_RS(type) (((type) & ~0x7f) == DL_RS_BASE)
+
 /* Message types for data link layer requests. */
 #define DL_CONF                (DL_RQ_BASE + 0)
 #define DL_GETSTAT_S   (DL_RQ_BASE + 1)
index 8b49017d469cf9f9edc8da116432f7ce2f9f477e..a2176e451d49437987a784113c5190d5378dc059 100644 (file)
@@ -59,6 +59,11 @@ int *status_ptr;
                return r;
        }
 
+       /* Let non-datalink requests through regardless. */
+       if (!IS_DL_RQ(m_ptr->m_type)) {
+               return r;
+       }
+
        /* See if only DL_CONF is to be expected. */
        if(conf_expected) {
                if(m_ptr->m_type == DL_CONF) {