You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(9) |
Aug
(16) |
Sep
(11) |
Oct
(113) |
Nov
(136) |
Dec
(123) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(61) |
Feb
(42) |
Mar
(114) |
Apr
(34) |
May
(5) |
Jun
(26) |
Jul
(4) |
Aug
(29) |
Sep
(62) |
Oct
(24) |
Nov
(3) |
Dec
(9) |
2005 |
Jan
(23) |
Feb
(8) |
Mar
(36) |
Apr
(75) |
May
(10) |
Jun
(109) |
Jul
(54) |
Aug
(135) |
Sep
(163) |
Oct
(83) |
Nov
(32) |
Dec
(44) |
2006 |
Jan
(134) |
Feb
(78) |
Mar
(27) |
Apr
(10) |
May
(16) |
Jun
(5) |
Jul
(6) |
Aug
(3) |
Sep
(6) |
Oct
(2) |
Nov
|
Dec
(9) |
2007 |
Jan
(8) |
Feb
(4) |
Mar
(2) |
Apr
|
May
(7) |
Jun
(14) |
Jul
(16) |
Aug
(4) |
Sep
(2) |
Oct
(1) |
Nov
(2) |
Dec
(1) |
2008 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
(27) |
Jun
(2) |
Jul
(29) |
Aug
(5) |
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(5) |
2009 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
|
Dec
|
2010 |
Jan
(9) |
Feb
|
Mar
(7) |
Apr
(5) |
May
(2) |
Jun
|
Jul
|
Aug
(1) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
(152) |
May
(248) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
(8) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
(2) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
From: Jim C. <jim...@gm...> - 2012-05-12 06:26:07
|
Signed-off-by: Jim Cromie <jim...@gm...> --- acx_struct_hw.h | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/acx_struct_hw.h b/acx_struct_hw.h index 2c344cc..4096b35 100644 --- a/acx_struct_hw.h +++ b/acx_struct_hw.h @@ -540,12 +540,17 @@ typedef struct rxbuffer { u8 phy_level; /* PHY stat */ u8 phy_snr; /* PHY stat */ u32 time; /* timestamp upon MAC rcv first byte */ -/* 4-byte (acx100) or 8-byte (acx111) phy header will be here -** if RX_CFG1_INCLUDE_PHY_HDR is in effect: -** phy_hdr_t phy */ + + /* 4-byte (acx100) or 8-byte (acx111) phy header will be here + * if RX_CFG1_INCLUDE_PHY_HDR is in effect: + */ + /* phy_hdr_t phy; */ + struct ieee80211_hdr hdr_a3; /* maximally sized data part of wlan packet */ - // OW 20100513 u8 data_a3[30 + 2312 + 4 - 24]; /*WLAN_A4FR_MAXLEN_WEP_FCS - WLAN_HDR_A3_LEN]*/ + /* OW 20100513 u8 data_a3[30 + 2312 + 4 - 24]; + // WLAN_A4FR_MAXLEN_WEP_FCS - WLAN_HDR_A3_LEN] + */ u8 data_a3[WLAN_A4FR_MAXLEN_WEP_FCS - WLAN_HDR_A3_LEN]; /* can add hdr/data_a4 if needed */ } ACX_PACKED rxbuffer_t; @@ -945,7 +950,7 @@ enum { IO_ACX_ECPU_CTRL }; /* ***** ABSOLUTELY ALWAYS KEEP OFFSETS IN SYNC WITH THE INITIALIZATION -** OF THE I/O ARRAYS!!!! (grep for '^IO_ACX') ***** */ + * OF THE I/O ARRAYS!!!! (grep for '^IO_ACX') ***** */ /* Values for IO_ACX_INT_TRIG register: */ /* inform hw that rxdesc in queue needs processing */ @@ -973,8 +978,9 @@ struct txhostdesc { /* From here on you can use this area as you want (variable length, too!) */ u8 *data; - // OW ieee80211_tx_status not really required here - // struct ieee80211_tx_status txstatus; + /* OW ieee80211_tx_status not really required here + * struct ieee80211_tx_status txstatus; + */ struct sk_buff *skb; } ACX_PACKED; @@ -991,8 +997,8 @@ struct rxhostdesc { /*********************************************************************** -** BOM USB structures and constants -*/ + * BOM USB structures and constants + */ #ifdef ACX_MAC80211_USB /* Used for usb_txbuffer.desc field */ @@ -1009,12 +1015,12 @@ typedef struct usb_txbuffer { u8 ctrl2; u16 data_len; /* wlan packet content is placed here: */ - // OW 20100513 u8 data[30 + 2312 + 4]; /*WLAN_A4FR_MAXLEN_WEP_FCS]*/ + /* OW 20100513 u8 data[30 + 2312 + 4]; // WLAN_A4FR_MAXLEN_WEP_FCS] */ u8 data[WLAN_A4FR_MAXLEN_WEP_FCS]; } ACX_PACKED usb_txbuffer_t; /* USB returns either rx packets (see rxbuffer) or -** these "tx status" structs: */ + * these "tx status" structs: */ typedef struct usb_txstatus { u16 mac_cnt_rcvd; /* only 12 bits are len! (0xfff) */ u8 queue_index; @@ -1122,7 +1128,7 @@ typedef struct acx111_ie_configoption { u8 _padding[4]; } ACX_PACKED acx111_ie_configoption_t; -// Misc TODO Move elsewhere +/* Misc TODO Move elsewhere */ typedef struct shared_queueindicator { u32 indicator; u16 host_lock; @@ -1522,7 +1528,7 @@ typedef struct acx_template_proberesp { /* 24 n SSID * */ /* nn n Supported Rates * */ /* nn 1 DS Parameter Set * */ -// OW 20100514 u8 variable[0x54 - 2-2-6-6-6-2-8-2-2]; +/* OW 20100514 u8 variable[0x54 - 2-2-6-6-6-2-8-2-2]; */ u8 variable[0x154 - 2-2-6-6-6-2-8-2-2]; } ACX_PACKED acx_template_proberesp_t; #define acx_template_beacon_t acx_template_proberesp_t @@ -1531,8 +1537,9 @@ typedef struct acx_template_proberesp { typedef struct acx_template_nullframe { u16 size; struct ieee80211_hdr hdr; - // OW, 20080210 code: struct wlan_hdr_a3 hdr; - // maybe better user: ieee80211_hdr_3addr + /* OW, 20080210 code: struct wlan_hdr_a3 hdr; + * maybe better user: ieee80211_hdr_3addr + */ } ACX_PACKED acx_template_nullframe_t; @@ -1660,8 +1667,9 @@ typedef struct acx_ie_generic { } ACX_PACKED m; } ACX_PACKED acx_ie_generic_t; -// OW TODO This could be cleanup actually. -// Code for WEP key setting in HW should be taken from 20080210 version. +/* OW TODO This could be cleanup actually. + * Code for WEP key setting in HW should be taken from 20080210 version. + */ #define ACX_SEC_KEYSIZE 16 /* Security algorithms. */ enum { -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-12 06:26:06
|
Signed-off-by: Jim Cromie <jim...@gm...> --- acx_func.h | 640 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 332 insertions(+), 308 deletions(-) diff --git a/acx_func.h b/acx_func.h index 7b5d993..493da96 100644 --- a/acx_func.h +++ b/acx_func.h @@ -20,13 +20,15 @@ #include <linux/version.h> -// CONFIG_ACX_MAC80211_VERSION allows to specify the version of the used -// wireless mac80211 api, in case it is different of the used kernel. -// OpenWRT e.g. uses a version of compat-wireless, which is ahead of -// the used kernel. +/* CONFIG_ACX_MAC80211_VERSION allows to specify the version of the used + * wireless mac80211 api, in case it is different of the used kernel. + * OpenWRT e.g. uses a version of compat-wireless, which is ahead of + * the used kernel. + */ // -// CONFIG_ACX_MAC80211_VERSION can be defined on the make command line by -// passing EXTRA_CFLAGS="-DCONFIG_ACX_MAC80211_VERSION=\"KERNEL_VERSION(2,6,34)\"" +/* CONFIG_ACX_MAC80211_VERSION can be defined on the make command line by + * passing EXTRA_CFLAGS="-DCONFIG_ACX_MAC80211_VERSION=\"KERNEL_VERSION(2,6,34)\"" + */ #ifndef CONFIG_ACX_MAC80211_VERSION #define CONFIG_ACX_MAC80211_VERSION LINUX_VERSION_CODE @@ -43,7 +45,7 @@ #define CMD_TIMEOUT_MS(n) (n) #define ACX_CMD_TIMEOUT_DEFAULT CMD_TIMEOUT_MS(50) -// Define ACX_GIT_VERSION with "undef" value, if undefined for some reason +/* Define ACX_GIT_VERSION with "undef" value, if undefined for some reason */ #ifndef ACX_GIT_VERSION #define ACX_GIT_VERSION "unknown" #endif @@ -53,8 +55,9 @@ * ================================================== */ -// BOM Locking (Common) -// ----- +/* BOM Locking (Common) + * ----- + */ /* * Locking is done mainly using the adev->sem. @@ -77,101 +80,101 @@ #ifdef OW_20100613_OBSELETE_ACXLOCK_REMOVE #if defined(PARANOID_LOCKING) /* Lock debugging */ -//- void acx_lock_debug(acx_device_t *adev, const char* where); -//- void acx_unlock_debug(acx_device_t *adev, const char* where); +/* - void acx_lock_debug(acx_device_t *adev, const char* where); + * - void acx_unlock_debug(acx_device_t *adev, const char* where); + */ void acx_lock_unhold(void); -//- void acx_sem_unhold(void); -//- -//- static inline void -//- acx_lock_helper(acx_device_t *adev, unsigned long *fp, const char* where) -//- { -//- acx_lock_debug(adev, where); -//- spin_lock_irqsave(&adev->spinlock, *fp); -//- } -//- static inline void -//- acx_unlock_helper(acx_device_t *adev, unsigned long *fp, const char* where) -//- { -//- acx_unlock_debug(adev, where); -//- spin_unlock_irqrestore(&adev->spinlock, *fp); -//- } +/* - void acx_sem_unhold(void); + * - + * - static inline void + * - acx_lock_helper(acx_device_t *adev, unsigned long *fp, const char* where) + * - { + * - acx_lock_debug(adev, where); + * - spin_lock_irqsave(&adev->spinlock, *fp); + * - } + * - static inline void + * - acx_unlock_helper(acx_device_t *adev, unsigned long *fp, const char* where) + * - { + * - acx_unlock_debug(adev, where); + * - spin_unlock_irqrestore(&adev->spinlock, *fp); + * - } + */ #ifdef OBSELETE_OW20100613 -//- #define acx_lock(adev, flags) acx_lock_helper(adev, &(flags), //- __FILE__ ":" STRING(__LINE__)) -//- #define acx_unlock(adev, flags) acx_unlock_helper(adev, &(flags), //- __FILE__ ":" STRING(__LINE__)) +/* - #define acx_lock(adev, flags) acx_lock_helper(adev, &(flags), * - __FILE__ ":" STRING(__LINE__)) + * - #define acx_unlock(adev, flags) acx_unlock_helper(adev, &(flags), * - __FILE__ ":" STRING(__LINE__)) + */ #endif -//- +/* - */ #elif defined(DO_LOCKING) -//#define acx_lock(adev, flags) spin_lock_irqsave(&adev->spinlock, //- flags) -//#define acx_unlock(adev, flags) //- spin_unlock_irqrestore(&adev->spinlock, flags) -//- #define acx_lock(adev, flags) ((void)0) -//- #define acx_unlock(adev, flags) ((void)0) -//- -//- #define acx_sem_lock(adev) mutex_lock(&(adev)->mutex) -//- #define acx_sem_unlock(adev) mutex_unlock(&(adev)->mutex) -//- #define acx_lock_unhold() ((void)0) -//- #define acx_sem_unhold() ((void)0) -//- +/* #define acx_lock(adev, flags) spin_lock_irqsave(&adev->spinlock, * - flags) + * #define acx_unlock(adev, flags) * - spin_unlock_irqrestore(&adev->spinlock, flags) + * - #define acx_lock(adev, flags) ((void)0) + * - #define acx_unlock(adev, flags) ((void)0) + * - + * - #define acx_sem_lock(adev) mutex_lock(&(adev)->mutex) + * - #define acx_sem_unlock(adev) mutex_unlock(&(adev)->mutex) + * - #define acx_lock_unhold() ((void)0) + * - #define acx_sem_unhold() ((void)0) + * - + */ #else /* no locking! :( */ -//- -//- #define acx_lock(adev, flags) ((void)0) -//- #define acx_unlock(adev, flags) ((void)0) -//- #define acx_sem_lock(adev) ((void)0) -//- #define acx_sem_unlock(adev) ((void)0) -//- #define acx_lock_unhold() ((void)0) -//- #define acx_sem_unhold() ((void)0) -//- +/* - + * - #define acx_lock(adev, flags) ((void)0) + * - #define acx_unlock(adev, flags) ((void)0) + * - #define acx_sem_lock(adev) ((void)0) + * - #define acx_sem_unlock(adev) ((void)0) + * - #define acx_lock_unhold() ((void)0) + * - #define acx_sem_unhold() ((void)0) + * - + */ #endif #endif -//- -//- -// BOM Logging (Common) -// ----- -//- -//- /* -//- * LOGGING -//- * -//- * - Avoid SHOUTING needlessly. Avoid excessive verbosity. -//- * Gradually remove messages which are old debugging aids. -//- * -//- * - Use printk() for messages which are to be always logged. -//- * Supply either 'acx:' or '<devname>:' prefix so that user -//- * can figure out who's speaking among other kernel chatter. -//- * acx: is for general issues (e.g. "acx: no firmware image!") -//- * while <devname>: is related to a particular device -//- * (think about multi-card setup). Double check that message -//- * is not confusing to the average user. -//- * -//- * - use printk KERN_xxx level only if message is not a WARNING -//- * but is INFO, ERR etc. -//- * -//- * - Use printk_ratelimited() for messages which may flood -//- * (e.g. "rx DUP pkt!"). -//- * -//- * - Use log() for messages which may be omitted (and they -//- * _will_ be omitted in non-debug builds). Note that -//- * message levels may be disabled at compile-time selectively, -//- * thus select them wisely. Example: L_DEBUG is the lowest -//- * (most likely to be compiled out) -> use for less important stuff. -//- * -//- * - Do not print important stuff with log(), or else people -//- * will never build non-debug driver. -//- * -//- * Style: -//- * hex: capital letters, zero filled (e.g. 0x02AC) -//- * str: dont start from capitals, no trailing periods ("tx: queue is //- stopped") -//- */ -//- -// Debug build +/* + * BOM Logging (Common) + * + * - Avoid SHOUTING needlessly. Avoid excessive verbosity. + * Gradually remove messages which are old debugging aids. + * + * - Use printk() for messages which are to be always logged. + * Supply either 'acx:' or '<devname>:' prefix so that user + * can figure out who's speaking among other kernel chatter. + * acx: is for general issues (e.g. "acx: no firmware image!") + * while <devname>: is related to a particular device + * (think about multi-card setup). Double check that message + * is not confusing to the average user. + * + * - use printk KERN_xxx level only if message is not a WARNING + * but is INFO, ERR etc. + * + * - Use printk_ratelimited() for messages which may flood + * (e.g. "rx DUP pkt!"). + * + * - Use log() for messages which may be omitted (and they + * _will_ be omitted in non-debug builds). Note that + * message levels may be disabled at compile-time selectively, + * thus select them wisely. Example: L_DEBUG is the lowest + * (most likely to be compiled out) -> use for less important stuff. + * + * - Do not print important stuff with log(), or else people + * will never build non-debug driver. + * + * Style: + * hex: capital letters, zero filled (e.g. 0x02AC) + * str: dont start from capitals, no trailing periods ("tx: queue is * - stopped") + */ + +/* Debug build */ #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); -//- -//- 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); +/* + * 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); + */ void acx_dump_bytes(const void *data, int num); const char *acx_cmd_status_str(unsigned int state); @@ -202,14 +205,15 @@ const char *acx_cmd_status_str(unsigned int state); pr_notice(args); \ } while (0) -// Log with prefix "acx: __func__ +/* 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); -// None-Debug build -// OW 20100405: An none-debug build is currently probably broken +/* None-Debug build + * OW 20100405: An none-debug build is currently probably broken + */ #else #define FN_ENTER do {} while(0) @@ -225,44 +229,50 @@ do { \ } while (0) #endif -//--- +/* --- */ -#define TODO() \ - do { \ - printk(KERN_INFO "TODO: Incomplete code in %s() at %s:%d\n", \ - __FUNCTION__, __FILE__, __LINE__); \ +#define TODO() \ + do { \ + printk(KERN_INFO "TODO: Incomplete code in %s() at %s:%d\n", \ + __FUNCTION__, __FILE__, __LINE__); \ } while (0) -#define FIXME() \ - do { \ - printk(KERN_INFO "FIXME: Possibly broken code in %s() at %s:%d\n", \ - __FUNCTION__, __FILE__, __LINE__); \ +#define FIXME() \ + do { \ + printk(KERN_INFO "FIXME: Possibly broken code in %s() at %s:%d\n", \ + __FUNCTION__, __FILE__, __LINE__); \ } while (0) -// BOM Data Access (Common) -// ----- +/* BOM Data Access (Common) + * ----- + */ -// BOM Firmware, EEPROM, Phy (Common) -// ----- +/* BOM Firmware, EEPROM, Phy (Common) + * ----- + */ void acx_get_firmware_version(acx_device_t *adev); void acx_display_hardware_details(acx_device_t *adev); firmware_image_t *acx_read_fw(struct device *dev, const char *file, u32 *size); void acx_parse_configoption(acx_device_t *adev, const acx111_ie_configoption_t *pcfg); -//- int acx_read_phy_reg(acx_device_t *adev, u32 reg, u8 *charbuf); -//- int acx_write_phy_reg(acx_device_t *adev, u32 reg, u8 value); +/* + * int acx_read_phy_reg(acx_device_t *adev, u32 reg, u8 *charbuf); + * int acx_write_phy_reg(acx_device_t *adev, u32 reg, u8 value); + */ + +/* BOM CMDs (Common:Control Path) + * ----- + */ -// BOM CMDs (Common:Control Path) -// ----- +/* int acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, void //- *param, unsigned len, unsigned timeout, const char* cmdstr); */ -//- int acx_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, void //- *param, unsigned len, unsigned timeout, const char* cmdstr); #define acx_issue_cmd(adev,cmd,param,len) \ acx_issue_cmd_timeo_debug(adev,cmd,param,len,ACX_CMD_TIMEOUT_DEFAULT,#cmd) #define acx_issue_cmd_timeo(adev,cmd,param,len,timeo) \ acx_issue_cmd_timeo_debug(adev,cmd,param,len,timeo,#cmd) -//- int acx_configure_debug(acx_device_t *adev, void *pdr, int type, const char* str); +/* int acx_configure_debug(acx_device_t *adev, void *pdr, int type, const char* str); */ #define acx_configure(adev,pdr,type) \ acx_configure_debug(adev,pdr,type,#type) @@ -271,91 +281,103 @@ int acx_interrogate_debug(acx_device_t *adev, void *pdr, #define acx_interrogate(adev,pdr,type) \ acx_interrogate_debug(adev,pdr,type,#type) -//- int acx_cmd_join_bssid(acx_device_t *adev, const u8 *bssid); +/* int acx_cmd_join_bssid(acx_device_t *adev, const u8 *bssid); */ -// BOM Configuration (Common:Control Path) -// ----- +/* BOM Configuration (Common:Control Path) + * ----- + */ void acx_set_defaults(acx_device_t * adev); void acx_start(acx_device_t * adev); -//- int acx_net_reset(struct ieee80211_hw *ieee); +/* int acx_net_reset(struct ieee80211_hw *ieee); */ int acx_init_mac(acx_device_t * adev); int acx_setup_modes(acx_device_t *adev); -//- int acx_selectchannel(acx_device_t *adev, u8 channel, int freq); -// void acx_update_capabilities(acx_device_t *adev); +/* int acx_selectchannel(acx_device_t *adev, u8 channel, int freq); + * void acx_update_capabilities(acx_device_t *adev); + */ -// BOM Template (Common:Control Path) -// ----- +/* BOM Template (Common:Control Path) + * ----- + */ -// BOM Recalibration (Common:Control Path) -// ----- +/* BOM Recalibration (Common:Control Path) + * ----- + */ -// BOM Other (Common:Control Path) -// ----- +/* BOM Other (Common:Control Path) + * ----- + */ -// BOM Proc, Debug (Common) -// ----- +/* 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; } +/* - 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; } + */ #endif -//- -// BOM Rx Path (Common) -// ----- +/* - + * BOM Rx Path (Common) + * ----- + */ void acx_process_rxbuf(acx_device_t *adev, rxbuffer_t *rxbuf); -// BOM Tx Path (Common) -// ----- +/* BOM Tx Path (Common) + * ----- + */ #if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(2, 6, 39) int acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb); #else void acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb); #endif -//- + void acx_tx_work(struct work_struct *work); -//- void acx_tx_queue_go(acx_device_t *adev); -//- int acx_tx_frame(acx_device_t *adev, struct sk_buff *skb); +/* - void acx_tx_queue_go(acx_device_t *adev); + * - int acx_tx_frame(acx_device_t *adev, struct sk_buff *skb); + */ void acx_tx_queue_flush(acx_device_t *adev); void acx_stop_queue(struct ieee80211_hw *hw, const char *msg); int acx_queue_stopped(struct ieee80211_hw *ieee); void acx_wake_queue(struct ieee80211_hw *hw, const char *msg); -//- tx_t* acx_alloc_tx(acx_device_t *adev, unsigned int len); +/* - tx_t* acx_alloc_tx(acx_device_t *adev, unsigned int len); */ void acxpcimem_handle_tx_error(acx_device_t *adev, u8 error, unsigned int finger, struct ieee80211_tx_info *info); u16 acx111_tx_build_rateset(acx_device_t *adev, txdesc_t *txdesc, struct ieee80211_tx_info *info); void acx111_tx_build_txstatus(acx_device_t *adev, struct ieee80211_tx_info *txstatus, u16 r111, u8 ack_failures); -//- u16 acx_rate111_hwvalue_to_bitrate(u16 hw_value); -//- int acx_rate111_hwvalue_to_rateindex(u16 hw_value); -//- -//void acx_l_handle_txrate_auto(acx_device_t *adev, struct client *txc, -// u16 intended_rate, u8 rate100, u16 rate111, u8 error, -// int pkts_to_ignore); -//- -//- -// BOM Crypto (Common) -// ----- -//- int acx_clear_keys(acx_device_t * adev); -//- int acx_key_write(acx_device_t *adev, u16 index, u8 algorithm, const //- struct ieee80211_key_conf *key, const u8 *mac_addr); -//- -// BOM Irq Handling, Timer (Common) -// ----- +/* - u16 acx_rate111_hwvalue_to_bitrate(u16 hw_value); + * - int acx_rate111_hwvalue_to_rateindex(u16 hw_value); + * - + * void acx_l_handle_txrate_auto(acx_device_t *adev, struct client *txc, + * u16 intended_rate, u8 rate100, u16 rate111, u8 error, + * int pkts_to_ignore); + * - + * - + * BOM Crypto (Common) + * ----- + * - int acx_clear_keys(acx_device_t * adev); + * - int acx_key_write(acx_device_t *adev, u16 index, u8 algorithm, const * - struct ieee80211_key_conf *key, const u8 *mac_addr); + * - + * BOM Irq Handling, Timer (Common) + * ----- + */ void acx_init_task_scheduler(acx_device_t *adev); void acx_after_interrupt_task(acx_device_t *adev); void acx_schedule_task(acx_device_t *adev, unsigned int set_flag); void acx_log_irq(u16 irqtype); void acx_timer(unsigned long address); -//- void acx_set_timer(acx_device_t * adev, int timeout_us); -//- -// BOM Mac80211 Ops (Common) -// ----- -//- +/* - void acx_set_timer(acx_device_t * adev, int timeout_us); + * - + * BOM Mac80211 Ops (Common) + * ----- + * - + */ #if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(2, 6, 34) int acx_op_add_interface(struct ieee80211_hw* ieee, struct ieee80211_if_init_conf *conf); @@ -401,13 +423,15 @@ int acx_e_op_get_tx_stats(struct ieee80211_hw* ieee, int acx_op_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, bool set); -//- -// BOM Helpers (Common) -// ----- +/* - + * BOM Helpers (Common) + * ----- + */ void acx_mwait(int ms); -//- u8 acx_signal_determine_quality(u8 signal, u8 noise); -// void great_inquisitor(acx_device_t *adev); +/* - u8 acx_signal_determine_quality(u8 signal, u8 noise); + * void great_inquisitor(acx_device_t *adev); + */ #if !ACX_DEBUG static inline const char *acx_get_packet_type_string(u16 fc) { return ""; } @@ -415,61 +439,53 @@ static inline const char *acx_get_packet_type_string(u16 fc) { return ""; } const char *acx_get_packet_type_string(u16 fc); #endif -// MAC address helpers -// --- -static inline void -MAC_COPY(u8 *mac, const u8 *src) +/* MAC address helpers + * --- + */ +static inline void MAC_COPY(u8 *mac, const u8 *src) { memcpy(mac, src, ETH_ALEN); } -static inline void -MAC_FILL(u8 *mac, u8 val) +static inline void MAC_FILL(u8 *mac, u8 val) { memset(mac, val, ETH_ALEN); } -static inline void -MAC_BCAST(u8 *mac) +static inline void MAC_BCAST(u8 *mac) { ((u16*)mac)[2] = *(u32*)mac = -1; } -static inline void -MAC_ZERO(u8 *mac) +static inline void MAC_ZERO(u8 *mac) { ((u16*)mac)[2] = *(u32*)mac = 0; } -static inline int -mac_is_equal(const u8 *a, const u8 *b) +static inline int mac_is_equal(const u8 *a, const u8 *b) { /* can't beat this */ return memcmp(a, b, ETH_ALEN) == 0; } -static inline int -mac_is_bcast(const u8 *mac) +static inline int mac_is_bcast(const u8 *mac) { /* AND together 4 first bytes with sign-extended 2 last bytes - ** Only bcast address gives 0xffffffff. +1 gives 0 */ + * Only bcast address gives 0xffffffff. +1 gives 0 */ return ( *(s32*)mac & ((s16*)mac)[2] ) + 1 == 0; } -static inline int -mac_is_zero(const u8 *mac) +static inline int mac_is_zero(const u8 *mac) { return ( *(u32*)mac | ((u16*)mac)[2] ) == 0; } -static inline int -mac_is_directed(const u8 *mac) +static inline int mac_is_directed(const u8 *mac) { return (mac[0] & 1)==0; } -static inline int -mac_is_mcast(const u8 *mac) +static inline int mac_is_mcast(const u8 *mac) { return (mac[0] & 1) && !mac_is_bcast(mac); } @@ -484,8 +500,9 @@ mac_is_mcast(const u8 *mac) ((unsigned char *)bytevector)[5] -// Random helpers -// --- +/* Random helpers + * --- + */ #define TO_STRING(x) #x #define STRING(x) TO_STRING(x) @@ -494,8 +511,7 @@ mac_is_mcast(const u8 *mac) #define CHECK_BIT(val, mask) ((val) & (mask)) /* undefined if v==0 */ -static inline unsigned int -lowest_bit(u16 v) +static inline unsigned int lowest_bit(u16 v) { unsigned int n = 0; while (!(v & 0xf)) { v>>=4; n+=4; } @@ -504,8 +520,7 @@ lowest_bit(u16 v) } /* undefined if v==0 */ -static inline unsigned int -highest_bit(u16 v) +static inline unsigned int highest_bit(u16 v) { unsigned int n = 0; while (v>0xf) { v>>=4; n+=4; } @@ -514,30 +529,30 @@ highest_bit(u16 v) } /* undefined if v==0 */ -static inline int -has_only_one_bit(u16 v) +static inline int has_only_one_bit(u16 v) { return ((v-1) ^ v) >= v; } -static inline int -is_hidden_essid(char *essid) +static inline int is_hidden_essid(char *essid) { return (('\0' == essid[0]) || ((' ' == essid[0]) && ('\0' == essid[1]))); } -// More random helpers -// --- -static inline struct ieee80211_hdr* -acx_get_wlan_hdr(acx_device_t *adev, const rxbuffer_t *rxbuf) +/* More random helpers + * --- + */ +static inline struct ieee80211_hdr* acx_get_wlan_hdr(acx_device_t *adev, + const rxbuffer_t *rxbuf) { return (struct ieee80211_hdr *)((u8 *)&rxbuf->hdr_a3 + adev->phy_header_len); } -// BOM Driver, Module (Common) -// ----- +/* BOM Driver, Module (Common) + * ----- + */ /* @@ -545,121 +560,130 @@ acx_get_wlan_hdr(acx_device_t *adev, const rxbuffer_t *rxbuf) * ================================================== */ -// Data Access +/* Data Access */ -//=int acxpci_create_hostdesc_queues(acx_device_t * adev); -//=void acxpci_create_desc_queues(acx_device_t * adev, u32 tx_queue_start, u32 rx_queue_start); -//=void acxpci_free_desc_queues(acx_device_t * adev); +/* =int acxpci_create_hostdesc_queues(acx_device_t * adev); + * =void acxpci_create_desc_queues(acx_device_t * adev, u32 tx_queue_start, u32 rx_queue_start); + * =void acxpci_free_desc_queues(acx_device_t * adev); + */ -// Firmware, EEPROM, Phy -//- int acxpci_upload_radio(acx_device_t * adev); -//=int acxpci_read_eeprom_byte(acx_device_t * adev, u32 addr, u8 * charbuf); -// int acxpci_s_write_eeprom(acx_device_t * adev, u32 addr, u32 len, const u8 * charbuf); -//- int acxpci_read_phy_reg(acx_device_t * adev, u32 reg, u8 * charbuf); -//- int acxpci_write_phy_reg(acx_device_t * adev, u32 reg, u8 value); -//- -// CMDs (Control Path) +/* Firmware, EEPROM, Phy + * - int acxpci_upload_radio(acx_device_t * adev); + * =int acxpci_read_eeprom_byte(acx_device_t * adev, u32 addr, u8 * charbuf); + * int acxpci_s_write_eeprom(acx_device_t * adev, u32 addr, u32 len, const u8 * charbuf); + * - int acxpci_read_phy_reg(acx_device_t * adev, u32 reg, u8 * charbuf); + * - int acxpci_write_phy_reg(acx_device_t * adev, u32 reg, u8 value); + * - + * CMDs (Control Path) + */ int acx_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, void *buffer, unsigned buflen, unsigned cmd_timeout, const char *cmdstr); -//- -// Init, Configuration (Control Path) -//- int acxpci_reset_dev(acx_device_t * adev); -//- -// Other (Control Path) -//- -// Proc, Debug -//- int acxpci_proc_diag_output(struct seq_file *file, acx_device_t *adev); -//=char *acxpci_proc_eeprom_output(int *len, acx_device_t * adev); -//- -// Rx Path -//- -// Tx Path -//- tx_t *acxpci_alloc_tx(acx_device_t * adev); -//=void *acxpci_get_txbuf(acx_device_t * adev, tx_t * tx_opaque); -//=void acxpci_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, struct ieee80211_tx_info *ieeectl, struct sk_buff *skb); -//=unsigned int acxpci_tx_clean_txdesc(acx_device_t * adev); -//=void acxpci_clean_txdesc_emergency(acx_device_t * adev); -//- int acx100pci_set_tx_level(acx_device_t * adev, u8 level_dbm); -//- -// Irq Handling, Timer -//- void acxpci_irq_work(struct work_struct *work); -//- void acxpci_set_interrupt_mask(acx_device_t * adev); -//- -// Mac80211 Ops -//- -// Helpers -//- void acxpci_power_led(acx_device_t * adev, int enable); -//- -// Ioctls -//- int acx111pci_ioctl_info(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); -//- -// Driver, Module -//- -//- int __init acxpci_init_module(void); -//- void __exit acxpci_cleanup_module(void); -//- -//- /* -//- * BOM Mem prototypes -//- * ================================================== -//- */ -// Data Access -//= int acxmem_create_hostdesc_queues(acx_device_t *adev); -//= void acxmem_create_desc_queues(acx_device_t *adev, u32 tx_queue_start, //- u32 rx_queue_start); -//=void acxmem_free_desc_queues(acx_device_t *adev); -//- -// Firmware, EEPROM, Phy -//- int acxmem_upload_radio(acx_device_t *adev); -//=int acxmem_read_eeprom_byte(acx_device_t *adev, u32 addr, u8 *charbuf); +/* - + * Init, Configuration (Control Path) + * - int acxpci_reset_dev(acx_device_t * adev); + * - + * Other (Control Path) + * - + * Proc, Debug + * - int acxpci_proc_diag_output(struct seq_file *file, acx_device_t *adev); + * =char *acxpci_proc_eeprom_output(int *len, acx_device_t * adev); + * - + * Rx Path + * - + * Tx Path + * - tx_t *acxpci_alloc_tx(acx_device_t * adev); + * =void *acxpci_get_txbuf(acx_device_t * adev, tx_t * tx_opaque); + * =void acxpci_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, struct ieee80211_tx_info *ieeectl, struct sk_buff *skb); + * =unsigned int acxpci_tx_clean_txdesc(acx_device_t * adev); + * =void acxpci_clean_txdesc_emergency(acx_device_t * adev); + * - int acx100pci_set_tx_level(acx_device_t * adev, u8 level_dbm); + * - + * Irq Handling, Timer + * - void acxpci_irq_work(struct work_struct *work); + * - void acxpci_set_interrupt_mask(acx_device_t * adev); + * - + * Mac80211 Ops + * - + * Helpers + * - void acxpci_power_led(acx_device_t * adev, int enable); + * - + * Ioctls + * - int acx111pci_ioctl_info(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); + * - + * Driver, Module + * - + * - int __init acxpci_init_module(void); + * - void __exit acxpci_cleanup_module(void); + * - + */ + +/* + * BOM Mem prototypes + * ================================================== + */ + +/* Data Access + * = int acxmem_create_hostdesc_queues(acx_device_t *adev); + * = void acxmem_create_desc_queues(acx_device_t *adev, u32 tx_queue_start, * - u32 rx_queue_start); + * =void acxmem_free_desc_queues(acx_device_t *adev); + * - + * Firmware, EEPROM, Phy + * - int acxmem_upload_radio(acx_device_t *adev); + * =int acxmem_read_eeprom_byte(acx_device_t *adev, u32 addr, u8 *charbuf); + */ #ifdef UNUSED -//- int acxmem_s_write_eeprom(acx_device_t *adev, u32 addr, u32 len, const u8 //- *charbuf); +/* - int acxmem_s_write_eeprom(acx_device_t *adev, u32 addr, u32 len, const u8 //- *charbuf); */ #endif -//- int acxmem_read_phy_reg(acx_device_t *adev, u32 reg, u8 *charbuf); -//- int acxmem_write_phy_reg(acx_device_t *adev, u32 reg, u8 value); -//- -// CMDs (Control Path) +/* - int acxmem_read_phy_reg(acx_device_t *adev, u32 reg, u8 *charbuf); + * - int acxmem_write_phy_reg(acx_device_t *adev, u32 reg, u8 value); + * - + * CMDs (Control Path) + */ int acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, void *buffer, unsigned buflen, unsigned cmd_timeout, const char* cmdstr); -//- -// Init, Configure (Control Path) -//- int acxmem_reset_dev(acx_device_t *adev); -//- -// Other (Control Path) -//- -// Proc, Debug -//- int acxmem_proc_diag_output(struct seq_file *file, acx_device_t *adev); -//=char *acxmem_proc_eeprom_output(int *len, acx_device_t *adev); -//- -// Rx Path -//- -// Tx Path -//- tx_t *acxmem_alloc_tx(acx_device_t *adev, unsigned int len); -//- void acxmem_dealloc_tx(acx_device_t *adev, tx_t *tx_opaque); -//- -//=void *acxmem_get_txbuf(acx_device_t *adev, tx_t *tx_opaque); -//=void acxmem_init_acx_txbuf2(acx_device_t *adev); -//- -//=void acxmem_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, //- struct ieee80211_tx_info *ieeectl, struct sk_buff *skb); -//=unsigned int acxmem_tx_clean_txdesc(acx_device_t *adev); -//= void acxmem_clean_txdesc_emergency(acx_device_t *adev); -//- -//- void acxmem_update_queue_indicator(acx_device_t *adev, int txqueue); -//- int acx100mem_set_tx_level(acx_device_t *adev, u8 level_dbm); -//- -// Irq Handling, Timer -//- void acxmem_irq_work(struct work_struct *work); -//- void acxmem_set_interrupt_mask(acx_device_t *adev); -//- -// Helpers -//- void acxmem_power_led(acx_device_t *adev, int enable); -//- -// Ioctls -//int acx111pci_ioctl_info(struct ieee80211_hw *hw, struct iw_request_info *info, struct iw_param *vwrq, char *extra); -//int acx100mem_ioctl_set_phy_amp_bias(struct ieee80211_hw *hw, struct iw_request_info *info, struct iw_param *vwrq, char *extra); - -//- int __init acxmem_init_module(void); -//- void __exit acxmem_cleanup_module(void); +/* - + * Init, Configure (Control Path) + * - int acxmem_reset_dev(acx_device_t *adev); + * - + * Other (Control Path) + * - + * Proc, Debug + * - int acxmem_proc_diag_output(struct seq_file *file, acx_device_t *adev); + * =char *acxmem_proc_eeprom_output(int *len, acx_device_t *adev); + * - + * Rx Path + * - + * Tx Path + * - tx_t *acxmem_alloc_tx(acx_device_t *adev, unsigned int len); + * - void acxmem_dealloc_tx(acx_device_t *adev, tx_t *tx_opaque); + * - + * =void *acxmem_get_txbuf(acx_device_t *adev, tx_t *tx_opaque); + * =void acxmem_init_acx_txbuf2(acx_device_t *adev); + * - + * =void acxmem_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, * - struct ieee80211_tx_info *ieeectl, struct sk_buff *skb); + * =unsigned int acxmem_tx_clean_txdesc(acx_device_t *adev); + * = void acxmem_clean_txdesc_emergency(acx_device_t *adev); + * - + * - void acxmem_update_queue_indicator(acx_device_t *adev, int txqueue); + * - int acx100mem_set_tx_level(acx_device_t *adev, u8 level_dbm); + * - + * Irq Handling, Timer + * - void acxmem_irq_work(struct work_struct *work); + * - void acxmem_set_interrupt_mask(acx_device_t *adev); + * - + * Helpers + * - void acxmem_power_led(acx_device_t *adev, int enable); + * - + * Ioctls + * int acx111pci_ioctl_info(struct ieee80211_hw *hw, struct iw_request_info *info, struct iw_param *vwrq, char *extra); + * int acx100mem_ioctl_set_phy_amp_bias(struct ieee80211_hw *hw, struct iw_request_info *info, struct iw_param *vwrq, char *extra); + */ + +/* - int __init acxmem_init_module(void); + * - void __exit acxmem_cleanup_module(void); + */ #endif /* _ACX_FUNC_H_ */ -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-12 06:26:05
|
skips a few where conversion (by script) creates compile errs. Signed-off-by: Jim Cromie <jim...@gm...> --- acx.h | 5 +++-- acx_compat.h | 2 +- interrupt-masks.h | 12 ++++++------ io-acx.h | 5 +++-- mem-inlines.h | 2 +- mem.h | 7 ++++--- pci.h | 26 ++++++++++++++------------ 7 files changed, 32 insertions(+), 27 deletions(-) diff --git a/acx.h b/acx.h index 5550efc..5f764a8 100644 --- a/acx.h +++ b/acx.h @@ -19,8 +19,9 @@ #define _ACX_H_ #define NONESSENTIAL_FEATURES 1 // acx_show_card_eeprom_id() -//#define UNUSED 0 // lots of errs ifdefd -//#define CONFIG_PM 0 // in include/generated/autoconf.h +/* #define UNUSED 0 // lots of errs if defd + * #define CONFIG_PM 0 // in include/generated/autoconf.h + */ #include "acx_compat.h" #include "acx_config.h" diff --git a/acx_compat.h b/acx_compat.h index c25d837..f839a06 100644 --- a/acx_compat.h +++ b/acx_compat.h @@ -13,7 +13,7 @@ do { \ #endif -// may get into 3.4 +/* to be submitted to LKML */ #ifndef BUILD_BUG_DECL #define BUILD_BUG_DECL(name, condition) \ static __initdata struct { \ diff --git a/interrupt-masks.h b/interrupt-masks.h index 87947ca..db0912a 100644 --- a/interrupt-masks.h +++ b/interrupt-masks.h @@ -99,7 +99,7 @@ inline void interrupt_sanity_checks(void) {} const char *devtype_names[] = { "PCI", "USB", "MEM" }; const char *chiptype_names[] = { "", "ACX100", "ACX111" }; -// defd to textually match #define table in acx-struct-hw (then reordered) +/* defd to textually match #define table in acx-struct-hw (then reordered) */ struct interrupt_desc { int flagval; char *name; @@ -166,17 +166,17 @@ void interrupt_show_flags(u16 flagval, u16 versus) { int i, mask, flagdiffs; - // pr_info("flagval:0x%x versus:0x%x\n", flagval, versus); + /* pr_info("flagval:0x%x versus:0x%x\n", flagval, versus); */ flagdiffs = flagval ^ versus; - // pr_info("flagdiffs:0x%x\n", flagdiffs); + /* pr_info("flagdiffs:0x%x\n", flagdiffs); */ if (!flagdiffs) return; flagdiffs = ~flagdiffs; // flags are active low - // pr_info("~flagdiffs:0x%x\n", flagdiffs); + /* pr_info("~flagdiffs:0x%x\n", flagdiffs); */ for (i = 0; i < 16; i++) { mask = 1 << i; @@ -200,7 +200,7 @@ inline void interrupt_sanity_checks(acx_device_t *adev) for (d = 0; d < DEVTYPE_MAX; d++) { for (c = 0; c < CHIPTYPE_MAX; c++) { - // skip non-devices or no-flags (same condition really) + /* skip non-devices or no-flags (same condition really) */ if (!interrupt_masks[d][c]) continue; if (!chiptype_names[c]) continue; @@ -210,7 +210,7 @@ inline void interrupt_sanity_checks(acx_device_t *adev) interrupt_show_flags(interrupt_masks[d][c], 0); - // continue; + /* continue; */ /* see diffs */ pr_info("vs devtype:%d:%s chip:%d:%s val:0x%x\n", diff --git a/io-acx.h b/io-acx.h index 6213832..f120ea3 100644 --- a/io-acx.h +++ b/io-acx.h @@ -1,6 +1,7 @@ -// ick: shouldnt declare things in headers -// cuz including it 2x is bad +/* ick: shouldnt declare things in headers + * cuz including it 2x is bad + */ static const u16 IO_ACX100[] = { 0x0000, /* IO_ACX_SOFT_RESET */ diff --git a/mem-inlines.h b/mem-inlines.h index 36cbfa9..a9052b6 100644 --- a/mem-inlines.h +++ b/mem-inlines.h @@ -84,7 +84,7 @@ #define acx_writel(v, r) writel((v), (r)) #define acx_writew(v, r) writew((v), (r)) -// This controls checking of spin-locking in the mem-interface +/* This controls checking of spin-locking in the mem-interface */ #define ACXMEM_SPIN_CHECK 0 #if ACXMEM_SPIN_CHECK diff --git a/mem.h b/mem.h index 25f823d..a701f7e 100644 --- a/mem.h +++ b/mem.h @@ -14,7 +14,7 @@ #define DUMP_MEM_DEFINED 1 // to insure export of dump* fns too -// Logging +/* Logging */ #if DUMP_MEM_DEFINED > 0 void acxmem_dump_mem(acx_device_t *adev, u32 start, int length); @@ -71,8 +71,9 @@ static inline void acxmem_chaincopy_from_slavemem(acx_device_t *adev, u8 *destination, u32 source, int count) { } -//inline int acxmem_upload_radio(acx_device_t *adev) -//{ return 0; } +/* inline int acxmem_upload_radio(acx_device_t *adev) + * { return 0; } + */ static inline int acxmem_write_fw(acx_device_t *adev, const firmware_image_t *fw_image, u32 offset) diff --git a/pci.h b/pci.h index eca8a7f..50a6ae6 100644 --- a/pci.h +++ b/pci.h @@ -7,12 +7,12 @@ #define STATick /* ick - suppress static, and thus a raft of warnings let linker find the fns in mem.o, pci.o */ -// Logging +/* Logging */ void acxpci_free_coherent(struct pci_dev *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle); -// Firmware, EEPROM, Phy +/* Firmware, EEPROM, Phy */ int acxpci_upload_radio(acx_device_t *adev); int acxpci_write_fw(acx_device_t *adev, const firmware_image_t *fw_image, @@ -21,33 +21,35 @@ int acxpci_validate_fw(acx_device_t *adev, const firmware_image_t *fw_image, u32 offset); int acxpci_upload_fw(acx_device_t *adev); -// CMDs (Control Path) +/* 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); -// Init, Configuration (Control Path) +/* Init, Configuration (Control Path) */ int acxpci_reset_dev(acx_device_t *adev); void acxpci_reset_mac(acx_device_t *adev); -// Other (Control Path) +/* Other (Control Path) */ -// Proc, Debug +/* Proc, Debug */ int acxpci_proc_diag_output(struct seq_file *file, acx_device_t *adev); -// Rx Path -// Tx Path +/* Rx Path + * Tx Path + */ tx_t *acxpci_alloc_tx(acx_device_t *adev); -// Irq Handling, Timer +/* Irq Handling, Timer */ -// Helpers +/* Helpers */ void acxpci_power_led(acx_device_t *adev, int enable); -// Ioctls -// Driver, Module +/* Ioctls + * Driver, Module + */ int __init acxpci_init_module(void); void __exit acxpci_cleanup_module(void); -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-12 06:26:04
|
Signed-off-by: Jim Cromie <jim...@gm...> --- usb.h | 56 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/usb.h b/usb.h index 6312a2a..7e73564 100644 --- a/usb.h +++ b/usb.h @@ -1,5 +1,5 @@ -// usb.h - included directly by common.c +/* usb.h - included directly by common.c */ /* * BOM Prototypes @@ -11,55 +11,61 @@ #include <linux/usb.h> -// Logging +/* Logging */ -// Data Access +/* Data Access */ -// Firmware, EEPROM, Phy +/* Firmware, EEPROM, Phy */ int acxusb_read_phy_reg(acx_device_t * adev, u32 reg, u8 * charbuf); int acxusb_write_phy_reg(acx_device_t * adev, u32 reg, u8 value); -// static void acxusb_read_eeprom_version(acx_device_t * adev); -// static int acxusb_boot(struct usb_device *usbdev, int is_tnetw1450, int *radio_type); -// static inline int acxusb_fw_needs_padding(firmware_image_t *fw_image, unsigned int usb_maxlen); +/* static void acxusb_read_eeprom_version(acx_device_t * adev); + * static int acxusb_boot(struct usb_device *usbdev, int is_tnetw1450, int *radio_type); + * static inline int acxusb_fw_needs_padding(firmware_image_t *fw_image, unsigned int usb_maxlen); + */ -// CMDs (Control Path) +/* CMDs (Control Path) */ int acxusb_issue_cmd_timeo_debug(acx_device_t * adev, unsigned cmd, void *buffer, unsigned buflen, unsigned timeout, const char *cmdstr); -// Init, Configure (Control Path) -// static int acxusb_fill_configoption(acx_device_t * adev); +/* Init, Configure (Control Path) + * static int acxusb_fill_configoption(acx_device_t * adev); + */ -// Other (Control Path) +/* Other (Control Path) */ -// Proc, Debug +/* Proc, Debug */ #ifdef UNUSED static void dump_device(struct usb_device *usbdev); static void dump_config_descriptor(struct usb_config_descriptor *cd); static void dump_device_descriptor(struct usb_device_descriptor *dd); #endif -// Rx Path -// static void acxusb_complete_rx(struct urb *); -// static void acxusb_poll_rx(acx_device_t * adev, usb_rx_t * rx); +/* Rx Path + * static void acxusb_complete_rx(struct urb *); + * static void acxusb_poll_rx(acx_device_t * adev, usb_rx_t * rx); + */ -// Tx Path +/* Tx Path */ tx_t *acxusb_alloc_tx(acx_device_t *adev); void acxusb_dealloc_tx(tx_t * tx_opaque); void *acxusb_get_txbuf(acx_device_t * adev, tx_t * tx_opaque); void acxusb_tx_data(acx_device_t *adev, tx_t *tx_opaque, int wlanpkt_len, struct ieee80211_tx_info *ieeectl, struct sk_buff *skb); -// Irq Handling, Timer +/* Irq Handling, Timer */ void acxusb_irq_work(struct work_struct *work); -// Mac80211 Ops -// static int acxusb_op_start(struct ieee80211_hw *); -// static void acxusb_op_stop(struct ieee80211_hw *); +/* Mac80211 Ops + * static int acxusb_op_start(struct ieee80211_hw *); + * static void acxusb_op_stop(struct ieee80211_hw *); + */ -// Helpers -// static void acxusb_unlink_urb(struct urb *urb); +/* Helpers + * static void acxusb_unlink_urb(struct urb *urb); + */ -// Driver, Module -// static int acxusb_probe(struct usb_interface *intf, const struct usb_device_id *devID); -// static void acxusb_disconnect(struct usb_interface *intf); +/* Driver, Module + * static int acxusb_probe(struct usb_interface *intf, const struct usb_device_id *devID); + * static void acxusb_disconnect(struct usb_interface *intf); + */ int __init acxusb_init_module(void); void __exit acxusb_cleanup_module(void); -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-12 06:26:04
|
Verify that several arrays are same size on acx111 and acx100: - acx111_ie_len__VS__acx100_ie_len, - acx111_ie_len_dot11__VS__acx100_ie_len_dot11, - proc_files__VS__acx_proc_show_funcs, These are unlikely to to get checked otherwize, except by involved functional tests at multiple rates. OTOH, they dont actually test anything fundamental, but just catch spurious errors which drop lines in the array initializations. It may be appropriate at some point to add entries, thus breaking this check, but its easy to fix the resulting error (either by adding a corresponding entry, or removing the check). Signed-off-by: Jim Cromie <jim...@gm...> --- common.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common.c b/common.c index 2f1b338..2986b9a 100644 --- a/common.c +++ b/common.c @@ -502,6 +502,8 @@ static const u16 acx111_ie_len[] = { 0, ACX1FF_IE_EEPROM_VER_LEN, }; +BUILD_BUG_DECL(acx111_ie_len__VS__acx100_ie_len, + ARRAY_SIZE(acx111_ie_len) != ARRAY_SIZE(acx100_ie_len)); static const u16 acx111_ie_len_dot11[] = { 0, @@ -525,6 +527,8 @@ static const u16 acx111_ie_len_dot11[] = { 0, 0, }; +BUILD_BUG_DECL(acx111_ie_len_dot11__VS__acx100_ie_len_dot11, + ARRAY_SIZE(acx111_ie_len_dot11) != ARRAY_SIZE(acx100_ie_len_dot11)); // BOM Rate and channel definition // --- @@ -687,6 +691,8 @@ static acx_proc_show_t *const acx_proc_show_antenna, acx_proc_show_reg_domain, }; +BUILD_BUG_DECL(proc_files__VS__acx_proc_show_funcs, + ARRAY_SIZE(proc_files) != ARRAY_SIZE(acx_proc_show_funcs)); static acx_proc_write_t *const acx_proc_write_funcs[] = { -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-12 06:26:03
|
hi Oliver, Heres the next batch, on v20120509 0001-common.c-add-several-BUILD_BUG_DECLs.patch - a series of style fixes, mostly // conversions to /* */ some brace placement cleanups 0002-common.c-style-fixes.patch 0003-style-convert-all-in-.c-to.patch 0004-merge.c-fix-comment-w-in-comment.patch 0005-usb.h-fix-comments.patch 0006-style-fix-comments-in-a-bunch-of-headers.patch 0007-acx_func.h-fix-comments-some-manually.patch 0008-style-fix-in-acx_struct_hw.h-inc-manual-fixes.patch 0009-acx_struct_dev.h-fix-inc-manual-tweaks.patch - compile cleanups 0010-pci.h-add-ifdef-guard.patch 0011-pci.h-add-stubs-for-no-pci-compiles.patch - move proc-files to debugfs 0012-debugfs.c-working-debugfs-file-reads.patch 0013-debugfs.c-write-now-works.patch 0014-debugfs-compat-and-integration.patch - merge cleanups, etc 0015-merge-use-merge-copy-of-acxmem_proc_diag_output.patch 0016-pci.c-include-io-acx.h-drop-inline-IO_ACX1XX-defn.patch 0017-merge.c-cleanup-acx_validate_fw.patch 0018-common.c-clean-up-double-prefixes-in-log-messages.patch 0019-acx_compat-cleanup-ifdefs-in-op_add-remove_interface.patch 0020-update-TODO.patch - new merges, drop duplicate functions 0021-merge-cleanup-write_phy_reg.patch 0022-mem.h-drop-some-obsolete-fn-protos-cleanup.patch 0023-mem.c-drop-acxmem_verify_init.patch 0024-merge.c-de-duplicate-acx-_s_write_eeprom.patch 0025-merge-drop-acx-pci-mem-_read_eeprom_area.patch 0026-merge-cleanup-acx-mem-pci-_reset_dev-refs.patch 0027-acx_func.h-cleanup-rubbish.patch 0028-io-acx.h-add-ifndef-guard.patch 0029-merge-banish-ACX_MAC80211_-w-o-the-CONFIG_.patch |
From: Larry F. <Lar...@lw...> - 2012-05-11 19:51:53
|
On 05/11/2012 02:40 PM, Stefan Weil wrote: > Am 11.05.2012 18:56, schrieb Larry Finger: >> The previous patch left some warnings on 64-bit systems that are now >> removed. >> >> Signed-off-by: Larry Finger <Lar...@lw...> >> --- >> common.c | 3 ++- >> merge.c | 22 +++++++++++----------- >> 2 files changed, 13 insertions(+), 12 deletions(-) >> >> diff --git a/common.c b/common.c >> index 2f1b338..25fbc27 100644 >> --- a/common.c >> +++ b/common.c >> @@ -1118,7 +1118,8 @@ static int acx100_create_dma_regions(acx_device_t * adev) >> #ifdef CONFIG_ACX_MAC80211_MEM >> else if (IS_MEM(adev)) { >> /* sets the beginning of the rx descriptor queue, after the tx descrs */ >> - adev->acx_queue_indicator = (queueindicator_t *) le32_to_cpu >> (queueconf.QueueEnd); >> + adev->acx_queue_indicator = (queueindicator_t *) >> + (ulong)le32_to_cpu(queueconf.QueueEnd); > > How can this and the other conversion (see rest of patch) of a 32 bit > numeric value to a 64 bit pointer work? > > Maybe it works on a 64 bit host which only uses memory addresses in the > first 4 GiB, but I don't expect that this is really safe for any host. > > For those cases where conversions from numeric values to pointers need > a type cast, (uintptr_t) or (intptr_t) would be better, because those > data types are specially designed to have the same size as a pointer. Thanks for the comment. I was not aware of those particular type casts. My test box has only 2 GB RAM, and I certainly cannot test for memory > 4 GB. I will respin the patch and the one that did not go to the list. It will have the same problems. Larry |
From: Larry F. <Lar...@lw...> - 2012-05-11 16:56:54
|
The previous patch left some warnings on 64-bit systems that are now removed. Signed-off-by: Larry Finger <Lar...@lw...> --- common.c | 3 ++- merge.c | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/common.c b/common.c index 2f1b338..25fbc27 100644 --- a/common.c +++ b/common.c @@ -1118,7 +1118,8 @@ static int acx100_create_dma_regions(acx_device_t * adev) #ifdef CONFIG_ACX_MAC80211_MEM else if (IS_MEM(adev)) { /* sets the beginning of the rx descriptor queue, after the tx descrs */ - adev->acx_queue_indicator = (queueindicator_t *) le32_to_cpu (queueconf.QueueEnd); + adev->acx_queue_indicator = (queueindicator_t *) + (ulong)le32_to_cpu(queueconf.QueueEnd); if (OK != acx_create_hostdesc_queues(adev)) goto fail; diff --git a/merge.c b/merge.c index d276ad5..2a35163 100644 --- a/merge.c +++ b/merge.c @@ -469,7 +469,7 @@ static void acx_create_rx_desc_queue(acx_device_t * adev, u32 rx_queue_start) ((u8 *) adev->iobase2 + rx_queue_start); else adev->rx.desc_start = (rxdesc_t *) - ((u8 *) rx_queue_start); + ((u8 *) (ulong)rx_queue_start); rxdesc = adev->rx.desc_start; @@ -482,7 +482,7 @@ static void acx_create_rx_desc_queue(acx_device_t * adev, u32 rx_queue_start) + acx2cpu(rxdesc->pNextDesc)); else adev->rx.desc_start = (rxdesc_t *) - ((u8 *) acx2cpu(rxdesc->pNextDesc)); + ((u8 *)(ulong)acx2cpu(rxdesc->pNextDesc)); rxdesc = adev->rx.desc_start; } @@ -523,7 +523,7 @@ static void acx_create_rx_desc_queue(acx_device_t * adev, u32 rx_queue_start) { write_slavemem32(adev, (ulong) &(rxdesc->pNextDesc), - (u32) cpu_to_le32 ((u8 *) rxdesc + (u32) cpu_to_le32 ((ulong)(u8 *) rxdesc + sizeof(*rxdesc))); } @@ -566,7 +566,7 @@ static void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) /* This refers to an ACX address, not one of ours */ adev->tx.desc_start = (IS_PCI(adev)) ? (txdesc_t *) (adev->iobase2 + tx_queue_start) - : (txdesc_t *) tx_queue_start; + : (txdesc_t *) (ulong)tx_queue_start; log(L_DEBUG, "adev->iobase2=%p\n" "tx_queue_start=%08X\n" @@ -652,8 +652,8 @@ static void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) /* point to next txdesc */ write_slavemem32(adev, (ulong) &(txdesc->pNextDesc), - (u32) cpu_to_le32 ((u8 *) txdesc - + adev->tx.desc_size)); + (u32)cpu_to_le32((ulong)(u8 *)txdesc + + adev->tx.desc_size)); /* go to the next one */ /* ++ is safe here (we are acx100) */ @@ -1551,7 +1551,7 @@ void acx_write_cmd_type_status(acx_device_t *adev, u16 type, u16 status) // static inline void acx_init_mboxes(acx_device_t *adev) { - u32 cmd_offs, info_offs; + ulong cmd_offs, info_offs; FN_ENTER; @@ -1567,10 +1567,10 @@ void acx_init_mboxes(acx_device_t *adev) adev->info_area = (u8 *) adev->iobase2 + info_offs; } // OW iobase2 not used in mem.c, in pci.c it is - log(L_DEBUG, "iobase2=%p cmd_mbox_offset=%X cmd_area=%p" - "info_mbox_offset=%X info_area=%p\n", - adev->iobase2, cmd_offs, adev->cmd_area, - info_offs, adev->info_area); + log(L_DEBUG, + "iobase2=%p cmd_mbox_offset=%lX cmd_area=%pinfo_mbox_offset=%lX info_area=%p\n", + adev->iobase2, cmd_offs, adev->cmd_area, + info_offs, adev->info_area); FN_EXIT0; } -- 1.7.9.2 |
From: Oliver W. <oli...@ol...> - 2012-05-09 20:26:03
|
Hi Jim, The series is applied and pushed. Thanks a lot again! Looking at the diff-stat, pci.c and mem.c both shrunk already substantially ;). Testing-wise it looks all ok - I did a smaller set as the previous tests, however. As suggested, the patches 14-18 are squashed together. Also included is the "fix 32/64 warnings", proposed by Larry before. Best Regards, Oliver On 05/08/2012 07:13 PM, Jim Cromie wrote: > hi Oliver, > > heres another batch, with a mix of stuff: > > - unused proto removal > - random style cleanups > - add some statics, move callees before callers (in create*desc*queue) > - ifndef guards against multiple inclusion > - refactoring of rx/tx.host/buf data in struct acx_device > - work towards USB-only config > - streamlining of acx_allocate, free > > These include the patches that didnt make it into your last merge > session, rebased. > > 0001-mem.c-if0-unused-acxmem_create_rx_host_desc_queue.patch > 0002-merge-acx-mem-pci-_create_desc_queues.patch > 0003-merge-clean-out-commented-fn-protos.patch > 0004-merge.c-update-comments.patch > 0005-rewrap-comments-reindent-to-help-sdiffing.patch > 0006-cleanup-remove-d-forward-decl-fn-protos.patch > 0007-cleanup-drop-if0d-functions-and-their-comments.patch > 0008-mem.c-fix-stray-acxmem_advance_txdesc-ref.patch > 0009-merge.h-put-static-inline-in-fn-proto-line.patch > 0010-merge.c-drop-if0d-funcs.patch > 0011-merge-fix-no-mem-build-probs.patch > 0012-mem.c-newline-before-fn-body-open-brace.patch > 0013-merge.c-comment-wrap-whitespace.patch > > 1st acx_device refactor. These could be squashed together, esp 14-18, > See commit msgs for why I didnt. > > 0014-desc-pair-start-factoring-tx-desc-fields-into-struct.patch > 0015-desc-pair-add-txhostdesc_start-into-struct-tx_desc_p.patch > 0016-desc_pair-add-3-tx-size-fields-into-struct-tx_desc_p.patch > 0017-desc-pair-add-dma_addr_t-fields-to-struct-tx_desc_pa.patch > 0018-desc-pair-add-txdesc_start-field-to-struct-tx-desc-r.patch > 0019-desc-pair-factor-rx-desc-fields-out-of-acx_device-in.patch > 0020-fixup-drop-if0-from-desc-pair-patches.patch > > 0021-merge.-ch-step-towards-USB-only-compile.patch > 0022-common.c-add-ifdefs-to-disable-field-refs-for-USB-on.patch > 0023-mem.h-add-ifdef-guard-and-MEM-stub-functions.patch > 0024-mem-inlines.h-add-ifndef-guard.patch > 0025-merge.h-add-ifndef-guard-stubs.patch > 0026-mem-inlines.h-add-notes-re-inclusion.patch > > 2nd acx_device refactor. This uses an anonymous union, which I think > is a GCC extension, and which might be problematic for very old > compilers, probably too old to worry about. 28,29 arguably should be > adjusted, 29's changes are by script given in 28, I didnt feel like > explaining in english whats pretty clear in code. I probably could > fix it to do 100% of changes, not leave manual tweaks at end, but I > think/hope its once and done, so not worth automating completely. > > 0027-merge.ch-cleanup-create-desc-routines-make-helpers-s.patch > 0028-desc-info-refactor-txdesc_t-and-rxdesc_t-to-extract-.patch > 0029-field-refs-for-previous-struct-changes.patch > 0030-merge.c-trim-acx_allocate-to-leverage-desc_info-refa.patch > |
From: Jim C. <jim...@gm...> - 2012-05-08 21:01:21
|
This patch, from Larry Finger, fixes a bunch of warnings, basically by changing casts from (u32) to (ulong), which varies with the other native types that are either casted, or assigned the casted value. CC: Larry Finger <Lar...@lw...> Signed-off-by: Jim Cromie <jim...@gm...> --- common.c | 2 +- mem.c | 47 +++++++++++++++-------------- merge.c | 102 +++++++++++++++++++++++++++++++-------------------------------- 3 files changed, 76 insertions(+), 75 deletions(-) diff --git a/common.c b/common.c index 5d10b12..2f1b338 100644 --- a/common.c +++ b/common.c @@ -3598,7 +3598,7 @@ static int acx_set_beacon_template(acx_device_t *adev, u8 *data, int len) if (acx_debug & L_DEBUG) { logf1(L_ANY, "data, len=%d, sizeof(struct" "acx_template_beacon)=%d:\n", - len, sizeof(struct acx_template_beacon)); + len, (int)sizeof(struct acx_template_beacon)); acx_dump_bytes(data, len); } diff --git a/mem.c b/mem.c index 47623c4..0be7c7c 100644 --- a/mem.c +++ b/mem.c @@ -191,7 +191,7 @@ void acxmem_copy_from_slavemem(acx_device_t *adev, u8 *destination, * Right now I'm making the assumption that the destination is * aligned, but I'd better check. */ - if ((u32) destination & 3) { + if ((ulong) destination & 3) { pr_acx("copy_from_slavemem: warning! destination not word-aligned!\n"); } @@ -308,7 +308,7 @@ void acxmem_chaincopy_to_slavemem(acx_device_t *adev, u32 destination, pr_err("chaincopy_to_slavemem overflow!\n"); count = sizeof aligned_source; } - if ((u32) source & 3) { + if ((ulong) source & 3) { memcpy(aligned_source, source, count); data = (u32 *) aligned_source; } @@ -373,7 +373,7 @@ void acxmem_chaincopy_from_slavemem(acx_device_t *adev, u8 *destination, pr_acx("chaincopy: source block 0x%04x not aligned!\n", source); acxmem_dump_mem(adev, 0, 0x10000); } - if ((u32) destination & 3) { + if ((ulong) destination & 3) { //printk ("acx chaincopy: data destination not word aligned!\n"); data = (u32 *) aligned_destination; if (count > sizeof aligned_destination) { @@ -416,7 +416,7 @@ void acxmem_chaincopy_from_slavemem(acx_device_t *adev, u8 *destination, * If the destination wasn't aligned, we would have saved it * in the aligned buffer, so copy it where it should go. */ - if ((u32) destination & 3) { + if ((ulong) destination & 3) { memcpy(destination, aligned_destination, saved_count); } } @@ -432,7 +432,6 @@ void acxmem_chaincopy_from_slavemem(acx_device_t *adev, u8 *destination, */ - /* * BOM Firmware, EEPROM, Phy * ================================================== @@ -647,7 +646,7 @@ acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, /* * slave memory version */ - acxmem_copy_to_slavemem(adev, (u32) (adev->cmd_area + 4), buffer, (cmd + acxmem_copy_to_slavemem(adev, (ulong) (adev->cmd_area + 4), buffer, (cmd == ACX1xx_CMD_INTERROGATE) ? 4 : buflen); } /* now write the actual command type */ @@ -755,7 +754,7 @@ acxmem_issue_cmd_timeo_debug(acx_device_t *adev, unsigned cmd, /* 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); + acxmem_copy_from_slavemem(adev, buffer, (ulong) (adev->cmd_area + 4), buflen); if (acx_debug & L_DEBUG) { log(L_ANY, "%s: output buffer (len=%u): ", __func__, buflen); acx_dump_bytes(buffer, buflen); @@ -844,7 +843,7 @@ STATick int acxmem_complete_hw_reset(acx_device_t *adev) if (IS_ACX100(adev)) { /* ACX100: configopt struct in cmd mailbox - directly * after reset */ - acxmem_copy_from_slavemem(adev, (u8*) &co, (u32) adev->cmd_area, sizeof(co)); + acxmem_copy_from_slavemem(adev, (u8*) &co, (ulong) adev->cmd_area, sizeof(co)); } acxmem_unlock(); @@ -1008,7 +1007,7 @@ int acxmem_proc_diag_output(struct seq_file *file, if (rxdesc) for (i = 0; i < RX_CNT; i++) { rtl = (i == adev->rx.tail) ? " [tail]" : ""; - Ctl_8 = read_slavemem8(adev, (u32) &(rxdesc->Ctl_8)); + 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 @@ -1016,10 +1015,10 @@ int acxmem_proc_diag_output(struct seq_file *file, //seq_printf(file, "\n"); - acxmem_copy_from_slavemem(adev, (u8 *) &rxd, (u32) rxdesc, sizeof(rxd)); + acxmem_copy_from_slavemem(adev, (u8 *) &rxd, (ulong) rxdesc, sizeof(rxd)); seq_printf(file, "%04x: %04x %04x %04x %04x %04x %04x %04x Ctl_8=%04x %04x %04x %04x %04x %04x %04x %04x\n", - (u32) rxdesc, + (ulong) rxdesc, rxd.pNextDesc.v, rxd.HostMemPtr.v, rxd.ACXMemPtr.v, @@ -1052,9 +1051,10 @@ int acxmem_proc_diag_output(struct seq_file *file, 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, (u32) txdesc, sizeof(txd)); + acxmem_copy_from_slavemem(adev, (u8 *) &txd, + (ulong) txdesc, sizeof(txd)); - Ctl_8 = read_slavemem8(adev, (u32) &(txdesc->Ctl_8)); + Ctl_8 = read_slavemem8(adev, (ulong) &(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) @@ -1064,8 +1064,9 @@ int acxmem_proc_diag_output(struct seq_file *file, seq_printf(file, "%04x: %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %02x %02x %02x %02x " - "%02x %02x %02x %02x %04x: ", (u32) txdesc, - txd.pNextDesc.v, txd.HostMemPtr.v, txd.AcxMemPtr.v, + "%02x %02x %02x %02x %04x: ", (ulong) 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, @@ -1073,7 +1074,7 @@ int acxmem_proc_diag_output(struct seq_file *file, txd.rts_ok, txd.u.r1.rate, txd.u.r1.queue_ctrl, txd.queue_info); - tmp = read_slavemem32(adev, (u32) & (txdesc->AcxMemPtr)); + tmp = read_slavemem32(adev, (ulong) & (txdesc->AcxMemPtr)); seq_printf(file, " %04x: ", tmp); // Output allocated tx-buffer chain @@ -1204,7 +1205,7 @@ STATick void acxmem_process_rxdesc(acx_device_t *adev) * rx descriptor on the ACX, which should be * 0x11000000 if we should process it. */ - Ctl_8 = hostdesc->hd.Ctl_16 = read_slavemem8(adev, (u32) &(rxdesc->Ctl_8)); + Ctl_8 = hostdesc->hd.Ctl_16 = read_slavemem8(adev, (ulong) &(rxdesc->Ctl_8)); if ((Ctl_8 & DESC_CTL_HOSTOWN) && (Ctl_8 & DESC_CTL_ACXDONE)) break; /* found it! */ @@ -1226,7 +1227,7 @@ STATick void acxmem_process_rxdesc(acx_device_t *adev) * slave interface - pull data now */ hostdesc->hd.length = read_slavemem16(adev, - (u32) &(rxdesc->total_length)); + (ulong) &(rxdesc->total_length)); /* * hostdesc->data is an rxbuffer_t, which @@ -1235,7 +1236,7 @@ STATick void acxmem_process_rxdesc(acx_device_t *adev) * information takes up an additional 12 * bytes, so add that to the length we copy. */ - addr = read_slavemem32(adev, (u32) &(rxdesc->ACXMemPtr)); + addr = read_slavemem32(adev, (ulong) &(rxdesc->ACXMemPtr)); if (addr) { /* * How can &(rxdesc->ACXMemPtr) above @@ -1244,12 +1245,12 @@ STATick void acxmem_process_rxdesc(acx_device_t *adev) * for debug. */ if (addr & 0xffff0000) { - log(L_ANY, "%s: rxdesc 0x%08x\n", __func__, (u32) rxdesc); + log(L_ANY, "%s: rxdesc 0x%08lx\n", __func__, (ulong) rxdesc); acxmem_dump_mem(adev, 0, 0x10000); panic("Bad access!"); } acxmem_chaincopy_from_slavemem(adev, (u8 *) hostdesc->data, addr, - hostdesc->hd.length + (u32) &((rxbuffer_t *) 0)->hdr_a3); + hostdesc->hd.length + (ulong) &((rxbuffer_t *) 0)->hdr_a3); acx_process_rxbuf(adev, hostdesc->data); } @@ -1265,7 +1266,7 @@ STATick void acxmem_process_rxdesc(acx_device_t *adev) CLEAR_BIT (Ctl_8, DESC_CTL_HOSTOWN); SET_BIT (Ctl_8, DESC_CTL_HOSTDONE); SET_BIT (Ctl_8, DESC_CTL_RECLAIM); - write_slavemem8(adev, (u32) &rxdesc->Ctl_8, Ctl_8); + write_slavemem8(adev, (ulong) &rxdesc->Ctl_8, Ctl_8); /* * Now tell the ACX we've finished with the receive @@ -1277,7 +1278,7 @@ STATick void acxmem_process_rxdesc(acx_device_t *adev) hostdesc = &adev->rx.host.rxstart[tail]; rxdesc = &adev->rx.desc_start[tail]; - Ctl_8 = hostdesc->hd.Ctl_16 = read_slavemem8(adev, (u32) &(rxdesc->Ctl_8)); + Ctl_8 = hostdesc->hd.Ctl_16 = read_slavemem8(adev, (ulong) &(rxdesc->Ctl_8)); /* if next descriptor is empty, then bail out */ if (!(Ctl_8 & DESC_CTL_HOSTOWN) || !(Ctl_8 & DESC_CTL_ACXDONE)) diff --git a/merge.c b/merge.c index 5dc5ad6..d276ad5 100644 --- a/merge.c +++ b/merge.c @@ -501,8 +501,8 @@ static void acx_create_rx_desc_queue(acx_device_t * adev, u32 rx_queue_start) memset(adev->rx.desc_start, 0, RX_CNT * sizeof(*rxdesc)); else { // IS_MEM - mem_offs = (u32) adev->rx.desc_start; - while (mem_offs < (u32) adev->rx.desc_start + mem_offs = (ulong) adev->rx.desc_start; + while (mem_offs < (ulong) adev->rx.desc_start + (RX_CNT * sizeof(*rxdesc))) { write_slavemem32(adev, mem_offs, 0); mem_offs += 4; @@ -522,7 +522,7 @@ static void acx_create_rx_desc_queue(acx_device_t * adev, u32 rx_queue_start) else // IS_MEM { write_slavemem32(adev, - (u32) &(rxdesc->pNextDesc), + (ulong) &(rxdesc->pNextDesc), (u32) cpu_to_le32 ((u8 *) rxdesc + sizeof(*rxdesc))); } @@ -539,8 +539,8 @@ static void acx_create_rx_desc_queue(acx_device_t * adev, u32 rx_queue_start) if (IS_PCI(adev)) rxdesc->pNextDesc = cpu2acx(rx_queue_start); else // IS_MEM - write_slavemem32(adev, (u32) &(rxdesc->pNextDesc), - (u32) cpu_to_le32 (rx_queue_start)); + write_slavemem32(adev, (ulong) &(rxdesc->pNextDesc), + (ulong) cpu_to_le32 (rx_queue_start)); } FN_EXIT0; @@ -607,8 +607,8 @@ static void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) else { /* adev->tx.desc_start refers to device memory, so we can't write directly to it. */ - clr = (u32) adev->tx.desc_start; - while (clr < (u32) adev->tx.desc_start + clr = (ulong) adev->tx.desc_start; + while (clr < (ulong) adev->tx.desc_start + (TX_CNT * sizeof(*txdesc))) { write_slavemem32(adev, clr, 0); clr += 4; @@ -644,14 +644,14 @@ static void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) } else { /* initialise ctl */ /* No auto DMA here */ - write_slavemem8(adev, (u32) &(txdesc->Ctl_8), + write_slavemem8(adev, (ulong) &(txdesc->Ctl_8), (u8) (DESC_CTL_HOSTOWN | DESC_CTL_FIRSTFRAG)); /* done by memset(0): txdesc->Ctl2_8 = 0; */ /* point to next txdesc */ - write_slavemem32(adev, (u32) &(txdesc->pNextDesc), + write_slavemem32(adev, (ulong) &(txdesc->pNextDesc), (u32) cpu_to_le32 ((u8 *) txdesc + adev->tx.desc_size)); @@ -666,7 +666,7 @@ static void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) if (IS_PCI(adev)) txdesc->pNextDesc = cpu2acx(tx_queue_start); else - write_slavemem32(adev, (u32) &(txdesc->pNextDesc), + write_slavemem32(adev, (ulong) &(txdesc->pNextDesc), (u32) cpu_to_le32 (tx_queue_start)); } FN_EXIT0; @@ -689,7 +689,7 @@ void acx_create_desc_queues(acx_device_t *adev, u32 tx_queue_start, p = (u32 *) adev->acx_queue_indicator; for (i = 0; i < 4; i++) { - write_slavemem32(adev, (u32) p, 0); + write_slavemem32(adev, (ulong) p, 0); p++; } out: @@ -806,7 +806,7 @@ void acx_log_txbuffer(acx_device_t *adev) pr_acx("tx: desc->Ctl8's: "); for (i = 0; i < TX_CNT; i++) { Ctl_8 = (IS_MEM(adev)) - ? read_slavemem8(adev, (u32) &(txdesc->Ctl_8)) + ? read_slavemem8(adev, (ulong) &(txdesc->Ctl_8)) : txdesc->Ctl_8; printk("%02X ", Ctl_8); txdesc = acx_advance_txdesc(adev, txdesc, 1); @@ -1518,7 +1518,7 @@ u32 acx_read_cmd_type_status(acx_device_t *adev) FN_ENTER; cmd_type = (IS_MEM(adev)) - ? read_slavemem32(adev, (u32) adev->cmd_area) + ? read_slavemem32(adev, (ulong) adev->cmd_area) : acx_readl(adev->cmd_area); cmd_status = (cmd_type >> 16); cmd_type = (u16) cmd_type; @@ -1538,7 +1538,7 @@ void acx_write_cmd_type_status(acx_device_t *adev, u16 type, u16 status) FN_ENTER; if (IS_MEM(adev)) - write_slavemem32(adev, (u32) adev->cmd_area, + write_slavemem32(adev, (ulong) adev->cmd_area, type | (status << 16)); else acx_writel(type | (status << 16), adev->cmd_area); @@ -2524,7 +2524,7 @@ void acx_process_rxdesc(acx_device_t *adev) * 0x11000000 if we should process it. */ Ctl_8 = hostdesc->hd.Ctl_16 - = read_slavemem8(adev, (u32) &(rxdesc->Ctl_8)); + = read_slavemem8(adev, (ulong) &(rxdesc->Ctl_8)); if ((Ctl_8 & DESC_CTL_HOSTOWN) && (Ctl_8 & DESC_CTL_ACXDONE)) break; /* found it! */ @@ -2575,7 +2575,7 @@ void acx_process_rxdesc(acx_device_t *adev) /* slave interface - pull data now */ hostdesc->hd.length = read_slavemem16(adev, - (u32) &(rxdesc->total_length)); + (ulong) &(rxdesc->total_length)); /* * hostdesc->data is an rxbuffer_t, which * includes header information, but the length @@ -2584,7 +2584,7 @@ void acx_process_rxdesc(acx_device_t *adev) * bytes, so add that to the length we copy. */ addr = read_slavemem32(adev, - (u32) &(rxdesc->ACXMemPtr)); + (ulong) &(rxdesc->ACXMemPtr)); if (addr) { /* * How can &(rxdesc->ACXMemPtr) above @@ -2593,15 +2593,15 @@ void acx_process_rxdesc(acx_device_t *adev) * for debug. */ if (addr & 0xffff0000) { - log(L_ANY, "%s: rxdesc 0x%08x\n", - __func__, (u32) rxdesc); + log(L_ANY, "%s: rxdesc 0x%08lx\n", + __func__, (ulong) rxdesc); acxmem_dump_mem(adev, 0, 0x10000); panic("Bad access!"); } acxmem_chaincopy_from_slavemem(adev, (u8 *) hostdesc->data, addr, hostdesc->hd.length - + (u32) &((rxbuffer_t *) 0)->hdr_a3); + + (ulong) &((rxbuffer_t *) 0)->hdr_a3); acx_process_rxbuf(adev, hostdesc->data); } @@ -2616,7 +2616,7 @@ void acx_process_rxdesc(acx_device_t *adev) CLEAR_BIT (Ctl_8, DESC_CTL_HOSTOWN); SET_BIT (Ctl_8, DESC_CTL_HOSTDONE); SET_BIT (Ctl_8, DESC_CTL_RECLAIM); - write_slavemem8(adev, (u32) &rxdesc->Ctl_8, Ctl_8); + write_slavemem8(adev, (ulong) &rxdesc->Ctl_8, Ctl_8); /* * Now tell the ACX we've finished with the receive buffer so @@ -2629,7 +2629,7 @@ void acx_process_rxdesc(acx_device_t *adev) rxdesc = &adev->rx.desc_start[tail]; Ctl_8 = hostdesc->hd.Ctl_16 - = read_slavemem8(adev, (u32) &(rxdesc->Ctl_8)); + = read_slavemem8(adev, (ulong) &(rxdesc->Ctl_8)); /* if next descriptor is empty, then bail out */ if (!(Ctl_8 & DESC_CTL_HOSTOWN) || !(Ctl_8 & DESC_CTL_ACXDONE)) @@ -2755,7 +2755,7 @@ tx_t *acxmem_alloc_tx(acx_device_t *adev, unsigned int len) { * txdesc points to ACX memory */ txdesc = acx_get_txdesc(adev, head); - ctl8 = read_slavemem8(adev, (u32) &(txdesc->Ctl_8)); + ctl8 = read_slavemem8(adev, (ulong) &(txdesc->Ctl_8)); /* * If we don't own the buffer (HOSTOWN) it is certainly not @@ -2778,7 +2778,7 @@ tx_t *acxmem_alloc_tx(acx_device_t *adev, unsigned int len) { } /* Needed in case txdesc won't be eventually submitted for tx */ - write_slavemem8(adev, (u32) &(txdesc->Ctl_8), DESC_CTL_ACXDONE_HOSTOWN); + write_slavemem8(adev, (ulong) &(txdesc->Ctl_8), DESC_CTL_ACXDONE_HOSTOWN); adev->tx_free--; log(L_BUFT, "%s: tx: got desc %u, %u remain\n", @@ -2825,7 +2825,7 @@ void acxmem_dealloc_tx(acx_device_t *adev, tx_t *tx_opaque) { /* * Clear out all of the transmit descriptor except for the next pointer */ - acxmem_copy_to_slavemem(adev, (u32) &(txdesc->HostMemPtr), + acxmem_copy_to_slavemem(adev, (ulong) &(txdesc->HostMemPtr), (u8 *) &(tmptxdesc.HostMemPtr), sizeof(tmptxdesc) - sizeof(tmptxdesc.pNextDesc)); @@ -3049,7 +3049,7 @@ void _acx_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, * it back in one big swoop later (also in order to have less * device memory accesses) */ Ctl_8 = (IS_MEM(adev)) - ? read_slavemem8(adev, (u32) &(txdesc->Ctl_8)) + ? read_slavemem8(adev, (ulong) &(txdesc->Ctl_8)) : txdesc->Ctl_8; Ctl2_8 = 0; /* really need to init it to 0, not txdesc->Ctl2_8, it seems */ @@ -3058,7 +3058,7 @@ void _acx_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, (IS_PCI(adev)) ? txdesc->total_length = cpu_to_le16(len) - : write_slavemem16(adev, (u32) &(txdesc->total_length), + : write_slavemem16(adev, (ulong) &(txdesc->total_length), cpu_to_le16(len)); hostdesc2->hd.length = cpu_to_le16(len - wlhdr_len); @@ -3112,7 +3112,7 @@ void _acx_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, (IS_PCI(adev)) ? txdesc->u.r1.rate = (u8) rateset - : write_slavemem8(adev, (u32) &(txdesc->u.r1.rate), + : write_slavemem8(adev, (ulong) &(txdesc->u.r1.rate), (u8) rateset); #ifdef TODO_FIGURE_OUT_WHEN_TO_SET_THIS @@ -3174,8 +3174,8 @@ void _acx_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, pr_info("Bummer. Not enough room in the txbuf_space.\n"); hostdesc1->hd.length = 0; hostdesc2->hd.length = 0; - write_slavemem16(adev, (u32) &(txdesc->total_length), 0); - write_slavemem8(adev, (u32) &(txdesc->Ctl_8), DESC_CTL_HOSTOWN + write_slavemem16(adev, (ulong) &(txdesc->total_length), 0); + write_slavemem8(adev, (ulong) &(txdesc->Ctl_8), DESC_CTL_HOSTOWN | DESC_CTL_FIRSTFRAG); adev->tx_head = ((u8*) txdesc - (u8*) adev->tx.desc_start) / adev->tx.desc_size; @@ -3185,7 +3185,7 @@ void _acx_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, /* * Tell the ACX where the packet is. */ - write_slavemem32(adev, (u32) &(txdesc->AcxMemPtr), addr); + write_slavemem32(adev, (ulong) &(txdesc->AcxMemPtr), addr); } @@ -3208,8 +3208,8 @@ is_pci_branch: //At this point Ctl_8 should just be FIRSTFRAG CLEAR_BIT(Ctl2_8, DESC_CTL2_WEP); if (IS_MEM(adev)) { - write_slavemem8(adev, (u32) &(txdesc->Ctl2_8), Ctl2_8); - write_slavemem8(adev, (u32) &(txdesc->Ctl_8), Ctl_8); + write_slavemem8(adev, (ulong) &(txdesc->Ctl2_8), Ctl2_8); + write_slavemem8(adev, (ulong) &(txdesc->Ctl_8), Ctl_8); } else { txdesc->Ctl2_8 = Ctl2_8; txdesc->Ctl_8 = Ctl_8; @@ -3253,7 +3253,7 @@ end_of_chain: pr_acx("tx: pkt (%s): len %d rate %03u%s status %u\n", acx_get_packet_type_string(fc), len, read_slavemem8(adev, - (u32) &(txdesc->u.r1.rate)), + (ulong) &(txdesc->u.r1.rate)), (Ctl_8 & DESC_CTL_SHORT_PREAMBLE) ? "(SPr)" : "", adev->status); @@ -3331,7 +3331,7 @@ unsigned int acx_tx_clean_txdesc(acx_device_t *adev) /* stop if not marked as "tx finished" and "host owned" */ Ctl_8 = (IS_MEM(adev)) - ? read_slavemem8(adev, (u32) &(txdesc->Ctl_8)) + ? read_slavemem8(adev, (ulong) &(txdesc->Ctl_8)) : txdesc->Ctl_8; // OW FIXME Check against pci.c @@ -3347,17 +3347,17 @@ unsigned int acx_tx_clean_txdesc(acx_device_t *adev) /* remember desc values... */ if (IS_MEM(adev)) { - error = read_slavemem8(adev, (u32) &(txdesc->error)); + error = read_slavemem8(adev, (ulong) &(txdesc->error)); ack_failures = read_slavemem8(adev, - (u32) &(txdesc->ack_failures)); + (ulong) &(txdesc->ack_failures)); rts_failures = read_slavemem8(adev, - (u32) &(txdesc->rts_failures)); - rts_ok = read_slavemem8(adev, (u32) &(txdesc->rts_ok)); + (ulong) &(txdesc->rts_failures)); + rts_ok = read_slavemem8(adev, (ulong) &(txdesc->rts_ok)); // OW FIXME does this also require le16_to_cpu()? r100 = read_slavemem8(adev, - (u32) &(txdesc->u.r1.rate)); + (ulong) &(txdesc->u.r1.rate)); r111 = le16_to_cpu(read_slavemem16(adev, - (u32)&(txdesc->u.r2.rate111))); + (ulong)&(txdesc->u.r2.rate111))); } else { error = txdesc->error; ack_failures = txdesc->ack_failures; @@ -3395,14 +3395,14 @@ unsigned int acx_tx_clean_txdesc(acx_device_t *adev) /* Free up the transmit data buffers */ if (IS_MEM(adev)) { acxmem = read_slavemem32(adev, - (u32) &(txdesc->AcxMemPtr)); + (ulong) &(txdesc->AcxMemPtr)); if (acxmem) acxmem_reclaim_acx_txbuf_space(adev, acxmem); /* ...and free the desc by clearing all the fields except the next pointer */ acxmem_copy_to_slavemem(adev, - (u32) &(txdesc->HostMemPtr), + (ulong) &(txdesc->HostMemPtr), (u8 *) &(tmptxdesc.HostMemPtr), ( sizeof(tmptxdesc) - sizeof(tmptxdesc.pNextDesc))); @@ -3470,11 +3470,11 @@ void acx_clean_txdesc_emergency(acx_device_t *adev) txd->Ctl_8 = DESC_CTL_HOSTOWN; continue; } else { - write_slavemem8(adev, (u32) &(txd->ack_failures), 0); - write_slavemem8(adev, (u32) &(txd->rts_failures), 0); - write_slavemem8(adev, (u32) &(txd->rts_ok), 0); - write_slavemem8(adev, (u32) &(txd->error), 0); - write_slavemem8(adev, (u32) &(txd->Ctl_8), + write_slavemem8(adev, (ulong) &(txd->ack_failures), 0); + write_slavemem8(adev, (ulong) &(txd->rts_failures), 0); + write_slavemem8(adev, (ulong) &(txd->rts_ok), 0); + write_slavemem8(adev, (ulong) &(txd->error), 0); + write_slavemem8(adev, (ulong) &(txd->Ctl_8), DESC_CTL_HOSTOWN); } #if 0 @@ -3487,7 +3487,7 @@ void acx_clean_txdesc_emergency(acx_device_t *adev) if (acxmem) acxmem_reclaim_acx_txbuf_space(adev, acxmem); #endif - write_slavemem32(adev, (u32) &(txd->AcxMemPtr), 0); + write_slavemem32(adev, (ulong) &(txd->AcxMemPtr), 0); } adev->tx_free = TX_CNT; @@ -3836,7 +3836,7 @@ void acx_handle_info_irq(acx_device_t *adev) u32 info_type, info_status; info_type = (IS_MEM(adev)) - ? read_slavemem32(adev, (u32) adev->info_area) + ? read_slavemem32(adev, (ulong) adev->info_area) : acx_readl(adev->info_area); info_status = (info_type >> 16); @@ -3844,7 +3844,7 @@ void acx_handle_info_irq(acx_device_t *adev) /* inform fw that we have read this info message */ (IS_MEM(adev)) - ? write_slavemem32(adev, (u32) adev->info_area, info_type | 0x00010000) + ? write_slavemem32(adev, (ulong) adev->info_area, info_type | 0x00010000) : acx_writel(info_type | 0x00010000, adev->info_area); write_reg16(adev, IO_ACX_INT_TRIG, INT_TRIG_INFOACK); write_flush(adev); -- 1.7.10.1.487.ga3935e6 |
From: Jim C. <jim...@gm...> - 2012-05-08 20:56:57
|
On Tue, May 8, 2012 at 12:30 PM, Larry Finger <Lar...@lw...> wrote: > On 05/08/2012 11:46 AM, Oliver Winker wrote: >> > I will likely have to use Kismet/wireshark to analyze what is on the air. > > The attached patch fixes a lot of the x86_64 warnings. After applying it, > the device still works on my 64-bit system with an acx111. It has not been > compiled or run on a 32-bit installation, nor has it been tested with an > acx100. > > Larry > > hi Larry, Oliver, I just branched master to larry, applied your patch (cleanly) tested on acx111 pci (good) then rebased on top of my current HEAD (as sent earlier) everything works there too. Oliver, FWIW, heres my workflow for above 2397 git checkout master 2398 git fetch --all 2399 git checkout -b larry 2400 git am ~/Downloads/acx100_x86_64_warnings.txt 2401 git apply ~/Downloads/acx100_x86_64_warnings.txt 2402 git am ~/Downloads/acx100_x86_64_warnings.txt git am, apply didnt recognize the patch format (SVN ?) so I did it with patch 2404 patch -p1 < ~/Downloads/acx100_x86_64_warnings.txt 2405 git diff 2408 git rebase usb-only larry 2409 git status 2410 git add common.c mem.c merge.c 2411 git status -uno 2412 git commit 2413 git rebase usb-only larry 2414 git add merge.c mem.c common.c 2415 git rebase --continue 2417 git log -1 2418 history | grep git | tail -n20 jimc@chumly:~/projects/lx/acx-mac80211$ git log -1 commit 99c78faee7bd14a94b70cd372ff9e95eb9faf9d2 Author: Jim Cromie <jim...@gm...> Date: Tue May 8 14:27:23 2012 -0600 fix 32/64 warnings This patch, from Larry Finger, fixes a bunch of warnings, basically by changing casts from (u32) to (ulong), which varies with the other native types that are either casted, or assigned the casted value. jimc@chumly:~/projects/lx/acx-mac80211$ date Tue May 8 14:41:59 MDT 2012 So it took 14 minutes from clean commit on master, fumbling around with git am, apply, starting rebase resolving conflicts in 3 files, (all simple) to rebase complete. pretty quick and easy. Im gonna --amend it to cc Larry, and send with git send-email |
From: Oliver W. <oli...@ol...> - 2012-05-08 20:33:56
|
Hi Jim, On 05/08/2012 10:09 PM, Jim Cromie wrote: > Another workflow you might consider: > make a branch at the same point the patchset starts, > git am 00* into that branch, > git rebase master branch > > with this, you get similar conflict markers right in the troubled > code, and can just delete > the bad chunk. It may be fewer steps (I dunno about patch --merge, so > cant compare them) > you can also rebase --abort, and redo the rebase on any commit 1/2 way > between start and master - it doesnt eliminate the work, but may > reduce the complexity of some of the changes. Ok, thanks for the tip :)! >> Question regarding the struct acx_device refactoring, just to be sure: >> >> Does this still allow concurrent operation of multiple and mixed >> device-types (i.e. several pci, usb, mem devices on the on the same >> machine, each one with it's own adev, running at the same time) ? >> > > I dont think it changes anything in that regard, but I dont Know. > I recall wondering (or asking, not sure if I did) about driving > multiple devices, Ok, good ;). I'll just was about trying, and it seems to probe ok so far. Will still test in more detail then. --- > lapix:~/Test# iwconfig [...] > wlan4 IEEE 802.11b ESSID:off/any > Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm > Retry long limit:7 RTS thr:off Fragment thr:off > Encryption key:off > Power Management:on > > wlan3 IEEE 802.11bg ESSID:off/any > Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm > Retry long limit:7 RTS thr:off Fragment thr:off > Encryption key:off > Power Management:on --- > For this, you end up with multiple acx_device structs right ? > (otherwize youd not have a wep keyset for each) Indeed, basically it's just the normal allocation of a new device private struct (acx_device struct) upon probe of each device. > I changed the composition/aggregation of acx_device_t, but all the pieces > are there. Similar to moving cfg_opts fields into a separate struct. > > Can you comment on how multi-device scenario works ? > My attempt to get a working USB-only compile might conflict with > (or be informed by) this understanding. >From the practical point of view (but maybe I didn't understood the question well, just tell in case of), e.g. for the case above: it's just a acx111 DWL-G650+ pci card and a DWL-120+ connected on the same laptop. That results in two wifi phys and interfaces and can be used independently from each other. Now I agree, that's not a very typical use-case, but e.g. one could think about an router setup with multiple wifi devices to do something like similar WDS (with multiple radios) ... . Cheers, Oliver ;) |
From: Jim C. <jim...@gm...> - 2012-05-08 20:09:40
|
On Tue, May 8, 2012 at 12:55 PM, Oliver Winker <oli...@ol...> wrote: > Hi Jim, > > Ok, Thanks again. I just wanted to take a look at the previous 1-11 this > evening ;)! Anyway having some more will amortized the testing ;). > > (the last series was interesting, because I finally took it as occasion > to find a workflow with git-am, which allows merge-style conflict > markers (<<< === >>>) in case of conflicts: git-am --rejects and then > patch in the .rej with "patch --merge" ... much easier than manually > fiddle-in the rej-hunk etc. ;) heh - I had annoyances with /* ======== */ comments complicating searching for the next merge conflict, I thought about patching them away. Another workflow you might consider: make a branch at the same point the patchset starts, git am 00* into that branch, git rebase master branch with this, you get similar conflict markers right in the troubled code, and can just delete the bad chunk. It may be fewer steps (I dunno about patch --merge, so cant compare them) you can also rebase --abort, and redo the rebase on any commit 1/2 way between start and master - it doesnt eliminate the work, but may reduce the complexity of some of the changes. > Question regarding the struct acx_device refactoring, just to be sure: > > Does this still allow concurrent operation of multiple and mixed > device-types (i.e. several pci, usb, mem devices on the on the same > machine, each one with it's own adev, running at the same time) ? > I dont think it changes anything in that regard, but I dont Know. I recall wondering (or asking, not sure if I did) about driving multiple devices, For this, you end up with multiple acx_device structs right ? (otherwize youd not have a wep keyset for each) I changed the composition/aggregation of acx_device_t, but all the pieces are there. Similar to moving cfg_opts fields into a separate struct. Can you comment on how multi-device scenario works ? My attempt to get a working USB-only compile might conflict with (or be informed by) this understanding. > Because this is something I would like to keep. > (I remember a question/thought in this context, but I didn't made it yet > to come back on it) :-) > > Cheers, Oliver > > On 05/08/2012 07:13 PM, Jim Cromie wrote: >> hi Oliver, >> >> heres another batch, with a mix of stuff: >> >> - unused proto removal >> - random style cleanups >> - add some statics, move callees before callers (in create*desc*queue) >> - ifndef guards against multiple inclusion >> - refactoring of rx/tx.host/buf data in struct acx_device >> - work towards USB-only config >> - streamlining of acx_allocate, free >> >> These include the patches that didnt make it into your last merge >> session, rebased. >> >> 0001-mem.c-if0-unused-acxmem_create_rx_host_desc_queue.patch >> 0002-merge-acx-mem-pci-_create_desc_queues.patch >> 0003-merge-clean-out-commented-fn-protos.patch >> 0004-merge.c-update-comments.patch >> 0005-rewrap-comments-reindent-to-help-sdiffing.patch >> 0006-cleanup-remove-d-forward-decl-fn-protos.patch >> 0007-cleanup-drop-if0d-functions-and-their-comments.patch >> 0008-mem.c-fix-stray-acxmem_advance_txdesc-ref.patch >> 0009-merge.h-put-static-inline-in-fn-proto-line.patch >> 0010-merge.c-drop-if0d-funcs.patch >> 0011-merge-fix-no-mem-build-probs.patch >> 0012-mem.c-newline-before-fn-body-open-brace.patch >> 0013-merge.c-comment-wrap-whitespace.patch >> >> 1st acx_device refactor. These could be squashed together, esp 14-18, >> See commit msgs for why I didnt. >> >> 0014-desc-pair-start-factoring-tx-desc-fields-into-struct.patch >> 0015-desc-pair-add-txhostdesc_start-into-struct-tx_desc_p.patch >> 0016-desc_pair-add-3-tx-size-fields-into-struct-tx_desc_p.patch >> 0017-desc-pair-add-dma_addr_t-fields-to-struct-tx_desc_pa.patch >> 0018-desc-pair-add-txdesc_start-field-to-struct-tx-desc-r.patch >> 0019-desc-pair-factor-rx-desc-fields-out-of-acx_device-in.patch >> 0020-fixup-drop-if0-from-desc-pair-patches.patch >> >> 0021-merge.-ch-step-towards-USB-only-compile.patch >> 0022-common.c-add-ifdefs-to-disable-field-refs-for-USB-on.patch >> 0023-mem.h-add-ifdef-guard-and-MEM-stub-functions.patch >> 0024-mem-inlines.h-add-ifndef-guard.patch >> 0025-merge.h-add-ifndef-guard-stubs.patch >> 0026-mem-inlines.h-add-notes-re-inclusion.patch >> >> 2nd acx_device refactor. This uses an anonymous union, which I think >> is a GCC extension, and which might be problematic for very old >> compilers, probably too old to worry about. 28,29 arguably should be >> adjusted, 29's changes are by script given in 28, I didnt feel like >> explaining in english whats pretty clear in code. I probably could >> fix it to do 100% of changes, not leave manual tweaks at end, but I >> think/hope its once and done, so not worth automating completely. >> >> 0027-merge.ch-cleanup-create-desc-routines-make-helpers-s.patch >> 0028-desc-info-refactor-txdesc_t-and-rxdesc_t-to-extract-.patch >> 0029-field-refs-for-previous-struct-changes.patch >> 0030-merge.c-trim-acx_allocate-to-leverage-desc_info-refa.patch >> >> ------------------------------------------------------------------------------ >> 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: Larry F. <Lar...@lw...> - 2012-05-08 19:14:33
|
On 05/08/2012 02:01 PM, Oliver Winker wrote: > Hi Larry, > > OK, Thanks for the feedback and the patch. Will check in the coming days. > > Now this is anyway quite interesting ... actually I didn't yet try a lot > with an 802.11n AP. Shouldn't that work anyway (without falling back the > AP to g) ? > > If there is something in the driver, that we can do in order to operate > with an 802.11n AP, then we should of course do that. But right now I > actually don't know enough about it. Yes, it should work in fall-back mode. The drivers for all my other devices handle that OK. As I said earlier, I need to analyze the exchange between the AP and the acx111. If you get a chance to test the patch and verify that the driver works on i386 architecture, and with an acx100 after the patch is applied, then I will formally submit the patch with a proper signed-off-by line. I am getting ready to test the acx111 on a 32-bit kernel with the patch. I will also wait with the patch until Jim's refactoring is merged before I submit any more patches. Larry |
From: Oliver W. <oli...@ol...> - 2012-05-08 19:01:46
|
Hi Larry, OK, Thanks for the feedback and the patch. Will check in the coming days. Now this is anyway quite interesting ... actually I didn't yet try a lot with an 802.11n AP. Shouldn't that work anyway (without falling back the AP to g) ? If there is something in the driver, that we can do in order to operate with an 802.11n AP, then we should of course do that. But right now I actually don't know enough about it. Cheers, Oliver On 05/08/2012 08:30 PM, Larry Finger wrote: > Oliver, > > That is my bad. The AP that uses CCMP was also running 802.11n. When I > switched it to 802.11g leaving the CCMP in place, it connected > immediately. I will likely have to use Kismet/wireshark to analyze what > is on the air. > > The attached patch fixes a lot of the x86_64 warnings. After applying > it, the device still works on my 64-bit system with an acx111. It has > not been compiled or run on a 32-bit installation, nor has it been > tested with an acx100. |
From: Oliver W. <oli...@ol...> - 2012-05-08 18:55:17
|
Hi Jim, Ok, Thanks again. I just wanted to take a look at the previous 1-11 this evening ;)! Anyway having some more will amortized the testing ;). (the last series was interesting, because I finally took it as occasion to find a workflow with git-am, which allows merge-style conflict markers (<<< === >>>) in case of conflicts: git-am --rejects and then patch in the .rej with "patch --merge" ... much easier than manually fiddle-in the rej-hunk etc. ;) Question regarding the struct acx_device refactoring, just to be sure: Does this still allow concurrent operation of multiple and mixed device-types (i.e. several pci, usb, mem devices on the on the same machine, each one with it's own adev, running at the same time) ? Because this is something I would like to keep. (I remember a question/thought in this context, but I didn't made it yet to come back on it) Cheers, Oliver On 05/08/2012 07:13 PM, Jim Cromie wrote: > hi Oliver, > > heres another batch, with a mix of stuff: > > - unused proto removal > - random style cleanups > - add some statics, move callees before callers (in create*desc*queue) > - ifndef guards against multiple inclusion > - refactoring of rx/tx.host/buf data in struct acx_device > - work towards USB-only config > - streamlining of acx_allocate, free > > These include the patches that didnt make it into your last merge > session, rebased. > > 0001-mem.c-if0-unused-acxmem_create_rx_host_desc_queue.patch > 0002-merge-acx-mem-pci-_create_desc_queues.patch > 0003-merge-clean-out-commented-fn-protos.patch > 0004-merge.c-update-comments.patch > 0005-rewrap-comments-reindent-to-help-sdiffing.patch > 0006-cleanup-remove-d-forward-decl-fn-protos.patch > 0007-cleanup-drop-if0d-functions-and-their-comments.patch > 0008-mem.c-fix-stray-acxmem_advance_txdesc-ref.patch > 0009-merge.h-put-static-inline-in-fn-proto-line.patch > 0010-merge.c-drop-if0d-funcs.patch > 0011-merge-fix-no-mem-build-probs.patch > 0012-mem.c-newline-before-fn-body-open-brace.patch > 0013-merge.c-comment-wrap-whitespace.patch > > 1st acx_device refactor. These could be squashed together, esp 14-18, > See commit msgs for why I didnt. > > 0014-desc-pair-start-factoring-tx-desc-fields-into-struct.patch > 0015-desc-pair-add-txhostdesc_start-into-struct-tx_desc_p.patch > 0016-desc_pair-add-3-tx-size-fields-into-struct-tx_desc_p.patch > 0017-desc-pair-add-dma_addr_t-fields-to-struct-tx_desc_pa.patch > 0018-desc-pair-add-txdesc_start-field-to-struct-tx-desc-r.patch > 0019-desc-pair-factor-rx-desc-fields-out-of-acx_device-in.patch > 0020-fixup-drop-if0-from-desc-pair-patches.patch > > 0021-merge.-ch-step-towards-USB-only-compile.patch > 0022-common.c-add-ifdefs-to-disable-field-refs-for-USB-on.patch > 0023-mem.h-add-ifdef-guard-and-MEM-stub-functions.patch > 0024-mem-inlines.h-add-ifndef-guard.patch > 0025-merge.h-add-ifndef-guard-stubs.patch > 0026-mem-inlines.h-add-notes-re-inclusion.patch > > 2nd acx_device refactor. This uses an anonymous union, which I think > is a GCC extension, and which might be problematic for very old > compilers, probably too old to worry about. 28,29 arguably should be > adjusted, 29's changes are by script given in 28, I didnt feel like > explaining in english whats pretty clear in code. I probably could > fix it to do 100% of changes, not leave manual tweaks at end, but I > think/hope its once and done, so not worth automating completely. > > 0027-merge.ch-cleanup-create-desc-routines-make-helpers-s.patch > 0028-desc-info-refactor-txdesc_t-and-rxdesc_t-to-extract-.patch > 0029-field-refs-for-previous-struct-changes.patch > 0030-merge.c-trim-acx_allocate-to-leverage-desc_info-refa.patch > > ------------------------------------------------------------------------------ > 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: Larry F. <Lar...@lw...> - 2012-05-08 18:31:09
|
On 05/08/2012 11:46 AM, Oliver Winker wrote: > Hi Larry, > > Just tested WPA2/CCMP(AES) on x86_64 and it works ok here :) - see logs > below [2]. > > Indeed with gcc 4.6 there quite some more warnings now. Would be indeed > nice to have those fixed ;). > > Maybe its something with the WPA setup ? > > Since with TKIP already worked, driver-wise there isn't actually any > real difference anymore. Currently all the crypto is done by mac80211 > and we are passing frames transparently on the air. Oliver, That is my bad. The AP that uses CCMP was also running 802.11n. When I switched it to 802.11g leaving the CCMP in place, it connected immediately. I will likely have to use Kismet/wireshark to analyze what is on the air. The attached patch fixes a lot of the x86_64 warnings. After applying it, the device still works on my 64-bit system with an acx111. It has not been compiled or run on a 32-bit installation, nor has it been tested with an acx100. Larry |
From: Jim C. <jim...@gm...> - 2012-05-08 17:15:00
|
Now that the struct acx_device has been refactored to contain the rx/tx.host/buf info in 4 struct desc_infos, simplify acx_allocate() by replacing size and phy args with a single pointer to the desc_info for the rx/tx.host/buf being allocated. We also save the allocation into desc_info inside the function, and thus return a status rather than a pointer. Signed-off-by: Jim Cromie <jim...@gm...> --- merge.c | 62 +++++++++++++++++++++++++++----------------------------------- 1 files changed, 27 insertions(+), 35 deletions(-) diff --git a/merge.c b/merge.c index e724f3d..5dc5ad6 100644 --- a/merge.c +++ b/merge.c @@ -209,33 +209,34 @@ int acxpci_upload_radio(acx_device_t *adev) /* ########################################## */ /* host_desc_queue creation */ -static void *acx_allocate(acx_device_t *adev, size_t size, - dma_addr_t * phy, const char *msg) +static int acx_allocate(acx_device_t *adev, struct desc_info *di, + const char *msg) { void *ptr; if (IS_PCI(adev)) ptr = dma_alloc_coherent(adev->bus_dev, - size, phy, GFP_KERNEL); + di->size, &di->phy, GFP_KERNEL); else { - ptr = kmalloc(size, GFP_KERNEL); + ptr = kmalloc(di->size, GFP_KERNEL); /* * The ACX can't use the physical address, so we'll * have to fa later and it might be handy to have the * virtual address. */ - *phy = (dma_addr_t) NULL; + di->phy = (dma_addr_t) NULL; } - + if (ptr) { - log(L_DEBUG, "%s sz=%d adr=0x%p phy=0x%08llx\n", - msg, (int)size, ptr, (unsigned long long)*phy); - memset(ptr, 0, size); - return ptr; + log(L_DEBUG, "%s sz=%u adr=0x%p phy=0x%08llx\n", msg, + di->size, ptr, (unsigned long long)di->phy); + memset(ptr, 0, di->size); + di->start = ptr; + return 0; } - pr_err("%s allocation FAILED (%d bytes)\n", msg, (int)size); - - return NULL; + pr_err("%s allocation FAILED (%u bytes)\n", msg, di->size); + + return -ENOMEM; } #define RX_BUFFER_SIZE (sizeof(rxbuffer_t) + 32) @@ -251,19 +252,16 @@ static int acx_create_rx_host_desc_queue(acx_device_t *adev) rxbuffer_t *rxbuf; dma_addr_t hostdesc_phy; dma_addr_t rxbuf_phy; - int i; + int i, rc; FN_ENTER; /* allocate the RX host descriptor queue pool */ adev->rx.host.size = RX_CNT * sizeof(*hostdesc); - adev->rx.host.rxstart - = acx_allocate(adev, - adev->rx.host.size, - &adev->rx.host.phy, - "rxhostdesc_start"); - if (!adev->rx.host.rxstart) + rc = acx_allocate(adev, &adev->rx.host, "rxhostdesc_start"); + if (rc) goto fail; + /* check for proper alignment of RX host descriptor pool */ if ((long)adev->rx.host.rxstart & 3) { pr_acx("driver bug: dma alloc returns unaligned address\n"); @@ -273,10 +271,8 @@ static int acx_create_rx_host_desc_queue(acx_device_t *adev) /* allocate Rx buffer pool which will be used by the acx * to store the whole content of the received frames in it */ adev->rx.buf.size = RX_CNT * RX_BUFFER_SIZE; - adev->rx.buf.rxstart - = acx_allocate(adev, adev->rx.buf.size, - &adev->rx.buf.phy, "rxbuf_start"); - if (!adev->rx.buf.rxstart) + rc = acx_allocate(adev, &adev->rx.buf, "rxbuf_start"); + if (rc) goto fail; rxbuf = (rxbuffer_t*) adev->rx.buf.rxstart; @@ -303,7 +299,7 @@ static int acx_create_rx_host_desc_queue(acx_device_t *adev) FN_EXIT1(OK); return OK; fail: - pr_acx("FAILED\n"); + pr_acx("FAILED: %d\n", rc); /* dealloc will be done by free function on error case */ FN_EXIT1(NOT_OK); return NOT_OK; @@ -315,7 +311,7 @@ static int acx_create_tx_host_desc_queue(acx_device_t *adev) u8 *txbuf; dma_addr_t hostdesc_phy; dma_addr_t txbuf_phy; - int i; + int i, rc; FN_ENTER; @@ -323,20 +319,16 @@ static int acx_create_tx_host_desc_queue(acx_device_t *adev) /* OW 20100513 adev->tx.buf.size = TX_CNT * *WLAN_A4FR_MAXLEN_WEP_FCS (30 + 2312 + 4); */ adev->tx.buf.size = TX_CNT * WLAN_A4FR_MAXLEN_WEP_FCS; - adev->tx.buf.txstart - = acx_allocate(adev, adev->tx.buf.size, - &adev->tx.buf.phy, "txbuf_start"); - if (!adev->tx.buf.txstart) + rc = acx_allocate(adev, &adev->tx.buf, "txbuf_start"); + if (rc) goto fail; /* allocate the TX host descriptor queue pool */ adev->tx.host.size = TX_CNT * 2 * sizeof(*hostdesc); - adev->tx.host.txstart - = acx_allocate(adev, adev->tx.host.size, - &adev->tx.host.phy, - "txhostdesc_start"); - if (!adev->tx.host.txstart) + rc = acx_allocate(adev, &adev->tx.host, "txhostdesc_start"); + if (rc) goto fail; + /* check for proper alignment of TX host descriptor pool */ if ((long)adev->tx.host.txstart & 3) { pr_acx("driver bug: dma alloc returns unaligned address\n"); -- 1.7.8.1 |
From: Jim C. <jim...@gm...> - 2012-05-08 17:14:56
|
- make helpers static, and drop from merge.h - reorder callees 1st - drop fn-name from pr_*, let pr_fmt() do it - pr_err on FAIL (few more forgotten) Signed-off-by: Jim Cromie <jim...@gm...> --- merge.c | 82 ++++++++++++++++++++++++++++++-------------------------------- merge.h | 15 +++-------- 2 files changed, 44 insertions(+), 53 deletions(-) diff --git a/merge.c b/merge.c index a17c224..bd300d1 100644 --- a/merge.c +++ b/merge.c @@ -206,11 +206,11 @@ int acxpci_upload_radio(acx_device_t *adev) return acx_upload_radio(adev, filename); } -//########################################## -/* host desc queue stuff */ +/* ########################################## */ +/* host_desc_queue creation */ -void *acx_allocate(acx_device_t * adev, size_t size, - dma_addr_t * phy, const char *msg) +static void *acx_allocate(acx_device_t *adev, size_t size, + dma_addr_t * phy, const char *msg) { void *ptr; @@ -233,8 +233,8 @@ void *acx_allocate(acx_device_t * adev, size_t size, memset(ptr, 0, size); return ptr; } - pr_err("%s allocation FAILED (%d bytes)\n", - msg, (int)size); + pr_err("%s allocation FAILED (%d bytes)\n", msg, (int)size); + return NULL; } @@ -245,7 +245,7 @@ void *acx_allocate(acx_device_t * adev, size_t size, * the whole size of a data buffer (header plus data body) plus 32 * bytes safety offset at the end */ -static int acx_create_rx_host_desc_queue(acx_device_t * adev) +static int acx_create_rx_host_desc_queue(acx_device_t *adev) { rxhostdesc_t *hostdesc; rxbuffer_t *rxbuf; @@ -303,14 +303,13 @@ static int acx_create_rx_host_desc_queue(acx_device_t * adev) FN_EXIT1(OK); return OK; fail: - pr_acx("create_rx_host_desc_queue FAILED\n"); + pr_acx("FAILED\n"); /* dealloc will be done by free function on error case */ FN_EXIT1(NOT_OK); return NOT_OK; } -static -int acx_create_tx_host_desc_queue(acx_device_t * adev) +static int acx_create_tx_host_desc_queue(acx_device_t *adev) { txhostdesc_t *hostdesc; u8 *txbuf; @@ -435,36 +434,12 @@ int acx_create_tx_host_desc_queue(acx_device_t * adev) FN_EXIT1(OK); return OK; fail: - pr_acx("create_tx_host_desc_queue FAILED\n"); + pr_err("FAILED\n"); /* dealloc will be done by free function on error case */ FN_EXIT1(NOT_OK); return NOT_OK; } -void acx_create_desc_queues(acx_device_t *adev, u32 tx_queue_start, - u32 rx_queue_start) -{ - u32 *p; - int i; - - acxmem_lock_flags; - acxmem_lock(); - - acx_create_tx_desc_queue(adev, tx_queue_start); - acx_create_rx_desc_queue(adev, rx_queue_start); - - if (IS_PCI(adev)) - goto out; - - p = (u32 *) adev->acx_queue_indicator; - for (i = 0; i < 4; i++) { - write_slavemem32(adev, (u32) p, 0); - p++; - } -out: - acxmem_unlock(); -} - int acx_create_hostdesc_queues(acx_device_t *adev) { int result; @@ -479,10 +454,10 @@ int acx_create_hostdesc_queues(acx_device_t *adev) return result; } -//########################################## -/* non-host desc queue stuff */ +/* ########################################## */ +/* non-host desc_queue creation */ -void acx_create_rx_desc_queue(acx_device_t * adev, u32 rx_queue_start) +static void acx_create_rx_desc_queue(acx_device_t * adev, u32 rx_queue_start) { rxdesc_t *rxdesc; u32 mem_offs; @@ -579,7 +554,7 @@ void acx_create_rx_desc_queue(acx_device_t * adev, u32 rx_queue_start) FN_EXIT0; } -void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) +static void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) { txdesc_t *txdesc; txhostdesc_t *hostdesc; @@ -705,8 +680,32 @@ void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) FN_EXIT0; } -//########################################## -/* free desc queue stuff */ +void acx_create_desc_queues(acx_device_t *adev, u32 tx_queue_start, + u32 rx_queue_start) +{ + u32 *p; + int i; + + acxmem_lock_flags; + acxmem_lock(); + + acx_create_tx_desc_queue(adev, tx_queue_start); + acx_create_rx_desc_queue(adev, rx_queue_start); + + if (IS_PCI(adev)) + goto out; + + p = (u32 *) adev->acx_queue_indicator; + for (i = 0; i < 4; i++) { + write_slavemem32(adev, (u32) p, 0); + p++; + } +out: + acxmem_unlock(); +} + +/* ########################################## */ +/* free desc_queue stuff */ /* * acx_free_desc_queues @@ -718,7 +717,6 @@ void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) void acx_free_desc_queues(acx_device_t *adev) { - #define ACX_FREE_QUEUE(adev, size, ptr, phyaddr) \ if (ptr) { \ if (IS_PCI(adev)) \ diff --git a/merge.h b/merge.h index e995c94..1f4bd11 100644 --- a/merge.h +++ b/merge.h @@ -5,7 +5,11 @@ irqreturn_t acx_interrupt(int irq, void *dev_id); +void acx_create_desc_queues(acx_device_t *adev, u32 tx_queue_start, + u32 rx_queue_start); + int acx_create_hostdesc_queues(acx_device_t *adev); +void acx_free_desc_queues(acx_device_t *adev); void acx_log_rxbuffer(const acx_device_t *adev); void acx_log_txbuffer(acx_device_t *adev); @@ -15,11 +19,6 @@ int acx_op_start(struct ieee80211_hw *hw); void acx_handle_info_irq(acx_device_t *adev); -// temporary ?? may go static after all users are in merge.c -void *acx_allocate(acx_device_t *adev, size_t size, - dma_addr_t *phy, const char *msg); - -void acx_free_desc_queues(acx_device_t *adev); int _acx_read_phy_reg(acx_device_t *adev, u32 reg, u8 *charbuf); int _acx_write_phy_reg(acx_device_t *adev, u32 reg, u8 value); @@ -36,9 +35,6 @@ void acx_set_interrupt_mask(acx_device_t *adev); void acx_show_card_eeprom_id(acx_device_t *adev); -void acx_create_rx_desc_queue(acx_device_t *adev, u32 rx_queue_start); -void acx_create_tx_desc_queue(acx_device_t *adev, u32 rx_queue_start); - unsigned int acx_tx_clean_txdesc(acx_device_t *adev); void _acx_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, @@ -63,9 +59,6 @@ int acx_validate_fw(acx_device_t *adev, const firmware_image_t *fw_image, u32 offset); int acxmem_upload_fw(acx_device_t *adev); -void acx_create_desc_queues(acx_device_t *adev, u32 tx_queue_start, - u32 rx_queue_start); - /* wrappers on acx_upload_radio(adev, filename */ int acxmem_upload_radio(acx_device_t *adev); int acxpci_upload_radio(acx_device_t *adev); -- 1.7.8.1 |
From: Jim C. <jim...@gm...> - 2012-05-08 17:14:55
|
struct tx_desc_pair and rx_desc_pair each have 2 sets (host, buf) of 3 fields (start, size, phy). Put these into struct desc_info, and build other structs upon it. One of the 3 fields is an unnamed union of 3 pointers to different types. This script converts almost all field refs correctly, only those in ACX_FREE_QUEUES need tweaking (one too many _dir_s). Also added 2 casts to suppress warning on an assignment (maybe a 2nd unnamed union will fix this). Theyre checked in separately, in next patch. for f in $* ; do perl -pi -e 's/->([tr]x|_dir_)\.(buf)_(start)\b/->$1.$2.$1$3/g' $f perl -pi -e 's/->([tr]x|_dir_)\.(buf)_start(phy)\b/->$1.$2.$3/g' $f perl -pi -e 's/->([tr]x|_dir_)\.(buf)_area_(size)\b/->$1.$2.$3/g' $f perl -pi -e 's/->([tr]x|_dir_)\.(host)desc_(start)\b/->$1.$2.$1$3/g' $f perl -pi -e 's/->([tr]x|_dir_)\.(host)desc_start(phy)\b/->$1.$2.$3/g' $f perl -pi -e 's/->([tr]x|_dir_)\.(host)desc_area_(size)\b/->$1.$2.$3/g' $f done Signed-off-by: Jim Cromie <jim...@gm...> --- acx_struct_dev.h | 44 +++++++++++++++++++++----------------------- 1 files changed, 21 insertions(+), 23 deletions(-) diff --git a/acx_struct_dev.h b/acx_struct_dev.h index d1342f3..7ea1cc6 100644 --- a/acx_struct_dev.h +++ b/acx_struct_dev.h @@ -216,35 +216,33 @@ struct eeprom_cfg { co_manuf_t manufacturer; }; +/* desc allocation info for both rx,tx hostdesc,desc */ +struct desc_info { + union { /* points to PCI-mapped memory */ + txhostdesc_t *txstart; + rxhostdesc_t *rxstart; + void *start; + }; + unsigned int size; // hostdesc_area_size; + dma_addr_t phy; // hostdesc_startphy; +}; + /* tx fields refactored */ -struct tx_desc_pair { +struct tx_desc_pair2 { unsigned int tail; - u8 *buf_start; - txhostdesc_t *hostdesc_start; - txdesc_t *desc_start; /* points to PCI-mapped memory */ - - /* sizes of above host memory areas */ - unsigned int buf_area_size; - unsigned int hostdesc_area_size; + txdesc_t *desc_start; unsigned int desc_size; /* size of txdesc */ - dma_addr_t buf_startphy; - dma_addr_t hostdesc_startphy; + struct desc_info host; + struct desc_info buf; }; -// identical to above, except for field types (and theyre close too) -struct rx_desc_pair { +struct rx_desc_pair2 { unsigned int tail; - rxbuffer_t *buf_start; - rxhostdesc_t *hostdesc_start; rxdesc_t *desc_start; + unsigned int desc_size; /* size of rxdesc */ - /* sizes of above host memory areas */ - unsigned int buf_area_size; - unsigned int hostdesc_area_size; - unsigned int desc_size; /* size of txdesc */ - - dma_addr_t buf_startphy; - dma_addr_t hostdesc_startphy; + struct desc_info host; + struct desc_info buf; }; /* FIXME: this should be named something like struct acx_priv (typedef'd to @@ -482,8 +480,8 @@ struct acx_device { /* pointers to tx buffers, tx host descriptors (in host * memory) and tx descs in device memory, same for rx */ - struct tx_desc_pair tx; - struct rx_desc_pair rx; + struct tx_desc_pair2 tx; + struct rx_desc_pair2 rx; u8 need_radio_fw; u8 irqs_active; /* whether irq sending is activated */ -- 1.7.8.1 |
From: Jim C. <jim...@gm...> - 2012-05-08 17:14:54
|
Signed-off-by: Jim Cromie <jim...@gm...> --- common.c | 10 +++--- mem.c | 20 ++++++------ merge.c | 104 +++++++++++++++++++++++++++++++------------------------------- pci.c | 22 ++++++------ 4 files changed, 78 insertions(+), 78 deletions(-) diff --git a/common.c b/common.c index 933151d..5d10b12 100644 --- a/common.c +++ b/common.c @@ -974,10 +974,10 @@ acx100_init_memory_pools(acx_device_t * adev, const acx_ie_memmap_t * mmt) MemoryConfigOption.DMA_config = cpu_to_le32(0x30000); /* Declare start of the Rx host pool */ MemoryConfigOption.pRxHostDesc = - cpu2acx(adev->rx.hostdesc_startphy); + cpu2acx(adev->rx.host.phy); log(L_DEBUG, "pRxHostDesc 0x%08X, rxhostdesc_startphy 0x%lX\n", acx2cpu(MemoryConfigOption.pRxHostDesc), - (long)adev->rx.hostdesc_startphy); + (long)adev->rx.host.phy); #endif } else if(IS_MEM(adev)) { @@ -990,7 +990,7 @@ acx100_init_memory_pools(acx_device_t * adev, const acx_ie_memmap_t * mmt) MemoryConfigOption.pRxHostDesc = cpu2acx(0); log(L_DEBUG, "pRxHostDesc 0x%08X, rxhostdesc_startphy 0x%lX\n", acx2cpu(MemoryConfigOption.pRxHostDesc), - (long)adev->rx.hostdesc_startphy); + (long)adev->rx.host.phy); #endif } else { @@ -1210,13 +1210,13 @@ static int acx111_create_dma_regions(acx_device_t * adev) if (IS_PCI(adev)) { #if defined(CONFIG_ACX_MAC80211_PCI) memconf.rx_queue1_host_rx_start = - cpu2acx(adev->rx.hostdesc_startphy); + cpu2acx(adev->rx.host.phy); #endif } else if (IS_MEM(adev)) { #if defined(CONFIG_ACX_MAC80211_MEM) memconf.rx_queue1_host_rx_start = - cpu2acx(adev->rx.hostdesc_startphy); + cpu2acx(adev->rx.host.phy); #endif } diff --git a/mem.c b/mem.c index 3e827bb..47623c4 100644 --- a/mem.c +++ b/mem.c @@ -1146,14 +1146,14 @@ int acxmem_proc_diag_output(struct seq_file *file, adev->irq_mask, adev->irq_status, read_reg32(adev, IO_ACX_IRQ_STATUS_NON_DES), - adev->tx.buf_start, adev->tx.buf_area_size, adev->tx.desc_size, - adev->tx.desc_start, adev->tx.hostdesc_start, - adev->tx.hostdesc_area_size, adev->acx_txbuf_start, + 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.hostdesc_start, adev->rx.hostdesc_area_size, - adev->rx.buf_start, adev->rx.buf_area_size); + adev->rx.host.rxstart, adev->rx.host.size, + adev->rx.buf.rxstart, adev->rx.buf.size); acxmem_unlock(); FN_EXIT0; @@ -1191,7 +1191,7 @@ STATick void acxmem_process_rxdesc(acx_device_t *adev) tail = adev->rx.tail; count = RX_CNT; while (1) { - hostdesc = &adev->rx.hostdesc_start[tail]; + hostdesc = &adev->rx.host.rxstart[tail]; rxdesc = &adev->rx.desc_start[tail]; /* advance tail regardless of outcome of the below test */ tail = (tail + 1) % RX_CNT; @@ -1274,7 +1274,7 @@ STATick void acxmem_process_rxdesc(acx_device_t *adev) write_reg16(adev, IO_ACX_INT_TRIG, INT_TRIG_RXPRC); /* ok, descriptor is handled, now check the next descriptor */ - hostdesc = &adev->rx.hostdesc_start[tail]; + hostdesc = &adev->rx.host.rxstart[tail]; rxdesc = &adev->rx.desc_start[tail]; Ctl_8 = hostdesc->hd.Ctl_16 = read_slavemem8(adev, (u32) &(rxdesc->Ctl_8)); @@ -1496,7 +1496,7 @@ acxmem_get_txhostdesc(acx_device_t *adev, txdesc_t* txdesc) pr_info("bad txdesc ptr %p\n", txdesc); return NULL; } - return &adev->tx.hostdesc_start[index * 2]; + return &adev->tx.host.txstart[index * 2]; } @@ -2147,7 +2147,7 @@ int acx111pci_ioctl_info(struct ieee80211_hw *hw, /* dump host rx descriptor ring buffer */ - rxhostdesc = adev->rx.hostdesc_start; + rxhostdesc = adev->rx.host.rxstart; /* loop over complete receive pool */ if (rxhostdesc) @@ -2204,7 +2204,7 @@ int acx111pci_ioctl_info(struct ieee80211_hw *hw, /* dump host tx descriptor ring buffer */ - txhostdesc = adev->tx.hostdesc_start; + txhostdesc = adev->tx.host.txstart; /* loop over complete host send pool */ if (txhostdesc) diff --git a/merge.c b/merge.c index bd300d1..e724f3d 100644 --- a/merge.c +++ b/merge.c @@ -256,33 +256,33 @@ static int acx_create_rx_host_desc_queue(acx_device_t *adev) FN_ENTER; /* allocate the RX host descriptor queue pool */ - adev->rx.hostdesc_area_size = RX_CNT * sizeof(*hostdesc); - adev->rx.hostdesc_start + adev->rx.host.size = RX_CNT * sizeof(*hostdesc); + adev->rx.host.rxstart = acx_allocate(adev, - adev->rx.hostdesc_area_size, - &adev->rx.hostdesc_startphy, + adev->rx.host.size, + &adev->rx.host.phy, "rxhostdesc_start"); - if (!adev->rx.hostdesc_start) + if (!adev->rx.host.rxstart) goto fail; /* check for proper alignment of RX host descriptor pool */ - if ((long)adev->rx.hostdesc_start & 3) { + if ((long)adev->rx.host.rxstart & 3) { pr_acx("driver bug: dma alloc returns unaligned address\n"); goto fail; } /* allocate Rx buffer pool which will be used by the acx * to store the whole content of the received frames in it */ - adev->rx.buf_area_size = RX_CNT * RX_BUFFER_SIZE; - adev->rx.buf_start - = acx_allocate(adev, adev->rx.buf_area_size, - &adev->rx.buf_startphy, "rxbuf_start"); - if (!adev->rx.buf_start) + adev->rx.buf.size = RX_CNT * RX_BUFFER_SIZE; + adev->rx.buf.rxstart + = acx_allocate(adev, adev->rx.buf.size, + &adev->rx.buf.phy, "rxbuf_start"); + if (!adev->rx.buf.rxstart) goto fail; - rxbuf = adev->rx.buf_start; - rxbuf_phy = adev->rx.buf_startphy; - hostdesc = adev->rx.hostdesc_start; - hostdesc_phy = adev->rx.hostdesc_startphy; + rxbuf = (rxbuffer_t*) adev->rx.buf.rxstart; + rxbuf_phy = adev->rx.buf.phy; + hostdesc = adev->rx.host.rxstart; + hostdesc_phy = adev->rx.host.phy; /* don't make any popular C programming pointer arithmetic * mistakes here, otherwise I'll kill you... (and don't dare @@ -299,7 +299,7 @@ static int acx_create_rx_host_desc_queue(acx_device_t *adev) hostdesc++; } hostdesc--; - hostdesc->hd.desc_phy_next = cpu2acx(adev->rx.hostdesc_startphy); + hostdesc->hd.desc_phy_next = cpu2acx(adev->rx.host.phy); FN_EXIT1(OK); return OK; fail: @@ -320,33 +320,33 @@ static int acx_create_tx_host_desc_queue(acx_device_t *adev) FN_ENTER; /* allocate TX buffer */ - /* OW 20100513 adev->tx.buf_area_size = TX_CNT + /* OW 20100513 adev->tx.buf.size = TX_CNT * *WLAN_A4FR_MAXLEN_WEP_FCS (30 + 2312 + 4); */ - adev->tx.buf_area_size = TX_CNT * WLAN_A4FR_MAXLEN_WEP_FCS; - adev->tx.buf_start - = acx_allocate(adev, adev->tx.buf_area_size, - &adev->tx.buf_startphy, "txbuf_start"); - if (!adev->tx.buf_start) + adev->tx.buf.size = TX_CNT * WLAN_A4FR_MAXLEN_WEP_FCS; + adev->tx.buf.txstart + = acx_allocate(adev, adev->tx.buf.size, + &adev->tx.buf.phy, "txbuf_start"); + if (!adev->tx.buf.txstart) goto fail; /* allocate the TX host descriptor queue pool */ - adev->tx.hostdesc_area_size = TX_CNT * 2 * sizeof(*hostdesc); - adev->tx.hostdesc_start - = acx_allocate(adev, adev->tx.hostdesc_area_size, - &adev->tx.hostdesc_startphy, + adev->tx.host.size = TX_CNT * 2 * sizeof(*hostdesc); + adev->tx.host.txstart + = acx_allocate(adev, adev->tx.host.size, + &adev->tx.host.phy, "txhostdesc_start"); - if (!adev->tx.hostdesc_start) + if (!adev->tx.host.txstart) goto fail; /* check for proper alignment of TX host descriptor pool */ - if ((long)adev->tx.hostdesc_start & 3) { + if ((long)adev->tx.host.txstart & 3) { pr_acx("driver bug: dma alloc returns unaligned address\n"); goto fail; } - hostdesc = adev->tx.hostdesc_start; - hostdesc_phy = adev->tx.hostdesc_startphy; - txbuf = adev->tx.buf_start; - txbuf_phy = adev->tx.buf_startphy; + hostdesc = adev->tx.host.txstart; + hostdesc_phy = adev->tx.host.phy; + txbuf = (u8*) adev->tx.buf.txstart; + txbuf_phy = adev->tx.buf.phy; #if 0 /* Each tx buffer is accessed by hardware via txdesc -> txhostdesc(s) @@ -429,7 +429,7 @@ static int acx_create_tx_host_desc_queue(acx_device_t *adev) hostdesc++; } hostdesc--; - hostdesc->hd.desc_phy_next = cpu2acx(adev->tx.hostdesc_startphy); + hostdesc->hd.desc_phy_next = cpu2acx(adev->tx.host.phy); FN_EXIT1(OK); return OK; @@ -587,8 +587,8 @@ static void acx_create_tx_desc_queue(acx_device_t *adev, u32 tx_queue_start) txdesc = adev->tx.desc_start; if (IS_PCI(adev)) { mem_offs = tx_queue_start; - hostmemptr = adev->tx.hostdesc_startphy; - hostdesc = adev->tx.hostdesc_start; + hostmemptr = adev->tx.host.phy; + hostdesc = adev->tx.host.txstart; } if (IS_ACX111(adev)) { /* ACX111 has a preinitialized Tx buffer! */ @@ -729,10 +729,10 @@ void acx_free_desc_queues(acx_device_t *adev) #ifndef ACX_FREE_QUEUES #define ACX_FREE_QUEUES(adev, _dir_) \ - ACX_FREE_QUEUE(adev, adev->_dir_.hostdesc_area_size, \ - adev->_dir_.hostdesc_start, adev->_dir_.hostdesc_startphy); \ - ACX_FREE_QUEUE(adev, adev->_dir_.buf_area_size, \ - adev->_dir_.buf_start, adev->_dir_.buf_startphy); + 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 FN_ENTER; @@ -784,7 +784,7 @@ void acx_log_rxbuffer(const acx_device_t *adev) pr_debug("entry\n"); - rxhostdesc = adev->rx.hostdesc_start; + rxhostdesc = adev->rx.host.rxstart; if (unlikely(!rxhostdesc)) return; @@ -2461,14 +2461,14 @@ int acxmem_proc_diag_output(struct seq_file *file, adev->irq_mask, adev->irq_status, read_reg32(adev, IO_ACX_IRQ_STATUS_NON_DES), - adev->tx.buf_start, adev->tx.buf_area_size, adev->tx.desc_size, - adev->tx.desc_start, adev->tx.hostdesc_start, - adev->tx.hostdesc_area_size, adev->acx_txbuf_start, + 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.hostdesc_start, adev->rx.hostdesc_area_size, - adev->rx.buf_start, adev->rx.buf_area_size); + adev->rx.host.rxstart, adev->rx.host.size, + adev->rx.buf.rxstart, adev->rx.buf.size); acxmem_unlock(); FN_EXIT0; @@ -2506,7 +2506,7 @@ void acx_process_rxdesc(acx_device_t *adev) tail = adev->rx.tail; count = RX_CNT; while (1) { - hostdesc = &adev->rx.hostdesc_start[tail]; + hostdesc = &adev->rx.host.rxstart[tail]; if (IS_MEM(adev)) rxdesc = &adev->rx.desc_start[tail]; /* advance tail regardless of outcome of the below test */ @@ -2558,7 +2558,7 @@ void acx_process_rxdesc(acx_device_t *adev) /* ok, descriptor is handled, now check the * next descriptor */ - hostdesc = &adev->rx.hostdesc_start[tail]; + hostdesc = &adev->rx.host.rxstart[tail]; /* if next descriptor is empty, then bail out */ if (!(hostdesc->hd.Ctl_16 & cpu_to_le16(DESC_CTL_HOSTOWN)) @@ -2633,7 +2633,7 @@ void acx_process_rxdesc(acx_device_t *adev) write_reg16(adev, IO_ACX_INT_TRIG, INT_TRIG_RXPRC); /* ok, descriptor is handled, now check the next descriptor */ - hostdesc = &adev->rx.hostdesc_start[tail]; + hostdesc = &adev->rx.host.rxstart[tail]; rxdesc = &adev->rx.desc_start[tail]; Ctl_8 = hostdesc->hd.Ctl_16 @@ -2986,7 +2986,7 @@ static txhostdesc_t *acx_get_txhostdesc(acx_device_t *adev, txdesc_t *txdesc) FN_EXIT0; - return &adev->tx.hostdesc_start[index * 2]; + return &adev->tx.host.txstart[index * 2]; } void *_acx_get_txbuf(acx_device_t * adev, tx_t * tx_opaque) @@ -3007,7 +3007,7 @@ acxmem_get_txhostdesc(acx_device_t *adev, txdesc_t* txdesc) { pr_info("bad txdesc ptr %p\n", txdesc); return NULL; } - return &adev->tx.hostdesc_start[index * 2]; + return &adev->tx.host.txstart[index * 2]; } #endif // acxmem_get_txhostdesc() @@ -4385,7 +4385,7 @@ int acx111pci_ioctl_info(struct ieee80211_hw *hw, struct iw_request_info *info, /* dump host rx descriptor ring buffer */ - rxhostdesc = adev->rx.hostdesc_start; + rxhostdesc = adev->rx.host.rxstart; /* loop over complete receive pool */ if (rxhostdesc) @@ -4442,7 +4442,7 @@ int acx111pci_ioctl_info(struct ieee80211_hw *hw, struct iw_request_info *info, /* dump host tx descriptor ring buffer */ - txhostdesc = adev->tx.hostdesc_start; + txhostdesc = adev->tx.host.txstart; /* loop over complete host send pool */ if (txhostdesc) diff --git a/pci.c b/pci.c index 46ced41..001c056 100644 --- a/pci.c +++ b/pci.c @@ -649,7 +649,7 @@ int acxpci_proc_diag_output(struct seq_file *file, acx_device_t *adev) FN_ENTER; seq_printf(file, "** Rx buf **\n"); - rxhostdesc = adev->rx.hostdesc_start; + rxhostdesc = adev->rx.host.rxstart; if (rxhostdesc) for (i = 0; i < RX_CNT; i++) { rtl = (i == adev->rx.tail) ? " [tail]" : ""; @@ -694,16 +694,16 @@ int acxpci_proc_diag_output(struct seq_file *file, acx_device_t *adev) "rxdesc_start %p\n" "rxhostdesc_start %p, rxhostdesc_area_size %u, rxhostdesc_startphy %08llx\n" "rxbuf_start %p, rxbuf_area_size %u, rxbuf_startphy %08llx\n", - adev->tx.buf_start, adev->tx.buf_area_size, - (unsigned long long)adev->tx.buf_startphy, + adev->tx.buf.txstart, adev->tx.buf.size, + (unsigned long long)adev->tx.buf.phy, adev->tx.desc_size, adev->tx.desc_start, - adev->tx.hostdesc_start, adev->tx.hostdesc_area_size, - (unsigned long long)adev->tx.hostdesc_startphy, + adev->tx.host.txstart, adev->tx.host.size, + (unsigned long long)adev->tx.host.phy, adev->rx.desc_start, - adev->rx.hostdesc_start, adev->rx.hostdesc_area_size, - (unsigned long long)adev->rx.hostdesc_startphy, - adev->rx.buf_start, adev->rx.buf_area_size, - (unsigned long long)adev->rx.buf_startphy); + adev->rx.host.rxstart, adev->rx.host.size, + (unsigned long long)adev->rx.host.phy, + adev->rx.buf.rxstart, adev->rx.buf.size, + (unsigned long long)adev->rx.buf.phy); FN_EXIT0; return 0; @@ -1049,7 +1049,7 @@ acx111pci_ioctl_info(struct net_device *ndev, /* dump host rx descriptor ring buffer */ - rxhostdesc = adev->rx.hostdesc_start; + rxhostdesc = adev->rx.host.rxstart; /* loop over complete receive pool */ if (rxhostdesc) @@ -1105,7 +1105,7 @@ acx111pci_ioctl_info(struct net_device *ndev, /* dump host tx descriptor ring buffer */ - txhostdesc = adev->tx.hostdesc_start; + txhostdesc = adev->tx.host.txstart; /* loop over complete host send pool */ if (txhostdesc) -- 1.7.8.1 |
From: Jim C. <jim...@gm...> - 2012-05-08 17:14:50
|
also rewrap comments Signed-off-by: Jim Cromie <jim...@gm...> --- mem-inlines.h | 141 +++++++++++++++++++++++++++++++------------------------- 1 files changed, 78 insertions(+), 63 deletions(-) diff --git a/mem-inlines.h b/mem-inlines.h index fbebdb7..36cbfa9 100644 --- a/mem-inlines.h +++ b/mem-inlines.h @@ -1,64 +1,75 @@ #ifndef _MEM_INLINES_H_ #define _MEM_INLINES_H_ +/* currently need this even for no-mem builds, as it contains the + * locking elements used in merge.c. TBD whether its worth + * repartitioning to achieve this + */ +#if defined(CONFIG_ACX_MAC80211_MEM) || 1 + /* * Locking in mem * ================================================== */ /* -* Locking in mem is more complex as for pci, because the different data-access -* functions below need to be protected against incoming interrupts. -* -* Data-access on the mem device is always going in serveral, none-atomic steps, -* involving 2 or more register writes (e.g. ACX_SLV_REG_ADDR, ACX_SLV_REG_DATA). -* -* If an interrupt is serviced while a data-access function is ongoing, this -* may give access interference with by the involved operations, since the -* irq routine is also using the same data-access functions. -* -* In case of interference, this often manifests during driver operations as -* failure of device cmds and subsequent hanging of the device. It especially -* appeared during sw-scans while a connection was up. -* -* For this reason, irqs shall be off while data access functions are executed, -* and for this we'll use the acx-spinlock. -* -* In pci we don't have this problem, because all data-access functions are -* atomic enough and we use dma (and the sw-scan problem is also not observed in -* pci, which indicates confirmation). -* -* Apart from this, the pure acx-sem locking is already coordinating accesses -* well enough, that simple driver operation without inbetween scans work without -* problems. -* -* Different locking approaches a possible to solves this (e.g. fine vs -* coarse-grained). -* -* The chosen approach is: -* -* 1) Mem.c data-access functions contain all a check to insure, they are executed -* under the acx-spinlock. -* => This is the red line that tells, if something needs coverage. -* -* 2) The scope of acx-spinlocking is local, in this case here only to mem.c. -* All common.c functions are already protected by the sem. -* -* 3) In order to consolidate locking calls and also to account for the logic -* of the various write_flush() calls around, locking in mem should be: -* -* a) as coarse-grained as possible, and ... -* -* b) ... as fine-grained as required. Basically that means, that before -* functions, that sleep, unlocking needs to be done. And locking is taken up -* again inside the sleeping function. Specifically the cmd-functions are used -* in this path. -* -* Once stable, the locking checks in the data-access functions could be #defined -* away. Mem.c is anyway more used two smaller cpus (pxa UP e.g.), so the implied -* runtime constraints by the lock won't take much effect. -* -*/ + * Locking in mem is more complex as for pci, because the different + * data-access functions below need to be protected against incoming + * interrupts. + * + * Data-access on the mem device is always going in serveral, + * none-atomic steps, involving 2 or more register writes + * (e.g. ACX_SLV_REG_ADDR, ACX_SLV_REG_DATA). + * + * If an interrupt is serviced while a data-access function is + * ongoing, this may give access interference with by the involved + * operations, since the irq routine is also using the same + * data-access functions. + * + * In case of interference, this often manifests during driver + * operations as failure of device cmds and subsequent hanging of the + * device. It especially appeared during sw-scans while a connection + * was up. + * + * For this reason, irqs shall be off while data access functions are + * executed, and for this we'll use the acx-spinlock. + * + * In pci we don't have this problem, because all data-access + * functions are atomic enough and we use dma (and the sw-scan problem + * is also not observed in pci, which indicates confirmation). + * + * Apart from this, the pure acx-sem locking is already coordinating + * accesses well enough, that simple driver operation without + * inbetween scans work without problems. + * + * Different locking approaches a possible to solves this (e.g. fine + * vs coarse-grained). + * + * The chosen approach is: + * + * 1) Mem.c data-access functions contain all a check to insure, they + * are executed under the acx-spinlock. => This is the red line that + * tells, if something needs coverage. + * + * 2) The scope of acx-spinlocking is local, in this case here only to + * mem.c. All common.c functions are already protected by the sem. + * + * 3) In order to consolidate locking calls and also to account for + * the logic of the various write_flush() calls around, locking in mem + * should be: + * + * a) as coarse-grained as possible, and ... + * + * b) ... as fine-grained as required. Basically that means, that + * before functions, that sleep, unlocking needs to be done. And + * locking is taken up again inside the sleeping + * function. Specifically the cmd-functions are used in this path. + * + * Once stable, the locking checks in the data-access functions could + * be #defined away. Mem.c is anyway more used two smaller cpus (pxa + * UP e.g.), so the implied runtime constraints by the lock won't take + * much effect. + */ /* These are used in many mem.c funcs, including those which should be * merged with their pci counterparts. @@ -231,16 +242,17 @@ INLINE_IO void write_reg8(acx_device_t *adev, unsigned int offset, u8 val) writeb(val, (u8 *) (adev->iobase + ACX_SLV_REG_DATA)); } -/* Handle PCI posting properly: - * Make sure that writes reach the adapter in case they require to be executed - * *before* the next write, by reading a random (and safely accessible) register. - * This call has to be made if there is no read following (which would flush the data - * to the adapter), yet the written data has to reach the adapter immediately. */ +/* Handle PCI posting properly: Make sure that writes reach the + * adapter in case they require to be executed *before* the next + * write, by reading a random (and safely accessible) register. This + * call has to be made if there is no read following (which would + * flush the data to the adapter), yet the written data has to reach + * the adapter immediately. */ INLINE_IO void write_flush(acx_device_t *adev) { /* readb(adev->iobase + adev->io[IO_ACX_INFO_MAILBOX_OFFS]); */ - /* faster version (accesses the first register, IO_ACX_SOFT_RESET, - * which should also be safe): */ + /* faster version (accesses the first register, + * IO_ACX_SOFT_RESET, which should also be safe): */ ACXMEM_WARN_NOT_SPIN_LOCKED; (void) acx_readl(adev->iobase); } @@ -270,8 +282,8 @@ INLINE_IO void clear_regbits(acx_device_t *adev, unsigned int offset, u32 bits) } /* - * Copy from PXA memory to the ACX memory. This assumes both the PXA and ACX - * addresses are 32 bit aligned. Count is in bytes. + * Copy from PXA memory to the ACX memory. This assumes both the PXA + * and ACX addresses are 32 bit aligned. Count is in bytes. */ INLINE_IO void write_slavemem32(acx_device_t *adev, u32 slave_address, u32 val) { @@ -306,7 +318,8 @@ INLINE_IO void write_slavemem8(acx_device_t *adev, u32 slave_address, u8 val) ACXMEM_WARN_NOT_SPIN_LOCKED; /* - * Get the word containing the target address and the byte offset in that word. + * Get the word containing the target address and the byte + * offset in that word. */ base = slave_address & ~3; offset = (slave_address & 3) * 8; @@ -348,7 +361,8 @@ INLINE_IO void write_slavemem16(acx_device_t *adev, u32 slave_address, u16 val) ACXMEM_WARN_NOT_SPIN_LOCKED; /* - * Get the word containing the target address and the byte offset in that word. + * Get the word containing the target address and the byte + * offset in that word. */ base = slave_address & ~3; offset = (slave_address & 3) * 8; @@ -381,4 +395,5 @@ INLINE_IO u16 read_slavemem16(acx_device_t *adev, u32 slave_address) return val; } +#endif /* CONFIG_ACX_MAC80211_MEM */ #endif /* _MEM_INLINES_H_ */ -- 1.7.8.1 |
From: Jim C. <jim...@gm...> - 2012-05-08 17:14:49
|
- add ifdef guards - add some additional protos - some cleanup Not complete, need to test & correct all build permutations Signed-off-by: Jim Cromie <jim...@gm...> --- mem.h | 38 ++++++++++++++++++++++---------------- 1 files changed, 22 insertions(+), 16 deletions(-) diff --git a/mem.h b/mem.h index 1db3d6b..25f823d 100644 --- a/mem.h +++ b/mem.h @@ -4,12 +4,14 @@ * forward declares some of the functions used in mem.c, reducing the * set of forward declarations in mem.c */ - -#define STATick /* ick: suppress static, let linker find fns in - mem.o pci.o */ +#ifndef _MEM_H_ +#define _MEM_H_ #if defined(CONFIG_ACX_MAC80211_MEM) +#define STATick +/* ick: suppress static, let linker find fns in mem.o pci.o */ + #define DUMP_MEM_DEFINED 1 // to insure export of dump* fns too // Logging @@ -21,14 +23,13 @@ inline void acxmem_dump_mem(acx_device_t *adev, u32 start, int length) { } #endif void acxmem_copy_to_slavemem(acx_device_t *adev, u32 destination, - u8 *source, int count); + u8 *source, int count); +void acxmem_copy_from_slavemem(acx_device_t *adev, u8 *destination, + u32 source, int count); void acxmem_chaincopy_to_slavemem(acx_device_t *adev, u32 destination, - u8 *source, int count); + u8 *source, int count); void acxmem_chaincopy_from_slavemem(acx_device_t *adev, u8 *destination, - u32 source, int count); - -// in merge.c ! -// int acxmem_upload_radio(acx_device_t *adev); + u32 source, int count); int acxmem_write_fw(acx_device_t *adev, const firmware_image_t *fw_image, u32 offset); @@ -53,7 +54,7 @@ void acxmem_write_cmd_type_status(acx_device_t *adev, u16 type, u16 status); void acxmem_init_mboxes(acx_device_t *adev); -#else // CONFIG_ACX_MAC80211_MEM +#else /* !CONFIG_ACX_MAC80211_MEM */ static inline void acxmem_dump_mem(acx_device_t *adev, u32 start, int length) { } @@ -81,7 +82,8 @@ static inline int acxmem_validate_fw(acx_device_t *adev, const firmware_image_t *fw_image, u32 offset) { return 0; } -static inline void acxmem_reset_mac(acx_device_t *adev) { } +static inline void acxmem_reset_mac(acx_device_t *adev) +{ } static inline int acxmem_proc_diag_output(struct seq_file *file, acx_device_t *adev) @@ -97,10 +99,14 @@ static inline u32 acxmem_allocate_acx_txbuf_space(acx_device_t *adev, int count) { return 0; } -static inline void acxmem_init_acx_txbuf2(acx_device_t *adev) { } +static inline void acxmem_init_acx_txbuf2(acx_device_t *adev) +{ } -static inline int __init acxmem_init_module(void) { return 0; } -static inline void __exit acxmem_cleanup_module(void) { } +static inline int __init acxmem_init_module(void) +{ return 0; } + +static inline void __exit acxmem_cleanup_module(void) +{ } static inline void acxmem_write_cmd_type_status(acx_device_t *adev, u16 type, u16 status) @@ -108,5 +114,5 @@ static inline void acxmem_write_cmd_type_status(acx_device_t *adev, static inline void acxmem_init_mboxes(acx_device_t *adev) { } - -#endif // CONFIG_ACX_MAC80211_MEM +#endif /* defined(CONFIG_ACX_MAC80211_MEM) */ +#endif /* _MEM_H_ */ -- 1.7.8.1 |
From: Jim C. <jim...@gm...> - 2012-05-08 17:14:48
|
- add guard - add some stub funcs to improve compilability of multiple configs Signed-off-by: Jim Cromie <jim...@gm...> --- merge.h | 46 +++++++++++++++++++++++++++------------------- 1 files changed, 27 insertions(+), 19 deletions(-) diff --git a/merge.h b/merge.h index 19c6855..e995c94 100644 --- a/merge.h +++ b/merge.h @@ -1,3 +1,6 @@ +#ifndef _MERGE_H_ +#define _MERGE_H_ + #include <linux/interrupt.h> irqreturn_t acx_interrupt(int irq, void *dev_id); @@ -38,19 +41,6 @@ void acx_create_tx_desc_queue(acx_device_t *adev, u32 rx_queue_start); unsigned int acx_tx_clean_txdesc(acx_device_t *adev); -static inline txdesc_t* acx_get_txdesc(acx_device_t *adev, int index) -{ - return (txdesc_t*) (((u8*) adev->tx.desc_start) - + index * adev->tx.desc_size); -} - -static inline txdesc_t* acx_advance_txdesc(acx_device_t *adev, - txdesc_t* txdesc, int inc) -{ - return (txdesc_t*) (((u8*) txdesc) - + inc * adev->tx.desc_size); -} - void _acx_tx_data(acx_device_t *adev, tx_t *tx_opaque, int len, struct ieee80211_tx_info *info, struct sk_buff *skb); @@ -80,18 +70,36 @@ void acx_create_desc_queues(acx_device_t *adev, u32 tx_queue_start, int acxmem_upload_radio(acx_device_t *adev); int acxpci_upload_radio(acx_device_t *adev); -#if defined(CONFIG_ACX_MAC80211_MEM) +#if defined(CONFIG_ACX_MAC80211_PCI) || defined(CONFIG_ACX_MAC80211_MEM) void acxmem_update_queue_indicator(acx_device_t *adev, int txqueue); -#else +static inline txdesc_t* acx_get_txdesc(acx_device_t *adev, int index) +{ + return (txdesc_t*) (((u8*) adev->tx.desc_start) + + index * adev->tx.desc_size); +} + +static inline txdesc_t* acx_advance_txdesc(acx_device_t *adev, + txdesc_t* txdesc, int inc) +{ + return (txdesc_t*) (((u8*) txdesc) + + inc * adev->tx.desc_size); +} + +#else /* !(CONFIG_ACX_MAC80211_PCI || CONFIG_ACX_MAC80211_MEM) */ static inline void acxmem_update_queue_indicator(acx_device_t *adev, int txqueue) { } -#endif +static inline txdesc_t* acx_advance_txdesc(acx_device_t *adev, + txdesc_t* txdesc, int inc) +{ return (txdesc_t*) NULL; } + +/* empty stub here, real one in merge.c */ +#define ACX_FREE_QUEUES(adev, _dir_) + +#endif /* !(CONFIG_ACX_MAC80211_PCI || CONFIG_ACX_MAC80211_MEM) */ -#if !defined(CONFIG_ACX_MAC80211_PCI) && !defined(CONFIG_ACX_MAC80211_MEM) -#define ACX_FREE_QUEUES(adev, _dir_) // empty stub here, real one in merge.c -#endif +#endif /* _MERGE_H_ */ -- 1.7.8.1 |
From: Jim C. <jim...@gm...> - 2012-05-08 17:14:47
|
Signed-off-by: Jim Cromie <jim...@gm...> --- mem-inlines.h | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/mem-inlines.h b/mem-inlines.h index 54fe4bc..fbebdb7 100644 --- a/mem-inlines.h +++ b/mem-inlines.h @@ -1,3 +1,6 @@ +#ifndef _MEM_INLINES_H_ +#define _MEM_INLINES_H_ + /* * Locking in mem * ================================================== @@ -378,3 +381,4 @@ INLINE_IO u16 read_slavemem16(acx_device_t *adev, u32 slave_address) return val; } +#endif /* _MEM_INLINES_H_ */ -- 1.7.8.1 |