netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [0/5] Orinoco merge updates, part the fourth
@ 2005-03-30  3:42 David Gibson
  2005-03-30  3:43 ` [1/5] Orinoco merge updates, part the fourth: wireless stats updates David Gibson
  2005-03-30  7:56 ` [Orinoco-devel] [0/5] Orinoco merge updates, part the fourth abuas_z
  0 siblings, 2 replies; 8+ messages in thread
From: David Gibson @ 2005-03-30  3:42 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Pavel Roskin, Orinoco Development List, netdev, linux-kernel

Hi Jeff, please apply:

Here's yet another batch of orinoco updates.  Smaller and less
significant than the last, this is basically a handful of remaining
small updates before tackling the big changes (wext v15, monitor and
scanning).  Patches are:
	orinoco-wstats-updates
		Updates and bugfixes to wireless stats handling
	orinoco-ignore-disconnect
		Add the ignore_disconnect module parameter
	orinoco-kill-dump-recs
		Remove ugly debugging code, to be replaced later with
		simpler and more useful stuff
	orinoco-no-infra-channel
		Don't attempt to set channel in managed mode, the
		firmware doesn't like that.
	orinoco-consolidate-allocate
		Remove some duplicated code for firmware buffer
		allocation, removing a bug in a hw workaround in the
		process.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/people/dgibson

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [1/5] Orinoco merge updates, part the fourth: wireless stats updates
  2005-03-30  3:42 [0/5] Orinoco merge updates, part the fourth David Gibson
@ 2005-03-30  3:43 ` David Gibson
  2005-03-30  3:44   ` [2/5] Orinoco merge updates, part the fourth: ignore_disconnect flag David Gibson
  2005-03-31  0:48   ` [1/5] Orinoco merge updates, part the fourth: wireless stats updates Jeff Garzik
  2005-03-30  7:56 ` [Orinoco-devel] [0/5] Orinoco merge updates, part the fourth abuas_z
  1 sibling, 2 replies; 8+ messages in thread
From: David Gibson @ 2005-03-30  3:43 UTC (permalink / raw)
  To: Jeff Garzik, Pavel Roskin, Orinoco Development List, netdev,
	linux-kernel

Minor updates/bugfixes to the handling of wireless statistics.

Signed-off-by: David Gibson <hermes@gibson.dropbear.id.au>

Index: working-2.6/drivers/net/wireless/orinoco.c
===================================================================
--- working-2.6.orig/drivers/net/wireless/orinoco.c	2005-02-25 15:47:53.314373136 +1100
+++ working-2.6/drivers/net/wireless/orinoco.c	2005-02-25 16:20:13.951351472 +1100
@@ -686,7 +686,7 @@
 	struct orinoco_private *priv = netdev_priv(dev);
 	hermes_t *hw = &priv->hw;
 	struct iw_statistics *wstats = &priv->wstats;
-	int err = 0;
+	int err;
 	unsigned long flags;
 
 	if (! netif_device_present(dev)) {
@@ -695,9 +695,21 @@
 		return NULL; /* FIXME: Can we do better than this? */
 	}
 
+	/* If busy, return the old stats.  Returning NULL may cause
+	 * the interface to disappear from /proc/net/wireless */
 	if (orinoco_lock(priv, &flags) != 0)
-		return NULL;  /* FIXME: Erg, we've been signalled, how
-			       * do we propagate this back up? */
+		return wstats;
+
+	/* We can't really wait for the tallies inquiry command to
+	 * complete, so we just use the previous results and trigger
+	 * a new tallies inquiry command for next time - Jean II */
+	/* FIXME: Really we should wait for the inquiry to come back -
+	 * as it is the stats we give don't make a whole lot of sense.
+	 * Unfortunately, it's not clear how to do that within the
+	 * wireless extensions framework: I think we're in user
+	 * context, but a lock seems to be held by the time we get in
+	 * here so we're not safe to sleep here. */
+	hermes_inquire(hw, HERMES_INQ_TALLIES);
 
 	if (priv->iw_mode == IW_MODE_ADHOC) {
 		memset(&wstats->qual, 0, sizeof(wstats->qual));
@@ -716,25 +728,16 @@
 
 		err = HERMES_READ_RECORD(hw, USER_BAP,
 					 HERMES_RID_COMMSQUALITY, &cq);
-		
-		wstats->qual.qual = (int)le16_to_cpu(cq.qual);
-		wstats->qual.level = (int)le16_to_cpu(cq.signal) - 0x95;
-		wstats->qual.noise = (int)le16_to_cpu(cq.noise) - 0x95;
-		wstats->qual.updated = 7;
+
+		if (!err) {
+			wstats->qual.qual = (int)le16_to_cpu(cq.qual);
+			wstats->qual.level = (int)le16_to_cpu(cq.signal) - 0x95;
+			wstats->qual.noise = (int)le16_to_cpu(cq.noise) - 0x95;
+			wstats->qual.updated = 7;
+		}
 	}
 
-	/* We can't really wait for the tallies inquiry command to
-	 * complete, so we just use the previous results and trigger
-	 * a new tallies inquiry command for next time - Jean II */
-	/* FIXME: We're in user context (I think?), so we should just
-           wait for the tallies to come through */
-	err = hermes_inquire(hw, HERMES_INQ_TALLIES);
-               
 	orinoco_unlock(priv, &flags);
-
-	if (err)
-		return NULL;
-		
 	return wstats;
 }
 


-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/people/dgibson

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [2/5] Orinoco merge updates, part the fourth: ignore_disconnect flag
  2005-03-30  3:43 ` [1/5] Orinoco merge updates, part the fourth: wireless stats updates David Gibson
@ 2005-03-30  3:44   ` David Gibson
  2005-03-30  3:44     ` [3/5] Orinoco merge updates, part the fourth: kill dump_recs David Gibson
  2005-03-31  0:48   ` [1/5] Orinoco merge updates, part the fourth: wireless stats updates Jeff Garzik
  1 sibling, 1 reply; 8+ messages in thread
From: David Gibson @ 2005-03-30  3:44 UTC (permalink / raw)
  To: Jeff Garzik, Pavel Roskin, Orinoco Development List, netdev,
	linux-kernel

Adds an ignore_disconnect module parameter.  When enabled, the driver
will continue attempting to send packets even when the firmware has
told us we've lost our link to the AP.  On some firmwares this
substantially increases the usable range of the card (presumably
because we have an interrmittent connection, but the firmware is able
to queue the packets for us until we're connected again).  On some
other cards, it causes the firmware to fall in a screaming heap :(
(hence, default off).

Signed-off-by: David Gibson <hermes@gibson.dropbear.id.au>

Index: working-2.6/drivers/net/wireless/orinoco.c
===================================================================
--- working-2.6.orig/drivers/net/wireless/orinoco.c	2005-03-11 14:44:09.000000000 +1100
+++ working-2.6/drivers/net/wireless/orinoco.c	2005-03-11 14:51:33.000000000 +1100
@@ -492,6 +492,9 @@
 static int suppress_linkstatus; /* = 0 */
 module_param(suppress_linkstatus, bool, 0644);
 MODULE_PARM_DESC(suppress_linkstatus, "Don't log link status changes");
+static int ignore_disconnect; /* = 0 */
+module_param(ignore_disconnect, int, 0644);
+MODULE_PARM_DESC(ignore_disconnect, "Don't report lost link to the network layer");
 
 /********************************************************************/
 /* Compile time configuration and compatibility stuff               */
@@ -1320,7 +1323,7 @@
 
 		if (connected)
 			netif_carrier_on(dev);
-		else
+		else if (!ignore_disconnect)
 			netif_carrier_off(dev);
 
 		if (newstatus != priv->last_linkstatus)

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/people/dgibson

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [3/5] Orinoco merge updates, part the fourth: kill dump_recs
  2005-03-30  3:44   ` [2/5] Orinoco merge updates, part the fourth: ignore_disconnect flag David Gibson
@ 2005-03-30  3:44     ` David Gibson
  2005-03-30  3:44       ` [4/5] Orinoco merge updates, part the fourth: don't set channel in managed mode David Gibson
  0 siblings, 1 reply; 8+ messages in thread
From: David Gibson @ 2005-03-30  3:44 UTC (permalink / raw)
  To: Jeff Garzik, Pavel Roskin, Orinoco Development List, netdev,
	linux-kernel

Remove the dump_recs debugging iwpriv command.  It will be replaced
later with the simpler and more flexible get_rid command.

Signed-off-by: David Gibson <hermes@gibson.dropbear.id.au>

Index: working-2.6/drivers/net/wireless/orinoco.c
===================================================================
--- working-2.6.orig/drivers/net/wireless/orinoco.c	2005-03-24 15:57:43.000000000 +1100
+++ working-2.6/drivers/net/wireless/orinoco.c	2005-03-24 15:57:44.000000000 +1100
@@ -607,7 +607,6 @@
 static int orinoco_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
 static int __orinoco_program_rids(struct net_device *dev);
 static void __orinoco_set_multicast_list(struct net_device *dev);
-static int orinoco_debug_dump_recs(struct net_device *dev);
 
 /********************************************************************/
 /* Internal helper functions                                        */
@@ -3861,7 +3860,6 @@
 				{ SIOCIWFIRSTPRIV + 0x7, 0,
 				  IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
 				  "get_ibssport" },
-				{ SIOCIWLASTPRIV, 0, 0, "dump_recs" },
 			};
 
 			wrq->u.data.length = sizeof(privtab) / sizeof(privtab[0]);
@@ -3949,14 +3947,6 @@
 		err = orinoco_ioctl_getibssport(dev, wrq);
 		break;
 
-	case SIOCIWLASTPRIV:
-		err = orinoco_debug_dump_recs(dev);
-		if (err)
-			printk(KERN_ERR "%s: Unable to dump records (%d)\n",
-			       dev->name, err);
-		break;
-
-
 	default:
 		err = -EOPNOTSUPP;
 	}
@@ -3970,187 +3960,6 @@
 	return err;
 }
 
-struct {
-	u16 rid;
-	char *name;
-	int displaytype;
-#define DISPLAY_WORDS	0
-#define DISPLAY_BYTES	1
-#define DISPLAY_STRING	2
-#define DISPLAY_XSTRING	3
-} record_table[] = {
-#define DEBUG_REC(name,type) { HERMES_RID_##name, #name, DISPLAY_##type }
-	DEBUG_REC(CNFPORTTYPE,WORDS),
-	DEBUG_REC(CNFOWNMACADDR,BYTES),
-	DEBUG_REC(CNFDESIREDSSID,STRING),
-	DEBUG_REC(CNFOWNCHANNEL,WORDS),
-	DEBUG_REC(CNFOWNSSID,STRING),
-	DEBUG_REC(CNFOWNATIMWINDOW,WORDS),
-	DEBUG_REC(CNFSYSTEMSCALE,WORDS),
-	DEBUG_REC(CNFMAXDATALEN,WORDS),
-	DEBUG_REC(CNFPMENABLED,WORDS),
-	DEBUG_REC(CNFPMEPS,WORDS),
-	DEBUG_REC(CNFMULTICASTRECEIVE,WORDS),
-	DEBUG_REC(CNFMAXSLEEPDURATION,WORDS),
-	DEBUG_REC(CNFPMHOLDOVERDURATION,WORDS),
-	DEBUG_REC(CNFOWNNAME,STRING),
-	DEBUG_REC(CNFOWNDTIMPERIOD,WORDS),
-	DEBUG_REC(CNFMULTICASTPMBUFFERING,WORDS),
-	DEBUG_REC(CNFWEPENABLED_AGERE,WORDS),
-	DEBUG_REC(CNFMANDATORYBSSID_SYMBOL,WORDS),
-	DEBUG_REC(CNFWEPDEFAULTKEYID,WORDS),
-	DEBUG_REC(CNFDEFAULTKEY0,BYTES),
-	DEBUG_REC(CNFDEFAULTKEY1,BYTES),
-	DEBUG_REC(CNFMWOROBUST_AGERE,WORDS),
-	DEBUG_REC(CNFDEFAULTKEY2,BYTES),
-	DEBUG_REC(CNFDEFAULTKEY3,BYTES),
-	DEBUG_REC(CNFWEPFLAGS_INTERSIL,WORDS),
-	DEBUG_REC(CNFWEPKEYMAPPINGTABLE,WORDS),
-	DEBUG_REC(CNFAUTHENTICATION,WORDS),
-	DEBUG_REC(CNFMAXASSOCSTA,WORDS),
-	DEBUG_REC(CNFKEYLENGTH_SYMBOL,WORDS),
-	DEBUG_REC(CNFTXCONTROL,WORDS),
-	DEBUG_REC(CNFROAMINGMODE,WORDS),
-	DEBUG_REC(CNFHOSTAUTHENTICATION,WORDS),
-	DEBUG_REC(CNFRCVCRCERROR,WORDS),
-	DEBUG_REC(CNFMMLIFE,WORDS),
-	DEBUG_REC(CNFALTRETRYCOUNT,WORDS),
-	DEBUG_REC(CNFBEACONINT,WORDS),
-	DEBUG_REC(CNFAPPCFINFO,WORDS),
-	DEBUG_REC(CNFSTAPCFINFO,WORDS),
-	DEBUG_REC(CNFPRIORITYQUSAGE,WORDS),
-	DEBUG_REC(CNFTIMCTRL,WORDS),
-	DEBUG_REC(CNFTHIRTY2TALLY,WORDS),
-	DEBUG_REC(CNFENHSECURITY,WORDS),
-	DEBUG_REC(CNFGROUPADDRESSES,BYTES),
-	DEBUG_REC(CNFCREATEIBSS,WORDS),
-	DEBUG_REC(CNFFRAGMENTATIONTHRESHOLD,WORDS),
-	DEBUG_REC(CNFRTSTHRESHOLD,WORDS),
-	DEBUG_REC(CNFTXRATECONTROL,WORDS),
-	DEBUG_REC(CNFPROMISCUOUSMODE,WORDS),
-	DEBUG_REC(CNFBASICRATES_SYMBOL,WORDS),
-	DEBUG_REC(CNFPREAMBLE_SYMBOL,WORDS),
-	DEBUG_REC(CNFSHORTPREAMBLE,WORDS),
-	DEBUG_REC(CNFWEPKEYS_AGERE,BYTES),
-	DEBUG_REC(CNFEXCLUDELONGPREAMBLE,WORDS),
-	DEBUG_REC(CNFTXKEY_AGERE,WORDS),
-	DEBUG_REC(CNFAUTHENTICATIONRSPTO,WORDS),
-	DEBUG_REC(CNFBASICRATES,WORDS),
-	DEBUG_REC(CNFSUPPORTEDRATES,WORDS),
-	DEBUG_REC(CNFTICKTIME,WORDS),
-	DEBUG_REC(CNFSCANREQUEST,WORDS),
-	DEBUG_REC(CNFJOINREQUEST,WORDS),
-	DEBUG_REC(CNFAUTHENTICATESTATION,WORDS),
-	DEBUG_REC(CNFCHANNELINFOREQUEST,WORDS),
-	DEBUG_REC(MAXLOADTIME,WORDS),
-	DEBUG_REC(DOWNLOADBUFFER,WORDS),
-	DEBUG_REC(PRIID,WORDS),
-	DEBUG_REC(PRISUPRANGE,WORDS),
-	DEBUG_REC(CFIACTRANGES,WORDS),
-	DEBUG_REC(NICSERNUM,XSTRING),
-	DEBUG_REC(NICID,WORDS),
-	DEBUG_REC(MFISUPRANGE,WORDS),
-	DEBUG_REC(CFISUPRANGE,WORDS),
-	DEBUG_REC(CHANNELLIST,WORDS),
-	DEBUG_REC(REGULATORYDOMAINS,WORDS),
-	DEBUG_REC(TEMPTYPE,WORDS),
-/*  	DEBUG_REC(CIS,BYTES), */
-	DEBUG_REC(STAID,WORDS),
-	DEBUG_REC(CURRENTSSID,STRING),
-	DEBUG_REC(CURRENTBSSID,BYTES),
-	DEBUG_REC(COMMSQUALITY,WORDS),
-	DEBUG_REC(CURRENTTXRATE,WORDS),
-	DEBUG_REC(CURRENTBEACONINTERVAL,WORDS),
-	DEBUG_REC(CURRENTSCALETHRESHOLDS,WORDS),
-	DEBUG_REC(PROTOCOLRSPTIME,WORDS),
-	DEBUG_REC(SHORTRETRYLIMIT,WORDS),
-	DEBUG_REC(LONGRETRYLIMIT,WORDS),
-	DEBUG_REC(MAXTRANSMITLIFETIME,WORDS),
-	DEBUG_REC(MAXRECEIVELIFETIME,WORDS),
-	DEBUG_REC(CFPOLLABLE,WORDS),
-	DEBUG_REC(AUTHENTICATIONALGORITHMS,WORDS),
-	DEBUG_REC(PRIVACYOPTIONIMPLEMENTED,WORDS),
-	DEBUG_REC(OWNMACADDR,BYTES),
-	DEBUG_REC(SCANRESULTSTABLE,WORDS),
-	DEBUG_REC(PHYTYPE,WORDS),
-	DEBUG_REC(CURRENTCHANNEL,WORDS),
-	DEBUG_REC(CURRENTPOWERSTATE,WORDS),
-	DEBUG_REC(CCAMODE,WORDS),
-	DEBUG_REC(SUPPORTEDDATARATES,WORDS),
-	DEBUG_REC(BUILDSEQ,BYTES),
-	DEBUG_REC(FWID,XSTRING)
-#undef DEBUG_REC
-};
-
-#define DEBUG_LTV_SIZE		128
-
-static int orinoco_debug_dump_recs(struct net_device *dev)
-{
-	struct orinoco_private *priv = netdev_priv(dev);
-	hermes_t *hw = &priv->hw;
-	u8 *val8;
-	u16 *val16;
-	int i,j;
-	u16 length;
-	int err;
-
-	/* I'm not sure: we might have a lock here, so we'd better go
-           atomic, just in case. */
-	val8 = kmalloc(DEBUG_LTV_SIZE + 2, GFP_ATOMIC);
-	if (! val8)
-		return -ENOMEM;
-	val16 = (u16 *)val8;
-
-	for (i = 0; i < ARRAY_SIZE(record_table); i++) {
-		u16 rid = record_table[i].rid;
-		int len;
-
-		memset(val8, 0, DEBUG_LTV_SIZE + 2);
-
-		err = hermes_read_ltv(hw, USER_BAP, rid, DEBUG_LTV_SIZE,
-				      &length, val8);
-		if (err) {
-			DEBUG(0, "Error %d reading RID 0x%04x\n", err, rid);
-			continue;
-		}
-		val16 = (u16 *)val8;
-		if (length == 0)
-			continue;
-
-		printk(KERN_DEBUG "%-15s (0x%04x): length=%d (%d bytes)\tvalue=",
-		       record_table[i].name,
-		       rid, length, (length-1)*2);
-		len = min(((int)length-1)*2, DEBUG_LTV_SIZE);
-
-		switch (record_table[i].displaytype) {
-		case DISPLAY_WORDS:
-			for (j = 0; j < len / 2; j++)
-				printk("%04X-", le16_to_cpu(val16[j]));
-			break;
-
-		case DISPLAY_BYTES:
-		default:
-			for (j = 0; j < len; j++)
-				printk("%02X:", val8[j]);
-			break;
-
-		case DISPLAY_STRING:
-			len = min(len, le16_to_cpu(val16[0])+2);
-			val8[len] = '\0';
-			printk("\"%s\"", (char *)&val16[1]);
-			break;
-
-		case DISPLAY_XSTRING:
-			printk("'%s'", (char *)val8);
-		}
-
-		printk("\n");
-	}
-
-	kfree(val8);
-
-	return 0;
-}
 
 /********************************************************************/
 /* Debugging                                                        */

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/people/dgibson

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [4/5] Orinoco merge updates, part the fourth: don't set channel in managed mode
  2005-03-30  3:44     ` [3/5] Orinoco merge updates, part the fourth: kill dump_recs David Gibson
@ 2005-03-30  3:44       ` David Gibson
  2005-03-30  3:45         ` [5/5] Orinoco merge updates, part the fourth: consolidate allocation code David Gibson
  0 siblings, 1 reply; 8+ messages in thread
From: David Gibson @ 2005-03-30  3:44 UTC (permalink / raw)
  To: Jeff Garzik, Pavel Roskin, Orinoco Development List, netdev,
	linux-kernel

Don't attempt to manually set the channel in infrastructure mode, the
firmware doesn't like that much.  Also don't attempt to override the
firmware's default channel number for IBSS mode (I believe default
channel can vary by regulatory domain).

Signed-off-by: David Gibson <hermes@gibson.dropbear.id.au>

Index: working-2.6/drivers/net/wireless/orinoco.c
===================================================================
--- working-2.6.orig/drivers/net/wireless/orinoco.c	2005-03-11 15:07:08.000000000 +1100
+++ working-2.6/drivers/net/wireless/orinoco.c	2005-03-11 16:13:31.000000000 +1100
@@ -1615,17 +1615,15 @@
 		return err;
 	}
 	/* Set the channel/frequency */
-	if (priv->channel == 0) {
-		printk(KERN_DEBUG "%s: Channel is 0 in __orinoco_program_rids()\n", dev->name);
-		if (priv->createibss)
-			priv->channel = 10;
-	}
-	err = hermes_write_wordrec(hw, USER_BAP, HERMES_RID_CNFOWNCHANNEL,
-				   priv->channel);
-	if (err) {
-		printk(KERN_ERR "%s: Error %d setting channel\n",
-		       dev->name, err);
-		return err;
+	if (priv->channel != 0 && priv->iw_mode != IW_MODE_INFRA) {
+		err = hermes_write_wordrec(hw, USER_BAP,
+					   HERMES_RID_CNFOWNCHANNEL,
+					   priv->channel);
+		if (err) {
+			printk(KERN_ERR "%s: Error %d setting channel %d\n",
+			       dev->name, err, priv->channel);
+			return err;
+		}
 	}
 
 	if (priv->has_ibss) {
@@ -2405,7 +2403,7 @@
 	/* By default use IEEE/IBSS ad-hoc mode if we have it */
 	priv->prefer_port3 = priv->has_port3 && (! priv->has_ibss);
 	set_port_type(priv);
-	priv->channel = 10; /* default channel, more-or-less arbitrary */
+	priv->channel = 0; /* use firmware default */
 
 	priv->promiscuous = 0;
 	priv->wep_on = 0;

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/people/dgibson

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [5/5] Orinoco merge updates, part the fourth: consolidate allocation code
  2005-03-30  3:44       ` [4/5] Orinoco merge updates, part the fourth: don't set channel in managed mode David Gibson
@ 2005-03-30  3:45         ` David Gibson
  0 siblings, 0 replies; 8+ messages in thread
From: David Gibson @ 2005-03-30  3:45 UTC (permalink / raw)
  To: Jeff Garzik, Pavel Roskin, Orinoco Development List, netdev,
	linux-kernel

Consolidate allocation of firmware buffers.  In the process, remove
duplication of a workaround for an old symbol firmware bug, and fix a
bug where we could retry the workaround, even if it already failed to
help.

Signed-off-by: David Gibson <hermes@gibson.dropbear.id.au>

Index: working-2.6/drivers/net/wireless/orinoco.c
===================================================================
--- working-2.6.orig/drivers/net/wireless/orinoco.c	2005-03-11 16:13:31.000000000 +1100
+++ working-2.6/drivers/net/wireless/orinoco.c	2005-03-11 16:21:55.000000000 +1100
@@ -1418,7 +1418,7 @@
 		return err;
 
 	err = hermes_allocate(hw, priv->nicbuf_size, &priv->txfid);
-	if (err == -EIO) {
+	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... ",
@@ -2270,7 +2270,7 @@
 	priv->nicbuf_size = IEEE802_11_FRAME_LEN + ETH_HLEN;
 
 	/* Initialize the firmware */
-	err = hermes_init(hw);
+	err = orinoco_reinit_firmware(dev);
 	if (err != 0) {
 		printk(KERN_ERR "%s: failed to initialize firmware (err = %d)\n",
 		       dev->name, err);
@@ -2409,25 +2409,6 @@
 	priv->wep_on = 0;
 	priv->tx_key = 0;
 
-	err = hermes_allocate(hw, priv->nicbuf_size, &priv->txfid);
-	if (err == -EIO) {
-		/* 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");
-	}
-	if (err) {
-		printk("%s: Error %d allocating Tx buffer\n", dev->name, err);
-		goto out;
-	}
-
 	/* Make the hardware available, as long as it hasn't been
 	 * removed elsewhere (e.g. by PCMCIA hot unplug) */
 	spin_lock_irq(&priv->lock);

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/people/dgibson

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Orinoco-devel] [0/5] Orinoco merge updates, part the fourth
  2005-03-30  3:42 [0/5] Orinoco merge updates, part the fourth David Gibson
  2005-03-30  3:43 ` [1/5] Orinoco merge updates, part the fourth: wireless stats updates David Gibson
@ 2005-03-30  7:56 ` abuas_z
  1 sibling, 0 replies; 8+ messages in thread
From: abuas_z @ 2005-03-30  7:56 UTC (permalink / raw)
  To: David Gibson; +Cc: Pavel Roskin, Orinoco Development List, netdev, linux-kernel

Hello,

DG> Here's yet another batch of orinoco updates.

Will this patches be included in CVS-Head code? Now I checked and the
last modification of orinoco.c was about 4 days ago, when switch to
enable monitor mode on all firmwares was included...

DG> Smaller and less significant than the last,

What was the last?

DG> this is basically a handful of remaining small updates before
DG> tackling the big changes (wext v15, monitor and scanning).

So, the next thing that will be do, will be WPA and monitor mode
improvement (maybe in all firmwares)?

-- 
Bye,
 abuas_z                            mailto:rocky7@wp.pl

The Bat! v3.0.2.10, Windows XP 5.1, Build 2600, Service Pack 1

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [1/5] Orinoco merge updates, part the fourth: wireless stats updates
  2005-03-30  3:43 ` [1/5] Orinoco merge updates, part the fourth: wireless stats updates David Gibson
  2005-03-30  3:44   ` [2/5] Orinoco merge updates, part the fourth: ignore_disconnect flag David Gibson
@ 2005-03-31  0:48   ` Jeff Garzik
  1 sibling, 0 replies; 8+ messages in thread
From: Jeff Garzik @ 2005-03-31  0:48 UTC (permalink / raw)
  To: David Gibson; +Cc: Pavel Roskin, Orinoco Development List, netdev, linux-kernel

applied 1-5

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2005-03-31  0:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-30  3:42 [0/5] Orinoco merge updates, part the fourth David Gibson
2005-03-30  3:43 ` [1/5] Orinoco merge updates, part the fourth: wireless stats updates David Gibson
2005-03-30  3:44   ` [2/5] Orinoco merge updates, part the fourth: ignore_disconnect flag David Gibson
2005-03-30  3:44     ` [3/5] Orinoco merge updates, part the fourth: kill dump_recs David Gibson
2005-03-30  3:44       ` [4/5] Orinoco merge updates, part the fourth: don't set channel in managed mode David Gibson
2005-03-30  3:45         ` [5/5] Orinoco merge updates, part the fourth: consolidate allocation code David Gibson
2005-03-31  0:48   ` [1/5] Orinoco merge updates, part the fourth: wireless stats updates Jeff Garzik
2005-03-30  7:56 ` [Orinoco-devel] [0/5] Orinoco merge updates, part the fourth abuas_z

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).