From: Jim C. <jim...@gm...> - 2012-05-20 18:40:34
|
Signed-off-by: Jim Cromie <jim...@gm...> --- inlines.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/inlines.h b/inlines.h index 868f20e..ead3ae7 100644 --- a/inlines.h +++ b/inlines.h @@ -66,11 +66,15 @@ #define acxmem_lock_flags unsigned long flags = 0 #define acxmem_lock() \ if (IS_MEM(adev)) \ - spin_lock_irqsave(&adev->spinlock, flags) - -#define acxmem_unlock() \ - if (IS_MEM(adev)) \ - spin_unlock_irqrestore(&adev->spinlock, flags) + spin_lock_irqsave(&adev->spinlock, flags); \ + else \ + __acquire(&adev->spinlock) + +#define acxmem_unlock() \ + if (IS_MEM(adev)) \ + spin_unlock_irqrestore(&adev->spinlock, flags); \ + else \ + __release(&adev->spinlock) /* Endianess: read[lw], write[lw] do little-endian conversion internally */ #define acx_readl(v) readl((v)) -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-20 18:40:35
|
Fix lifecycle issues by dropping acx_proc_(un)?register_entries() from debugfs.c. Leave procfs lifecycle as is, whether or not its correct, is is independent. - drop debugfs.c:acx_proc_(un)?register_entries() - add empty acx_proc_exit() call and function (to conform to convention) - move acx_proc_(show|write)_funcs[] after funcs they reference - drop fn-protos not needed after *_funcs[] move - consolidate CONFIG_DEBUG_FS, CONFIG_PROC_FS, etc #ifdefs - in acx_funcs.h, use DECL_OR_STUB for acx_proc_(un)?register_entries() Signed-off-by: Jim Cromie <jim...@gm...> --- acx_func.h | 20 +++++---- common.c | 146 ++++++++++++++++++++++++------------------------------------- debugfs.c | 20 +-------- merge.h | 2 +- 4 files changed, 70 insertions(+), 118 deletions(-) diff --git a/acx_func.h b/acx_func.h index a6f12f0..fbad144 100644 --- a/acx_func.h +++ b/acx_func.h @@ -310,16 +310,18 @@ int acx_setup_modes(acx_device_t *adev); /* BOM Proc, Debug (Common) * ----- */ -#ifdef CONFIG_PROC_FS -int acx_proc_register_entries(struct ieee80211_hw *ieee); -int acx_proc_unregister_entries(struct ieee80211_hw *ieee); -#else -/* - static inline int - * - acx_proc_register_entries(const struct ieee80211_hw *ieee) { return OK; } - * - static inline int - * - acx_proc_unregister_entries(const struct ieee80211_hw *ieee) { return OK; } - */ + +#if defined CONFIG_PROC_FS && defined ACX_WANT_PROC_FILES_ANYWAY +# define PROC_ENTRIES #endif + +DECL_OR_STUB(PROC_ENTRIES, + int acx_proc_register_entries(struct ieee80211_hw *ieee), + { return 0; }) +DECL_OR_STUB(PROC_ENTRIES, + int acx_proc_unregister_entries(struct ieee80211_hw *ieee), + { return 0; }) + /* - * BOM Rx Path (Common) * ----- diff --git a/common.c b/common.c index 9b957f7..bf2279c 100644 --- a/common.c +++ b/common.c @@ -225,44 +225,6 @@ static void acx_update_ratevector(acx_device_t *adev); static void acx_s_update_80211_powersave_mode(acx_device_t *adev) #endif -/* Proc, Debug */ -#ifdef CONFIG_PROC_FS -static int acx_proc_show_diag(struct seq_file *file, void *v); -static ssize_t acx_proc_write_diag(struct file *file, - const char __user *buf, size_t count, - loff_t *ppos); -static int acx_proc_show_acx(struct seq_file *file, void *v); -static int acx_proc_show_eeprom(struct seq_file *file, void *v); -static int acx_proc_show_phy(struct seq_file *file, void *v); -static int acx_proc_show_debug(struct seq_file *file, void *v); -static ssize_t acx_proc_write_debug(struct file *file, - const char __user *buf, size_t count, - loff_t *ppos); -static int acx_proc_show_sensitivity(struct seq_file *file, void *v); -static ssize_t acx_proc_write_sensitivity(struct file *file, - const char __user *buf, - size_t count, loff_t *ppos); -static int acx_proc_show_tx_level(struct seq_file *file, void *v); -static ssize_t acx111_proc_write_tx_level(struct file *file, - const char __user *buf, - size_t count, loff_t *ppos); -static int acx_proc_show_reg_domain(struct seq_file *file, void *v); -static ssize_t acx_proc_write_reg_domain(struct file *file, - const char __user *buf, - size_t count, loff_t *ppos); -static int acx_proc_show_antenna(struct seq_file *file, void *v); -static ssize_t acx_proc_write_antenna(struct file *file, - const char __user *buf, size_t count, - loff_t *ppos); -/* - obsoleted by debugfs.c -static int acx_proc_open(struct inode *inode, struct file *file); -static void acx_proc_init(void); -int acx_proc_register_entries(struct ieee80211_hw *ieee); -int acx_proc_unregister_entries(struct ieee80211_hw *ieee); -*/ -#endif - /* Rx Path */ void acx_process_rxbuf(acx_device_t *adev, rxbuffer_t * rxbuf); static void acx_rx(acx_device_t *adev, rxbuffer_t *rxbuf); @@ -703,48 +665,6 @@ u16 acx_rate111_hwvalue_to_bitrate(u16 hw_value) return (bitrate); } -#if defined CONFIG_PROC_FS || defined CONFIG_PROC_FS -/* - * debugfs.c provides new interface to the "files", procfs interface - * is deprecated for new stuff. Keep PROC_FS facility for users with - * non-DEBUG_FS kernels, so keep handlers themselves here. - */ -#ifdef ACX_WANT_PROC_FILES_ANYWAY -/* obsoleted by debugfs.c */ -static const char *const proc_files[] = { - "info", "diag", "eeprom", "phy", "debug", - "sensitivity", "tx_level", "antenna", "reg_domain", -}; -static struct file_operations acx_e_proc_ops[ARRAY_SIZE(proc_files)]; -#endif /* ACX_WANT_PROC_FILES_ANYWAY */ - -acx_proc_show_t *const acx_proc_show_funcs[] = { - acx_proc_show_acx, - acx_proc_show_diag, - acx_proc_show_eeprom, - acx_proc_show_phy, - acx_proc_show_debug, - acx_proc_show_sensitivity, - acx_proc_show_tx_level, - acx_proc_show_antenna, - acx_proc_show_reg_domain, -}; - -acx_proc_write_t *const acx_proc_write_funcs[] = { - NULL, - acx_proc_write_diag, - NULL, - NULL, - acx_proc_write_debug, - acx_proc_write_sensitivity, - acx111_proc_write_tx_level, - acx_proc_write_antenna, - acx_proc_write_reg_domain, -}; -BUILD_BUG_DECL(SHOW, ARRAY_SIZE(acx_proc_show_funcs) - != ARRAY_SIZE(acx_proc_write_funcs)); - -#endif /* CONFIG_PROC_FS */ /* * BOM Locking @@ -4142,12 +4062,17 @@ static u8 acx_rate111to100(u16 r) } */ -/* - * BOM Proc, Debug - * ================================================== +/* ################################################## + * Proc, Debug: + * + * File read/write handlers for both procfs, debugfs. Procfs is + * deprecated for new files, so proc-files are disabled by default; + * ACX_WANT_PROC_FILES_ANYWAY enables them. Debugfs is enabled, it + * can be disabled by ACX_NO_DEBUG_FILES. */ -#if defined(CONFIG_PROC_FS) || defined(CONFIG_DEBUGC_FS) +#if (defined CONFIG_PROC_FS && defined ACX_WANT_PROC_FILES_ANYWAY) \ + || (defined CONFIG_DEBUG_FS && !defined ACX_NO_DEBUG_FILES) static int acx_proc_show_diag(struct seq_file *file, void *v) { @@ -4886,7 +4811,6 @@ out: return ret; } - static int acx_proc_show_antenna(struct seq_file *file, void *v) { acx_device_t *adev = (acx_device_t *) file->private; @@ -4941,7 +4865,45 @@ out: return ret; } -#if defined CONFIG_PROC_FS && defined ACX_WANT_PROC_FILES_ANYWAY +acx_proc_show_t *const acx_proc_show_funcs[] = { + acx_proc_show_acx, + acx_proc_show_diag, + acx_proc_show_eeprom, + acx_proc_show_phy, + acx_proc_show_debug, + acx_proc_show_sensitivity, + acx_proc_show_tx_level, + acx_proc_show_antenna, + acx_proc_show_reg_domain, +}; + +acx_proc_write_t *const acx_proc_write_funcs[] = { + NULL, + acx_proc_write_diag, + NULL, + NULL, + acx_proc_write_debug, + acx_proc_write_sensitivity, + acx111_proc_write_tx_level, + acx_proc_write_antenna, + acx_proc_write_reg_domain, +}; +BUILD_BUG_DECL(acx_proc_show_funcs__VS__acx_proc_write_funcs, + ARRAY_SIZE(acx_proc_show_funcs) != ARRAY_SIZE(acx_proc_write_funcs)); + + +#if (defined CONFIG_PROC_FS && defined ACX_WANT_PROC_FILES_ANYWAY) +/* + * procfs has been explicitly enabled + */ +static const char *const proc_files[] = { + "info", "diag", "eeprom", "phy", "debug", + "sensitivity", "tx_level", "antenna", "reg_domain", +}; +BUILD_BUG_DECL(acx_proc_show_funcs__VS__proc_files, + ARRAY_SIZE(acx_proc_show_funcs) != ARRAY_SIZE(proc_files)); + +static struct file_operations acx_e_proc_ops[ARRAY_SIZE(proc_files)]; static int acx_proc_open(struct inode *inode, struct file *file) { @@ -5045,11 +5007,14 @@ int acx_proc_unregister_entries(struct ieee80211_hw *hw) FN_EXIT0; return OK; } -#else /* ACX_WANT_PROC_FILES_ANYWAY */ -static void acx_proc_init(void) { } /* stub */ -#endif /* ACX_WANT_PROC_FILES_ANYWAY */ +#else +static inline void acx_proc_init(void) {} + +#endif /* ACX_WANT_PROC_FILES_ANYWAY */ +#endif /* defined(CONFIG_PROC_FS) || defined(CONFIG_DEBUG_FS) */ -#endif /* defined(CONFIG_PROC_FS) || defined(CONFIG_DEBUGC_FS) */ +/* should have a real cleanup func */ +static inline void acx_proc_exit(void) {} /* * BOM Rx Path @@ -6893,6 +6858,7 @@ static void __exit acx_cleanup_module(void) { /* TODO Check, that interface isn't still up */ acx_debugfs_exit(); + acx_proc_exit(); acxpci_cleanup_module(); acxusb_cleanup_module(); diff --git a/debugfs.c b/debugfs.c index c3012ce..89fa2e1 100644 --- a/debugfs.c +++ b/debugfs.c @@ -2,7 +2,7 @@ * debugfs API to rest of driver is prototyped in merge.h, including * the stubs. */ -#if defined CONFIG_DEBUG_FS && !defined ACX_NO_DEBUG_FS +#if defined CONFIG_DEBUG_FS && !defined ACX_NO_DEBUG_FILES #define pr_fmt(fmt) "acx.%s: " fmt, __func__ @@ -169,22 +169,6 @@ void acx_debugfs_remove_adev(struct acx_device *adev) adev->debugfs_dir = NULL; } -/* compat funcs, also address lifecycle issues */ -int acx_proc_register_entries(struct ieee80211_hw *hw) -{ - acx_device_t *adev = ieee2adev(hw); - pr_info("compat wrapper\n"); - return acx_debugfs_add_adev(adev); -} - -int acx_proc_unregister_entries(struct ieee80211_hw *hw) -{ - acx_device_t *adev = ieee2adev(hw); - pr_info("compat wrapper\n"); - acx_debugfs_remove_adev(adev); - return 0; -} - int __init acx_debugfs_init(void) { acx_dbgfs_dir = debugfs_create_dir(KBUILD_MODNAME, NULL); @@ -199,4 +183,4 @@ void __exit acx_debugfs_exit(void) debugfs_remove_recursive(acx_dbgfs_dir); } -#endif /* CONFIG_DEBUG_FS */ +#endif /* CONFIG_DEBUG_FS && ! ACX_NO_DEBUG_FILES */ diff --git a/merge.h b/merge.h index 4f30bad..6fdac68 100644 --- a/merge.h +++ b/merge.h @@ -15,7 +15,7 @@ extern acx_proc_show_t *const acx_proc_show_funcs[]; extern acx_proc_write_t *const acx_proc_write_funcs[]; /* debugfs.c API used by common.c */ -#if defined CONFIG_DEBUG_FS && !defined ACX_NO_DEBUG_FS +#if defined CONFIG_DEBUG_FS && !defined ACX_NO_DEBUG_FILES int acx_debugfs_add_adev(struct acx_device *adev); void acx_debugfs_remove_adev(struct acx_device *adev); int __init acx_debugfs_init(void); -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-20 18:40:36
|
Signed-off-by: Jim Cromie <jim...@gm...> --- merge.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/merge.c b/merge.c index c73f3d9..c4bb9a1 100644 --- a/merge.c +++ b/merge.c @@ -704,22 +704,22 @@ out: void acx_free_desc_queues(acx_device_t *adev) { -#define ACX_FREE_QUEUE(adev, size, ptr, phyaddr) \ - if (ptr) { \ - if (IS_PCI(adev)) \ +#define ACX_FREE_QUEUE(adev, size, ptr, phyaddr) \ + if (ptr) { \ + if (IS_PCI(adev)) \ acxpci_free_coherent(NULL, size, ptr, phyaddr); \ - else \ - kfree(ptr); \ - ptr = NULL; \ - size = 0; \ + else \ + kfree(ptr); \ + ptr = NULL; \ + size = 0; \ } #ifndef ACX_FREE_QUEUES -#define ACX_FREE_QUEUES(adev, _dir_) \ - ACX_FREE_QUEUE(adev, adev->_dir_.host.size, \ - adev->_dir_.host.start, adev->_dir_.host.phy); \ - ACX_FREE_QUEUE(adev, adev->_dir_.buf.size, \ - adev->_dir_.buf.start, adev->_dir_.buf.phy); +#define ACX_FREE_QUEUES(adev, _dir_) \ + ACX_FREE_QUEUE(adev, adev->_dir_.host.size, \ + adev->_dir_.host.start, adev->_dir_.host.phy); \ + ACX_FREE_QUEUE(adev, adev->_dir_.buf.size, \ + adev->_dir_.buf.start, adev->_dir_.buf.phy) #endif // ACX_FREE_QUEUES FN_ENTER; -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-20 18:40:38
|
grep -P '_[esl]_' * shows lots of out-of-date comments, update them. Leave a few _e_(suspend|resume) which are actual functions, they also point out an unfinished merge. Signed-off-by: Jim Cromie <jim...@gm...> --- mem.c | 23 +++++++++++------------ merge.c | 2 +- pci.c | 35 ++++++++++++----------------------- usb.c | 25 +++++++++++++------------ 4 files changed, 37 insertions(+), 48 deletions(-) diff --git a/mem.c b/mem.c index 9a7d554..41e092f 100644 --- a/mem.c +++ b/mem.c @@ -439,7 +439,7 @@ void acxmem_chaincopy_from_slavemem(acx_device_t *adev, u8 *destination, */ /* - * acxmem_s_issue_cmd_timeo + * acxmem_issue_cmd_timeo_debug * * Sends command to fw, extract result * @@ -734,14 +734,14 @@ static int acxmem_complete_hw_reset(acx_device_t *adev) return -2; acx_parse_configoption(adev, &co); - acx_get_firmware_version(adev); /* needs to be after acx_s_init_mac() */ + acx_get_firmware_version(adev); /* needs to be after acx_init_mac() */ acx_display_hardware_details(adev); return 0; } /* - * acxmem_l_reset_mac + * acxmem_reset_mac * * MAC will be reset * Call context: reset_dev @@ -1031,7 +1031,7 @@ int acxmem_proc_diag_output(struct seq_file *file, #if 0 /* - * acxmem_l_process_rxdesc + * acxmem_process_rxdesc * * Called directly and only from the IRQ handler */ @@ -1250,7 +1250,7 @@ u32 acxmem_allocate_acx_txbuf_space(acx_device_t *adev, int count) static void acxmem_init_acx_txbuf(acx_device_t *adev) { /* - * acx100_s_init_memory_pools set up txbuf_start and + * acx100_init_memory_pools set up txbuf_start and * txbuf_numblocks for us. All we need to do is reset the * rest of the bookeeping. */ @@ -1470,10 +1470,9 @@ static irqreturn_t acxmem_interrupt(int irq, void *dev_id) * bit unless we're going towards full, in * which case we do it immediately, too * (otherwise we might lockup with a full Tx - * buffer if we go into - * acxmem_l_clean_txdesc() at a time when we - * won't wakeup the net queue in there for - * some reason...) */ + * buffer if we go into acxmem_clean_txdesc() + * at a time when we won't wakeup the net + * queue in there for some reason...) */ if (adev->tx_free <= TX_START_CLEAN) { #if TX_CLEANUP_IN_SOFTIRQ acx_schedule_task(adev, ACX_AFTER_IRQ_TX_CLEANUP); @@ -2151,7 +2150,7 @@ static int __devinit acxmem_probe(struct platform_device *pdev) 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 */ + /* Acx irqs shall be off and are enabled later in acx_up */ acxmem_lock(); acx_irq_disable(adev); acxmem_unlock(); @@ -2439,7 +2438,7 @@ static int acxmem_e_resume(struct platform_device *pdev) acxmem_complete_hw_reset(adev); /* - * done by acx_s_set_defaults for initial startup + * done by acx_set_defaults for initial startup */ acx_set_interrupt_mask(adev); @@ -2452,7 +2451,7 @@ static int acxmem_e_resume(struct platform_device *pdev) * suspend, and possibly be back in the network again already * :-) */ - /* - most settings updated in acxmem_s_up() */ + /* - most settings updated in acx_up() */ if (ACX_STATE_IFACE_UP & adev->dev_state_mask) { adev->set_mask = GETSET_ALL; acx_update_card_settings(adev); diff --git a/merge.c b/merge.c index c4bb9a1..e4808de 100644 --- a/merge.c +++ b/merge.c @@ -104,7 +104,7 @@ none: } /* - * modified from acxmem_s_upload_radio, and wrapped below + * modified from acxmem_upload_radio, and wrapped below */ static int acx_upload_radio(acx_device_t *adev, char *filename) { diff --git a/pci.c b/pci.c index 991add6..43fab72 100644 --- a/pci.c +++ b/pci.c @@ -133,17 +133,6 @@ static void vlynq_remove(struct vlynq_device *vdev); #include "inlines.h" -/* ----- */ - -/* - * acxpci_s_create_rx_host_desc_queue - * - * the whole size of a data buffer (header plus data body) - * plus 32 bytes safety offset at the end - */ - - -/* static inline */ void acxpci_free_coherent(struct pci_dev *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle) { @@ -162,7 +151,7 @@ void acxpci_free_coherent(struct pci_dev *hwdev, size_t size, */ /* - * acxpci_s_issue_cmd_timeo + * acxpci_issue_cmd_timeo_debug * * Sends command to fw, extract result * @@ -374,7 +363,7 @@ acxpci_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, /* - * acxpci_l_reset_mac + * acxpci_reset_mac * * MAC will be reset * Call context: reset_dev @@ -527,7 +516,7 @@ int acxpci_proc_diag_output(struct seq_file *file, acx_device_t *adev) */ /* - * acxpci_l_alloc_tx + * acxpci_alloc_tx * Actually returns a txdesc_t* ptr * * FIXME: in case of fragments, should allocate multiple descrs after @@ -981,7 +970,7 @@ acx100pci_ioctl_set_phy_amp_bias(struct net_device *ndev, */ /* - * acxpci_e_probe + * acxpci_probe * * Probe routine called when a PCI device w/ matching ID is found. * Here's the sequence: @@ -1193,7 +1182,7 @@ static int __devinit acxpci_probe(struct pci_dev *pdev, } log(L_IRQ | L_INIT, "using IRQ %d: OK\n", pdev->irq); - /* Acx irqs shall be off and are enabled later in acxpci_s_up */ + /* Acx irqs shall be off and are enabled later in acx_up */ acx_irq_disable(adev); /* to find crashes due to weird driver access @@ -1244,7 +1233,7 @@ static int __devinit acxpci_probe(struct pci_dev *pdev, acx_parse_configoption(adev, &co); acx_set_defaults(adev); // TODO OW may put this after acx_display_hardware_details(adev); - acx_get_firmware_version(adev); /* needs to be after acx_s_init_mac() */ + acx_get_firmware_version(adev); /* needs to be after acx_init_mac() */ acx_display_hardware_details(adev); /* Register the card, AFTER everything else has been set up, @@ -1305,10 +1294,10 @@ fail_proc_register_entries: /* acxpci_read_eeprom_byte(adev, 0x05, &adev->eeprom_version) */ fail_read_eeprom_byte: - /* acx_s_init_mac(adev) */ + /* acx_init_mac(adev) */ fail_init_mac: - /* acxpci_s_reset_dev(adev) */ + /* acx_reset_dev(adev) */ fail_reset_dev: /* request_irq(adev->irq, acxpci_i_interrupt, IRQF_SHARED, KBUILD_MODNAME, */ @@ -1356,7 +1345,7 @@ done: /* - * acxpci_e_remove + * acxpci_remove * * Shut device down (if not hot unplugged) * and deallocate PCI resources for the acx chip. @@ -1487,7 +1476,7 @@ static int acxpci_e_suspend(struct pci_dev *pdev, pm_message_t state) acx_sem_lock(adev); ieee80211_unregister_hw(hw); /* this one cannot sleep */ - /* OW 20100603 FIXME acxpci_s_down(hw); */ + /* OW 20100603 FIXME acx_down(hw); */ /* down() does not set it to 0xffff, but here we really want that */ write_reg16(adev, IO_ACX_IRQ_MASK, 0xffff); write_reg16(adev, IO_ACX_FEMR, 0x0); @@ -1811,7 +1800,7 @@ static __devinit int vlynq_probe(struct vlynq_device *vdev, } log(L_IRQ | L_INIT, "using IRQ %d\n", adev->irq); - /* Acx irqs shall be off and are enabled later in acxpci_s_up */ + /* Acx irqs shall be off and are enabled later in acx_up */ acx_irq_disable(adev); /* to find crashes due to weird driver access @@ -1845,7 +1834,7 @@ static __devinit int vlynq_probe(struct vlynq_device *vdev, acx_parse_configoption(adev, &co); acx_set_defaults(adev); - acx_get_firmware_version(adev); /* needs to be after acx_s_init_mac() */ + acx_get_firmware_version(adev); /* needs to be after acx_init_mac() */ acx_display_hardware_details(adev); /* Register the card, AFTER everything else has been set up, diff --git a/usb.c b/usb.c index b50407f..f5b833e 100644 --- a/usb.c +++ b/usb.c @@ -165,7 +165,7 @@ int acxusb_read_phy_reg(acx_device_t * adev, u32 reg, u8 * charbuf) mem.addr = cpu_to_le16(reg); mem.type = cpu_to_le16(0x82); mem.len = cpu_to_le32(4); - acx_s_issue_cmd(adev, ACX1xx_CMD_MEM_READ, &mem, sizeof(mem)); + acx_issue_cmd(adev, ACX1xx_CMD_MEM_READ, &mem, sizeof(mem)); *charbuf = mem.data; log(L_DEBUG, "read radio PHY[0x%04X]=0x%02X\n", reg, *charbuf); */ @@ -490,7 +490,7 @@ acxusb_boot(struct usb_device *usbdev, int is_tnetw1450, int *radio_type) */ /* - * acxusb_s_issue_cmd_timeo + * acxusb_issue_cmd_timeo_debug * Excecutes a command in the command mailbox * * buffer = a pointer to the data. @@ -666,7 +666,7 @@ acxusb_issue_cmd_timeo_debug(acx_device_t * adev, */ /* - * acxusb_s_fill_configoption + * acxusb_fill_configoption * * temporary helper function to at least fill important cfgopt members with * useful replacement values until we figure out how one manages to fetch @@ -1054,7 +1054,7 @@ static void acxusb_complete_rx(struct urb *urb) } /* - * acxusb_l_poll_rx + * acxusb_poll_rx * This function (re)initiates a bulk-in USB transfer on a given urb */ static void acxusb_poll_rx(acx_device_t * adev, usb_rx_t * rx) @@ -1172,7 +1172,7 @@ static void acxusb_complete_tx(struct urb *urb) } /* - * acxusb_l_alloc_tx + * acxusb_alloc_tx * Actually returns a usb_tx_t* ptr */ tx_t *acxusb_alloc_tx(acx_device_t *adev) @@ -1219,13 +1219,14 @@ void *acxusb_get_txbuf(acx_device_t * adev, tx_t * tx_opaque) } /* - * acxusb_l_tx_data + * acxusb_tx_data * * Can be called from IRQ (rx -> (AP bridging or mgmt response) -> tx). * Can be called from acx_i_start_xmit (data frames from net core). */ void acxusb_tx_data(acx_device_t *adev, tx_t *tx_opaque, int wlanpkt_len, - struct ieee80211_tx_info *ieeectl, struct sk_buff *skb) { + struct ieee80211_tx_info *ieeectl, struct sk_buff *skb) +{ struct usb_device *usbdev; struct urb *txurb; usb_tx_t *tx; @@ -1396,7 +1397,7 @@ void acxusb_irq_work(struct work_struct *work) /* - * acxusb_e_start() + * acxusb_op_start() * This function is called when the user sets up the network interface. * It initializes a management timer, sets up the USB card and starts * the network tx queue and USB receive. @@ -1430,7 +1431,7 @@ static int acxusb_op_start(struct ieee80211_hw *hw) adev->mgmt_timer.function = acx_timer; adev->mgmt_timer.data = (unsigned long)adev; - /* acx_s_start needs it */ + /* acx_start needs it */ SET_BIT(adev->dev_state_mask, ACX_STATE_IFACE_UP); acx_start(adev); @@ -1447,7 +1448,7 @@ static int acxusb_op_start(struct ieee80211_hw *hw) } /* - * acxusb_e_stop() + * acxusb_op_stop() * * This function stops the network functionality of the interface (invoked * when the user calls ifconfig <wlan> down). The tx queue is halted and @@ -1539,7 +1540,7 @@ static const struct ieee80211_ops acxusb_hw_ops = { */ /* - * acxusb_e_probe() + * acxusb_probe() * * This function is invoked by the kernel's USB core whenever a new device is * attached to the system or the module is loaded. It is presented a usb_device @@ -1828,7 +1829,7 @@ acxusb_probe(struct usb_interface *intf, const struct usb_device_id *devID) } /* - * acxusb_e_disconnect() + * acxusb_disconnect() * * This function is invoked whenever the user pulls the plug from the USB * device or the module is removed from the kernel. In these cases, the -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-20 18:40:39
|
In kernel built with CONFIG_DMA_API_DEBUG=y, Ive seen warnings on cleanup, start tracking them down. Signed-off-by: Jim Cromie <jim...@gm...> --- merge.c | 6 +++++- pci.c | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/merge.c b/merge.c index e4808de..2e19c44 100644 --- a/merge.c +++ b/merge.c @@ -209,9 +209,13 @@ static int acx_allocate(acx_device_t *adev, struct desc_info *di, { void *ptr; - if (IS_PCI(adev)) + if (IS_PCI(adev)) { ptr = dma_alloc_coherent(adev->bus_dev, di->size, &di->phy, GFP_KERNEL); + + pr_info("bdev:%p size:%d phy:%p ptr:%p\n", + adev->bus_dev, di->size, (void*) di->phy, ptr); + } else { ptr = kmalloc(di->size, GFP_KERNEL); /* diff --git a/pci.c b/pci.c index 43fab72..c766665 100644 --- a/pci.c +++ b/pci.c @@ -136,6 +136,9 @@ static void vlynq_remove(struct vlynq_device *vdev); void acxpci_free_coherent(struct pci_dev *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle) { + pr_info("hwdev:%p size:%d, vaddr:%p, dma_handle:%p\n", + hwdev, size, vaddr, (void*) dma_handle); + dma_free_coherent(hwdev == NULL ? NULL : &hwdev->dev, size, vaddr, dma_handle); } -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-21 18:07:07
|
On Sun, May 20, 2012 at 12:40 PM, Jim Cromie <jim...@gm...> wrote: > In kernel built with CONFIG_DMA_API_DEBUG=y, Ive seen warnings on > cleanup, start tracking them down. FYI, these appear to be spurious - I cant replicate now. |
From: Florian F. <fl...@op...> - 2012-05-21 12:18:45
|
Hi Jim, On Sunday 20 May 2012 12:40:14 Jim Cromie wrote: > Signed-off-by: Jim Cromie <jim...@gm...> > --- > merge.c | 24 ++++++++++++------------ > 1 file changed, 12 insertions(+), 12 deletions(-) > > diff --git a/merge.c b/merge.c > index c73f3d9..c4bb9a1 100644 > --- a/merge.c > +++ b/merge.c > @@ -704,22 +704,22 @@ out: > void acx_free_desc_queues(acx_device_t *adev) > { > > -#define ACX_FREE_QUEUE(adev, size, ptr, phyaddr) \ > - if (ptr) { \ > - if (IS_PCI(adev)) \ > +#define ACX_FREE_QUEUE(adev, size, ptr, phyaddr) \ > + if (ptr) { \ > + if (IS_PCI(adev)) \ > acxpci_free_coherent(NULL, size, ptr, phyaddr); \ > - else \ > - kfree(ptr); \ > - ptr = NULL; \ > - size = 0; \ > + else \ > + kfree(ptr); \ > + ptr = NULL; \ > + size = 0; \ > } Looking at these macros, should not they be converted to inlines? You'd gain type-checking for free. My 2 cents. > > #ifndef ACX_FREE_QUEUES > -#define ACX_FREE_QUEUES(adev, _dir_) \ > - ACX_FREE_QUEUE(adev, adev->_dir_.host.size, \ > - adev->_dir_.host.start, adev->_dir_.host.phy); \ > - ACX_FREE_QUEUE(adev, adev->_dir_.buf.size, \ > - adev->_dir_.buf.start, adev->_dir_.buf.phy); > +#define ACX_FREE_QUEUES(adev, _dir_) \ > + ACX_FREE_QUEUE(adev, adev->_dir_.host.size, \ > + adev->_dir_.host.start, adev->_dir_.host.phy); \ > + ACX_FREE_QUEUE(adev, adev->_dir_.buf.size, \ > + adev->_dir_.buf.start, adev->_dir_.buf.phy) > #endif // ACX_FREE_QUEUES Same here. > > FN_ENTER; > -- > 1.7.10.1.487.ga3935e6 > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Acx100-devel mailing list > Acx...@li... > https://lists.sourceforge.net/lists/listinfo/acx100-devel |
From: Jim C. <jim...@gm...> - 2012-05-21 19:48:58
|
On Mon, May 21, 2012 at 6:16 AM, Florian Fainelli <fl...@op...> wrote: > Hi Jim, > > On Sunday 20 May 2012 12:40:14 Jim Cromie wrote: >> Signed-off-by: Jim Cromie <jim...@gm...> >> --- >> merge.c | 24 ++++++++++++------------ >> 1 file changed, 12 insertions(+), 12 deletions(-) >> >> diff --git a/merge.c b/merge.c >> index c73f3d9..c4bb9a1 100644 >> --- a/merge.c >> +++ b/merge.c >> @@ -704,22 +704,22 @@ out: >> void acx_free_desc_queues(acx_device_t *adev) >> { >> >> -#define ACX_FREE_QUEUE(adev, size, ptr, phyaddr) \ >> - if (ptr) { \ >> - if (IS_PCI(adev)) \ >> +#define ACX_FREE_QUEUE(adev, size, ptr, phyaddr) \ >> + if (ptr) { \ >> + if (IS_PCI(adev)) \ >> acxpci_free_coherent(NULL, size, ptr, phyaddr); \ >> - else \ >> - kfree(ptr); \ >> - ptr = NULL; \ >> - size = 0; \ >> + else \ >> + kfree(ptr); \ >> + ptr = NULL; \ >> + size = 0; \ >> } > > Looking at these macros, should not they be converted to inlines? You'd gain > type-checking for free. > Yes. would be better. when I was touching this, I was doing re-struct-uring, and didnt want to mix 2 separate changes. Then I forgot all about it. thanks. > My 2 cents. > >> >> #ifndef ACX_FREE_QUEUES >> -#define ACX_FREE_QUEUES(adev, _dir_) \ >> - ACX_FREE_QUEUE(adev, adev->_dir_.host.size, \ >> - adev->_dir_.host.start, adev->_dir_.host.phy); \ >> - ACX_FREE_QUEUE(adev, adev->_dir_.buf.size, \ >> - adev->_dir_.buf.start, adev->_dir_.buf.phy); >> +#define ACX_FREE_QUEUES(adev, _dir_) \ >> + ACX_FREE_QUEUE(adev, adev->_dir_.host.size, \ >> + adev->_dir_.host.start, adev->_dir_.host.phy); \ >> + ACX_FREE_QUEUE(adev, adev->_dir_.buf.size, \ >> + adev->_dir_.buf.start, adev->_dir_.buf.phy) >> #endif // ACX_FREE_QUEUES > > Same here. > ack for above. below must stay a macro - it uses __func__, which wouldnt be helpful if it IDd a debug helper func. (you prolly didnt mean below ;-) >> >> FN_ENTER; Now done, as you suggested: 0024-merge.c-replace-ACX_FREE_QUEUE-S-with-static-inline-.patch |