patch-2.4.6 linux/drivers/net/wireless/hermes.c
Next file: linux/drivers/net/wireless/hermes.h
Previous file: linux/drivers/net/wireless/airo_cs.c
Back to the patch index
Back to the overall index
- Lines: 37
- Date:
Mon Jun 11 19:15:27 2001
- Orig file:
v2.4.5/linux/drivers/net/wireless/hermes.c
- Orig date:
Mon May 7 19:42:14 2001
diff -u --recursive --new-file v2.4.5/linux/drivers/net/wireless/hermes.c linux/drivers/net/wireless/hermes.c
@@ -32,9 +32,10 @@
#include "hermes.h"
+/* These are maximum timeouts. Most often, card wil react much faster */
#define CMD_BUSY_TIMEOUT (100) /* In iterations of ~1us */
#define CMD_INIT_TIMEOUT (50000) /* in iterations of ~10us */
-#define CMD_COMPL_TIMEOUT (10000) /* in iterations of ~10us */
+#define CMD_COMPL_TIMEOUT (20000) /* in iterations of ~10us */
#define ALLOC_COMPL_TIMEOUT (1000) /* in iterations of ~10us */
#define BAP_BUSY_TIMEOUT (500) /* In iterations of ~1us */
#define BAP_ERROR_RETRY (10) /* How many times to retry a BAP seek when there is an error */
@@ -141,6 +142,12 @@
/* No need to explicitly handle the timeout - hermes_issue_cmd() will
probably return -EBUSY */
+ /* According to the documentation, EVSTAT may contain
+ obsolete event occurrence information. We have to acknowledge
+ it by writing EVACK. */
+ reg = hermes_read_regn(hw, EVSTAT);
+ hermes_write_regn(hw, EVACK, reg);
+
/* We don't use hermes_docmd_wait here, because the reset wipes
the magic constant in SWSUPPORT0 away, and it gets confused */
err = hermes_issue_cmd(hw, HERMES_CMD_INIT, 0);
@@ -323,8 +330,10 @@
reg = hermes_read_reg(hw, oreg);
}
- if (reg & HERMES_OFFSET_BUSY)
+ if (reg & HERMES_OFFSET_BUSY) {
+ DEBUG(0,"hermes_bap_seek: returning ETIMEDOUT...\n");
return -ETIMEDOUT;
+ }
/* For some reason, seeking the BAP seems to randomly fail somewhere
(firmware bug?). We retry a few times before giving up. */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)