diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/debug.c')
-rw-r--r-- | drivers/net/wireless/ath/ath5k/debug.c | 218 |
1 files changed, 108 insertions, 110 deletions
diff --git a/drivers/net/wireless/ath/ath5k/debug.c b/drivers/net/wireless/ath/ath5k/debug.c index 4edca7072d53..ccca724de173 100644 --- a/drivers/net/wireless/ath/ath5k/debug.c +++ b/drivers/net/wireless/ath/ath5k/debug.c | |||
@@ -157,10 +157,10 @@ static void *reg_next(struct seq_file *seq, void *p, loff_t *pos) | |||
157 | 157 | ||
158 | static int reg_show(struct seq_file *seq, void *p) | 158 | static int reg_show(struct seq_file *seq, void *p) |
159 | { | 159 | { |
160 | struct ath5k_softc *sc = seq->private; | 160 | struct ath5k_hw *ah = seq->private; |
161 | struct reg *r = p; | 161 | struct reg *r = p; |
162 | seq_printf(seq, "%-25s0x%08x\n", r->name, | 162 | seq_printf(seq, "%-25s0x%08x\n", r->name, |
163 | ath5k_hw_reg_read(sc->ah, r->addr)); | 163 | ath5k_hw_reg_read(ah, r->addr)); |
164 | return 0; | 164 | return 0; |
165 | } | 165 | } |
166 | 166 | ||
@@ -197,42 +197,41 @@ static const struct file_operations fops_registers = { | |||
197 | static ssize_t read_file_beacon(struct file *file, char __user *user_buf, | 197 | static ssize_t read_file_beacon(struct file *file, char __user *user_buf, |
198 | size_t count, loff_t *ppos) | 198 | size_t count, loff_t *ppos) |
199 | { | 199 | { |
200 | struct ath5k_softc *sc = file->private_data; | 200 | struct ath5k_hw *ah = file->private_data; |
201 | struct ath5k_hw *ah = sc->ah; | ||
202 | char buf[500]; | 201 | char buf[500]; |
203 | unsigned int len = 0; | 202 | unsigned int len = 0; |
204 | unsigned int v; | 203 | unsigned int v; |
205 | u64 tsf; | 204 | u64 tsf; |
206 | 205 | ||
207 | v = ath5k_hw_reg_read(sc->ah, AR5K_BEACON); | 206 | v = ath5k_hw_reg_read(ah, AR5K_BEACON); |
208 | len += snprintf(buf + len, sizeof(buf) - len, | 207 | len += snprintf(buf + len, sizeof(buf) - len, |
209 | "%-24s0x%08x\tintval: %d\tTIM: 0x%x\n", | 208 | "%-24s0x%08x\tintval: %d\tTIM: 0x%x\n", |
210 | "AR5K_BEACON", v, v & AR5K_BEACON_PERIOD, | 209 | "AR5K_BEACON", v, v & AR5K_BEACON_PERIOD, |
211 | (v & AR5K_BEACON_TIM) >> AR5K_BEACON_TIM_S); | 210 | (v & AR5K_BEACON_TIM) >> AR5K_BEACON_TIM_S); |
212 | 211 | ||
213 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\n", | 212 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\n", |
214 | "AR5K_LAST_TSTP", ath5k_hw_reg_read(sc->ah, AR5K_LAST_TSTP)); | 213 | "AR5K_LAST_TSTP", ath5k_hw_reg_read(ah, AR5K_LAST_TSTP)); |
215 | 214 | ||
216 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\n\n", | 215 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\n\n", |
217 | "AR5K_BEACON_CNT", ath5k_hw_reg_read(sc->ah, AR5K_BEACON_CNT)); | 216 | "AR5K_BEACON_CNT", ath5k_hw_reg_read(ah, AR5K_BEACON_CNT)); |
218 | 217 | ||
219 | v = ath5k_hw_reg_read(sc->ah, AR5K_TIMER0); | 218 | v = ath5k_hw_reg_read(ah, AR5K_TIMER0); |
220 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n", | 219 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n", |
221 | "AR5K_TIMER0 (TBTT)", v, v); | 220 | "AR5K_TIMER0 (TBTT)", v, v); |
222 | 221 | ||
223 | v = ath5k_hw_reg_read(sc->ah, AR5K_TIMER1); | 222 | v = ath5k_hw_reg_read(ah, AR5K_TIMER1); |
224 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n", | 223 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n", |
225 | "AR5K_TIMER1 (DMA)", v, v >> 3); | 224 | "AR5K_TIMER1 (DMA)", v, v >> 3); |
226 | 225 | ||
227 | v = ath5k_hw_reg_read(sc->ah, AR5K_TIMER2); | 226 | v = ath5k_hw_reg_read(ah, AR5K_TIMER2); |
228 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n", | 227 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n", |
229 | "AR5K_TIMER2 (SWBA)", v, v >> 3); | 228 | "AR5K_TIMER2 (SWBA)", v, v >> 3); |
230 | 229 | ||
231 | v = ath5k_hw_reg_read(sc->ah, AR5K_TIMER3); | 230 | v = ath5k_hw_reg_read(ah, AR5K_TIMER3); |
232 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n", | 231 | len += snprintf(buf + len, sizeof(buf) - len, "%-24s0x%08x\tTU: %08x\n", |
233 | "AR5K_TIMER3 (ATIM)", v, v); | 232 | "AR5K_TIMER3 (ATIM)", v, v); |
234 | 233 | ||
235 | tsf = ath5k_hw_get_tsf64(sc->ah); | 234 | tsf = ath5k_hw_get_tsf64(ah); |
236 | len += snprintf(buf + len, sizeof(buf) - len, | 235 | len += snprintf(buf + len, sizeof(buf) - len, |
237 | "TSF\t\t0x%016llx\tTU: %08x\n", | 236 | "TSF\t\t0x%016llx\tTU: %08x\n", |
238 | (unsigned long long)tsf, TSF_TO_TU(tsf)); | 237 | (unsigned long long)tsf, TSF_TO_TU(tsf)); |
@@ -247,8 +246,7 @@ static ssize_t write_file_beacon(struct file *file, | |||
247 | const char __user *userbuf, | 246 | const char __user *userbuf, |
248 | size_t count, loff_t *ppos) | 247 | size_t count, loff_t *ppos) |
249 | { | 248 | { |
250 | struct ath5k_softc *sc = file->private_data; | 249 | struct ath5k_hw *ah = file->private_data; |
251 | struct ath5k_hw *ah = sc->ah; | ||
252 | char buf[20]; | 250 | char buf[20]; |
253 | 251 | ||
254 | if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) | 252 | if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) |
@@ -279,9 +277,9 @@ static ssize_t write_file_reset(struct file *file, | |||
279 | const char __user *userbuf, | 277 | const char __user *userbuf, |
280 | size_t count, loff_t *ppos) | 278 | size_t count, loff_t *ppos) |
281 | { | 279 | { |
282 | struct ath5k_softc *sc = file->private_data; | 280 | struct ath5k_hw *ah = file->private_data; |
283 | ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "debug file triggered reset\n"); | 281 | ATH5K_DBG(ah, ATH5K_DEBUG_RESET, "debug file triggered reset\n"); |
284 | ieee80211_queue_work(sc->hw, &sc->reset_work); | 282 | ieee80211_queue_work(ah->hw, &ah->reset_work); |
285 | return count; | 283 | return count; |
286 | } | 284 | } |
287 | 285 | ||
@@ -318,23 +316,23 @@ static const struct { | |||
318 | static ssize_t read_file_debug(struct file *file, char __user *user_buf, | 316 | static ssize_t read_file_debug(struct file *file, char __user *user_buf, |
319 | size_t count, loff_t *ppos) | 317 | size_t count, loff_t *ppos) |
320 | { | 318 | { |
321 | struct ath5k_softc *sc = file->private_data; | 319 | struct ath5k_hw *ah = file->private_data; |
322 | char buf[700]; | 320 | char buf[700]; |
323 | unsigned int len = 0; | 321 | unsigned int len = 0; |
324 | unsigned int i; | 322 | unsigned int i; |
325 | 323 | ||
326 | len += snprintf(buf + len, sizeof(buf) - len, | 324 | len += snprintf(buf + len, sizeof(buf) - len, |
327 | "DEBUG LEVEL: 0x%08x\n\n", sc->debug.level); | 325 | "DEBUG LEVEL: 0x%08x\n\n", ah->debug.level); |
328 | 326 | ||
329 | for (i = 0; i < ARRAY_SIZE(dbg_info) - 1; i++) { | 327 | for (i = 0; i < ARRAY_SIZE(dbg_info) - 1; i++) { |
330 | len += snprintf(buf + len, sizeof(buf) - len, | 328 | len += snprintf(buf + len, sizeof(buf) - len, |
331 | "%10s %c 0x%08x - %s\n", dbg_info[i].name, | 329 | "%10s %c 0x%08x - %s\n", dbg_info[i].name, |
332 | sc->debug.level & dbg_info[i].level ? '+' : ' ', | 330 | ah->debug.level & dbg_info[i].level ? '+' : ' ', |
333 | dbg_info[i].level, dbg_info[i].desc); | 331 | dbg_info[i].level, dbg_info[i].desc); |
334 | } | 332 | } |
335 | len += snprintf(buf + len, sizeof(buf) - len, | 333 | len += snprintf(buf + len, sizeof(buf) - len, |
336 | "%10s %c 0x%08x - %s\n", dbg_info[i].name, | 334 | "%10s %c 0x%08x - %s\n", dbg_info[i].name, |
337 | sc->debug.level == dbg_info[i].level ? '+' : ' ', | 335 | ah->debug.level == dbg_info[i].level ? '+' : ' ', |
338 | dbg_info[i].level, dbg_info[i].desc); | 336 | dbg_info[i].level, dbg_info[i].desc); |
339 | 337 | ||
340 | if (len > sizeof(buf)) | 338 | if (len > sizeof(buf)) |
@@ -347,7 +345,7 @@ static ssize_t write_file_debug(struct file *file, | |||
347 | const char __user *userbuf, | 345 | const char __user *userbuf, |
348 | size_t count, loff_t *ppos) | 346 | size_t count, loff_t *ppos) |
349 | { | 347 | { |
350 | struct ath5k_softc *sc = file->private_data; | 348 | struct ath5k_hw *ah = file->private_data; |
351 | unsigned int i; | 349 | unsigned int i; |
352 | char buf[20]; | 350 | char buf[20]; |
353 | 351 | ||
@@ -357,7 +355,7 @@ static ssize_t write_file_debug(struct file *file, | |||
357 | for (i = 0; i < ARRAY_SIZE(dbg_info); i++) { | 355 | for (i = 0; i < ARRAY_SIZE(dbg_info); i++) { |
358 | if (strncmp(buf, dbg_info[i].name, | 356 | if (strncmp(buf, dbg_info[i].name, |
359 | strlen(dbg_info[i].name)) == 0) { | 357 | strlen(dbg_info[i].name)) == 0) { |
360 | sc->debug.level ^= dbg_info[i].level; /* toggle bit */ | 358 | ah->debug.level ^= dbg_info[i].level; /* toggle bit */ |
361 | break; | 359 | break; |
362 | } | 360 | } |
363 | } | 361 | } |
@@ -378,33 +376,33 @@ static const struct file_operations fops_debug = { | |||
378 | static ssize_t read_file_antenna(struct file *file, char __user *user_buf, | 376 | static ssize_t read_file_antenna(struct file *file, char __user *user_buf, |
379 | size_t count, loff_t *ppos) | 377 | size_t count, loff_t *ppos) |
380 | { | 378 | { |
381 | struct ath5k_softc *sc = file->private_data; | 379 | struct ath5k_hw *ah = file->private_data; |
382 | char buf[700]; | 380 | char buf[700]; |
383 | unsigned int len = 0; | 381 | unsigned int len = 0; |
384 | unsigned int i; | 382 | unsigned int i; |
385 | unsigned int v; | 383 | unsigned int v; |
386 | 384 | ||
387 | len += snprintf(buf + len, sizeof(buf) - len, "antenna mode\t%d\n", | 385 | len += snprintf(buf + len, sizeof(buf) - len, "antenna mode\t%d\n", |
388 | sc->ah->ah_ant_mode); | 386 | ah->ah_ant_mode); |
389 | len += snprintf(buf + len, sizeof(buf) - len, "default antenna\t%d\n", | 387 | len += snprintf(buf + len, sizeof(buf) - len, "default antenna\t%d\n", |
390 | sc->ah->ah_def_ant); | 388 | ah->ah_def_ant); |
391 | len += snprintf(buf + len, sizeof(buf) - len, "tx antenna\t%d\n", | 389 | len += snprintf(buf + len, sizeof(buf) - len, "tx antenna\t%d\n", |
392 | sc->ah->ah_tx_ant); | 390 | ah->ah_tx_ant); |
393 | 391 | ||
394 | len += snprintf(buf + len, sizeof(buf) - len, "\nANTENNA\t\tRX\tTX\n"); | 392 | len += snprintf(buf + len, sizeof(buf) - len, "\nANTENNA\t\tRX\tTX\n"); |
395 | for (i = 1; i < ARRAY_SIZE(sc->stats.antenna_rx); i++) { | 393 | for (i = 1; i < ARRAY_SIZE(ah->stats.antenna_rx); i++) { |
396 | len += snprintf(buf + len, sizeof(buf) - len, | 394 | len += snprintf(buf + len, sizeof(buf) - len, |
397 | "[antenna %d]\t%d\t%d\n", | 395 | "[antenna %d]\t%d\t%d\n", |
398 | i, sc->stats.antenna_rx[i], sc->stats.antenna_tx[i]); | 396 | i, ah->stats.antenna_rx[i], ah->stats.antenna_tx[i]); |
399 | } | 397 | } |
400 | len += snprintf(buf + len, sizeof(buf) - len, "[invalid]\t%d\t%d\n", | 398 | len += snprintf(buf + len, sizeof(buf) - len, "[invalid]\t%d\t%d\n", |
401 | sc->stats.antenna_rx[0], sc->stats.antenna_tx[0]); | 399 | ah->stats.antenna_rx[0], ah->stats.antenna_tx[0]); |
402 | 400 | ||
403 | v = ath5k_hw_reg_read(sc->ah, AR5K_DEFAULT_ANTENNA); | 401 | v = ath5k_hw_reg_read(ah, AR5K_DEFAULT_ANTENNA); |
404 | len += snprintf(buf + len, sizeof(buf) - len, | 402 | len += snprintf(buf + len, sizeof(buf) - len, |
405 | "\nAR5K_DEFAULT_ANTENNA\t0x%08x\n", v); | 403 | "\nAR5K_DEFAULT_ANTENNA\t0x%08x\n", v); |
406 | 404 | ||
407 | v = ath5k_hw_reg_read(sc->ah, AR5K_STA_ID1); | 405 | v = ath5k_hw_reg_read(ah, AR5K_STA_ID1); |
408 | len += snprintf(buf + len, sizeof(buf) - len, | 406 | len += snprintf(buf + len, sizeof(buf) - len, |
409 | "AR5K_STA_ID1_DEFAULT_ANTENNA\t%d\n", | 407 | "AR5K_STA_ID1_DEFAULT_ANTENNA\t%d\n", |
410 | (v & AR5K_STA_ID1_DEFAULT_ANTENNA) != 0); | 408 | (v & AR5K_STA_ID1_DEFAULT_ANTENNA) != 0); |
@@ -418,25 +416,25 @@ static ssize_t read_file_antenna(struct file *file, char __user *user_buf, | |||
418 | "AR5K_STA_ID1_SELFGEN_DEF_ANT\t%d\n", | 416 | "AR5K_STA_ID1_SELFGEN_DEF_ANT\t%d\n", |
419 | (v & AR5K_STA_ID1_SELFGEN_DEF_ANT) != 0); | 417 | (v & AR5K_STA_ID1_SELFGEN_DEF_ANT) != 0); |
420 | 418 | ||
421 | v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_AGCCTL); | 419 | v = ath5k_hw_reg_read(ah, AR5K_PHY_AGCCTL); |
422 | len += snprintf(buf + len, sizeof(buf) - len, | 420 | len += snprintf(buf + len, sizeof(buf) - len, |
423 | "\nAR5K_PHY_AGCCTL_OFDM_DIV_DIS\t%d\n", | 421 | "\nAR5K_PHY_AGCCTL_OFDM_DIV_DIS\t%d\n", |
424 | (v & AR5K_PHY_AGCCTL_OFDM_DIV_DIS) != 0); | 422 | (v & AR5K_PHY_AGCCTL_OFDM_DIV_DIS) != 0); |
425 | 423 | ||
426 | v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_RESTART); | 424 | v = ath5k_hw_reg_read(ah, AR5K_PHY_RESTART); |
427 | len += snprintf(buf + len, sizeof(buf) - len, | 425 | len += snprintf(buf + len, sizeof(buf) - len, |
428 | "AR5K_PHY_RESTART_DIV_GC\t\t%x\n", | 426 | "AR5K_PHY_RESTART_DIV_GC\t\t%x\n", |
429 | (v & AR5K_PHY_RESTART_DIV_GC) >> AR5K_PHY_RESTART_DIV_GC_S); | 427 | (v & AR5K_PHY_RESTART_DIV_GC) >> AR5K_PHY_RESTART_DIV_GC_S); |
430 | 428 | ||
431 | v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_FAST_ANT_DIV); | 429 | v = ath5k_hw_reg_read(ah, AR5K_PHY_FAST_ANT_DIV); |
432 | len += snprintf(buf + len, sizeof(buf) - len, | 430 | len += snprintf(buf + len, sizeof(buf) - len, |
433 | "AR5K_PHY_FAST_ANT_DIV_EN\t%d\n", | 431 | "AR5K_PHY_FAST_ANT_DIV_EN\t%d\n", |
434 | (v & AR5K_PHY_FAST_ANT_DIV_EN) != 0); | 432 | (v & AR5K_PHY_FAST_ANT_DIV_EN) != 0); |
435 | 433 | ||
436 | v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_ANT_SWITCH_TABLE_0); | 434 | v = ath5k_hw_reg_read(ah, AR5K_PHY_ANT_SWITCH_TABLE_0); |
437 | len += snprintf(buf + len, sizeof(buf) - len, | 435 | len += snprintf(buf + len, sizeof(buf) - len, |
438 | "\nAR5K_PHY_ANT_SWITCH_TABLE_0\t0x%08x\n", v); | 436 | "\nAR5K_PHY_ANT_SWITCH_TABLE_0\t0x%08x\n", v); |
439 | v = ath5k_hw_reg_read(sc->ah, AR5K_PHY_ANT_SWITCH_TABLE_1); | 437 | v = ath5k_hw_reg_read(ah, AR5K_PHY_ANT_SWITCH_TABLE_1); |
440 | len += snprintf(buf + len, sizeof(buf) - len, | 438 | len += snprintf(buf + len, sizeof(buf) - len, |
441 | "AR5K_PHY_ANT_SWITCH_TABLE_1\t0x%08x\n", v); | 439 | "AR5K_PHY_ANT_SWITCH_TABLE_1\t0x%08x\n", v); |
442 | 440 | ||
@@ -450,7 +448,7 @@ static ssize_t write_file_antenna(struct file *file, | |||
450 | const char __user *userbuf, | 448 | const char __user *userbuf, |
451 | size_t count, loff_t *ppos) | 449 | size_t count, loff_t *ppos) |
452 | { | 450 | { |
453 | struct ath5k_softc *sc = file->private_data; | 451 | struct ath5k_hw *ah = file->private_data; |
454 | unsigned int i; | 452 | unsigned int i; |
455 | char buf[20]; | 453 | char buf[20]; |
456 | 454 | ||
@@ -458,18 +456,18 @@ static ssize_t write_file_antenna(struct file *file, | |||
458 | return -EFAULT; | 456 | return -EFAULT; |
459 | 457 | ||
460 | if (strncmp(buf, "diversity", 9) == 0) { | 458 | if (strncmp(buf, "diversity", 9) == 0) { |
461 | ath5k_hw_set_antenna_mode(sc->ah, AR5K_ANTMODE_DEFAULT); | 459 | ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_DEFAULT); |
462 | printk(KERN_INFO "ath5k debug: enable diversity\n"); | 460 | printk(KERN_INFO "ath5k debug: enable diversity\n"); |
463 | } else if (strncmp(buf, "fixed-a", 7) == 0) { | 461 | } else if (strncmp(buf, "fixed-a", 7) == 0) { |
464 | ath5k_hw_set_antenna_mode(sc->ah, AR5K_ANTMODE_FIXED_A); | 462 | ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_FIXED_A); |
465 | printk(KERN_INFO "ath5k debugfs: fixed antenna A\n"); | 463 | printk(KERN_INFO "ath5k debugfs: fixed antenna A\n"); |
466 | } else if (strncmp(buf, "fixed-b", 7) == 0) { | 464 | } else if (strncmp(buf, "fixed-b", 7) == 0) { |
467 | ath5k_hw_set_antenna_mode(sc->ah, AR5K_ANTMODE_FIXED_B); | 465 | ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_FIXED_B); |
468 | printk(KERN_INFO "ath5k debug: fixed antenna B\n"); | 466 | printk(KERN_INFO "ath5k debug: fixed antenna B\n"); |
469 | } else if (strncmp(buf, "clear", 5) == 0) { | 467 | } else if (strncmp(buf, "clear", 5) == 0) { |
470 | for (i = 0; i < ARRAY_SIZE(sc->stats.antenna_rx); i++) { | 468 | for (i = 0; i < ARRAY_SIZE(ah->stats.antenna_rx); i++) { |
471 | sc->stats.antenna_rx[i] = 0; | 469 | ah->stats.antenna_rx[i] = 0; |
472 | sc->stats.antenna_tx[i] = 0; | 470 | ah->stats.antenna_tx[i] = 0; |
473 | } | 471 | } |
474 | printk(KERN_INFO "ath5k debug: cleared antenna stats\n"); | 472 | printk(KERN_INFO "ath5k debug: cleared antenna stats\n"); |
475 | } | 473 | } |
@@ -489,13 +487,13 @@ static const struct file_operations fops_antenna = { | |||
489 | static ssize_t read_file_misc(struct file *file, char __user *user_buf, | 487 | static ssize_t read_file_misc(struct file *file, char __user *user_buf, |
490 | size_t count, loff_t *ppos) | 488 | size_t count, loff_t *ppos) |
491 | { | 489 | { |
492 | struct ath5k_softc *sc = file->private_data; | 490 | struct ath5k_hw *ah = file->private_data; |
493 | char buf[700]; | 491 | char buf[700]; |
494 | unsigned int len = 0; | 492 | unsigned int len = 0; |
495 | u32 filt = ath5k_hw_get_rx_filter(sc->ah); | 493 | u32 filt = ath5k_hw_get_rx_filter(ah); |
496 | 494 | ||
497 | len += snprintf(buf + len, sizeof(buf) - len, "bssid-mask: %pM\n", | 495 | len += snprintf(buf + len, sizeof(buf) - len, "bssid-mask: %pM\n", |
498 | sc->bssidmask); | 496 | ah->bssidmask); |
499 | len += snprintf(buf + len, sizeof(buf) - len, "filter-flags: 0x%x ", | 497 | len += snprintf(buf + len, sizeof(buf) - len, "filter-flags: 0x%x ", |
500 | filt); | 498 | filt); |
501 | if (filt & AR5K_RX_FILTER_UCAST) | 499 | if (filt & AR5K_RX_FILTER_UCAST) |
@@ -524,7 +522,7 @@ static ssize_t read_file_misc(struct file *file, char __user *user_buf, | |||
524 | len += snprintf(buf + len, sizeof(buf) - len, " RADARERR-5211"); | 522 | len += snprintf(buf + len, sizeof(buf) - len, " RADARERR-5211"); |
525 | 523 | ||
526 | len += snprintf(buf + len, sizeof(buf) - len, "\nopmode: %s (%d)\n", | 524 | len += snprintf(buf + len, sizeof(buf) - len, "\nopmode: %s (%d)\n", |
527 | ath_opmode_to_string(sc->opmode), sc->opmode); | 525 | ath_opmode_to_string(ah->opmode), ah->opmode); |
528 | 526 | ||
529 | if (len > sizeof(buf)) | 527 | if (len > sizeof(buf)) |
530 | len = sizeof(buf); | 528 | len = sizeof(buf); |
@@ -544,8 +542,8 @@ static const struct file_operations fops_misc = { | |||
544 | static ssize_t read_file_frameerrors(struct file *file, char __user *user_buf, | 542 | static ssize_t read_file_frameerrors(struct file *file, char __user *user_buf, |
545 | size_t count, loff_t *ppos) | 543 | size_t count, loff_t *ppos) |
546 | { | 544 | { |
547 | struct ath5k_softc *sc = file->private_data; | 545 | struct ath5k_hw *ah = file->private_data; |
548 | struct ath5k_statistics *st = &sc->stats; | 546 | struct ath5k_statistics *st = &ah->stats; |
549 | char buf[700]; | 547 | char buf[700]; |
550 | unsigned int len = 0; | 548 | unsigned int len = 0; |
551 | int i; | 549 | int i; |
@@ -621,8 +619,8 @@ static ssize_t write_file_frameerrors(struct file *file, | |||
621 | const char __user *userbuf, | 619 | const char __user *userbuf, |
622 | size_t count, loff_t *ppos) | 620 | size_t count, loff_t *ppos) |
623 | { | 621 | { |
624 | struct ath5k_softc *sc = file->private_data; | 622 | struct ath5k_hw *ah = file->private_data; |
625 | struct ath5k_statistics *st = &sc->stats; | 623 | struct ath5k_statistics *st = &ah->stats; |
626 | char buf[20]; | 624 | char buf[20]; |
627 | 625 | ||
628 | if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) | 626 | if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) |
@@ -660,16 +658,16 @@ static const struct file_operations fops_frameerrors = { | |||
660 | static ssize_t read_file_ani(struct file *file, char __user *user_buf, | 658 | static ssize_t read_file_ani(struct file *file, char __user *user_buf, |
661 | size_t count, loff_t *ppos) | 659 | size_t count, loff_t *ppos) |
662 | { | 660 | { |
663 | struct ath5k_softc *sc = file->private_data; | 661 | struct ath5k_hw *ah = file->private_data; |
664 | struct ath5k_statistics *st = &sc->stats; | 662 | struct ath5k_statistics *st = &ah->stats; |
665 | struct ath5k_ani_state *as = &sc->ani_state; | 663 | struct ath5k_ani_state *as = &ah->ani_state; |
666 | 664 | ||
667 | char buf[700]; | 665 | char buf[700]; |
668 | unsigned int len = 0; | 666 | unsigned int len = 0; |
669 | 667 | ||
670 | len += snprintf(buf + len, sizeof(buf) - len, | 668 | len += snprintf(buf + len, sizeof(buf) - len, |
671 | "HW has PHY error counters:\t%s\n", | 669 | "HW has PHY error counters:\t%s\n", |
672 | sc->ah->ah_capabilities.cap_has_phyerr_counters ? | 670 | ah->ah_capabilities.cap_has_phyerr_counters ? |
673 | "yes" : "no"); | 671 | "yes" : "no"); |
674 | len += snprintf(buf + len, sizeof(buf) - len, | 672 | len += snprintf(buf + len, sizeof(buf) - len, |
675 | "HW max spur immunity level:\t%d\n", | 673 | "HW max spur immunity level:\t%d\n", |
@@ -718,7 +716,7 @@ static ssize_t read_file_ani(struct file *file, char __user *user_buf, | |||
718 | st->mib_intr); | 716 | st->mib_intr); |
719 | len += snprintf(buf + len, sizeof(buf) - len, | 717 | len += snprintf(buf + len, sizeof(buf) - len, |
720 | "beacon RSSI average:\t%d\n", | 718 | "beacon RSSI average:\t%d\n", |
721 | (int)ewma_read(&sc->ah->ah_beacon_rssi_avg)); | 719 | (int)ewma_read(&ah->ah_beacon_rssi_avg)); |
722 | 720 | ||
723 | #define CC_PRINT(_struct, _field) \ | 721 | #define CC_PRINT(_struct, _field) \ |
724 | _struct._field, \ | 722 | _struct._field, \ |
@@ -750,14 +748,14 @@ static ssize_t read_file_ani(struct file *file, char __user *user_buf, | |||
750 | as->sum_cck_errors); | 748 | as->sum_cck_errors); |
751 | len += snprintf(buf + len, sizeof(buf) - len, | 749 | len += snprintf(buf + len, sizeof(buf) - len, |
752 | "AR5K_PHYERR_CNT1\t%x\t(=%d)\n", | 750 | "AR5K_PHYERR_CNT1\t%x\t(=%d)\n", |
753 | ath5k_hw_reg_read(sc->ah, AR5K_PHYERR_CNT1), | 751 | ath5k_hw_reg_read(ah, AR5K_PHYERR_CNT1), |
754 | ATH5K_ANI_OFDM_TRIG_HIGH - (ATH5K_PHYERR_CNT_MAX - | 752 | ATH5K_ANI_OFDM_TRIG_HIGH - (ATH5K_PHYERR_CNT_MAX - |
755 | ath5k_hw_reg_read(sc->ah, AR5K_PHYERR_CNT1))); | 753 | ath5k_hw_reg_read(ah, AR5K_PHYERR_CNT1))); |
756 | len += snprintf(buf + len, sizeof(buf) - len, | 754 | len += snprintf(buf + len, sizeof(buf) - len, |
757 | "AR5K_PHYERR_CNT2\t%x\t(=%d)\n", | 755 | "AR5K_PHYERR_CNT2\t%x\t(=%d)\n", |
758 | ath5k_hw_reg_read(sc->ah, AR5K_PHYERR_CNT2), | 756 | ath5k_hw_reg_read(ah, AR5K_PHYERR_CNT2), |
759 | ATH5K_ANI_CCK_TRIG_HIGH - (ATH5K_PHYERR_CNT_MAX - | 757 | ATH5K_ANI_CCK_TRIG_HIGH - (ATH5K_PHYERR_CNT_MAX - |
760 | ath5k_hw_reg_read(sc->ah, AR5K_PHYERR_CNT2))); | 758 | ath5k_hw_reg_read(ah, AR5K_PHYERR_CNT2))); |
761 | 759 | ||
762 | if (len > sizeof(buf)) | 760 | if (len > sizeof(buf)) |
763 | len = sizeof(buf); | 761 | len = sizeof(buf); |
@@ -769,42 +767,42 @@ static ssize_t write_file_ani(struct file *file, | |||
769 | const char __user *userbuf, | 767 | const char __user *userbuf, |
770 | size_t count, loff_t *ppos) | 768 | size_t count, loff_t *ppos) |
771 | { | 769 | { |
772 | struct ath5k_softc *sc = file->private_data; | 770 | struct ath5k_hw *ah = file->private_data; |
773 | char buf[20]; | 771 | char buf[20]; |
774 | 772 | ||
775 | if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) | 773 | if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) |
776 | return -EFAULT; | 774 | return -EFAULT; |
777 | 775 | ||
778 | if (strncmp(buf, "sens-low", 8) == 0) { | 776 | if (strncmp(buf, "sens-low", 8) == 0) { |
779 | ath5k_ani_init(sc->ah, ATH5K_ANI_MODE_MANUAL_HIGH); | 777 | ath5k_ani_init(ah, ATH5K_ANI_MODE_MANUAL_HIGH); |
780 | } else if (strncmp(buf, "sens-high", 9) == 0) { | 778 | } else if (strncmp(buf, "sens-high", 9) == 0) { |
781 | ath5k_ani_init(sc->ah, ATH5K_ANI_MODE_MANUAL_LOW); | 779 | ath5k_ani_init(ah, ATH5K_ANI_MODE_MANUAL_LOW); |
782 | } else if (strncmp(buf, "ani-off", 7) == 0) { | 780 | } else if (strncmp(buf, "ani-off", 7) == 0) { |
783 | ath5k_ani_init(sc->ah, ATH5K_ANI_MODE_OFF); | 781 | ath5k_ani_init(ah, ATH5K_ANI_MODE_OFF); |
784 | } else if (strncmp(buf, "ani-on", 6) == 0) { | 782 | } else if (strncmp(buf, "ani-on", 6) == 0) { |
785 | ath5k_ani_init(sc->ah, ATH5K_ANI_MODE_AUTO); | 783 | ath5k_ani_init(ah, ATH5K_ANI_MODE_AUTO); |
786 | } else if (strncmp(buf, "noise-low", 9) == 0) { | 784 | } else if (strncmp(buf, "noise-low", 9) == 0) { |
787 | ath5k_ani_set_noise_immunity_level(sc->ah, 0); | 785 | ath5k_ani_set_noise_immunity_level(ah, 0); |
788 | } else if (strncmp(buf, "noise-high", 10) == 0) { | 786 | } else if (strncmp(buf, "noise-high", 10) == 0) { |
789 | ath5k_ani_set_noise_immunity_level(sc->ah, | 787 | ath5k_ani_set_noise_immunity_level(ah, |
790 | ATH5K_ANI_MAX_NOISE_IMM_LVL); | 788 | ATH5K_ANI_MAX_NOISE_IMM_LVL); |
791 | } else if (strncmp(buf, "spur-low", 8) == 0) { | 789 | } else if (strncmp(buf, "spur-low", 8) == 0) { |
792 | ath5k_ani_set_spur_immunity_level(sc->ah, 0); | 790 | ath5k_ani_set_spur_immunity_level(ah, 0); |
793 | } else if (strncmp(buf, "spur-high", 9) == 0) { | 791 | } else if (strncmp(buf, "spur-high", 9) == 0) { |
794 | ath5k_ani_set_spur_immunity_level(sc->ah, | 792 | ath5k_ani_set_spur_immunity_level(ah, |
795 | sc->ani_state.max_spur_level); | 793 | ah->ani_state.max_spur_level); |
796 | } else if (strncmp(buf, "fir-low", 7) == 0) { | 794 | } else if (strncmp(buf, "fir-low", 7) == 0) { |
797 | ath5k_ani_set_firstep_level(sc->ah, 0); | 795 | ath5k_ani_set_firstep_level(ah, 0); |
798 | } else if (strncmp(buf, "fir-high", 8) == 0) { | 796 | } else if (strncmp(buf, "fir-high", 8) == 0) { |
799 | ath5k_ani_set_firstep_level(sc->ah, ATH5K_ANI_MAX_FIRSTEP_LVL); | 797 | ath5k_ani_set_firstep_level(ah, ATH5K_ANI_MAX_FIRSTEP_LVL); |
800 | } else if (strncmp(buf, "ofdm-off", 8) == 0) { | 798 | } else if (strncmp(buf, "ofdm-off", 8) == 0) { |
801 | ath5k_ani_set_ofdm_weak_signal_detection(sc->ah, false); | 799 | ath5k_ani_set_ofdm_weak_signal_detection(ah, false); |
802 | } else if (strncmp(buf, "ofdm-on", 7) == 0) { | 800 | } else if (strncmp(buf, "ofdm-on", 7) == 0) { |
803 | ath5k_ani_set_ofdm_weak_signal_detection(sc->ah, true); | 801 | ath5k_ani_set_ofdm_weak_signal_detection(ah, true); |
804 | } else if (strncmp(buf, "cck-off", 7) == 0) { | 802 | } else if (strncmp(buf, "cck-off", 7) == 0) { |
805 | ath5k_ani_set_cck_weak_signal_detection(sc->ah, false); | 803 | ath5k_ani_set_cck_weak_signal_detection(ah, false); |
806 | } else if (strncmp(buf, "cck-on", 6) == 0) { | 804 | } else if (strncmp(buf, "cck-on", 6) == 0) { |
807 | ath5k_ani_set_cck_weak_signal_detection(sc->ah, true); | 805 | ath5k_ani_set_cck_weak_signal_detection(ah, true); |
808 | } | 806 | } |
809 | return count; | 807 | return count; |
810 | } | 808 | } |
@@ -823,7 +821,7 @@ static const struct file_operations fops_ani = { | |||
823 | static ssize_t read_file_queue(struct file *file, char __user *user_buf, | 821 | static ssize_t read_file_queue(struct file *file, char __user *user_buf, |
824 | size_t count, loff_t *ppos) | 822 | size_t count, loff_t *ppos) |
825 | { | 823 | { |
826 | struct ath5k_softc *sc = file->private_data; | 824 | struct ath5k_hw *ah = file->private_data; |
827 | char buf[700]; | 825 | char buf[700]; |
828 | unsigned int len = 0; | 826 | unsigned int len = 0; |
829 | 827 | ||
@@ -832,10 +830,10 @@ static ssize_t read_file_queue(struct file *file, char __user *user_buf, | |||
832 | int i, n; | 830 | int i, n; |
833 | 831 | ||
834 | len += snprintf(buf + len, sizeof(buf) - len, | 832 | len += snprintf(buf + len, sizeof(buf) - len, |
835 | "available txbuffers: %d\n", sc->txbuf_len); | 833 | "available txbuffers: %d\n", ah->txbuf_len); |
836 | 834 | ||
837 | for (i = 0; i < ARRAY_SIZE(sc->txqs); i++) { | 835 | for (i = 0; i < ARRAY_SIZE(ah->txqs); i++) { |
838 | txq = &sc->txqs[i]; | 836 | txq = &ah->txqs[i]; |
839 | 837 | ||
840 | len += snprintf(buf + len, sizeof(buf) - len, | 838 | len += snprintf(buf + len, sizeof(buf) - len, |
841 | "%02d: %ssetup\n", i, txq->setup ? "" : "not "); | 839 | "%02d: %ssetup\n", i, txq->setup ? "" : "not "); |
@@ -865,16 +863,16 @@ static ssize_t write_file_queue(struct file *file, | |||
865 | const char __user *userbuf, | 863 | const char __user *userbuf, |
866 | size_t count, loff_t *ppos) | 864 | size_t count, loff_t *ppos) |
867 | { | 865 | { |
868 | struct ath5k_softc *sc = file->private_data; | 866 | struct ath5k_hw *ah = file->private_data; |
869 | char buf[20]; | 867 | char buf[20]; |
870 | 868 | ||
871 | if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) | 869 | if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) |
872 | return -EFAULT; | 870 | return -EFAULT; |
873 | 871 | ||
874 | if (strncmp(buf, "start", 5) == 0) | 872 | if (strncmp(buf, "start", 5) == 0) |
875 | ieee80211_wake_queues(sc->hw); | 873 | ieee80211_wake_queues(ah->hw); |
876 | else if (strncmp(buf, "stop", 4) == 0) | 874 | else if (strncmp(buf, "stop", 4) == 0) |
877 | ieee80211_stop_queues(sc->hw); | 875 | ieee80211_stop_queues(ah->hw); |
878 | 876 | ||
879 | return count; | 877 | return count; |
880 | } | 878 | } |
@@ -890,57 +888,57 @@ static const struct file_operations fops_queue = { | |||
890 | 888 | ||
891 | 889 | ||
892 | void | 890 | void |
893 | ath5k_debug_init_device(struct ath5k_softc *sc) | 891 | ath5k_debug_init_device(struct ath5k_hw *ah) |
894 | { | 892 | { |
895 | struct dentry *phydir; | 893 | struct dentry *phydir; |
896 | 894 | ||
897 | sc->debug.level = ath5k_debug; | 895 | ah->debug.level = ath5k_debug; |
898 | 896 | ||
899 | phydir = debugfs_create_dir("ath5k", sc->hw->wiphy->debugfsdir); | 897 | phydir = debugfs_create_dir("ath5k", ah->hw->wiphy->debugfsdir); |
900 | if (!phydir) | 898 | if (!phydir) |
901 | return; | 899 | return; |
902 | 900 | ||
903 | debugfs_create_file("debug", S_IWUSR | S_IRUSR, phydir, sc, | 901 | debugfs_create_file("debug", S_IWUSR | S_IRUSR, phydir, ah, |
904 | &fops_debug); | 902 | &fops_debug); |
905 | 903 | ||
906 | debugfs_create_file("registers", S_IRUSR, phydir, sc, &fops_registers); | 904 | debugfs_create_file("registers", S_IRUSR, phydir, ah, &fops_registers); |
907 | 905 | ||
908 | debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, sc, | 906 | debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah, |
909 | &fops_beacon); | 907 | &fops_beacon); |
910 | 908 | ||
911 | debugfs_create_file("reset", S_IWUSR, phydir, sc, &fops_reset); | 909 | debugfs_create_file("reset", S_IWUSR, phydir, ah, &fops_reset); |
912 | 910 | ||
913 | debugfs_create_file("antenna", S_IWUSR | S_IRUSR, phydir, sc, | 911 | debugfs_create_file("antenna", S_IWUSR | S_IRUSR, phydir, ah, |
914 | &fops_antenna); | 912 | &fops_antenna); |
915 | 913 | ||
916 | debugfs_create_file("misc", S_IRUSR, phydir, sc, &fops_misc); | 914 | debugfs_create_file("misc", S_IRUSR, phydir, ah, &fops_misc); |
917 | 915 | ||
918 | debugfs_create_file("frameerrors", S_IWUSR | S_IRUSR, phydir, sc, | 916 | debugfs_create_file("frameerrors", S_IWUSR | S_IRUSR, phydir, ah, |
919 | &fops_frameerrors); | 917 | &fops_frameerrors); |
920 | 918 | ||
921 | debugfs_create_file("ani", S_IWUSR | S_IRUSR, phydir, sc, &fops_ani); | 919 | debugfs_create_file("ani", S_IWUSR | S_IRUSR, phydir, ah, &fops_ani); |
922 | 920 | ||
923 | debugfs_create_file("queue", S_IWUSR | S_IRUSR, phydir, sc, | 921 | debugfs_create_file("queue", S_IWUSR | S_IRUSR, phydir, ah, |
924 | &fops_queue); | 922 | &fops_queue); |
925 | 923 | ||
926 | debugfs_create_bool("32khz_clock", S_IWUSR | S_IRUSR, phydir, | 924 | debugfs_create_bool("32khz_clock", S_IWUSR | S_IRUSR, phydir, |
927 | &sc->ah->ah_use_32khz_clock); | 925 | &ah->ah_use_32khz_clock); |
928 | } | 926 | } |
929 | 927 | ||
930 | /* functions used in other places */ | 928 | /* functions used in other places */ |
931 | 929 | ||
932 | void | 930 | void |
933 | ath5k_debug_dump_bands(struct ath5k_softc *sc) | 931 | ath5k_debug_dump_bands(struct ath5k_hw *ah) |
934 | { | 932 | { |
935 | unsigned int b, i; | 933 | unsigned int b, i; |
936 | 934 | ||
937 | if (likely(!(sc->debug.level & ATH5K_DEBUG_DUMPBANDS))) | 935 | if (likely(!(ah->debug.level & ATH5K_DEBUG_DUMPBANDS))) |
938 | return; | 936 | return; |
939 | 937 | ||
940 | BUG_ON(!sc->sbands); | 938 | BUG_ON(!ah->sbands); |
941 | 939 | ||
942 | for (b = 0; b < IEEE80211_NUM_BANDS; b++) { | 940 | for (b = 0; b < IEEE80211_NUM_BANDS; b++) { |
943 | struct ieee80211_supported_band *band = &sc->sbands[b]; | 941 | struct ieee80211_supported_band *band = &ah->sbands[b]; |
944 | char bname[6]; | 942 | char bname[6]; |
945 | switch (band->band) { | 943 | switch (band->band) { |
946 | case IEEE80211_BAND_2GHZ: | 944 | case IEEE80211_BAND_2GHZ: |
@@ -990,41 +988,41 @@ ath5k_debug_printrxbuf(struct ath5k_buf *bf, int done, | |||
990 | } | 988 | } |
991 | 989 | ||
992 | void | 990 | void |
993 | ath5k_debug_printrxbuffs(struct ath5k_softc *sc, struct ath5k_hw *ah) | 991 | ath5k_debug_printrxbuffs(struct ath5k_hw *ah) |
994 | { | 992 | { |
995 | struct ath5k_desc *ds; | 993 | struct ath5k_desc *ds; |
996 | struct ath5k_buf *bf; | 994 | struct ath5k_buf *bf; |
997 | struct ath5k_rx_status rs = {}; | 995 | struct ath5k_rx_status rs = {}; |
998 | int status; | 996 | int status; |
999 | 997 | ||
1000 | if (likely(!(sc->debug.level & ATH5K_DEBUG_DESC))) | 998 | if (likely(!(ah->debug.level & ATH5K_DEBUG_DESC))) |
1001 | return; | 999 | return; |
1002 | 1000 | ||
1003 | printk(KERN_DEBUG "rxdp %x, rxlink %p\n", | 1001 | printk(KERN_DEBUG "rxdp %x, rxlink %p\n", |
1004 | ath5k_hw_get_rxdp(ah), sc->rxlink); | 1002 | ath5k_hw_get_rxdp(ah), ah->rxlink); |
1005 | 1003 | ||
1006 | spin_lock_bh(&sc->rxbuflock); | 1004 | spin_lock_bh(&ah->rxbuflock); |
1007 | list_for_each_entry(bf, &sc->rxbuf, list) { | 1005 | list_for_each_entry(bf, &ah->rxbuf, list) { |
1008 | ds = bf->desc; | 1006 | ds = bf->desc; |
1009 | status = ah->ah_proc_rx_desc(ah, ds, &rs); | 1007 | status = ah->ah_proc_rx_desc(ah, ds, &rs); |
1010 | if (!status) | 1008 | if (!status) |
1011 | ath5k_debug_printrxbuf(bf, status == 0, &rs); | 1009 | ath5k_debug_printrxbuf(bf, status == 0, &rs); |
1012 | } | 1010 | } |
1013 | spin_unlock_bh(&sc->rxbuflock); | 1011 | spin_unlock_bh(&ah->rxbuflock); |
1014 | } | 1012 | } |
1015 | 1013 | ||
1016 | void | 1014 | void |
1017 | ath5k_debug_printtxbuf(struct ath5k_softc *sc, struct ath5k_buf *bf) | 1015 | ath5k_debug_printtxbuf(struct ath5k_hw *ah, struct ath5k_buf *bf) |
1018 | { | 1016 | { |
1019 | struct ath5k_desc *ds = bf->desc; | 1017 | struct ath5k_desc *ds = bf->desc; |
1020 | struct ath5k_hw_5212_tx_desc *td = &ds->ud.ds_tx5212; | 1018 | struct ath5k_hw_5212_tx_desc *td = &ds->ud.ds_tx5212; |
1021 | struct ath5k_tx_status ts = {}; | 1019 | struct ath5k_tx_status ts = {}; |
1022 | int done; | 1020 | int done; |
1023 | 1021 | ||
1024 | if (likely(!(sc->debug.level & ATH5K_DEBUG_DESC))) | 1022 | if (likely(!(ah->debug.level & ATH5K_DEBUG_DESC))) |
1025 | return; | 1023 | return; |
1026 | 1024 | ||
1027 | done = sc->ah->ah_proc_tx_desc(sc->ah, bf->desc, &ts); | 1025 | done = ah->ah_proc_tx_desc(ah, bf->desc, &ts); |
1028 | 1026 | ||
1029 | printk(KERN_DEBUG "T (%p %llx) %08x %08x %08x %08x %08x %08x %08x " | 1027 | printk(KERN_DEBUG "T (%p %llx) %08x %08x %08x %08x %08x %08x %08x " |
1030 | "%08x %c\n", ds, (unsigned long long)bf->daddr, ds->ds_link, | 1028 | "%08x %c\n", ds, (unsigned long long)bf->daddr, ds->ds_link, |