Revised patch for Symbol CF Monitor mode

Ian Goldberg ian at cypherpunks.ca
Mon Jul 1 00:58:33 EST 2002


While doing more testing of that last patch (in the form of a little
warwalking session), I noticed that all the networks I found had
low-numbered channels.  More investigation revealed that while the patch
indeed prevented the badness from happening (the card doesn't stop
giving you packets), neither did it actually change the channel.  D'oh.  :-(

I noticed that doing "ifconfig eth0 down; ifconfig eth0 up" made the
card start sending packets again, so I whittled away at that codepath
until I had the minimal code that would keep the card happy.  I've
included it (3 lines) as a patch below.  This patch is against (the
version of orinoco.c in the spectrum24-0.3.4 package, patched with
Snax's monitor mode patch for 0.12).  Throw away my previous patch to
this file, and you can also revert orinoco_hopper.c to its original form
(we no longer use the "iwpriv eth0 monitor 3 x" trick).

I did another warwalking and it's indeed picking up networks on channels
1, 11, and things in between.  I've updated the packages and tools on
http://www.cypherpunks.ca/zaurus/socket.html to this version.

   - Ian

-------------- next part --------------
--- spectrum24-0.3.4/orinoco.c	Fri Jun 28 19:08:25 2002
+++ spectrum24-0.3.4-arm/orinoco.c	Sun Jun 30 09:46:01 2002
@@ -3405,6 +3405,18 @@
 
 		break;
 	case P80211ENUM_truth_true:
+		/* If you set the monitor mode often (like with a channel
+		 * hopper), Symbol/Socket cards at least tend to stop
+		 * returning packets after a minute or so.  Re-initing the
+		 * chipset clears this up.  - Ian
+		 */
+		hermes_set_irqmask(hw, 0);
+		hermes_init(hw);
+		hermes_set_irqmask(hw, HERMES_EV_RX | HERMES_EV_ALLOC |
+				   HERMES_EV_TX | HERMES_EV_TXEXC |
+				   HERMES_EV_WTERR | HERMES_EV_INFO |
+				   HERMES_EV_INFDROP);
+
 		/* Disable the port (if enabled), only check Port 0 */
 		if ( hw->port_enabled[0] ) {
 			/* Save macport 0 state */


More information about the wireless mailing list