Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Aug 2010 18:25:53 GMT
From:      Alexandre Fiveg <afiveg@skunkworks.freebsd.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 182126 for review
Message-ID:  <201008111825.o7BIPrMk083886@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@182126?ac=10

Change 182126 by afiveg@ringmap-2 on 2010/08/09 11:53:41

	ringmap_open fixed. capt_object is passed to the set_slot function instead of ring, que, etc... 

Affected files ...

.. //depot/projects/soc2010/ringmap/current/contrib/libpcap/ringmap_pcap.c#28 edit
.. //depot/projects/soc2010/ringmap/current/sys/dev/ixgbe/ixgbe.h#12 edit
.. //depot/projects/soc2010/ringmap/current/sys/dev/ixgbe/ringmap_8259.h#11 edit
.. //depot/projects/soc2010/ringmap/current/sys/dev/ixgbe/ringmap_ixgbe.c#12 edit
.. //depot/projects/soc2010/ringmap/current/sys/modules/ringmap/Makefile#4 edit
.. //depot/projects/soc2010/ringmap/current/sys/modules/ringmap/Makefile.em#2 edit
.. //depot/projects/soc2010/ringmap/current/sys/modules/ringmap/Makefile.ixgbe#2 edit
.. //depot/projects/soc2010/ringmap/current/sys/net/ringmap.c#42 edit
.. //depot/projects/soc2010/ringmap/current/sys/net/ringmap.h#42 edit
.. //depot/projects/soc2010/ringmap/current/sys/net/ringmap_kernel.h#12 edit
.. //depot/projects/soc2010/ringmap/scripts/build_ringmap.sh#24 edit
.. //depot/projects/soc2010/ringmap/scripts/set_ringmap.sh#25 edit
.. //depot/projects/soc2010/ringmap/scripts/tailf_ringmap_msgs.sh#19 edit
.. //depot/projects/soc2010/ringmap/stable_8/sys/dev/ixgbe/ixgbe.h#2 edit
.. //depot/projects/soc2010/ringmap/stable_8/sys/i386/conf/I686_STABLE#1 add
.. //depot/projects/soc2010/ringmap/tests/ringmap/close.c#11 edit
.. //depot/projects/soc2010/ringmap/tests/ringmap/ioctl.c#11 edit
.. //depot/projects/soc2010/ringmap/tests/ringmap/main.c#13 edit
.. //depot/projects/soc2010/ringmap/tests/ringmap/mmap.c#13 edit
.. //depot/projects/soc2010/ringmap/tests/ringmap/open.c#13 edit
.. //depot/projects/soc2010/ringmap/tests/ringmap/tests.h#11 edit

Differences ...

==== //depot/projects/soc2010/ringmap/current/contrib/libpcap/ringmap_pcap.c#28 (text+ko) ====


==== //depot/projects/soc2010/ringmap/current/sys/dev/ixgbe/ixgbe.h#12 (text+ko) ====


==== //depot/projects/soc2010/ringmap/current/sys/dev/ixgbe/ringmap_8259.h#11 (text+ko) ====


==== //depot/projects/soc2010/ringmap/current/sys/dev/ixgbe/ringmap_ixgbe.c#12 (text+ko) ====

@@ -38,7 +38,7 @@
 device_t rm_8259_get_device_p(struct cdev *);
 void rm_8259_enable_intr(device_t);
 void rm_8259_disable_intr(device_t);
-int rm_8259_set_slot(struct ring *, void *, unsigned int);
+int rm_8259_set_slot(struct capt_object*, unsigned int);
 int rm_8259_set_queue(struct capt_object *, unsigned int);
 void rm_8259_interrupt(void *);
 void rm_8259_delayed_interrupt(void *);
@@ -143,6 +143,7 @@
 	struct adapter	*adapter = (struct adapter *)que->adapter;
 	struct capt_object *co = NULL;
 
+
 	RINGMAP_LOCK(adapter->rm);
 
 	adapter->rm->interrupts_counter++;
@@ -177,18 +178,18 @@
 		goto out;
 	}
 
+	rm_8259_print_ring_pointers(que);
+
 	if (adapter->rm->open_cnt) {
 		co = get_capt_obj(que);
 		if (co != NULL) {
 
-
 			co->ring->slot[slot_num].intr_num = co->ring->intr_num;
 			co->ring->slot[slot_num].ts = co->ring->last_ts;
 			co->ring->slot[slot_num].is_ok = 1;
 
 			rxbuf = &que->rxr->rx_buffers[slot_num];
 
-
 #if (RINGMAP_INTR_DEB)
 			rxbuf->m_pack = (struct mbuf *)K_MBUF(co->ring, slot_num);
 			rxbuf->m_pack->m_data = (void *)K_PACKET(co->ring, slot_num);
@@ -218,9 +219,10 @@
 
 
 int
-rm_8259_set_slot(struct ring *ring, void *context, unsigned int slot_num)
+rm_8259_set_slot(struct capt_object *co, unsigned int slot_num)
 {
-	struct ix_queue	*que	= (struct ix_queue *)context;
+	struct ix_queue	*que	= co->que;
+	struct ring *ring = co->ring;
 
 #if (__RINGMAP_DEB)
 	printf("[%s] Set slot: %d\n", __func__, slot_num);

==== //depot/projects/soc2010/ringmap/current/sys/modules/ringmap/Makefile#4 (text+ko) ====


==== //depot/projects/soc2010/ringmap/current/sys/modules/ringmap/Makefile.em#2 (text+ko) ====


==== //depot/projects/soc2010/ringmap/current/sys/modules/ringmap/Makefile.ixgbe#2 (text+ko) ====

@@ -2,9 +2,9 @@
 .PATH:  ${.CURDIR}/../../dev/ixgbe : ${.CURDIR}/../../net
 KMOD    = if_ringmap
 SRCS    = device_if.h bus_if.h pci_if.h
-SRCS    += ixgbe.c $(RINGMAP_SRC)
+SRCS    += ixgbe.c # $(RINGMAP_SRC)
 
-RINGMAP_SRC = ringmap.c ringmap_ixgbe.c
+# RINGMAP_SRC = ringmap.c ringmap_ixgbe.c
 
 # Shared source
 SRCS    += ixgbe_common.c ixgbe_api.c ixgbe_phy.c

==== //depot/projects/soc2010/ringmap/current/sys/net/ringmap.c#42 (text+ko) ====

@@ -79,11 +79,6 @@
 		return (-1); 
 	}
 
-	rm->funcs = rf;
-
-	get_ringmap_p = rf->dev_to_ringmap;
-	get_device_p = rf->cdev_to_dev;
-
 	/* 
 	 * Create char device for communication with user-space. The user-space
 	 * process wich want to capture packets should first open this device.
@@ -96,6 +91,15 @@
 	rm->cdev = make_dev(&ringmap_devsw, device_get_unit(dev),
 						UID_ROOT, GID_WHEEL, 0666, 
 						RINGMAP_DEVICE"%d", device_get_unit(dev));
+	if (rm->cdev == NULL) {
+		RINGMAP_ERROR(Can not create char device);
+		return (-1);
+	}
+
+	/* Set function pointers */
+	rm->funcs = rf;
+	get_ringmap_p = rf->dev_to_ringmap;
+	get_device_p = rf->cdev_to_dev;
 
 	/* Store adapters device structure */
 	rm->dev = dev;
@@ -109,10 +113,6 @@
 	/* set the pointer to ringmap into the adapters structure */
 	rm->funcs->set_ringmap_to_adapter(dev, rm);
 
-#if (__RINGMAP_DEB)
-	printf("Page Size: %d \n", PAGE_SIZE);
-#endif 
-
 	RINGMAP_FUNC_DEBUG(end); 
 
 	return (0);	
@@ -133,13 +133,15 @@
 		return (-1);
 	}
 
+	/* Remove all capturing objects properly */
     while (!SLIST_EMPTY(&rm->object_list)) {
 	    co = SLIST_FIRST(&rm->object_list);
 	    SLIST_REMOVE_HEAD(&rm->object_list, objects);
 	    clear_capt_object((void *)co);
     }
 
-	destroy_dev(rm->cdev);
+	if (rm->cdev != NULL)
+		destroy_dev(rm->cdev);
 	
 	RINGMAP_LOCK_DESTROY(rm);
 
@@ -211,7 +213,7 @@
 	}
 
 	/* 
-	 * create the capturing instance wich will represent 
+	 * create the capturing object wich will represent 
 	 * current thread and packets ring 
 	 */
 	MALLOC(	co, struct capt_object *, 
@@ -238,10 +240,11 @@
 
 		err = EIO; goto out;
 	}
+#endif 
 
 	/* Init ring-slots  with mbufs and packets adrresses */
 	for (i = 0 ; i < SLOTS_NUMBER ; i++){
-		if (rm->funcs->set_slot(ring, co->que, i) == -1){
+		if (rm->funcs->set_slot(co, i) == -1){
 			RINGMAP_ERROR(Ring initialization failed!);
 			contigfree(ring, sizeof(struct ring), M_DEVBUF);
 
@@ -251,7 +254,6 @@
 		PRINT_SLOT(ring, i);
 #endif
 	}
-#endif 
 
 	/* 
 	 * Insert the capturing object in the single linked list

==== //depot/projects/soc2010/ringmap/current/sys/net/ringmap.h#42 (text+ko) ====

@@ -13,7 +13,7 @@
 /*
  * Default queue number
  */
-#define DEFAULT_QUEUE	0
+#define DEFAULT_QUEUE	1
 
 /* 
  * Driver works only with device wich has the following device ID. If 0

==== //depot/projects/soc2010/ringmap/current/sys/net/ringmap_kernel.h#12 (text+ko) ====

@@ -104,7 +104,7 @@
 	void (*sync_head)(void *);
 
 	/* Initialize the ring slot */
-	int (*set_slot)(struct ring *, void *, unsigned int);
+	int (*set_slot)(struct capt_object *, unsigned int);
 
 	/* Associate the capturing objec with a hardware queue */
 	int (*set_queue)(struct capt_object *, unsigned int);

==== //depot/projects/soc2010/ringmap/scripts/build_ringmap.sh#24 (text+ko) ====


==== //depot/projects/soc2010/ringmap/scripts/set_ringmap.sh#25 (text+ko) ====


==== //depot/projects/soc2010/ringmap/scripts/tailf_ringmap_msgs.sh#19 (text+ko) ====


==== //depot/projects/soc2010/ringmap/stable_8/sys/dev/ixgbe/ixgbe.h#2 (text+ko) ====

@@ -124,6 +124,11 @@
 #define MAX_RXD		4096
 #define MIN_RXD		64
 
+//#define DEFAULT_RXD	64
+//#define PERFORM_RXD	64
+//#define MAX_RXD		64
+//#define MIN_RXD		64
+
 /* Alignment for rings */
 #define DBA_ALIGN	128
 

==== //depot/projects/soc2010/ringmap/tests/ringmap/close.c#11 (text+ko) ====


==== //depot/projects/soc2010/ringmap/tests/ringmap/ioctl.c#11 (text+ko) ====


==== //depot/projects/soc2010/ringmap/tests/ringmap/main.c#13 (text+ko) ====


==== //depot/projects/soc2010/ringmap/tests/ringmap/mmap.c#13 (text+ko) ====


==== //depot/projects/soc2010/ringmap/tests/ringmap/open.c#13 (text+ko) ====


==== //depot/projects/soc2010/ringmap/tests/ringmap/tests.h#11 (text+ko) ====




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008111825.o7BIPrMk083886>