diff --git a/drivers/net/wireless/orinoco/orinoco.c b/drivers/net/wireless/orinoco/orinoco.c
index acfced8..1544eff 100644
--- a/drivers/net/wireless/orinoco/orinoco.c
+++ b/drivers/net/wireless/orinoco/orinoco.c
@@ -110,9 +110,9 @@
 /* Level of debugging. Used in the macros in orinoco.h */
 #ifdef ORINOCO_DEBUG
 int orinoco_debug = ORINOCO_DEBUG;
+EXPORT_SYMBOL(orinoco_debug);
 module_param(orinoco_debug, int, 0644);
 MODULE_PARM_DESC(orinoco_debug, "Debug level");
-EXPORT_SYMBOL(orinoco_debug);
 #endif
 
 static int suppress_linkstatus; /* = 0 */
@@ -1650,7 +1650,7 @@
 
 static void print_linkstatus(struct net_device *dev, u16 status)
 {
-	char * s;
+	char *s;
 
 	if (suppress_linkstatus)
 		return;
@@ -2309,6 +2309,7 @@
 
 	return 0;
 }
+EXPORT_SYMBOL(__orinoco_up);
 
 int __orinoco_down(struct net_device *dev)
 {
@@ -2340,6 +2341,7 @@
 
 	return 0;
 }
+EXPORT_SYMBOL(__orinoco_down);
 
 static int orinoco_allocate_fid(struct net_device *dev)
 {
@@ -2350,16 +2352,12 @@
 	err = hermes_allocate(hw, priv->nicbuf_size, &priv->txfid);
 	if (err == -EIO && priv->nicbuf_size > TX_NICBUF_SIZE_BUG) {
 		/* Try workaround for old Symbol firmware bug */
-		printk(KERN_WARNING "%s: firmware ALLOC bug detected "
-		       "(old Symbol firmware?). Trying to work around... ",
-		       dev->name);
-
 		priv->nicbuf_size = TX_NICBUF_SIZE_BUG;
 		err = hermes_allocate(hw, priv->nicbuf_size, &priv->txfid);
-		if (err)
-			printk("failed!\n");
-		else
-			printk("ok.\n");
+
+		printk(KERN_WARNING "%s: firmware ALLOC bug detected "
+		       "(old Symbol firmware?). Work around %s\n",
+		       dev->name, err ? "failed!" : "ok.");
 	}
 
 	return err;
@@ -2382,6 +2380,7 @@
 
 	return err;
 }
+EXPORT_SYMBOL(orinoco_reinit_firmware);
 
 static int __orinoco_hw_set_bitrate(struct orinoco_private *priv)
 {
@@ -3060,12 +3059,14 @@
 	hermes_t *hw = &priv->hw;
 	int count = MAX_IRQLOOPS_PER_IRQ;
 	u16 evstat, events;
-	/* These are used to detect a runaway interrupt situation */
-	/* If we get more than MAX_IRQLOOPS_PER_JIFFY iterations in a jiffy,
-	 * we panic and shut down the hardware */
-	static int last_irq_jiffy = 0; /* jiffies value the last time
-					* we were called */
-	static int loops_this_jiffy = 0;
+	/* These are used to detect a runaway interrupt situation.
+	 *
+	 * If we get more than MAX_IRQLOOPS_PER_JIFFY iterations in a jiffy,
+	 * we panic and shut down the hardware
+	 */
+	/* jiffies value the last time we were called */
+	static int last_irq_jiffy; /* = 0 */
+	static int loops_this_jiffy; /* = 0 */
 	unsigned long flags;
 
 	if (orinoco_lock(priv, &flags) != 0) {
@@ -3127,6 +3128,7 @@
 	orinoco_unlock(priv, &flags);
 	return IRQ_HANDLED;
 }
+EXPORT_SYMBOL(orinoco_interrupt);
 
 /********************************************************************/
 /* Power management                                                 */
@@ -3442,11 +3444,8 @@
 		printk(KERN_DEBUG "%s: IEEE standard IBSS ad-hoc mode supported\n",
 		       dev->name);
 	if (priv->has_wep) {
-		printk(KERN_DEBUG "%s: WEP supported, ", dev->name);
-		if (priv->has_big_wep)
-			printk("104-bit key\n");
-		else
-			printk("40-bit key\n");
+		printk(KERN_DEBUG "%s: WEP supported, %s-bit key\n", dev->name,
+		       priv->has_big_wep ? "104" : "40");
 	}
 	if (priv->has_wpa) {
 		printk(KERN_DEBUG "%s: WPA-PSK supported\n", dev->name);
@@ -3672,6 +3671,7 @@
 
 	return dev;
 }
+EXPORT_SYMBOL(alloc_orinocodev);
 
 void free_orinocodev(struct net_device *dev)
 {
@@ -3701,6 +3701,7 @@
 	orinoco_bss_data_free(priv);
 	free_netdev(dev);
 }
+EXPORT_SYMBOL(free_orinocodev);
 
 /********************************************************************/
 /* Wireless extensions                                              */
@@ -6143,15 +6144,6 @@
 /* Module initialization                                            */
 /********************************************************************/
 
-EXPORT_SYMBOL(alloc_orinocodev);
-EXPORT_SYMBOL(free_orinocodev);
-
-EXPORT_SYMBOL(__orinoco_up);
-EXPORT_SYMBOL(__orinoco_down);
-EXPORT_SYMBOL(orinoco_reinit_firmware);
-
-EXPORT_SYMBOL(orinoco_interrupt);
-
 /* Can't be declared "const" or the whole __initdata section will
  * become const */
 static char version[] __initdata = DRIVER_NAME " " DRIVER_VERSION
