From: Jim C. <jim...@gm...> - 2012-05-25 18:49:29
|
Current logging messages look like: acx.log_fn_exit_v: 95382776 <== acx_read_cmd_type_status: 00000000 acx.log_fn_enter: 95382776 ==> acx_write_cmd_type_status acx.log_fn_exit: 95382776 <== acx_write_cmd_type_status acx.log_fn_enter: 95382776 ==> acx_mwait fix this by: - adding space at beginning of log_fn_exit format string - drop last _ from log_fn_exit_v so it matches length of log_fn_enter Result is that the numbers and arrows line up nicely. Signed-off-by: Jim Cromie <jim...@gm...> --- acx_func.h | 4 ++-- common.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/acx_func.h b/acx_func.h index fbad144..af20ab5 100644 --- a/acx_func.h +++ b/acx_func.h @@ -169,7 +169,7 @@ void acx_lock_unhold(void); #if ACX_DEBUG void log_fn_enter(const char *funcname); void log_fn_exit(const char *funcname); -void log_fn_exit_v(const char *funcname, int v); +void log_fn_exitv(const char *funcname, int v); /* * char *acx_print_mac(char *buf, const u8 *mac); * void acx_print_mac2(const char *head, const u8 *mac, const char *tail); @@ -189,7 +189,7 @@ const char *acx_cmd_status_str(unsigned int state); #define FN_EXIT1(v) \ do { \ if (unlikely(acx_debug & L_FUNC)) { \ - log_fn_exit_v(__func__, v); \ + log_fn_exitv(__func__, v); \ } \ } while (0) #define FN_EXIT0 \ diff --git a/common.c b/common.c index 5c526cc..adca18a 100644 --- a/common.c +++ b/common.c @@ -66,7 +66,7 @@ static inline const char *acx_sanitize_str(const char *s); /* Logging */ void log_fn_enter(const char *funcname); void log_fn_exit(const char *funcname); -void log_fn_exit_v(const char *funcname, int v); +void log_fn_exitv(const char *funcname, int v); char *acx_print_mac(char *buf, const u8 *mac); void acx_print_mac2(const char *head, const u8 *mac, const char *tail); void acxlog_mac(int level, const char *head, const u8 *mac, const char *tail); @@ -794,12 +794,12 @@ void log_fn_exit(const char *funcname) if (indent >= sizeof(acx_debug_spaces)) indent = sizeof(acx_debug_spaces) - 1; - pr_info("%08ld %s<== %s\n", d % 100000000, + pr_info(" %08ld %s<== %s\n", d % 100000000, acx_debug_spaces + (sizeof(acx_debug_spaces) - 1) - indent, funcname); } -void log_fn_exit_v(const char *funcname, int v) +void log_fn_exitv(const char *funcname, int v) { int indent; TIMESTAMP(d); -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:31
|
Long ago, we switched to using pr_info etc for printing, and added __func__ uniformly via pr_fmt. Since then weve had a fair bit of double printing of the __func__. Fix that now. Signed-off-by: Jim Cromie <jim...@gm...> --- common.c | 78 ++++++++++++++++++++++++--------------------------------- mem.c | 84 ++++++++++++++++++++++++++++---------------------------------- merge.c | 84 +++++++++++++++++++++++++------------------------------------ pci.c | 63 ++++++++++++++++++++-------------------------- usb.c | 15 +++++------ 5 files changed, 140 insertions(+), 184 deletions(-) diff --git a/common.c b/common.c index adca18a..c14ed8d 100644 --- a/common.c +++ b/common.c @@ -1630,8 +1630,7 @@ int acx_read_phy_reg(acx_device_t *adev, u32 reg, u8 *charbuf) if (IS_USB(adev)) return acxusb_read_phy_reg(adev, reg, charbuf); - log(L_ANY, "%s: Unsupported dev_type=%i\n", - __func__, (adev)->dev_type); + log(L_ANY, "Unsupported dev_type=%i\n", (adev)->dev_type); return (NOT_OK); } @@ -1643,8 +1642,7 @@ int acx_write_phy_reg(acx_device_t *adev, u32 reg, u8 value) if (IS_USB(adev)) return acxusb_write_phy_reg(adev, reg, value); - log(L_ANY, "%s: Unsupported dev_type=%i\n", - __func__, (adev)->dev_type); + log(L_ANY, "Unsupported dev_type=%i\n", (adev)->dev_type); return (NOT_OK); } @@ -1666,8 +1664,8 @@ int acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, void *param, return acxmem_issue_cmd_timeo_debug(adev, cmd, param, len, timeout, cmdstr); - log(L_ANY, "%s: Unsupported dev_type=%i\n", __func__, - (adev)->dev_type); + log(L_ANY, "Unsupported dev_type=%i\n", (adev)->dev_type); + return (NOT_OK); } @@ -1686,16 +1684,15 @@ int acx_configure_debug(acx_device_t *adev, void *pdr, int type, len = adev->ie_len_dot11[type - 0x1000]; if (unlikely(!len)) - log(L_DEBUG, "%s: zero-length type %s?!\n", - __func__, typestr); + log(L_DEBUG, "zero-length type %s?!\n", typestr); ((acx_ie_generic_t *) pdr)->type = cpu_to_le16(type); ((acx_ie_generic_t *) pdr)->len = cpu_to_le16(len); res = acx_issue_cmd(adev, ACX1xx_CMD_CONFIGURE, pdr, len + 4); - sprintf(msgbuf, "%s: %s: type=0x%04X, typestr=%s, len=%u", - __func__, wiphy_name(adev->ieee->wiphy), - type, typestr, len); + sprintf(msgbuf, "%s: type=0x%04X, typestr=%s, len=%u", + wiphy_name(adev->ieee->wiphy), type, typestr, len); + if (likely(res == OK)) log(L_CTL, "%s: OK\n", msgbuf); else @@ -1823,20 +1820,18 @@ int acx_interrogate_debug(acx_device_t *adev, void *pdr, int type, else len = adev->ie_len_dot11[type - 0x1000]; - log(L_CTL, "%s: (type:%s,len:%u)\n", __func__, typestr, len); + log(L_CTL, "(type:%s,len:%u)\n", typestr, len); ((acx_ie_generic_t *) pdr)->type = cpu_to_le16(type); ((acx_ie_generic_t *) pdr)->len = cpu_to_le16(len); res = acx_issue_cmd(adev, ACX1xx_CMD_INTERROGATE, pdr, len + 4); if (unlikely(OK != res)) { #if ACX_DEBUG - pr_info("%s: %s: (type:%s) FAILED\n", __func__, - wiphy_name(adev->ieee->wiphy), - typestr); + pr_info("%s: (type:%s) FAILED\n", + wiphy_name(adev->ieee->wiphy), typestr); #else - pr_info("%s: %s: (type:0x%X) FAILED\n", __func__, - wiphy_name(adev->ieee->wiphy), - type); + pr_info("%s: (type:0x%X) FAILED\n", + wiphy_name(adev->ieee->wiphy), type); #endif /* dump_stack() is already done in issue_cmd() */ } @@ -3671,8 +3666,7 @@ failed_acx100: le32_to_cpu(mm.PacketTemplateEnd)); failed: - pr_info("%s: %s() FAILED\n", - wiphy_name(adev->ieee->wiphy), __func__); + pr_info("%s: FAILED\n", wiphy_name(adev->ieee->wiphy)); success: FN_EXIT1(result); @@ -4659,7 +4653,7 @@ static ssize_t acx_proc_write_debug(struct file *file, acx_debug = val; } - log(L_ANY, "%s: acx_debug=0x%04x\n", __func__, acx_debug); + log(L_ANY, "acx_debug=0x%04x\n", acx_debug); FN_EXIT0; return ret; @@ -4921,7 +4915,7 @@ static int acx_proc_open(struct inode *inode, struct file *file) file->f_path.dentry->d_name.name)) break; } - /* log(L_ANY, "%s: proc filename=%s\n", __func__, proc_files[i]); */ + /* log(L_ANY, "proc filename=%s\n", proc_files[i]); */ return single_open(file, acx_proc_show_funcs[i], PDE(inode)->data); } @@ -5361,8 +5355,7 @@ tx_t* acx_alloc_tx(acx_device_t *adev, unsigned int len) if (IS_MEM(adev)) return acxmem_alloc_tx(adev, len); - log(L_ANY, "%s: Unsupported dev_type=%i\n", - __func__, (adev)->dev_type); + log(L_ANY, "Unsupported dev_type=%i\n", (adev)->dev_type); return (NULL); } @@ -5373,8 +5366,7 @@ static void acx_dealloc_tx(acx_device_t *adev, tx_t *tx_opaque) if (IS_MEM(adev)) acxmem_dealloc_tx (adev, tx_opaque); - log(L_ANY, "%s: Unsupported dev_type=%i\n", - __func__, (adev)->dev_type); + log(L_ANY, "Unsupported dev_type=%i\n", (adev)->dev_type); return; } @@ -5385,8 +5377,7 @@ static void* acx_get_txbuf(acx_device_t *adev, tx_t *tx_opaque) if (IS_USB(adev)) return acxusb_get_txbuf(adev, tx_opaque); - log(L_ANY, "%s: Unsupported dev_type=%i\n", - __func__, (adev)->dev_type); + log(L_ANY, "Unsupported dev_type=%i\n", (adev)->dev_type); return (NULL); } @@ -5400,8 +5391,8 @@ static void acx_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, if (IS_MEM(adev)) return _acx_tx_data(adev, tx_opaque, len, ieeectl, skb); - log(L_ANY, "%s: Unsupported dev_type=%i\n", - __func__, (adev)->dev_type); + log(L_ANY, "Unsupported dev_type=%i\n", (adev)->dev_type); + return; } @@ -6087,8 +6078,8 @@ void acx_after_interrupt_task(acx_device_t *adev) /* others */ if(adev->after_interrupt_jobs) { - pr_info("%s: Jobs still to be run: 0x%02X\n", - __func__, adev->after_interrupt_jobs); + pr_info("Jobs still to be run: 0x%02X\n", + adev->after_interrupt_jobs); adev->after_interrupt_jobs = 0; } end_no_lock: @@ -6187,7 +6178,7 @@ void acx_set_timer(acx_device_t *adev, int timeout_us) { FN_ENTER; - log(L_DEBUG | L_IRQ, "%s(%u ms)\n", __func__, timeout_us / 1000); + log(L_DEBUG | L_IRQ, "(%u ms)\n", timeout_us / 1000); if (!(adev->dev_state_mask & ACX_STATE_IFACE_UP)) { pr_info("attempt to set the timer " "when the card interface is not up!\n"); @@ -6476,12 +6467,11 @@ int acx_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, case ALG_WEP: if (key->keylen == 5) { algorithm = ACX_SEC_ALGO_WEP; - log(L_INIT, "%s: algorithm=%i: %s\n", - __func__, algorithm, "ACX_SEC_ALGO_WEP"); + log(L_INIT, "algorithm=%i: %s\n", + algorithm, "ACX_SEC_ALGO_WEP"); } else { algorithm = ACX_SEC_ALGO_WEP104; - log(L_INIT, "%s: algorithm=%i: %s\n", - __func__, algorithm, "ACX_SEC_ALGO_WEP104"); + log(L_INIT, "algorithm=%i: %s\n", "ACX_SEC_ALGO_WEP104"); } /* OW Let's try WEP in mac80211 sw */ err = -EOPNOTSUPP; @@ -6489,15 +6479,14 @@ int acx_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, #else case WLAN_CIPHER_SUITE_WEP40: algorithm = ACX_SEC_ALGO_WEP; - log(L_INIT, "%s: algorithm=%i: %s\n", - __func__, algorithm, "ACX_SEC_ALGO_WEP"); + log(L_INIT, "algorithm=%i: %s\n", algorithm, "ACX_SEC_ALGO_WEP"); err = -EOPNOTSUPP; break; case WLAN_CIPHER_SUITE_WEP104: algorithm = ACX_SEC_ALGO_WEP104; - log(L_INIT, "%s: algorithm=%i: %s\n", - __func__, algorithm, "ACX_SEC_ALGO_WEP104"); + log(L_INIT, "algorithm=%i: %s\n", + algorithm, "ACX_SEC_ALGO_WEP104"); err = -EOPNOTSUPP; break; #endif @@ -6508,8 +6497,8 @@ int acx_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, case WLAN_CIPHER_SUITE_TKIP: #endif algorithm = ACX_SEC_ALGO_TKIP; - log(L_INIT, "%s: algorithm=%i: %s\n", - __func__, algorithm, "ACX_SEC_ALGO_TKIP"); + log(L_INIT, "algorithm=%i: %s\n", algorithm, "ACX_SEC_ALGO_TKIP"); + err = -EOPNOTSUPP; break; @@ -6519,8 +6508,7 @@ int acx_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, case WLAN_CIPHER_SUITE_CCMP: #endif algorithm = ACX_SEC_ALGO_AES; - log(L_INIT, "%s: algorithm=%i: %s\n", - __func__, algorithm, "ACX_SEC_ALGO_AES"); + log(L_INIT, "algorithm=%i: %s\n", algorithm, "ACX_SEC_ALGO_AES"); err = -EOPNOTSUPP; break; diff --git a/mem.c b/mem.c index 41e092f..185fda7 100644 --- a/mem.c +++ b/mem.c @@ -484,13 +484,13 @@ acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, if (!devname || !devname[0] || devname[4] == '%') devname = "acx"; - log(L_CTL, "%s: cmd:%s, cmd:0x%04X, buflen:%u, timeout:%ums, type:0x%04X)\n", - __func__, cmdstr, cmd, buflen, cmd_timeout, + log(L_CTL, "cmd:%s, cmd:0x%04X, buflen:%u, timeout:%ums, type:0x%04X)\n", + cmdstr, cmd, buflen, cmd_timeout, buffer ? le16_to_cpu(((acx_ie_generic_t *)buffer)->type) : -1); if (!(adev->dev_state_mask & ACX_STATE_FW_LOADED)) { - pr_acxmem("%s: %s: firmware is not loaded yet, cannot execute commands!\n", - __func__, devname); + pr_acxmem("%s: firmware is not loaded yet, cannot execute commands!\n", + devname); goto bad; } @@ -512,12 +512,12 @@ acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, if (counter == 0) { /* the card doesn't get idle, we're in trouble */ - pr_acxmem("%s: %s: cmd_status is not IDLE: 0x%04X!=0\n", - __func__, devname, cmd_status); + pr_acxmem("%s: cmd_status is not IDLE: 0x%04X!=0\n", + devname, cmd_status); goto bad; } else if (counter < 190) { /* if waited >10ms... */ - log(L_CTL|L_DEBUG, "%s: waited for IDLE %dms. Please report\n", - __func__, 199 - counter); + log(L_CTL|L_DEBUG, "waited for IDLE %dms. Please report\n", + 199 - counter); } /* now write the parameters of the command if needed */ @@ -577,36 +577,32 @@ acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, /* Timed out! */ if (counter == 0) { - log(L_ANY, "%s: %s: Timed out %s for CMD_COMPLETE. " - "irq bits:0x%04X irq_status:0x%04X timeout:%dms " - "cmd_status:%d (%s)\n", - __func__, devname, + log(L_ANY, "%s: Timed out %s for CMD_COMPLETE. " + "irq bits:0x%04X irq_status:0x%04X timeout:%dms " + "cmd_status:%d (%s)\n", devname, (adev->irqs_active) ? "waiting" : "polling", irqtype, adev->irq_status, cmd_timeout, cmd_status, acx_cmd_status_str(cmd_status)); - log(L_ANY, "%s: " - "timeout: counter:%d cmd_timeout:%d cmd_timeout-counter:%d\n", - __func__, - counter, cmd_timeout, cmd_timeout - counter); + log(L_ANY, + "timeout: counter:%d cmd_timeout:%d cmd_timeout-counter:%d\n", + counter, cmd_timeout, cmd_timeout - counter); if (read_reg16(adev, IO_ACX_IRQ_MASK) == 0xffff) { - log(L_ANY,"acxmem: firmware probably hosed - reloading: FIXME: Not implmemented\n"); + log(L_ANY,"firmware probably hosed - reloading: FIXME: Not implmemented\n"); FIXME(); } } else if (cmd_timeout - counter > 30) { /* if waited >30ms... */ - log(L_CTL|L_DEBUG, "%s: " - "%s for CMD_COMPLETE %dms. count:%d. Please report\n", - __func__, - (adev->irqs_active) ? "waited" : "polled", - cmd_timeout - counter, counter); + log(L_CTL|L_DEBUG, + "%s for CMD_COMPLETE %dms. count:%d. Please report\n", + (adev->irqs_active) ? "waited" : "polled", + cmd_timeout - counter, counter); } - logf1(L_CTL, "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X: %s\n", - devname, - cmdstr, buflen, cmd_timeout, - buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, - acx_cmd_status_str(cmd_status) + logf1(L_CTL, "cmd=%s, buflen=%u, timeout=%ums, type=0x%04X: %s\n", + cmdstr, buflen, cmd_timeout, + buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, + acx_cmd_status_str(cmd_status) ); if (cmd_status != 1) { /* it is not a 'Success' */ @@ -619,8 +615,7 @@ acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, /* * 388 is maximum command length */ - log(L_ANY, "%s: invalid length 0x%08x\n", - __func__, buflen); + log(L_ANY, "invalid length 0x%08x\n", buflen); buflen = 388; } p = (u8 *) buffer; @@ -641,14 +636,14 @@ acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, if (buffer && buflen && (cmd == ACX1xx_CMD_INTERROGATE)) { acxmem_copy_from_slavemem(adev, buffer, (uintptr_t) (adev->cmd_area + 4), buflen); if (acx_debug & L_DEBUG) { - log(L_ANY, "%s: output buffer (len=%u): ", __func__, buflen); + log(L_ANY, "output buffer (len=%u): ", buflen); acx_dump_bytes(buffer, buflen); } } /* ok: */ - log(L_DEBUG, "%s: %s: took %ld jiffies to complete\n", - __func__, cmdstr, jiffies - start); + log(L_DEBUG, "%s: took %ld jiffies to complete\n", + cmdstr, jiffies - start); acxmem_unlock(); FN_EXIT1(OK); @@ -658,8 +653,8 @@ acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, /* Give enough info so that callers can avoid printing their * own diagnostic messages */ logf1(L_ANY, - "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X, status=%s: FAILED\n", - devname, cmdstr, buflen, cmd_timeout, + "cmd=%s, buflen=%u, timeout=%ums, type=0x%04X, status=%s: FAILED\n", + cmdstr, buflen, cmd_timeout, buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, acx_cmd_status_str(cmd_status) ); @@ -757,7 +752,7 @@ void acxmem_reset_mac(acx_device_t *adev) /* now do soft reset of eCPU, set bit */ set_regbits(adev, IO_ACX_SOFT_RESET, 0x1); - log(L_DEBUG, "%s: enable soft reset...\n", __func__); + log(L_DEBUG, "enable soft reset...\n"); /* Windows driver sleeps here for a while with this sequence */ for (count = 0; count < 200; count++) { @@ -765,7 +760,7 @@ void acxmem_reset_mac(acx_device_t *adev) } /* now clear bit again: deassert eCPU reset */ - log(L_DEBUG, "%s: disable soft reset and go to init mode...\n", __func__); + log(L_DEBUG, "disable soft reset and go to init mode...\n"); clear_regbits(adev, IO_ACX_SOFT_RESET, 0x1); /* now start a burst read from initial EEPROM */ @@ -1082,8 +1077,7 @@ static void acxmem_process_rxdesc(acx_device_t *adev) /* now process descriptors, starting with the first we figured * out */ while (1) { - log(L_BUFR, "%s: rx: tail=%u Ctl_8=%02X\n", - __func__, tail, Ctl_8); + log(L_BUFR, "rx: tail=%u Ctl_8=%02X\n", tail, Ctl_8); /* * If the ACX has CTL_RECLAIM set on this descriptor * there is no buffer associated; it just wants us to @@ -1113,8 +1107,8 @@ static void acxmem_process_rxdesc(acx_device_t *adev) * for debug. */ if (addr & 0xffff0000) { - log(L_ANY, "%s: rxdesc 0x%08lx\n", - __func__, (uintptr_t) rxdesc); + log(L_ANY, "rxdesc 0x%08lx\n", + (uintptr_t) rxdesc); acxmem_dump_mem(adev, 0, 0x10000); panic("Bad access!"); } @@ -1126,7 +1120,7 @@ static void acxmem_process_rxdesc(acx_device_t *adev) acx_process_rxbuf(adev, hostdesc->data); } } else - log(L_ANY, "%s: rx reclaim only!\n", __func__); + log(L_ANY, "rx reclaim only!\n"); hostdesc->Status = 0; @@ -2281,8 +2275,7 @@ static int __devexit acxmem_remove(struct platform_device *pdev) FN_ENTER; if (!hw) { - log(L_DEBUG, "%s: card is unused. Skipping any release code\n", - __func__); + log(L_DEBUG, "card is unused. Skipping any release code\n"); goto end_no_lock; } @@ -2356,11 +2349,10 @@ static int __devexit acxmem_remove(struct platform_device *pdev) * expecting to see a working dev...) */ ieee80211_free_hw(adev->ieee); - pr_acxmem("%s done\n", __func__); + pr_acxmem("done\n"); - end_no_lock: +end_no_lock: FN_EXIT0; - return(0); } diff --git a/merge.c b/merge.c index 83e4904..1b77457 100644 --- a/merge.c +++ b/merge.c @@ -1676,13 +1676,13 @@ int acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, if (!devname || !devname[0] || devname[4] == '%') devname = "acx"; - log(L_CTL, "%s: cmd:%s, cmd:0x%04X, buflen:%u, timeout:%ums, type:0x%04X)\n", - __func__, cmdstr, cmd, buflen, cmd_timeout, + log(L_CTL, "cmd:%s, cmd:0x%04X, buflen:%u, timeout:%ums, type:0x%04X)\n", + cmdstr, cmd, buflen, cmd_timeout, buffer ? le16_to_cpu(((acx_ie_generic_t *)buffer)->type) : -1); if (!(adev->dev_state_mask & ACX_STATE_FW_LOADED)) { - pr_acx("%s: %s: firmware is not loaded yet, cannot execute commands!\n", - __func__, devname); + pr_acx("%s: firmware is not loaded yet, cannot execute commands!\n", + devname); goto bad; } @@ -1710,12 +1710,12 @@ int acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, if (counter == 0) { /* the card doesn't get idle, we're in trouble */ - pr_acx("%s: %s: cmd_status is not IDLE: 0x%04X!=0\n", - __func__, devname, cmd_status); + pr_acx("%s: cmd_status is not IDLE: 0x%04X!=0\n", + devname, cmd_status); goto bad; } else if (counter < 190) { /* if waited >10ms... */ - log(L_CTL|L_DEBUG, "%s: waited for IDLE %dms. Please report\n", - __func__, 199 - counter); + log(L_CTL|L_DEBUG, "waited for IDLE %dms. Please report\n", + 199 - counter); } /* now write the parameters of the command if needed */ @@ -1786,17 +1786,15 @@ int acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, /* Timed out! */ if (counter == 0) { - log(L_ANY, "%s: %s: Timed out %s for CMD_COMPLETE. " + log(L_ANY, "%s: Timed out %s for CMD_COMPLETE. " "irq bits:0x%04X irq_status:0x%04X timeout:%dms " - "cmd_status:%d (%s)\n", - __func__, devname, + "cmd_status:%d (%s)\n", devname, (adev->irqs_active) ? "waiting" : "polling", irqtype, adev->irq_status, cmd_timeout, cmd_status, acx_cmd_status_str(cmd_status)); - log(L_ANY, "%s: " + log(L_ANY, "timeout: counter:%d cmd_timeout:%d " "cmd_timeout-counter:%d\n", - __func__, counter, cmd_timeout, cmd_timeout - counter); if (read_reg16(adev, IO_ACX_IRQ_MASK) == 0xffff) { @@ -1806,9 +1804,8 @@ int acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, } } else if (cmd_timeout - counter > 30) { /* if waited >30ms... */ - log(L_CTL|L_DEBUG, "%s: " + log(L_CTL|L_DEBUG, "%s for CMD_COMPLETE %dms. count:%d. Please report\n", - __func__, (adev->irqs_active) ? "waited" : "polled", cmd_timeout - counter, counter); } @@ -1828,8 +1825,7 @@ int acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, if (buflen > 388) { /* 388 is maximum command length */ - log(L_ANY, "%s: invalid length 0x%08x\n", - __func__, buflen); + log(L_ANY, "invalid length 0x%08x\n", buflen); buflen = 388; } p = (u8 *) buffer; @@ -1851,15 +1847,14 @@ int acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, acxmem_copy_from_slavemem(adev, buffer, (u32) (adev->cmd_area + 4), buflen); if (acx_debug & L_DEBUG) { - log(L_ANY, "%s: output buffer (len=%u): ", - __func__, buflen); + log(L_ANY, "output buffer (len=%u): ", buflen); acx_dump_bytes(buffer, buflen); } } /* ok: */ - log(L_DEBUG, "%s: %s: took %ld jiffies to complete\n", - __func__, cmdstr, jiffies - start); + log(L_DEBUG, "%s: took %ld jiffies to complete\n", + cmdstr, jiffies - start); acxmem_unlock(); FN_EXIT1(OK); @@ -1908,7 +1903,7 @@ static void acxmem_reset_mac(acx_device_t *adev) /* now do soft reset of eCPU, set bit */ set_regbits(adev, IO_ACX_SOFT_RESET, 0x1); - log(L_DEBUG, "%s: enable soft reset...\n", __func__); + log(L_DEBUG, "enable soft reset...\n"); /* Windows driver sleeps here for a while with this sequence */ for (count = 0; count < 200; count++) { @@ -1916,8 +1911,7 @@ static void acxmem_reset_mac(acx_device_t *adev) } /* now clear bit again: deassert eCPU reset */ - log(L_DEBUG, "%s: disable soft reset and go to init mode...\n", - __func__); + log(L_DEBUG, "disable soft reset and go to init mode...\n"); clear_regbits(adev, IO_ACX_SOFT_RESET, 0x1); /* now start a burst read from initial EEPROM */ @@ -2569,8 +2563,7 @@ static void acx_process_rxdesc(acx_device_t *adev) } /* else IF_MEM */ while (1) { - log(L_BUFR, "%s: rx: tail=%u Ctl_8=%02X\n", - __func__, tail, Ctl_8); + log(L_BUFR, "rx: tail=%u Ctl_8=%02X\n", tail, Ctl_8); /* * If the ACX has CTL_RECLAIM set on this descriptor there * is no buffer associated; it just wants us to tell it to @@ -2598,8 +2591,8 @@ static void acx_process_rxdesc(acx_device_t *adev) * for debug. */ if (addr & 0xffff0000) { - log(L_ANY, "%s: rxdesc 0x%08lx\n", - __func__, (uintptr_t) rxdesc); + log(L_ANY, "rxdesc 0x%08lx\n", + (uintptr_t) rxdesc); acxmem_dump_mem(adev, 0, 0x10000); panic("Bad access!"); } @@ -2611,7 +2604,7 @@ static void acx_process_rxdesc(acx_device_t *adev) acx_process_rxbuf(adev, hostdesc->data); } } else - log(L_ANY, "%s: rx reclaim only!\n", __func__); + log(L_ANY, "rx reclaim only!\n"); hostdesc->Status = 0; @@ -2694,7 +2687,7 @@ tx_t *acxmem_alloc_tx(acx_device_t *adev, unsigned int len) { acxmem_lock(); if (unlikely(!adev->tx_free)) { - log(L_ANY, "%s: BUG: no free txdesc left\n", __func__); + log(L_ANY, "BUG: no free txdesc left\n"); /* * Probably the ACX ignored a transmit attempt and now * there's a packet sitting in the queue we think @@ -2706,12 +2699,12 @@ tx_t *acxmem_alloc_tx(acx_device_t *adev, unsigned int len) { */ if (txattempts < 10) { txattempts++; - log(L_ANY, "%s: trying to wake up ACX\n", __func__); + log(L_ANY, "trying to wake up ACX\n"); write_reg16(adev, IO_ACX_INT_TRIG, INT_TRIG_TXPRC); write_flush(adev); } else { txattempts = 0; - log(L_ANY, "%s: flushing transmit queue.\n", __func__); + log(L_ANY, "flushing transmit queue.\n"); acx_clean_txdesc_emergency(adev); } txdesc = NULL; @@ -2746,11 +2739,10 @@ tx_t *acxmem_alloc_tx(acx_device_t *adev, unsigned int len) { blocks_needed=acxmem_get_txbuf_space_needed(adev, len); if (!(blocks_needed <= adev->acx_txbuf_blocks_free)) { txdesc = NULL; - log(L_BUFT, "%s: !(blocks_needed <= adev->acx_txbuf_blocks_free), " - "len=%i, blocks_needed=%i, acx_txbuf_blocks_free=%i: " - "Stopping queue.\n", - __func__, - len, blocks_needed, adev->acx_txbuf_blocks_free); + log(L_BUFT, "!(blocks_needed <= adev->acx_txbuf_blocks_free), " + "len=%i, blocks_needed=%i, acx_txbuf_blocks_free=%i: " + "Stopping queue.\n", + len, blocks_needed, adev->acx_txbuf_blocks_free); acx_stop_queue(adev->ieee, NULL); goto end; } @@ -2776,8 +2768,7 @@ tx_t *acxmem_alloc_tx(acx_device_t *adev, unsigned int len) { if (unlikely(DESC_CTL_HOSTOWN != (ctl8 & DESC_CTL_ACXDONE_HOSTOWN))) { /* whoops, descr at current index is not free, so probably * ring buffer already full */ - log(L_ANY, "%s: BUG: tx_head:%d Ctl8:0x%02X - failed to find free txdesc\n", - __func__, + log(L_ANY, "BUG: tx_head:%d Ctl8:0x%02X - failed to find free txdesc\n", head, ctl8); txdesc = NULL; goto end; @@ -2787,8 +2778,7 @@ tx_t *acxmem_alloc_tx(acx_device_t *adev, unsigned int len) { write_slavemem8(adev, (uintptr_t) &(txdesc->Ctl_8), DESC_CTL_ACXDONE_HOSTOWN); adev->tx_free--; - log(L_BUFT, "%s: tx: got desc %u, %u remain\n", - __func__, head, adev->tx_free); + log(L_BUFT, "tx: got desc %u, %u remain\n", head, adev->tx_free); /* returning current descriptor, so advance to next free one */ adev->tx_head = (head + 1) % TX_CNT; @@ -4816,8 +4806,7 @@ static int __devinit acxmem_probe(struct platform_device *pdev) { platform_set_drvdata(pdev, NULL); ieee80211_free_hw(ieee); - done: - +done: FN_EXIT1(result); return result; } @@ -4842,8 +4831,7 @@ static int __devexit acxmem_remove(struct platform_device *pdev) FN_ENTER; if (!hw) { - log(L_DEBUG, "%s: card is unused. Skipping any release code\n", - __func__); + log(L_DEBUG, "card is unused. Skipping any release code\n"); goto end_no_lock; } @@ -4917,11 +4905,9 @@ static int __devexit acxmem_remove(struct platform_device *pdev) * expecting to see a working dev...) */ ieee80211_free_hw(adev->ieee); - pr_acx("%s done\n", __func__); - - end_no_lock: +end_no_lock: + pr_acx("done\n"); FN_EXIT0; - return(0); } #endif /* acxmem_remove() */ diff --git a/pci.c b/pci.c index 929a286..a053ab2 100644 --- a/pci.c +++ b/pci.c @@ -183,14 +183,13 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, if (!devname || !devname[0] || devname[4] == '%') devname = "acx"; - log(L_CTL, "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X\n", - __func__, cmdstr, buflen, cmd_timeout, + log(L_CTL, "cmd=%s, buflen=%u, timeout=%ums, type=0x%04X\n", + cmdstr, buflen, cmd_timeout, buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1); if (!(adev->dev_state_mask & ACX_STATE_FW_LOADED)) { - pr_acx("%s: %s: firmware is not loaded yet, " - "cannot execute commands!\n", - __func__, devname); + pr_acx("%s: firmware is not loaded yet, " + "cannot execute commands!\n", devname); goto bad; } @@ -220,13 +219,13 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, if (!counter) { /* the card doesn't get idle, we're in trouble */ - pr_acx("%s: %s: cmd_status is not IDLE: 0x%04X!=0\n", - __func__, devname, cmd_status); + pr_acx("%s: cmd_status is not IDLE: 0x%04X!=0\n", + devname, cmd_status); goto bad; } else if (counter < 190) { /* if waited >10ms... */ - log(L_CTL | L_DEBUG, "%s: waited for IDLE %dms. " - "Please report\n", - __func__, 199 - counter); + log(L_CTL | L_DEBUG, + "waited for IDLE %dms. Please report\n", + 199 - counter); } /* now write the parameters of the command if needed */ @@ -294,29 +293,27 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, /* Timed out! */ if (counter == -1) { - log(L_ANY, "%s: %s: timed out %s for CMD_COMPLETE. " + log(L_ANY, "%s: timed out %s for CMD_COMPLETE. " "irq bits:0x%04X irq_status:0x%04X timeout:%dms " - "cmd_status:%d (%s)\n", - __func__, devname, + "cmd_status:%d (%s)\n", devname, (adev->irqs_active) ? "waiting" : "polling", irqtype, adev->irq_status, cmd_timeout, cmd_status, acx_cmd_status_str(cmd_status)); + log(L_ANY, "timeout: counter:%d cmd_timeout:%d cmd_timeout-counter:%d\n", counter, cmd_timeout, cmd_timeout - counter); } else if ((cmd_timeout - counter) > 30) { /* if waited >30ms... */ - log(L_CTL | L_DEBUG, "%s: %s for CMD_COMPLETE %dms. " - "count:%d. Please report\n", - __func__, - (adev->irqs_active) ? "waited" : "polled", - cmd_timeout - counter, counter); + log(L_CTL | L_DEBUG, + "%s for CMD_COMPLETE %dms. count:%d. Please report\n", + (adev->irqs_active) ? "waited" : "polled", + cmd_timeout - counter, counter); } - logf1(L_CTL, "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X: %s\n", - devname, - cmdstr, buflen, cmd_timeout, - buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, - acx_cmd_status_str(cmd_status) + logf1(L_CTL, "cmd=%s, buflen=%u, timeout=%ums, type=0x%04X: %s\n", + cmdstr, buflen, cmd_timeout, + buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, + acx_cmd_status_str(cmd_status) ); if (1 != cmd_status) { /* it is not a 'Success' */ @@ -338,8 +335,8 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, } } /* ok: */ - log(L_DEBUG, "%s: %s: took %ld jiffies to complete\n", - __func__, cmdstr, jiffies - start); + log(L_DEBUG, "%s: took %ld jiffies to complete\n", + cmdstr, jiffies - start); FN_EXIT1(OK); return OK; @@ -1365,8 +1362,7 @@ static void __devexit acxpci_remove(struct pci_dev *pdev) FN_ENTER; if (!hw) { - log(L_DEBUG, "%s: card is unused. Skipping any release code\n", - __func__); + log(L_DEBUG, "card is unused. Skipping any release code\n"); goto end_no_lock; } @@ -1928,12 +1924,10 @@ static void vlynq_remove(struct vlynq_device *vdev) FN_ENTER; if (!hw) { - log(L_DEBUG, "%s: card is unused. Skipping any release code\n", - __func__); + log(L_DEBUG, "card is unused. Skipping any release code\n"); goto end_no_lock; } - /* Unregister ieee80211 device */ log(L_INIT, "removing device %s\n", wiphy_name(adev->ieee->wiphy)); ieee80211_unregister_hw(adev->ieee); @@ -2022,10 +2016,8 @@ int __init acxpci_init_module(void) #else #define ENDIANNESS_STRING "running on a BIG-ENDIAN CPU\n" #endif - log(L_INIT, - "acx: " ENDIANNESS_STRING - " PCI/VLYNQ module initialized, " - "waiting for cards to probe...\n"); + log(L_INIT, ENDIANNESS_STRING + " PCI/VLYNQ module initialized, waiting for cards to probe...\n"); #if defined(CONFIG_PCI) res = pci_register_driver(&acxpci_driver); @@ -2033,9 +2025,8 @@ int __init acxpci_init_module(void) res = vlynq_register_driver(&vlynq_acx); #endif - if (res) { + if (res) pr_err("can't register pci/vlynq driver\n"); - } FN_EXIT1(res); return res; diff --git a/usb.c b/usb.c index f5b833e..0cb9180 100644 --- a/usb.c +++ b/usb.c @@ -159,7 +159,7 @@ int acxusb_read_phy_reg(acx_device_t * adev, u32 reg, u8 * charbuf) FN_ENTER; - pr_acxusb("%s doesn't seem to work yet, disabled.\n", __func__); + pr_acxusb("doesn't seem to work yet, disabled.\n"); /* mem.addr = cpu_to_le16(reg); @@ -528,14 +528,13 @@ acxusb_issue_cmd_timeo_debug(acx_device_t * adev, if (!devname || !devname[0] || devname[4] == '%') devname = "acx"; - log(L_CTL, "%s: cmd=%s, buflen=%u, type=0x%04X\n", - __func__, + log(L_CTL, "cmd=%s, buflen=%u, type=0x%04X\n", cmdstr, buflen, buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1); loc = kmalloc(buflen + 4 + BOGUS_SAFETY_PADDING, GFP_KERNEL); if (!loc) { - pr_acx("%s: %s: no memory for data buffer\n", __func__, devname); + pr_acx("%s: no memory for data buffer\n", devname); goto bad; } @@ -610,7 +609,7 @@ acxusb_issue_cmd_timeo_debug(acx_device_t * adev, ACX_USB_CTRL_TIMEOUT /* timeout in ms */ ); if (result < 0) { - pr_acx("%s: %s: USB read error %d\n", __func__, devname, result); + pr_acx("%s: USB read error %d\n", devname, result); goto bad; } if (acx_debug & L_CTL) { @@ -633,9 +632,9 @@ acxusb_issue_cmd_timeo_debug(acx_device_t * adev, cmd_status = le16_to_cpu(loc->status); if (cmd_status != 1) { - pr_acx("%s: %s: cmd %s is not SUCCESS: %d (%s)\n", - __func__, devname, cmdstr, - cmd_status, acx_cmd_status_str(cmd_status)); + pr_acx("%s: cmd %s is not SUCCESS: %d (%s)\n", + devname, cmdstr, cmd_status, + acx_cmd_status_str(cmd_status)); goto bad; } if ((cmd == ACX1xx_CMD_INTERROGATE) && buffer && buflen) { -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:32
|
commit 45113e4a added macros to hide a wireless API change, but the piece to use them got lost somehow. Here it is. Signed-off-by: Jim Cromie <jim...@gm...> --- common.c | 13 ++----------- 1 files changed, 2 insertions(+), 11 deletions(-) diff --git a/common.c b/common.c index c14ed8d..3d7089e 100644 --- a/common.c +++ b/common.c @@ -5179,12 +5179,7 @@ out: * acx_compat, and hiding this #if/else. OTOH, inclusion doesnt care * about old kernels */ -#if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(2, 6, 39) -int -#else -void -#endif -acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) +OP_TX_RET_TYPE acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) { acx_device_t *adev = ieee2adev(hw); @@ -5195,11 +5190,7 @@ acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) if (skb_queue_len(&adev->tx_queue) >= ACX_TX_QUEUE_MAX_LENGTH) acx_stop_queue(adev->ieee, NULL); - #if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(2, 6, 39) - return NETDEV_TX_OK; - #else - return; - #endif + return OP_TX_RET_OK; } void acx_tx_work(struct work_struct *work) -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:34
|
Signed-off-by: Jim Cromie <jim...@gm...> --- pci.c | 46 ++++++++++++++++++++++------------------------ 1 files changed, 22 insertions(+), 24 deletions(-) diff --git a/pci.c b/pci.c index 3be7c12..a2a73c1 100644 --- a/pci.c +++ b/pci.c @@ -207,7 +207,8 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, pr_acx("%s: cmd_status is not IDLE: 0x%04X!=0\n", devname, cmd_status); goto bad; - } else if (counter < 190) { /* if waited >10ms... */ + } + else if (counter < 190) { /* if waited >10ms... */ log(L_CTL | L_DEBUG, "waited for IDLE %dms. Please report\n", 199 - counter); @@ -286,7 +287,7 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, cmd_status, acx_cmd_status_str(cmd_status)); log(L_ANY, "timeout: counter:%d cmd_timeout:%d cmd_timeout-counter:%d\n", - counter, cmd_timeout, cmd_timeout - counter); + counter, cmd_timeout, cmd_timeout - counter); } else if ((cmd_timeout - counter) > 30) { /* if waited >30ms... */ log(L_CTL | L_DEBUG, @@ -295,8 +296,8 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, cmd_timeout - counter, counter); } - logf1(L_CTL, "cmd=%s, buflen=%u, timeout=%ums, type=0x%04X: %s\n", - cmdstr, buflen, cmd_timeout, + logf1(L_CTL, "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X: %s\n", + devname, cmdstr, buflen, cmd_timeout, buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, acx_cmd_status_str(cmd_status) ); @@ -322,17 +323,18 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, /* ok: */ log(L_DEBUG, "%s: took %ld jiffies to complete\n", cmdstr, jiffies - start); + FN_EXIT1(OK); return OK; bad: /* Give enough info so that callers can avoid printing their * own diagnostic messages */ - logf1(L_ANY, "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X, status=%s: FAILED\n", - devname, - cmdstr, buflen, cmd_timeout, - buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, - acx_cmd_status_str(cmd_status) + logf1(L_ANY, + "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X, status=%s: FAILED\n", + devname, cmdstr, buflen, cmd_timeout, + buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, + acx_cmd_status_str(cmd_status) ); /* dump_stack(); */ FN_EXIT1(NOT_OK); @@ -434,8 +436,7 @@ int acxpci_proc_diag_output(struct seq_file *file, acx_device_t *adev) for (i = 0; i < RX_CNT; i++) { rtl = (i == adev->rx.tail) ? " [tail]" : ""; if ((rxhostdesc->hd.Ctl_16 & cpu_to_le16(DESC_CTL_HOSTOWN)) - && (rxhostdesc-> - Status & cpu_to_le32(DESC_STATUS_FULL))) + && (rxhostdesc->Status & cpu_to_le32(DESC_STATUS_FULL))) seq_printf(file, "%02u FULL%s\n", i, rtl); else seq_printf(file, "%02u empty%s\n", i, rtl); @@ -547,7 +548,7 @@ tx_t* acxpci_alloc_tx(acx_device_t * adev) /* returning current descriptor, so advance to next free one */ adev->tx_head = (head + 1) % TX_CNT; - end: +end: FN_EXIT0; return (tx_t *) txdesc; @@ -628,11 +629,10 @@ INLINE_IO int acxpci_adev_present(acx_device_t *adev) * ================================================== */ -#if 0 -int -acx111pci_ioctl_info(struct net_device *ndev, - struct iw_request_info *info, - struct iw_param *vwrq, char *extra) +#if 0 /* acx111pci_ioctl_info() plus */ +int acx111pci_ioctl_info(struct net_device *ndev, + struct iw_request_info *info, + struct iw_param *vwrq, char *extra) { #if ACX_DEBUG > 1 acx_device_t *adev = ndev2adev(ndev); @@ -901,12 +901,10 @@ acx111pci_ioctl_info(struct net_device *ndev, } -/*********************************************************************** -*/ -int -acx100pci_ioctl_set_phy_amp_bias(struct net_device *ndev, - struct iw_request_info *info, - struct iw_param *vwrq, char *extra) +/*******************************************************************/ +int acx100pci_ioctl_set_phy_amp_bias(struct net_device *ndev, + struct iw_request_info *info, + struct iw_param *vwrq, char *extra) { acx_device_t *adev = ndev2adev(ndev); unsigned long flags; @@ -946,7 +944,7 @@ acx100pci_ioctl_set_phy_amp_bias(struct net_device *ndev, return OK; } -#endif /* 0 */ +#endif /* acx111pci_ioctl_info() plus */ /* -- 1.7.7.6 |
From: Larry F. <Lar...@lw...> - 2012-05-25 19:22:01
|
On 05/25/2012 01:48 PM, Jim Cromie wrote: > Signed-off-by: Jim Cromie<jim...@gm...> > --- > pci.c | 46 ++++++++++++++++++++++------------------------ > 1 files changed, 22 insertions(+), 24 deletions(-) > > diff --git a/pci.c b/pci.c > index 3be7c12..a2a73c1 100644 > --- a/pci.c > +++ b/pci.c > @@ -207,7 +207,8 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, > pr_acx("%s: cmd_status is not IDLE: 0x%04X!=0\n", > devname, cmd_status); > goto bad; > - } else if (counter< 190) { /* if waited>10ms... */ > + } > + else if (counter< 190) { /* if waited>10ms... */ This change does not follow checkpatch rules. The structure should be if (condition) { statements; } else if (condition2) { statements; } else { statements; } Larry |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:33
|
fold acxpci_free_coherent() into only caller: acx_free_desc_queue(). Signed-off-by: Jim Cromie <jim...@gm...> --- merge.c | 11 ++++++++--- pci.c | 15 --------------- pci.h | 5 ----- 3 files changed, 8 insertions(+), 23 deletions(-) diff --git a/merge.c b/merge.c index 1b77457..ba89081 100644 --- a/merge.c +++ b/merge.c @@ -702,11 +702,16 @@ static inline void acx_free_desc_queue(acx_device_t *adev, struct desc_info *dinfo) { if (dinfo->start) { - if (IS_PCI(adev)) - acxpci_free_coherent(NULL, dinfo->size, dinfo->start, + if (IS_PCI(adev)) { + + pr_info("size:%d, vaddr:%p, dma_handle:%p\n", + dinfo->size, dinfo->start, (void*) dinfo->phy); + + dma_free_coherent(NULL, dinfo->size, dinfo->start, dinfo->phy); - else + } else kfree(dinfo->start); + dinfo->start = NULL; dinfo->size = 0; } diff --git a/pci.c b/pci.c index a053ab2..3be7c12 100644 --- a/pci.c +++ b/pci.c @@ -133,21 +133,6 @@ static void vlynq_remove(struct vlynq_device *vdev); #include "inlines.h" -void acxpci_free_coherent(struct pci_dev *hwdev, size_t size, - void *vaddr, dma_addr_t dma_handle) -{ - pr_info("hwdev:%p size:%ld, vaddr:%p, dma_handle:%p\n", - hwdev, (long unsigned int) size, vaddr, (void*) dma_handle); - - dma_free_coherent(hwdev == NULL ? NULL : &hwdev->dev, - size, vaddr, dma_handle); -} - -/* - * BOM Firmware, EEPROM, Phy - * ================================================== - */ - /* * BOM CMDs (Control Path) * ================================================== diff --git a/pci.h b/pci.h index 3419773..ff57b87 100644 --- a/pci.h +++ b/pci.h @@ -6,11 +6,6 @@ * inside pci.c, thus reducing set of forward declarations needed there. */ -/* Logging */ - -void acxpci_free_coherent(struct pci_dev *hwdev, size_t size, - void *vaddr, dma_addr_t dma_handle); - /* Firmware, EEPROM, Phy */ int acxpci_upload_radio(acx_device_t *adev); -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:37
|
merge.c has #if0d copies of code that has yet to be merged, and the originals have probably changed since. Drop them, and (maybe) start over. - acxmem_issue_cmd_timeo_debug - acxmem_reset_mac - acxmem_proc_diag_output - acxmem_get_txdesc - acxmem_probe Signed-off-by: Jim Cromie <jim...@gm...> --- merge.c | 774 --------------------------------------------------------------- 1 files changed, 0 insertions(+), 774 deletions(-) diff --git a/merge.c b/merge.c index ba89081..0340968 100644 --- a/merge.c +++ b/merge.c @@ -1635,305 +1635,14 @@ static void acx_init_mboxes(acx_device_t *adev) FN_EXIT0; } -/* - * acxmem_s_issue_cmd_timeo - * - * Sends command to fw, extract result - * - * OW, 20100630: - * - * The mem device is quite sensible to data access operations, - * therefore we may not sleep during the command handling. - * - * This has manifested as problem during sw-scan while if up. The acx - * got stuck - most probably due to concurrent data access collision. - * - * By not sleeping anymore and doing the entire operation completely - * under spinlock (thus with irqs disabled), the sw scan problem was - * solved. - * - * We can now run repeating sw scans, under load, without that the acx - * device gets stuck. - * - * Also ifup/down works more reliable on the mem device. - * - */ -#if 0 /* acxmem_issue_cmd_timeo_debug() */ -int acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, - void *buffer, unsigned buflen, - unsigned cmd_timeout, const char *cmdstr) -{ - unsigned long start = jiffies; - const char *devname; - unsigned counter; - u16 irqtype; - u16 cmd_status=-1; - int i, j; - u8 *p; - unsigned long timeout; - - acxmem_lock_flags; - - FN_ENTER; - acxmem_lock(); - - devname = wiphy_name(adev->ieee->wiphy); - if (!devname || !devname[0] || devname[4] == '%') - devname = "acx"; - - log(L_CTL, "cmd:%s, cmd:0x%04X, buflen:%u, timeout:%ums, type:0x%04X)\n", - cmdstr, cmd, buflen, cmd_timeout, - buffer ? le16_to_cpu(((acx_ie_generic_t *)buffer)->type) : -1); - - if (!(adev->dev_state_mask & ACX_STATE_FW_LOADED)) { - pr_acx("%s: firmware is not loaded yet, cannot execute commands!\n", - devname); - goto bad; - } - - if ((acx_debug & L_DEBUG) && (cmd != ACX1xx_CMD_INTERROGATE)) { - pr_acx("input buffer (len=%u):\n", buflen); - acx_dump_bytes(buffer, buflen); - } - - /* wait for firmware to become idle for our command submission */ - counter = 199; /* in ms */ - /* from pci.c */ - timeout = HZ / 5; - counter = (timeout * 1000 / HZ) - 1; - timeout += jiffies; - - do { - cmd_status = acx_read_cmd_type_status(adev); - /* Test for IDLE state */ - /* pci.c had more complicated timeout code here. */ - if (!cmd_status) - break; - - udelay(1000); - } while (likely(--counter)); - - if (counter == 0) { - /* the card doesn't get idle, we're in trouble */ - pr_acx("%s: cmd_status is not IDLE: 0x%04X!=0\n", - devname, cmd_status); - goto bad; - } else if (counter < 190) { /* if waited >10ms... */ - log(L_CTL|L_DEBUG, "waited for IDLE %dms. Please report\n", - 199 - counter); - } - - /* now write the parameters of the command if needed */ - if (buffer && buflen) { - /* if it's an INTERROGATE command, just pass the - * length of parameters to read, as data */ -#if CMD_DISCOVERY - if (cmd == ACX1xx_CMD_INTERROGATE) - memset_io(adev->cmd_area + 4, 0xAA, buflen); -#endif - - if (IS_MEM(adev)) { - /* slave memory version */ - acxmem_copy_to_slavemem(adev, (u32) (adev->cmd_area + 4), buffer, - (cmd == ACX1xx_CMD_INTERROGATE) - ? 4 : buflen); - } else { - /* adev->cmd_area points to PCI device's - * memory, not to RAM! */ - memcpy_toio(adev->cmd_area + 4, buffer, - (cmd == ACX1xx_CMD_INTERROGATE) ? 4 : buflen); - } - } - /* now write the actual command type */ - acx_write_cmd_type_status(adev, cmd, 0); - - /* clear CMD_COMPLETE bit. can be set only by IRQ handler: */ - CLEAR_BIT(adev->irq_status, HOST_INT_CMD_COMPLETE); - - /* execute command */ - write_reg16(adev, IO_ACX_INT_TRIG, INT_TRIG_CMD); - write_flush(adev); - - /* wait for firmware to process command */ - - /* Ensure nonzero and not too large timeout. Also converts - * e.g. 100->99, 200->199 which is nice but not essential - */ - cmd_timeout = (cmd_timeout - 1) | 1; - if (unlikely(cmd_timeout> 1199)) - cmd_timeout = 1199; - - /* we schedule away sometimes (timeout can be large) */ - counter = cmd_timeout; - do { - irqtype = read_reg16(adev, IO_ACX_IRQ_STATUS_NON_DES); - if (irqtype & HOST_INT_CMD_COMPLETE) { - write_reg16(adev, IO_ACX_IRQ_ACK, - HOST_INT_CMD_COMPLETE); - break; - } - - if (adev->irq_status & HOST_INT_CMD_COMPLETE) - break; - - udelay(1000); - - } while (likely(--counter)); - - /* save state for debugging */ - cmd_status = acx_read_cmd_type_status(adev); - - /* put the card in IDLE state */ - (IS_MEM(adev)) - ? acx_write_cmd_type_status(adev, ACX1xx_CMD_RESET, 0) - : acx_write_cmd_type_status(adev, 0, 0); - - /* Timed out! */ - if (counter == 0) { - - log(L_ANY, "%s: Timed out %s for CMD_COMPLETE. " - "irq bits:0x%04X irq_status:0x%04X timeout:%dms " - "cmd_status:%d (%s)\n", devname, - (adev->irqs_active) ? "waiting" : "polling", - irqtype, adev->irq_status, cmd_timeout, - cmd_status, acx_cmd_status_str(cmd_status)); - log(L_ANY, - "timeout: counter:%d cmd_timeout:%d " - "cmd_timeout-counter:%d\n", - counter, cmd_timeout, cmd_timeout - counter); - - if (read_reg16(adev, IO_ACX_IRQ_MASK) == 0xffff) { - log(L_ANY, "acxmem: firmware probably hosed -" - " reloading: FIXME: Not implmemented\n"); - FIXME(); - } - - } else if (cmd_timeout - counter > 30) { /* if waited >30ms... */ - log(L_CTL|L_DEBUG, - "%s for CMD_COMPLETE %dms. count:%d. Please report\n", - (adev->irqs_active) ? "waited" : "polled", - cmd_timeout - counter, counter); - } - - logf1(L_CTL, "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X: %s\n", - devname, cmdstr, buflen, cmd_timeout, - (buffer - ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) - : -1), - acx_cmd_status_str(cmd_status) - ); - - if (cmd_status != 1) { /* it is not a 'Success' */ - - /* zero out result buffer WARNING: this will trash - * stack in case of illegally large input length! */ - - if (buflen > 388) { - /* 388 is maximum command length */ - log(L_ANY, "invalid length 0x%08x\n", buflen); - buflen = 388; - } - p = (u8 *) buffer; - for (i = 0; i < buflen; i += 16) { - printk("%04x:", i); - for (j = 0; (j < 16) && (i + j < buflen); j++) { - printk(" %02x", *p++); - } - printk("\n"); - } - - if (buffer && buflen) - memset(buffer, 0, buflen); - goto bad; - } - - /* read in result parameters if needed */ - if (buffer && buflen && (cmd == ACX1xx_CMD_INTERROGATE)) { - acxmem_copy_from_slavemem(adev, buffer, - (u32) (adev->cmd_area + 4), buflen); - if (acx_debug & L_DEBUG) { - log(L_ANY, "output buffer (len=%u): ", buflen); - acx_dump_bytes(buffer, buflen); - } - } - - /* ok: */ - log(L_DEBUG, "%s: took %ld jiffies to complete\n", - cmdstr, jiffies - start); - - acxmem_unlock(); - FN_EXIT1(OK); - return OK; - - bad: - /* Give enough info so that callers can avoid printing their - * own diagnostic messages */ - logf1(L_ANY, "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X, status=%s: FAILED\n", - devname, cmdstr, buflen, cmd_timeout, - (buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) - : -1), - acx_cmd_status_str(cmd_status) - ); - - acxmem_unlock(); - FN_EXIT1(NOT_OK); - return NOT_OK; -} -#endif /* acxmem_issue_cmd_timeo_debug() */ - #define REG_ACX_VENDOR_ID 0x900 #define ACX_VENDOR_ID 0x8400104c - /* * BOM Init, Configure (Control Path) * ================================================== */ -/* - * acxmem_l_reset_mac - * - * MAC will be reset - * Call context: reset_dev - */ -#if 0 // acxmem_reset_mac() -static void acxmem_reset_mac(acx_device_t *adev) -{ - int count; - FN_ENTER; - - /* OW Bit setting done differently in pci.c */ - /* halt eCPU */ - set_regbits(adev, IO_ACX_ECPU_CTRL, 0x1); - - /* now do soft reset of eCPU, set bit */ - set_regbits(adev, IO_ACX_SOFT_RESET, 0x1); - log(L_DEBUG, "enable soft reset...\n"); - - /* Windows driver sleeps here for a while with this sequence */ - for (count = 0; count < 200; count++) { - udelay (50); - } - - /* now clear bit again: deassert eCPU reset */ - log(L_DEBUG, "disable soft reset and go to init mode...\n"); - clear_regbits(adev, IO_ACX_SOFT_RESET, 0x1); - - /* now start a burst read from initial EEPROM */ - set_regbits(adev, IO_ACX_EE_START, 0x1); - - /* Windows driver sleeps here for a while with this sequence */ - for (count = 0; count < 200; count++) { - udelay (50); - } - - /* Windows driver writes 0x10000 to register 0x808 here */ - - write_reg32(adev, 0x808, 0x10000); - - FN_EXIT0; -} -#endif // acxmem_reset_mac() void acx_up(struct ieee80211_hw *hw) { @@ -2274,203 +1983,6 @@ static void acxmem_i_set_multicast_list(struct net_device *ndev) * BOM Proc, Debug * ================================================== */ -#if 0 // acxmem_proc_diag_output() -int acxmem_proc_diag_output(struct seq_file *file, - acx_device_t *adev) -{ - const char *rtl, *thd, *ttl; - txdesc_t *txdesc; - u8 Ctl_8; - rxdesc_t *rxdesc; - int i; - u32 tmp, tmp2; - txdesc_t txd; - rxdesc_t rxd; - - acxmem_lock_flags; - - FN_ENTER; - acxmem_lock(); - -#if DUMP_MEM_DURING_DIAG > 0 - acxmem_dump_mem (adev, 0, 0x10000); - panic ("dump finished"); -#endif - - seq_printf(file, "** Rx buf **\n"); - rxdesc = adev->rx.desc_start; - if (rxdesc) - for (i = 0; i < RX_CNT; i++) { - rtl = (i == adev->rx.tail) ? " [tail]" : ""; - Ctl_8 = read_slavemem8(adev, (ulong) - &(rxdesc->Ctl_8)); - if (Ctl_8 & DESC_CTL_HOSTOWN) - seq_printf(file, "%02u (%02x) FULL %-10s", - i, Ctl_8, rtl); - else - seq_printf(file, "%02u (%02x) empty%-10s", - i, Ctl_8, rtl); - - /* seq_printf(file, "\n"); */ - - acxmem_copy_from_slavemem(adev, (u8 *) &rxd, - (uintptr_t) rxdesc, sizeof(rxd)); - seq_printf(file, - "%04lx: %04x %04x %04x %04x %04x %04x %04x Ctl_8=%04x %04x %04x %04x %04x %04x %04x %04x\n", - (uintptr_t) rxdesc, - rxd.pNextDesc.v, - rxd.HostMemPtr.v, - rxd.ACXMemPtr.v, - rxd.rx_time, - rxd.total_length, - rxd.WEP_length, - rxd.WEP_ofs, - rxd.Ctl_8, - rxd.rate, - rxd.error, - rxd.SNR, - rxd.RxLevel, - rxd.queue_ctrl, - rxd.unknown, - rxd.unknown2); - rxdesc++; - } - - seq_printf(file, "** Tx buf (free %d, Ieee80211 queue: %s) **\n", - adev->acx_txbuf_free, - acx_queue_stopped(adev->ieee) ? "STOPPED" : "Running"); - - seq_printf(file, - "** Tx buf %d blocks total, %d available, free list head %04x\n", - adev->acx_txbuf_numblocks, adev->acx_txbuf_blocks_free, - adev->acx_txbuf_free); - - txdesc = adev->tx.desc_start; - if (txdesc) { - for (i = 0; i < TX_CNT; i++) { - thd = (i == adev->tx_head) ? " [head]" : ""; - ttl = (i == adev->tx.tail) ? " [tail]" : ""; - acxmem_copy_from_slavemem(adev, (u8 *) &txd, - (uintptr_t) txdesc, sizeof(txd)); - - Ctl_8 = read_slavemem8(adev, (uintptr_t) &(txdesc->Ctl_8)); - if (Ctl_8 & DESC_CTL_ACXDONE) - seq_printf(file, "%02u ready to free (%02X)%-7s%-7s", - i, Ctl_8, thd, ttl); - else if (Ctl_8 & DESC_CTL_HOSTOWN) - seq_printf(file, "%02u available (%02X)%-7s%-7s", - i, Ctl_8, thd, ttl); - else - seq_printf(file, "%02u busy (%02X)%-7s%-7s", - i, Ctl_8, thd, ttl); - - seq_printf(file, - "%04lx: %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %02x %02x %02x %02x " - "%02x %02x %02x %02x %04x: ", - (uintptr_t) txdesc, - txd.pNextDesc.v, txd.HostMemPtr.v, - txd.AcxMemPtr.v, - txd.tx_time, txd.total_length, txd.Reserved, - txd.dummy[0], txd.dummy[1], txd.dummy[2], - txd.dummy[3], txd.Ctl_8, txd.Ctl2_8, txd.error, - txd.ack_failures, txd.rts_failures, - txd.rts_ok, txd.u.r1.rate, - txd.u.r1.queue_ctrl, txd.queue_info); - - tmp = read_slavemem32(adev, - (ulong) & (txdesc->AcxMemPtr)); - seq_printf(file, " %04x: ", tmp); - - -#if 1 /* Output allocated tx-buffer chain */ - - if (tmp) { - while ((tmp2 = read_slavemem32(adev, (u32) tmp)) - != 0x02000000) { - tmp2 = tmp2 << 5; - seq_printf(file, "%04x=%04x,", tmp, tmp2); - tmp = tmp2; - } - seq_printf(file, " %04x=%04x", tmp, tmp2); - } -#endif /* Output allocated tx-buffer chain */ - - seq_printf(file, "\n"); - -#if 0 - u8 buf[0x200]; - int j, k; - - if (txd.AcxMemPtr.v) { - acxmem_copy_from_slavemem(adev, buf, - txd.AcxMemPtr.v, sizeof(buf)); - for (j = 0; (j < txd.total_length) && (j < (sizeof(buf) - 4)); j - += 16) { - seq_printf(file, " "); - for (k = 0; (k < 16) && (j + k < txd.total_length); k++) { - seq_printf(file, " %02x", buf[j + k + 4]); - } - seq_printf(file, "\n"); - } - } -#endif - - txdesc = acx_advance_txdesc(adev, txdesc, 1); - } - } - -#if 1 /* Tx-buffer list dump */ - /* Tx-buffer list dump */ - seq_printf(file, "\n"); - seq_printf(file, "* Tx-buffer list dump\n"); - seq_printf(file, "acx_txbuf_numblocks=%d, acx_txbuf_blocks_free=%d, \n" - "acx_txbuf_start==%04x, acx_txbuf_free=%04x, memblocksize=%d\n", - adev->acx_txbuf_numblocks, adev->acx_txbuf_blocks_free, - adev->acx_txbuf_start, adev->acx_txbuf_free, - adev->memblocksize); - - tmp = adev->acx_txbuf_start; - for (i = 0; i < adev->acx_txbuf_numblocks; i++) { - tmp2 = read_slavemem32(adev, (u32) tmp); - seq_printf(file, "%02d: %04x=%04x,%04x\n", - i, tmp, tmp2, tmp2 << 5); - - tmp += adev->memblocksize; - } - seq_printf(file, "\n"); - /* --- */ -#endif /* Tx-buffer list dump */ - - seq_printf(file, "\n" - "** Generic slave data **\n" - "irq_mask 0x%04x irq_status 0x%04x irq on acx 0x%04x\n" - - "txbuf_start 0x%p, txbuf_area_size %u\n" - /* OW TODO Add also the acx tx_buf size available */ - "txdesc_size %u, txdesc_start 0x%p\n" - "txhostdesc_start 0x%p, txhostdesc_area_size %u\n" - "txbuf start 0x%04x, txbuf size %d\n" - - "rxdesc_start 0x%p\n" - "rxhostdesc_start 0x%p, rxhostdesc_area_size %u\n" - "rxbuf_start 0x%p, rxbuf_area_size %u\n", - - adev->irq_mask, adev->irq_status, read_reg32(adev, IO_ACX_IRQ_STATUS_NON_DES), - - adev->tx.buf.txstart, adev->tx.buf.size, adev->tx.desc_size, - adev->tx.desc_start, adev->tx.host.txstart, - adev->tx.host.size, adev->acx_txbuf_start, - adev->acx_txbuf_numblocks * adev->memblocksize, - - adev->rx.desc_start, - adev->rx.host.rxstart, adev->rx.host.size, - adev->rx.buf.rxstart, adev->rx.buf.size); - - acxmem_unlock(); - FN_EXIT0; - return 0; -} -#endif // acxmem_proc_diag_output() /* * BOM Rx Path @@ -2661,15 +2173,6 @@ static int acxmem_get_txbuf_space_needed(acx_device_t *adev, unsigned int len) { return (blocks_needed); } -#if 0 // acxmem_get_txdesc() -static inline -txdesc_t* acxmem_get_txdesc(acx_device_t *adev, int index) -{ - return (txdesc_t*) (((u8*) adev->tx.desc_start) - + index * adev->tx.desc_size); -} -#endif - /* * acxmem_l_alloc_tx * Actually returns a txdesc_t* ptr @@ -4539,283 +4042,6 @@ void acx_delete_dma_regions(acx_device_t *adev) * ================================================== */ -/* - * acxmem_e_probe - * - * Probe routine called when a PCI device w/ matching ID is found. - * Here's the sequence: - * - Allocate the PCI resources. - * - Read the PCMCIA attribute memory to make sure we have a WLAN card - * - Reset the MAC - * - Initialize the dev and wlan data - * - Initialize the MAC - * - * pdev - ptr to pci device structure containing info about pci configuration - * id - ptr to the device id entry that matched this device - */ -#if 0 /* acxmem_probe() */ -static int __devinit acxmem_probe(struct platform_device *pdev) { - - acx_device_t *adev = NULL; - const char *chip_name; - int result = -EIO; - int err; - int i; - - struct resource *iomem; - unsigned long addr_size = 0; - u8 chip_type; - - acxmem_lock_flags; - - struct ieee80211_hw *ieee; - - FN_ENTER; - - ieee = ieee80211_alloc_hw(sizeof(struct acx_device), &acxmem_hw_ops); - if (!ieee) { - pr_acx("could not allocate ieee80211 structure %s\n", - pdev->name); - goto fail_ieee80211_alloc_hw; - } - SET_IEEE80211_DEV(ieee, &pdev->dev); - ieee->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS; - /* TODO: mainline doesn't support the following flags yet */ - /* - ~IEEE80211_HW_MONITOR_DURING_OPER & - ~IEEE80211_HW_WEP_INCLUDE_IV; - */ - ieee->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) - | BIT(NL80211_IFTYPE_ADHOC); - ieee->queues = 1; - /* OW TODO Check if RTS/CTS threshold can be included here */ - - /* TODO: although in the original driver the maximum value was - * 100, the OpenBSD driver assigns maximum values depending on - * the type of radio transceiver (i.e. Radia, Maxim, - * etc.). This value is always a positive integer which most - * probably indicates the gain of the AGC in the rx path of - * the chip, in dB steps (0.625 dB, for example?). The - * mapping of this rssi value to dBm is still unknown, but it - * can nevertheless be used as a measure of relative signal - * strength. The other two values, i.e. max_signal and - * max_noise, do not seem to be supported on my acx111 card - * (they are always 0), although iwconfig reports them (in - * dBm) when using ndiswrapper with the Windows XP driver. The - * GPL-licensed part of the AVM FRITZ!WLAN USB Stick driver - * sources (for the TNETW1450, though) seems to also indicate - * that only the RSSI is supported. In conclusion, the - * max_signal and max_noise values will not be initialised by - * now, as they do not seem to be supported or how to acquire - * them is still unknown. */ - - /* We base signal quality on winlevel approach of previous driver - * TODO OW 20100615 This should into a common init code - */ - ieee->flags |= IEEE80211_HW_SIGNAL_UNSPEC; - ieee->max_signal = 100; - - adev = ieee2adev(ieee); - - memset(adev, 0, sizeof(*adev)); - /** Set up our private interface **/ - spin_lock_init(&adev->spinlock); /* initial state: unlocked */ - /* We do not start with downed sem: we want PARANOID_LOCKING to work */ - mutex_init(&adev->mutex); - /* since nobody can see new netdev yet, we can as well just - * _presume_ that we're under sem (instead of actually taking - * it): */ - /* acx_sem_lock(adev); */ - adev->ieee = ieee; - adev->pdev = pdev; - adev->bus_dev = &pdev->dev; - adev->dev_type = DEVTYPE_MEM; - - /** Finished with private interface **/ - - - /** begin board specific inits **/ - platform_set_drvdata(pdev, ieee); - - /* chiptype is u8 but id->driver_data is ulong - * Works for now (possible values are 1 and 2) */ - chip_type = CHIPTYPE_ACX100; - /* acx100 and acx111 have different PCI memory regions */ - if (chip_type == CHIPTYPE_ACX100) { - chip_name = "ACX100"; - } else if (chip_type == CHIPTYPE_ACX111) { - chip_name = "ACX111"; - } else { - pr_acx("unknown chip type 0x%04X\n", chip_type); - goto fail_unknown_chiptype; - } - - pr_acx("found %s-based wireless network card\n", chip_name); - log(L_ANY, "initial debug setting is 0x%04X\n", acx_debug); - - adev->dev_type = DEVTYPE_MEM; - adev->chip_type = chip_type; - adev->chip_name = chip_name; - adev->io = (CHIPTYPE_ACX100 == chip_type) ? IO_ACX100 : IO_ACX111; - - iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0); - addr_size = iomem->end - iomem->start + 1; - adev->membase = (volatile u32 *) iomem->start; - adev->iobase = (volatile u32 *) ioremap_nocache(iomem->start, addr_size); - if (!adev->iobase) { - result = -ENOMEM; - dev_err(adev->bus_dev, "Couldn't ioremap\n"); - goto fail_ioremap; - } - - i = platform_get_irq(pdev, 0); - if (i < 0) - return i; - adev->irq = i; - - log(L_ANY, "found an %s-based wireless network card, " - "irq:%d, " - "membase:0x%p, mem_size:%ld, " - "iobase:0x%p", - chip_name, - adev->irq, - adev->membase, addr_size, - adev->iobase); - log(L_ANY, "the initial debug setting is 0x%04X\n", acx_debug); - - if (adev->irq == 0) { - pr_acx("can't use IRQ 0\n"); - goto fail_request_irq; - } - - log(L_IRQ | L_INIT, "using IRQ %d\n", adev->irq); - /* request shared IRQ handler */ - if (request_irq(adev->irq, acx_interrupt, - IRQF_SHARED, - KBUILD_MODNAME, - adev)) { - pr_acx("%s: request_irq FAILED\n", - wiphy_name(adev->ieee->wiphy)); - result = -EAGAIN; - goto fail_request_irq; - } - #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) - set_irq_type(adev->irq, IRQF_TRIGGER_FALLING); - #else - irq_set_irq_type(adev->irq, IRQF_TRIGGER_FALLING); - #endif - log(L_ANY, "request_irq %d successful\n", adev->irq); - /* Acx irqs shall be off and are enabled later in acxpci_s_up */ - acxmem_lock(); - acxmem_irq_disable(adev); - acxmem_unlock(); - - /* to find crashes due to weird driver access - * to unconfigured interface (ifup) */ - adev->mgmt_timer.function = (void(*)(unsigned long)) 0x0000dead; - - acx_show_card_eeprom_id(adev); - - /* Device setup is finished, now start initializing the card */ - /* --- */ - - acx_init_task_scheduler(adev); - - /* Mac80211 Tx_queue */ - INIT_WORK(&adev->tx_work, acx_tx_work); - skb_queue_head_init(&adev->tx_queue); - - /* OK init parts from pci.c are done in acxmem_complete_hw_reset(adev) */ - if (OK != acxmem_complete_hw_reset(adev)) - goto fail_complete_hw_reset; - - /* - * Set up default things for most of the card settings. - */ - acx_set_defaults(adev); - - /* Register the card, AFTER everything else has been set up, - * since otherwise an ioctl could step on our feet due to - * firmware operations happening in parallel or uninitialized - * data */ - - if (acx_proc_register_entries(ieee) != OK) - goto fail_proc_register_entries; - - /* Now we have our device, so make sure the kernel doesn't try - * to send packets even though we're not associated to a - * network yet */ - -/* OW FIXME Check if acx_stop_queue, acx_carrier_off should be included - * OW Rest can be cleaned up - */ -#if 0 - acx_stop_queue(ndev, "on probe"); - acx_carrier_off(ndev, "on probe"); -#endif - - pr_acx("net device %s, driver compiled " - "against wireless extensions %d and Linux %s\n", - wiphy_name(adev->ieee->wiphy), WIRELESS_EXT, UTS_RELEASE); - - MAC_COPY(adev->ieee->wiphy->perm_addr, adev->dev_addr); - - /** done with board specific setup **/ - - /* need to be able to restore PCI state after a suspend */ -#ifdef CONFIG_PM - /* pci_save_state(pdev); */ -#endif - - err = acx_setup_modes(adev); - if (err) { - pr_acx("can't setup hwmode\n"); - goto fail_acx_setup_modes; - } - - err = ieee80211_register_hw(ieee); - if (OK != err) { - pr_acx("ieee80211_register_hw() FAILED: %d\n", err); - goto fail_ieee80211_register_hw; - } - -#if CMD_DISCOVERY - great_inquisitor(adev); -#endif /* CMD_DISCOVERY */ - - result = OK; - goto done; - - - /* error paths: undo everything in reverse order... */ - fail_ieee80211_register_hw: - - fail_acx_setup_modes: - - fail_proc_register_entries: - acx_proc_unregister_entries(ieee); - - fail_complete_hw_reset: - - fail_request_irq: - free_irq(adev->irq, adev); - - fail_ioremap: - if (adev->iobase) - iounmap((void *)adev->iobase); - - fail_unknown_chiptype: - - fail_ieee80211_alloc_hw: - acxmem_delete_dma_regions(adev); - platform_set_drvdata(pdev, NULL); - ieee80211_free_hw(ieee); - -done: - FN_EXIT1(result); - return result; -} -#endif /* acxmem_probe() */ /* * acxmem_e_remove -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:40
|
Merge together pci.c and mem.c versions (and #if0 them), move fn-proto from pci.h to merge.h (mem.h didnt have one ?!). Pull some of the crufty loop-delay stuff into 2 helper functions, (defer trying simpler/cleaner mem delay in pci branch). Note: many log entries look like this: acx._acx_issue_cmd_timeo_debug: ACX1xx_CMD_ENABLE_RX: took 9 jiffies to complete This is a burst of 8 reads, followed by 8 ms wait. Almost certainly, the simpler mem loop will go faster, and do fewer io reads. Signed-off-by: Jim Cromie <jim...@gm...> --- common.c | 7 +- mem.c | 4 +- merge.c | 327 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ merge.h | 4 + pci.c | 3 +- pci.h | 3 - 6 files changed, 337 insertions(+), 11 deletions(-) diff --git a/common.c b/common.c index 3d7089e..7310c33 100644 --- a/common.c +++ b/common.c @@ -1654,15 +1654,12 @@ int acx_write_phy_reg(acx_device_t *adev, u32 reg, u8 value) int acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, void *param, unsigned len, unsigned timeout, const char* cmdstr) { - if (IS_PCI(adev)) - return acxpci_issue_cmd_timeo_debug(adev, cmd, param, len, + if (IS_PCI(adev) || IS_MEM(adev)) + return _acx_issue_cmd_timeo_debug(adev, cmd, param, len, timeout, cmdstr); if (IS_USB(adev)) return acxusb_issue_cmd_timeo_debug(adev, cmd, param, len, timeout, cmdstr); - if (IS_MEM(adev)) - return acxmem_issue_cmd_timeo_debug(adev, cmd, param, len, - timeout, cmdstr); log(L_ANY, "Unsupported dev_type=%i\n", (adev)->dev_type); diff --git a/mem.c b/mem.c index 185fda7..c331231 100644 --- a/mem.c +++ b/mem.c @@ -461,7 +461,7 @@ void acxmem_chaincopy_from_slavemem(acx_device_t *adev, u8 *destination, * Also ifup/down works more reliable on the mem device. * */ -#if 1 // copied to merge, but needs work +#if 0 // acxmem_issue_cmd_timeo_debug() int acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, void *buffer, unsigned buflen, @@ -663,7 +663,7 @@ acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, FN_EXIT1(NOT_OK); return NOT_OK; } -#endif +#endif // acxmem_issue_cmd_timeo_debug() /* diff --git a/merge.c b/merge.c index 0340968..d00856f 100644 --- a/merge.c +++ b/merge.c @@ -1575,6 +1575,333 @@ static inline void acx_show_card_eeprom_id(acx_device_t *adev) {} * ================================================== */ +int acxmem_wait_cmd_status(acx_device_t *adev, unsigned cmd, + void *buffer, unsigned buflen, + unsigned cmd_timeout, const char *cmdstr, + const char *devname) +{ + unsigned counter; + u16 cmd_status = -1; + + counter = 199; /* in ms */ + do { + cmd_status = acx_read_cmd_type_status(adev); + /* Test for IDLE state */ + if (!cmd_status) + break; + + udelay(1000); + } while (likely(--counter)); + + if (!counter) { + /* the card doesn't get idle, we're in trouble */ + pr_acx("%s: cmd_status is not IDLE: 0x%04X!=0\n", + devname, cmd_status); + return -1; + } + else if (counter < 190) + /* if waited > 10ms ... */ + pr_info("waited %dms on cmd: %s Please report\n", + 199-counter, cmdstr); + else + log(L_CTL | L_DEBUG, "waited for IDLE %dms after cmd:%s\n", + 199 - counter, cmdstr); + + return 0; +} + +/* ugly version of above - take literally as possible now, clean up later */ + +int acxpci_wait_cmd_status(acx_device_t *adev, unsigned cmd, + void *buffer, unsigned buflen, + unsigned cmd_timeout, const char *cmdstr, + const char *devname) +{ + unsigned long timeout; + unsigned counter; + u16 cmd_status = -1; + + /* wait for firmware to become idle for our command submission */ + timeout = HZ / 5; + counter = (timeout * 1000 / HZ) - 1; /* in ms */ + timeout += jiffies; + do { + cmd_status = acx_read_cmd_type_status(adev); + /* Test for IDLE state */ + if (!cmd_status) + break; + if (counter % 8 == 0) { + if (time_after(jiffies, timeout)) { + counter = 0; + break; + } + /* we waited 8 iterations, no luck. Sleep 8 ms */ + acx_mwait(8); + } + } while (likely(--counter)); + + if (!counter) { + /* the card doesn't get idle, we're in trouble */ + pr_acx("%s: cmd_status is not IDLE: 0x%04X!=0\n", + devname, cmd_status); + return -1; + } + else if (counter < 190) + /* if waited > 10ms ... */ + pr_info("waited %dms on cmd: %s Please report\n", + 199-counter, cmdstr); + else + log(L_CTL | L_DEBUG, "waited for IDLE %dms after cmd:%s\n", + 199 - counter, cmdstr); + + return 0; +} + +/* + * _acx_issue_cmd_timeo_debug + * + * Sends command to fw, extract result + * + * OW, 20100630: + * + * The mem device is quite sensible to data access operations, + * therefore we may not sleep during the command handling. + * + * This has manifested as problem during sw-scan while if up. The acx + * got stuck - most probably due to concurrent data access collision. + * + * By not sleeping anymore and doing the entire operation completely + * under spinlock (thus with irqs disabled), the sw scan problem was + * solved. + * + * We can now run repeating sw scans, under load, without that the acx + * device gets stuck. + * + * Also ifup/down works more reliable on the mem device. + * + */ + +int _acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, + void *buffer, unsigned buflen, + unsigned cmd_timeout, const char *cmdstr) +{ + unsigned long start = jiffies; + unsigned long timeout; + unsigned counter; + const char *devname; + u16 irqtype; + u16 cmd_status = -1; + int i, j, rc; + u8 *p; + + acxmem_lock_flags; + + FN_ENTER; + acxmem_lock(); + + devname = wiphy_name(adev->ieee->wiphy); + if (!devname || !devname[0] || devname[4] == '%') + devname = "acx"; + + log(L_CTL, "cmd:%s, cmd:0x%04X, buflen:%u, timeout:%ums, type:0x%04X)\n", + cmdstr, cmd, buflen, cmd_timeout, + buffer ? le16_to_cpu(((acx_ie_generic_t *)buffer)->type) : -1); + + if (!(adev->dev_state_mask & ACX_STATE_FW_LOADED)) { + pr_acx("%s: firmware is not loaded yet, cannot execute commands!\n", + devname); + goto bad; + } + + if ((acx_debug & L_DEBUG) && (cmd != ACX1xx_CMD_INTERROGATE)) { + pr_acx("input buffer (len=%u):\n", buflen); + acx_dump_bytes(buffer, buflen); + } + + /* wait for firmware to become idle for our command submission */ + if (IS_MEM(adev)) + rc = acxmem_wait_cmd_status(adev, cmd, buffer, buflen, + cmd_timeout, cmdstr, devname); + else + rc = acxpci_wait_cmd_status(adev, cmd, buffer, buflen, + cmd_timeout, cmdstr, devname); + if (rc) + goto bad; + + /* now write the parameters of the command if needed */ + if (buffer && buflen) { + /* if it's an INTERROGATE command, just pass the length + * of parameters to read, as data */ +#if CMD_DISCOVERY + if (cmd == ACX1xx_CMD_INTERROGATE) + memset_io(adev->cmd_area + 4, 0xAA, buflen); +#endif + if (IS_PCI(adev)) + /* adev->cmd_area points to PCI device's memory, not to RAM! */ + memcpy_toio(adev->cmd_area + 4, buffer, + (cmd == ACX1xx_CMD_INTERROGATE) ? 4 : buflen); + else + /* slave memory version */ + acxmem_copy_to_slavemem(adev, + (uintptr_t) (adev->cmd_area + 4), buffer, + (cmd == ACX1xx_CMD_INTERROGATE) ? 4 : buflen); + } + /* now write the actual command type */ + acx_write_cmd_type_status(adev, cmd, 0); + + /* clear CMD_COMPLETE bit. can be set only by IRQ handler: */ + CLEAR_BIT(adev->irq_status, HOST_INT_CMD_COMPLETE); + + /* execute command */ + write_reg16(adev, IO_ACX_INT_TRIG, INT_TRIG_CMD); + write_flush(adev); + + /* wait for firmware to process command */ + + /* Ensure nonzero and not too large timeout. Also converts + * e.g. 100->99, 200->199 which is nice but not essential */ + cmd_timeout = (cmd_timeout - 1) | 1; + if (unlikely(cmd_timeout > 1199)) + cmd_timeout = 1199; + + /* we schedule away sometimes (timeout can be large) */ + counter = cmd_timeout; + /* pci only */ + timeout = jiffies + cmd_timeout * HZ / 1000; + + do { + irqtype = read_reg16(adev, IO_ACX_IRQ_STATUS_NON_DES); + if (irqtype & HOST_INT_CMD_COMPLETE) { + write_reg16(adev, IO_ACX_IRQ_ACK, HOST_INT_CMD_COMPLETE); + break; + } + + if (adev->irq_status & HOST_INT_CMD_COMPLETE) + break; + + if (IS_MEM(adev)) + udelay(1000); + else + /* another pci waitloop kludge */ + if (counter % 8 == 0) { + if (time_after(jiffies, timeout)) { + counter = 0; + break; + } + /* we waited 8 iterations, no luck. Sleep 8 ms */ + acx_mwait(8); + } + + } while (likely(--counter)); + + /* save state for debugging */ + cmd_status = acx_read_cmd_type_status(adev); + + /* put the card in IDLE state */ + acx_write_cmd_type_status(adev, ACX1xx_CMD_RESET, 0); + + /* Timed out! */ + if (counter == 0) { // pci == -1, trivial + + log(L_ANY, "%s: Timed out %s for CMD_COMPLETE. " + "irq bits:0x%04X irq_status:0x%04X timeout:%dms " + "cmd_status:%d (%s)\n", devname, + (adev->irqs_active) ? "waiting" : "polling", + irqtype, adev->irq_status, cmd_timeout, + cmd_status, acx_cmd_status_str(cmd_status)); + log(L_ANY, + "timeout: counter:%d cmd_timeout:%d cmd_timeout-counter:%d\n", + counter, cmd_timeout, cmd_timeout - counter); + + if (IS_MEM(adev)) { + if (read_reg16(adev, IO_ACX_IRQ_MASK) == 0xffff) { + log(L_ANY,"firmware probably hosed - reloading: FIXME: Not implmemented\n"); + FIXME(); + } + } + } + else if (cmd_timeout - counter > 30) { /* if waited >30ms... */ + log(L_CTL|L_DEBUG, + "%s for CMD_COMPLETE %dms. count:%d. Please report\n", + (adev->irqs_active) ? "waited" : "polled", + cmd_timeout - counter, counter); + } + + log(L_CTL, "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X: %s\n", + devname, cmdstr, buflen, cmd_timeout, + buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, + acx_cmd_status_str(cmd_status) + ); + + if (cmd_status != 1) { /* it is not a 'Success' */ + + /* zero out result buffer + * WARNING: this will trash stack in case of illegally + * large input length! */ + + if (IS_PCI(adev)) + goto skip_mem_stuff; + + if (buflen > 388) { + /* + * 388 is maximum command length + */ + log(L_ANY, "invalid length 0x%08x\n", buflen); + buflen = 388; + } + p = (u8 *) buffer; + for (i = 0; i < buflen; i += 16) { + printk("%04x:", i); + for (j = 0; (j < 16) && (i + j < buflen); j++) { + printk(" %02x", *p++); + } + printk("\n"); + } + + skip_mem_stuff: + if (buffer && buflen) + memset(buffer, 0, buflen); + goto bad; + } + + /* read in result parameters if needed */ + if (buffer && buflen && (cmd == ACX1xx_CMD_INTERROGATE)) { + if (IS_MEM(adev)) + acxmem_copy_from_slavemem(adev, buffer, + (uintptr_t) (adev->cmd_area + 4), buflen); + else + memcpy_fromio(buffer, adev->cmd_area + 4, buflen); + + if (acx_debug & L_DEBUG) { + log(L_ANY, "output buffer (len=%u): ", buflen); + acx_dump_bytes(buffer, buflen); + } + } + + /* ok: */ + log(L_DEBUG, "%s: took %ld jiffies to complete\n", + cmdstr, jiffies - start); + + acxmem_unlock(); + FN_EXIT1(OK); + return OK; + +bad: + /* Give enough info so that callers can avoid printing their + * own diagnostic messages */ + log(L_ANY, + "%s: cmd=%s, buflen=%u, timeout=%ums, type=0x%04X, status=%s: FAILED\n", + devname, cmdstr, buflen, cmd_timeout, + buffer ? le16_to_cpu(((acx_ie_generic_t *) buffer)->type) : -1, + acx_cmd_status_str(cmd_status) + ); + + acxmem_unlock(); + FN_EXIT1(NOT_OK); + return NOT_OK; +} + + u32 acx_read_cmd_type_status(acx_device_t *adev) { u32 cmd_type, cmd_status; diff --git a/merge.h b/merge.h index 0fbc4a4..767ef68 100644 --- a/merge.h +++ b/merge.h @@ -27,6 +27,10 @@ static int __init acx_debugfs_init(void) { return 0; } static void __exit acx_debugfs_exit(void) { } #endif /* defined CONFIG_DEBUG_FS */ +int _acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, + void *buffer, unsigned buflen, unsigned cmd_timeout, + const char *cmdstr); + #if defined CONFIG_ACX_MAC80211_PCI || defined CONFIG_ACX_MAC80211_MEM # define PCI_OR_MEM #endif diff --git a/pci.c b/pci.c index a2a73c1..e29b8be 100644 --- a/pci.c +++ b/pci.c @@ -138,6 +138,7 @@ static void vlynq_remove(struct vlynq_device *vdev); * ================================================== */ +#if 0 // acxpci_issue_cmd_timeo_debug /* * acxpci_issue_cmd_timeo_debug * @@ -341,7 +342,7 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, return NOT_OK; } - +#endif // acxpci_issue_cmd_timeo_debug /* * BOM Init, Configuration (Control Path) diff --git a/pci.h b/pci.h index ff57b87..9b61bdf 100644 --- a/pci.h +++ b/pci.h @@ -15,9 +15,6 @@ int acxpci_validate_fw(acx_device_t *adev, const firmware_image_t *fw_image, u32 offset); /* CMDs (Control Path) */ -int acxpci_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, - void *buffer, unsigned buflen, unsigned cmd_timeout, - const char *cmdstr); void acxpci_init_mboxes(acx_device_t *adev); -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:41
|
Force branches added previously to use simpler wait-loop code from mem.c version. This loop often completes after 1 ms (2 reads), the complicated pci loop cant really do better (it could burst up to 8 reads, and complete faster, but..). Obsessively, we could compute udelay arg once, based upon bogomips, and/or move the udelay above the read, so the chip has a bit more chance to finish the command. Add space into "%d ms", and change cmd:%x to print just 2 hexdigits, which fits the values actually sent. Change cmd varname to cmdarg in acx_init_max_template_generic(), cuz its passed into a macro, and stringified in 2nd (cmdstr) expansion. This works fine for literal constants, but is crappy for vals in vars. Name change makes it slightly less crappy. acx._acx_issue_cmd_timeo_debug: cmd:ACX1xx_CMD_INTERROGATE, cmd:0x0001, buflen:6, timeout:50ms, type:0x100A) acx._acx_issue_cmd_timeo_debug: cmd:cmd, cmd:0x0013, buflen:342, timeout:50ms, type:0x0154) Signed-off-by: Jim Cromie <jim...@gm...> --- common.c | 4 ++-- merge.c | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/common.c b/common.c index 7310c33..460d0d7 100644 --- a/common.c +++ b/common.c @@ -3355,7 +3355,7 @@ static int acx_set_beacon(acx_device_t *adev, struct sk_buff *beacon) * ================================================== */ static int acx_init_max_template_generic(acx_device_t *adev, unsigned int len, - unsigned int cmd) + unsigned int cmdarg) { int res; union { @@ -3368,7 +3368,7 @@ static int acx_init_max_template_generic(acx_device_t *adev, unsigned int len, memset(&templ, 0, len); templ.null.size = cpu_to_le16(len - 2); - res = acx_issue_cmd(adev, cmd, &templ, len); + res = acx_issue_cmd(adev, cmdarg, &templ, len); return res; } diff --git a/merge.c b/merge.c index d00856f..1d90d97 100644 --- a/merge.c +++ b/merge.c @@ -1601,10 +1601,10 @@ int acxmem_wait_cmd_status(acx_device_t *adev, unsigned cmd, } else if (counter < 190) /* if waited > 10ms ... */ - pr_info("waited %dms on cmd: %s Please report\n", + pr_info("waited %d ms on cmd: %s Please report\n", 199-counter, cmdstr); else - log(L_CTL | L_DEBUG, "waited for IDLE %dms after cmd:%s\n", + log(L_CTL | L_DEBUG, "waited for IDLE %d ms after cmd: %s\n", 199 - counter, cmdstr); return 0; @@ -1648,10 +1648,10 @@ int acxpci_wait_cmd_status(acx_device_t *adev, unsigned cmd, } else if (counter < 190) /* if waited > 10ms ... */ - pr_info("waited %dms on cmd: %s Please report\n", - 199-counter, cmdstr); + pr_info("waited %d ms on cmd: %s Please report\n", + 199 - counter, cmdstr); else - log(L_CTL | L_DEBUG, "waited for IDLE %dms after cmd:%s\n", + log(L_CTL | L_DEBUG, "waited for IDLE %d ms after cmd: %s\n", 199 - counter, cmdstr); return 0; @@ -1703,7 +1703,7 @@ int _acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, if (!devname || !devname[0] || devname[4] == '%') devname = "acx"; - log(L_CTL, "cmd:%s, cmd:0x%04X, buflen:%u, timeout:%ums, type:0x%04X)\n", + log(L_CTL, "cmd:%s, cmd:0x%02X, buflen:%u, timeout:%ums, type:0x%04X\n", cmdstr, cmd, buflen, cmd_timeout, buffer ? le16_to_cpu(((acx_ie_generic_t *)buffer)->type) : -1); @@ -1719,7 +1719,7 @@ int _acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, } /* wait for firmware to become idle for our command submission */ - if (IS_MEM(adev)) + if (1 || IS_MEM(adev)) rc = acxmem_wait_cmd_status(adev, cmd, buffer, buflen, cmd_timeout, cmdstr, devname); else @@ -1779,7 +1779,7 @@ int _acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, if (adev->irq_status & HOST_INT_CMD_COMPLETE) break; - if (IS_MEM(adev)) + if (1 || IS_MEM(adev)) udelay(1000); else /* another pci waitloop kludge */ @@ -1804,7 +1804,7 @@ int _acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, if (counter == 0) { // pci == -1, trivial log(L_ANY, "%s: Timed out %s for CMD_COMPLETE. " - "irq bits:0x%04X irq_status:0x%04X timeout:%dms " + "irq bits:0x%02X irq_status:0x%04X timeout:%dms " "cmd_status:%d (%s)\n", devname, (adev->irqs_active) ? "waiting" : "polling", irqtype, adev->irq_status, cmd_timeout, @@ -1914,7 +1914,7 @@ u32 acx_read_cmd_type_status(acx_device_t *adev) cmd_status = (cmd_type >> 16); cmd_type = (u16) cmd_type; - log(L_DEBUG, "cmd_type:%04X cmd_status:%04X [%s]\n", + log(L_DEBUG, "cmd_type:%02X cmd_status:%04X [%s]\n", cmd_type, cmd_status, acx_cmd_status_str(cmd_status)); -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:43
|
acx_compat.h: add a #define irq_set_irq_type set_irq_type Use it to drop 2 #if/#else/#endifs in pci.c mem.c Signed-off-by: Jim Cromie <jim...@gm...> --- acx_compat.h | 5 +++++ mem.c | 5 +---- pci.c | 4 ---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/acx_compat.h b/acx_compat.h index dba1040..c05de45 100644 --- a/acx_compat.h +++ b/acx_compat.h @@ -57,3 +57,8 @@ do { \ # define OP_TX_RET_TYPE void # define OP_TX_RET_OK /* void */ #endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) +/* map new name to old */ +# define irq_set_irq_type set_irq_type +#endif diff --git a/mem.c b/mem.c index c331231..feb8719 100644 --- a/mem.c +++ b/mem.c @@ -2138,11 +2138,8 @@ static int __devinit acxmem_probe(struct platform_device *pdev) result = -EAGAIN; goto fail_request_irq; } - #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) - set_irq_type(adev->irq, IRQF_TRIGGER_FALLING); - #else irq_set_irq_type(adev->irq, IRQF_TRIGGER_FALLING); - #endif + log(L_ANY, "request_irq %d successful\n", adev->irq); /* Acx irqs shall be off and are enabled later in acx_up */ acxmem_lock(); diff --git a/pci.c b/pci.c index e29b8be..19df744 100644 --- a/pci.c +++ b/pci.c @@ -1727,11 +1727,7 @@ static __devinit int vlynq_probe(struct vlynq_device *vdev, vlynq_set_local_mapping(vdev, vdev->mem_start, mapping); vlynq_set_remote_mapping(vdev, 0, match->rx_mapping); -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) - set_irq_type(vlynq_virq_to_irq(vdev, match->irq), match->irq_type); -#else irq_set_irq_type(vlynq_virq_to_irq(vdev, match->irq), match->irq_type); -#endif addr = (u32)ioremap(vdev->mem_start, 0x1000); if (!addr) { -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:45
|
define ENDIAN_STR, IO_COMPILE_NOTE constant strings once, and replace #if/#then/#else uses with them. Signed-off-by: Jim Cromie <jim...@gm...> --- acx_compat.h | 4 ++++ acx_config.h | 19 +++++++++++++++++-- mem.c | 23 ++++------------------- merge.c | 24 ++++-------------------- pci.c | 18 ++---------------- 5 files changed, 31 insertions(+), 57 deletions(-) diff --git a/acx_compat.h b/acx_compat.h index c05de45..b3d2141 100644 --- a/acx_compat.h +++ b/acx_compat.h @@ -1,3 +1,5 @@ +#ifndef _ACX_COMPAT_H_ +#define _ACX_COMPAT_H_ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 40) #include <linux/ratelimit.h> @@ -62,3 +64,5 @@ do { \ /* map new name to old */ # define irq_set_irq_type set_irq_type #endif + +#endif /* _ACX_COMPAT_H_ */ diff --git a/acx_config.h b/acx_config.h index 7de4482..09cd8b8 100644 --- a/acx_config.h +++ b/acx_config.h @@ -48,10 +48,19 @@ // L_ANY #define ACX_DEFAULT_MSG (L_ASSOC|L_INIT) -/* assume 32bit I/O width - * (16bit is also compatible with Compact Flash) */ +/* assume 32bit I/O width (16bit is also compatible with Compact Flash) */ #define ACX_IO_WIDTH 32 +#if (ACX_IO_WIDTH == 32) +# define IO_COMPILE_NOTE \ + "compiled to use 32bit I/O access. " \ + "I/O timing issues might occur, such as " \ + "non-working firmware upload. Report them\n" +#else +# define IO_COMPILE_NOTE \ + "compiled to use 16bit I/O access only (compatibility mode)\n" +#endif + /* Set this to 1 if you want monitor mode to use * phy header. Currently it is not useful anyway since we * don't know what useful info (if any) is in phy header. @@ -83,4 +92,10 @@ /* 1 - development/debug: probe for IEs on modprobe */ #define CMD_DISCOVERY 0 +#ifdef __LITTLE_ENDIAN +#define ENDIAN_STR "acx: running on a little-endian CPU\n" +#else +#define ENDIAN_STR "acx: running on a BIG-ENDIAN CPU\n" +#endif + #endif /* _ACX_CONFIG_H_ */ diff --git a/mem.c b/mem.c index feb8719..fd77a69 100644 --- a/mem.c +++ b/mem.c @@ -2484,25 +2484,10 @@ int __init acxmem_init_module(void) FN_ENTER; pr_info("built with CONFIG_ACX_MAC80211_MEM\n"); -#if (ACX_IO_WIDTH==32) - pr_acx("compiled to use 32bit I/O access. " - "I/O timing issues might occur, such as " - "non-working firmware upload. Report them\n"); -#else - pr_acx("compiled to use 16bit I/O access only " - "(compatibility mode)\n"); -#endif - -#ifdef __LITTLE_ENDIAN -#define ENDIANNESS_STRING "acx: running on a little-endian CPU\n" -#else -#define ENDIANNESS_STRING "acx: running on a BIG-ENDIAN CPU\n" -#endif - log(L_INIT, - ENDIANNESS_STRING - "acx: Slave-memory module initialized, " - "waiting for cards to probe...\n" - ); + pr_acx(IO_COMPILE_NOTE); + log(L_INIT, ENDIAN_STR + "acx: Slave-memory module initialized, " + "waiting for cards to probe...\n"); res = platform_driver_register(&acxmem_driver); FN_EXIT1(res); diff --git a/merge.c b/merge.c index 1d90d97..9bcdd8a 100644 --- a/merge.c +++ b/merge.c @@ -4594,26 +4594,10 @@ int __init acxmem_init_module(void) { FN_ENTER; -#if (ACX_IO_WIDTH == 32) - pr_acx("compiled to use 32bit I/O access. " - "I/O timing issues might occur, such as " - "non-working firmware upload. Report them\n"); -#else - pr_acx("compiled to use 16bit I/O access only " - "(compatibility mode)\n"); -#endif /* (ACX_IO_WIDTH == 32) */ - -#ifdef __LITTLE_ENDIAN -#define ENDIANNESS_STRING "acx: running on a little-endian CPU\n" -#else -#define ENDIANNESS_STRING "acx: running on a BIG-ENDIAN CPU\n" -#endif /* __LITTLE_ENDIAN */ - - log(L_INIT, - ENDIANNESS_STRING - "acx: Slave-memory module initialized, " - "waiting for cards to probe...\n" - ); + pr_acx(IO_COMPILE_NOTE); + log(L_INIT, ENDIAN_STR + "acx: Slave-memory module initialized, " + "waiting for cards to probe...\n"); res = platform_driver_register(&acxmem_driver); FN_EXIT1(res); diff --git a/pci.c b/pci.c index 19df744..dcf3bda 100644 --- a/pci.c +++ b/pci.c @@ -1981,22 +1981,8 @@ int __init acxpci_init_module(void) FN_ENTER; pr_info("built with CONFIG_ACX_MAC80211_PCI\n"); - -#if (ACX_IO_WIDTH==32) - log(L_INIT, "compiled to use 32bit I/O access. " - "I/O timing issues might occur, such as " - "non-working firmware upload. Report them\n"); -#else - log(L_INIT, "compiled to use 16bit I/O access only " - "(compatibility mode)\n"); -#endif - -#ifdef __LITTLE_ENDIAN -#define ENDIANNESS_STRING "running on a little-endian CPU\n" -#else -#define ENDIANNESS_STRING "running on a BIG-ENDIAN CPU\n" -#endif - log(L_INIT, ENDIANNESS_STRING + pr_acx(IO_COMPILE_NOTE); + log(L_INIT, ENDIAN_STR " PCI/VLYNQ module initialized, waiting for cards to probe...\n"); #if defined(CONFIG_PCI) -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:47
|
Signed-off-by: Jim Cromie <jim...@gm...> --- common.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/common.c b/common.c index 460d0d7..f96ba75 100644 --- a/common.c +++ b/common.c @@ -6935,6 +6935,7 @@ static struct kernel_param_ops acx_debug_flag_ops = { .set = acx_debug_flag_set, }; module_param_cb(debugflags, &acx_debug_flag_ops, "str", 0644); +MODULE_PARM_DESC(debugflags, "read/set flag names: +L_CTL,-L_BUFT etc"); #endif /* implement /sys/module/acx_mac80211/parameters/debugflags */ #endif /* ACX_DEBUG */ -- 1.7.7.6 |
From: Jim C. <jim...@gm...> - 2012-05-25 18:49:49
|
Since switch to pr_fmt() and its users, we have uniform __func__ prefixing, and logf0, logf1 just add it a 2nd time. Fix this by changing macro defn rather than many spots in code; this lets us go back if, for brevity, we drop __func__ from pr_fmt(). Signed-off-by: Jim Cromie <jim...@gm...> --- acx_func.h | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) diff --git a/acx_func.h b/acx_func.h index af20ab5..ceba2c4 100644 --- a/acx_func.h +++ b/acx_func.h @@ -205,11 +205,12 @@ const char *acx_cmd_status_str(unsigned int state); pr_notice(args); \ } while (0) -/* Log with prefix "acx: __func__ */ -#define logf0(chan, msg) \ - log(chan, "acx: %s: " msg, __func__); -#define logf1(chan, msg, args...) \ - log(chan, "acx: %s: " msg, __func__, args); +/* Log with prefix "acx: __func__. + No - suppress this, its handled now by pr_fmt() etc. + preserve the api just in case.. + */ +#define logf0 log +#define logf1 log /* None-Debug build * OW 20100405: An none-debug build is currently probably broken -- 1.7.7.6 |
From: Oliver W. <oli...@ol...> - 2012-05-29 18:13:53
|
Hi Jim, The series is pushed! Thanks again ;)! I did the usual (full) test-program, with one interesting finding, more below. Regarding _acx_issue_cmd_timeo_debug(), I included the common acx_wait_cmd_status(), but with an msleep() for pci instead of an udelay(). Since in the pci case we may sleep, I prefer the possibility to be able to schedule away to let the CPU other things. In pci, especially in AP-mode we also execute more often fw-commands, so the possibility to sleep accumulates and the increased cpu utilization pays-off still more over time. The checkpatch problem in "patch#05, whitespace", acxpci_issue_cmd_timeo_debug() seems to be #ifdef out, so left it for the moment. Then there is a strange problem with my DWL-650+ acx100-pci card: Doesn't associate anymore with kernel 3.4, neither driver version v20120522 nor this one. Scanning works, so there is some radio path, but no assoc anymore. Kernel 3.3 works fine with both driver versions ?! => Need to look into that in more detail. Cheers, Oliver On 05/25/2012 08:48 PM, Jim Cromie wrote: > Current logging messages look like: > > acx.log_fn_exit_v: 95382776 <== acx_read_cmd_type_status: 00000000 > acx.log_fn_enter: 95382776 ==> acx_write_cmd_type_status > acx.log_fn_exit: 95382776 <== acx_write_cmd_type_status > acx.log_fn_enter: 95382776 ==> acx_mwait > > fix this by: > - adding space at beginning of log_fn_exit format string > - drop last _ from log_fn_exit_v so it matches length of log_fn_enter > > Result is that the numbers and arrows line up nicely. > > Signed-off-by: Jim Cromie <jim...@gm...> > --- > acx_func.h | 4 ++-- > common.c | 6 +++--- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/acx_func.h b/acx_func.h > index fbad144..af20ab5 100644 > --- a/acx_func.h > +++ b/acx_func.h > @@ -169,7 +169,7 @@ void acx_lock_unhold(void); > #if ACX_DEBUG > void log_fn_enter(const char *funcname); > void log_fn_exit(const char *funcname); > -void log_fn_exit_v(const char *funcname, int v); > +void log_fn_exitv(const char *funcname, int v); > /* > * char *acx_print_mac(char *buf, const u8 *mac); > * void acx_print_mac2(const char *head, const u8 *mac, const char *tail); > @@ -189,7 +189,7 @@ const char *acx_cmd_status_str(unsigned int state); > #define FN_EXIT1(v) \ > do { \ > if (unlikely(acx_debug & L_FUNC)) { \ > - log_fn_exit_v(__func__, v); \ > + log_fn_exitv(__func__, v); \ > } \ > } while (0) > #define FN_EXIT0 \ > diff --git a/common.c b/common.c > index 5c526cc..adca18a 100644 > --- a/common.c > +++ b/common.c > @@ -66,7 +66,7 @@ static inline const char *acx_sanitize_str(const char *s); > /* Logging */ > void log_fn_enter(const char *funcname); > void log_fn_exit(const char *funcname); > -void log_fn_exit_v(const char *funcname, int v); > +void log_fn_exitv(const char *funcname, int v); > char *acx_print_mac(char *buf, const u8 *mac); > void acx_print_mac2(const char *head, const u8 *mac, const char *tail); > void acxlog_mac(int level, const char *head, const u8 *mac, const char *tail); > @@ -794,12 +794,12 @@ void log_fn_exit(const char *funcname) > if (indent >= sizeof(acx_debug_spaces)) > indent = sizeof(acx_debug_spaces) - 1; > > - pr_info("%08ld %s<== %s\n", d % 100000000, > + pr_info(" %08ld %s<== %s\n", d % 100000000, > acx_debug_spaces + (sizeof(acx_debug_spaces) - 1) - indent, > funcname); > } > > -void log_fn_exit_v(const char *funcname, int v) > +void log_fn_exitv(const char *funcname, int v) > { > int indent; > TIMESTAMP(d); |