--- orinoco.c	2002-10-04 09:27:28.000000000 -0400
+++ ../../spectrumnew/orinoco.c	2002-10-11 17:37:58.000000000 -0400
@@ -3654,14 +3654,23 @@
 	char *			current_ev = buffer;
 	char *			end_buf = buffer + IW_SCAN_MAX_DATA;
 
-	if(priv->firmware_type == FIRMWARE_TYPE_AGERE) {
+	switch (priv->firmware_type){
+	case FIRMWARE_TYPE_AGERE:
 		atom_len = sizeof(struct agere_scan_apinfo);
 		offset = 0;
-	} else {
+		break;
+	case FIRMWARE_TYPE_SYMBOL:
+		atom_len = sizeof(struct symbol_scan_apinfo);
+		offset = 0;
+		break;
+	case FIRMWARE_TYPE_INTERSIL:
 		atom_len = sizeof(struct prism2_scan_apinfo);
 		//offset = sizeof(struct prism2_scan_frame);
 		offset = 4;
-	}
+		break;
+	default:
+	  printk(KERN_WARNING "%s: orinoco_translate_scan: This firmware is not known. Defaulting to INTERSIL\n", dev->name);	  
+	};
 
 	DEBUG(4, "%s: scan_len = %d, atom_len = %d\n", dev->name,
 	      scan_len, atom_len);
--- hermes.h	2002-10-03 15:35:58.000000000 -0400
+++ ../../spectrumnew/hermes.h	2002-10-11 17:44:09.000000000 -0400
@@ -266,11 +266,28 @@
 	u8 essid[32];		/* ESSID of the network */
 } __attribute__ ((packed));
 /* No container */
+/* Moustafa: Scan structure for Symmbol cards */
+struct symbol_scan_apinfo {
+	u16 channel;		/* Channel where the AP sits */
+	u16 noise;		/* Noise level */
+	u16 level;		/* Signal level */
+	u8 bssid[ETH_ALEN];	/* MAC address of the Access Point */
+	u16 beacon_interv;	/* Beacon interval ? */
+	u16 capabilities;	/* Capabilities ? */
+	/* bits: 0-ess, 1-ibss, 4-privacy [wep] */
+	u16 essid_len;		/* ESSID length */
+	u8 essid[32];		/* ESSID of the network */
+    	u8 rates[10];		/* Bit rate supported */
+	u16 proberesp_rate;	/* ???? */
+        u8 Reserved[6];        /* ???? */
+} __attribute__ ((packed));
+/* No container */
 
 /* Hack to be able to read both type */
 union hermes_scan_info {
 	struct agere_scan_apinfo	a;
 	struct prism2_scan_apinfo	p;
+        struct symbol_scan_apinfo s;
 };
 
 /* Link status. Once again, grabbed from wlan-ng - Thanks Mark... - Jean II */
