DeviceQueue: moved networking related flags to include/net_interfaces/flags.h
authorRoni Häcki <roni.haecki@inf.ethz.ch>
Thu, 26 Jan 2017 13:42:35 +0000 (14:42 +0100)
committerRoni Häcki <roni.haecki@inf.ethz.ch>
Thu, 26 Jan 2017 13:42:35 +0000 (14:42 +0100)
Signed-off-by: Roni Häcki <roni.haecki@inf.ethz.ch>

include/devif/queue_interface.h
include/net_interfaces/flags.h
lib/devif/backends/net/solarflare/devif_backend_solarflare.c
lib/devif/backends/net/solarflare/hw_queue.h
usr/tests/devif/queue_interface.c

index 91f3d5e..0c37842 100644 (file)
 
 #include <barrelfish/barrelfish.h>
 
-#define DEVQ_BUF_FLAG_TX 0x1
-#define DEVQ_BUF_FLAG_RX 0x2
-#define DEVQ_BUF_FLAG_TX_LAST 0x4
-
-
-
 typedef uint32_t regionid_t;
 typedef uint32_t bufferid_t;
 
index 903826e..08f6097 100644 (file)
 #define NETIF_TXFLAG_TCPHDRLEN_SHIFT (3)
 #define NETIF_TXFLAG_TCPHDRLEN_MASK (0xf << NETIF_TXFLAG_TCPHDRLEN_SHIFT)
 
+#define NETIF_TXFLAG (1 << 31)
+#define NETIF_TXFLAG_LAST (1 << 30)
 
 
+#define NETIF_RXFLAG (1 << 29)
 #define NETIF_RXFLAG_TYPE_IPV4 (1 << 0)
 #define NETIF_RXFLAG_TYPE_UDP (1 << 1)
 #define NETIF_RXFLAG_TYPE_TCP (1 << 2)
index 796b5a0..f60dab0 100644 (file)
@@ -298,7 +298,7 @@ static errval_t sfn5122f_enqueue(struct devq* q, regionid_t rid, bufferid_t bid,
 
 
     struct sfn5122f_queue* queue = (struct sfn5122f_queue*) q;
-    if (flags & DEVQ_BUF_FLAG_RX) {
+    if (flags & NETIF_RXFLAG) {
         /* can not enqueue receive buffer larger than 2048 bytes */
         assert(len <= 2048);
 
@@ -306,7 +306,7 @@ static errval_t sfn5122f_enqueue(struct devq* q, regionid_t rid, bufferid_t bid,
         if (err_is_fail(err)) {
             return err;
         }      
-    } else if (flags & DEVQ_BUF_FLAG_TX) {
+    } else if (flags & NETIF_TXFLAG) {
         assert(len <= BASE_PAGE_SIZE);
 
         err = enqueue_tx_buf(queue, rid, bid, base, len, flags);
index 3d9572a..803d1d6 100644 (file)
@@ -15,6 +15,7 @@
 #include <string.h>
 #include <stdlib.h>
 
+#include <net_interfaces/net_interfaces.h>
 #include <devif/queue_interface.h>
 #include <dev/sfn5122f_q_dev.h>
 #include <dev/sfn5122f_dev.h>
@@ -489,7 +490,7 @@ static inline int sfn5122f_queue_add_txbuf_devif(sfn5122f_queue_t* q,
  
     buf = &q->tx_bufs[tail];
    
-    bool last = flags & DEVQ_BUF_FLAG_TX_LAST;    
+    bool last = flags & NETIF_TXFLAG_LAST;    
     buf->rid = rid;
     buf->bid = bid;
     buf->addr = base;
@@ -526,7 +527,7 @@ static inline int sfn5122f_queue_add_user_txbuf_devif(sfn5122f_queue_t* q,
     d = q->tx_ring.ker[tail];
     buf = &q->tx_bufs[tail];
    
-    bool last = flags & DEVQ_BUF_FLAG_TX_LAST;    
+    bool last = flags & NETIF_TXFLAG_LAST;    
     buf->rid = rid;
     buf->bid = devq_bid;
     buf->addr = base;
index cf63ead..6b44553 100644 (file)
 #include <barrelfish/deferred.h>
 #include <devif/queue_interface.h>
 #include <devif/backends/net/sfn5122f_devif.h>
+//#include <devif/backends/net/e10k_devif.h>
 #include <devif/backends/descq.h>
 #include <bench/bench.h>
-
+#include <net_interfaces/flags.h>
 
 #define BUF_SIZE 2048
 #define NUM_ENQ 512
@@ -81,7 +82,6 @@ static void print_buffer(size_t len, bufferid_t bid)
     printf("\n");
 }
 */
-
 static void wait_for_interrupt(void)
 {
     errval_t err = event_dispatch(&card_ws);
@@ -110,20 +110,14 @@ static void sfn5122f_event_cb(void* queue)
             break;
         }
 
-        switch (flags) {
-            case DEVQ_BUF_FLAG_TX:
-                num_tx++;
-                break;
-            case DEVQ_BUF_FLAG_RX:
-                num_rx++;
-                //print_buffer(len, bid);
-                break;
-            case DEVQ_BUF_FLAG_TX + DEVQ_BUF_FLAG_TX_LAST:
-                num_tx++;
-                break;
-            default:
-                printf("Unknown flags \n");
-        }    
+        if (flags & NETIF_TXFLAG) {
+            num_tx++;
+        } else if (flags & NETIF_RXFLAG) {
+            num_rx++;
+            //print_buffer(len, bid);
+        } else {
+            printf("Unknown flags \n");
+        }
     }
 
     // MSIX is not working on sfn5122f yet so we have to "simulate interrupts"
@@ -205,7 +199,7 @@ static void test_sfn5122f_tx(void)
             addr = phys_tx+(i*(BUF_SIZE));
 
             err = devq_enqueue(q, regid_tx, addr, BUF_SIZE, 
-                               DEVQ_BUF_FLAG_TX | DEVQ_BUF_FLAG_TX_LAST, &bid);
+                               NETIF_TXFLAG | NETIF_TXFLAG_LAST, &bid);
             if (err_is_fail(err)){
                 USER_PANIC("Devq enqueue failed \n");
             }    
@@ -295,7 +289,7 @@ static void test_sfn5122f_rx(void)
     for (int i = 0; i < NUM_ROUNDS_RX; i++){
         addr = phys_rx+(i*2048);
         err = devq_enqueue(q, regid_rx, addr, 2048, 
-                           DEVQ_BUF_FLAG_RX, &bid);
+                           NETIF_RXFLAG, &bid);
         if (err_is_fail(err)){
             USER_PANIC("Devq enqueue failed: %s\n", err_getstring(err));
         }    
@@ -428,6 +422,36 @@ static void test_idc_queue(void)
     printf("SUCCESS: IDC queue\n");
 }
 
+
+#if 0
+static void e10k_event_cb(void* queue)
+{
+    return;
+}
+
+static void test_e10k_queue(void) 
+{
+    num_tx = 0;
+    num_rx = 0;
+
+    errval_t err;
+    struct devq* q;   
+    struct e10k_queue* queue;
+
+    printf("e10k test started \n");
+    err = e10k_queue_create(&queue, e10k_event_cb, /* interrupts*/ false, 
+                            /* RSC*/false);
+    if (err_is_fail(err)){
+        USER_PANIC("Allocating devq failed \n");
+    }    
+    
+    q = (struct devq*) queue;    
+       
+    printf("e10k test endned \n");
+}
+#endif
+
 int main(int argc, char *argv[])
 {
     errval_t err;
@@ -481,8 +505,12 @@ int main(int argc, char *argv[])
     if (strcmp(argv[1], "idc") == 0) {
         test_idc_queue();
     }
-
-
+    
+    /*
+    if (strcmp(argv[1], "e10k") == 0) {
+        test_e10k_queue();
+    }
+    */
     barrelfish_usleep(1000*1000*5);
 }