linux1394-cvslog Mailing List for IEEE 1394 for Linux (Page 10)
Brought to you by:
aeb,
bencollins
You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(10) |
Jul
(12) |
Aug
(8) |
Sep
(9) |
Oct
(4) |
Nov
(5) |
Dec
(5) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(7) |
Feb
(3) |
Mar
(15) |
Apr
(12) |
May
(5) |
Jun
(9) |
Jul
(32) |
Aug
(39) |
Sep
(42) |
Oct
(22) |
Nov
(28) |
Dec
(8) |
2002 |
Jan
(37) |
Feb
(47) |
Mar
(6) |
Apr
(29) |
May
(33) |
Jun
(9) |
Jul
(28) |
Aug
(30) |
Sep
(15) |
Oct
(75) |
Nov
(37) |
Dec
(31) |
2003 |
Jan
|
Feb
(89) |
Mar
(41) |
Apr
(13) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: SVN U. <dde...@li...> - 2002-10-23 21:35:47
|
Author: ddennedy Date: 2002-10-23 17:35:45 -0400 (Wed, 23 Oct 2002) New Revision: 643 Removed: branches/rawiso/_libraw1394_patch Log: removed libraw1394 patch; use new libraw branch instead Deleted: branches/rawiso/_libraw1394_patch ============================================================================== --- branches/rawiso/_libraw1394_patch (original) +++ branches/rawiso/_libraw1394_patch 2002-10-23 17:35:45.000000000 -0400 @@ -1,413 +0,0 @@ -diff -ru libraw1394/src/eventloop.c libraw1394-iso/src/eventloop.c ---- libraw1394/src/eventloop.c Sun May 13 21:02:10 2001 -+++ libraw1394-iso/src/eventloop.c Mon Aug 26 13:21:07 2002 -@@ -11,16 +11,58 @@ - #include <config.h> - #include <unistd.h> - #include <byteswap.h> -+#include <sys/poll.h> - - #include "raw1394.h" - #include "kernel-raw1394.h" - #include "raw1394_private.h" - -+/* -+ This is a bit complicated because the read/write interface and the ISO -+ interface are essentially two independent streams of input. -+ -+ poll() will return POLLIN or POLLOUT for pending read activity, and -+ POLLPRI for pending ISO activity. -+ -+ do_poll() returns 1 if there are pending events to read(), -+ 0 if there are no events, and -1 on error. -+*/ -+ -+static int do_poll(struct raw1394_handle *handle) -+{ -+ struct pollfd pfd[1]; -+ -+ pfd[0].fd = handle->fd; -+ pfd[0].events = POLLIN | POLLOUT | POLLPRI; -+ pfd[0].revents = 0; -+ -+ while(1) { -+ int ret = poll(pfd, 1, -1); -+ if(ret > 0) { -+ break; -+ } else if(ret < 0) { -+ return -1; -+ } -+ } -+ -+ if(pfd[0].revents & (POLLIN | POLLOUT)) { -+ return 1; -+ } -+ -+ return 0; -+} - - int raw1394_loop_iterate(struct raw1394_handle *handle) - { - struct raw1394_request *req = &handle->req; - int retval = 0, channel; -+ -+ int read_events = do_poll(handle); -+ if(read_events < 0) -+ return -1; -+ -+ if(read_events == 0) -+ return 0; - - if (read(handle->fd, req, sizeof(*req)) < 0) { - return -1; -diff -ru libraw1394/src/iso.c libraw1394-iso/src/iso.c ---- libraw1394/src/iso.c Sun Sep 10 18:18:49 2000 -+++ libraw1394-iso/src/iso.c Wed Aug 28 01:08:10 2002 -@@ -11,11 +11,15 @@ - #include <config.h> - #include <errno.h> - #include <unistd.h> -+#include <string.h> -+#include <sys/ioctl.h> -+#include <sys/mman.h> - - #include "raw1394.h" - #include "kernel-raw1394.h" - #include "raw1394_private.h" - -+/* old ISO API */ - - static int do_iso_listen(struct raw1394_handle *handle, int channel) - { -@@ -72,3 +76,104 @@ - - return do_iso_listen(handle, ~channel); - } -+ -+ -+ -+/* new ISO API */ -+ -+static int do_iso_start(raw1394handle_t handle, struct raw1394_iso_config *config, int xmit) -+{ -+ struct raw1394_kernel_iso_status kstat; -+ size_t pgsize; -+ -+ kstat.config.buf_packets = config->buf_packets; -+ kstat.config.max_packet_size = config->max_packet_size; -+ kstat.config.channel = config->channel; -+ kstat.config.speed = config->speed; -+ kstat.config.irq_interval = config->irq_interval; -+ -+ if(ioctl(handle->fd, xmit ? RAW1394_ISO_START_XMIT : RAW1394_ISO_START_RECV, &kstat.config)) -+ return -1; -+ -+ if(ioctl(handle->fd, RAW1394_ISO_GET_STATUS, &kstat)) -+ return -1; -+ -+ handle->iso_buffer_bytes = kstat.config.buf_packets * kstat.buf_stride; -+ -+ /* make sure buffer is a multiple of the page size */ -+ pgsize = getpagesize(); -+ if(handle->iso_buffer_bytes % pgsize) -+ handle->iso_buffer_bytes += pgsize - (handle->iso_buffer_bytes % pgsize); -+ -+ handle->iso_buffer = mmap(NULL, handle->iso_buffer_bytes, PROT_READ | PROT_WRITE, -+ MAP_SHARED, handle->fd, 0); -+ -+ if(handle->iso_buffer == (unsigned char*) MAP_FAILED) { -+ handle->iso_buffer = NULL; -+ raw1394_iso_stop(handle); -+ return -1; -+ } -+ -+ return 0; -+} -+ -+void raw1394_iso_stop(raw1394handle_t handle) -+{ -+ if(handle->iso_buffer) { -+ munmap(handle->iso_buffer, handle->iso_buffer_bytes); -+ handle->iso_buffer = NULL; -+ } -+ -+ ioctl(handle->fd, RAW1394_ISO_STOP, 0); -+} -+ -+int raw1394_iso_xmit_start(raw1394handle_t handle, struct raw1394_iso_config *config) -+{ -+ return do_iso_start(handle, config, 1); -+} -+ -+int raw1394_iso_recv_start(raw1394handle_t handle, struct raw1394_iso_config *config) -+{ -+ return do_iso_start(handle, config, 0); -+} -+ -+int raw1394_iso_get_status(raw1394handle_t handle, struct raw1394_iso_status *stat) -+{ -+ struct raw1394_kernel_iso_status kstat; -+ int err; -+ -+ err = ioctl(handle->fd, RAW1394_ISO_GET_STATUS, &kstat); -+ if(err != 0) -+ return err; -+ -+ /* mediate between user and kernel versions of the structure */ -+ stat->config.buf_packets = kstat.config.buf_packets; -+ stat->config.max_packet_size = kstat.config.max_packet_size; -+ stat->config.channel = kstat.config.channel; -+ stat->config.speed = kstat.config.speed; -+ stat->config.irq_interval = kstat.config.irq_interval; -+ -+ stat->buf = handle->iso_buffer; -+ stat->buf_stride = kstat.buf_stride; -+ stat->packet_data_offset = kstat.packet_data_offset; -+ stat->packet_info_offset = kstat.packet_info_offset; -+ stat->first_packet = kstat.first_packet; -+ stat->n_packets = kstat.n_packets; -+ stat->overflows = kstat.overflows; -+ stat->first_packet_cycle = kstat.first_packet_cycle; -+ -+ return 0; -+} -+ -+int raw1394_iso_xmit_produce(raw1394handle_t handle, unsigned int n_packets) -+{ -+ if(!n_packets) return 0; -+ return ioctl(handle->fd, RAW1394_ISO_PRODUCE_CONSUME, n_packets); -+} -+ -+int raw1394_iso_recv_consume(raw1394handle_t handle, unsigned int n_packets) -+{ -+ if(!n_packets) return 0; -+ return ioctl(handle->fd, RAW1394_ISO_PRODUCE_CONSUME, n_packets); -+} -+ -diff -ru libraw1394/src/kernel-raw1394.h libraw1394-iso/src/kernel-raw1394.h ---- libraw1394/src/kernel-raw1394.h Mon Aug 7 20:29:08 2000 -+++ libraw1394-iso/src/kernel-raw1394.h Wed Aug 28 03:50:43 2002 -@@ -69,6 +69,57 @@ - __u8 name[32]; - }; - -+/* new ISO API */ -+ -+/* ioctls */ -+#define RAW1394_ISO_START_XMIT 1 -+#define RAW1394_ISO_START_RECV 2 -+#define RAW1394_ISO_GET_STATUS 3 -+#define RAW1394_ISO_STOP 4 -+#define RAW1394_ISO_PRODUCE_CONSUME 5 -+ -+/* argument to RAW1394_ISO_START_RECV, XMIT */ -+struct raw1394_kernel_iso_config { -+ unsigned int buf_packets; -+ unsigned int max_packet_size; -+ int channel; -+ int speed; /* xmit only */ -+ int irq_interval; -+}; -+ -+struct raw1394_kernel_iso_status { -+ /* current settings */ -+ struct raw1394_kernel_iso_config config; -+ -+ /* byte offset between successive packets in the buffer */ -+ int buf_stride; -+ -+ /* byte offset of data payload within each packet */ -+ int packet_data_offset; -+ -+ /* byte offset of struct iso_packet_info within each packet */ -+ int packet_info_offset; -+ -+ /* index of next packet to fill with data (ISO transmission) -+ or next packet containing data recieved (ISO reception) */ -+ unsigned int first_packet; -+ -+ /* number of packets waiting to be filled with data (ISO transmission) -+ or containing data received (ISO reception) */ -+ unsigned int n_packets; -+ -+ /* approximate number of packets dropped due to overflow or -+ underflow of the packet buffer (a value of zero guarantees -+ that no packets have been dropped) */ -+ unsigned int overflows; -+ -+ /* the value the ISO CYCLE_COUNT register will have when the first_packet -+ is sent (ISO transmission) or received (ISO reception). -+ set to -1 if you don't care about cycle matching. -+ */ -+ int first_packet_cycle; -+}; -+ - #ifdef __KERNEL__ - - struct iso_block_store { -@@ -77,6 +128,10 @@ - quadlet_t data[0]; - }; - -+enum raw1394_iso_state { RAW1394_ISO_INACTIVE = 0, -+ RAW1394_ISO_RECV = 1, -+ RAW1394_ISO_XMIT = 2 }; -+ - struct file_info { - struct list_head list; - -@@ -93,9 +148,14 @@ - - u8 *fcp_buffer; - -+ /* old ISO API */ - u64 listen_channels; - quadlet_t *iso_buffer; - size_t iso_buffer_length; -+ -+ /* new ISO API */ -+ enum raw1394_iso_state iso_state; -+ struct hpsb_iso *iso_handle; - }; - - struct pending_request { -diff -ru libraw1394/src/main.c libraw1394-iso/src/main.c ---- libraw1394/src/main.c Sun May 13 21:02:10 2001 -+++ libraw1394-iso/src/main.c Mon Aug 26 01:23:02 2002 -@@ -104,12 +104,18 @@ - handle->bus_reset_handler = bus_reset_default; - handle->tag_handler = tag_handler_default; - memset(handle->iso_handler, 0, sizeof(handle->iso_handler)); -+ handle->iso_buffer = NULL; -+ handle->iso_buffer_bytes = 0; -+ - return handle; - } - - void raw1394_destroy_handle(struct raw1394_handle *handle) - { - if (handle) { -+ if(handle->iso_buffer) { -+ raw1394_iso_stop(handle); -+ } - close(handle->fd); - free(handle); - } -diff -ru libraw1394/src/raw1394.h libraw1394-iso/src/raw1394.h ---- libraw1394/src/raw1394.h Sun May 13 21:02:10 2001 -+++ libraw1394-iso/src/raw1394.h Wed Aug 28 01:14:57 2002 -@@ -212,6 +212,101 @@ - */ - const char *raw1394_get_libversion(void); - -+ -+enum raw1394_iso_speed { -+ RAW1394_ISO_SPEED_100 = 0, -+ RAW1394_ISO_SPEED_200 = 1, -+ RAW1394_ISO_SPEED_400 = 2, -+}; -+ -+ -+struct raw1394_iso_config { -+ /* total number of packets in the buffer */ -+ unsigned int buf_packets; -+ -+ /* largest possible packet, in bytes */ -+ unsigned int max_packet_size; -+ -+ /* ISO channel */ -+ int channel; -+ -+ /* speed (transmission only) */ -+ enum raw1394_iso_speed speed; -+ -+ /* max latency of buffer, # of packets (-1 to get a default) */ -+ int irq_interval; -+}; -+ -+struct raw1394_iso_status { -+ /* current settings */ -+ struct raw1394_iso_config config; -+ -+ /* address of the packet buffer (first byte of first packet) */ -+ unsigned char *buf; -+ -+ /* byte offset between successive packets in the buffer */ -+ unsigned int buf_stride; -+ -+ /* byte offset of payload data within each packet */ -+ unsigned int packet_data_offset; -+ -+ /* byte offset of packet length within each packet */ -+ unsigned int packet_info_offset; -+ -+ /* index of next packet to fill with data (ISO transmission) -+ or next packet containing data recieved (ISO reception) */ -+ unsigned int first_packet; -+ -+ /* number of packets waiting to be filled with data (ISO transmission) -+ or containing data received (ISO reception) */ -+ unsigned int n_packets; -+ -+ /* approximate number of packets dropped due to overflow or -+ underflow of the packet buffer (a value of zero guarantees -+ that no packets have been dropped) */ -+ unsigned int overflows; -+ -+ /* the value the ISO CYCLE_COUNT register will have when the first_packet -+ is sent (ISO transmission) or received (ISO reception). -+ set to -1 if you don't care about cycle matching. -+ */ -+ int first_packet_cycle; -+}; -+ -+/* per-packet info embedded in the packet buffer */ -+struct raw1394_iso_packet_info { -+ unsigned short len; -+ unsigned char channel; /* receive only */ -+ unsigned char tag; -+ unsigned char tcode; /* receive only */ -+ unsigned char sy; -+}; -+ -+static inline struct raw1394_iso_packet_info* -+raw1394_iso_packet_info(struct raw1394_iso_status *stat, unsigned int index) -+{ -+ /* XXX make internal */ -+ return (struct raw1394_iso_packet_info*) (stat->buf + index * stat->buf_stride -+ + stat->packet_info_offset); -+} -+ -+static inline unsigned char* -+raw1394_iso_packet_data(struct raw1394_iso_status *stat, unsigned int index) -+{ -+ /* XXX make internal */ -+ return (stat->buf + index * stat->buf_stride + stat->packet_data_offset); -+} -+ -+int raw1394_iso_xmit_start(raw1394handle_t handle, struct raw1394_iso_config *config); -+int raw1394_iso_recv_start(raw1394handle_t handle, struct raw1394_iso_config *config); -+ -+int raw1394_iso_get_status(raw1394handle_t handle, struct raw1394_iso_status *status); -+ -+int raw1394_iso_xmit_produce(raw1394handle_t handle, unsigned int n_packets); -+int raw1394_iso_recv_consume(raw1394handle_t handle, unsigned int n_packets); -+ -+void raw1394_iso_stop(raw1394handle_t handle); -+ - #ifdef __cplusplus - } - #endif -diff -ru libraw1394/src/raw1394_private.h libraw1394-iso/src/raw1394_private.h ---- libraw1394/src/raw1394_private.h Thu Jan 18 20:08:19 2001 -+++ libraw1394-iso/src/raw1394_private.h Mon Aug 26 01:21:55 2002 -@@ -19,6 +19,9 @@ - fcp_handler_t fcp_handler; - iso_handler_t iso_handler[64]; - -+ unsigned char *iso_buffer; -+ unsigned long iso_buffer_bytes; -+ - struct raw1394_request req; - quadlet_t buffer[2048]; - }; |
From: SVN U. <ben...@li...> - 2002-10-22 20:31:27
|
Author: bencollins Date: 2002-10-22 16:31:23 -0400 (Tue, 22 Oct 2002) New Revision: 642 Modified: trunk/cmp.c trunk/nodemgr.c trunk/raw1394.c trunk/video1394.c Log: I love typos and warnings, don't you? Modified: trunk/raw1394.c ============================================================================== --- trunk/raw1394.c (original) +++ trunk/raw1394.c 2002-10-22 16:31:24.000000000 -0400 @@ -37,6 +37,7 @@ #include <linux/init.h> #include <linux/version.h> #include <linux/smp_lock.h> +#include <linux/interrupt.h> #include <asm/uaccess.h> #include <asm/atomic.h> #include <linux/devfs_fs_kernel.h> Modified: trunk/nodemgr.c ============================================================================== --- trunk/nodemgr.c (original) +++ trunk/nodemgr.c 2002-10-22 16:31:24.000000000 -0400 @@ -1326,7 +1326,7 @@ struct host_info *hi; unsigned long flags; - hi = kmalloc(sizeof (struct hpsb_info), in_interrupt() ? SLAB_ATOMIC : SLAB_KERNEL); + hi = kmalloc(sizeof (struct host_info), in_interrupt() ? SLAB_ATOMIC : SLAB_KERNEL); if (!hi) { HPSB_ERR ("NodeMgr: out of memory in add host"); Modified: trunk/cmp.c ============================================================================== --- trunk/cmp.c (original) +++ trunk/cmp.c 2002-10-22 16:31:25.000000000 -0400 @@ -34,6 +34,7 @@ #include <linux/sched.h> #include <linux/types.h> #include <linux/wait.h> +#include <linux/interrupt.h> #include "hosts.h" #include "highlevel.h" Modified: trunk/video1394.c ============================================================================== --- trunk/video1394.c (original) +++ trunk/video1394.c 2002-10-22 16:31:25.000000000 -0400 @@ -1254,7 +1254,7 @@ if (ctx->current_ctx == NULL) { PRINT(KERN_ERR, ctx->video->ohci->id, "Current iso context not set"); } else - res = do_iso_mmap(ohci, ctx->current_ctx, vma); + res = do_iso_mmap(ctx->video->ohci, ctx->current_ctx, vma); unlock_kernel(); return res; |
From: SVN U. <ben...@li...> - 2002-10-22 20:28:06
|
Author: bencollins Date: 2002-10-22 16:27:53 -0400 (Tue, 22 Oct 2002) New Revision: 641 Modified: trunk/amdtp.c trunk/cmp.c trunk/eth1394.c trunk/nodemgr.c trunk/raw1394.c trunk/sbp2.c trunk/video1394.c Log: Make sure any kalloc's during add_host check for in_interrupt(). Modified: trunk/amdtp.c ============================================================================== --- trunk/amdtp.c (original) +++ trunk/amdtp.c 2002-10-22 16:27:54.000000000 -0400 @@ -1212,7 +1212,7 @@ if (strcmp(host->driver->name, OHCI1394_DRIVER_NAME) != 0) return; - ah = kmalloc(sizeof *ah, SLAB_KERNEL); + ah = kmalloc(sizeof *ah, in_interrupt() ? SLAB_ATOMIC : SLAB_KERNEL); ah->host = host; ah->ohci = host->hostdata; INIT_LIST_HEAD(&ah->stream_list); Modified: trunk/raw1394.c ============================================================================== --- trunk/raw1394.c (original) +++ trunk/raw1394.c 2002-10-22 16:27:55.000000000 -0400 @@ -182,7 +182,8 @@ struct host_info *hi; unsigned long flags; - hi = (struct host_info *)kmalloc(sizeof(struct host_info), SLAB_KERNEL); + hi = (struct host_info *)kmalloc(sizeof(struct host_info), + in_interrupt() ? SLAB_ATOMIC : SLAB_KERNEL); if (hi != NULL) { INIT_LIST_HEAD(&hi->list); hi->host = host; Modified: trunk/nodemgr.c ============================================================================== --- trunk/nodemgr.c (original) +++ trunk/nodemgr.c 2002-10-22 16:27:55.000000000 -0400 @@ -1323,9 +1323,11 @@ static void nodemgr_add_host(struct hpsb_host *host) { - struct host_info *hi = kmalloc (sizeof (struct host_info), GFP_ATOMIC); + struct host_info *hi; unsigned long flags; + hi = kmalloc(sizeof (struct hpsb_info), in_interrupt() ? SLAB_ATOMIC : SLAB_KERNEL); + if (!hi) { HPSB_ERR ("NodeMgr: out of memory in add host"); return; Modified: trunk/eth1394.c ============================================================================== --- trunk/eth1394.c (original) +++ trunk/eth1394.c 2002-10-22 16:27:55.000000000 -0400 @@ -360,7 +360,7 @@ priv->host = host; hi = (struct host_info *)kmalloc (sizeof (struct host_info), - GFP_KERNEL); + in_interrupt() ? SLAB_ATOMIC : SLAB_KERNEL); if (hi == NULL) goto out; Modified: trunk/sbp2.c ============================================================================== --- trunk/sbp2.c (original) +++ trunk/sbp2.c 2002-10-22 16:27:55.000000000 -0400 @@ -536,7 +536,7 @@ static struct hpsb_protocol_driver sbp2_driver = { .name = "SBP2 Driver", .id_table = sbp2_id_table, - .probe = sbp2_probe, + .probe = sbp2_probe, .disconnect = sbp2_disconnect, .update = sbp2_update }; @@ -1014,7 +1014,7 @@ /* Allocate some memory for our host info structure */ hi = (struct sbp2scsi_host_info *)kmalloc(sizeof(struct sbp2scsi_host_info), - GFP_KERNEL); + in_interrupt() ? SLAB_ATOMIC : SLAB_KERNEL); if (hi == NULL) { SBP2_ERR("out of memory in sbp2_add_host"); Modified: trunk/cmp.c ============================================================================== --- trunk/cmp.c (original) +++ trunk/cmp.c 2002-10-22 16:27:55.000000000 -0400 @@ -158,7 +158,7 @@ { struct cmp_host *ch; - ch = kmalloc(sizeof *ch, SLAB_KERNEL); + ch = kmalloc(sizeof *ch, in_interrupt() ? SLAB_ATOMIC : SLAB_KERNEL); if (ch == NULL) { HPSB_ERR("Failed to allocate cmp_host"); return; Modified: trunk/video1394.c ============================================================================== --- trunk/video1394.c (original) +++ trunk/video1394.c 2002-10-22 16:27:55.000000000 -0400 @@ -1248,18 +1248,15 @@ int video1394_mmap(struct file *file, struct vm_area_struct *vma) { struct file_ctx *ctx = (struct file_ctx *)file->private_data; - struct video_card *video = ctx->video; - struct ti_ohci *ohci = video->ohci; int res = -EINVAL; lock_kernel(); - ohci = video->ohci; - if (ctx->current_ctx == NULL) { - PRINT(KERN_ERR, ohci->id, "Current iso context not set"); + PRINT(KERN_ERR, ctx->video->ohci->id, "Current iso context not set"); } else res = do_iso_mmap(ohci, ctx->current_ctx, vma); unlock_kernel(); + return res; } |
From: SVN U. <ben...@li...> - 2002-10-22 13:50:34
|
Author: bencollins Date: 2002-10-22 09:50:27 -0400 (Tue, 22 Oct 2002) New Revision: 640 Modified: trunk/nodemgr.c Log: Call kmalloc with ATOMIC in addhost. Everywhere in knodemgrd can use GFP_KERNEL though. Modified: trunk/nodemgr.c ============================================================================== --- trunk/nodemgr.c (original) +++ trunk/nodemgr.c 2002-10-22 09:50:27.000000000 -0400 @@ -344,7 +344,7 @@ return NULL; } } - ne = kmalloc(total_size, SLAB_ATOMIC); + ne = kmalloc(total_size, GFP_KERNEL); if (!ne) return NULL; @@ -1323,7 +1323,7 @@ static void nodemgr_add_host(struct hpsb_host *host) { - struct host_info *hi = kmalloc (sizeof (struct host_info), GFP_KERNEL); + struct host_info *hi = kmalloc (sizeof (struct host_info), GFP_ATOMIC); unsigned long flags; if (!hi) { |
From: SVN U. <ben...@li...> - 2002-10-22 12:15:26
|
Author: bencollins Date: 2002-10-22 08:15:19 -0400 (Tue, 22 Oct 2002) New Revision: 639 Modified: trunk/sbp2.c Log: Oops. One-liner I had in there for debugging. Sorry about that. Modified: trunk/sbp2.c ============================================================================== --- trunk/sbp2.c (original) +++ trunk/sbp2.c 2002-10-22 08:15:19.000000000 -0400 @@ -1818,8 +1818,6 @@ scsi_id->max_payload_size = min(sbp2_speedto_maxrec[scsi_id->speed_code], (u8)(((be32_to_cpu(hi->host->csr.rom[2]) >> 12) & 0xf) - 1)); - scsi_id->max_payload_size = sbp2_speedto_maxrec[SPEED_200]; - SBP2_ERR("Node[" NODE_BUS_FMT "]: Max speed [%s] - Max payload [%u]", NODE_BUS_ARGS(scsi_id->ne->nodeid), hpsb_speedto_str[scsi_id->speed_code], 1 << ((u32)scsi_id->max_payload_size + 2)); |
From: SVN U. <ben...@li...> - 2002-10-22 05:12:27
|
Author: bencollins Date: 2002-10-22 01:12:22 -0400 (Tue, 22 Oct 2002) New Revision: 638 Modified: trunk/sbp2.c trunk/sbp2.h Log: Purge unused/uneeded options to sbp2. Later we'll reimplement some of this for per-node usage. Set better defaults for can_queue and cmds_per_lun. Translates to an equally better default for max command orbs to be allocated. Modified: trunk/sbp2.c ============================================================================== --- trunk/sbp2.c (original) +++ trunk/sbp2.c 2002-10-22 01:12:23.000000000 -0400 @@ -81,11 +81,9 @@ * * sbp2_max_speed - Force max speed allowed * (2 = 400mb, 1 = 200mb, 0 = 100mb. default = 2) - * sbp2_serialize_io - Serialize all I/O coming down from the scsi drivers + * sbp2_serialize_io - Serialize all I/O coming down from the scsi drivers * (0 = deserialized, 1 = serialized, default = 0) * sbp2_max_sectors, - Change max sectors per I/O supported (default = 255) - * sbp2_max_outstanding_cmds - Change max outstanding concurrent commands (default = 8) - * sbp2_max_cmds_per_lun - Change max concurrent commands per sbp2 device (default = 1) * sbp2_exclusive_login - Set to zero if you'd like to allow multiple hosts the ability * to log in at the same time. Sbp2 device must support this, * and you must know what you're doing (default = 1) @@ -396,26 +394,6 @@ static int sbp2_max_sectors = SBP2_MAX_SECTORS; /* - * Adjust sbp2_max_outstanding_cmds to tune performance if you have many - * sbp2 devices attached (or if you need to do some debugging). - */ -MODULE_PARM(sbp2_max_outstanding_cmds,"i"); -MODULE_PARM_DESC(sbp2_max_outstanding_cmds, "Change max outstanding concurrent commands (default = 8)"); -static int sbp2_max_outstanding_cmds = SBP2SCSI_MAX_OUTSTANDING_CMDS; - -/* - * Adjust sbp2_max_cmds_per_lun to tune performance. Enabling more than - * one concurrent/linked command per sbp2 device may allow some - * performance gains, but some older sbp2 devices have firmware bugs - * resulting in problems when linking commands... so, enable this with - * care. I can note that the Oxsemi OXFW911 sbp2 chipset works very well - * with large numbers of concurrent/linked commands. =) - */ -MODULE_PARM(sbp2_max_cmds_per_lun,"i"); -MODULE_PARM_DESC(sbp2_max_cmds_per_lun, "Change max concurrent commands per sbp2 device (default = 1)"); -static int sbp2_max_cmds_per_lun = SBP2SCSI_MAX_CMDS_PER_LUN; - -/* * Exclusive login to sbp2 device? In most cases, the sbp2 driver should * do an exclusive login, as it's generally unsafe to have two hosts * talking to a single sbp2 device at the same time (filesystem coherency, @@ -706,11 +684,13 @@ struct sbp2scsi_host_info *hi) { int i; - unsigned long flags; + unsigned long flags, orbs; struct sbp2_command_info *command; + + orbs = sbp2_serialize_io ? 2 : SBP2_MAX_COMMAND_ORBS; sbp2_spin_lock(&scsi_id->sbp2_command_orb_lock, flags); - for (i = 0; i < scsi_id->sbp2_total_command_orbs; i++) { + for (i = 0; i < orbs; i++) { command = (struct sbp2_command_info *) kmalloc(sizeof(struct sbp2_command_info), GFP_KERNEL); if (!command) { @@ -1007,7 +987,7 @@ sbp2_set_busy_timeout(hi, scsi_id); /* Do a SBP-2 fetch agent reset. */ - sbp2_agent_reset(hi, scsi_id, 0); + sbp2_agent_reset(hi, scsi_id, 1); /* Get the max speed and packet size that we can use. */ sbp2_max_speed_and_size(hi, scsi_id); @@ -1223,12 +1203,6 @@ INIT_LIST_HEAD(&scsi_id->sbp2_command_orb_completed); scsi_id->sbp2_command_orb_lock = SPIN_LOCK_UNLOCKED; - /* Knock the total command orbs down if we are serializing I/O */ - if (sbp2_serialize_io) - scsi_id->sbp2_total_command_orbs = 2; - else - scsi_id->sbp2_total_command_orbs = SBP2_MAX_COMMAND_ORBS; - /* * Make sure that we've gotten ahold of the sbp2 management agent * address. Also figure out the command set being used (SCSI or @@ -1285,7 +1259,7 @@ /* * Do a SBP-2 fetch agent reset */ - sbp2_agent_reset(hi, scsi_id, 0); + sbp2_agent_reset(hi, scsi_id, 1); /* * Get the max speed and packet size that we can use @@ -1306,10 +1280,7 @@ /* Complete any pending commands with selection timeout */ sbp2scsi_complete_all_commands(hi, scsi_id, DID_NO_CONNECT); - /* Clean up any other structures */ - if (scsi_id->sbp2_total_command_orbs) { - sbp2util_remove_command_orb_pool(scsi_id, hi); - } + sbp2util_remove_command_orb_pool(scsi_id, hi); if (scsi_id->login_response) { pci_free_consistent(hi->host->pdev, @@ -1796,7 +1767,7 @@ * possible. */ if ((scsi_id->sbp2_firmware_revision & 0xffff00) == SBP2_128KB_BROKEN_FIRMWARE && - (sbp2_max_sectors * 512) > (128 * 1024)) { + (sbp2_max_sectors * 512) > (128*1024)) { SBP2_WARN("Node " NODE_BUS_FMT ": Bridge only supports 128KB max transfer size.", NODE_BUS_ARGS(scsi_id->ne->nodeid)); SBP2_WARN("WARNING: Current sbp2_max_sectors setting is larger than 128KB (%d sectors)!", @@ -1847,6 +1818,8 @@ scsi_id->max_payload_size = min(sbp2_speedto_maxrec[scsi_id->speed_code], (u8)(((be32_to_cpu(hi->host->csr.rom[2]) >> 12) & 0xf) - 1)); + scsi_id->max_payload_size = sbp2_speedto_maxrec[SPEED_200]; + SBP2_ERR("Node[" NODE_BUS_FMT "]: Max speed [%s] - Max payload [%u]", NODE_BUS_ARGS(scsi_id->ne->nodeid), hpsb_speedto_str[scsi_id->speed_code], 1 << ((u32)scsi_id->max_payload_size + 2)); @@ -1857,7 +1830,7 @@ /* * This function is called in order to perform a SBP-2 agent reset. */ -static int sbp2_agent_reset(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, u32 flags) +static int sbp2_agent_reset(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, int wait) { struct hpsb_packet *packet; quadlet_t data; @@ -1884,7 +1857,7 @@ return(-EIO); } - if (!(flags & SBP2_SEND_NO_WAIT)) { + if (wait) { down(&packet->state_change); down(&packet->state_change); } @@ -2633,7 +2606,7 @@ * Initiate a fetch agent reset. */ SBP2_DEBUG("Dead bit set - initiating fetch agent reset"); - sbp2_agent_reset(hi, scsi_id, SBP2_SEND_NO_WAIT); + sbp2_agent_reset(hi, scsi_id, 0); } SBP2_ORB_DEBUG("completing command orb %p", &command->command_orb); @@ -2951,7 +2924,7 @@ /* * Initiate a fetch agent reset. */ - sbp2_agent_reset(hi, scsi_id, SBP2_SEND_NO_WAIT); + sbp2_agent_reset(hi, scsi_id, 0); sbp2scsi_complete_all_commands(hi, scsi_id, DID_BUS_BUSY); sbp2_spin_unlock(&hi->sbp2_command_lock, flags); } @@ -2971,7 +2944,7 @@ if (scsi_id) { SBP2_ERR("Generating sbp2 fetch agent reset"); - sbp2_agent_reset(hi, scsi_id, SBP2_SEND_NO_WAIT); + sbp2_agent_reset(hi, scsi_id, 0); } return(SUCCESS); @@ -3049,16 +3022,12 @@ "SBP-2 module load options:\n" "- Max speed supported: %s\n" "- Max sectors per I/O supported: %d\n" - "- Max outstanding commands supported: %d\n" - "- Max outstanding commands per lun supported: %d\n" "- Serialized I/O (debug): %s\n" "- Exclusive login: %s", hi->host->driver->name, version, hpsb_speedto_str[sbp2_max_speed], sbp2_max_sectors, - sbp2_max_outstanding_cmds, - sbp2_max_cmds_per_lun, sbp2_serialize_io ? "yes" : "no", sbp2_exclusive_login ? "yes" : "no"); @@ -3083,29 +3052,27 @@ .eh_host_reset_handler =sbp2scsi_reset, .bios_param = sbp2scsi_biosparam, .this_id = -1, - .sg_tablesize = SBP2_MAX_SG_ELEMENTS, - .use_clustering = SBP2_CLUSTERING, + .sg_tablesize = SG_ALL, + .use_clustering = ENABLE_CLUSTERING, + .cmd_per_lun = SBP2_MAX_CMDS_PER_LUN, + .can_queue = SBP2_MAX_SCSI_QUEUE, #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) .use_new_eh_code = TRUE, #endif .emulated = 1, - .proc_name = SBP2_DEVICE_NAME, + .proc_name = SBP2_DEVICE_NAME, }; static int sbp2_module_init(void) { SBP2_DEBUG("sbp2_module_init"); - /* - * Module load debug option to force one command at a time (serializing I/O) - */ + /* Module load debug option to force one command at a time + * (serializing I/O) */ if (sbp2_serialize_io) { SBP2_ERR("Driver forced to serialize I/O (serialize_io = 1)"); scsi_driver_template.can_queue = 1; scsi_driver_template.cmd_per_lun = 1; - } else { - scsi_driver_template.can_queue = sbp2_max_outstanding_cmds; - scsi_driver_template.cmd_per_lun = sbp2_max_cmds_per_lun; } /* Modified: trunk/sbp2.h ============================================================================== --- trunk/sbp2.h (original) +++ trunk/sbp2.h 2002-10-22 01:12:23.000000000 -0400 @@ -32,33 +32,19 @@ #endif #define SBP2_DEVICE_NAME "sbp2" -#define SBP2_DEVICE_NAME_SIZE 4 /* * SBP2 specific structures and defines */ -#define ORB_FMT_CMD 0x0 -#define ORB_FMT_DUMMY 0x3 - #define ORB_DIRECTION_WRITE_TO_MEDIA 0x0 #define ORB_DIRECTION_READ_FROM_MEDIA 0x1 #define ORB_DIRECTION_NO_DATA_TRANSFER 0x2 #define ORB_SET_NULL_PTR(value) ((value & 0x1) << 31) #define ORB_SET_NOTIFY(value) ((value & 0x1) << 31) -#define ORB_SET_RQ_FMT(value) ((value & 0x3) << 29) +#define ORB_SET_RQ_FMT(value) ((value & 0x3) << 29) /* unused ? */ #define ORB_SET_NODE_ID(value) ((value & 0xffff) << 16) - -struct sbp2_dummy_orb { - volatile u32 next_ORB_hi; - volatile u32 next_ORB_lo; - u32 reserved1; - u32 reserved2; - u32 notify_rq_fmt; - u8 command_block[12]; -}; - #define ORB_SET_DATA_SIZE(value) (value & 0xffff) #define ORB_SET_PAGE_SIZE(value) ((value & 0x7) << 16) #define ORB_SET_PAGE_TABLE_PRESENT(value) ((value & 0x1) << 19) @@ -253,25 +239,15 @@ * Other misc defines */ #define SBP2_128KB_BROKEN_FIRMWARE 0xa0b800 -#define SBP2_BROKEN_FIRMWARE_MAX_TRANSFER 0x20000 #define SBP2_DEVICE_TYPE_LUN_UNINITIALIZED 0xffffffff /* - * Flags for SBP-2 functions - */ -#define SBP2_SEND_NO_WAIT 0x00000001 - -/* * SCSI specific stuff */ -#define SBP2_MAX_SG_ELEMENTS SG_ALL -#define SBP2_CLUSTERING ENABLE_CLUSTERING #define SBP2_MAX_SG_ELEMENT_LENGTH 0xf000 #define SBP2SCSI_MAX_SCSI_IDS 16 /* Max sbp2 device instances supported */ -#define SBP2SCSI_MAX_OUTSTANDING_CMDS 8 /* Max total outstanding sbp2 commands allowed at a time! */ -#define SBP2SCSI_MAX_CMDS_PER_LUN 1 /* Max outstanding sbp2 commands per device - tune as needed */ #define SBP2_MAX_SECTORS 255 /* Max sectors supported */ #ifndef TYPE_SDAD @@ -314,14 +290,18 @@ DUN,DUN,DUN,DUN,DUN,DUN,DUN,DUN,DUN,DUN,DUN,DUN,DUN,DUN,DUN,DUN }; -#define SBP2_MAX_REQUEST_PACKETS (sbp2_max_outstanding_cmds * 2) -#define SBP2_MAX_COMMAND_ORBS (sbp2_max_cmds_per_lun * 2) - +/* This should be safe. If there's more than one LUN per node, we could + * saturate the tlabel's though. */ +#define SBP2_MAX_CMDS_PER_LUN 8 +#define SBP2_MAX_SCSI_QUEUE (SBP2_MAX_CMDS_PER_LUN * SBP2SCSI_MAX_SCSI_IDS) +#define SBP2_MAX_COMMAND_ORBS SBP2_MAX_SCSI_QUEUE /* This is the two dma types we use for cmd_dma below */ -#define CMD_DMA_NONE 0x0 -#define CMD_DMA_PAGE 0x1 -#define CMD_DMA_SINGLE 0x2 +enum cmd_dma_types { + CMD_DMA_NONE, + CMD_DMA_PAGE, + CMD_DMA_SINGLE +}; /* * Encapsulates all the info necessary for an outstanding command. @@ -335,11 +315,11 @@ void (*Current_done)(Scsi_Cmnd *); /* Also need s/g structure for each sbp2 command */ - struct sbp2_unrestricted_page_table scatter_gather_element[SBP2_MAX_SG_ELEMENTS] ____cacheline_aligned; + struct sbp2_unrestricted_page_table scatter_gather_element[SG_ALL] ____cacheline_aligned; dma_addr_t sge_dma ____cacheline_aligned; void *sge_buffer; dma_addr_t cmd_dma; - int dma_type; + enum cmd_dma_types dma_type; unsigned long dma_size; int dma_dir; @@ -400,7 +380,6 @@ spinlock_t sbp2_command_orb_lock; struct list_head sbp2_command_orb_inuse; struct list_head sbp2_command_orb_completed; - u32 sbp2_total_command_orbs; /* Node entry, as retrieved from NodeMgr entries */ struct node_entry *ne; @@ -488,7 +467,7 @@ static int sbp2_logout_device(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id); static int sbp2_handle_status_write(struct hpsb_host *host, int nodeid, int destid, quadlet_t *data, u64 addr, unsigned int length, u16 flags); -static int sbp2_agent_reset(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, u32 flags); +static int sbp2_agent_reset(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, int wait); static int sbp2_create_command_orb(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, struct sbp2_command_info *command, |
From: SVN U. <ben...@li...> - 2002-10-22 05:00:43
|
Author: bencollins Date: 2002-10-22 01:00:37 -0400 (Tue, 22 Oct 2002) New Revision: 637 Modified: trunk/TODO Log: Add some more todo items. Modified: trunk/TODO ============================================================================== --- trunk/TODO (original) +++ trunk/TODO 2002-10-22 01:00:38.000000000 -0400 @@ -1,6 +1,14 @@ - Cleanup headers. Things really need to be reorged. - Redo entire bus reset handling scheme. It really is spaghetti. The whole - hpsb_bus_reset() and hpsb_reset_bus() thing is enough to prove this. + hpsb_bus_reset() and hpsb_reset_bus() thing is enough to prove this. I'm + surprised that we don't have more circular problems with reset handling. - Get cardbus suspend/resume events handled. + +- Complete IRM functionality + +- Complete Bus Manager functionality + +- Implement per-node queueing options for SBP-2 (look at sym2 driver for + example). |
From: SVN U. <ben...@li...> - 2002-10-22 04:21:11
|
Author: bencollins Date: 2002-10-22 00:21:06 -0400 (Tue, 22 Oct 2002) New Revision: 636 Modified: trunk/Config.in Log: Minor tweaks. Modified: trunk/Config.in ============================================================================== --- trunk/Config.in (original) +++ trunk/Config.in 2002-10-22 00:21:07.000000000 -0400 @@ -7,8 +7,11 @@ dep_tristate 'IEEE 1394 (FireWire) support (EXPERIMENTAL)' CONFIG_IEEE1394 $CONFIG_PCI if [ "$CONFIG_IEEE1394" != "n" ]; then + comment "Subsystem Options" + bool ' Excessive debugging output' CONFIG_IEEE1394_VERBOSEDEBUG + bool ' OUI Database built-in' CONFIG_IEEE1394_OUI_DB - comment "Device Drivers" + comment "Host Controller Drivers" if [ "$CONFIG_I2C" != "" -a "$CONFIG_I2C_ALGOBIT" != "" ]; then if [ "$CONFIG_I2C" != "n" -a "$CONFIG_I2C_ALGOBIT" != "n" ]; then @@ -40,10 +43,6 @@ if [ "$CONFIG_IEEE1394_CMP" != "n" ]; then dep_tristate ' IEC61883-6 (Audio transmission) support' CONFIG_IEEE1394_AMDTP $CONFIG_IEEE1394_OHCI1394 $CONFIG_IEEE1394_CMP fi - - comment "Miscellaneous Options" - bool ' Excessive debugging output' CONFIG_IEEE1394_VERBOSEDEBUG - bool ' OUI Database built-in' CONFIG_IEEE1394_OUI_DB fi endmenu fi |
From: SVN U. <ben...@li...> - 2002-10-21 23:20:12
|
Author: bencollins Date: 2002-10-21 19:20:09 -0400 (Mon, 21 Oct 2002) New Revision: 635 Modified: trunk/TODO Log: Add suspend/resume to todo list. Modified: trunk/TODO ============================================================================== --- trunk/TODO (original) +++ trunk/TODO 2002-10-21 19:20:10.000000000 -0400 @@ -2,3 +2,5 @@ - Redo entire bus reset handling scheme. It really is spaghetti. The whole hpsb_bus_reset() and hpsb_reset_bus() thing is enough to prove this. + +- Get cardbus suspend/resume events handled. |
From: SVN U. <ben...@li...> - 2002-10-21 23:17:55
|
Author: bencollins Date: 2002-10-21 19:17:53 -0400 (Mon, 21 Oct 2002) New Revision: 634 Modified: trunk/TODO Log: Add bus reset stuff to todo list. Modified: trunk/TODO ============================================================================== --- trunk/TODO (original) +++ trunk/TODO 2002-10-21 19:17:53.000000000 -0400 @@ -1 +1,4 @@ - Cleanup headers. Things really need to be reorged. + +- Redo entire bus reset handling scheme. It really is spaghetti. The whole + hpsb_bus_reset() and hpsb_reset_bus() thing is enough to prove this. |
From: SVN U. <ben...@li...> - 2002-10-21 16:26:13
|
Author: bencollins Date: 2002-10-21 12:26:11 -0400 (Mon, 21 Oct 2002) New Revision: 633 Modified: trunk/Makefile Log: clean-files should come before we include Rules.make Modified: trunk/Makefile ============================================================================== --- trunk/Makefile (original) +++ trunk/Makefile 2002-10-21 12:26:11.000000000 -0400 @@ -18,13 +18,13 @@ obj-$(CONFIG_IEEE1394_AMDTP) += amdtp.o obj-$(CONFIG_IEEE1394_CMP) += cmp.o +clean-files := oui.c + include $(TOPDIR)/Rules.make ieee1394.o: $(ieee1394-objs) $(LD) $(LDFLAGS) -r -o $@ $(ieee1394-objs) -clean-files := oui.c - ifeq ($(obj),) obj = . endif |
From: SVN U. <ben...@li...> - 2002-10-21 16:21:03
|
Author: bencollins Date: 2002-10-21 12:20:58 -0400 (Mon, 21 Oct 2002) New Revision: 632 Modified: trunk/ trunk/Makefile Log: Update Makefile so that oui.c works with 2.5.x. Also, add oui.c and .*.cmd to svn:ignore. Modified: trunk/Makefile ============================================================================== --- trunk/Makefile (original) +++ trunk/Makefile 2002-10-21 12:20:59.000000000 -0400 @@ -23,6 +23,12 @@ ieee1394.o: $(ieee1394-objs) $(LD) $(LDFLAGS) -r -o $@ $(ieee1394-objs) -oui.o: oui.c -oui.c: oui.db oui2c.sh - $(CONFIG_SHELL) oui2c.sh < oui.db > oui.c +clean-files := oui.c + +ifeq ($(obj),) +obj = . +endif + +$(obj)/oui.o: $(obj)/oui.c +$(obj)/oui.c: $(obj)/oui.db $(obj)/oui2c.sh + $(CONFIG_SHELL) $(obj)/oui2c.sh < $(obj)/oui.db > $(obj)/oui.c |
From: SVN U. <ben...@li...> - 2002-10-21 16:15:43
|
Author: bencollins Date: 2002-10-21 12:15:40 -0400 (Mon, 21 Oct 2002) New Revision: 631 Modified: trunk/amdtp.c trunk/ieee1394_types.h trunk/ohci1394.c Log: Add compat macro for pci_pool_create change in 2.5. Modified: trunk/ohci1394.c ============================================================================== --- trunk/ohci1394.c (original) +++ trunk/ohci1394.c 2002-10-21 12:15:41.000000000 -0400 @@ -1624,7 +1624,7 @@ return -ENOMEM; } - d->prg_pool = pci_pool_create("ohci1394 rcv prg", ohci->dev, + d->prg_pool = hpsb_pci_pool_create("ohci1394 rcv prg", ohci->dev, sizeof(struct dma_cmd), 4, 0, SLAB_KERNEL); OHCI_DMA_ALLOC("dma_rcv prg pool"); @@ -1733,7 +1733,7 @@ memset(d->prg_cpu, 0, d->num_desc * sizeof(struct at_dma_prg*)); memset(d->prg_bus, 0, d->num_desc * sizeof(dma_addr_t)); - d->prg_pool = pci_pool_create("ohci1394 trm prg", ohci->dev, + d->prg_pool = hpsb_pci_pool_create("ohci1394 trm prg", ohci->dev, sizeof(struct at_dma_prg), 4, 0, SLAB_KERNEL); OHCI_DMA_ALLOC("dma_rcv prg pool"); Modified: trunk/amdtp.c ============================================================================== --- trunk/amdtp.c (original) +++ trunk/amdtp.c 2002-10-21 12:15:41.000000000 -0400 @@ -833,13 +833,9 @@ max_nevents = fraction_ceil(&s->samples_per_cycle); max_packet_size = max_nevents * s->dimension * 4 + 8; - s->packet_pool = pci_pool_create("packet pool", s->host->ohci->dev, - max_packet_size, 0, 0 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40) - ,SLAB_KERNEL); -#else - ); -#endif + s->packet_pool = hpsb_pci_pool_create("packet pool", s->host->ohci->dev, + max_packet_size, 0, 0 ,SLAB_KERNEL); + if (s->packet_pool == NULL) return -1; @@ -1023,14 +1019,9 @@ return NULL; } - s->descriptor_pool = pci_pool_create("descriptor pool", host->ohci->dev, + s->descriptor_pool = hpsb_pci_pool_create("descriptor pool", host->ohci->dev, sizeof(struct descriptor_block), - 16, 0 -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40) - ,SLAB_KERNEL); -#else - ); -#endif + 16, 0 ,SLAB_KERNEL); if (s->descriptor_pool == NULL) { kfree(s->input); Modified: trunk/ieee1394_types.h ============================================================================== --- trunk/ieee1394_types.h (original) +++ trunk/ieee1394_types.h 2002-10-21 12:15:41.000000000 -0400 @@ -62,6 +62,13 @@ #define HPSB_PREPARE_WORK(x,y,z) PREPARE_WORK(x,y,z) #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,44) +/* pci_pool_create changed. does not take the flags arg any longer */ +#define hpsb_pci_pool_create(a,b,c,d,e,f) pci_pool_create(a,b,c,d,e,f) +#else +#define hpsb_pci_pool_create(a,b,c,d,e,f) pci_pool_create(a,b,c,d,e) +#endif + /* Transaction Label handling */ struct hpsb_tlabel_pool { u64 pool; |
From: SVN U. <ben...@li...> - 2002-10-21 16:10:06
|
Author: bencollins Date: 2002-10-21 12:10:00 -0400 (Mon, 21 Oct 2002) New Revision: 630 Modified: trunk/raw1394.c Log: Use req->req.generation instead of get_hpsb_generation() so we don't have a race condition. Modified: trunk/raw1394.c ============================================================================== --- trunk/raw1394.c (original) +++ trunk/raw1394.c 2002-10-21 12:10:00.000000000 -0400 @@ -784,7 +784,7 @@ spin_unlock_irq(&fi->reqlists_lock); /* Update the generation of the packet just before sending. */ - packet->generation = get_hpsb_generation(fi->host); + packet->generation = req->req.generation; if (!hpsb_send_packet(packet)) { req->req.error = RAW1394_ERROR_SEND_ERROR; @@ -846,7 +846,7 @@ spin_unlock_irq(&fi->reqlists_lock); /* Update the generation of the packet just before sending. */ - packet->generation = get_hpsb_generation(fi->host); + packet->generation = req->req.generation; if (!hpsb_send_packet(packet)) { req->req.error = RAW1394_ERROR_SEND_ERROR; |
From: SVN U. <ben...@li...> - 2002-10-21 02:19:56
|
Author: bencollins Date: 2002-10-20 22:19:47 -0400 (Sun, 20 Oct 2002) New Revision: 629 Added: trunk/oui.db trunk/oui2c.sh Removed: trunk/oui.c Modified: trunk/Makefile Log: Better yet, let's generate the oui.c file from the raw oui.db, on the fly. Makes it easier to keep the db up-to-date. Added: trunk/oui.db ============================================================================== --- trunk/oui.db (original) +++ trunk/oui.db 2002-10-20 22:19:47.000000000 -0400 @@ -0,0 +1,4931 @@ +000000 XEROX CORPORATION +000001 XEROX CORPORATION +000002 XEROX CORPORATION +000003 XEROX CORPORATION +000004 XEROX CORPORATION +000005 XEROX CORPORATION +000006 XEROX CORPORATION +000007 XEROX CORPORATION +000008 XEROX CORPORATION +000009 XEROX CORPORATION +00000A OMRON TATEISI ELECTRONICS CO. +00000B MATRIX CORPORATION +00000C CISCO SYSTEMS, INC. +00000D FIBRONICS LTD. +00000E FUJITSU LIMITED +00000F NEXT, INC. +000010 SYTEK INC. +000011 NORMEREL SYSTEMES +000012 INFORMATION TECHNOLOGY LIMITED +000013 CAMEX +000014 NETRONIX +000015 DATAPOINT CORPORATION +000016 DU PONT PIXEL SYSTEMS . +000017 TEKELEC +000018 WEBSTER COMPUTER CORPORATION +000019 APPLIED DYNAMICS INTERNATIONAL +00001A ADVANCED MICRO DEVICES +00001B NOVELL INC. +00001C BELL TECHNOLOGIES +00001D CABLETRON SYSTEMS, INC. +00001E TELSIST INDUSTRIA ELECTRONICA +00001F Telco Systems, Inc. +000020 DATAINDUSTRIER DIAB AB +000021 SUREMAN COMP. & COMMUN. CORP. +000022 VISUAL TECHNOLOGY INC. +000023 ABB INDUSTRIAL SYSTEMS AB +000024 CONNECT AS +000025 RAMTEK CORP. +000026 SHA-KEN CO., LTD. +000027 JAPAN RADIO COMPANY +000028 PRODIGY SYSTEMS CORPORATION +000029 IMC NETWORKS CORP. +00002A TRW - SEDD/INP +00002B CRISP AUTOMATION, INC +00002C AUTOTOTE LIMITED +00002D CHROMATICS INC +00002E SOCIETE EVIRA +00002F TIMEPLEX INC. +000030 VG LABORATORY SYSTEMS LTD +000031 QPSX COMMUNICATIONS PTY LTD +000032 Marconi plc +000033 EGAN MACHINERY COMPANY +000034 NETWORK RESOURCES CORPORATION +000035 SPECTRAGRAPHICS CORPORATION +000036 ATARI CORPORATION +000037 OXFORD METRICS LIMITED +000038 CSS LABS +000039 TOSHIBA CORPORATION +00003A CHYRON CORPORATION +00003B i Controls, Inc. +00003C AUSPEX SYSTEMS INC. +00003D UNISYS +00003E SIMPACT +00003F SYNTREX, INC. +000040 APPLICON, INC. +000041 ICE CORPORATION +000042 METIER MANAGEMENT SYSTEMS LTD. +000043 MICRO TECHNOLOGY +000044 CASTELLE CORPORATION +000045 FORD AEROSPACE & COMM. CORP. +000046 OLIVETTI NORTH AMERICA +000047 NICOLET INSTRUMENTS CORP. +000048 SEIKO EPSON CORPORATION +000049 APRICOT COMPUTERS, LTD +00004A ADC CODENOLL TECHNOLOGY CORP. +00004B ICL DATA OY +00004C NEC CORPORATION +00004D DCI CORPORATION +00004E AMPEX CORPORATION +00004F LOGICRAFT, INC. +000050 RADISYS CORPORATION +000051 HOB ELECTRONIC GMBH & CO. KG +000052 Intrusion.com, Inc. +000053 COMPUCORP +000054 MODICON, INC. +000055 COMMISSARIAT A L`ENERGIE ATOM. +000056 DR. B. STRUCK +000057 SCITEX CORPORATION LTD. +000058 RACORE COMPUTER PRODUCTS INC. +000059 HELLIGE GMBH +00005A SysKonnect GmbH +00005B ELTEC ELEKTRONIK AG +00005C TELEMATICS INTERNATIONAL INC. +00005D CS TELECOM +00005E USC INFORMATION SCIENCES INST +00005F SUMITOMO ELECTRIC IND., LTD. +000060 KONTRON ELEKTRONIK GMBH +000061 GATEWAY COMMUNICATIONS +000062 BULL HN INFORMATION SYSTEMS +000063 DR.ING.SEUFERT GMBH +000064 YOKOGAWA DIGITAL COMPUTER CORP +000065 NETWORK ASSOCIATES, INC. +000066 TALARIS SYSTEMS, INC. +000067 SOFT * RITE, INC. +000068 ROSEMOUNT CONTROLS +000069 CONCORD COMMUNICATIONS INC +00006A COMPUTER CONSOLES INC. +00006B SILICON GRAPHICS INC./MIPS +00006D CRAY COMMUNICATIONS, LTD. +00006E ARTISOFT, INC. +00006F MADGE NETWORKS LTD. +000070 HCL LIMITED +000071 ADRA SYSTEMS INC. +000072 MINIWARE TECHNOLOGY +000073 SIECOR CORPORATION +000074 RICOH COMPANY LTD. +000075 Nortel Networks +000076 ABEKAS VIDEO SYSTEM +000077 INTERPHASE CORPORATION +000078 LABTAM LIMITED +000079 NETWORTH INCORPORATED +00007A DANA COMPUTER INC. +00007B RESEARCH MACHINES +00007C AMPERE INCORPORATED +00007D SUN MICROSYSTEMS, INC. +00007E CLUSTRIX CORPORATION +00007F LINOTYPE-HELL AG +000080 CRAY COMMUNICATIONS A/S +000081 BAY NETWORKS +000082 LECTRA SYSTEMES SA +000083 TADPOLE TECHNOLOGY PLC +000084 SUPERNET +000085 CANON INC. +000086 MEGAHERTZ CORPORATION +000087 HITACHI, LTD. +000088 COMPUTER NETWORK TECH. CORP. +000089 CAYMAN SYSTEMS INC. +00008A DATAHOUSE INFORMATION SYSTEMS +00008B INFOTRON +00008C ALLOY COMPUTER PRODUCTS, INC. +00008D VERDIX CORPORATION +00008E SOLBOURNE COMPUTER, INC. +00008F RAYTHEON COMPANY +000090 MICROCOM +000091 ANRITSU CORPORATION +000092 COGENT DATA TECHNOLOGIES +000093 PROTEON INC. +000094 ASANTE TECHNOLOGIES +000095 SONY TEKTRONIX CORP. +000096 MARCONI ELECTRONICS LTD. +000097 EPOCH SYSTEMS +000098 CROSSCOMM CORPORATION +000099 MTX, INC. +00009A RC COMPUTER A/S +00009B INFORMATION INTERNATIONAL, INC +00009C ROLM MIL-SPEC COMPUTERS +00009D LOCUS COMPUTING CORPORATION +00009E MARLI S.A. +00009F AMERISTAR TECHNOLOGIES INC. +0000A0 TOKYO SANYO ELECTRIC CO. LTD. +0000A1 MARQUETTE ELECTRIC CO. +0000A2 BAY NETWORKS +0000A3 NETWORK APPLICATION TECHNOLOGY +0000A4 ACORN COMPUTERS LIMITED +0000A5 COMPATIBLE SYSTEMS CORP. +0000A6 NETWORK GENERAL CORPORATION +0000A7 NETWORK COMPUTING DEVICES INC. +0000A8 STRATUS COMPUTER INC. +0000A9 NETWORK SYSTEMS CORP. +0000AA XEROX CORPORATION +0000AB LOGIC MODELING CORPORATION +0000AC CONWARE COMPUTER CONSULTING +0000AD BRUKER INSTRUMENTS INC. +0000AE DASSAULT ELECTRONIQUE +0000AF NUCLEAR DATA INSTRUMENTATION +0000B0 RND-RAD NETWORK DEVICES +0000B1 ALPHA MICROSYSTEMS INC. +0000B2 TELEVIDEO SYSTEMS, INC. +0000B3 CIMLINC INCORPORATED +0000B4 EDIMAX COMPUTER COMPANY +0000B5 DATABILITY SOFTWARE SYS. INC. +0000B6 MICRO-MATIC RESEARCH +0000B7 DOVE COMPUTER CORPORATION +0000B8 SEIKOSHA CO., LTD. +0000B9 MCDONNELL DOUGLAS COMPUTER SYS +0000BA SIIG, INC. +0000BB TRI-DATA +0000BC ALLEN-BRADLEY CO. INC. +0000BD MITSUBISHI CABLE COMPANY +0000BE THE NTI GROUP +0000BF SYMMETRIC COMPUTER SYSTEMS +0000C0 WESTERN DIGITAL CORPORATION +0000C1 Madge Networks Ltd. +0000C2 INFORMATION PRESENTATION TECH. +0000C3 HARRIS CORP COMPUTER SYS DIV +0000C4 WATERS DIV. OF MILLIPORE +0000C5 FARALLON COMPUTING/NETOPIA +0000C6 EON SYSTEMS +0000C7 ARIX CORPORATION +0000C8 ALTOS COMPUTER SYSTEMS +0000C9 EMULEX CORPORATION +0000CA APPLITEK +0000CB COMPU-SHACK ELECTRONIC GMBH +0000CC DENSAN CO., LTD. +0000CD Centrecom Systems, Ltd. +0000CE MEGADATA CORP. +0000CF HAYES MICROCOMPUTER PRODUCTS +0000D0 DEVELCON ELECTRONICS LTD. +0000D1 ADAPTEC INCORPORATED +0000D2 SBE, INC. +0000D3 WANG LABORATORIES INC. +0000D4 PURE DATA LTD. +0000D5 MICROGNOSIS INTERNATIONAL +0000D6 PUNCH LINE HOLDING +0000D7 DARTMOUTH COLLEGE +0000D8 NOVELL, INC. +0000D9 NIPPON TELEGRAPH & TELEPHONE +0000DA ATEX +0000DB BRITISH TELECOMMUNICATIONS PLC +0000DC HAYES MICROCOMPUTER PRODUCTS +0000DD TCL INCORPORATED +0000DE CETIA +0000DF BELL & HOWELL PUB SYS DIV +0000E0 QUADRAM CORP. +0000E1 GRID SYSTEMS +0000E2 ACER TECHNOLOGIES CORP. +0000E3 INTEGRATED MICRO PRODUCTS LTD +0000E4 IN2 GROUPE INTERTECHNIQUE +0000E5 SIGMEX LTD. +0000E6 APTOR PRODUITS DE COMM INDUST +0000E7 STAR GATE TECHNOLOGIES +0000E8 ACCTON TECHNOLOGY CORP. +0000E9 ISICAD, INC. +0000EA UPNOD AB +0000EB MATSUSHITA COMM. IND. CO. LTD. +0000EC MICROPROCESS +0000ED APRIL +0000EE NETWORK DESIGNERS, LTD. +0000EF KTI +0000F0 SAMSUNG ELECTRONICS CO., LTD. +0000F1 MAGNA COMPUTER CORPORATION +0000F2 SPIDER COMMUNICATIONS +0000F3 GANDALF DATA LIMITED +0000F4 ALLIED TELESYN INTERNATIONAL +0000F5 DIAMOND SALES LIMITED +0000F6 APPLIED MICROSYSTEMS CORP. +0000F7 YOUTH KEEP ENTERPRISE CO LTD +0000F8 DIGITAL EQUIPMENT CORPORATION +0000F9 QUOTRON SYSTEMS INC. +0000FA MICROSAGE COMPUTER SYSTEMS INC +0000FB RECHNER ZUR KOMMUNIKATION +0000FC MEIKO +0000FD HIGH LEVEL HARDWARE +0000FE ANNAPOLIS MICRO SYSTEMS +0000FF CAMTEC ELECTRONICS LTD. +000100 EQUIP'TRANS +000102 3COM CORPORATION +000103 3COM CORPORATION +000104 DVICO Co., Ltd. +000105 BECKHOFF GmbH +000106 Tews Datentechnik GmbH +000107 Leiser GmbH +000108 AVLAB Technology, Inc. +000109 Nagano Japan Radio Co., Ltd. +00010A CIS TECHNOLOGY INC. +00010B Space CyberLink, Inc. +00010C System Talks Inc. +00010D CORECO, INC. +00010E Bri-Link Technologies Co., Ltd +00010F Nishan Systems, Inc. +000110 Gotham Networks +000111 iDigm Inc. +000112 Shark Multimedia Inc. +000113 OLYMPUS OPTICAL CO., LTD. +000114 KANDA TSUSHIN KOGYO CO., LTD. +000115 EXTRATECH CORPORATION +000116 Netspect Technologies, Inc. +000117 CANAL + +000118 EZ Digital Co., Ltd. +000119 Action Controls Pty. Ltd. +00011A EEH DataLink GmbH +00011B Unizone Technologies, Inc. +00011C Universal Talkware Corporation +00011D Centillium Communications +00011E Precidia Technologies, Inc. +00011F RC Networks, Inc. +000120 OSCILLOQUARTZ S.A. +000121 RapidStream Inc. +000122 Trend Communications, Ltd. +000123 DIGITAL ELECTRONICS CORP. +000124 Acer Incorporated +000125 YAESU MUSEN CO., LTD. +000126 PAC Labs +000127 The OPEN Group Limited +000128 EnjoyWeb, Inc. +000129 DFI Inc. +00012A Telematica Sistems Inteligente +00012B TELENET Co., Ltd. +00012C Aravox Technologies, Inc. +00012D Komodo Technology +00012E PC Partner Ltd. +00012F Twinhead International Corp +000130 Extreme Networks +000131 Detection Systems, Inc. +000132 Dranetz - BMI +000133 KYOWA Electronic Instruments C +000134 SIG Positec Systems AG +000135 KDC Corp. +000136 CyberTAN Technology, Inc. +000137 IT Farm Corporation +000138 XAVi Technologies Corp. +000139 Point Multimedia Systems +00013A SHELCAD COMMUNICATIONS, LTD. +00013B BNA SYSTEMS +00013C TIW SYSTEMS +00013D RiscStation Ltd. +00013E Ascom Tateco AB +00013F Neighbor World Co., Ltd. +000140 Sendtek Corporation +000141 CABLE PRINT +000142 Cisco Systems, Inc. +000143 Cisco Systems, Inc. +000144 Cereva Networks, Inc. +000145 WINSYSTEMS, INC. +000146 Tesco Controls, Inc. +000147 Zhone Technologies +000148 X-traWeb Inc. +000149 T.D.T. Transfer Data Test GmbH +00014A SONY COMPUTER SCIENCE LABS., I +00014B Ennovate Networks, Inc. +00014C Berkeley Process Control +00014D Shin Kin Enterprises Co., Ltd +00014E WIN Enterprises, Inc. +00014F LUMINOUS Networks, Inc. +000150 GILAT COMMUNICATIONS, LTD. +000151 Ensemble Communications +000152 CHROMATEK INC. +000153 ARCHTEK TELECOM CORPORATION +000154 G3M Corporation +000155 Promise Technology, Inc. +000156 FIREWIREDIRECT.COM, INC. +000157 SYSWAVE CO., LTD +000158 Electro Industries/Gauge Tech +000159 S1 Corporation +00015A Digital Video Broadcasting +00015B ITALTEL S.p.A/RF-UP-I +00015C CADANT INC. +00015D Pirus Networks +00015E BEST TECHNOLOGY CO., LTD. +00015F DIGITAL DESIGN GmbH +000160 ELMEX Co., LTD. +000161 Meta Machine Technology +000162 Cygnet Technologies, Inc. +000163 Cisco Systems, Inc. +000164 Cisco Systems, Inc. +000165 AirSwitch Corporation +000166 TC GROUP A/S +000167 HIOKI E.E. CORPORATION +000168 VITANA CORPORATION +000169 Celestix Networks Pte Ltd. +00016A ALITEC +00016B LightChip, Inc. +00016C FOXCONN +00016D Triton Network Systems +00016E Conklin Corporation +00016F HAITAI ELECTRONICS CO., LTD. +000170 ESE Embedded System Engineer'g +000171 Allied Data Technologies +000172 TechnoLand Co., LTD. +000173 JNI Corporation +000174 CyberOptics Corporation +000175 Radiant Communications Corp. +000176 Orient Silver Enterprises +000177 EDSL +000178 MARGI Systems, Inc. +000179 WIRELESS TECHNOLOGY, INC. +00017A Chengdu Maipu Electric Industrial Co., Ltd. +00017B Heidelberger Druckmaschinen AG +00017C AG-E GmbH +00017D ThermoQuest +00017E ADTEK System Science Co., Ltd. +00017F Experience Music Project +000180 AOpen, Inc. +000181 Nortel Networks +000182 DICA TECHNOLOGIES AG +000183 ANITE TELECOMS +000184 SIEB & MEYER AG +000185 Aloka Co., Ltd. +000186 DISCH GmbH +000187 i2SE GmbH +000188 LXCO Technologies ag +000189 Refraction Technology, Inc. +00018A ROI COMPUTER AG +00018B NetLinks Co., Ltd. +00018C Mega Vision +00018D AudeSi Technologies +00018E Logitec Corporation +00018F Kenetec, Inc. +000190 SMK-M +000191 SYRED Data Systems +000192 Texas Digital Systems +000193 Hanbyul Telecom Co., Ltd. +000194 Capital Equipment Corporation +000195 Sena Technologies, Inc. +000196 Cisco Systems, Inc. +000197 Cisco Systems, Inc. +000198 Darim Vision +000199 HeiSei Electronics +00019A LEUNIG GmbH +00019B Kyoto Microcomputer Co., Ltd. +00019C JDS Uniphase Inc. +00019D E-Control Systems, Inc. +00019E ESS Technology, Inc. +00019F Phonex Broadband +0001A0 Infinilink Corporation +0001A1 Mag-Tek, Inc. +0001A2 Logical Co., Ltd. +0001A3 GENESYS LOGIC, INC. +0001A4 Microlink Corporation +0001A5 Nextcomm, Inc. +0001A6 Scientific-Atlanta Arcodan A/S +0001A7 UNEX TECHNOLOGY CORPORATION +0001A8 Welltech Computer Co., Ltd. +0001A9 BMW AG +0001AA Airspan Communications, Ltd. +0001AB Main Street Networks +0001AC Sitara Networks, Inc. +0001AD Coach Master International d.b.a. CMI Worldwide, Inc. +0001AE Trex Enterprises +0001AF Motorola Computer Group +0001B0 Fulltek Technology Co., Ltd. +0001B1 General Bandwidth +0001B2 Digital Processing Systems, Inc. +0001B3 Precision Electronic Manufacturing +0001B4 Wayport, Inc. +0001B5 Turin Networks, Inc. +0001B6 SAEJIN T&M Co., Ltd. +0001B7 Centos, Inc. +0001B8 Netsensity, Inc. +0001B9 SKF Condition Monitoring +0001BA IC-Net, Inc. +0001BB Frequentis +0001BC Brains Corporation +0001BD Peterson Electro-Musical Products, Inc. +0001BE Gigalink Co., Ltd. +0001BF Teleforce Co., Ltd. +0001C0 CompuLab, Ltd. +0001C1 Exbit Technology +0001C2 ARK Research Corp. +0001C3 Acromag, Inc. +0001C4 NeoWave, Inc. +0001C5 Simpler Networks +0001C6 Quarry Technologies +0001C7 Cisco Systems, Inc. +0001C8 THOMAS CONRAD CORP. +0001C8 CONRAD CORP. +0001C9 Cisco Systems, Inc. +0001CA Geocast Network Systems, Inc. +0001CB NetGame, Ltd. +0001CC Japan Total Design Communication Co., Ltd. +0001CD ARtem +0001CE Custom Micro Products, Ltd. +0001CF Alpha Data Parallel Systems, Ltd. +0001D0 VitalPoint, Inc. +0001D1 CoNet Communications, Inc. +0001D2 MacPower Peripherals, Ltd. +0001D3 PAXCOMM, Inc. +0001D4 Leisure Time, Inc. +0001D5 HAEDONG INFO & COMM CO., LTD +0001D6 MAN Roland Druckmaschinen AG +0001D7 F5 Networks, Inc. +0001D8 Teltronics, Inc. +0001D9 Sigma, Inc. +0001DA WINCOMM Corporation +0001DB Freecom Technologies GmbH +0001DC Activetelco +0001DD Avail Networks +0001DE Trango Systems, Inc. +0001DF ISDN Communications, Ltd. +0001E0 Fast Systems, Inc. +0001E1 Kinpo Electronics, Inc. +0001E2 Ando Electric Corporation +0001E3 Siemens AG +0001E4 Sitera, Inc. +0001E5 Supernet, Inc. +0001E6 Hewlett-Packard Company +0001E7 Hewlett-Packard Company +0001E8 Force10 Networks, Inc. +0001E9 Litton Marine Systems B.V. +0001EA Cirilium Corp. +0001EB C-COM Corporation +0001EC Ericsson Group +0001ED SETA Corp. +0001EE Comtrol Europe, Ltd. +0001EF Camtel Technology Corp. +0001F0 Tridium, Inc. +0001F1 Innovative Concepts, Inc. +0001F3 QPS, Inc. +0001F4 Enterasys Networks +0001F5 ERIM S.A. +0001F6 Association of Musical Electronics Industry +0001F7 Image Display Systems, Inc. +0001F8 Adherent Systems, Ltd. +0001F9 TeraGlobal Communications Corp. +0001FA HOROSCAS +0001FB DoTop Technology, Inc. +0001FC Keyence Corporation +0001FD Digital Voice Systems, Inc. +0001FE DIGITAL EQUIPMENT CORPORATION +0001FF Data Direct Networks, Inc. +000200 Net & Sys Co., Ltd. +000201 IFM Electronic gmbh +000202 Amino Communications, Ltd. +000203 Woonsang Telecom, Inc. +000204 Bodmann Industries Elektronik GmbH +000205 Hitachi Denshi, Ltd. +000206 Telital R&D Denmark A/S +000208 Unify Networks, Inc. +000209 Shenzhen SED Information Technology Co., Ltd. +00020A Gefran Spa +00020B Native Networks, Inc. +00020C Metro-Optix +00020D Micronpc.com +00020E Laurel Networks, Inc. +00020F AATR +000210 Fenecom +000211 Nature Worldwide Technology Corp. +000212 SierraCom +000213 S.D.E.L. +000214 DTVRO +000215 Cotas Computer Technology A/B +000216 Cisco Systems, Inc. +000217 Cisco Systems, Inc. +000218 Advanced Scientific Corp +000219 Paralon Technologies +00021A Zuma Networks +00021B Kollmorgen-Servotronix +00021C Network Elements, Inc. +00021D Data General Communication Ltd. +00021E SIMTEL S.R.L. +00021F Aculab PLC +000220 Canon Aptex, Inc. +000221 DSP Application, Ltd. +000222 Chromisys, Inc. +000223 ClickTV +000224 Lantern Communications, Inc. +000225 Certus Technology, Inc. +000226 XESystems, Inc. +000227 ESD GmbH +000228 Necsom, Ltd. +000229 Adtec Corporation +00022A Asound Electronic +00022B Tamura Electric Works, Ltd. +00022C ABB Bomem, Inc. +00022D Agere Systems +00022E TEAC Corp. R& D +00022F P-Cube, Ltd. +000230 Intersoft Electronics +000231 Ingersoll-Rand +000232 Avision, Inc. +000233 Mantra Communications, Inc. +000234 Imperial Technology, Inc. +000235 Paragon Networks International +000236 INIT GmbH +000237 Cosmo Research Corp. +000238 Serome Technology, Inc. +000239 Visicom +00023A ZSK Stickmaschinen GmbH +00023B Redback Networks +00023C Creative Technology, Ltd. +00023D NuSpeed, Inc. +00023E Selta Telematica S.p.a +00023F Compal Electronics, Inc. +000240 Seedek Co., Ltd. +000241 Amer.com +000242 Videoframe Systems +000243 Raysis Co., Ltd. +000244 SURECOM Technology Co. +000245 Lampus Co, Ltd. +000246 All-Win Tech Co., Ltd. +000247 Great Dragon Information Technology (Group) Co., Ltd. +000248 Pila GmbH & Co. +000249 Aviv Infocom Co, Ltd. +00024A Cisco Systems, Inc. +00024B Cisco Systems, Inc. +00024C SiByte, Inc. +00024D Mannesman Dematic Colby Pty. Ltd. +00024E Datacard Group +00024F IPM Datacom S.R.L. +000250 Geyser Networks, Inc. +000251 Soma Networks +000252 Carrier Corporation +000253 Televideo, Inc. +000254 WorldGate +000255 IBM Corporation +000256 Alpha Processor, Inc. +000257 Microcom Corp. +000258 Flying Packets Communications +000259 Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group +00025A Catena Networks +00025B Cambridge Silicon Radio +00025C SCI Systems (Kunshan) Co., Ltd. +00025E High Technology Ltd +00025F Nortel Networks +000260 Accordion Networks, Inc. +000261 i3 Micro Technology AB +000262 Soyo Group Soyo Com Tech Co., Ltd +000263 UPS Manufacturing SRL +000264 AudioRamp.com +000265 Virditech Co. Ltd. +000266 Thermalogic Corporation +000267 NODE RUNNER, INC. +000268 Harris Government Communications +000269 Nadatel Co., Ltd +00026A Cocess Telecom Co., Ltd. +00026B BCM Computers Co., Ltd. +00026C Philips CFT +00026D Adept Telecom +00026E NeGeN Access, Inc. +00026F Senao International Co., Ltd. +000270 Crewave Co., Ltd. +000271 Vpacket Communications +000272 CC&C Technologies, Inc. +000273 Coriolis Networks +000274 Tommy Technologies Corp. +000275 SMART Technologies, Inc. +000276 Primax Electronics Ltd. +000277 Cash Systemes Industrie +000278 Samsung Electro-Mechanics Co., Ltd. +000279 Control Applications, Ltd. +00027A IOI Technology Corporation +00027B Amplify Net, Inc. +00027C Trilithic, Inc. +00027D Cisco Systems, Inc. +00027E Cisco Systems, Inc. +00027F ask-technologies.com +000280 Mu Net, Inc. +000281 Red-M (Communications) Ltd. +000282 ViaClix, Inc. +000283 Spectrum Controls, Inc. +000284 Alstom T&D P&C +000285 Riverstone Networks +000286 Occam Networks +000287 Adapcom +000288 GLOBAL VILLAGE COMMUNICATION +000289 DNE Technologies +00028A Ambit Microsystems Corporation +00028B VDSL Systems OY +00028C Micrel-Synergy Semiconductor +00028D Movita Technologies, Inc. +00028E Rapid 5 Networks, Inc. +00028F Globetek, Inc. +000290 Woorigisool, Inc. +000291 Open Network Co., Ltd. +000292 Logic Innovations, Inc. +000293 Solid Data Systems +000294 Tokyo Sokushin Co., Ltd. +000295 IP.Access Limited +000296 Lectron Co,. Ltd. +000297 C-COR.net +000298 Broadframe Corporation +000299 Apex, Inc. +00029A Storage Apps +00029B Kreatel Communications AB +00029D Merix Corp. +00029E Information Equipment Co., Ltd. +00029F L-3 Communication Aviation Recorders +0002A0 Flatstack Ltd. +0002A1 World Wide Packets +0002A2 Hilscher GmbH +0002A3 ABB Power Automation +0002A4 AddPac Technology Co., Ltd. +0002A5 Compaq Computer Corporation +0002A6 Effinet Systems Co., Ltd. +0002A7 Vivace Networks +0002A8 Air Link Technology +0002A9 RACOM, s.r.o. +0002AA PLcom Co., Ltd. +0002AB CTC Union Technologies Co., Ltd. +0002AC 3PAR data +0002AD Asahi Optical Co., Ltd. +0002AE Scannex Electronics Ltd. +0002AF TeleCruz Technology, Inc. +0002B0 Hokubu Communication & Industrial Co., Ltd. +0002B1 Anritsu, Ltd. +0002B2 Cablevision +0002B3 Intel Corporation +0002B4 DAPHNE +0002B5 Avnet, Inc. +0002B6 Acrosser Technology Co., Ltd. +0002B7 Watanabe Electric Industry Co., Ltd. +0002B8 WHI KONSULT AB +0002B9 Cisco Systems, Inc. +0002BA Cisco Systems, Inc. +0002BB Continuous Computing +0002BC LVL 7 Systems, Inc. +0002BD Bionet Co., Ltd. +0002BE Totsu Engineering, Inc. +0002BF dotRocket, Inc. +0002C0 Bencent Tzeng Industry Co., Ltd. +0002C1 Innovative Electronic Designs, Inc. +0002C2 Net Vision Telecom +0002C3 Arelnet Ltd. +0002C4 Vector International BUBA +0002C5 Evertz Microsystems Ltd. +0002C6 Data Track Technology PLC +0002C7 ALPS ELECTRIC Co., Ltd. +0002C8 Technocom Communications Technology (pte) Ltd +0002C9 Mellanox Technologies +0002CA EndPoints, Inc. +0002CB TriState Ltd. +0002CC M.C.C.I +0002CD TeleDream, Inc. +0002CE FoxJet, Inc. +0002CF ZyGate Communications, Inc. +0002D0 Comdial Corporation +0002D1 Vivotek, Inc. +0002D2 Workstation AG +0002D3 NetBotz, Inc. +0002D4 PDA Peripherals, Inc. +0002D5 ACR +0002D6 NICE Systems +0002D7 EMPEG Ltd +0002D8 BRECIS Communications Corporation +0002D9 Reliable Controls +0002DA ExiO Communications, Inc. +0002DB NETSEC +0002DC Fujitsu General Limited +0002DD Bromax Communications, Ltd. +0002DE Astrodesign, Inc. +0002DF Net Com Systems, Inc. +0002E0 ETAS GmbH +0002E1 Integrated Network Corporation +0002E2 NDC Infared Engineering +0002E3 LITE-ON Communications, Inc. +0002E4 JC HYUN Systems, Inc. +0002E5 Timeware Ltd. +0002E6 Gould Instrument Systems, Inc. +0002E7 CAB GmbH & Co KG +0002E8 E.D.&A. +0002E9 CS Systemes De Securite - C3S +0002EA Videonics, Inc. +0002EB Easent Communications +0002EC Maschoff Design Engineering +0002ED DXO Telecom Co., Ltd. +0002EE Nokia Danmark A/S +0002EF CCC Network Systems Group Ltd. +0002F0 AME Optimedia Technology Co., Ltd. +0002F1 Pinetron Co., Ltd. +0002F2 eDevice, Inc. +0002F3 Media Serve Co., Ltd. +0002F4 PCTEL, Inc. +0002F5 VIVE Synergies, Inc. +0002F6 Equipe Communications +0002F7 ARM +0002F8 SEAKR Engineering, Inc. +0002F9 Mimos Semiconductor SDN BHD +0002FA DX Antenna Co., Ltd. +0002FB Baumuller Aulugen-Systemtechnik GmbH +0002FC Cisco Systems, Inc. +0002FD Cisco Systems, Inc. +0002FE Viditec, Inc. +0002FF Handan Broad InfoCom +000300 NetContinuum, Inc. +000301 Avantas Networks Corporation +000302 Oasys Telecom, Inc. +000303 JAMA Electronics Co., Ltd. +000304 Pacific Broadband Communications +000305 Smart Network Devices GmbH +000306 Fusion In Tech Co., Ltd. +000307 Secure Works, Inc. +000308 AM Communications, Inc. +000309 Texcel Technology PLC +00030A Argus Technologies +00030B Hunter Technology, Inc. +00030C Telesoft Technologies Ltd. +00030D Uniwill Computer Corp. +00030E Core Communications Co., Ltd. +00030F Legend Digital China Ltd. +000310 Link Evolution Corp. +000311 Micro Technology Co., Ltd. +000312 TR-Systemtechnik GmbH +000313 Access Media SPA +000314 Teleware Network Systems +000315 Cidco Incorporated +000316 Nobell Communications, Inc. +000317 Merlin Systems, Inc. +000318 Cyras Systems, Inc. +000319 Infineon AG +00031A Beijing Broad Telecom Ltd., China +00031B Cellvision Systems, Inc. +00031C Svenska Hardvarufabriken AB +00031D Taiwan Commate Computer, Inc. +00031E Optranet, Inc. +00031F Condev Ltd. +000320 Xpeed, Inc. +000321 Reco Research Co., Ltd. +000322 IDIS Co., Ltd. +000323 Cornet Technology, Inc. +000324 Tottori SANYO Electric Co., Ltd. +000325 Arima Computer Corp. +000326 Iwasaki Information Systems Co., Ltd. +000327 ACT'L +000328 Mace Group, Inc. +000329 F3, Inc. +00032A UniData Communication Systems, Inc. +00032B GAI Datenfunksysteme GmbH +00032C ABB Industrie AG +00032D IBASE Technology, Inc. +00032E Scope Information Management, Ltd. +00032F Global Sun Technology, Inc. +000330 Imagenics, Co., Ltd. +000331 Cisco Systems, Inc. +000332 Cisco Systems, Inc. +000333 Digitel Co., Ltd. +000334 Newport Electronics +000335 Mirae Technology +000336 Zetes Technologies +000337 Vaone, Inc. +000338 Oak Technology +000339 Eurologic Systems, Ltd. +00033A Silicon Wave, Inc. +00033B TAMI Tech Co., Ltd. +00033C Daiden Co., Ltd. +00033D ILSHin Lab +00033E Tateyama System Laboratory Co., Ltd. +00033F BigBand Networks, Ltd. +000340 Floware Wireless Systems, Ltd. +000341 Axon Digital Design +000342 Nortel Networks +000343 Martin Professional A/S +000344 Tietech.Co., Ltd. +000345 Routrek Networks Corporation +000346 Hitachi Kokusai Electric, Inc. +000347 Intel Corporation +000348 Norscan Instruments, Ltd. +000349 Vidicode Datacommunicatie B.V. +00034A RIAS Corporation +00034B Nortel Networks +00034C Shanghai DigiVision Technology Co., Ltd. +00034D Chiaro Networks, Ltd. +00034E Pos Data Company, Ltd. +00034F Sur-Gard Security +000350 BTICINO SPA +000351 Diebold, Inc. +000352 Colubris Networks +000353 Mitac, Inc. +000354 Fiber Logic Communications +000355 TeraBeam Internet Systems +000356 Wincor Nixdorf GmbH & Co KG +000357 Intervoice-Brite, Inc. +000358 iCable System Co., Ltd. +000359 DigitalSis +00035A Phototron Limited +00035B BridgeWave Communications +00035C Saint Song Corp. +00035D Bosung Hi-Net Co., Ltd. +00035E Metropolitan Area Networks, Inc. +00035F Schuehle Mess - und. Kontrollsysteme +000360 PAC Interactive Technology, Inc. +000361 Widcomm, Inc. +000362 Vodtel Communications, Inc. +000363 Miraesys Co., Ltd. +000364 Scenix Semiconductor, Inc. +000365 Kira Information & Communications, Ltd. +000366 ASM Pacific Technology +000367 Jasmine Networks, Inc. +000368 Embedone Co., Ltd. +000369 Nippon Antenna Co., Ltd. +00036A Mainnet, Ltd. +00036B Cisco Systems, Inc. +00036C Cisco Systems, Inc. +00036D Runtop, Inc. +00036E Nicon Systems (Pty) Limited +00036F Telsey SPA +000370 NXTV, Inc. +000371 Acomz Networks Corp. +000372 ULAN +000373 Aselsan A.S +000374 Hunter Watertech +000375 NetMedia, Inc. +000376 Graphtec Technology, Inc. +000377 Gigabit Wireless +000378 HUMAX Co., Ltd. +000379 Proscend Communications, Inc. +00037A Taiyo Yuden Co., Ltd. +00037B IDEC IZUMI Corporation +00037C Coax Media +00037D Stellcom +00037E PORTech Communications, Inc. +00037F Atheros Communications, Inc. +000381 Ingenico International +000382 A-One Co., Ltd. +000383 Metera Networks, Inc. +000384 AETA +000385 Actelis Networks, Inc. +000386 Ho Net, Inc. +000387 Blaze Network Products +000388 Fastfame Technology Co., Ltd. +000389 Plantronics +00038A America Online, Inc. +00038B PLUS-ONE I&T, Inc. +00038C Total Impact +00038D PCS Revenue Control Systems, Inc. +00038E Atoga Systems, Inc. +00038F Weinschel Corporation +000390 Digital Video Communications, Inc. +000392 Hyundai Teletek Co., Ltd. +000393 Apple Computer, Inc. +000394 Connect One +000395 California Amplifier +000396 EZ Cast Co., Ltd. +000397 Watchfront Electronics +000398 WISI +000399 Dongju Informations & Communications Co., Ltd. +00039A nSine, Ltd. +00039B NetChip Technology, Inc. +00039C OptiMight Communications, Inc. +00039D Acer Communications & Multimedia, Inc. +00039E Tera System Co., Ltd. +00039F Cisco Systems, Inc. +0003A0 Cisco Systems, Inc. +0003A1 HIPER Information & Communication, Inc. +0003A2 Catapult Communications +0003A3 MAVIX, Ltd. +0003A4 Data Storage and Information Management +0003A5 Medea Corporation +0003A7 Unixtar Technology, Inc. +0003A8 IDOT Computers, Inc. +0003A9 AXCENT Media AG +0003AA Watlow +0003AB Bridge Information Systems +0003AC Fronius Schweissmaschinen +0003AD Emerson Energy Systems AB +0003AE Allied Advanced Manufacturing Pte, Ltd. +0003AF Paragea Communications +0003B0 Xsense Technology Corp. +0003B1 Abbott Laboratories HPD +0003B2 Radware +0003B3 IA Link Systems Co., Ltd. +0003B4 Macrotek International Corp. +0003B5 Entra Technology Co. +0003B6 QSI Corporation +0003B7 ZACCESS Systems +0003B8 NetKit Solutions, LLC +0003B9 Hualong Telecom Co., Ltd. +0003BA Sun Microsystems +0003BB Signal Communications Limited +0003BC COT GmbH +0003BD OmniCluster Technologies, Inc. +0003BE Netility +0003BF Centerpoint Broadband Technologies, Inc. +0003C0 RFTNC Co., Ltd. +0003C1 Packet Dynamics Ltd +0003C2 Solphone K.K. +0003C3 Micronik Multimedia +0003C4 Tomra Systems ASA +0003C5 Mobotix AG +0003C6 ICUE Systems, Inc. +0003C7 hopf Elektronik GmbH +0003C8 CML Emergency Services +0003C9 TECOM Co., Ltd. +0003CA MTS Systems Corp. +0003CB Nippon Systems Development Co., Ltd. +0003CC Momentum Computer, Inc. +0003CD Clovertech, Inc. +0003CE ETEN Technologies, Inc. +0003CF Muxcom, Inc. +0003D0 KOANKEISO Co., Ltd. +0003D1 Takaya Corporation +0003D2 Crossbeam Systems, Inc. +0003D3 Internet Energy Systems, Inc. +0003D4 Alloptic, Inc. +0003D5 Advanced Communications Co., Ltd. +0003D6 RADVision, Ltd. +0003D7 NextNet Wireless, Inc. +0003D8 iMPath Networks, Inc. +0003D9 Secheron SA +0003DA Takamisawa Cybernetics Co., Ltd. +0003DB Apogee Electronics Corp. +0003DC Lexar Media, Inc. +0003DD Comark Corp. +0003DE OTC Wireless +0003DF Desana Systems +0003E0 RadioFrame Networks, Inc. +0003E1 Winmate Communication, Inc. +0003E2 Comspace Corporation +0003E3 Cisco Systems, Inc. +0003E4 Cisco Systems, Inc. +0003E5 Hermstedt SG +0003E6 Entone Technologies, Inc. +0003E7 Logostek Co. Ltd. +0003E8 Wavelength Digital Limited +0003E9 Akara Canada, Inc. +0003EA Mega System Technologies, Inc. +0003EB Atrica +0003EC ICG Research, Inc. +0003ED Shinkawa Electric Co., Ltd. +0003EE MKNet Corporation +0003EF Oneline AG +0003F0 Redfern Broadband Networks +0003F1 Cicada Semiconductor, Inc. +0003F2 Seneca Networks +0003F3 Dazzle Multimedia, Inc. +0003F4 NetBurner +0003F5 Chip2Chip +0003F6 Allegro Networks, Inc. +0003F7 Plast-Control GmbH +0003F8 SanCastle Technologies, Inc. +0003F9 Pleiades Communications, Inc. +0003FA TiMetra Networks +0003FB Toko Seiki Company, Ltd. +0003FC Intertex Data AB +0003FD Cisco Systems, Inc. +0003FE Cisco Systems, Inc. +0003FF Connectix +000400 LEXMARK INTERNATIONAL, INC. +000401 Osaki Electric Co., Ltd. +000402 Nexsan Technologies, Ltd. +000403 Nexsi Corporation +000404 Makino Milling Machine Co., Ltd. +000405 ACN Technologies +000406 Fa. Metabox AG +000407 Topcon Positioning Systems, Inc. +000408 Sanko Electronics Co., Ltd. +000409 Cratos Networks +00040A Sage Systems +00040B 3com Europe Ltd. +00040C KANNO Work's Ltd. +00040D Avaya, Inc. +00040E AVM GmbH +00040F Asus Network Technologies, Inc. +000410 Spinnaker Networks, Inc. +000411 Inkra Networks, Inc. +000412 WaveSmith Networks, Inc. +000413 SNOM Technology AG +000414 Umezawa Musen Denki Co., Ltd. +000415 Rasteme Systems Co., Ltd. +000416 Parks S/A Comunicacoes Digitais +000417 ELAU AG +000418 Teltronic S.A.U. +000419 Fibercycle Networks, Inc. +00041A ines GmbH +00041B Digital Interfaces Ltd. +00041C ipDialog, Inc. +00041D Corega of America +00041E Shikoku Instrumentation Co., Ltd. +00041F Sony Computer Entertainment, Inc. +000420 Slim Devices, Inc. +000421 Ocular Networks +000422 Gordon Kapes, Inc. +000423 Intel Corporation +000424 TMC s.r.l. +000425 Atmel Corporation +000426 Autosys +000427 Cisco Systems, Inc. +000428 Cisco Systems, Inc. +000429 Pixord Corporation +00042A Wireless Networks, Inc. +00042B IT Access Co., Ltd. +00042C Minet, Inc. +00042D Sarian Systems, Ltd. +00042E Netous Technologies, Ltd. +00042F International Communications Products, Inc. +000430 Netgem +000431 Play Industries +000432 Voyetra Turtle Beach, Inc. +000433 Cyberboard A/S +000434 Accelent Systems, Inc. +000435 Comptek International, Inc. +000436 ELANsat Technologies, Inc. +000437 Powin Information Technology, Inc. +000438 Nortel Networks +000439 Rosco Entertainment Technology, Inc. +00043A Intelligent Telecommunications, Inc. +00043B Lava Computer Mfg., Inc. +00043C SONOS Co., Ltd. +00043D INDEL AG +00043E Telencomm +00043F Electronic Systems Technology, Inc. +000440 cyberPIXIE, Inc. +000441 Half Dome Systems, Inc. +000442 NACT +000443 Agilent Technologies, Inc. +000444 Wireless Home +000445 LMS Skalar Instruments GmbH +000446 CYZENTECH Co., Ltd. +000447 Acrowave Systems Co., Ltd. +000448 Polaroid Professional Imaging +000449 Mapletree Networks +00044A iPolicy Networks, Inc. +00044B NVIDIA +00044C JENOPTIK +00044D Cisco Systems, Inc. +00044E Cisco Systems, Inc. +00044F Leukhardt Systemelektronik GmbH +000450 DMD Computers SRL +000451 Medrad, Inc. +000452 RocketLogix, Inc. +000453 Yotta Yotta, Inc. +000454 Quadriga UK +000455 ANTARA.net +000456 PipingHot Networks +000457 Universal Access Technology, Inc. +000458 Fusion X Co., Ltd. +000459 Veristar Corporation +00045A The Linksys Group, Inc. +00045B Techsan Electronics Co., Ltd. +00045C Mobiwave Pte Ltd +00045D BEKA Elektronik +00045E Poly Trax Information Technology AG +00045F Evalue Technology, Inc. +000460 Knilink Technology, Inc. +000461 EPOX Computer Co., Ltd. +000462 DAKOS Data & Communication Co., Ltd. +000463 Philips Communication Security & Imaging +000464 Fantasma Networks, Inc. +000465 ist isdn support tecknik GmbH +000466 ARMITEL Co. +000467 Wuhan Research Institute +000468 Vivity, Inc. +000469 Innocom, Inc. +00046A Navini Networks +00046B Palm Wireless, Inc. +00046C Cyber Technology Co., Ltd. +00046D Cisco Systems, Inc. +00046E Cisco Systems, Inc. +00046F Digitel S/A Industria Eletronica +000470 ipUnplugged AB +000471 IPrad +000472 Telelynx, Inc. +000473 Photonex Corporation +000474 LEGRAND +000475 3 Com Corporation +000476 3 Com Corporation +000477 e-Appliance Corp. +000478 G. Star Technology Corporation +000479 Radius Co., Ltd. +00047A AXXESSIT ASA +00047B Schlumberger +00047C Skidata AG +00047D Pelco +00047E NKF Electronics +00047F Chr. Mayr GmbH & Co. KG +000480 Foundry Networks, Inc. +000481 Econolite Control Products, Inc. +000482 MediaLogic Corp. +000483 Deltron Technology, Inc. +000484 Amann GmbH +000485 PicoLight +000486 ITTC, University of Kansas +000487 Cogency Semiconductor, Inc. +000488 Eurotherm Action Incorporated. +000489 YAFO Networks, Inc. +00048A Temia Vertriebs GmbH +00048B Poscon Corporation +00048C Nayna Networks, Inc. +00048D Tone Commander Systems, Inc. +00048E Ohm Tech Labs, Inc. +00048F TD Systems Corp. +000490 Optical Access +000491 Technovision, Inc. +000492 Hive Internet, Ltd. +000493 Tsinghua Unisplendour Co., Ltd. +000494 Breezecom, Ltd. +000495 Tejas Networks +000496 Extreme Networks +000497 MacroSystem Digital Video AG +000499 Chino Corporation +00049A Cisco Systems, Inc. +00049B Cisco Systems, Inc. +00049C Surgient Networks, Inc. +00049D Ipanema Technologies +00049E Wirelink Co., Ltd. +00049F Metrowerks +0004A0 Verity Instruments, Inc. +0004A1 Pathway Connectivity +0004A2 L.S.I. Japan Co., Ltd. +0004A3 Microchip Technology, Inc. +0004A4 NetEnabled, Inc. +0004A5 Barco Projection Systems NV +0004A6 SAF Tehnika Ltd. +0004A7 FabiaTech Corporation +0004A8 Broadmax Technologies, Inc. +0004A9 SandStream Technologies, Inc. +0004AA Jetstream Communications +0004AB Comverse Network Systems, Inc. +0004AC IBM CORP. +0004AD Malibu Networks +0004AE Liquid Metronics +0004AF Digital Fountain, Inc. +0004B0 ELESIGN Co., Ltd. +0004B1 Signal Technology, Inc. +0004B2 ESSEGI SRL +0004B3 Videotek, Inc. +0004B4 CIAC +0004B5 Equitrac Corporation +0004B6 Tellumat (Pty) Ltd. +0004B7 AMB i.t. Holding +0004B8 Kumahira Co., Ltd. +0004B9 S.I. Soubou, Inc. +0004BA KDD Media Will Corporation +0004BB Bardac Corporation +0004BC Giantec, Inc. +0004BD Motorola BCS +0004BE OptXCon, Inc. +0004BF Versa Logic Corp. +0004C0 Cisco Systems, Inc. +0004C1 Cisco Systems, Inc. +0004C2 Magnipix, Inc. +0004C3 CASTOR Informatique +0004C4 Allen & Health +0004C5 ASE Technologies, USA +0004C6 Yamaha Motor Co., Ltd. +0004C7 NetMount +0004C8 LIBA Maschinefabrik GmbH +0004C9 Micro Electron Co., Ltd. +0004CA FreeMs Corp. +0004CB Tdsoft Communication, Ltd. +0004CC Peek Traffic BV. +0004CD Informedia Research Group +0004CE Patria Ailon +0004CF Seagate Technology +0004D0 Softlink s.r.o. +0004D1 Drew Technologies, Inc. +0004D2 Adcon Telemetry AG +0004D3 Toyokeiki Co., Ltd. +0004D4 Proview Electronics Co., Ltd. +0004D5 Hitachi Communication Systems, Inc. +0004D6 Takagi Industrial Co., Ltd. +0004D7 Omitec Instrumentation Ltd. +0004D8 IPWireless, Inc. +0004D9 Titan Electronics, Inc. +0004DA Relax Technology, Inc. +0004DB Tellus Group Corp. +0004DC Nortel Networks +0004DD Cisco Systems, Inc. +0004DE Cisco Systems, Inc. +0004DF Teracom Telematica Ltda. +0004E0 Procket Networks +0004E1 Infinior Microsystems +0004E2 SMC Networks, Inc. +0004E3 Accton Technology Corp. +0004E4 Daeryung Ind., Inc. +0004E5 Glonet Systems, Inc. +0004E6 Banyan Network Private Limited +0004E7 Lightpointe Communications, Inc +0004E8 IER, Inc. +0004E9 Infiniswitch Corporation +0004EA Hewlett-Packard Company +0004EB Paxonet Communications, Inc. +0004EC Memobox SA +0004ED Billion Electric Co., Ltd. +0004EE Lincoln Electric Company +0004EF Polestar Corp. +0004F0 International Computers, Ltd +0004F1 WhereNet +0004F2 Circa Communications, Ltd. +0004F3 FS FORTH-SYSTEME GmbH +0004F4 Infinite Electronics Inc. +0004F5 SnowShore Networks, Inc. +0004F6 Amphus +0004F7 Omega Band, Inc. +0004F8 QUALICABLE TV Industria E Com., Ltda +0004F9 Xtera Communications, Inc. +0004FA MIST Inc. +0004FB Commtech, Inc. +0004FC Stratus Computer (DE), Inc. +0004FD Japan Control Engineering Co., Ltd. +0004FE Pelago Networks +0004FF Acronet Co., Ltd. +000500 Cisco Systems, Inc. +000501 Cisco Systems, Inc. +000502 APPLE COMPUTER +000503 ICONAG +000504 Naray Information & Communication Enterprise +000505 Systems Integration Solutions, Inc. +000506 Reddo Networks AB +000507 Fine Appliance Corp. +000508 Inetcam, Inc. +000509 AVOC Nishimura Ltd. +00050A ICS Spa +00050B SICOM Systems, Inc. +00050C Network Photonics, Inc. +00050D Midstream Technologies, Inc. +00050E 3ware, Inc. +00050F Tanaka S/S Ltd. +000510 Infinite Shanghai Communication Terminals Ltd. +000511 Complementaty Technologies Ltd +000512 MeshNetworks, Inc. +000513 VTLinx Multimedia Systems, Inc. +000514 KDT Systems Co., Ltd. +000515 Nuark Co., Ltd. +000516 SMART Modular Technologies +000517 Shellcomm, Inc. +000518 Jupiters Technology +000519 Siemens Building Technologies AG, +00051A 3Com Europe Ltd. +00051B Magic Control Technology Corporation +00051C Xnet Technology Corp. +00051D Airocon, Inc. +00051E Rhapsody Networks +00051F Taijin Media Co., Ltd. +000520 Smartronix, Inc. +000521 Control Microsystems +000522 LEA*D Corporation, Inc. +000523 AVL List GmbH +000524 BTL System (HK) Limited +000525 Puretek Industrial Co., Ltd. +000526 IPAS GmbH +000527 SJ Tek Co. Ltd +000528 New Focus, Inc. +000529 Shanghai Broadan Communication Technology Co., Ltd +00052A Ikegami Tsushinki Co., Ltd. +00052B HORIBA, Ltd. +00052C Supreme Magic Corporation +00052D Zoltrix International Limited +00052E Cinta Networks +00052F Leviton Voice and Data +000530 Andiamo Systems, Inc. +000531 Cisco Systems, Inc. +000532 Cisco Systems, Inc. +000533 Sanera Systems, Inc. +000534 Northstar Engineering Ltd. +000535 Chip PC Ltd. +000536 Danam Communications, Inc. +000537 Nets Technology Co., Ltd. +000538 Merilus, Inc. +000539 A Brand New World in Sweden AB +00053A Willowglen Services Pte Ltd +00053B Harbour Networks Ltd., Co. Beijing +00053C Xircom +00053D Agere Systems +00053E KID Systeme GmbH +00053F VisionTek, Inc. +000540 FAST Corporation +000541 Advanced Systems Co., Ltd. +000542 Otari, Inc. +000543 IQ Wireless GmbH +000544 Valley Technologies, Inc. +000545 Internet Photonics +000546 KDD Network Systems Co., Ltd. +000547 Starent Networks +000548 Disco Corporation +000549 Salira Optical Network Systems +00054A Ario Data Networks, Inc. +00054B Micro Innovation AG +00054C RF Innovations Pty Ltd +00054D Brans Technologies, Inc. +00054E Philips Components +000550 Digi-Tech Communications Limited +000551 F & S Elektronik Systeme GmbH +000552 Xycotec Computer GmbH +000553 DVC Company, Inc. +000554 Rangestar Wireless +000555 Japan Cash Machine Co., Ltd. +000556 360 Systems +000557 Agile TV Corporation +000558 Synchronous, Inc. +000559 Intracom S.A. +00055A Power Dsine Ltd. +00055B Charles Industries, Ltd. +00055C Kowa Company, Ltd. +00055D D-Link Systems, Inc. +00055E Cisco Systems, Inc. +00055F Cisco Systems, Inc. +000560 LEADER COMM.CO., LTD +000561 nac Image Technology, Inc. +000562 Digital View Limited +000563 J-Works, Inc. +000564 Tsinghua Bitway Co., Ltd. +000565 Tailyn Communication Company Ltd. +000566 Secui.com Corporation +000567 Etymonic Design, Inc. +000568 Piltofish Networks AB +000569 VMWARE, Inc. +00056B C.P. Technology Co., Ltd. +00056C Hung Chang Co., Ltd. +00056D Pacific Corporation +00056E National Enhance Technology, Inc. +00056F Innomedia Technologies Pvt. Ltd. +000570 Baydel Ltd. +000571 Seiwa Electronics Co. +000572 Deonet Co., Ltd. +000573 Cisco Systems, Inc. +000574 Cisco Systems, Inc. +000575 CDS-Electronics BV +000576 NSM Technology Ltd. +000577 SM Information & Communication +000579 Universal Control Solution Corp. +00057A Hatteras Networks +00057B Chung Nam Electronic Co., Ltd. +00057C RCO Security AB +00057D Sun Communications, Inc. +00057E Eckelmann Steuerungstechnik GmbH +00057F Acqis Technology +000580 Fibrolan Ltd. +000581 Snell & Wilcox Ltd. +000582 ClearCube Technology +000583 ImageCom Limited +000584 AbsoluteValue Systems, Inc. +000585 Juniper Networks, Inc. +000586 Lucent Technologies +000587 Locus, Incorporated +000588 Sensoria Corp. +000589 National Datacomputer +00058A Netcom Co., Ltd. +00058B IPmental, Inc. +00058C Opentech Inc. +00058D Lynx Photonic Networks, Inc. +00058E Ahead Communications System GmbH +00058F CLCsoft co. +000590 Ascom Business Systems +000591 Active Silicon Ltd. +000592 Pultex Corp. +000593 Grammar Engine Inc. +000594 IXXAT Automation GmbH +000595 Alesis Corporation +000596 Genotech Co., Ltd. +000597 Eagle Traffic Control Systems +000598 CRONOS S.r.l. +000599 PEI Electronics, Inc. +00059A Cisco Systems, Inc. +00059B Cisco Systems, Inc. +00059C Kleinknecht GmbH, Ing. Buero +00059D Daniel Computing Systems, Inc. +00059E Zinwell Corporation +00059F Yotta Networks, Inc. +0005A0 MOBILINE Kft. +0005A1 Zenocom +0005A2 CELOX Networks +0005A3 QEI, Inc. +0005A4 Lucid Voice Ltd. +0005A5 KOTT +0005A6 Extron Electronics +0005A7 Hyperchip, Inc. +0005A8 WYLE ELECTRONICS +0005A9 Princeton Networks, Inc. +0005AA Moore Industries Int. +0005AB Cyber Fone, Inc. +0005AC Northern Digital, Inc. +0005AD Topspin Communications, Inc. +0005AE Mediaport USA +0005AF InnoScan Computing A/S +0005B0 Korea Computer Technology Co., Ltd. +0005B1 ASB Technology BV +0005B2 Medison Co., Ltd. +0005B3 Asahi-Engineering Co., Ltd. +0005B4 Aceex Corporation +0005B5 Broadcom Technologies +0005B6 INSYS Microelectronics GmbH +0005B7 Arbor Technology Corp. +0005B8 Electronic Design Associates, Inc. +0005B9 Airvana, Inc. +0005BA Area Netwoeks, Inc. +0005BC Resorsys Ltd. +0005BD ROAX BV +0005BE Kongsberg Seatex AS +0005BF JustEzy Technology, Inc. +0005C0 Digital Network Alacarte Co., Ltd. +0005C1 A-Kyung Motion, Inc. +0005C2 Digital Archway, Inc. +0005C3 Pacific Instruments, Inc. +0005C4 Telect, Inc. +0005C5 Flaga HF +0005C6 Triz Communications +0005C7 I/F-COM A/S +0005C8 VERYTECH +0005C9 LG Innotek +0005CA Hitron Technology, Inc. +0005CB ROIS Technologies, Inc. +0005CC Sumtel Communications, Inc. +0005CD Nippon Columbia +0005CE Prolink Microsystems Corporation +0005CF Thunder River Technologies, Inc. +0005D0 Solinet Systems +0005D1 Metavector Technologies +0005D2 DAP Technologies +0005D3 CAC, Inc. +0005D4 FutureSmart Networks, Inc. +0005D5 Speedcom Wireless +0005D6 Titan Wireless +0005D7 Vista Imaging, Inc. +0005D8 Arescom, Inc. +0005D9 Techno Valley, Inc. +0005DA Apex Automationstechnik +0005DB Nentec GmbH +0005DC Cisco Systems, Inc. +0005DD Cisco Systems, Inc. +0005DE Gi Fone Korea, Inc. +0005DF Electronic Innovation, Inc. +0005E0 Empirix Corp. +0005E1 Trellis Photonics, Ltd. +0005E2 Creativ Network Technologies +0005E3 LightSand Communications, Inc. +0005E4 Red Lion Controls L.P. +0005E5 Renishaw PLC +0005E6 Egenera, Inc. +0005E7 Netrake +0005E8 TurboWave, Inc. +0005E9 Unicess Networks, Inc. +0005EA Viewcast Corporation +0005EB Blue Ridge Networks, Inc. +0005EC Mosaic Systems Inc. +0005ED Technikum Joanneaum GmbH +0005EE BEWATOR Group +0005EF ADOIR Digital Technology +0005F0 SATEC +0005F1 VRcom, Inc. +0005F2 Power R, Inc. +0005F3 Weboyn +0005F4 SystemBase Co., Ltd. +0005F5 OYO Geospace Corp. +0005F6 Young Chang Co. Ltd. +0005F7 Analog Devices, Inc. +0005F8 Real Time Access, Inc. +0005F9 Diva Systems +0005FA IPOptical, Inc. +0005FB Sharegate +0005FC Schenck Pegasus Corp. +0005FD PacketLight Networks Ltd. +0005FE Traficon N.V. +0005FF SNS Solutions, Inc. +000600 Tokyo Electronic Industry Co., Ltd. +000601 Otanikeiki Co., Ltd. +000602 Cirkitech Electronics Co. +000603 Baker Hughes +000604 @Track Communications, Inc. +000605 Inncom International, Inc. +000606 RapidWan, Inc. +000607 Omni-Directional Control Technology Inc. +000608 At-Sky SAS +000609 Crossport Systems +00060A Blue2space.com +00060B Paceline Systems Corporation +00060C Melco Industries, Inc. +00060D Wave7 Optics +00060E IGSYS Systems, Inc. +00060F Narad Networks Inc +000610 Abeona Networks Inc +000611 Zeus Wireless, Inc. +000612 Accusys, Inc. +000613 Kawasaki Steel Corporation +000614 Prism Holdings +000615 Kimoto Electric Co., Ltd. +000616 Tel Net Co., Ltd. +000617 Redswitch Inc. +000618 DigiPower Manufacturing Inc. +000619 Connection Technology Systems +00061A Zetari Inc. +00061B Portable Systems, IBM Japan Co, Ltd +00061C Hoshino Metal Industries, Ltd. +00061D MIP Telecom, Inc. +00061E Maxan Systems +00061F Vision Components GmbH +000620 Serial System Ltd. +000621 Hinox, Co., Ltd. +000622 Chung Fu Chen Yeh Enterprise Corp. +000623 MGE UPS Systems France +000624 Gentner Communications +000625 The Linksys Group, Inc. +000626 MWE GmbH +000627 Uniwide Technologies, Inc. +000628 Cisco Systems, Inc. +000629 IBM CORPORATION +00062A Cisco Systems, Inc. +00062B INTRASERVER TECHNOLOGY +00062C Network Robots, Inc. +00062D TouchStar Technologies, L.L.C. +00062E Aristos Logic Corp. +00062F Pivotech Systems Inc. +000630 Adtranz Sweden +000631 Optical Solutions, Inc. +000632 Mesco Engineering GmbH +000633 Heimann Biometric Systems GmbH +000634 GTE Airfone Inc. +000635 PacketAir Networks, Inc. +000636 Jedai Broadband Networks +000637 Toptrend-Meta Information (ShenZhen) Inc. +000638 Sungjin C&C Co., Ltd. +000639 Newtec +00063A Dura Micro, Inc. +00063B Lineo Canada Corp. +00063C NMI Electronics Ltd +00063D Microwave Data Systems Inc. +00063E Opthos Inc. +00063F Everex Communications Inc. +000640 White Rock Networks +000641 ITCN +000642 Genetel Systems Inc. +000643 SONO Computer Co., Ltd. +000644 NEIX Inc. +000645 Meisei Electric Co. Ltd. +000646 ShenZhen XunBao Network Technology Co Ltd +000647 Etrali S.A. +000648 Seedsware, Inc. +000649 Quante +00064A Honeywell Co., Ltd. (KOREA) +00064B Alexon Co., Ltd. +00064C Invicta Networks, Inc. +00064D Sencore +00064E Broad Net Technology Inc. +00064F PRO-NETS Technology Corporation +000650 Tiburon Networks, Inc. +000651 Aspen Networks Inc. +000652 Cisco Systems, Inc. +000653 Cisco Systems, Inc. +000654 Maxxio Technologies +000655 Yipee, Inc. +000656 Tactel AB +000657 Market Central, Inc. +000658 Helmut Fischer GmbH & Co. KG +000659 EAL (Apeldoorn) B.V. +00065A Strix Systems +00065B Dell Computer Corp. +00065C Malachite Technologies, Inc. +00065D Heidelberg Web Systems +00065E Photuris, Inc. +00065F ECI Telecom - NGTS Ltd. +000660 NADEX Co., Ltd. +000661 NIA Home Technologies Corp. +000662 MBM Technology Ltd. +000663 Human Technology Co., Ltd. +000664 Fostex Corporation +000665 Summy Gikem, Inc. +000666 Roving Networks +000667 Tripp Lite +000668 Vicon Industries Inc. +000669 Datasound Laboratories Ltd +00066A InfiniCon Systems, Inc. +00066B Sysmex Corporation +00066C Robinson Corporation +00066D Compuprint S.P.A. +00066E Delta Electronics, Inc. +00066F Korea Data Systems +000670 Upponetti Oy +000671 Softing AG +000672 Netezza +000673 Optelecom, Inc. +000674 Spectrum Control, Inc. +000675 Banderacom, Inc. +000676 Novra Technologies, Inc. +000677 SICK AG +000678 Marantz Japan, Inc. +000679 Konami Corporation +00067A JMP Systems +00067B Toplink C&C Corporation +00067C CISCO SYSTEMS, INC. +00067D Takasago Ltd. +0006C1 CISCO SYSTEMS, INC. +000701 RACAL-DATACOM +000800 MULTITECH SYSTEMS, INC. +0008C7 COMPAQ COMPUTER CORPORATION +000A27 Apple Computer, Inc. +001000 CABLE TELEVISION +001001 MCK COMMUNICATIONS +001002 ACTIA +001003 IMATRON, INC. +001004 THE BRANTLEY COILE COMPANY,INC +001005 UEC COMMERCIAL +001006 RACAL RECORDERS LTD. +001007 CISCO SYSTEMS, INC. +001008 VIENNA SYSTEMS CORPORATION +001009 HORO QUARTZ +00100A WILLIAMS COMMUNICATIONS GROUP +00100B CISCO SYSTEMS, INC. +00100C ITO CO., LTD. +00100D CISCO SYSTEMS, INC. +00100E MICRO LINEAR COPORATION +00100F INDUSTRIAL CPU SYSTEMS +001010 INITIO CORPORATION +001011 CISCO SYSTEMS, INC. +001012 PROCESSOR SYSTEMS (I) PVT LTD +001013 INDUSTRIAL COMPUTER SOURCE +001014 CISCO SYSTEMS, INC. +001015 OOMON INC. +001016 T.SQWARE +001017 MICOS GMBH +001018 BROADCOM CORPORATION +001019 SIRONA DENTAL SYSTEMS +00101A PICTURETEL CORP. +00101B CORNET TECHNOLOGY, INC. +00101C OHM TECHNOLOGIES INTL, LLC +00101D WINBOND ELECTRONICS CORP. +00101E MATSUSHITA ELECTRONIC +00101F CISCO SYSTEMS, INC. +001020 WELCH ALLYN, DATA COLLECTION +001021 ENCANTO NETWORKS, INC. +001022 SATCOM MEDIA CORPORATION +001023 FLOWWISE NETWORKS, INC. +001024 NAGOYA ELECTRIC WORKS CO., LTD +001025 GRAYHILL INC. +001026 ACCELERATED NETWORKS, INC. +001027 L-3 COMMUNICATIONS EAST +001028 COMPUTER TECHNICA, INC. +001029 CISCO SYSTEMS, INC. +00102A ZF MICROSYSTEMS, INC. +00102B UMAX DATA SYSTEMS, INC. +00102C Lasat Networks A/S +00102D HITACHI SOFTWARE ENGINEERING +00102E NETWORK SYSTEMS & TECHNOLOGIES +00102F CISCO SYSTEMS, INC. +001030 WI-LAN, INC. +001031 OBJECTIVE COMMUNICATIONS, INC. +001032 ALTA TECHNOLOGY +001033 ACCESSLAN COMMUNICATIONS, INC. +001034 GNP COMPUTERS +001035 ELITEGROUP COMPUTER +001036 INTER-TEL INTEGRATED SYSTEMS +001037 CYQ'VE TECHNOLOGY CO., LTD. +001038 MICRO RESEARCH INSTITUTE, INC. +001039 VECTRON SYSTEMS GMBH +00103A DIAMOND NETWORK TECH +00103B HIPPI NETWORKING FORUM +00103C IC ENSEMBLE, INC. +00103D PHASECOM, LTD. +00103E NETSCHOOLS CORPORATION +00103F TOLLGRADE COMMUNICATIONS, INC. +001040 INTERMEC CORPORATION +001041 BRISTOL BABCOCK, INC. +001042 ALACRITECH +001043 A2 CORPORATION +001044 INNOLABS CORPORATION +001045 Nortel Networks +001046 ALCORN MCBRIDE INC. +001047 ECHO ELETRIC CO. LTD. +001048 HTRC AUTOMATION, INC. +001049 SHORELINE TELEWORKS, INC. +00104A THE PARVUC CORPORATION +00104B 3COM CORPORATION +00104C COMPUTER ACCESS TECHNOLOGY +00104D SURTEC INDUSTRIES, INC. +00104E CEOLOGIC +00104F STORAGE TECHNOLOGY CORPORATION +001050 RION CO., LTD. +001051 CMICRO CORPORATION +001052 METTLER-TOLEDO (ALBSTADT) GMBH +001053 COMPUTER TECHNOLOGY CORP. +001054 CISCO SYSTEMS, INC. +001055 FUJITSU MICROELECTRONICS, INC. +001056 SODICK CO., LTD. +001057 Rebel.com, Inc. +001058 ARROWPOINT COMMUNICATIONS,INC. +001059 DIABLO RESEARCH CO. LLC +00105A 3COM CORPORATION +00105B NET INSIGHT AB +00105C QUANTUM DESIGNS (H.K.) LTD. +00105D DRAGER, BUSINESS UNIT +00105E HEKIMIAN LABORATORIES, INC. +00105F IN-SNEC +001060 BILLIONTON SYSTEMS, INC. +001061 HOSTLINK CORP. +001062 NX SERVER, ILNC. +001063 STARGUIDE DIGITAL NETWORKS +001064 DIGITAL EQUIPMENT CORP. +001065 RADYNE CORPORATION +001066 ADVANCED CONTROL SYSTEMS, INC. +001067 REDBACK NETWORKS, INC. +001068 COMOS TELECOM +001069 HELIOSS COMMUNICATIONS, INC. +00106A DIGITAL MICROWAVE CORPORATION +00106B SONUS NETWORKS, INC. +00106C INFRATEC PLUS GMBH +00106D INTEGRITY COMMUNICATIONS, INC. +00106E TADIRAN COM. LTD. +00106F TRENTON TECHNOLOGY INC. +001070 CARADON TREND LTD. +001071 ADVANET INC. +001072 GVN TECHNOLOGIES, INC. +001073 TECHNOBOX, INC. +001074 ATEN INTERNATIONAL CO., LTD. +001075 Maxtor Corporation +001076 EUREM GMBH +001077 SAF DRIVE SYSTEMS, LTD. +001078 NUERA COMMUNICATIONS, INC. +001079 CISCO SYSTEMS, INC. +00107A AMBICOM, INC. +00107B CISCO SYSTEMS, INC. +00107C P-COM, INC. +00107D AURORA COMMUNICATIONS, LTD. +00107E BACHMANN ELECTRONIC GMBH +00107F CRESTRON ELECTRONICS, INC. +001080 METAWAVE COMMUNICATIONS +001081 DPS, INC. +001082 JNA TELECOMMUNICATIONS LIMITED +001083 HEWLETT-PACKARD COMPANY +001084 K-BOT COMMUNICATIONS +001085 POLARIS COMMUNICATIONS, INC. +001086 ATTO TECHNOLOGY, INC. +001087 Xstreamis PLC +001088 AMERICAN NETWORKS INC. +001089 WEBSONIC +00108A TERALOGIC, INC. +00108B LASERANIMATION SOLLINGER GMBH +00108C FUJITSU TELECOMMUNICATIONS +00108D JOHNSON CONTROLS, INC. +00108E HUGH SYMONS CONCEPT +00108F RAPTOR SYSTEMS +001090 CIMETRICS, INC. +001091 NO WIRES NEEDED BV +001092 NETCORE INC. +001093 CMS COMPUTERS, LTD. +001094 ADTECH, INC. +001095 THOMSON CONSUMER ELECTRONICS +001096 TRACEWELL SYSTEMS, INC. +001097 WINNET METROPOLITAN +001098 STARNET TECHNOLOGIES, INC. +001099 INNOMEDIA, INC. +00109A NETLINE +00109B VIXEL CORPORATION +00109C M-SYSTEM CO., LTD. +00109D CLARINET SYSTEMS, INC. +00109E AWARE, INC. +00109F PAVO, INC. +0010A0 INNOVEX TECHNOLOGIES, INC. +0010A1 KENDIN SEMICONDUCTOR, INC. +0010A2 TNS +0010A3 OMNITRONIX, INC. +0010A4 XIRCOM +0010A5 OXFORD INSTRUMENTS +0010A6 CISCO SYSTEMS, INC. +0010A7 UNEX TECHNOLOGY CORPORATION +0010A8 RELIANCE COMPUTER CORP. +0010A9 ADHOC TECHNOLOGIES +0010AA MEDIA4, INC. +0010AB KOITO INDUSTRIES, LTD. +0010AC IMCI TECHNOLOGIES +0010AD SOFTRONICS USB, INC. +0010AE SHINKO ELECTRIC INDUSTRIES CO. +0010AF TAC SYSTEMS, INC. +0010B0 MERIDIAN TECHNOLOGY CORP. +0010B1 FOR-A CO., LTD. +0010B2 COACTIVE AESTHETICS +0010B3 NOKIA MULTIMEDIA TERMINALS +0010B4 ATMOSPHERE NETWORKS +0010B5 ACCTON TECHNOLOGY CORPORATION +0010B6 ENTRATA COMMUNICATIONS CORP. +0010B7 COYOTE TECHNOLOGIES, LLC +0010B8 ISHIGAKI COMPUTER SYSTEM CO. +0010B9 MAXTOR CORP. +0010BA MARTINHO-DAVIS SYSTEMS, INC. +0010BB DATA & INFORMATION TECHNOLOGY +0010BC Nortel Networks +0010BD THE TELECOMMUNICATION +0010BE TELEXIS CORP. +0010BF INTER AIR WIRELESS +0010C0 ARMA, INC. +0010C1 OI ELECTRIC CO., LTD. +0010C2 WILLNET, INC. +0010C3 CSI-CONTROL SYSTEMS +0010C4 MEDIA LINKS CO., LTD. +0010C5 PROTOCOL TECHNOLOGIES, INC. +0010C6 USI +0010C7 DATA TRANSMISSION NETWORK +0010C8 COMMUNICATIONS ELECTRONICS +0010C9 MITSUBISHI ELECTRONICS +0010CA INTEGRAL ACCESS +0010CB FACIT K.K. +0010CC CLP COMPUTER LOGISTIK +0010CD INTERFACE CONCEPT +0010CE VOLAMP, LTD. +0010CF FIBERLANE COMMUNICATIONS +0010D0 WITCOM, LTD. +0010D1 Top Layer Networks, Inc. +0010D2 NITTO TSUSHINKI CO., LTD +0010D3 GRIPS ELECTRONIC GMBH +0010D4 STORAGE COMPUTER CORPORATION +0010D5 IMASDE CANARIAS, S.A. +0010D6 ITT A/CD +0010D7 ARGOSY RESEARCH INC. +0010D8 CALISTA +0010D9 IBM JAPAN, FUJISAWA MT+D +0010DA MOTION ENGINEERING, INC. +0010DB NETSCREEN TECHNOLOGIES, INC. +0010DC MICRO-STAR INTERNATIONAL +0010DD ENABLE SEMICONDUCTOR, INC. +0010DE INTERNATIONAL DATACASTING +0010DF RISE COMPUTER INC. +0010E0 COBALT MICROSERVER, INC. +0010E1 S.I. TECH, INC. +0010E2 ARRAYCOMM, INC. +0010E3 COMPAQ COMPUTER CORPORATION +0010E4 NSI CORPORATION +0010E5 SOLECTRON TEXAS +0010E6 APPLIED INTELLIGENT +0010E7 BREEZECOM +0010E8 TELOCITY, INCORPORATED +0010E9 RAIDTEC LTD. +0010EA ADEPT TECHNOLOGY +0010EB SELSIUS SYSTEMS, ILNC. +0010EC RPCG, LLC +0010ED SUNDANCE TECHNOLOGY, INC. +0010EE CTI PRODUCTS, INC. +0010EF DB NETWORKS, INC. +0010F0 RITTAL-WERK RUDOLF LOH +0010F1 I-O CORPORATION +0010F2 ANTEC +0010F3 NEXCOM INTERNATIONAL CO., LTD. +0010F4 VERTICAL NETWORKS, INC. +0010F5 AMHERST SYSTEMS, INC. +0010F6 CISCO SYSTEMS, INC. +0010F7 IRIICHI TECHNOLOGIES +0010F8 KENWOOD TMI CORPORATION +0010F9 UNIQUE SYSTEMS, INC. +0010FA ZAYANTE, INC. +0010FB ZIDA TECHNOLOGIES LIMITED +0010FC BROADBAND NETWORKS, INC. +0010FD COCOM A/S +0010FE DIGITAL EQUIPMENT CORPORATION +0010FF CISCO SYSTEMS, INC. +001C7C PERQ SYSTEMS CORPORATION +002000 LEXMARK INTERNATIONAL, INC. +002001 DSP SOLUTIONS, INC. +002002 SERITECH ENTERPRISE CO., LTD. +002003 PIXEL POWER LTD. +002004 YAMATAKE-HONEYWELL CO., LTD. +002005 SIMPLE TECHNOLOGY +002006 GARRETT COMMUNICATIONS, INC. +002007 SFA, INC. +002008 CABLE & COMPUTER TECHNOLOGY +002009 PACKARD BELL ELEC., INC. +00200A SOURCE-COMM CORP. +00200B OCTAGON SYSTEMS CORP. +00200C ADASTRA SYSTEMS CORP. +00200D CARL ZEISS +00200E SATELLITE TECHNOLOGY MGMT, INC +00200F TANBAC CO., LTD. +002010 JEOL SYSTEM TECHNOLOGY CO. LTD +002011 CANOPUS CO., LTD. +002012 CAMTRONICS MEDICAL SYSTEMS +002013 DIVERSIFIED TECHNOLOGY, INC. +002014 GLOBAL VIEW CO., LTD. +002015 ACTIS COMPUTER SA +002016 SHOWA ELECTRIC WIRE & CABLE CO +002017 ORBOTECH +002018 CIS TECHNOLOGY INC. +002019 OHLER GMBH +00201A N-BASE SWITCH COMMUNICATIONS +00201B NORTHERN TELECOM/NETWORK +00201C EXCEL, INC. +00201D KATANA PRODUCTS +00201E NETQUEST CORPORATION +00201F BEST POWER TECHNOLOGY, INC. +002020 MEGATRON COMPUTER INDUSTRIES +002021 ALGORITHMS SOFTWARE PVT. LTD. +002022 TEKNIQUE, INC. +002023 T.C. TECHNOLOGIES PTY. LTD +002024 PACIFIC COMMUNICATION SCIENCES +002025 CONTROL TECHNOLOGY, INC. +002026 AMKLY SYSTEMS, INC. +002027 MING FORTUNE INDUSTRY CO., LTD +002028 WEST EGG SYSTEMS, INC. +002029 TELEPROCESSING PRODUCTS, INC. +00202A N.V. DZINE +00202B ADVANCED TELECOMMUNICATIONS +00202C WELLTRONIX CO., LTD. +00202D TAIYO CORPORATION +00202E DAYSTAR DIGITAL +00202F ZETA COMMUNICATIONS, LTD. +002030 ANALOG & DIGITAL SYSTEMS +002031 ERTEC GMBH +002032 ALCATEL TAISEL +002033 SYNAPSE TECHNOLOGIES, INC. +002034 ROTEC INDUSTRIEAUTOMATION GMBH +002035 IBM CORPORATION +002036 BMC SOFTWARE +002037 SEAGATE TECHNOLOGY +002038 VME MICROSYSTEMS INTERNATIONAL +002039 SCINETS +00203A DIGITAL BI0METRICS INC. +00203B WISDM LTD. +00203C EUROTIME AB +00203D NOVAR ELECTRONICS CORPORATION +00203E LOGICAN TECHNOLOGIES, INC. +00203F JUKI CORPORATION +002040 Motorola Broadband Communications Sector +002041 DATA NET +002042 DATAMETRICS CORP. +002043 NEURON COMPANY LIMITED +002044 GENITECH PTY LTD +002045 ION Networks, Inc. +002046 CIPRICO, INC. +002047 STEINBRECHER CORP. +002048 Marconi Communications +002049 COMTRON, INC. +00204A PRONET GMBH +00204B AUTOCOMPUTER CO., LTD. +00204C MITRON COMPUTER PTE LTD. +00204D INOVIS GMBH +00204E NETWORK SECURITY SYSTEMS, INC. +00204F DEUTSCHE AEROSPACE AG +002050 KOREA COMPUTER INC. +002051 PHOENIX DATA COMMUNUNICATIONS +002052 RAGULA SYSTEMS +002053 HUNTSVILLE MICROSYSTEMS, INC. +002054 EASTERN RESEARCH, INC. +002055 ALTECH CO., LTD. +002056 NEOPRODUCTS +002057 TITZE DATENTECHNIK GMBH +002058 ALLIED SIGNAL INC. +002059 MIRO COMPUTER PRODUCTS AG +00205A COMPUTER IDENTICS +00205B SKYLINE TECHNOLOGY +00205C INTERNET SYSTEMS/ FLORIDA INC. +00205D NANOMATIC OY +00205E CASTLE ROCK, INC. +00205F GAMMADATA COMPUTER GMBH +002060 ALCATEL ITALIA S.P.A. +002061 DYNATECH COMMUNICATIONS, INC. +002062 SCORPION LOGIC, LTD. +002063 WIPRO INFOTECH LTD. +002064 PROTEC MICROSYSTEMS, INC. +002065 SUPERNET NETWORKING INC. +002066 GENERAL MAGIC, INC. +002068 ISDYNE +002069 ISDN SYSTEMS CORPORATION +00206A OSAKA COMPUTER CORP. +00206B MINOLTA CO., LTD. +00206C EVERGREEN TECHNOLOGY CORP. +00206D DATA RACE, INC. +00206E XACT, INC. +00206F FLOWPOINT CORPORATION +002070 HYNET, LTD. +002071 IBR GMBH +002072 WORKLINK INNOVATIONS +002073 FUSION SYSTEMS CORPORATION +002074 SUNGWOON SYSTEMS +002075 MOTOROLA COMMUNICATION ISRAEL +002076 REUDO CORPORATION +002077 KARDIOS SYSTEMS CORP. +002078 RUNTOP, INC. +002079 MIKRON GMBH +00207A WISE COMMUNICATIONS, INC. +00207B LEVEL ONE COMMUNICATIONS +00207C AUTEC GMBH +00207D ADVANCED COMPUTER APPLICATIONS +00207E FINECOM CO., LTD. +00207F KYOEI SANGYO CO., LTD. +002080 SYNERGY (UK) LTD. +002081 TITAN ELECTRONICS +002082 ONEAC CORPORATION +002083 PRESTICOM INCORPORATED +002084 OCE PRINTING SYSTEMS, GMBH +002085 EXIDE ELECTRONICS +002086 MICROTECH ELECTRONICS LIMITED +002087 MEMOTEC COMMUNICATIONS CORP. +002088 GLOBAL VILLAGE COMMUNICATION +002089 T3PLUS NETWORKING, INC. +00208A SONIX COMMUNICATIONS, LTD. +00208B LAPIS TECHNOLOGIES, INC. +00208C GALAXY NETWORKS, INC. +00208D CMD TECHNOLOGY +00208E CHEVIN SOFTWARE ENG. LTD. +00208F ECI TELECOM LTD. +002090 ADVANCED COMPRESSION +002091 J125, NATIONAL SECURITY AGENCY +002092 CHESS ENGINEERING B.V. +002093 LANDINGS TECHNOLOGY CORP. +002094 CUBIX CORPORATION +002095 RIVA ELECTRONICS +002096 SIEBE ENVIRONMENTAL CONTROLS +002097 APPLIED SIGNAL TECHNOLOGY +002098 HECTRONIC AB +002099 BON ELECTRIC CO., LTD. +00209A THE 3DO COMPANY +00209B ERSAT ELECTRONIC GMBH +00209C PRIMARY ACCESS CORP. +00209D LIPPERT AUTOMATIONSTECHNIK +00209E BROWN'S OPERATING SYSTEM +00209F MERCURY COMPUTER SYSTEMS, INC. +0020A0 OA LABORATORY CO., LTD. +0020A1 DOVATRON +0020A2 GALCOM NETWORKING LTD. +0020A3 DIVICOM INC. +0020A4 MULTIPOINT NETWORKS +0020A5 API ENGINEERING +0020A6 PROXIM, INC. +0020A7 PAIRGAIN TECHNOLOGIES, INC. +0020A8 SAST TECHNOLOGY CORP. +0020A9 W... [truncated message content] |
From: SVN U. <ben...@li...> - 2002-10-21 00:33:37
|
Author: bencollins Date: 2002-10-20 20:33:17 -0400 (Sun, 20 Oct 2002) New Revision: 628 Added: trunk/oui.c Modified: trunk/Config.help trunk/Config.in trunk/Makefile trunk/nodemgr.c trunk/nodemgr.h Log: Include an OUI database, much like the PCI name database. Yes, this adds about 300k to the size of the ieee1394.o object, IF AND ONLY IF YOU ENABLE IT IN THE CONFIG. So it isn't always that way :) Completely user configurable. This is completely visual. I like it because it means my Dazzle Hollywood actually shows up as a Dazzle device, instead of "Unknown". It has no textual leaves, so it's just an random device. Here's an example from klog on my UltraSPARC Blade 100 (builtin OHCI): ieee1394: Host added: ID:BUS[00:1023] GUID[0003bafffe09662e] [SUN MICROSYSTEMS INC.] (Linux OHCI-1394) ieee1394: Node added: ID:BUS[01:1023] GUID[00d001020000270d] [VST TECHNOLOGIES, INC.] (VST TECHNOLOGIESINC.) ieee1394: Node added: ID:BUS[03:1023] GUID[0003f30011803051] [Dazzle Multimedia, Inc.] (Unknown) And from /proc: Node[00:1023] GUID[0003bafffe09662e]: Vendor ID : `SUN MICROSYSTEMS INC.' [0x080020] Vendor text : `Linux OHCI-1394' ... Node[01:1023] GUID[00d001020000270d]: Vendor ID : `VST TECHNOLOGIES, INC.' [0x00d001] Vendor text : `VST TECHNOLOGIESINC.' ... Node[03:1023] GUID[0003f30011803051]: Vendor ID : `Dazzle Multimedia, Inc.' [0x0003f3] ... Enjoy. Modified: trunk/nodemgr.c ============================================================================== --- trunk/nodemgr.c (original) +++ trunk/nodemgr.c 2002-10-20 20:33:18.000000000 -0400 @@ -9,6 +9,7 @@ */ #include <linux/kernel.h> +#include <linux/config.h> #include <linux/list.h> #include <linux/slab.h> #include <linux/smp_lock.h> @@ -31,6 +32,24 @@ #include "csr.h" #include "nodemgr.h" +#ifdef CONFIG_IEEE1394_OUI_DB +struct oui_list_struct { + int oui; + char *name; +}; + +extern struct oui_list_struct oui_list[]; + +static char *nodemgr_find_oui_name(int oui) { + int i; + + for (i = 0; oui_list[i].name; i++) + if (oui_list[i].oui == oui) + return oui_list[i].name; + + return NULL; +} +#endif /* * Basically what we do here is start off retrieving the bus_info block. @@ -104,14 +123,15 @@ NODE_BUS_ARGS(ne->nodeid), (unsigned long long)ne->guid); /* Generic Node information */ - PUTF(" Vendor ID : `%s' [0x%06x]\n", - ne->vendor_name ?: "Unknown", ne->vendor_id); + PUTF(" Vendor ID : `%s' [0x%06x]\n", ne->oui_name, ne->vendor_id); + if (ne->vendor_name) + PUTF(" Vendor text : `%s'\n", ne->vendor_name); PUTF(" Capabilities: 0x%06x\n", ne->capabilities); PUTF(" Tlabel stats:\n"); spin_lock_irqsave(&ne->tpool->lock, flags); PUTF(" Free : %d\n", atomic_read(&ne->tpool->count.count) + 1); PUTF(" Total : %u\n", ne->tpool->allocations); - PUTF(" Mask : %016lx\n", ne->tpool->pool); + PUTF(" Mask : %016Lx\n", (unsigned long long)ne->tpool->pool); spin_unlock_irqrestore(&ne->tpool->lock, flags); PUTF(" Bus Options :\n"); PUTF(" IRMC(%d) CMC(%d) ISC(%d) BMC(%d) PMC(%d) GEN(%d)\n" @@ -311,6 +331,7 @@ code = CONFIG_ROM_KEY(quad); if (code == CONFIG_ROM_VENDOR_ID && length > 0) { + /* Check if there is a text descriptor leaf immediately after this. */ size = nodemgr_size_text_leaf(host, nodeid, generation, @@ -319,22 +340,23 @@ address += 4; length--; total_size += (size + 1) * sizeof (quadlet_t); - } - else if (size < 0) + } else if (size < 0) return NULL; } } ne = kmalloc(total_size, SLAB_ATOMIC); - if (ne != NULL) { - if (size != 0) { - ne->vendor_name - = (const char *) &(ne->quadlets[2]); - ne->quadlets[size] = 0; - } - else { - ne->vendor_name = NULL; - } + + if (!ne) + return NULL; + + if (size != 0) { + ne->vendor_name + = (const char *) &(ne->quadlets[2]); + ne->quadlets[size] = 0; + } else { + ne->vendor_name = NULL; } + return ne; } @@ -361,9 +383,10 @@ nodemgr_process_config_rom (ne, busoptions); - HPSB_DEBUG("%s added: Node[" NODE_BUS_FMT "] GUID[%016Lx] [%s]", - (host->node_id == nodeid) ? "Host" : "Device", + HPSB_DEBUG("%s added: ID:BUS[" NODE_BUS_FMT "] GUID[%016Lx] [%s] (%s)", + (host->node_id == nodeid) ? "Host" : "Node", NODE_BUS_ARGS(nodeid), (unsigned long long)guid, + ne->oui_name, ne->vendor_name ?: "Unknown"); return ne; @@ -665,6 +688,11 @@ switch (code) { case CONFIG_ROM_VENDOR_ID: ne->vendor_id = value; +#ifdef CONFIG_IEEE1394_OUI_DB + ne->oui_name = nodemgr_find_oui_name(value); +#else + ne->oui_name = "Unknown"; +#endif /* Now check if there is a vendor name text string. */ if (ne->vendor_name != NULL) { Modified: trunk/Makefile ============================================================================== --- trunk/Makefile (original) +++ trunk/Makefile 2002-10-20 20:33:18.000000000 -0400 @@ -5,7 +5,7 @@ export-objs := ieee1394_core.o ohci1394.o cmp.o ieee1394-objs := ieee1394_core.o ieee1394_transactions.o hosts.o \ - highlevel.o csr.o nodemgr.o + highlevel.o csr.o nodemgr.o oui.o obj-$(CONFIG_IEEE1394) += ieee1394.o obj-$(CONFIG_IEEE1394_PCILYNX) += pcilynx.o Modified: trunk/nodemgr.h ============================================================================== --- trunk/nodemgr.h (original) +++ trunk/nodemgr.h 2002-10-20 20:33:18.000000000 -0400 @@ -135,6 +135,8 @@ struct hpsb_tlabel_pool *tpool; const char *vendor_name; + char *oui_name; + quadlet_t quadlets[0]; }; Modified: trunk/Config.help ============================================================================== --- trunk/Config.help (original) +++ trunk/Config.help 2002-10-20 20:33:18.000000000 -0400 @@ -124,3 +124,13 @@ Say Y if you really want or need the debugging output, everyone else says N. + +CONFIG_IEEE1394_OUI_DB + If you say Y here, then an OUI list (vendor unique ID's) will be + compiled into the ieee1394 module. This doesn't really do much accept + being able to display the vendor of a hardware node. The downside is + that it adds about 300k to the size of the module, or kernel (depending + on whether you compile ieee1394 as a module, or static in the kernel). + + This option is not needed for userspace programs like gscanbus to show + this information. Modified: trunk/Config.in ============================================================================== --- trunk/Config.in (original) +++ trunk/Config.in 2002-10-20 20:33:18.000000000 -0400 @@ -41,7 +41,9 @@ dep_tristate ' IEC61883-6 (Audio transmission) support' CONFIG_IEEE1394_AMDTP $CONFIG_IEEE1394_OHCI1394 $CONFIG_IEEE1394_CMP fi - bool 'Excessive debugging output' CONFIG_IEEE1394_VERBOSEDEBUG + comment "Miscellaneous Options" + bool ' Excessive debugging output' CONFIG_IEEE1394_VERBOSEDEBUG + bool ' OUI Database built-in' CONFIG_IEEE1394_OUI_DB fi endmenu fi Added: trunk/oui.c ============================================================================== --- trunk/oui.c (original) +++ trunk/oui.c 2002-10-20 20:33:18.000000000 -0400 @@ -0,0 +1,4944 @@ +/* Generated list of OUI's */ + +#include <linux/config.h> + +#ifdef CONFIG_IEEE1394_OUI_DB +struct oui_list_struct { + int oui; + char *name; +} oui_list[] = { + { 0x000000, "XEROX CORPORATION" }, + { 0x000001, "XEROX CORPORATION" }, + { 0x000002, "XEROX CORPORATION" }, + { 0x000003, "XEROX CORPORATION" }, + { 0x000004, "XEROX CORPORATION" }, + { 0x000005, "XEROX CORPORATION" }, + { 0x000006, "XEROX CORPORATION" }, + { 0x000007, "XEROX CORPORATION" }, + { 0x000008, "XEROX CORPORATION" }, + { 0x000009, "XEROX CORPORATION" }, + { 0x00000A, "OMRON TATEISI ELECTRONICS CO." }, + { 0x00000B, "MATRIX CORPORATION" }, + { 0x00000C, "CISCO SYSTEMS, INC." }, + { 0x00000D, "FIBRONICS LTD." }, + { 0x00000E, "FUJITSU LIMITED" }, + { 0x00000F, "NEXT, INC." }, + { 0x000010, "SYTEK INC." }, + { 0x000011, "NORMEREL SYSTEMES" }, + { 0x000012, "INFORMATION TECHNOLOGY LIMITED" }, + { 0x000013, "CAMEX" }, + { 0x000014, "NETRONIX" }, + { 0x000015, "DATAPOINT CORPORATION" }, + { 0x000016, "DU PONT PIXEL SYSTEMS ." }, + { 0x000017, "TEKELEC" }, + { 0x000018, "WEBSTER COMPUTER CORPORATION" }, + { 0x000019, "APPLIED DYNAMICS INTERNATIONAL" }, + { 0x00001A, "ADVANCED MICRO DEVICES" }, + { 0x00001B, "NOVELL INC." }, + { 0x00001C, "BELL TECHNOLOGIES" }, + { 0x00001D, "CABLETRON SYSTEMS, INC." }, + { 0x00001E, "TELSIST INDUSTRIA ELECTRONICA" }, + { 0x00001F, "Telco Systems, Inc." }, + { 0x000020, "DATAINDUSTRIER DIAB AB" }, + { 0x000021, "SUREMAN COMP. & COMMUN. CORP." }, + { 0x000022, "VISUAL TECHNOLOGY INC." }, + { 0x000023, "ABB INDUSTRIAL SYSTEMS AB" }, + { 0x000024, "CONNECT AS" }, + { 0x000025, "RAMTEK CORP." }, + { 0x000026, "SHA-KEN CO., LTD." }, + { 0x000027, "JAPAN RADIO COMPANY" }, + { 0x000028, "PRODIGY SYSTEMS CORPORATION" }, + { 0x000029, "IMC NETWORKS CORP." }, + { 0x00002A, "TRW - SEDD/INP" }, + { 0x00002B, "CRISP AUTOMATION, INC" }, + { 0x00002C, "AUTOTOTE LIMITED" }, + { 0x00002D, "CHROMATICS INC" }, + { 0x00002E, "SOCIETE EVIRA" }, + { 0x00002F, "TIMEPLEX INC." }, + { 0x000030, "VG LABORATORY SYSTEMS LTD" }, + { 0x000031, "QPSX COMMUNICATIONS PTY LTD" }, + { 0x000032, "Marconi plc" }, + { 0x000033, "EGAN MACHINERY COMPANY" }, + { 0x000034, "NETWORK RESOURCES CORPORATION" }, + { 0x000035, "SPECTRAGRAPHICS CORPORATION" }, + { 0x000036, "ATARI CORPORATION" }, + { 0x000037, "OXFORD METRICS LIMITED" }, + { 0x000038, "CSS LABS" }, + { 0x000039, "TOSHIBA CORPORATION" }, + { 0x00003A, "CHYRON CORPORATION" }, + { 0x00003B, "i Controls, Inc." }, + { 0x00003C, "AUSPEX SYSTEMS INC." }, + { 0x00003D, "UNISYS" }, + { 0x00003E, "SIMPACT" }, + { 0x00003F, "SYNTREX, INC." }, + { 0x000040, "APPLICON, INC." }, + { 0x000041, "ICE CORPORATION" }, + { 0x000042, "METIER MANAGEMENT SYSTEMS LTD." }, + { 0x000043, "MICRO TECHNOLOGY" }, + { 0x000044, "CASTELLE CORPORATION" }, + { 0x000045, "FORD AEROSPACE & COMM. CORP." }, + { 0x000046, "OLIVETTI NORTH AMERICA" }, + { 0x000047, "NICOLET INSTRUMENTS CORP." }, + { 0x000048, "SEIKO EPSON CORPORATION" }, + { 0x000049, "APRICOT COMPUTERS, LTD" }, + { 0x00004A, "ADC CODENOLL TECHNOLOGY CORP." }, + { 0x00004B, "ICL DATA OY" }, + { 0x00004C, "NEC CORPORATION" }, + { 0x00004D, "DCI CORPORATION" }, + { 0x00004E, "AMPEX CORPORATION" }, + { 0x00004F, "LOGICRAFT, INC." }, + { 0x000050, "RADISYS CORPORATION" }, + { 0x000051, "HOB ELECTRONIC GMBH & CO. KG" }, + { 0x000052, "Intrusion.com, Inc." }, + { 0x000053, "COMPUCORP" }, + { 0x000054, "MODICON, INC." }, + { 0x000055, "COMMISSARIAT A L`ENERGIE ATOM." }, + { 0x000056, "DR. B. STRUCK" }, + { 0x000057, "SCITEX CORPORATION LTD." }, + { 0x000058, "RACORE COMPUTER PRODUCTS INC." }, + { 0x000059, "HELLIGE GMBH" }, + { 0x00005A, "SysKonnect GmbH" }, + { 0x00005B, "ELTEC ELEKTRONIK AG" }, + { 0x00005C, "TELEMATICS INTERNATIONAL INC." }, + { 0x00005D, "CS TELECOM" }, + { 0x00005E, "USC INFORMATION SCIENCES INST" }, + { 0x00005F, "SUMITOMO ELECTRIC IND., LTD." }, + { 0x000060, "KONTRON ELEKTRONIK GMBH" }, + { 0x000061, "GATEWAY COMMUNICATIONS" }, + { 0x000062, "BULL HN INFORMATION SYSTEMS" }, + { 0x000063, "DR.ING.SEUFERT GMBH" }, + { 0x000064, "YOKOGAWA DIGITAL COMPUTER CORP" }, + { 0x000065, "NETWORK ASSOCIATES, INC." }, + { 0x000066, "TALARIS SYSTEMS, INC." }, + { 0x000067, "SOFT * RITE, INC." }, + { 0x000068, "ROSEMOUNT CONTROLS" }, + { 0x000069, "CONCORD COMMUNICATIONS INC" }, + { 0x00006A, "COMPUTER CONSOLES INC." }, + { 0x00006B, "SILICON GRAPHICS INC./MIPS" }, + { 0x00006D, "CRAY COMMUNICATIONS, LTD." }, + { 0x00006E, "ARTISOFT, INC." }, + { 0x00006F, "MADGE NETWORKS LTD." }, + { 0x000070, "HCL LIMITED" }, + { 0x000071, "ADRA SYSTEMS INC." }, + { 0x000072, "MINIWARE TECHNOLOGY" }, + { 0x000073, "SIECOR CORPORATION" }, + { 0x000074, "RICOH COMPANY LTD." }, + { 0x000075, "Nortel Networks" }, + { 0x000076, "ABEKAS VIDEO SYSTEM" }, + { 0x000077, "INTERPHASE CORPORATION" }, + { 0x000078, "LABTAM LIMITED" }, + { 0x000079, "NETWORTH INCORPORATED" }, + { 0x00007A, "DANA COMPUTER INC." }, + { 0x00007B, "RESEARCH MACHINES" }, + { 0x00007C, "AMPERE INCORPORATED" }, + { 0x00007D, "SUN MICROSYSTEMS, INC." }, + { 0x00007E, "CLUSTRIX CORPORATION" }, + { 0x00007F, "LINOTYPE-HELL AG" }, + { 0x000080, "CRAY COMMUNICATIONS A/S" }, + { 0x000081, "BAY NETWORKS" }, + { 0x000082, "LECTRA SYSTEMES SA" }, + { 0x000083, "TADPOLE TECHNOLOGY PLC" }, + { 0x000084, "SUPERNET" }, + { 0x000085, "CANON INC." }, + { 0x000086, "MEGAHERTZ CORPORATION" }, + { 0x000087, "HITACHI, LTD." }, + { 0x000088, "COMPUTER NETWORK TECH. CORP." }, + { 0x000089, "CAYMAN SYSTEMS INC." }, + { 0x00008A, "DATAHOUSE INFORMATION SYSTEMS" }, + { 0x00008B, "INFOTRON" }, + { 0x00008C, "ALLOY COMPUTER PRODUCTS, INC." }, + { 0x00008D, "VERDIX CORPORATION" }, + { 0x00008E, "SOLBOURNE COMPUTER, INC." }, + { 0x00008F, "RAYTHEON COMPANY" }, + { 0x000090, "MICROCOM" }, + { 0x000091, "ANRITSU CORPORATION" }, + { 0x000092, "COGENT DATA TECHNOLOGIES" }, + { 0x000093, "PROTEON INC." }, + { 0x000094, "ASANTE TECHNOLOGIES" }, + { 0x000095, "SONY TEKTRONIX CORP." }, + { 0x000096, "MARCONI ELECTRONICS LTD." }, + { 0x000097, "EPOCH SYSTEMS" }, + { 0x000098, "CROSSCOMM CORPORATION" }, + { 0x000099, "MTX, INC." }, + { 0x00009A, "RC COMPUTER A/S" }, + { 0x00009B, "INFORMATION INTERNATIONAL, INC" }, + { 0x00009C, "ROLM MIL-SPEC COMPUTERS" }, + { 0x00009D, "LOCUS COMPUTING CORPORATION" }, + { 0x00009E, "MARLI S.A." }, + { 0x00009F, "AMERISTAR TECHNOLOGIES INC." }, + { 0x0000A0, "TOKYO SANYO ELECTRIC CO. LTD." }, + { 0x0000A1, "MARQUETTE ELECTRIC CO." }, + { 0x0000A2, "BAY NETWORKS" }, + { 0x0000A3, "NETWORK APPLICATION TECHNOLOGY" }, + { 0x0000A4, "ACORN COMPUTERS LIMITED" }, + { 0x0000A5, "COMPATIBLE SYSTEMS CORP." }, + { 0x0000A6, "NETWORK GENERAL CORPORATION" }, + { 0x0000A7, "NETWORK COMPUTING DEVICES INC." }, + { 0x0000A8, "STRATUS COMPUTER INC." }, + { 0x0000A9, "NETWORK SYSTEMS CORP." }, + { 0x0000AA, "XEROX CORPORATION" }, + { 0x0000AB, "LOGIC MODELING CORPORATION" }, + { 0x0000AC, "CONWARE COMPUTER CONSULTING" }, + { 0x0000AD, "BRUKER INSTRUMENTS INC." }, + { 0x0000AE, "DASSAULT ELECTRONIQUE" }, + { 0x0000AF, "NUCLEAR DATA INSTRUMENTATION" }, + { 0x0000B0, "RND-RAD NETWORK DEVICES" }, + { 0x0000B1, "ALPHA MICROSYSTEMS INC." }, + { 0x0000B2, "TELEVIDEO SYSTEMS, INC." }, + { 0x0000B3, "CIMLINC INCORPORATED" }, + { 0x0000B4, "EDIMAX COMPUTER COMPANY" }, + { 0x0000B5, "DATABILITY SOFTWARE SYS. INC." }, + { 0x0000B6, "MICRO-MATIC RESEARCH" }, + { 0x0000B7, "DOVE COMPUTER CORPORATION" }, + { 0x0000B8, "SEIKOSHA CO., LTD." }, + { 0x0000B9, "MCDONNELL DOUGLAS COMPUTER SYS" }, + { 0x0000BA, "SIIG, INC." }, + { 0x0000BB, "TRI-DATA" }, + { 0x0000BC, "ALLEN-BRADLEY CO. INC." }, + { 0x0000BD, "MITSUBISHI CABLE COMPANY" }, + { 0x0000BE, "THE NTI GROUP" }, + { 0x0000BF, "SYMMETRIC COMPUTER SYSTEMS" }, + { 0x0000C0, "WESTERN DIGITAL CORPORATION" }, + { 0x0000C1, "Madge Networks Ltd." }, + { 0x0000C2, "INFORMATION PRESENTATION TECH." }, + { 0x0000C3, "HARRIS CORP COMPUTER SYS DIV" }, + { 0x0000C4, "WATERS DIV. OF MILLIPORE" }, + { 0x0000C5, "FARALLON COMPUTING/NETOPIA" }, + { 0x0000C6, "EON SYSTEMS" }, + { 0x0000C7, "ARIX CORPORATION" }, + { 0x0000C8, "ALTOS COMPUTER SYSTEMS" }, + { 0x0000C9, "EMULEX CORPORATION" }, + { 0x0000CA, "APPLITEK" }, + { 0x0000CB, "COMPU-SHACK ELECTRONIC GMBH" }, + { 0x0000CC, "DENSAN CO., LTD." }, + { 0x0000CD, "Centrecom Systems, Ltd." }, + { 0x0000CE, "MEGADATA CORP." }, + { 0x0000CF, "HAYES MICROCOMPUTER PRODUCTS" }, + { 0x0000D0, "DEVELCON ELECTRONICS LTD." }, + { 0x0000D1, "ADAPTEC INCORPORATED" }, + { 0x0000D2, "SBE, INC." }, + { 0x0000D3, "WANG LABORATORIES INC." }, + { 0x0000D4, "PURE DATA LTD." }, + { 0x0000D5, "MICROGNOSIS INTERNATIONAL" }, + { 0x0000D6, "PUNCH LINE HOLDING" }, + { 0x0000D7, "DARTMOUTH COLLEGE" }, + { 0x0000D8, "NOVELL, INC." }, + { 0x0000D9, "NIPPON TELEGRAPH & TELEPHONE" }, + { 0x0000DA, "ATEX" }, + { 0x0000DB, "BRITISH TELECOMMUNICATIONS PLC" }, + { 0x0000DC, "HAYES MICROCOMPUTER PRODUCTS" }, + { 0x0000DD, "TCL INCORPORATED" }, + { 0x0000DE, "CETIA" }, + { 0x0000DF, "BELL & HOWELL PUB SYS DIV" }, + { 0x0000E0, "QUADRAM CORP." }, + { 0x0000E1, "GRID SYSTEMS" }, + { 0x0000E2, "ACER TECHNOLOGIES CORP." }, + { 0x0000E3, "INTEGRATED MICRO PRODUCTS LTD" }, + { 0x0000E4, "IN2 GROUPE INTERTECHNIQUE" }, + { 0x0000E5, "SIGMEX LTD." }, + { 0x0000E6, "APTOR PRODUITS DE COMM INDUST" }, + { 0x0000E7, "STAR GATE TECHNOLOGIES" }, + { 0x0000E8, "ACCTON TECHNOLOGY CORP." }, + { 0x0000E9, "ISICAD, INC." }, + { 0x0000EA, "UPNOD AB" }, + { 0x0000EB, "MATSUSHITA COMM. IND. CO. LTD." }, + { 0x0000EC, "MICROPROCESS" }, + { 0x0000ED, "APRIL" }, + { 0x0000EE, "NETWORK DESIGNERS, LTD." }, + { 0x0000EF, "KTI" }, + { 0x0000F0, "SAMSUNG ELECTRONICS CO., LTD." }, + { 0x0000F1, "MAGNA COMPUTER CORPORATION" }, + { 0x0000F2, "SPIDER COMMUNICATIONS" }, + { 0x0000F3, "GANDALF DATA LIMITED" }, + { 0x0000F4, "ALLIED TELESYN INTERNATIONAL" }, + { 0x0000F5, "DIAMOND SALES LIMITED" }, + { 0x0000F6, "APPLIED MICROSYSTEMS CORP." }, + { 0x0000F7, "YOUTH KEEP ENTERPRISE CO LTD" }, + { 0x0000F8, "DIGITAL EQUIPMENT CORPORATION" }, + { 0x0000F9, "QUOTRON SYSTEMS INC." }, + { 0x0000FA, "MICROSAGE COMPUTER SYSTEMS INC" }, + { 0x0000FB, "RECHNER ZUR KOMMUNIKATION" }, + { 0x0000FC, "MEIKO" }, + { 0x0000FD, "HIGH LEVEL HARDWARE" }, + { 0x0000FE, "ANNAPOLIS MICRO SYSTEMS" }, + { 0x0000FF, "CAMTEC ELECTRONICS LTD." }, + { 0x000100, "EQUIP'TRANS" }, + { 0x000102, "3COM CORPORATION" }, + { 0x000103, "3COM CORPORATION" }, + { 0x000104, "DVICO Co., Ltd." }, + { 0x000105, "BECKHOFF GmbH" }, + { 0x000106, "Tews Datentechnik GmbH" }, + { 0x000107, "Leiser GmbH" }, + { 0x000108, "AVLAB Technology, Inc." }, + { 0x000109, "Nagano Japan Radio Co., Ltd." }, + { 0x00010A, "CIS TECHNOLOGY INC." }, + { 0x00010B, "Space CyberLink, Inc." }, + { 0x00010C, "System Talks Inc." }, + { 0x00010D, "CORECO, INC." }, + { 0x00010E, "Bri-Link Technologies Co., Ltd" }, + { 0x00010F, "Nishan Systems, Inc." }, + { 0x000110, "Gotham Networks" }, + { 0x000111, "iDigm Inc." }, + { 0x000112, "Shark Multimedia Inc." }, + { 0x000113, "OLYMPUS OPTICAL CO., LTD." }, + { 0x000114, "KANDA TSUSHIN KOGYO CO., LTD." }, + { 0x000115, "EXTRATECH CORPORATION" }, + { 0x000116, "Netspect Technologies, Inc." }, + { 0x000117, "CANAL +" }, + { 0x000118, "EZ Digital Co., Ltd." }, + { 0x000119, "Action Controls Pty. Ltd." }, + { 0x00011A, "EEH DataLink GmbH" }, + { 0x00011B, "Unizone Technologies, Inc." }, + { 0x00011C, "Universal Talkware Corporation" }, + { 0x00011D, "Centillium Communications" }, + { 0x00011E, "Precidia Technologies, Inc." }, + { 0x00011F, "RC Networks, Inc." }, + { 0x000120, "OSCILLOQUARTZ S.A." }, + { 0x000121, "RapidStream Inc." }, + { 0x000122, "Trend Communications, Ltd." }, + { 0x000123, "DIGITAL ELECTRONICS CORP." }, + { 0x000124, "Acer Incorporated" }, + { 0x000125, "YAESU MUSEN CO., LTD." }, + { 0x000126, "PAC Labs" }, + { 0x000127, "The OPEN Group Limited" }, + { 0x000128, "EnjoyWeb, Inc." }, + { 0x000129, "DFI Inc." }, + { 0x00012A, "Telematica Sistems Inteligente" }, + { 0x00012B, "TELENET Co., Ltd." }, + { 0x00012C, "Aravox Technologies, Inc." }, + { 0x00012D, "Komodo Technology" }, + { 0x00012E, "PC Partner Ltd." }, + { 0x00012F, "Twinhead International Corp" }, + { 0x000130, "Extreme Networks" }, + { 0x000131, "Detection Systems, Inc." }, + { 0x000132, "Dranetz - BMI" }, + { 0x000133, "KYOWA Electronic Instruments C" }, + { 0x000134, "SIG Positec Systems AG" }, + { 0x000135, "KDC Corp." }, + { 0x000136, "CyberTAN Technology, Inc." }, + { 0x000137, "IT Farm Corporation" }, + { 0x000138, "XAVi Technologies Corp." }, + { 0x000139, "Point Multimedia Systems" }, + { 0x00013A, "SHELCAD COMMUNICATIONS, LTD." }, + { 0x00013B, "BNA SYSTEMS" }, + { 0x00013C, "TIW SYSTEMS" }, + { 0x00013D, "RiscStation Ltd." }, + { 0x00013E, "Ascom Tateco AB" }, + { 0x00013F, "Neighbor World Co., Ltd." }, + { 0x000140, "Sendtek Corporation" }, + { 0x000141, "CABLE PRINT" }, + { 0x000142, "Cisco Systems, Inc." }, + { 0x000143, "Cisco Systems, Inc." }, + { 0x000144, "Cereva Networks, Inc." }, + { 0x000145, "WINSYSTEMS, INC." }, + { 0x000146, "Tesco Controls, Inc." }, + { 0x000147, "Zhone Technologies" }, + { 0x000148, "X-traWeb Inc." }, + { 0x000149, "T.D.T. Transfer Data Test GmbH" }, + { 0x00014A, "SONY COMPUTER SCIENCE LABS., I" }, + { 0x00014B, "Ennovate Networks, Inc." }, + { 0x00014C, "Berkeley Process Control" }, + { 0x00014D, "Shin Kin Enterprises Co., Ltd" }, + { 0x00014E, "WIN Enterprises, Inc." }, + { 0x00014F, "LUMINOUS Networks, Inc." }, + { 0x000150, "GILAT COMMUNICATIONS, LTD." }, + { 0x000151, "Ensemble Communications" }, + { 0x000152, "CHROMATEK INC." }, + { 0x000153, "ARCHTEK TELECOM CORPORATION" }, + { 0x000154, "G3M Corporation" }, + { 0x000155, "Promise Technology, Inc." }, + { 0x000156, "FIREWIREDIRECT.COM, INC." }, + { 0x000157, "SYSWAVE CO., LTD" }, + { 0x000158, "Electro Industries/Gauge Tech" }, + { 0x000159, "S1 Corporation" }, + { 0x00015A, "Digital Video Broadcasting" }, + { 0x00015B, "ITALTEL S.p.A/RF-UP-I" }, + { 0x00015C, "CADANT INC." }, + { 0x00015D, "Pirus Networks" }, + { 0x00015E, "BEST TECHNOLOGY CO., LTD." }, + { 0x00015F, "DIGITAL DESIGN GmbH" }, + { 0x000160, "ELMEX Co., LTD." }, + { 0x000161, "Meta Machine Technology" }, + { 0x000162, "Cygnet Technologies, Inc." }, + { 0x000163, "Cisco Systems, Inc." }, + { 0x000164, "Cisco Systems, Inc." }, + { 0x000165, "AirSwitch Corporation" }, + { 0x000166, "TC GROUP A/S" }, + { 0x000167, "HIOKI E.E. CORPORATION" }, + { 0x000168, "VITANA CORPORATION" }, + { 0x000169, "Celestix Networks Pte Ltd." }, + { 0x00016A, "ALITEC" }, + { 0x00016B, "LightChip, Inc." }, + { 0x00016C, "FOXCONN" }, + { 0x00016D, "Triton Network Systems" }, + { 0x00016E, "Conklin Corporation" }, + { 0x00016F, "HAITAI ELECTRONICS CO., LTD." }, + { 0x000170, "ESE Embedded System Engineer'g" }, + { 0x000171, "Allied Data Technologies" }, + { 0x000172, "TechnoLand Co., LTD." }, + { 0x000173, "JNI Corporation" }, + { 0x000174, "CyberOptics Corporation" }, + { 0x000175, "Radiant Communications Corp." }, + { 0x000176, "Orient Silver Enterprises" }, + { 0x000177, "EDSL" }, + { 0x000178, "MARGI Systems, Inc." }, + { 0x000179, "WIRELESS TECHNOLOGY, INC." }, + { 0x00017A, "Chengdu Maipu Electric Industrial Co., Ltd." }, + { 0x00017B, "Heidelberger Druckmaschinen AG" }, + { 0x00017C, "AG-E GmbH" }, + { 0x00017D, "ThermoQuest" }, + { 0x00017E, "ADTEK System Science Co., Ltd." }, + { 0x00017F, "Experience Music Project" }, + { 0x000180, "AOpen, Inc." }, + { 0x000181, "Nortel Networks" }, + { 0x000182, "DICA TECHNOLOGIES AG" }, + { 0x000183, "ANITE TELECOMS" }, + { 0x000184, "SIEB & MEYER AG" }, + { 0x000185, "Aloka Co., Ltd." }, + { 0x000186, "DISCH GmbH" }, + { 0x000187, "i2SE GmbH" }, + { 0x000188, "LXCO Technologies ag" }, + { 0x000189, "Refraction Technology, Inc." }, + { 0x00018A, "ROI COMPUTER AG" }, + { 0x00018B, "NetLinks Co., Ltd." }, + { 0x00018C, "Mega Vision" }, + { 0x00018D, "AudeSi Technologies" }, + { 0x00018E, "Logitec Corporation" }, + { 0x00018F, "Kenetec, Inc." }, + { 0x000190, "SMK-M" }, + { 0x000191, "SYRED Data Systems" }, + { 0x000192, "Texas Digital Systems" }, + { 0x000193, "Hanbyul Telecom Co., Ltd." }, + { 0x000194, "Capital Equipment Corporation" }, + { 0x000195, "Sena Technologies, Inc." }, + { 0x000196, "Cisco Systems, Inc." }, + { 0x000197, "Cisco Systems, Inc." }, + { 0x000198, "Darim Vision" }, + { 0x000199, "HeiSei Electronics" }, + { 0x00019A, "LEUNIG GmbH" }, + { 0x00019B, "Kyoto Microcomputer Co., Ltd." }, + { 0x00019C, "JDS Uniphase Inc." }, + { 0x00019D, "E-Control Systems, Inc." }, + { 0x00019E, "ESS Technology, Inc." }, + { 0x00019F, "Phonex Broadband" }, + { 0x0001A0, "Infinilink Corporation" }, + { 0x0001A1, "Mag-Tek, Inc." }, + { 0x0001A2, "Logical Co., Ltd." }, + { 0x0001A3, "GENESYS LOGIC, INC." }, + { 0x0001A4, "Microlink Corporation" }, + { 0x0001A5, "Nextcomm, Inc." }, + { 0x0001A6, "Scientific-Atlanta Arcodan A/S" }, + { 0x0001A7, "UNEX TECHNOLOGY CORPORATION" }, + { 0x0001A8, "Welltech Computer Co., Ltd." }, + { 0x0001A9, "BMW AG" }, + { 0x0001AA, "Airspan Communications, Ltd." }, + { 0x0001AB, "Main Street Networks" }, + { 0x0001AC, "Sitara Networks, Inc." }, + { 0x0001AD, "Coach Master International d.b.a. CMI Worldwide, Inc." }, + { 0x0001AE, "Trex Enterprises" }, + { 0x0001AF, "Motorola Computer Group" }, + { 0x0001B0, "Fulltek Technology Co., Ltd." }, + { 0x0001B1, "General Bandwidth" }, + { 0x0001B2, "Digital Processing Systems, Inc." }, + { 0x0001B3, "Precision Electronic Manufacturing" }, + { 0x0001B4, "Wayport, Inc." }, + { 0x0001B5, "Turin Networks, Inc." }, + { 0x0001B6, "SAEJIN T&M Co., Ltd." }, + { 0x0001B7, "Centos, Inc." }, + { 0x0001B8, "Netsensity, Inc." }, + { 0x0001B9, "SKF Condition Monitoring" }, + { 0x0001BA, "IC-Net, Inc." }, + { 0x0001BB, "Frequentis" }, + { 0x0001BC, "Brains Corporation" }, + { 0x0001BD, "Peterson Electro-Musical Products, Inc." }, + { 0x0001BE, "Gigalink Co., Ltd." }, + { 0x0001BF, "Teleforce Co., Ltd." }, + { 0x0001C0, "CompuLab, Ltd." }, + { 0x0001C1, "Exbit Technology" }, + { 0x0001C2, "ARK Research Corp." }, + { 0x0001C3, "Acromag, Inc." }, + { 0x0001C4, "NeoWave, Inc." }, + { 0x0001C5, "Simpler Networks" }, + { 0x0001C6, "Quarry Technologies" }, + { 0x0001C7, "Cisco Systems, Inc." }, + { 0x0001C8, "THOMAS CONRAD CORP." }, + { 0x0001C8, "CONRAD CORP." }, + { 0x0001C9, "Cisco Systems, Inc." }, + { 0x0001CA, "Geocast Network Systems, Inc." }, + { 0x0001CB, "NetGame, Ltd." }, + { 0x0001CC, "Japan Total Design Communication Co., Ltd." }, + { 0x0001CD, "ARtem" }, + { 0x0001CE, "Custom Micro Products, Ltd." }, + { 0x0001CF, "Alpha Data Parallel Systems, Ltd." }, + { 0x0001D0, "VitalPoint, Inc." }, + { 0x0001D1, "CoNet Communications, Inc." }, + { 0x0001D2, "MacPower Peripherals, Ltd." }, + { 0x0001D3, "PAXCOMM, Inc." }, + { 0x0001D4, "Leisure Time, Inc." }, + { 0x0001D5, "HAEDONG INFO & COMM CO., LTD" }, + { 0x0001D6, "MAN Roland Druckmaschinen AG" }, + { 0x0001D7, "F5 Networks, Inc." }, + { 0x0001D8, "Teltronics, Inc." }, + { 0x0001D9, "Sigma, Inc." }, + { 0x0001DA, "WINCOMM Corporation" }, + { 0x0001DB, "Freecom Technologies GmbH" }, + { 0x0001DC, "Activetelco" }, + { 0x0001DD, "Avail Networks" }, + { 0x0001DE, "Trango Systems, Inc." }, + { 0x0001DF, "ISDN Communications, Ltd." }, + { 0x0001E0, "Fast Systems, Inc." }, + { 0x0001E1, "Kinpo Electronics, Inc." }, + { 0x0001E2, "Ando Electric Corporation" }, + { 0x0001E3, "Siemens AG" }, + { 0x0001E4, "Sitera, Inc." }, + { 0x0001E5, "Supernet, Inc." }, + { 0x0001E6, "Hewlett-Packard Company" }, + { 0x0001E7, "Hewlett-Packard Company" }, + { 0x0001E8, "Force10 Networks, Inc." }, + { 0x0001E9, "Litton Marine Systems B.V." }, + { 0x0001EA, "Cirilium Corp." }, + { 0x0001EB, "C-COM Corporation" }, + { 0x0001EC, "Ericsson Group" }, + { 0x0001ED, "SETA Corp." }, + { 0x0001EE, "Comtrol Europe, Ltd." }, + { 0x0001EF, "Camtel Technology Corp." }, + { 0x0001F0, "Tridium, Inc." }, + { 0x0001F1, "Innovative Concepts, Inc." }, + { 0x0001F3, "QPS, Inc." }, + { 0x0001F4, "Enterasys Networks" }, + { 0x0001F5, "ERIM S.A." }, + { 0x0001F6, "Association of Musical Electronics Industry" }, + { 0x0001F7, "Image Display Systems, Inc." }, + { 0x0001F8, "Adherent Systems, Ltd." }, + { 0x0001F9, "TeraGlobal Communications Corp." }, + { 0x0001FA, "HOROSCAS" }, + { 0x0001FB, "DoTop Technology, Inc." }, + { 0x0001FC, "Keyence Corporation" }, + { 0x0001FD, "Digital Voice Systems, Inc." }, + { 0x0001FE, "DIGITAL EQUIPMENT CORPORATION" }, + { 0x0001FF, "Data Direct Networks, Inc." }, + { 0x000200, "Net & Sys Co., Ltd." }, + { 0x000201, "IFM Electronic gmbh" }, + { 0x000202, "Amino Communications, Ltd." }, + { 0x000203, "Woonsang Telecom, Inc." }, + { 0x000204, "Bodmann Industries Elektronik GmbH" }, + { 0x000205, "Hitachi Denshi, Ltd." }, + { 0x000206, "Telital R&D Denmark A/S" }, + { 0x000208, "Unify Networks, Inc." }, + { 0x000209, "Shenzhen SED Information Technology Co., Ltd." }, + { 0x00020A, "Gefran Spa" }, + { 0x00020B, "Native Networks, Inc." }, + { 0x00020C, "Metro-Optix" }, + { 0x00020D, "Micronpc.com" }, + { 0x00020E, "Laurel Networks, Inc." }, + { 0x00020F, "AATR" }, + { 0x000210, "Fenecom" }, + { 0x000211, "Nature Worldwide Technology Corp." }, + { 0x000212, "SierraCom" }, + { 0x000213, "S.D.E.L." }, + { 0x000214, "DTVRO" }, + { 0x000215, "Cotas Computer Technology A/B" }, + { 0x000216, "Cisco Systems, Inc." }, + { 0x000217, "Cisco Systems, Inc." }, + { 0x000218, "Advanced Scientific Corp" }, + { 0x000219, "Paralon Technologies" }, + { 0x00021A, "Zuma Networks" }, + { 0x00021B, "Kollmorgen-Servotronix" }, + { 0x00021C, "Network Elements, Inc." }, + { 0x00021D, "Data General Communication Ltd." }, + { 0x00021E, "SIMTEL S.R.L." }, + { 0x00021F, "Aculab PLC" }, + { 0x000220, "Canon Aptex, Inc." }, + { 0x000221, "DSP Application, Ltd." }, + { 0x000222, "Chromisys, Inc." }, + { 0x000223, "ClickTV" }, + { 0x000224, "Lantern Communications, Inc." }, + { 0x000225, "Certus Technology, Inc." }, + { 0x000226, "XESystems, Inc." }, + { 0x000227, "ESD GmbH" }, + { 0x000228, "Necsom, Ltd." }, + { 0x000229, "Adtec Corporation" }, + { 0x00022A, "Asound Electronic" }, + { 0x00022B, "Tamura Electric Works, Ltd." }, + { 0x00022C, "ABB Bomem, Inc." }, + { 0x00022D, "Agere Systems" }, + { 0x00022E, "TEAC Corp. R& D" }, + { 0x00022F, "P-Cube, Ltd." }, + { 0x000230, "Intersoft Electronics" }, + { 0x000231, "Ingersoll-Rand" }, + { 0x000232, "Avision, Inc." }, + { 0x000233, "Mantra Communications, Inc." }, + { 0x000234, "Imperial Technology, Inc." }, + { 0x000235, "Paragon Networks International" }, + { 0x000236, "INIT GmbH" }, + { 0x000237, "Cosmo Research Corp." }, + { 0x000238, "Serome Technology, Inc." }, + { 0x000239, "Visicom" }, + { 0x00023A, "ZSK Stickmaschinen GmbH" }, + { 0x00023B, "Redback Networks" }, + { 0x00023C, "Creative Technology, Ltd." }, + { 0x00023D, "NuSpeed, Inc." }, + { 0x00023E, "Selta Telematica S.p.a" }, + { 0x00023F, "Compal Electronics, Inc." }, + { 0x000240, "Seedek Co., Ltd." }, + { 0x000241, "Amer.com" }, + { 0x000242, "Videoframe Systems" }, + { 0x000243, "Raysis Co., Ltd." }, + { 0x000244, "SURECOM Technology Co." }, + { 0x000245, "Lampus Co, Ltd." }, + { 0x000246, "All-Win Tech Co., Ltd." }, + { 0x000247, "Great Dragon Information Technology (Group) Co., Ltd." }, + { 0x000248, "Pila GmbH & Co." }, + { 0x000249, "Aviv Infocom Co, Ltd." }, + { 0x00024A, "Cisco Systems, Inc." }, + { 0x00024B, "Cisco Systems, Inc." }, + { 0x00024C, "SiByte, Inc." }, + { 0x00024D, "Mannesman Dematic Colby Pty. Ltd." }, + { 0x00024E, "Datacard Group" }, + { 0x00024F, "IPM Datacom S.R.L." }, + { 0x000250, "Geyser Networks, Inc." }, + { 0x000251, "Soma Networks" }, + { 0x000252, "Carrier Corporation" }, + { 0x000253, "Televideo, Inc." }, + { 0x000254, "WorldGate" }, + { 0x000255, "IBM Corporation" }, + { 0x000256, "Alpha Processor, Inc." }, + { 0x000257, "Microcom Corp." }, + { 0x000258, "Flying Packets Communications" }, + { 0x000259, "Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group" }, + { 0x00025A, "Catena Networks" }, + { 0x00025B, "Cambridge Silicon Radio" }, + { 0x00025C, "SCI Systems (Kunshan) Co., Ltd." }, + { 0x00025E, "High Technology Ltd" }, + { 0x00025F, "Nortel Networks" }, + { 0x000260, "Accordion Networks, Inc." }, + { 0x000261, "i3 Micro Technology AB" }, + { 0x000262, "Soyo Group Soyo Com Tech Co., Ltd" }, + { 0x000263, "UPS Manufacturing SRL" }, + { 0x000264, "AudioRamp.com" }, + { 0x000265, "Virditech Co. Ltd." }, + { 0x000266, "Thermalogic Corporation" }, + { 0x000267, "NODE RUNNER, INC." }, + { 0x000268, "Harris Government Communications" }, + { 0x000269, "Nadatel Co., Ltd" }, + { 0x00026A, "Cocess Telecom Co., Ltd." }, + { 0x00026B, "BCM Computers Co., Ltd." }, + { 0x00026C, "Philips CFT" }, + { 0x00026D, "Adept Telecom" }, + { 0x00026E, "NeGeN Access, Inc." }, + { 0x00026F, "Senao International Co., Ltd." }, + { 0x000270, "Crewave Co., Ltd." }, + { 0x000271, "Vpacket Communications" }, + { 0x000272, "CC&C Technologies, Inc." }, + { 0x000273, "Coriolis Networks" }, + { 0x000274, "Tommy Technologies Corp." }, + { 0x000275, "SMART Technologies, Inc." }, + { 0x000276, "Primax Electronics Ltd." }, + { 0x000277, "Cash Systemes Industrie" }, + { 0x000278, "Samsung Electro-Mechanics Co., Ltd." }, + { 0x000279, "Control Applications, Ltd." }, + { 0x00027A, "IOI Technology Corporation" }, + { 0x00027B, "Amplify Net, Inc." }, + { 0x00027C, "Trilithic, Inc." }, + { 0x00027D, "Cisco Systems, Inc." }, + { 0x00027E, "Cisco Systems, Inc." }, + { 0x00027F, "ask-technologies.com" }, + { 0x000280, "Mu Net, Inc." }, + { 0x000281, "Red-M (Communications) Ltd." }, + { 0x000282, "ViaClix, Inc." }, + { 0x000283, "Spectrum Controls, Inc." }, + { 0x000284, "Alstom T&D P&C" }, + { 0x000285, "Riverstone Networks" }, + { 0x000286, "Occam Networks" }, + { 0x000287, "Adapcom" }, + { 0x000288, "GLOBAL VILLAGE COMMUNICATION" }, + { 0x000289, "DNE Technologies" }, + { 0x00028A, "Ambit Microsystems Corporation" }, + { 0x00028B, "VDSL Systems OY" }, + { 0x00028C, "Micrel-Synergy Semiconductor" }, + { 0x00028D, "Movita Technologies, Inc." }, + { 0x00028E, "Rapid 5 Networks, Inc." }, + { 0x00028F, "Globetek, Inc." }, + { 0x000290, "Woorigisool, Inc." }, + { 0x000291, "Open Network Co., Ltd." }, + { 0x000292, "Logic Innovations, Inc." }, + { 0x000293, "Solid Data Systems" }, + { 0x000294, "Tokyo Sokushin Co., Ltd." }, + { 0x000295, "IP.Access Limited" }, + { 0x000296, "Lectron Co,. Ltd." }, + { 0x000297, "C-COR.net" }, + { 0x000298, "Broadframe Corporation" }, + { 0x000299, "Apex, Inc." }, + { 0x00029A, "Storage Apps" }, + { 0x00029B, "Kreatel Communications AB" }, + { 0x00029D, "Merix Corp." }, + { 0x00029E, "Information Equipment Co., Ltd." }, + { 0x00029F, "L-3 Communication Aviation Recorders" }, + { 0x0002A0, "Flatstack Ltd." }, + { 0x0002A1, "World Wide Packets" }, + { 0x0002A2, "Hilscher GmbH" }, + { 0x0002A3, "ABB Power Automation" }, + { 0x0002A4, "AddPac Technology Co., Ltd." }, + { 0x0002A5, "Compaq Computer Corporation" }, + { 0x0002A6, "Effinet Systems Co., Ltd." }, + { 0x0002A7, "Vivace Networks" }, + { 0x0002A8, "Air Link Technology" }, + { 0x0002A9, "RACOM, s.r.o." }, + { 0x0002AA, "PLcom Co., Ltd." }, + { 0x0002AB, "CTC Union Technologies Co., Ltd." }, + { 0x0002AC, "3PAR data" }, + { 0x0002AD, "Asahi Optical Co., Ltd." }, + { 0x0002AE, "Scannex Electronics Ltd." }, + { 0x0002AF, "TeleCruz Technology, Inc." }, + { 0x0002B0, "Hokubu Communication & Industrial Co., Ltd." }, + { 0x0002B1, "Anritsu, Ltd." }, + { 0x0002B2, "Cablevision" }, + { 0x0002B3, "Intel Corporation" }, + { 0x0002B4, "DAPHNE" }, + { 0x0002B5, "Avnet, Inc." }, + { 0x0002B6, "Acrosser Technology Co., Ltd." }, + { 0x0002B7, "Watanabe Electric Industry Co., Ltd." }, + { 0x0002B8, "WHI KONSULT AB" }, + { 0x0002B9, "Cisco Systems, Inc." }, + { 0x0002BA, "Cisco Systems, Inc." }, + { 0x0002BB, "Continuous Computing" }, + { 0x0002BC, "LVL 7 Systems, Inc." }, + { 0x0002BD, "Bionet Co., Ltd." }, + { 0x0002BE, "Totsu Engineering, Inc." }, + { 0x0002BF, "dotRocket, Inc." }, + { 0x0002C0, "Bencent Tzeng Industry Co., Ltd." }, + { 0x0002C1, "Innovative Electronic Designs, Inc." }, + { 0x0002C2, "Net Vision Telecom" }, + { 0x0002C3, "Arelnet Ltd." }, + { 0x0002C4, "Vector International BUBA" }, + { 0x0002C5, "Evertz Microsystems Ltd." }, + { 0x0002C6, "Data Track Technology PLC" }, + { 0x0002C7, "ALPS ELECTRIC Co., Ltd." }, + { 0x0002C8, "Technocom Communications Technology (pte) Ltd" }, + { 0x0002C9, "Mellanox Technologies" }, + { 0x0002CA, "EndPoints, Inc." }, + { 0x0002CB, "TriState Ltd." }, + { 0x0002CC, "M.C.C.I" }, + { 0x0002CD, "TeleDream, Inc." }, + { 0x0002CE, "FoxJet, Inc." }, + { 0x0002CF, "ZyGate Communications, Inc." }, + { 0x0002D0, "Comdial Corporation" }, + { 0x0002D1, "Vivotek, Inc." }, + { 0x0002D2, "Workstation AG" }, + { 0x0002D3, "NetBotz, Inc." }, + { 0x0002D4, "PDA Peripherals, Inc." }, + { 0x0002D5, "ACR" }, + { 0x0002D6, "NICE Systems" }, + { 0x0002D7, "EMPEG Ltd" }, + { 0x0002D8, "BRECIS Communications Corporation" }, + { 0x0002D9, "Reliable Controls" }, + { 0x0002DA, "ExiO Communications, Inc." }, + { 0x0002DB, "NETSEC" }, + { 0x0002DC, "Fujitsu General Limited" }, + { 0x0002DD, "Bromax Communications, Ltd." }, + { 0x0002DE, "Astrodesign, Inc." }, + { 0x0002DF, "Net Com Systems, Inc." }, + { 0x0002E0, "ETAS GmbH" }, + { 0x0002E1, "Integrated Network Corporation" }, + { 0x0002E2, "NDC Infared Engineering" }, + { 0x0002E3, "LITE-ON Communications, Inc." }, + { 0x0002E4, "JC HYUN Systems, Inc." }, + { 0x0002E5, "Timeware Ltd." }, + { 0x0002E6, "Gould Instrument Systems, Inc." }, + { 0x0002E7, "CAB GmbH & Co KG" }, + { 0x0002E8, "E.D.&A." }, + { 0x0002E9, "CS Systemes De Securite - C3S" }, + { 0x0002EA, "Videonics, Inc." }, + { 0x0002EB, "Easent Communications" }, + { 0x0002EC, "Maschoff Design Engineering" }, + { 0x0002ED, "DXO Telecom Co., Ltd." }, + { 0x0002EE, "Nokia Danmark A/S" }, + { 0x0002EF, "CCC Network Systems Group Ltd." }, + { 0x0002F0, "AME Optimedia Technology Co., Ltd." }, + { 0x0002F1, "Pinetron Co., Ltd." }, + { 0x0002F2, "eDevice, Inc." }, + { 0x0002F3, "Media Serve Co., Ltd." }, + { 0x0002F4, "PCTEL, Inc." }, + { 0x0002F5, "VIVE Synergies, Inc." }, + { 0x0002F6, "Equipe Communications" }, + { 0x0002F7, "ARM" }, + { 0x0002F8, "SEAKR Engineering, Inc." }, + { 0x0002F9, "Mimos Semiconductor SDN BHD" }, + { 0x0002FA, "DX Antenna Co., Ltd." }, + { 0x0002FB, "Baumuller Aulugen-Systemtechnik GmbH" }, + { 0x0002FC, "Cisco Systems, Inc." }, + { 0x0002FD, "Cisco Systems, Inc." }, + { 0x0002FE, "Viditec, Inc." }, + { 0x0002FF, "Handan Broad InfoCom" }, + { 0x000300, "NetContinuum, Inc." }, + { 0x000301, "Avantas Networks Corporation" }, + { 0x000302, "Oasys Telecom, Inc." }, + { 0x000303, "JAMA Electronics Co., Ltd." }, + { 0x000304, "Pacific Broadband Communications" }, + { 0x000305, "Smart Network Devices GmbH" }, + { 0x000306, "Fusion In Tech Co., Ltd." }, + { 0x000307, "Secure Works, Inc." }, + { 0x000308, "AM Communications, Inc." }, + { 0x000309, "Texcel Technology PLC" }, + { 0x00030A, "Argus Technologies" }, + { 0x00030B, "Hunter Technology, Inc." }, + { 0x00030C, "Telesoft Technologies Ltd." }, + { 0x00030D, "Uniwill Computer Corp." }, + { 0x00030E, "Core Communications Co., Ltd." }, + { 0x00030F, "Legend Digital China Ltd." }, + { 0x000310, "Link Evolution Corp." }, + { 0x000311, "Micro Technology Co., Ltd." }, + { 0x000312, "TR-Systemtechnik GmbH" }, + { 0x000313, "Access Media SPA" }, + { 0x000314, "Teleware Network Systems" }, + { 0x000315, "Cidco Incorporated" }, + { 0x000316, "Nobell Communications, Inc." }, + { 0x000317, "Merlin Systems, Inc." }, + { 0x000318, "Cyras Systems, Inc." }, + { 0x000319, "Infineon AG" }, + { 0x00031A, "Beijing Broad Telecom Ltd., China" }, + { 0x00031B, "Cellvision Systems, Inc." }, + { 0x00031C, "Svenska Hardvarufabriken AB" }, + { 0x00031D, "Taiwan Commate Computer, Inc." }, + { 0x00031E, "Optranet, Inc." }, + { 0x00031F, "Condev Ltd." }, + { 0x000320, "Xpeed, Inc." }, + { 0x000321, "Reco Research Co., Ltd." }, + { 0x000322, "IDIS Co., Ltd." }, + { 0x000323, "Cornet Technology, Inc." }, + { 0x000324, "Tottori SANYO Electric Co., Ltd." }, + { 0x000325, "Arima Computer Corp." }, + { 0x000326, "Iwasaki Information Systems Co., Ltd." }, + { 0x000327, "ACT'L" }, + { 0x000328, "Mace Group, Inc." }, + { 0x000329, "F3, Inc." }, + { 0x00032A, "UniData Communication Systems, Inc." }, + { 0x00032B, "GAI Datenfunksysteme GmbH" }, + { 0x00032C, "ABB Industrie AG" }, + { 0x00032D, "IBASE Technology, Inc." }, + { 0x00032E, "Scope Information Management, Ltd." }, + { 0x00032F, "Global Sun Technology, Inc." }, + { 0x000330, "Imagenics, Co., Ltd." }, + { 0x000331, "Cisco Systems, Inc." }, + { 0x000332, "Cisco Systems, Inc." }, + { 0x000333, "Digitel Co., Ltd." }, + { 0x000334, "Newport Electronics" }, + { 0x000335, "Mirae Technology" }, + { 0x000336, "Zetes Technologies" }, + { 0x000337, "Vaone, Inc." }, + { 0x000338, "Oak Technology" }, + { 0x000339, "Eurologic Systems, Ltd." }, + { 0x00033A, "Silicon Wave, Inc." }, + { 0x00033B, "TAMI Tech Co., Ltd." }, + { 0x00033C, "Daiden Co., Ltd." }, + { 0x00033D, "ILSHin Lab" }, + { 0x00033E, "Tateyama System Laboratory Co., Ltd." }, + { 0x00033F, "BigBand Networks, Ltd." }, + { 0x000340, "Floware Wireless Systems, Ltd." }, + { 0x000341, "Axon Digital Design" }, + { 0x000342, "Nortel Networks" }, + { 0x000343, "Martin Professional A/S" }, + { 0x000344, "Tietech.Co., Ltd." }, + { 0x000345, "Routrek Networks Corporation" }, + { 0x000346, "Hitachi Kokusai Electric, Inc." }, + { 0x000347, "Intel Corporation" }, + { 0x000348, "Norscan Instruments, Ltd." }, + { 0x000349, "Vidicode Datacommunicatie B.V." }, + { 0x00034A, "RIAS Corporation" }, + { 0x00034B, "Nortel Networks" }, + { 0x00034C, "Shanghai DigiVision Technology Co., Ltd." }, + { 0x00034D, "Chiaro Networks, Ltd." }, + { 0x00034E, "Pos Data Company, Ltd." }, + { 0x00034F, "Sur-Gard Security" }, + { 0x000350, "BTICINO SPA" }, + { 0x000351, "Diebold, Inc." }, + { 0x000352, "Colubris Networks" }, + { 0x000353, "Mitac, Inc." }, + { 0x000354, "Fiber Logic Communications" }, + { 0x000355, "TeraBeam Internet Systems" }, + { 0x000356, "Wincor Nixdorf GmbH & Co KG" }, + { 0x000357, "Intervoice-Brite, Inc." }, + { 0x000358, "iCable System Co., Ltd." }, + { 0x000359, "DigitalSis" }, + { 0x00035A, "Phototron Limited" }, + { 0x00035B, "BridgeWave Communications" }, + { 0x00035C, "Saint Song Corp." }, + { 0x00035D, "Bosung Hi-Net Co., Ltd." }, + { 0x00035E, "Metropolitan Area Networks, Inc." }, + { 0x00035F, "Schuehle Mess - und. Kontrollsysteme" }, + { 0x000360, "PAC Interactive Technology, Inc." }, + { 0x000361, "Widcomm, Inc." }, + { 0x000362, "Vodtel Communications, Inc." }, + { 0x000363, "Miraesys Co., Ltd." }, + { 0x000364, "Scenix Semiconductor, Inc." }, + { 0x000365, "Kira Information & Communications, Ltd." }, + { 0x000366, "ASM Pacific Technology" }, + { 0x000367, "Jasmine Networks, Inc." }, + { 0x000368, "Embedone Co., Ltd." }, + { 0x000369, "Nippon Antenna Co., Ltd." }, + { 0x00036A, "Mainnet, Ltd." }, + { 0x00036B, "Cisco Systems, Inc." }, + { 0x00036C, "Cisco Systems, Inc." }, + { 0x00036D, "Runtop, Inc." }, + { 0x00036E, "Nicon Systems (Pty) Limited" }, + { 0x00036F, "Telsey SPA" }, + { 0x000370, "NXTV, Inc." }, + { 0x000371, "Acomz Networks Corp." }, + { 0x000372, "ULAN" }, + { 0x000373, "Aselsan A.S" }, + { 0x000374, "Hunter Watertech" }, + { 0x000375, "NetMedia, Inc." }, + { 0x000376, "Graphtec Technology, Inc." }, + { 0x000377, "Gigabit Wireless" }, + { 0x000378, "HUMAX Co., Ltd." }, + { 0x000379, "Proscend Communications, Inc." }, + { 0x00037A, "Taiyo Yuden Co., Ltd." }, + { 0x00037B, "IDEC IZUMI Corporation" }, + { 0x00037C, "Coax Media" }, + { 0x00037D, "Stellcom" }, + { 0x00037E, "PORTech Communications, Inc." }, + { 0x00037F, "Atheros Communications, Inc." }, + { 0x000381, "Ingenico International" }, + { 0x000382, "A-One Co., Ltd." }, + { 0x000383, "Metera Networks, Inc." }, + { 0x000384, "AETA" }, + { 0x000385, "Actelis Networks, Inc." }, + { 0x000386, "Ho Net, Inc." }, + { 0x000387, "Blaze Network Products" }, + { 0x000388, "Fastfame Technology Co., Ltd." }, + { 0x000389, "Plantronics" }, + { 0x00038A, "America Online, Inc." }, + { 0x00038B, "PLUS-ONE I&T, Inc." }, + { 0x00038C, "Total Impact" }, + { 0x00038D, "PCS Revenue Control Systems, Inc." }, + { 0x00038E, "Atoga Systems, Inc." }, + { 0x00038F, "Weinschel Corporation" }, + { 0x000390, "Digital Video Communications, Inc." }, + { 0x000392, "Hyundai Teletek Co., Ltd." }, + { 0x000393, "Apple Computer, Inc." }, + { 0x000394, "Connect One" }, + { 0x000395, "California Amplifier" }, + { 0x000396, "EZ Cast Co., Ltd." }, + { 0x000397, "Watchfront Electronics" }, + { 0x000398, "WISI" }, + { 0x000399, "Dongju Informations & Communications Co., Ltd." }, + { 0x00039A, "nSine, Ltd." }, + { 0x00039B, "NetChip Technology, Inc." }, + { 0x00039C, "OptiMight Communications, Inc." }, + { 0x00039D, "Acer Communications & Multimedia, Inc." }, + { 0x00039E, "Tera System Co., Ltd." }, + { 0x00039F, "Cisco Systems, Inc." }, + { 0x0003A0, "Cisco Systems, Inc." }, + { 0x0003A1, "HIPER Information & Communication, Inc." }, + { 0x0003A2, "Catapult Communications" }, + { 0x0003A3, "MAVIX, Ltd." }, + { 0x0003A4, "Data Storage and Information Management" }, + { 0x0003A5, "Medea Corporation" }, + { 0x0003A7, "Unixtar Technology, Inc." }, + { 0x0003A8, "IDOT Computers, Inc." }, + { 0x0003A9, "AXCENT Media AG" }, + { 0x0003AA, "Watlow" }, + { 0x0003AB, "Bridge Information Systems" }, + { 0x0003AC, "Fronius Schweissmaschinen" }, + { 0x0003AD, "Emerson Energy Systems AB" }, + { 0x0003AE, "Allied Advanced Manufacturing Pte, Ltd." }, + { 0x0003AF, "Paragea Communications" }, + { 0x0003B0, "Xsense Technology Corp." }, + { 0x0003B1, "Abbott Laboratories HPD" }, + { 0x0003B2, "Radware" }, + { 0x0003B3, "IA Link Systems Co., Ltd." }, + { 0x0003B4, "Macrotek International Corp." }, + { 0x0003B5, "Entra Technology Co." }, + { 0x0003B6, "QSI Corporation" }, + { 0x0003B7, "ZACCESS Systems" }, + { 0x0003B8, "NetKit Solutions, LLC" }, + { 0x0003B9, "Hualong Telecom Co., Ltd." }, + { 0x0003BA, "Sun Microsystems" }, + { 0x0003BB, "Signal Communications Limited" }, + { 0x0003BC, "COT GmbH" }, + { 0x0003BD, "OmniCluster Technologies, Inc." }, + { 0x0003BE, "Netility" }, + { 0x0003BF, "Centerpoint Broadband Technologies, Inc." }, + { 0x0003C0, "RFTNC Co., Ltd." }, + { 0x0003C1, "Packet Dynamics Ltd" }, + { 0x0003C2, "Solphone K.K." }, + { 0x0003C3, "Micronik Multimedia" }, + { 0x0003C4, "Tomra Systems ASA" }, + { 0x0003C5, "Mobotix AG" }, + { 0x0003C6, "ICUE Systems, Inc." }, + { 0x0003C7, "hopf Elektronik GmbH" }, + { 0x0003C8, "CML Emergency Services" }, + { 0x0003C9, "TECOM Co., Ltd." }, + { 0x0003CA, "MTS Systems Corp." }, + { 0x0003CB, "Nippon Systems Development Co., Ltd." }, + { 0x0003CC, "Momentum Computer, Inc." }, + { 0x0003CD, "Clovertech, Inc." }, + { 0x0003CE, "ETEN Technologies, Inc." }, + { 0x0003CF, "Muxcom, Inc." }, + { 0x0003D0, "KOANKEISO Co., Ltd." }, + { 0x0003D1, "Takaya Corporation" }, + { 0x0003D2, "Crossbeam Systems, Inc." }, + { 0x0003D3, "Internet Energy Systems, Inc." }, + { 0x0003D4, "Alloptic, Inc." }, + { 0x0003D5, "Advanced Communications Co., Ltd." }, + { 0x0003D6, "RADVision, Ltd." }, + { 0x0003D7, "NextNet Wireless, Inc." }, + { 0x0003D8, "iMPath Networks, Inc." }, + { 0x0003D9, "Secheron SA" }, + { 0x0003DA, "Takamisawa Cybernetics Co., Ltd." }, + { 0x0003DB, "Apogee Electronics Corp." }, + { 0x0003DC, "Lexar Media, Inc." }, + { 0x0003DD, "Comark Corp." }, + { 0x0003DE, "OTC Wireless" }, + { 0x0003DF, "Desana Systems" }, + { 0x0003E0, "RadioFrame Networks, Inc." }, + { 0x0003E1, "Winmate Communication, Inc." }, + { 0x0003E2, "Comspace Corporation" }, + { 0x0003E3, "Cisco Systems, Inc." }, + { 0x0003E4, "Cisco Systems, Inc." }, + { 0x0003E5, "Hermstedt SG" }, + { 0x0003E6, "Entone Technologies, Inc." }, + { 0x0003E7, "Logostek Co. Ltd." }, + { 0x0003E8, "Wavelength Digital Limited" }, + { 0x0003E9, "Akara Canada, Inc." }, + { 0x0003EA, "Mega System Technologies, Inc." }, + { 0x0003EB, "Atrica" }, + { 0x0003EC, "ICG Research, Inc." }, + { 0x0003ED, "Shinkawa Electric Co., Ltd." }, + { 0x0003EE, "MKNet Corporation" }, + { 0x0003EF, "Oneline AG" }, + { 0x0003F0, "Redfern Broadband Networks" }, + { 0x0003F1, "Cicada Semiconductor, Inc." }, + { 0x0003F2, "Seneca Networks" }, + { 0x0003F3, "Dazzle Multimedia, Inc." }, + { 0x0003F4, "NetBurner" }, + { 0x0003F5, "Chip2Chip" }, + { 0x0003F6, "Allegro Networks, Inc." }, + { 0x0003F7, "Plast-Control GmbH" }, + { 0x0003F8, "SanCastle Technologies, Inc." }, + { 0x0003F9, "Pleiades Communications, Inc." }, + { 0x0003FA, "TiMetra Networks" }, + { 0x0003FB, "Toko Seiki Company, Ltd." }, + { 0x0003FC, "Intertex Data AB" }, + { 0x0003FD, "Cisco Systems, Inc." }, + { 0x0003FE, "Cisco Systems, Inc." }, + { 0x0003FF, "Connectix" }, + { 0x000400, "LEXMARK INTERNATIONAL, INC." }, + { 0x000401, "Osaki Electric Co., Ltd." }, + { 0x000402, "Nexsan Technologies, Ltd." }, + { 0x000403, "Nexsi Corporation" }, + { 0x000404, "Makino Milling Machine Co., Ltd." }, + { 0x000405, "ACN Technologies" }, + { 0x000406, "Fa. Metabox AG" }, + { 0x000407, "Topcon Positioning Systems, Inc." }, + { 0x000408, "Sanko Electronics Co., Ltd." }, + { 0x000409, "Cratos Networks" }, + { 0x00040A, "Sage Systems" }, + { 0x00040B, "3com Europe Ltd." }, + { 0x00040C, "KANNO Work's Ltd." }, + { 0x00040D, "Avaya, Inc." }, + { 0x00040E, "AVM GmbH" }, + { 0x00040F, "Asus Network Technologies, Inc." }, + { 0x000410, "Spinnaker Networks, Inc." }, + { 0x000411, "Inkra Networks, Inc." }, + { 0x000412, "WaveSmith Networks, Inc." }, + { 0x000413, "SNOM Technology AG" }, + { 0x000414, "Umezawa Musen Denki Co., Ltd." }, + { 0x000415, "Rasteme Systems Co., Ltd." }, + { 0x000416, "Parks S/A Comunicacoes Digitais" }, + { 0x000417, "ELAU AG" }, + { 0x000418, "Teltronic S.A.U." }, + { 0x000419, "Fibercycle Networks, Inc." }, + { 0x00041A, "ines GmbH" }, + { 0x00041B, "Digital Interfaces Ltd." }, + { 0x00041C, "ipDialog, Inc." }, + { 0x00041D, "Corega of America" }, + { 0x00041E, "Shikoku Instrumentation Co., Ltd." }, + { 0x00041F, "Sony Computer Entertainment, Inc." }, + { 0x000420, "Slim Devices, Inc." }, + { 0x000421, "Ocular Networks" }, + { 0x000422, "Gordon Kapes, Inc." }, + { 0x000423, "Intel Corporation" }, + { 0x000424, "TMC s.r.l." }, + { 0x000425, "Atmel Corporation" }, + { 0x000426, "Autosys" }, + { 0x000427, "Cisco Systems, Inc." }, + { 0x000428, "Cisco Systems, Inc." }, + { 0x000429, "Pixord Corporation" }, + { 0x00042A, "Wireless Networks, Inc." }, + { 0x00042B, "IT Access Co., Ltd." }, + { 0x00042C, "Minet, Inc." }, + { 0x00042D, "Sarian Systems, Ltd." }, + { 0x00042E, "Netous Technologies, Ltd." }, + { 0x00042F, "International Communications Products, Inc." }, + { 0x000430, "Netgem" }, + { 0x000431, "Play Industries" }, + { 0x000432, "Voyetra Turtle Beach, Inc." }, + { 0x000433, "Cyberboard A/S" }, + { 0x000434, "Accelent Systems, Inc." }, + { 0x000435, "Comptek International, Inc." }, + { 0x000436, "ELANsat Technologies, Inc." }, + { 0x000437, "Powin Information Technology, Inc." }, + { 0x000438, "Nortel Networks" }, + { 0x000439, "Rosco Entertainment Technology, Inc." }, + { 0x00043A, "Intelligent Telecommunications, Inc." }, + { 0x00043B, "Lava Computer Mfg., Inc." }, + { 0x00043C, "SONOS Co., Ltd." }, + { 0x00043D, "INDEL AG" }, + { 0x00043E, "Telencomm" }, + { 0x00043F, "Electronic Systems Technology, Inc." }, + { 0x000440, "cyberPIXIE, Inc." }, + { 0x000441, "Half Dome Systems, Inc." }, + { 0x000442, "NACT" }, + { 0x000443, "Agilent Technologies, Inc." }, + { 0x000444, "Wireless Home" }, + { 0x000445, "LMS Skalar Instruments GmbH" }, + { 0x000446, "CYZENTECH Co., Ltd." }, + { 0x000447, "Acrowave Systems Co., Ltd." }, + { 0x000448, "Polaroid Professional Imaging" }, + { 0x000449, "Mapletree Networks" }, + { 0x00044A, "iPolicy Networks, Inc." }, + { 0x00044B, "NVIDIA" }, + { 0x00044C, "JENOPTIK" }, + { 0x00044D, "Cisco Systems, Inc." }, + { 0x00044E, "Cisco Systems, Inc." }, + { 0x00044F, "Leukhardt Systemelektronik GmbH" }, + { 0x000450, "DMD Computers SRL" }, + { 0x000451, "Medrad, Inc." }, + { 0x000452, "RocketLogix, Inc." }, + { 0x000453, "Yotta Yotta, Inc." }, + { 0x000454, "Quadriga UK" }, + { 0x000455, "ANTARA.net" }, + { 0x000456, "PipingHot Networks" }, + { 0x000457, "Universal Access Technology, Inc." }, + { 0x000458, "Fusion X Co., Ltd." }, + { 0x000459, "Veristar Corporation" }, + { 0x00045A, "The Linksys Group, Inc." }, + { 0x00045B, "Techsan Electronics Co., Ltd." }, + { 0x00045C, "Mobiwave Pte Ltd" }, + { 0x00045D, "BEKA Elektronik" }, + { 0x00045E, "Poly Trax Information Technology AG" }, + { 0x00045F, "Evalue Technology, Inc." }, + { 0x000460, "Knilink Technology, Inc." }, + { 0x000461, "EPOX Computer Co., Ltd." }, + { 0x000462, "DAKOS Data & Communication Co., Ltd." }, + { 0x000463, "Philips Communication Security & Imaging" }, + { 0x000464, "Fantasma Networks, Inc." }, + { 0x000465, "ist isdn support tecknik GmbH" }, + { 0x000466, "ARMITEL Co." }, + { 0x000467, "Wuhan Research Institute" }, + { 0x000468, "Vivity, Inc." }, + { 0x000469, "Innocom, Inc." }, + { 0x00046A, "Navini Networks" }, + { 0x00046B, "Palm Wireless, Inc." }, + { 0x00046C, "Cyber Technology Co., Ltd." }, + { 0x00046D, "Cisco Systems, Inc." }, + { 0x00046E, "Cisco Systems, Inc." }, + { 0x00046F, "Digitel S/A Industria Eletronica" }, + { 0x000470, "ipUnplugged AB" }, + { 0x000471, "IPrad" }, + { 0x000472, "Telelynx, Inc." }, + { 0x000473, "Photonex Corporation" }, + { 0x000474, "LEGRAND" }, + { 0x000475, "3 Com Corporation" }, + { 0x000476, "3 Com Corporation" }, + { 0x000477, "e-Appliance Corp." }, + { 0x000478, "G. Star Technology Corporation" }, + { 0x000479, "Radius Co., Ltd." }, + { 0x00047A, "AXXESSIT ASA" }, + { 0x00047B, "Schlumberger" }, + { 0x00047C, "Skidata AG" }, + { 0x00047D, "Pelco" }, + { 0x00047E, "NKF Electronics" }, + { 0x00047F, "Chr. Mayr GmbH & Co. KG" }, + { 0x000480, "Foundry Networks, Inc." }, + { 0x000481, "Econolite Control Products, Inc." }, + { 0x000482, "MediaLogic Corp." }, + { 0x000483, "Deltron Technology, Inc." }, + { 0x000484, "Amann GmbH" }, + { 0x000485, "PicoLight" }, + { 0x000486, "ITTC, University of Kansas" }, + { 0x000487, "Cogency Semiconductor, Inc." }, + { 0x000488, "Eurotherm Action Incorporated." }, + { 0x000489, "YAFO Networks, Inc." }, + { 0x00048A, "Temia Vertriebs GmbH" }, + { 0x00048B, "Poscon Corporation" }, + { 0x00048C, "Nayna Networks, Inc." }, + { 0x00048D, "Tone Commander Systems, Inc." }, + { 0x00048E, "Ohm Tech Labs, Inc." }, + { 0x00048F, "TD Systems Corp." }, + { 0x000490, "Optical Access" }, + { 0x000491, "Technovision, Inc." }, + { 0x000492, "Hive Internet, Ltd." }, + { 0x000493, "Tsinghua Unisplendour Co., Ltd." }, + { 0x000494, "Breezecom, Ltd." }, + { 0x000495, "Tejas Networks" }, + { 0x000496, "Extreme Networks" }, + { 0x000497, "MacroSystem Digital Video AG" }, + { 0x000499, "Chino Corporation" }, + { 0x00049A, "Cisco Systems, Inc." }, + { 0x00049B, "Cisco Systems, Inc." }, + { 0x00049C, "Surgient Networks, Inc." }, + { 0x00049D, "Ipanema Technologies" }, + { 0x00049E, "Wirelink Co., Ltd." }, + { 0x00049F, "Metrowerks" }, + { 0x0004A0, "Verity Instruments, Inc." }, + { 0x0004A1, "Pathway Connectivity" }, + { 0x0004A2, "L.S.I. Japan Co., Ltd." }, + { 0x0004A3, "Microchip Technology, Inc." }, + { 0x0004A4, "NetEnabled, Inc." }, + { 0x0004A5, "Barco Projection Systems NV" }, + { 0x0004A6, "SAF Tehnika Ltd." }, + { 0x0004A7, "FabiaTech Corporation" }, + { 0x0004A8, "Broadmax Technologies, Inc." }, + { 0x0004A9, "SandStream Technologies, Inc." }, + { 0x0004AA, "Jetstream Communications" }, + { 0x0004AB, "Comverse Network Systems, Inc." }, + { 0x0004AC, "IBM CORP." }, + { 0x0004AD, "Malibu Networks" }, + { 0x0004AE, "Liquid Metronics" }, + { 0x0004AF, "Digital Fountain, Inc." }, + { 0x0004B0, "ELESIGN Co., Ltd." }, + { 0x0004B1, "Signal Technology, Inc." }, + { 0x0004B2, "ESSEGI SRL" }, + { 0x0004B3, "Videotek, Inc." }, + { 0x0004B4, "CIAC" }, + { 0x0004B5, "Equitrac Corporation" }, + { 0x0004B6, "Tellumat (Pty) Ltd." }, + { 0x0004B7, "AMB i.t. Holding" }, + { 0x0004B8, "Kumahira Co., Ltd." }, + { 0x0004B9, "S.I. Soubou, Inc." }, + { 0x0004BA, "KDD Media Will Corporation" }, + { 0x0004BB, "Bardac Corporation" }, + { 0x0004BC, "Giantec, Inc." }, + { 0x0004BD, "Motorola BCS" }, + { 0x0004BE, "OptXCon, Inc." }, + { 0x0004BF, "Versa Logic Corp." }, + { 0x0004C0, "Cisco Systems, Inc." }, + { 0x0004C1, "Cisco Systems, Inc." }, + { 0x0004C2, "Magnipix, Inc." }, + { 0x0004C3, "CASTOR Informatique" }, + { 0x0004C4, "Allen & Health" }, + { 0x0004C5, "ASE Technologies, USA" }, + { 0x0004C6, "Yamaha Motor Co., Ltd." }, + { 0x0004C7, "NetMount" }, + { 0x0004C8, "LIBA Maschinefabrik GmbH" }, + { 0x0004C9, "Micro Electron Co., Ltd." }, + { 0x0004CA, "FreeMs Corp." }, + { 0x0004CB, "Tdsoft Communication, Ltd." }, + { 0x0004CC, "Peek Traffic BV." }, + { 0x0004CD, "Informedia Research Group" }, + { 0x0004CE, "Patria Ailon" }, + { 0x0004CF, "Seagate Technology" }, + { 0x0004D0, "Softlink s.r.o." }, + { 0x0004D1, "Drew Technologies, Inc." }, + { 0x0004D2, "Adcon Telemetry AG" }, + { 0x0004D3, "Toyokeiki Co., Ltd." }, + { 0x0004D4, "Proview Electronics Co., Ltd." }, + { 0x0004D5, "Hitachi Communication Systems, Inc." }, + { 0x0004D6, "Takagi Industrial Co., Ltd." }, + { 0x0004D7, "Omitec Instrumentation Ltd." }, + { 0x0004D8, "IPWireless, Inc." }, + { 0x0004D9, "Titan Electronics, Inc." }, + { 0x0004DA, "Relax Technology, Inc." }, + { 0x0004DB, "Tellus Group Corp." }, + { 0x0004DC, "Nortel Networks" }, + { 0x0004DD, "Cisco Systems, Inc." }, + { 0x0004DE, "Cisco Systems, Inc." }, + { 0x0004DF, "Teracom Telematica Ltda." }, + { 0x0004E0, "Procket Networks" }, + { 0x0004E1, "Infinior Microsystems" }, + { 0x0004E2, "SMC Networks, Inc." }, + { 0x0004E3, "Accton Technology Corp." }, + { 0x0004E4, "Daeryung Ind., Inc." }, + { 0x0004E5, "Glonet Systems, Inc." }, + { 0x0004E6, "Banyan Network Private Limited" }, + { 0x0004E7, "Lightpointe Communications, Inc" }, + { 0x0004E8, "IER, Inc." }, + { 0x0004E9, "Infiniswitch Corporation" }, + { 0x0004EA, "Hewlett-Packard Company" }, + { 0x0004EB, "Paxonet Communications, Inc." }, + { 0x0004EC, "Memobox SA" }, + { 0x0004ED, "Billion Electric Co., Ltd." }, + { 0x0004EE, "Lincoln Electric Company" }, + { 0x0004EF, "Polestar Corp." }, + { 0x0004F0, "International Computers, Ltd" }, + { 0x0004F1, "WhereNet" }, + { 0x0004F2, "Circa Communications, Ltd." }, + { 0x0004F3, "FS FORTH-SYSTEME GmbH" }, + { 0x0004F4, "Infinite Electronics Inc." }, + { 0x0004F5, "SnowShore Networks, Inc." }, + { 0x0004F6, "Amphus" }, + { 0x0004F7, "Omega Band, Inc." }, + { 0x0004F8, "QUALICABLE TV Industria E Com., Ltda" }, + { 0x0004F9, "Xtera Communications, Inc." }, + { 0x0004FA, "MIST Inc." }, + { 0x0004FB, "Commtech, Inc." }, + { 0x0004FC, "Stratus Computer (DE), Inc." }, + { 0x0004FD, "Japan Control Engineering Co., Ltd." }, + { 0x0004FE, "Pelago Networks" }, + { 0x0004FF, "Acronet Co., Ltd." }, + { 0x000500, "Cisco Systems, Inc." }, + { 0x000501, "Cisco Systems, Inc." }, + { 0x000502, "APPLE COMPUTER" }, + { 0x000503, "ICONAG" }, + { 0x000504, "Naray Information & Communication Enterprise" }, + { 0x000505, "Systems Integration Solutions, Inc." }, + { 0x000506, "Reddo Networks AB" }, + { 0x000507, "Fine Appliance Corp." }, + { 0x000508, "Inetcam, Inc." }, + { 0x000509, "AVOC Nishimura Ltd." }, + { 0x00050A, "ICS Spa" }, + { 0x00050B, "SICOM Systems, Inc." }, + { 0x00050C, "Network Photonics, Inc." }, + { 0x00050D, "Midstream Technologies, Inc." }, + { 0x00050E, "3ware, Inc." }, + { 0x00050F, "Tanaka S/S Ltd." }, + { 0x000510, "Infinite Shanghai Communication Terminals Ltd." }, + { 0x000511, "Complementaty Technologies Ltd" }, + { 0x000512, "MeshNetworks, Inc." }, + { 0x000513, "VTLinx Multimedia Systems, Inc." }, + { 0x000514, "KDT Systems Co., Ltd." }, + { 0x000515, "Nuark Co., Ltd." }, + { 0x000516, "SMART Modular Technologies" }, + { 0x000517, "Shellcomm, Inc." }, + { 0x000518, "Jupiters Technology" }, + { 0x000519, "Siemens Building Technologies AG," }, + { 0x00051A, "3Com Europe Ltd." }, + { 0x00051B, "Magic Control Technology Corporation" }, + { 0x00051C, "Xnet Technology Corp." }, + { 0x00051D, "Airocon, Inc." }, + { 0x00051E, "Rhapsody Networks" }, + { 0x00051F, "Taijin Media Co., Ltd." }, + { 0x000520, "Smartronix, Inc." }, + { 0x000521, "Control Microsystems" }, + { 0x000522, "LEA*D Corporation, Inc." }, + { 0x000523, "AVL List GmbH" }, + { 0x000524, "BTL System (HK) Limited" }, + { 0x000525, "Puretek Industrial Co., Ltd." }, + { 0x000526, "IPAS GmbH" }, + { 0x000527, "SJ Tek Co. Ltd" }, + { 0x000528, "New Focus, Inc." }, + { 0x000529, "Shanghai Broadan Communication Technology Co., Ltd" }, + { 0x00052A, "Ikegami Tsushinki Co., Ltd." }, + { 0x00052B, "HORIBA, Ltd." }, + { 0x00052C, "Supreme Magic Corporation" }, + { 0x00052D, "Zoltrix International Limited" }, + { 0x00052E, "Cinta Networks" }, + { 0x00052F, "Leviton Voice and Data" }, + { 0x000530, "Andiamo Systems, Inc." }, + { 0x000531, "Cisco Systems, Inc." }, + { 0x000532, "Cisco Systems, Inc." }, + { 0x000533, "Sanera Systems, Inc." }, + { 0x000534, "Northstar Engineering Ltd." }, + { 0x000535, "Chip PC Ltd." }, + { 0x000536, "Danam Communications, Inc." }, + { 0x000537, "Nets Technology Co., Ltd." }, + { 0x000538, "Merilus, Inc." }, + { 0x000539, "A Brand New World in Sweden AB" }, + { 0x00053A, "Willowglen Services Pte Ltd" }, + { 0x00053B, "Harbour Networks Ltd., Co. Beijing" }, + { 0x00053C, "Xircom" }, + { 0x00053D, "Agere Systems" }, + { 0x00053E, "KID Systeme GmbH" }, + { 0x00053F, "VisionT... [truncated message content] |
From: SVN U. <ben...@li...> - 2002-10-20 19:59:10
|
Author: bencollins Date: 2002-10-20 15:59:07 -0400 (Sun, 20 Oct 2002) New Revision: 627 Modified: trunk/nodemgr.c Log: s/Alloc/Total/ Modified: trunk/nodemgr.c ============================================================================== --- trunk/nodemgr.c (original) +++ trunk/nodemgr.c 2002-10-20 15:59:08.000000000 -0400 @@ -109,9 +109,9 @@ PUTF(" Capabilities: 0x%06x\n", ne->capabilities); PUTF(" Tlabel stats:\n"); spin_lock_irqsave(&ne->tpool->lock, flags); - PUTF(" Free : %d\n", atomic_read(&ne->tpool->count.count) + 1); - PUTF(" Alloc'd: %u\n", ne->tpool->allocations); - PUTF(" Mask : %016lx\n", ne->tpool->pool); + PUTF(" Free : %d\n", atomic_read(&ne->tpool->count.count) + 1); + PUTF(" Total : %u\n", ne->tpool->allocations); + PUTF(" Mask : %016lx\n", ne->tpool->pool); spin_unlock_irqrestore(&ne->tpool->lock, flags); PUTF(" Bus Options :\n"); PUTF(" IRMC(%d) CMC(%d) ISC(%d) BMC(%d) PMC(%d) GEN(%d)\n" |
From: SVN U. <ben...@li...> - 2002-10-20 15:52:47
|
Author: bencollins Date: 2002-10-20 11:52:44 -0400 (Sun, 20 Oct 2002) New Revision: 626 Modified: trunk/ieee1394_transactions.c trunk/ieee1394_types.h trunk/nodemgr.c Log: Add a "total allocations" member to the tpool struct. Maybe we should have a "packet stats" config option. Modified: trunk/ieee1394_transactions.c ============================================================================== --- trunk/ieee1394_transactions.c (original) +++ trunk/ieee1394_transactions.c 2002-10-20 11:52:45.000000000 -0400 @@ -139,7 +139,7 @@ tp->next = (packet->tlabel + 1) % 64; /* Should _never_ happen */ BUG_ON(test_and_set_bit(packet->tlabel, &tp->pool)); - + tp->allocations++; spin_unlock_irqrestore(&tp->lock, flags); return 0; Modified: trunk/nodemgr.c ============================================================================== --- trunk/nodemgr.c (original) +++ trunk/nodemgr.c 2002-10-20 11:52:45.000000000 -0400 @@ -87,6 +87,7 @@ struct node_entry *ne; int len; char *out = page; + unsigned long flags; if (down_interruptible(&nodemgr_serialize)) return -EINTR; @@ -106,7 +107,12 @@ PUTF(" Vendor ID : `%s' [0x%06x]\n", ne->vendor_name ?: "Unknown", ne->vendor_id); PUTF(" Capabilities: 0x%06x\n", ne->capabilities); - PUTF(" Free tlabels: %d\n", atomic_read(&ne->tpool->count.count) + 1); + PUTF(" Tlabel stats:\n"); + spin_lock_irqsave(&ne->tpool->lock, flags); + PUTF(" Free : %d\n", atomic_read(&ne->tpool->count.count) + 1); + PUTF(" Alloc'd: %u\n", ne->tpool->allocations); + PUTF(" Mask : %016lx\n", ne->tpool->pool); + spin_unlock_irqrestore(&ne->tpool->lock, flags); PUTF(" Bus Options :\n"); PUTF(" IRMC(%d) CMC(%d) ISC(%d) BMC(%d) PMC(%d) GEN(%d)\n" " LSPD(%d) MAX_REC(%d) CYC_CLK_ACC(%d)\n", Modified: trunk/ieee1394_types.h ============================================================================== --- trunk/ieee1394_types.h (original) +++ trunk/ieee1394_types.h 2002-10-20 11:52:45.000000000 -0400 @@ -67,6 +67,7 @@ u64 pool; spinlock_t lock; u8 next; + u32 allocations; struct semaphore count; }; |
From: SVN U. <ben...@li...> - 2002-10-20 15:19:12
|
Author: bencollins Date: 2002-10-20 11:19:09 -0400 (Sun, 20 Oct 2002) New Revision: 625 Modified: trunk/sbp2.c Log: Duh, remove the static from the data quad since we aren't statically initializing it anymore. Modified: trunk/sbp2.c ============================================================================== --- trunk/sbp2.c (original) +++ trunk/sbp2.c 2002-10-20 11:19:10.000000000 -0400 @@ -1860,7 +1860,7 @@ static int sbp2_agent_reset(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, u32 flags) { struct hpsb_packet *packet; - static quadlet_t data; + quadlet_t data; SBP2_DEBUG("sbp2_agent_reset"); |
From: SVN U. <ben...@li...> - 2002-10-20 15:18:12
|
Author: bencollins Date: 2002-10-20 11:18:07 -0400 (Sun, 20 Oct 2002) New Revision: 624 Modified: trunk/sbp2.c Log: Fix initialization of a data quadlet_t. Noted by Stefan Richter. Modified: trunk/sbp2.c ============================================================================== --- trunk/sbp2.c (original) +++ trunk/sbp2.c 2002-10-20 11:18:08.000000000 -0400 @@ -1860,13 +1860,14 @@ static int sbp2_agent_reset(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, u32 flags) { struct hpsb_packet *packet; - static quadlet_t data = ntohl(SBP2_AGENT_RESET_DATA) - + static quadlet_t data; + SBP2_DEBUG("sbp2_agent_reset"); /* * Ok, let's write to the target's management agent register */ + data = ntohl(SBP2_AGENT_RESET_DATA); packet = sbp2util_allocate_write_packet(hi, scsi_id->ne, scsi_id->sbp2_command_block_agent_addr + SBP2_AGENT_RESET_OFFSET, |
From: SVN U. <ben...@li...> - 2002-10-20 06:46:46
|
Author: bencollins Date: 2002-10-20 02:46:43 -0400 (Sun, 20 Oct 2002) New Revision: 623 Modified: trunk/TODO trunk/ieee1394_core.c trunk/ieee1394_transactions.c trunk/ieee1394_transactions.h trunk/sbp2.c trunk/sbp2.h Log: Last two fill_* functions are now static to ieee1394_transactions.c. This was somewhat of a major change to sbp2. No longer is there a packet pool. I suspect that since we allocate packets out of a kmemcache anyway, this wont be a performance hit. It seems faster for me anyway. Modified: trunk/ieee1394_core.c ============================================================================== --- trunk/ieee1394_core.c (original) +++ trunk/ieee1394_core.c 2002-10-20 02:46:44.000000000 -0400 @@ -1223,8 +1223,6 @@ /** ieee1394_transactions.c **/ EXPORT_SYMBOL(hpsb_get_tlabel); EXPORT_SYMBOL(hpsb_free_tlabel); -EXPORT_SYMBOL(fill_async_writequad); -EXPORT_SYMBOL(fill_async_writeblock); EXPORT_SYMBOL(hpsb_make_readpacket); EXPORT_SYMBOL(hpsb_make_lockpacket); EXPORT_SYMBOL(hpsb_make_lock64packet); Modified: trunk/ieee1394_transactions.c ============================================================================== --- trunk/ieee1394_transactions.c (original) +++ trunk/ieee1394_transactions.c 2002-10-20 02:46:44.000000000 -0400 @@ -47,7 +47,7 @@ packet->expect_response = 1; } -void fill_async_writequad(struct hpsb_packet *packet, u64 addr, quadlet_t data) +static void fill_async_writequad(struct hpsb_packet *packet, u64 addr, quadlet_t data) { PREP_ASYNC_HEAD_ADDRESS(TCODE_WRITEQ); packet->header[3] = data; @@ -56,7 +56,7 @@ packet->expect_response = 1; } -void fill_async_writeblock(struct hpsb_packet *packet, u64 addr, int length) +static void fill_async_writeblock(struct hpsb_packet *packet, u64 addr, int length) { PREP_ASYNC_HEAD_ADDRESS(TCODE_WRITEB); packet->header[3] = length << 16; Modified: trunk/ieee1394_transactions.h ============================================================================== --- trunk/ieee1394_transactions.h (original) +++ trunk/ieee1394_transactions.h 2002-10-20 02:46:44.000000000 -0400 @@ -5,12 +5,6 @@ /* - * Utility functions to fill out packet headers. - */ -void fill_async_writequad(struct hpsb_packet *packet, u64 addr, quadlet_t data); -void fill_async_writeblock(struct hpsb_packet *packet, u64 addr, int length); - -/* * Get and free transaction labels. */ int hpsb_get_tlabel(struct hpsb_packet *packet, int wait); Modified: trunk/sbp2.c ============================================================================== --- trunk/sbp2.c (original) +++ trunk/sbp2.c 2002-10-20 02:46:44.000000000 -0400 @@ -661,91 +661,11 @@ return ((i > 0) ? 0:1); } -/* - * This function is called to initially create a packet pool for use in - * sbp2 I/O requests. This packet pool is used when sending out sbp2 - * command and agent reset requests, and allows us to remove all - * kmallocs/kfrees from the critical I/O paths. - */ -static int sbp2util_create_request_packet_pool(struct sbp2scsi_host_info *hi) +/* Free's an allocated packet */ +static void sbp2_free_packet(struct hpsb_packet *packet) { - struct hpsb_packet *packet; - int i; - - hi->request_packet = kmalloc(sizeof(struct sbp2_request_packet) * SBP2_MAX_REQUEST_PACKETS, - GFP_KERNEL); - - if (!hi->request_packet) { - SBP2_ERR("sbp2util_create_request_packet_pool - packet allocation failed!"); - return(-ENOMEM); - } - memset(hi->request_packet, 0, sizeof(struct sbp2_request_packet) * SBP2_MAX_REQUEST_PACKETS); - - /* - * Create a pool of request packets. Just take the max supported - * concurrent commands and multiply by two to be safe... - */ - for (i=0; i<SBP2_MAX_REQUEST_PACKETS; i++) { - - /* - * Max payload of 8 bytes since the sbp2 command request - * uses a payload of 8 bytes, and agent reset is a quadlet - * write request. Bump this up if we plan on using this - * pool for other stuff. - */ - packet = alloc_hpsb_packet(8); - - if (!packet) { - SBP2_ERR("sbp2util_create_request_packet_pool - packet allocation failed!"); - return(-ENOMEM); - } - - /* - * Put these request packets into a free list - */ - INIT_LIST_HEAD(&hi->request_packet[i].list); - hi->request_packet[i].packet = packet; - - list_add_tail(&hi->request_packet[i].list, &hi->sbp2_req_free); - - } - - return(0); -} - -/* - * This function is called to remove the packet pool. It is called when - * the sbp2 driver is unloaded. - */ -static void sbp2util_remove_request_packet_pool(struct sbp2scsi_host_info *hi) -{ - struct list_head *lh; - struct sbp2_request_packet *request_packet; - unsigned long flags; - - /* - * Go through free list releasing packets - */ - sbp2_spin_lock(&hi->sbp2_request_packet_lock, flags); - while (!list_empty(&hi->sbp2_req_free)) { - - lh = hi->sbp2_req_free.next; - list_del(lh); - - request_packet = list_entry(lh, struct sbp2_request_packet, list); - - /* - * Free the hpsb packets that we allocated for the pool - */ - if (request_packet) { - free_hpsb_packet(request_packet->packet); - } - - } - kfree(hi->request_packet); - sbp2_spin_unlock(&hi->sbp2_request_packet_lock, flags); - - return; + hpsb_free_tlabel(packet); + free_hpsb_packet(packet); } /* @@ -755,93 +675,28 @@ * out a free request packet and re-initialize values in it. I'm sure this * can still stand some more optimization. */ -static struct sbp2_request_packet * -sbp2util_allocate_write_request_packet(struct sbp2scsi_host_info *hi, - struct node_entry *ne, u64 addr, - size_t data_size, - quadlet_t data) { - struct list_head *lh; - struct sbp2_request_packet *request_packet = NULL; +static struct hpsb_packet * +sbp2util_allocate_write_packet(struct sbp2scsi_host_info *hi, + struct node_entry *ne, u64 addr, + size_t data_size, + quadlet_t *data) +{ struct hpsb_packet *packet; - unsigned long flags; - - sbp2_spin_lock(&hi->sbp2_request_packet_lock, flags); - if (!list_empty(&hi->sbp2_req_free)) { - - /* - * Pull out a free request packet - */ - lh = hi->sbp2_req_free.next; - list_del(lh); - - request_packet = list_entry(lh, struct sbp2_request_packet, list); - packet = request_packet->packet; - /* - * Initialize the packet (this is really initialization - * the core 1394 stack should do, but I'm doing it myself - * to avoid the overhead). - */ - packet->data_size = data_size; - INIT_LIST_HEAD(&packet->list); - sema_init(&packet->state_change, 0); - packet->state = hpsb_unused; - packet->data_be = 1; - - hpsb_node_fill_packet(ne, packet); + packet = hpsb_make_writepacket(hi->host, ne->nodeid, + addr, data, data_size); - if (hpsb_get_tlabel(packet, 0)) { - list_add_tail(&request_packet->list, &hi->sbp2_req_free); - SBP2_ERR("sbp2util_allocate_request_packet - no tlabels available!"); - sbp2_spin_unlock(&hi->sbp2_request_packet_lock, flags); - return NULL; - } + if (!packet) + return NULL; - if (!data_size) { - fill_async_writequad(packet, addr, data); - } else { - fill_async_writeblock(packet, addr, data_size); - } + hpsb_set_packet_complete_task(packet, (void (*)(void*))sbp2_free_packet, + packet); - request_packet->hi_context = hi; + hpsb_node_fill_packet(ne, packet); - /* Calls the packet completion to return this to the free list */ - hpsb_set_packet_complete_task(packet, (void (*)(void*))sbp2util_free_request_packet, - request_packet); - - /* - * Now, put the packet on the in-use list. - */ - list_add_tail(&request_packet->list, &hi->sbp2_req_inuse); - - } else { - SBP2_ERR("sbp2util_allocate_request_packet - no packets available!"); - } - sbp2_spin_unlock(&hi->sbp2_request_packet_lock, flags); - - return(request_packet); + return packet; } -/* - * This function is called to return a packet to our packet pool. It is - * also called as a completion routine when a request packet is completed. - */ -static void sbp2util_free_request_packet(struct sbp2_request_packet *request_packet) -{ - unsigned long flags; - struct sbp2scsi_host_info *hi = request_packet->hi_context; - - /* - * Free the tlabel, and return the packet to the free pool. - */ - sbp2_spin_lock(&hi->sbp2_request_packet_lock, flags); - hpsb_free_tlabel(request_packet->packet); - list_del(&request_packet->list); - list_add_tail(&request_packet->list, &hi->sbp2_req_free); - sbp2_spin_unlock(&hi->sbp2_request_packet_lock, flags); - - return; -} /* * This function is called to create a pool of command orbs used for @@ -1189,17 +1044,8 @@ /* Initialize some host stuff */ memset(hi, 0, sizeof(struct sbp2scsi_host_info)); INIT_LIST_HEAD(&hi->list); - INIT_LIST_HEAD(&hi->sbp2_req_inuse); - INIT_LIST_HEAD(&hi->sbp2_req_free); hi->host = host; hi->sbp2_command_lock = SPIN_LOCK_UNLOCKED; - hi->sbp2_request_packet_lock = SPIN_LOCK_UNLOCKED; - - /* Create our request packet pool (pool of packets for use in I/O) */ - if (sbp2util_create_request_packet_pool(hi)) { - SBP2_ERR("sbp2util_create_request_packet_pool failed!"); - return; - } sbp2_spin_lock(&sbp2_host_info_lock, flags); list_add_tail(&hi->list, &sbp2_host_info_list); @@ -1266,7 +1112,6 @@ hi = sbp2_find_host_info(host); if (hi != NULL) { - sbp2util_remove_request_packet_pool(hi); list_del(&hi->list); kfree(hi); } @@ -2014,33 +1859,33 @@ */ static int sbp2_agent_reset(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, u32 flags) { - struct sbp2_request_packet *agent_reset_request_packet; + struct hpsb_packet *packet; + static quadlet_t data = ntohl(SBP2_AGENT_RESET_DATA) SBP2_DEBUG("sbp2_agent_reset"); /* * Ok, let's write to the target's management agent register */ - agent_reset_request_packet = - sbp2util_allocate_write_request_packet(hi, scsi_id->ne, - scsi_id->sbp2_command_block_agent_addr + - SBP2_AGENT_RESET_OFFSET, - 0, ntohl(SBP2_AGENT_RESET_DATA)); + packet = sbp2util_allocate_write_packet(hi, scsi_id->ne, + scsi_id->sbp2_command_block_agent_addr + + SBP2_AGENT_RESET_OFFSET, + 4, &data); - if (!agent_reset_request_packet) { - SBP2_ERR("sbp2util_allocate_write_request_packet failed"); - return(-EIO); + if (!packet) { + SBP2_ERR("sbp2util_allocate_write_packet failed"); + return(-ENOMEM); } - if (!hpsb_send_packet(agent_reset_request_packet->packet)) { + if (!hpsb_send_packet(packet)) { SBP2_ERR("hpsb_send_packet failed"); - sbp2util_free_request_packet(agent_reset_request_packet); + sbp2_free_packet(packet); return(-EIO); } if (!(flags & SBP2_SEND_NO_WAIT)) { - down(&agent_reset_request_packet->packet->state_change); - down(&agent_reset_request_packet->packet->state_change); + down(&packet->state_change); + down(&packet->state_change); } /* @@ -2049,7 +1894,6 @@ scsi_id->last_orb = NULL; return(0); - } /* @@ -2310,7 +2154,7 @@ static int sbp2_link_orb_command(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, struct sbp2_command_info *command) { - struct sbp2_request_packet *command_request_packet; + struct hpsb_packet *packet; struct sbp2_command_orb *command_orb = &command->command_orb; outstanding_orb_incr; @@ -2333,25 +2177,24 @@ */ if (hpsb_node_entry_valid(scsi_id->ne)) { - command_request_packet = - sbp2util_allocate_write_request_packet(hi, scsi_id->ne, + packet = sbp2util_allocate_write_packet(hi, scsi_id->ne, scsi_id->sbp2_command_block_agent_addr + - SBP2_ORB_POINTER_OFFSET, 8, 0); + SBP2_ORB_POINTER_OFFSET, 8, NULL); - if (!command_request_packet) { - SBP2_ERR("sbp2util_allocate_write_request_packet failed"); - return(-EIO); + if (!packet) { + SBP2_ERR("sbp2util_allocate_write_packet failed"); + return(-ENOMEM); } - command_request_packet->packet->data[0] = ORB_SET_NODE_ID(hi->host->node_id); - command_request_packet->packet->data[1] = command->command_orb_dma; - sbp2util_cpu_to_be32_buffer(command_request_packet->packet->data, 8); + packet->data[0] = ORB_SET_NODE_ID(hi->host->node_id); + packet->data[1] = command->command_orb_dma; + sbp2util_cpu_to_be32_buffer(packet->data, 8); SBP2_ORB_DEBUG("write command agent, command orb %p", command_orb); - if (!hpsb_send_packet(command_request_packet->packet)) { + if (!hpsb_send_packet(packet)) { SBP2_ERR("hpsb_send_packet failed"); - sbp2util_free_request_packet(command_request_packet); + sbp2_free_packet(packet); return(-EIO); } @@ -2382,22 +2225,22 @@ * Ring the doorbell */ if (hpsb_node_entry_valid(scsi_id->ne)) { + quadlet_t data = cpu_to_be32(command->command_orb_dma); - command_request_packet = sbp2util_allocate_write_request_packet(hi, - scsi_id->ne, - scsi_id->sbp2_command_block_agent_addr + SBP2_DOORBELL_OFFSET, - 0, cpu_to_be32(command->command_orb_dma)); + packet = sbp2util_allocate_write_packet(hi, scsi_id->ne, + scsi_id->sbp2_command_block_agent_addr + + SBP2_DOORBELL_OFFSET, 4, &data); - if (!command_request_packet) { - SBP2_ERR("sbp2util_allocate_write_request_packet failed"); - return(-EIO); + if (!packet) { + SBP2_ERR("sbp2util_allocate_write_packet failed"); + return(-ENOMEM); } SBP2_ORB_DEBUG("ring doorbell, command orb %p", command_orb); - if (!hpsb_send_packet(command_request_packet->packet)) { + if (!hpsb_send_packet(packet)) { SBP2_ERR("hpsb_send_packet failed"); - sbp2util_free_request_packet(command_request_packet); + sbp2_free_packet(packet); return(-EIO); } } Modified: trunk/sbp2.h ============================================================================== --- trunk/sbp2.h (original) +++ trunk/sbp2.h 2002-10-20 02:46:44.000000000 -0400 @@ -317,17 +317,6 @@ #define SBP2_MAX_REQUEST_PACKETS (sbp2_max_outstanding_cmds * 2) #define SBP2_MAX_COMMAND_ORBS (sbp2_max_cmds_per_lun * 2) -/* - * Request packets structure (used for sending command and agent reset packets) - */ -struct sbp2_request_packet { - - struct list_head list; - struct hpsb_packet *packet; - void *hi_context; - -}; - /* This is the two dma types we use for cmd_dma below */ #define CMD_DMA_NONE 0x0 @@ -432,10 +421,9 @@ struct hpsb_host *host; /* - * Spin locks for command processing and packet pool management + * Spin locks for command processing */ spinlock_t sbp2_command_lock; - spinlock_t sbp2_request_packet_lock; /* * This is the scsi host we register with the scsi mid level. @@ -445,21 +433,6 @@ struct Scsi_Host *scsi_host; /* - * Lists keeping track of inuse/free sbp2_request_packets. These structures are - * used for sending out sbp2 command and agent reset packets. We initially create - * a pool of request packets so that we don't have to do any kmallocs while in critical - * I/O paths. - */ - struct list_head sbp2_req_inuse; - struct list_head sbp2_req_free; - - /* - * Here is the pool of request packets. All the hpsb packets (for 1394 bus transactions) - * are allocated at init and simply re-initialized when needed. - */ - struct sbp2_request_packet *request_packet; - - /* * SCSI ID instance data (one for each sbp2 device instance possible) */ struct scsi_id_instance_data *scsi_id[SBP2SCSI_MAX_SCSI_IDS]; @@ -473,13 +446,6 @@ /* * Various utility prototypes */ -static int sbp2util_create_request_packet_pool(struct sbp2scsi_host_info *hi); -static void sbp2util_remove_request_packet_pool(struct sbp2scsi_host_info *hi); -static struct sbp2_request_packet *sbp2util_allocate_write_request_packet(struct sbp2scsi_host_info *hi, - struct node_entry *ne, u64 addr, - size_t data_size, - quadlet_t data); -static void sbp2util_free_request_packet(struct sbp2_request_packet *request_packet); static int sbp2util_create_command_orb_pool(struct scsi_id_instance_data *scsi_id, struct sbp2scsi_host_info *hi); static void sbp2util_remove_command_orb_pool(struct scsi_id_instance_data *scsi_id, struct sbp2scsi_host_info *hi); static struct sbp2_command_info *sbp2util_find_command_for_orb(struct scsi_id_instance_data *scsi_id, dma_addr_t orb); Modified: trunk/TODO ============================================================================== --- trunk/TODO (original) +++ trunk/TODO 2002-10-20 02:46:44.000000000 -0400 @@ -1,3 +1 @@ - Cleanup headers. Things really need to be reorged. -- Label function groups exported in ieee1384_core.c as to which file each - group comes from. |
From: SVN U. <ben...@li...> - 2002-10-20 05:59:36
|
Author: bencollins Date: 2002-10-20 01:59:30 -0400 (Sun, 20 Oct 2002) New Revision: 622 Modified: trunk/ieee1394_core.c trunk/ieee1394_transactions.c trunk/ieee1394_transactions.h trunk/raw1394.c Log: Consolidate hpsb_make_readqpacket and hpsb_make_readbpacket into one single hpsb_make_readpacket. Do the same for hpsb_make_write{b,q}packet (it was already done, but I removed the other two functions. Remove the defines for hpsb_make_write{b,q}packet and hpsb_make_read{b,q}packet. Move all the fill_*_resp() functions to ieee1394_core.c since that's the only place where they were used. Made them static, and removed exporting them. Made all but fill_async_writequad and fill_async_writeblock static in ieee1394_transactions.c (of the fill_* functions), and removed them exporting of them aswell. SBP-2 is the only place where fill_async_writequad and fill_async_writeblock is used. Fix for that is forthcoming. Modified: trunk/ieee1394_core.c ============================================================================== --- trunk/ieee1394_core.c (original) +++ trunk/ieee1394_core.c 2002-10-20 01:59:31.000000000 -0400 @@ -651,6 +651,54 @@ return p; } +#define PREP_ASYNC_HEAD_RCODE(tc) \ + packet->tcode = tc; \ + packet->header[0] = (packet->node_id << 16) | (packet->tlabel << 10) \ + | (1 << 8) | (tc << 4); \ + packet->header[1] = (packet->host->node_id << 16) | (rcode << 12); \ + packet->header[2] = 0 + +static void fill_async_readquad_resp(struct hpsb_packet *packet, int rcode, + quadlet_t data) +{ + PREP_ASYNC_HEAD_RCODE(TCODE_READQ_RESPONSE); + packet->header[3] = data; + packet->header_size = 16; + packet->data_size = 0; +} + +static void fill_async_readblock_resp(struct hpsb_packet *packet, int rcode, + int length) +{ + if (rcode != RCODE_COMPLETE) + length = 0; + + PREP_ASYNC_HEAD_RCODE(TCODE_READB_RESPONSE); + packet->header[3] = length << 16; + packet->header_size = 16; + packet->data_size = length + (length % 4 ? 4 - (length % 4) : 0); +} + +static void fill_async_write_resp(struct hpsb_packet *packet, int rcode) +{ + PREP_ASYNC_HEAD_RCODE(TCODE_WRITE_RESPONSE); + packet->header[2] = 0; + packet->header_size = 12; + packet->data_size = 0; +} + +static void fill_async_lock_resp(struct hpsb_packet *packet, int rcode, int extcode, + int length) +{ + if (rcode != RCODE_COMPLETE) + length = 0; + + PREP_ASYNC_HEAD_RCODE(TCODE_LOCK_RESPONSE); + packet->header[3] = (length << 16) | extcode; + packet->header_size = 16; + packet->data_size = length; +} + #define PREP_REPLY_PACKET(length) \ packet = create_reply_packet(host, data, length); \ if (packet == NULL) break @@ -1175,26 +1223,15 @@ /** ieee1394_transactions.c **/ EXPORT_SYMBOL(hpsb_get_tlabel); EXPORT_SYMBOL(hpsb_free_tlabel); -EXPORT_SYMBOL(fill_async_readquad); -EXPORT_SYMBOL(fill_async_readquad_resp); -EXPORT_SYMBOL(fill_async_readblock); -EXPORT_SYMBOL(fill_async_readblock_resp); EXPORT_SYMBOL(fill_async_writequad); EXPORT_SYMBOL(fill_async_writeblock); -EXPORT_SYMBOL(fill_async_write_resp); -EXPORT_SYMBOL(fill_async_lock); -EXPORT_SYMBOL(fill_async_lock_resp); -EXPORT_SYMBOL(fill_iso_packet); -EXPORT_SYMBOL(fill_phy_packet); -EXPORT_SYMBOL(hpsb_make_readqpacket); -EXPORT_SYMBOL(hpsb_make_readbpacket); -EXPORT_SYMBOL(hpsb_make_writeqpacket); -EXPORT_SYMBOL(hpsb_make_writebpacket); +EXPORT_SYMBOL(hpsb_make_readpacket); EXPORT_SYMBOL(hpsb_make_lockpacket); EXPORT_SYMBOL(hpsb_make_lock64packet); EXPORT_SYMBOL(hpsb_make_phypacket); +EXPORT_SYMBOL(hpsb_make_isopacket); EXPORT_SYMBOL(hpsb_packet_success); -EXPORT_SYMBOL(hpsb_make_packet); +EXPORT_SYMBOL(hpsb_make_writepacket); EXPORT_SYMBOL(hpsb_read); EXPORT_SYMBOL(hpsb_write); EXPORT_SYMBOL(hpsb_lock); Modified: trunk/raw1394.c ============================================================================== --- trunk/raw1394.c (original) +++ trunk/raw1394.c 2002-10-20 01:59:31.000000000 -0400 @@ -641,45 +641,30 @@ switch (req->req.type) { case RAW1394_REQ_ASYNC_READ: - if (req->req.length == 4) { - DBGMSG("quadlet_read_request called"); - packet = hpsb_make_readqpacket(fi->host, node, addr); - if (!packet) return -ENOMEM; + DBGMSG("read_request called"); + packet = hpsb_make_readpacket(fi->host, node, addr, req->req.length); - req->data = &packet->header[3]; - } else { - DBGMSG("block_read_request called"); - packet = hpsb_make_readbpacket(fi->host, node, addr, - req->req.length); - if (!packet) return -ENOMEM; + if (!packet) + return -ENOMEM; - req->data = packet->data; - } + if (req->req.length == 4) + req->data = &packet->header[3]; + else + req->data = packet->data; + break; case RAW1394_REQ_ASYNC_WRITE: - if (req->req.length == 4) { - quadlet_t x; - - DBGMSG("quadlet_write_request called"); - if (copy_from_user(&x, int2ptr(req->req.sendb), 4)) { - req->req.error = RAW1394_ERROR_MEMFAULT; - } + DBGMSG("write_request called"); + packet = hpsb_make_writepacket(fi->host, node, addr, NULL, + req->req.length); + if (!packet) + return -ENOMEM; + + if (copy_from_user(packet->data, int2ptr(req->req.sendb), + req->req.length)) + req->req.error = RAW1394_ERROR_MEMFAULT; - packet = hpsb_make_writeqpacket(fi->host, node, addr, - x); - if (!packet) return -ENOMEM; - } else { - DBGMSG("block_write_request called"); - packet = hpsb_make_writebpacket(fi->host, node, addr, - req->req.length); - if (!packet) return -ENOMEM; - - if (copy_from_user(packet->data, int2ptr(req->req.sendb), - req->req.length)) { - req->req.error = RAW1394_ERROR_MEMFAULT; - } - } req->req.length = 0; break; @@ -774,15 +759,14 @@ { struct hpsb_packet *packet; - packet = alloc_hpsb_packet(req->req.length); - if (!packet) return -ENOMEM; - req->packet = packet; + packet = hpsb_make_isopacket(fi->host, req->req.length, channel & 0x3f, + (req->req.misc >> 16) & 0x3, req->req.misc & 0xf); + if (!packet) + return -ENOMEM; - fill_iso_packet(packet, req->req.length, channel & 0x3f, - (req->req.misc >> 16) & 0x3, req->req.misc & 0xf); - packet->type = hpsb_iso; packet->speed_code = req->req.address & 0x3; - packet->host = fi->host; + + req->packet = packet; if (copy_from_user(packet->data, int2ptr(req->req.sendb), req->req.length)) { Modified: trunk/ieee1394_transactions.c ============================================================================== --- trunk/ieee1394_transactions.c (original) +++ trunk/ieee1394_transactions.c 2002-10-20 01:59:31.000000000 -0400 @@ -29,15 +29,8 @@ packet->header[1] = (packet->host->node_id << 16) | (addr >> 32); \ packet->header[2] = addr & 0xffffffff -#define PREP_ASYNC_HEAD_RCODE(tc) \ - packet->tcode = tc; \ - packet->header[0] = (packet->node_id << 16) | (packet->tlabel << 10) \ - | (1 << 8) | (tc << 4); \ - packet->header[1] = (packet->host->node_id << 16) | (rcode << 12); \ - packet->header[2] = 0 - -void fill_async_readquad(struct hpsb_packet *packet, u64 addr) +static void fill_async_readquad(struct hpsb_packet *packet, u64 addr) { PREP_ASYNC_HEAD_ADDRESS(TCODE_READQ); packet->header_size = 12; @@ -45,16 +38,7 @@ packet->expect_response = 1; } -void fill_async_readquad_resp(struct hpsb_packet *packet, int rcode, - quadlet_t data) -{ - PREP_ASYNC_HEAD_RCODE(TCODE_READQ_RESPONSE); - packet->header[3] = data; - packet->header_size = 16; - packet->data_size = 0; -} - -void fill_async_readblock(struct hpsb_packet *packet, u64 addr, int length) +static void fill_async_readblock(struct hpsb_packet *packet, u64 addr, int length) { PREP_ASYNC_HEAD_ADDRESS(TCODE_READB); packet->header[3] = length << 16; @@ -63,19 +47,6 @@ packet->expect_response = 1; } -void fill_async_readblock_resp(struct hpsb_packet *packet, int rcode, - int length) -{ - if (rcode != RCODE_COMPLETE) { - length = 0; - } - - PREP_ASYNC_HEAD_RCODE(TCODE_READB_RESPONSE); - packet->header[3] = length << 16; - packet->header_size = 16; - packet->data_size = length + (length % 4 ? 4 - (length % 4) : 0); -} - void fill_async_writequad(struct hpsb_packet *packet, u64 addr, quadlet_t data) { PREP_ASYNC_HEAD_ADDRESS(TCODE_WRITEQ); @@ -94,15 +65,7 @@ packet->data_size = length + (length % 4 ? 4 - (length % 4) : 0); } -void fill_async_write_resp(struct hpsb_packet *packet, int rcode) -{ - PREP_ASYNC_HEAD_RCODE(TCODE_WRITE_RESPONSE); - packet->header[2] = 0; - packet->header_size = 12; - packet->data_size = 0; -} - -void fill_async_lock(struct hpsb_packet *packet, u64 addr, int extcode, +static void fill_async_lock(struct hpsb_packet *packet, u64 addr, int extcode, int length) { PREP_ASYNC_HEAD_ADDRESS(TCODE_LOCK_REQUEST); @@ -112,20 +75,7 @@ packet->expect_response = 1; } -void fill_async_lock_resp(struct hpsb_packet *packet, int rcode, int extcode, - int length) -{ - if (rcode != RCODE_COMPLETE) { - length = 0; - } - - PREP_ASYNC_HEAD_RCODE(TCODE_LOCK_RESPONSE); - packet->header[3] = (length << 16) | extcode; - packet->header_size = 16; - packet->data_size = length; -} - -void fill_iso_packet(struct hpsb_packet *packet, int length, int channel, +static void fill_iso_packet(struct hpsb_packet *packet, int length, int channel, int tag, int sync) { packet->header[0] = (length << 16) | (tag << 14) | (channel << 8) @@ -137,7 +87,7 @@ packet->tcode = TCODE_ISO_DATA; } -void fill_phy_packet(struct hpsb_packet *packet, quadlet_t data) +static void fill_phy_packet(struct hpsb_packet *packet, quadlet_t data) { packet->header[0] = data; packet->header[1] = ~data; @@ -292,86 +242,70 @@ HPSB_PANIC("reached unreachable code 2 in %s", __FUNCTION__); } -struct hpsb_packet *hpsb_make_readqpacket(struct hpsb_host *host, nodeid_t node, - u64 addr) +struct hpsb_packet *hpsb_make_readpacket(struct hpsb_host *host, nodeid_t node, + u64 addr, size_t length) { - struct hpsb_packet *p; - - p = alloc_hpsb_packet(0); - if (!p) return NULL; + struct hpsb_packet *packet; - p->host = host; - p->node_id = node; - if (hpsb_get_tlabel(p, 1)) { - free_hpsb_packet(p); + if (length == 0) return NULL; - } - fill_async_readquad(p, addr); - return p; -} + if (length % 4) + length += 4 - (length % 4); -struct hpsb_packet *hpsb_make_readbpacket(struct hpsb_host *host, nodeid_t node, - u64 addr, size_t length) -{ - struct hpsb_packet *p; + packet = alloc_hpsb_packet(length); + if (!packet) + return NULL; - p = alloc_hpsb_packet(length + (length % 4 ? 4 - (length % 4) : 0)); - if (!p) return NULL; + packet->host = host; + packet->node_id = node; - p->host = host; - p->node_id = node; - if (hpsb_get_tlabel(p, 1)) { - free_hpsb_packet(p); + if (hpsb_get_tlabel(packet, in_interrupt() ? 0 : 1)) { + free_hpsb_packet(packet); return NULL; } - fill_async_readblock(p, addr, length); - return p; + if (length == 4) + fill_async_readquad(packet, addr); + else + fill_async_readblock(packet, addr, length); + + return packet; } -struct hpsb_packet *hpsb_make_writeqpacket(struct hpsb_host *host, - nodeid_t node, u64 addr, - quadlet_t data) +struct hpsb_packet *hpsb_make_writepacket (struct hpsb_host *host, nodeid_t node, + u64 addr, quadlet_t *buffer, size_t length) { - struct hpsb_packet *p; - - p = alloc_hpsb_packet(0); - if (!p) return NULL; + struct hpsb_packet *packet; - p->host = host; - p->node_id = node; - if (hpsb_get_tlabel(p, 1)) { - free_hpsb_packet(p); + if (length == 0) return NULL; - } - fill_async_writequad(p, addr, data); - return p; -} + if (length % 4) + length += 4 - (length % 4); -struct hpsb_packet *hpsb_make_writebpacket(struct hpsb_host *host, - nodeid_t node, u64 addr, - size_t length) -{ - struct hpsb_packet *p; - - p = alloc_hpsb_packet(length + (length % 4 ? 4 - (length % 4) : 0)); - if (!p) return NULL; + packet = alloc_hpsb_packet(length); + if (!packet) + return NULL; - if (length % 4) { - p->data[length / 4] = 0; - } + packet->data[length >> 2] = 0; + packet->host = host; + packet->node_id = node; - p->host = host; - p->node_id = node; - if (hpsb_get_tlabel(p, 1)) { - free_hpsb_packet(p); + if (hpsb_get_tlabel(packet, in_interrupt() ? 0 : 1)) { + free_hpsb_packet(packet); return NULL; } - fill_async_writeblock(p, addr, length); - return p; + if (length == 4) { + fill_async_writequad(packet, addr, buffer ? *buffer : 0); + } else { + fill_async_writeblock(packet, addr, length); + if (buffer) + memcpy(packet->data, buffer, length); + } + + return packet; } struct hpsb_packet *hpsb_make_lockpacket(struct hpsb_host *host, nodeid_t node, @@ -384,7 +318,7 @@ p->host = host; p->node_id = node; - if (hpsb_get_tlabel(p, 1)) { + if (hpsb_get_tlabel(p, in_interrupt() ? 0 : 1)) { free_hpsb_packet(p); return NULL; } @@ -412,7 +346,7 @@ p->host = host; p->node_id = node; - if (hpsb_get_tlabel(p, 1)) { + if (hpsb_get_tlabel(p, in_interrupt() ? 0 : 1)) { free_hpsb_packet(p); return NULL; } @@ -444,6 +378,23 @@ return p; } +struct hpsb_packet *hpsb_make_isopacket(struct hpsb_host *host, + int length, int channel, + int tag, int sync) +{ + struct hpsb_packet *p; + + p = alloc_hpsb_packet(length); + if (!p) return NULL; + + p->host = host; + fill_iso_packet(p, length, channel, tag, sync); + + p->generation = get_hpsb_generation(host); + + return p; +} + /* * FIXME - these functions should probably read from / write to user space to * avoid in kernel buffers for user space callers @@ -455,15 +406,12 @@ struct hpsb_packet *packet; int retval = 0; - if (length == 0) { + if (length == 0) return -EINVAL; - } - if (length == 4) { - packet = hpsb_make_readqpacket(host, node, addr); - } else { - packet = hpsb_make_readbpacket(host, node, addr, length); - } + BUG_ON(in_interrupt()); // We can't be called in an interrupt, yet + + packet = hpsb_make_readpacket(host, node, addr, length); if (!packet) { return -ENOMEM; @@ -494,29 +442,6 @@ return retval; } -struct hpsb_packet *hpsb_make_packet (struct hpsb_host *host, nodeid_t node, - u64 addr, quadlet_t *buffer, size_t length) -{ - struct hpsb_packet *packet; - - if (length == 0) - return NULL; - - if (length == 4) - packet = hpsb_make_writeqpacket(host, node, addr, *buffer); - else - packet = hpsb_make_writebpacket(host, node, addr, length); - - if (!packet) - return NULL; - - /* Sometimes this may be called without data, just to allocate the - * packet. */ - if (length != 4 && buffer) - memcpy(packet->data, buffer, length); - - return packet; -} int hpsb_write(struct hpsb_host *host, nodeid_t node, unsigned int generation, u64 addr, quadlet_t *buffer, size_t length) @@ -527,7 +452,9 @@ if (length == 0) return -EINVAL; - packet = hpsb_make_packet (host, node, addr, buffer, length); + BUG_ON(in_interrupt()); // We can't be called in an interrupt, yet + + packet = hpsb_make_writepacket (host, node, addr, buffer, length); if (!packet) return -ENOMEM; @@ -556,6 +483,8 @@ { struct hpsb_packet *packet; int retval = 0, length; + + BUG_ON(in_interrupt()); // We can't be called in an interrupt, yet packet = alloc_hpsb_packet(8); if (!packet) { Modified: trunk/ieee1394_transactions.h ============================================================================== --- trunk/ieee1394_transactions.h (original) +++ trunk/ieee1394_transactions.h 2002-10-20 01:59:31.000000000 -0400 @@ -7,22 +7,8 @@ /* * Utility functions to fill out packet headers. */ -void fill_async_readquad(struct hpsb_packet *packet, u64 addr); -void fill_async_readquad_resp(struct hpsb_packet *packet, int rcode, - quadlet_t data); -void fill_async_readblock(struct hpsb_packet *packet, u64 addr, int length); -void fill_async_readblock_resp(struct hpsb_packet *packet, int rcode, - int length); void fill_async_writequad(struct hpsb_packet *packet, u64 addr, quadlet_t data); void fill_async_writeblock(struct hpsb_packet *packet, u64 addr, int length); -void fill_async_write_resp(struct hpsb_packet *packet, int rcode); -void fill_async_lock(struct hpsb_packet *packet, u64 addr, int extcode, - int length); -void fill_async_lock_resp(struct hpsb_packet *packet, int rcode, int extcode, - int length); -void fill_iso_packet(struct hpsb_packet *packet, int length, int channel, - int tag, int sync); -void fill_phy_packet(struct hpsb_packet *packet, quadlet_t data); /* * Get and free transaction labels. @@ -30,23 +16,19 @@ int hpsb_get_tlabel(struct hpsb_packet *packet, int wait); void hpsb_free_tlabel(struct hpsb_packet *packet); -struct hpsb_packet *hpsb_make_readqpacket(struct hpsb_host *host, nodeid_t node, - u64 addr); -struct hpsb_packet *hpsb_make_readbpacket(struct hpsb_host *host, nodeid_t node, - u64 addr, size_t length); -struct hpsb_packet *hpsb_make_writeqpacket(struct hpsb_host *host, - nodeid_t node, u64 addr, - quadlet_t data); -struct hpsb_packet *hpsb_make_writebpacket(struct hpsb_host *host, - nodeid_t node, u64 addr, - size_t length); +struct hpsb_packet *hpsb_make_readpacket(struct hpsb_host *host, nodeid_t node, + u64 addr, size_t length); struct hpsb_packet *hpsb_make_lockpacket(struct hpsb_host *host, nodeid_t node, u64 addr, int extcode); struct hpsb_packet *hpsb_make_lock64packet(struct hpsb_host *host, nodeid_t node, u64 addr, int extcode); struct hpsb_packet *hpsb_make_phypacket(struct hpsb_host *host, quadlet_t data) ; - +struct hpsb_packet *hpsb_make_isopacket(struct hpsb_host *host, + int length, int channel, + int tag, int sync); +struct hpsb_packet *hpsb_make_writepacket (struct hpsb_host *host, nodeid_t node, + u64 addr, quadlet_t *buffer, size_t length); /* * hpsb_packet_success - Make sense of the ack and reply codes and @@ -76,9 +58,4 @@ int hpsb_lock(struct hpsb_host *host, nodeid_t node, unsigned int generation, u64 addr, int extcode, quadlet_t *data, quadlet_t arg); -/* Generic packet creation. Used by hpsb_write. Also useful for protocol - * drivers that want to implement their own hpsb_write replacement. */ -struct hpsb_packet *hpsb_make_packet (struct hpsb_host *host, nodeid_t node, - u64 addr, quadlet_t *buffer, size_t length); - #endif /* _IEEE1394_TRANSACTIONS_H */ |
From: SVN U. <ben...@li...> - 2002-10-20 02:56:57
|
Author: bencollins Date: 2002-10-19 22:56:51 -0400 (Sat, 19 Oct 2002) New Revision: 621 Modified: trunk/raw1394.c Log: Fix missing hpsb_set_packet_complete_task() for read request. Modified: trunk/raw1394.c ============================================================================== --- trunk/raw1394.c (original) +++ trunk/raw1394.c 2002-10-19 22:56:52.000000000 -0400 @@ -752,6 +752,7 @@ return sizeof(struct raw1394_request); } + hpsb_set_packet_complete_task(packet, (void(*)(void*))queue_complete_cb, req); spin_lock_irq(&fi->reqlists_lock); list_add_tail(&req->list, &fi->req_pending); |
From: SVN U. <ben...@li...> - 2002-10-20 01:43:01
|
Author: bencollins Date: 2002-10-19 21:42:59 -0400 (Sat, 19 Oct 2002) New Revision: 620 Modified: trunk/Config.in Log: Quick cleanup to that PCILYNX config.in change. If CONFIG_I2C isn't even defined, we just wont make PciLynx an option that one can see. This will avoid users trying to search down I2C support on architectures that don't have it available. Modified: trunk/Config.in ============================================================================== --- trunk/Config.in (original) +++ trunk/Config.in 2002-10-19 21:42:59.000000000 -0400 @@ -10,10 +10,12 @@ comment "Device Drivers" - if [ "$CONFIG_I2C" != "" -a "$CONFIG_I2C_ALGOBIT" != "" -e "$CONFIG_I2C" != "n" -a "$CONFIG_I2C_ALGOBIT" != "n" ]; then - dep_tristate ' Texas Instruments PCILynx support' CONFIG_IEEE1394_PCILYNX $CONFIG_IEEE1394 $CONFIG_I2C $CONFIG_I2C_ALGOBIT - else - comment ' Texas Instruments PCILynx requires I2C bit-banging' + if [ "$CONFIG_I2C" != "" -a "$CONFIG_I2C_ALGOBIT" != "" ]; then + if [ "$CONFIG_I2C" != "n" -a "$CONFIG_I2C_ALGOBIT" != "n" ]; then + dep_tristate ' Texas Instruments PCILynx support' CONFIG_IEEE1394_PCILYNX $CONFIG_IEEE1394 $CONFIG_I2C $CONFIG_I2C_ALGOBIT + else + comment ' Texas Instruments PCILynx requires I2C bit-banging' + fi fi # Non-maintained pcilynx options |
From: SVN U. <ben...@li...> - 2002-10-20 01:40:55
|
Author: bencollins Date: 2002-10-19 21:40:50 -0400 (Sat, 19 Oct 2002) New Revision: 619 Modified: trunk/Config.in trunk/hosts.c trunk/hosts.h trunk/ieee1394_core.h trunk/ieee1394_transactions.c trunk/nodemgr.c trunk/nodemgr.h Log: Move tlabel pools to the host struct. We just have one large array of 63 pools. No more nodemgr needed now. We still link the nodes tpool from the host into the node entry. In nodemgr.c, use atomic_read() instead of sem_getcount to show tlabel count. Config.in: Fixup logic for PCILYNX option needed I2C. On Sparc64, for example, CONFIG_I2C et al aren't defined, so they are actually "" values, which means that config was letting me build PCILYNX. Modified: trunk/ieee1394_core.h ============================================================================== --- trunk/ieee1394_core.h (original) +++ trunk/ieee1394_core.h 2002-10-19 21:40:51.000000000 -0400 @@ -38,9 +38,6 @@ char ack_code; char tcode; - /* A pointer to the tlabel pool we used for our tlabel */ - struct hpsb_tlabel_pool *tpool; - unsigned expect_response:1; unsigned no_waiter:1; Modified: trunk/ieee1394_transactions.c ============================================================================== --- trunk/ieee1394_transactions.c (original) +++ trunk/ieee1394_transactions.c 2002-10-19 21:40:51.000000000 -0400 @@ -163,7 +163,7 @@ * hpsb_free_tlabel() after the transaction is complete (unless it's reused again for * the same target node). * - * @wait is ignored if in_interrupt() + * @wait cannot be set if in_interrupt() * * Return value: Zero on success, otherwise non-zero. A non-zero return * generally means there are no available tlabels. @@ -172,16 +172,11 @@ { unsigned long flags; struct hpsb_tlabel_pool *tp; - struct node_entry *ne = hpsb_check_nodeid(packet->node_id); - BUG_ON(packet->tpool != NULL); + tp = &packet->host->tpool[packet->node_id & NODE_MASK]; - if (!ne) - tp = &packet->host->tpool; - else - tp = &ne->tpool; - - if (wait && !in_interrupt()) { + if (wait) { + BUG_ON(in_interrupt()); down(&tp->count); } else { if (down_trylock(&tp->count)) @@ -194,7 +189,6 @@ tp->next = (packet->tlabel + 1) % 64; /* Should _never_ happen */ BUG_ON(test_and_set_bit(packet->tlabel, &tp->pool)); - packet->tpool = tp; spin_unlock_irqrestore(&tp->lock, flags); @@ -215,14 +209,14 @@ void hpsb_free_tlabel(struct hpsb_packet *packet) { unsigned long flags; - struct hpsb_tlabel_pool *tp = packet->tpool; + struct hpsb_tlabel_pool *tp; + + tp = &packet->host->tpool[packet->node_id & NODE_MASK]; BUG_ON(packet->tlabel > 63 || packet->tlabel < 0); - BUG_ON(tp == NULL); spin_lock_irqsave(&tp->lock, flags); - packet->tpool = NULL; - clear_bit(packet->tlabel, &tp->pool); + BUG_ON(!test_and_clear_bit(packet->tlabel, &tp->pool)); spin_unlock_irqrestore(&tp->lock, flags); up(&tp->count); Modified: trunk/nodemgr.c ============================================================================== --- trunk/nodemgr.c (original) +++ trunk/nodemgr.c 2002-10-19 21:40:51.000000000 -0400 @@ -19,7 +19,7 @@ #ifdef CONFIG_PROC_FS #include <linux/proc_fs.h> #endif -#include <asm/semaphore.h> +#include <asm/atomic.h> #include <asm/byteorder.h> #include "ieee1394_types.h" @@ -106,7 +106,7 @@ PUTF(" Vendor ID : `%s' [0x%06x]\n", ne->vendor_name ?: "Unknown", ne->vendor_id); PUTF(" Capabilities: 0x%06x\n", ne->capabilities); - PUTF(" Free tlabels: %d\n", sem_getcount(&ne->tpool.count)); + PUTF(" Free tlabels: %d\n", atomic_read(&ne->tpool->count.count) + 1); PUTF(" Bus Options :\n"); PUTF(" IRMC(%d) CMC(%d) ISC(%d) BMC(%d) PMC(%d) GEN(%d)\n" " LSPD(%d) MAX_REC(%d) CYC_CLK_ACC(%d)\n", @@ -121,7 +121,6 @@ PUTF(" Nodes connected : %d\n", ne->host->node_count); PUTF(" Nodes active : %d\n", ne->host->nodes_active); PUTF(" SelfIDs received: %d\n", ne->host->selfid_count); - PUTF(" Backup tlabels : %d\n", sem_getcount(&ne->host->tpool.count)); PUTF(" Irm ID : [" NODE_BUS_FMT "]\n", NODE_BUS_ARGS(ne->host->irm_id)); PUTF(" BusMgr ID : [" NODE_BUS_FMT "]\n", @@ -139,15 +138,21 @@ int printed = 0; // small hack PUTF(" Unit Directory %d:\n", ud_count++); + + if (ud->flags & UNIT_DIRECTORY_VENDOR_ID || + ud->flags & UNIT_DIRECTORY_MODEL_ID) { + PUTF(" Vendor/Model ID : "); + } if (ud->flags & UNIT_DIRECTORY_VENDOR_ID) { - PUTF(" Vendor/Model ID: %s [%06x]", - ud->vendor_name ?: "Unknown", ud->vendor_id); + PUTF("%s [%06x]", ud->vendor_name ?: "Unknown", + ud->vendor_id); printed = 1; } if (ud->flags & UNIT_DIRECTORY_MODEL_ID) { - if (!printed) - PUTF(" Vendor/Model ID: %s [%06x]", - ne->vendor_name ?: "Unknown", ne->vendor_id); + if (!printed) { + PUTF("%s [%06x]", ne->vendor_name ?: "Unknown", + ne->vendor_id); + } PUTF(" / %s [%06x]", ud->model_name ?: "Unknown", ud->model_id); printed = 1; } @@ -155,11 +160,11 @@ PUTF("\n"); if (ud->flags & UNIT_DIRECTORY_SPECIFIER_ID) - PUTF(" Software Specifier ID: %06x\n", ud->specifier_id); + PUTF(" Software Spec ID : %06x\n", ud->specifier_id); if (ud->flags & UNIT_DIRECTORY_VERSION) - PUTF(" Software Version: %06x\n", ud->version); + PUTF(" Software Version : %06x\n", ud->version); if (ud->driver) - PUTF(" Driver: %s\n", ud->driver->name); + PUTF(" Driver : %s\n", ud->driver->name); PUTF(" Length (in quads): %d\n", ud->count); } @@ -339,7 +344,7 @@ INIT_LIST_HEAD(&ne->list); INIT_LIST_HEAD(&ne->unit_directories); - HPSB_TPOOL_INIT(&ne->tpool); + ne->tpool = &host->tpool[nodeid & NODE_MASK]; ne->host = host; ne->nodeid = nodeid; Modified: trunk/nodemgr.h ============================================================================== --- trunk/nodemgr.h (original) +++ trunk/nodemgr.h 2002-10-19 21:40:51.000000000 -0400 @@ -132,7 +132,7 @@ u32 capabilities; struct list_head unit_directories; - struct hpsb_tlabel_pool tpool; + struct hpsb_tlabel_pool *tpool; const char *vendor_name; quadlet_t quadlets[0]; Modified: trunk/hosts.c ============================================================================== --- trunk/hosts.c (original) +++ trunk/hosts.c 2002-10-19 21:40:51.000000000 -0400 @@ -121,6 +121,7 @@ struct hpsb_host *hpsb_alloc_host(struct hpsb_host_driver *drv, size_t extra) { struct hpsb_host *h; + int i; h = kmalloc(sizeof(struct hpsb_host) + extra, SLAB_KERNEL); if (!h) return NULL; @@ -133,7 +134,8 @@ INIT_LIST_HEAD(&h->pending_packets); spin_lock_init(&h->pending_pkt_lock); - HPSB_TPOOL_INIT(&h->tpool); + for (i = 0; i < 63; i++) + HPSB_TPOOL_INIT(&h->tpool[i]); atomic_set(&h->generation, 0); Modified: trunk/hosts.h ============================================================================== --- trunk/hosts.h (original) +++ trunk/hosts.h 2002-10-19 21:40:51.000000000 -0400 @@ -57,7 +57,8 @@ u8 *speed_map; struct csr_control csr; - struct hpsb_tlabel_pool tpool; + /* Per node tlabel pool allocation */ + struct hpsb_tlabel_pool tpool[63]; struct hpsb_host_driver *driver; Modified: trunk/Config.in ============================================================================== --- trunk/Config.in (original) +++ trunk/Config.in 2002-10-19 21:40:51.000000000 -0400 @@ -10,10 +10,10 @@ comment "Device Drivers" - if [ "$CONFIG_I2C" = "n" -o "$CONFIG_I2C_ALGOBIT" = "n" ]; then - comment ' Texas Instruments PCILynx requires I2C bit-banging' - else + if [ "$CONFIG_I2C" != "" -a "$CONFIG_I2C_ALGOBIT" != "" -e "$CONFIG_I2C" != "n" -a "$CONFIG_I2C_ALGOBIT" != "n" ]; then dep_tristate ' Texas Instruments PCILynx support' CONFIG_IEEE1394_PCILYNX $CONFIG_IEEE1394 $CONFIG_I2C $CONFIG_I2C_ALGOBIT + else + comment ' Texas Instruments PCILynx requires I2C bit-banging' fi # Non-maintained pcilynx options |