58e5528ee4
Rewrite of the bcm43xx initialization routines. This fixes several issues: * up-down-up-down-up... stale data issue (May fix some DHCP issues) * Fix the init vs IRQ handler race (and remove the workaround) * Fix init for cards with multiple cores (APHY) As softmac has no internal PHY handling (unlike dscape), this adds the file "phymode" to sysfs. The active PHY can be selected by writing either a, b or g to this file. Current PHY can be determined by reading from it. * Fix the controller restart code. Controller restart can now also be triggered through echo 1 > /debug/bcm43xx/ethX/restart Signed-off-by: Michael Buesch <mb@bu3sch.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
118 lines
3.1 KiB
C
118 lines
3.1 KiB
C
#ifndef BCM43xx_DEBUGFS_H_
|
|
#define BCM43xx_DEBUGFS_H_
|
|
|
|
struct bcm43xx_private;
|
|
struct bcm43xx_xmitstatus;
|
|
|
|
#ifdef CONFIG_BCM43XX_DEBUG
|
|
|
|
#include <linux/list.h>
|
|
#include <asm/semaphore.h>
|
|
|
|
struct dentry;
|
|
|
|
/* limited by the size of the "really_big_buffer" */
|
|
#define BCM43xx_NR_LOGGED_XMITSTATUS 100
|
|
|
|
struct bcm43xx_dfsentry {
|
|
struct dentry *subdir;
|
|
struct dentry *dentry_devinfo;
|
|
struct dentry *dentry_spromdump;
|
|
struct dentry *dentry_tsf;
|
|
struct dentry *dentry_txstat;
|
|
struct dentry *dentry_restart;
|
|
|
|
struct bcm43xx_private *bcm;
|
|
|
|
/* saved xmitstatus. */
|
|
struct bcm43xx_xmitstatus *xmitstatus_buffer;
|
|
int xmitstatus_ptr;
|
|
int xmitstatus_cnt;
|
|
/* We need a seperate buffer while printing to avoid
|
|
* concurrency issues. (New xmitstatus can arrive
|
|
* while we are printing).
|
|
*/
|
|
struct bcm43xx_xmitstatus *xmitstatus_print_buffer;
|
|
int saved_xmitstatus_ptr;
|
|
int saved_xmitstatus_cnt;
|
|
int xmitstatus_printing;
|
|
};
|
|
|
|
struct bcm43xx_debugfs {
|
|
struct dentry *root;
|
|
struct dentry *dentry_driverinfo;
|
|
};
|
|
|
|
void bcm43xx_debugfs_init(void);
|
|
void bcm43xx_debugfs_exit(void);
|
|
void bcm43xx_debugfs_add_device(struct bcm43xx_private *bcm);
|
|
void bcm43xx_debugfs_remove_device(struct bcm43xx_private *bcm);
|
|
void bcm43xx_debugfs_log_txstat(struct bcm43xx_private *bcm,
|
|
struct bcm43xx_xmitstatus *status);
|
|
|
|
/* Debug helper: Dump binary data through printk. */
|
|
void bcm43xx_printk_dump(const char *data,
|
|
size_t size,
|
|
const char *description);
|
|
/* Debug helper: Dump bitwise binary data through printk. */
|
|
void bcm43xx_printk_bitdump(const unsigned char *data,
|
|
size_t bytes, int msb_to_lsb,
|
|
const char *description);
|
|
#define bcm43xx_printk_bitdumpt(pointer, msb_to_lsb, description) \
|
|
do { \
|
|
bcm43xx_printk_bitdump((const unsigned char *)(pointer), \
|
|
sizeof(*(pointer)), \
|
|
(msb_to_lsb), \
|
|
(description)); \
|
|
} while (0)
|
|
|
|
#else /* CONFIG_BCM43XX_DEBUG*/
|
|
|
|
static inline
|
|
void bcm43xx_debugfs_init(void) { }
|
|
static inline
|
|
void bcm43xx_debugfs_exit(void) { }
|
|
static inline
|
|
void bcm43xx_debugfs_add_device(struct bcm43xx_private *bcm) { }
|
|
static inline
|
|
void bcm43xx_debugfs_remove_device(struct bcm43xx_private *bcm) { }
|
|
static inline
|
|
void bcm43xx_debugfs_log_txstat(struct bcm43xx_private *bcm,
|
|
struct bcm43xx_xmitstatus *status) { }
|
|
|
|
static inline
|
|
void bcm43xx_printk_dump(const char *data,
|
|
size_t size,
|
|
const char *description)
|
|
{
|
|
}
|
|
static inline
|
|
void bcm43xx_printk_bitdump(const unsigned char *data,
|
|
size_t bytes, int msb_to_lsb,
|
|
const char *description)
|
|
{
|
|
}
|
|
#define bcm43xx_printk_bitdumpt(pointer, msb_to_lsb, description) do { /* nothing */ } while (0)
|
|
|
|
#endif /* CONFIG_BCM43XX_DEBUG*/
|
|
|
|
/* Ugly helper macros to make incomplete code more verbose on runtime */
|
|
#ifdef TODO
|
|
# undef TODO
|
|
#endif
|
|
#define TODO() \
|
|
do { \
|
|
printk(KERN_INFO PFX "TODO: Incomplete code in %s() at %s:%d\n", \
|
|
__FUNCTION__, __FILE__, __LINE__); \
|
|
} while (0)
|
|
|
|
#ifdef FIXME
|
|
# undef FIXME
|
|
#endif
|
|
#define FIXME() \
|
|
do { \
|
|
printk(KERN_INFO PFX "FIXME: Possibly broken code in %s() at %s:%d\n", \
|
|
__FUNCTION__, __FILE__, __LINE__); \
|
|
} while (0)
|
|
|
|
#endif /* BCM43xx_DEBUGFS_H_ */
|