Lines Matching +full:len +full:- +full:or +full:- +full:limit
9 * This program is free software; you can redistribute it and/or modify
11 * the Free Software Foundation; either version 2 of the License, or
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * Copyright (c) 2008-2009 Atheros Communications, Inc.
27 * Permission to use, copy, modify, and/or distribute this software for any
28 * purpose with or without fee is hereby granted, provided that the above
34 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
35 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
36 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
37 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
48 off += scnprintf(&buf[off], max - off, fmt, ##args)
55 ssize_t *len);
73 ar = file->private_data;
76 return -ENODEV;
79 if (!dfops->read)
80 return -ENOSYS;
82 if (dfops->read_bufsize) {
83 buf = vmalloc(dfops->read_bufsize);
85 return -ENOMEM;
88 mutex_lock(&ar->mutex);
89 if (!CHK_DEV_STATE(ar, dfops->req_dev_state)) {
90 err = -ENODEV;
95 res_buf = dfops->read(ar, buf, dfops->read_bufsize, &ret);
103 WARN_ON_ONCE(dfops->read_bufsize && (res_buf != buf));
107 mutex_unlock(&ar->mutex);
123 return -E2BIG;
125 ar = file->private_data;
128 return -ENODEV;
131 if (!dfops->write)
132 return -ENOSYS;
136 return -ENOMEM;
139 err = -EFAULT;
143 if (mutex_trylock(&ar->mutex) == 0) {
144 err = -EAGAIN;
148 if (!CHK_DEV_STATE(ar, dfops->req_dev_state)) {
149 err = -ENODEV;
153 err = dfops->write(ar, buf, count);
158 mutex_unlock(&ar->mutex);
205 ssize_t *len) \
207 ADD(buf, *len, buf_size, fmt "\n", ##value); \
213 size_t bufsize, ssize_t *len)
215 spin_lock_bh(&ar->mem_lock);
217 ADD(buf, *len, bufsize, "jar: [%*pb]\n",
218 ar->fw.mem_blocks, ar->mem_bitmap);
220 ADD(buf, *len, bufsize, "cookies: used:%3d / total:%3d, allocs:%d\n",
221 bitmap_weight(ar->mem_bitmap, ar->fw.mem_blocks),
222 ar->fw.mem_blocks, atomic_read(&ar->mem_allocs));
224 ADD(buf, *len, bufsize, "memory: free:%3d (%3d KiB) / total:%3d KiB)\n",
225 atomic_read(&ar->mem_free_blocks),
226 (atomic_read(&ar->mem_free_blocks) * ar->fw.mem_block_size) / 1024,
227 (ar->fw.mem_blocks * ar->fw.mem_block_size) / 1024);
229 spin_unlock_bh(&ar->mem_lock);
236 size_t bufsize, ssize_t *len)
238 ADD(buf, *len, bufsize, "%s QoS AC\n", modparam_noht ? "Hardware" :
241 ADD(buf, *len, bufsize, "[ VO VI "
244 spin_lock_bh(&ar->tx_stats_lock);
245 ADD(buf, *len, bufsize, "[length/limit length/limit "
246 "length/limit length/limit ]\n"
249 ar->tx_stats[0].len, ar->tx_stats[0].limit,
250 ar->tx_stats[1].len, ar->tx_stats[1].limit,
251 ar->tx_stats[2].len, ar->tx_stats[2].limit,
252 ar->tx_stats[3].len, ar->tx_stats[3].limit);
254 ADD(buf, *len, bufsize, "[ total total "
257 ar->tx_stats[0].count, ar->tx_stats[1].count,
258 ar->tx_stats[2].count, ar->tx_stats[3].count);
260 spin_unlock_bh(&ar->tx_stats_lock);
262 ADD(buf, *len, bufsize, "[ pend/waittx pend/waittx "
266 skb_queue_len(&ar->tx_pending[0]),
267 skb_queue_len(&ar->tx_status[0]),
268 skb_queue_len(&ar->tx_pending[1]),
269 skb_queue_len(&ar->tx_status[1]),
270 skb_queue_len(&ar->tx_pending[2]),
271 skb_queue_len(&ar->tx_status[2]),
272 skb_queue_len(&ar->tx_pending[3]),
273 skb_queue_len(&ar->tx_status[3]));
283 struct _carl9170_tx_superframe *txc = (void *) skb->data;
285 struct carl9170_tx_info *arinfo = (void *) txinfo->rate_driver_data;
286 struct ieee80211_hdr *hdr = (void *) txc->frame_data;
289 "pc:%.8x, to:%d ms\n", prefix, skb, txc->s.cookie,
291 le16_to_cpu(txc->f.mac_control), le32_to_cpu(txc->f.phy_control),
292 jiffies_to_msecs(jiffies - arinfo->timeout));
297 size_t bufsize, ssize_t *len)
305 list_for_each_entry_rcu(iter, &ar->tx_ampdu_list, list) {
307 spin_lock_bh(&iter->lock);
308 ADD(buf, *len, bufsize, "Entry: #%2d TID:%1d, BSN:%4d, "
310 cnt, iter->tid, iter->bsn, iter->snx, iter->hsn,
311 iter->max, iter->state, iter->counter);
313 ADD(buf, *len, bufsize, "\tWindow: [%*pb,W]\n",
314 CARL9170_BAW_BITS, iter->bitmap);
317 ((CARL9170_BAW_BITS - (offset) - 1) / 4 + \
318 (CARL9170_BAW_BITS - (offset) - 1) / 32 + 1)
321 ADD(buf, *len, bufsize, "\tBase Seq: %*s\n", offset, "T");
323 offset = BM_STR_OFF(SEQ_DIFF(iter->snx, iter->bsn));
324 ADD(buf, *len, bufsize, "\tNext Seq: %*s\n", offset, "W");
326 offset = BM_STR_OFF(((int)iter->hsn - (int)iter->bsn) %
328 ADD(buf, *len, bufsize, "\tLast Seq: %*s\n", offset, "N");
330 ADD(buf, *len, bufsize, "\tPre-Aggregation reorder buffer: "
331 " currently queued:%d\n", skb_queue_len(&iter->queue));
334 skb_queue_walk(&iter->queue, skb) {
339 len, bufsize);
343 spin_unlock_bh(&iter->lock);
353 ssize_t *len, size_t bufsize, struct sk_buff_head *queue)
359 spin_lock_bh(&queue->lock);
363 len, bufsize);
366 spin_unlock_bh(&queue->lock);
371 char *buf, size_t bufsize, ssize_t *len) \
373 carl9170_debugfs_queue_dump(ar, buf, len, bufsize, &ar->q[qi]); \
379 size_t bufsize, ssize_t *len)
381 ADD(buf, *len, bufsize, "psm state: %s\n", (ar->ps.off_override ?
382 "FORCE CAM" : (ar->ps.state ? "PSM" : "CAM")));
384 ADD(buf, *len, bufsize, "sleep duration: %d ms.\n", ar->ps.sleep_ms);
385 ADD(buf, *len, bufsize, "last power-state transition: %d ms ago.\n",
386 jiffies_to_msecs(jiffies - ar->ps.last_action));
387 ADD(buf, *len, bufsize, "last CAM->PSM transition: %d ms ago.\n",
388 jiffies_to_msecs(jiffies - ar->ps.last_slept));
395 size_t bufsize, ssize_t *len)
399 for (i = 0; i < ar->hw->queues; i++) {
400 ADD(buf, *len, bufsize, "TX queue [%d]: %10d max:%10d ms.\n",
401 i, ieee80211_queue_stopped(ar->hw, i) ?
402 jiffies_to_msecs(jiffies - ar->queue_stop_timeout[i]) : 0,
403 jiffies_to_msecs(ar->max_queue_stop_timeout[i]));
405 ar->max_queue_stop_timeout[i] = 0;
413 size_t bufsize, ssize_t *len)
419 *len = err;
423 ADD(buf, *len, bufsize, "Chain 0: %10d dBm, ext. chan.:%10d dBm\n",
424 ar->noise[0], ar->noise[2]);
425 ADD(buf, *len, bufsize, "Chain 2: %10d dBm, ext. chan.:%10d dBm\n",
426 ar->noise[1], ar->noise[3]);
433 size_t bufsize, ssize_t *len)
438 ADD(buf, *len, bufsize, "registered VIFs:%d \\ %d\n",
439 ar->vifs, ar->fw.vif_num);
441 ADD(buf, *len, bufsize, "VIF bitmap: [%*pb]\n",
442 ar->fw.vif_num, &ar->vif_bitmap);
445 list_for_each_entry_rcu(iter, &ar->vif_list, list) {
447 ADD(buf, *len, bufsize, "\t%d = [%s VIF, id:%d, type:%x "
449 "Master" : " Slave"), iter->id, vif->type, vif->addr,
450 iter->enable_beacon ? "beaconing " : "");
461 unsigned int __i, __err = -ENODEV; \
465 ar->debug.stats.name##_counter[__i] = 0; \
470 __tmp, ar->debug.stats.name##_counter); \
477 ar->debug.stats.name##_sum[__i] += \
478 ar->debug.stats.name##_counter[__i]; \
504 name##_regs[i].nreg, ar->debug.stats.name ##_sum[i],\
505 ar->debug.stats.name ##_counter[i]); \
533 ar->debug.stats.name##_counter[i]); \
550 return -E2BIG;
554 err = -EINVAL;
562 err = -EMSGSIZE;
567 err = -EADDRNOTAVAIL;
572 err = -EINVAL;
581 ar->debug.ring[ar->debug.ring_tail].reg = reg + (i << 2);
582 ar->debug.ring[ar->debug.ring_tail].value = tmp;
583 ar->debug.ring_tail++;
584 ar->debug.ring_tail %= CARL9170_DEBUG_RING_SIZE;
596 while (ar->debug.ring_head != ar->debug.ring_tail) {
598 ar->debug.ring[ar->debug.ring_head].reg,
599 ar->debug.ring[ar->debug.ring_head].value);
601 ar->debug.ring_head++;
602 ar->debug.ring_head %= CARL9170_DEBUG_RING_SIZE;
607 ar->debug.ring_head = ar->debug.ring_tail;
618 return -EINVAL;
622 ar->needs_full_reset = true;
627 err = -EAGAIN;
631 ar->needs_full_reset = false;
642 err = carl9170_set_channel(ar, ar->hw->conf.chandef.chan,
643 cfg80211_get_chandef_type(&ar->hw->conf.chandef));
650 return -EINVAL;
665 ar->restart_counter, ar->last_reason);
667 ar->total_chan_fail, ar->chan_fail);
669 ar->fw.err_counter);
671 ar->fw.bug_counter);
673 atomic_read(&ar->pending_restarts));
690 ADD(buf, *ret, bufsize, "ERP Setting: (%d) -> %s\n", ar->erp_mode,
691 erp_modes[ar->erp_mode]);
701 return -EINVAL;
705 return -EINVAL;
709 return -EINVAL;
711 ar->erp_mode = val;
727 return -E2BIG;
731 err = -EINVAL;
736 err = -EADDRNOTAVAIL;
741 err = -EINVAL;
769 atomic_read(&ar->tx_anch_urbs));
771 atomic_read(&ar->rx_anch_urbs));
773 atomic_read(&ar->rx_work_urbs));
775 atomic_read(&ar->rx_pool_urbs));
778 atomic_read(&ar->tx_total_queued));
780 atomic_read(&ar->tx_ampdu_scheduler));
783 atomic_read(&ar->tx_total_pending));
786 ar->tx_ampdu_list_len);
789 atomic_read(&ar->tx_ampdu_upload));
792 jiffies_to_msecs(jiffies - ar->tx_janitor_last_run));
794 DEBUGFS_READONLY_FILE(tx_dropped, 20, "%d", ar->tx_dropped);
796 DEBUGFS_READONLY_FILE(rx_dropped, 20, "%d", ar->rx_dropped);
798 DEBUGFS_READONLY_FILE(sniffer_enabled, 20, "%d", ar->sniffer_enabled);
800 ar->rx_software_decryption);
802 ar->current_factor);
804 ar->current_density);
806 DEBUGFS_READONLY_FILE(beacon_int, 20, "%d TU", ar->global_beacon_int);
807 DEBUGFS_READONLY_FILE(pretbtt, 20, "%d TU", ar->global_pretbtt);
811 ar->debug_dir = debugfs_create_dir(KBUILD_MODNAME,
812 ar->hw->wiphy->debugfsdir);
816 ar->debug_dir, ar, &carl_debugfs_##name ## _ops, \
881 debugfs_remove_recursive(ar->debug_dir);