Lines Matching refs:wlfc

79 _dhd_wlfc_bprint(athost_wl_status_info_t* wlfc, const char *fmt, ...)  in _dhd_wlfc_bprint()  argument
86 if (!wlfc || !wlfc->log_buf) { in _dhd_wlfc_bprint()
93 buf = wlfc->log_buf + wlfc->log_buf_offset; in _dhd_wlfc_bprint()
94 size = WLFC_LOG_BUF_SIZE -1 - wlfc->log_buf_offset; in _dhd_wlfc_bprint()
107 wlfc->log_buf_offset += r; in _dhd_wlfc_bprint()
110 if ((wlfc->log_buf_offset >= (WLFC_LOG_BUF_SIZE -1)) || bRetry) { in _dhd_wlfc_bprint()
111 wlfc->log_buf[wlfc->log_buf_offset] = 0; in _dhd_wlfc_bprint()
112 wlfc->log_buf_offset = 0; in _dhd_wlfc_bprint()
113 if (!wlfc->log_buf_full) { in _dhd_wlfc_bprint()
114 wlfc->log_buf_full = TRUE; in _dhd_wlfc_bprint()
140 _dhd_wlfc_print_log(athost_wl_status_info_t* wlfc) in _dhd_wlfc_print_log() argument
142 if (!wlfc || !wlfc->log_buf) { in _dhd_wlfc_print_log()
147 __FUNCTION__, wlfc->log_buf_full, wlfc->log_buf_offset); in _dhd_wlfc_print_log()
148 if (wlfc->log_buf_full) { in _dhd_wlfc_print_log()
149 _dhd_wlfc_print_1k_buf(wlfc->log_buf + wlfc->log_buf_offset, in _dhd_wlfc_print_log()
150 WLFC_LOG_BUF_SIZE - wlfc->log_buf_offset); in _dhd_wlfc_print_log()
152 wlfc->log_buf[wlfc->log_buf_offset] = 0; in _dhd_wlfc_print_log()
153 _dhd_wlfc_print_1k_buf(wlfc->log_buf, wlfc->log_buf_offset); in _dhd_wlfc_print_log()
156 wlfc->log_buf_offset = 0; in _dhd_wlfc_print_log()
157 wlfc->log_buf_full = FALSE; in _dhd_wlfc_print_log()
162 _dhd_wlfc_check_send_order(athost_wl_status_info_t* wlfc, wlfc_mac_descriptor_t* entry, void* p) in _dhd_wlfc_check_send_order() argument
172 _dhd_wlfc_print_log(wlfc); in _dhd_wlfc_check_send_order()
181 _dhd_wlfc_check_complete_order(athost_wl_status_info_t* wlfc, wlfc_mac_descriptor_t* entry, void* p) in _dhd_wlfc_check_complete_order() argument
1611 _dhd_wlfc_return_implied_credit(athost_wl_status_info_t* wlfc, void* pkt) in _dhd_wlfc_return_implied_credit() argument
1616 if (!wlfc || !pkt) { in _dhd_wlfc_return_implied_credit()
1620 dhdp = (dhd_pub_t *)(wlfc->dhdp); in _dhd_wlfc_return_implied_credit()
1631 if (wlfc->credits_borrowed[fifo_id][lender] > 0) { in _dhd_wlfc_return_implied_credit()
1632 wlfc->FIFO_credit[lender]++; in _dhd_wlfc_return_implied_credit()
1633 wlfc->credits_borrowed[fifo_id][lender]--; in _dhd_wlfc_return_implied_credit()
1640 wlfc->FIFO_credit[fifo_id]++; in _dhd_wlfc_return_implied_credit()
1654 _dhd_wlfc_hanger_free_pkt(athost_wl_status_info_t* wlfc, uint32 slot_id, uint8 pkt_state, in _dhd_wlfc_hanger_free_pkt() argument
1660 if (!wlfc) in _dhd_wlfc_hanger_free_pkt()
1663 hanger = (wlfc_hanger_t*)wlfc->hanger; in _dhd_wlfc_hanger_free_pkt()
1681 int ret = _dhd_wlfc_hanger_poppkt(wlfc->hanger, slot_id, &p, TRUE); in _dhd_wlfc_hanger_free_pkt()
1692 wlfc->pkt_cnt_in_drv[DHD_PKTTAG_IF(PKTTAG(p))] in _dhd_wlfc_hanger_free_pkt()
1694 wlfc->stats.pktout++; in _dhd_wlfc_hanger_free_pkt()
1695 dhd_txcomplete((dhd_pub_t *)wlfc->dhdp, p, item->pkt_txstatus); in _dhd_wlfc_hanger_free_pkt()
1696 PKTFREE(wlfc->osh, p, TRUE); in _dhd_wlfc_hanger_free_pkt()
1869 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_cleanup_txq() local
1870 wlfc_hanger_t* h = (wlfc_hanger_t*)wlfc->hanger; in _dhd_wlfc_cleanup_txq()
1897 entry = _dhd_wlfc_find_table_entry(wlfc, pkt); in _dhd_wlfc_cleanup_txq()
1913 _dhd_wlfc_bprint(wlfc, "[sc]-"); in _dhd_wlfc_cleanup_txq()
1916 _dhd_wlfc_return_implied_credit(wlfc, pkt); in _dhd_wlfc_cleanup_txq()
1917 wlfc->pkt_cnt_in_drv[DHD_PKTTAG_IF(PKTTAG(pkt))][DHD_PKTTAG_FIFO(PKTTAG(pkt))]--; in _dhd_wlfc_cleanup_txq()
1918 wlfc->stats.pktout++; in _dhd_wlfc_cleanup_txq()
1919 wlfc->stats.cleanup_txq_cnt++; in _dhd_wlfc_cleanup_txq()
1921 PKTFREE(wlfc->osh, pkt, TRUE); in _dhd_wlfc_cleanup_txq()
1933 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_cleanup() local
1935 wlfc_hanger_t* h = (wlfc_hanger_t*)wlfc->hanger; in _dhd_wlfc_cleanup()
1937 wlfc->stats.cleanup_txq_cnt = 0; in _dhd_wlfc_cleanup()
1938 wlfc->stats.cleanup_psq_cnt = 0; in _dhd_wlfc_cleanup()
1939 wlfc->stats.cleanup_fw_cnt = 0; in _dhd_wlfc_cleanup()
1950 total_entries = sizeof(wlfc->destination_entries)/sizeof(wlfc_mac_descriptor_t); in _dhd_wlfc_cleanup()
1951 table = (wlfc_mac_descriptor_t*)&wlfc->destination_entries; in _dhd_wlfc_cleanup()
1959 _dhd_wlfc_pktq_flush(wlfc, &table[i].psq, TRUE, in _dhd_wlfc_cleanup()
1965 _dhd_wlfc_pktq_flush(wlfc, &table[i].afq, TRUE, in _dhd_wlfc_cleanup()
1969 if ((fn == NULL) && (&table[i] != &wlfc->destination_entries.other)) { in _dhd_wlfc_cleanup()
2439 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_compressed_txstatus_update() local
2458 wlfc->stats.txstatus_in += len; in _dhd_wlfc_compressed_txstatus_update()
2461 wlfc->stats.pkt_freed += len; in _dhd_wlfc_compressed_txstatus_update()
2463 wlfc->stats.pkt_freed += len; in _dhd_wlfc_compressed_txstatus_update()
2465 wlfc->stats.d11_suppress += len; in _dhd_wlfc_compressed_txstatus_update()
2468 wlfc->stats.wl_suppress += len; in _dhd_wlfc_compressed_txstatus_update()
2471 wlfc->stats.wlc_tossed_pkts += len; in _dhd_wlfc_compressed_txstatus_update()
2473 wlfc->stats.pkt_freed += len; in _dhd_wlfc_compressed_txstatus_update()
2475 wlfc->stats.pkt_exptime += len; in _dhd_wlfc_compressed_txstatus_update()
2477 wlfc->stats.pkt_dropped += len; in _dhd_wlfc_compressed_txstatus_update()
2495 ret = _dhd_wlfc_deque_afq(wlfc, hslot, hcnt, fifo_id, &pktbuf); in _dhd_wlfc_compressed_txstatus_update()
2499 ret = _dhd_wlfc_hanger_poppkt(wlfc->hanger, hslot, &pktbuf, FALSE); in _dhd_wlfc_compressed_txstatus_update()
2501 _dhd_wlfc_hanger_free_pkt(wlfc, hslot, in _dhd_wlfc_compressed_txstatus_update()
2505 wlfc_hanger_t* h = (wlfc_hanger_t*)wlfc->hanger; in _dhd_wlfc_compressed_txstatus_update()
2525 entry = _dhd_wlfc_find_table_entry(wlfc, pktbuf); in _dhd_wlfc_compressed_txstatus_update()
2542 _dhd_wlfc_bprint(wlfc, "[ss%u.%u.%u]-", in _dhd_wlfc_compressed_txstatus_update()
2543 (uint8)(entry - &wlfc->destination_entries.nodes[0]), in _dhd_wlfc_compressed_txstatus_update()
2562 old_t = ((wlfc_hanger_t*)(wlfc->hanger))->items[hslot].push_time; in _dhd_wlfc_compressed_txstatus_update()
2564 wlfc->stats.latency_sample_count++; in _dhd_wlfc_compressed_txstatus_update()
2569 wlfc->stats.total_status_latency += delta; in _dhd_wlfc_compressed_txstatus_update()
2570 wlfc->stats.latency_most_recent = delta; in _dhd_wlfc_compressed_txstatus_update()
2572 wlfc->stats.deltas[wlfc->stats.idx_delta++] = delta; in _dhd_wlfc_compressed_txstatus_update()
2573 if (wlfc->stats.idx_delta == sizeof(wlfc->stats.deltas)/sizeof(uint32)) in _dhd_wlfc_compressed_txstatus_update()
2574 wlfc->stats.idx_delta = 0; in _dhd_wlfc_compressed_txstatus_update()
2580 _dhd_wlfc_return_implied_credit(wlfc, pktbuf); in _dhd_wlfc_compressed_txstatus_update()
2607 ret = _dhd_wlfc_enque_suppressed(wlfc, fifo_id, pktbuf); in _dhd_wlfc_compressed_txstatus_update()
2610 _dhd_wlfc_bprint(wlfc, "f%u.%u.%u-", in _dhd_wlfc_compressed_txstatus_update()
2611 (uint8)(entry - &wlfc->destination_entries.nodes[0]), in _dhd_wlfc_compressed_txstatus_update()
2614 _dhd_wlfc_check_complete_order(wlfc, entry, pktbuf); in _dhd_wlfc_compressed_txstatus_update()
2624 _dhd_wlfc_hanger_mark_suppressed(wlfc->hanger, hslot, gen); in _dhd_wlfc_compressed_txstatus_update()
2627 _dhd_wlfc_bprint(wlfc, "r%u.%u.%u.%u-", in _dhd_wlfc_compressed_txstatus_update()
2629 (uint8)(entry - &wlfc->destination_entries.nodes[0]), in _dhd_wlfc_compressed_txstatus_update()
2633 _dhd_wlfc_bprint(wlfc, "%u.%u-", seq_fromfw, seq_num); in _dhd_wlfc_compressed_txstatus_update()
2640 _dhd_wlfc_bprint(wlfc, "c%u.%u.%u.%u-", in _dhd_wlfc_compressed_txstatus_update()
2642 (uint8)(entry - &wlfc->destination_entries.nodes[0]), in _dhd_wlfc_compressed_txstatus_update()
2645 _dhd_wlfc_check_complete_order(wlfc, entry, pktbuf); in _dhd_wlfc_compressed_txstatus_update()
2651 _dhd_wlfc_hanger_free_pkt(wlfc, hslot, in _dhd_wlfc_compressed_txstatus_update()
2655 wlfc->pkt_cnt_in_drv[DHD_PKTTAG_IF(PKTTAG(pktbuf))] in _dhd_wlfc_compressed_txstatus_update()
2657 wlfc->stats.pktout++; in _dhd_wlfc_compressed_txstatus_update()
2659 PKTFREE(wlfc->osh, pktbuf, TRUE); in _dhd_wlfc_compressed_txstatus_update()
2672 _dhd_wlfc_bprint(wlfc, "[sc]-"); in _dhd_wlfc_compressed_txstatus_update()
2700 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_fifocreditback_indicate() local
2703 wlfc->stats.fifo_credits_back[i] += credits[i]; in _dhd_wlfc_fifocreditback_indicate()
2713 if (wlfc->credits_borrowed[i][lender] > 0) { in _dhd_wlfc_fifocreditback_indicate()
2714 if (credits[i] >= wlfc->credits_borrowed[i][lender]) { in _dhd_wlfc_fifocreditback_indicate()
2716 (uint8)wlfc->credits_borrowed[i][lender]; in _dhd_wlfc_fifocreditback_indicate()
2717 wlfc->FIFO_credit[lender] += in _dhd_wlfc_fifocreditback_indicate()
2718 wlfc->credits_borrowed[i][lender]; in _dhd_wlfc_fifocreditback_indicate()
2719 wlfc->credits_borrowed[i][lender] = 0; in _dhd_wlfc_fifocreditback_indicate()
2721 wlfc->credits_borrowed[i][lender] -= credits[i]; in _dhd_wlfc_fifocreditback_indicate()
2722 wlfc->FIFO_credit[lender] += credits[i]; in _dhd_wlfc_fifocreditback_indicate()
2730 wlfc->FIFO_credit[i] += credits[i]; in _dhd_wlfc_fifocreditback_indicate()
2733 if (wlfc->FIFO_credit[i] > wlfc->Init_FIFO_credit[i]) { in _dhd_wlfc_fifocreditback_indicate()
2734 wlfc->FIFO_credit[i] = wlfc->Init_FIFO_credit[i]; in _dhd_wlfc_fifocreditback_indicate()
2751 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_suppress_txq() local
2780 entry = _dhd_wlfc_find_table_entry(wlfc, pkt); in _dhd_wlfc_suppress_txq()
2810 _dhd_wlfc_enque_afq(wlfc, pkt); in _dhd_wlfc_suppress_txq()
2850 _dhd_wlfc_add_requested_entry(athost_wl_status_info_t* wlfc, wlfc_mac_descriptor_t* entry) in _dhd_wlfc_add_requested_entry() argument
2854 if (!wlfc || !entry) { in _dhd_wlfc_add_requested_entry()
2858 for (i = 0; i < wlfc->requested_entry_count; i++) { in _dhd_wlfc_add_requested_entry()
2859 if (entry == wlfc->requested_entry[i]) { in _dhd_wlfc_add_requested_entry()
2864 if (i == wlfc->requested_entry_count) { in _dhd_wlfc_add_requested_entry()
2866 ASSERT(wlfc->requested_entry_count <= (WLFC_MAC_DESC_TABLE_SIZE-1)); in _dhd_wlfc_add_requested_entry()
2867 wlfc->requested_entry[wlfc->requested_entry_count++] = entry; in _dhd_wlfc_add_requested_entry()
2873 _dhd_wlfc_remove_requested_entry(athost_wl_status_info_t* wlfc, wlfc_mac_descriptor_t* entry) in _dhd_wlfc_remove_requested_entry() argument
2877 if (!wlfc || !entry) { in _dhd_wlfc_remove_requested_entry()
2881 for (i = 0; i < wlfc->requested_entry_count; i++) { in _dhd_wlfc_remove_requested_entry()
2882 if (entry == wlfc->requested_entry[i]) { in _dhd_wlfc_remove_requested_entry()
2887 if (i < wlfc->requested_entry_count) { in _dhd_wlfc_remove_requested_entry()
2889 ASSERT(wlfc->requested_entry_count > 0); in _dhd_wlfc_remove_requested_entry()
2890 wlfc->requested_entry_count--; in _dhd_wlfc_remove_requested_entry()
2891 if (i != wlfc->requested_entry_count) { in _dhd_wlfc_remove_requested_entry()
2892 wlfc->requested_entry[i] = in _dhd_wlfc_remove_requested_entry()
2893 wlfc->requested_entry[wlfc->requested_entry_count]; in _dhd_wlfc_remove_requested_entry()
2895 wlfc->requested_entry[wlfc->requested_entry_count] = NULL; in _dhd_wlfc_remove_requested_entry()
2904 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_mac_table_update() local
2916 table = wlfc->destination_entries.nodes; in _dhd_wlfc_mac_table_update()
2921 _dhd_wlfc_remove_requested_entry(wlfc, &table[table_index]); in _dhd_wlfc_mac_table_update()
2930 rc = _dhd_wlfc_mac_entry_update(wlfc, &table[existing_index], in _dhd_wlfc_mac_table_update()
2939 rc = _dhd_wlfc_mac_entry_update(wlfc, &table[table_index], in _dhd_wlfc_mac_table_update()
2941 wlfc->destination_entries.interfaces[ifid].iftype, in _dhd_wlfc_mac_table_update()
2945 wlfc->stats.mac_update_failed++; in _dhd_wlfc_mac_table_update()
2951 rc = _dhd_wlfc_mac_entry_update(wlfc, &table[table_index], in _dhd_wlfc_mac_table_update()
2953 wlfc->destination_entries.interfaces[ifid].iftype, in _dhd_wlfc_mac_table_update()
2957 wlfc->stats.mac_update_failed++; in _dhd_wlfc_mac_table_update()
2969 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_psmode_update() local
2975 table = wlfc->destination_entries.nodes; in _dhd_wlfc_psmode_update()
2989 _dhd_wlfc_remove_requested_entry(wlfc, desc); in _dhd_wlfc_psmode_update()
2991 _dhd_wlfc_bprint(wlfc, "[op%u.%u]-", in _dhd_wlfc_psmode_update()
2992 (uint8)(table - &wlfc->destination_entries.nodes[0]), in _dhd_wlfc_psmode_update()
2999 _dhd_wlfc_bprint(wlfc, "[cl%u.%u]-", in _dhd_wlfc_psmode_update()
3000 (uint8)(table - &wlfc->destination_entries.nodes[0]), in _dhd_wlfc_psmode_update()
3005 _dhd_wlfc_traffic_pending_check(wlfc, desc, i); in _dhd_wlfc_psmode_update()
3009 wlfc->stats.psmode_update_failed++; in _dhd_wlfc_psmode_update()
3020 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_interface_update() local
3028 table = wlfc->destination_entries.interfaces; in _dhd_wlfc_interface_update()
3039 _dhd_wlfc_bprint(wlfc, "[op%u.%u]-", in _dhd_wlfc_interface_update()
3040 (uint8)(table - &wlfc->destination_entries.nodes[0]), in _dhd_wlfc_interface_update()
3047 _dhd_wlfc_bprint(wlfc, "[cl%u.%u]-", in _dhd_wlfc_interface_update()
3048 (uint8)(table - &wlfc->destination_entries.nodes[0]), in _dhd_wlfc_interface_update()
3055 wlfc->stats.interface_update_failed++; in _dhd_wlfc_interface_update()
3065 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_credit_request() local
3071 table = wlfc->destination_entries.nodes; in _dhd_wlfc_credit_request()
3081 _dhd_wlfc_add_requested_entry(wlfc, desc); in _dhd_wlfc_credit_request()
3088 wlfc->stats.credit_request_failed++; in _dhd_wlfc_credit_request()
3098 athost_wl_status_info_t* wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in _dhd_wlfc_packet_request() local
3104 table = wlfc->destination_entries.nodes; in _dhd_wlfc_packet_request()
3114 _dhd_wlfc_add_requested_entry(wlfc, desc); in _dhd_wlfc_packet_request()
3121 wlfc->stats.packet_request_failed++; in _dhd_wlfc_packet_request()
3182 athost_wl_status_info_t* wlfc; in dhd_wlfc_enable() local
3205 wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in dhd_wlfc_enable()
3206 memset(wlfc, 0, sizeof(athost_wl_status_info_t)); in dhd_wlfc_enable()
3209 wlfc->osh = dhd->osh; in dhd_wlfc_enable()
3210 wlfc->dhdp = dhd; in dhd_wlfc_enable()
3212 wlfc->max_release_count = WLFC_MAX_RELEASE_CNT; in dhd_wlfc_enable()
3215 wlfc->hanger = _dhd_wlfc_hanger_create(dhd, WLFC_HANGER_MAXITEMS); in dhd_wlfc_enable()
3216 if (wlfc->hanger == NULL) { in dhd_wlfc_enable()
3236 wlfc->hostif_flow_state[i] = OFF; in dhd_wlfc_enable()
3239 _dhd_wlfc_mac_entry_update(wlfc, &wlfc->destination_entries.other, in dhd_wlfc_enable()
3242 wlfc->allow_credit_borrow = 0; in dhd_wlfc_enable()
3243 wlfc->single_ac = 0; in dhd_wlfc_enable()
3244 wlfc->single_ac_timestamp = 0; in dhd_wlfc_enable()
3247 wlfc->log_buf = MALLOC(dhd->osh, WLFC_LOG_BUF_SIZE); in dhd_wlfc_enable()
3248 wlfc->log_buf[WLFC_LOG_BUF_SIZE - 1] = 0; in dhd_wlfc_enable()
3249 wlfc->log_buf_offset = 0; in dhd_wlfc_enable()
3250 wlfc->log_buf_full = FALSE; in dhd_wlfc_enable()
3323 athost_wl_status_info_t* wlfc = NULL; in dhd_wlfc_parse_header_info() local
3338 wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in dhd_wlfc_parse_header_info()
3369 if (wlfc == NULL) { in dhd_wlfc_parse_header_info()
3419 if (remainder != 0 && wlfc) { in dhd_wlfc_parse_header_info()
3421 wlfc->stats.tlv_parse_failed++; in dhd_wlfc_parse_header_info()
3425 if (wlfc) in dhd_wlfc_parse_header_info()
3426 wlfc->stats.dhd_hdrpulls++; in dhd_wlfc_parse_header_info()
3836 athost_wl_status_info_t* wlfc; in dhd_wlfc_txcomplete() local
3854 wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in dhd_wlfc_txcomplete()
3857 wlfc->stats.signal_only_pkts_freed++; in dhd_wlfc_txcomplete()
3860 _dhd_wlfc_pullheader(wlfc, txp); in dhd_wlfc_txcomplete()
3861 PKTFREE(wlfc->osh, txp, TRUE); in dhd_wlfc_txcomplete()
3865 entry = _dhd_wlfc_find_table_entry(wlfc, txp); in dhd_wlfc_txcomplete()
3872 _dhd_wlfc_hanger_poppkt(wlfc->hanger, WL_TXSTATUS_GET_HSLOT( in dhd_wlfc_txcomplete()
3881 _dhd_wlfc_return_implied_credit(wlfc, txp); in dhd_wlfc_txcomplete()
3887 wlfc->pkt_cnt_in_drv[DHD_PKTTAG_IF(PKTTAG(txp))][DHD_PKTTAG_FIFO(PKTTAG(txp))]--; in dhd_wlfc_txcomplete()
3888 wlfc->stats.pktout++; in dhd_wlfc_txcomplete()
3889 PKTFREE(wlfc->osh, txp, TRUE); in dhd_wlfc_txcomplete()
3893 _dhd_wlfc_enque_afq(wlfc, txp); in dhd_wlfc_txcomplete()
3896 _dhd_wlfc_hanger_free_pkt(wlfc, hslot, in dhd_wlfc_txcomplete()
4096 athost_wl_status_info_t* wlfc; in dhd_wlfc_deinit() local
4135 wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in dhd_wlfc_deinit()
4141 wlfc_hanger_t* h = (wlfc_hanger_t*)wlfc->hanger; in dhd_wlfc_deinit()
4144 _dhd_wlfc_hanger_free_pkt(wlfc, i, in dhd_wlfc_deinit()
4154 if (wlfc->log_buf) { in dhd_wlfc_deinit()
4155 MFREE(dhd->osh, wlfc->log_buf, WLFC_LOG_BUF_SIZE); in dhd_wlfc_deinit()
4156 wlfc->log_buf_offset = 0; in dhd_wlfc_deinit()
4157 wlfc->log_buf_full = FALSE; in dhd_wlfc_deinit()
4272 athost_wl_status_info_t* wlfc; in dhd_wlfc_dump() local
4290 wlfc = (athost_wl_status_info_t*)dhdp->wlfc_state; in dhd_wlfc_dump()
4292 h = (wlfc_hanger_t*)wlfc->hanger; in dhd_wlfc_dump()
4297 mac_table = wlfc->destination_entries.nodes; in dhd_wlfc_dump()
4298 interfaces = wlfc->destination_entries.interfaces; in dhd_wlfc_dump()
4302 h = (wlfc_hanger_t*)wlfc->hanger; in dhd_wlfc_dump()
4319 wlfc->stats.tlv_parse_failed, in dhd_wlfc_dump()
4320 wlfc->stats.credit_request_failed, in dhd_wlfc_dump()
4321 wlfc->stats.mac_update_failed, in dhd_wlfc_dump()
4322 wlfc->stats.psmode_update_failed, in dhd_wlfc_dump()
4323 wlfc->stats.delayq_full_error, in dhd_wlfc_dump()
4324 wlfc->stats.rollback_failed); in dhd_wlfc_dump()
4329 wlfc->Init_FIFO_credit[0], wlfc->FIFO_credit[0], wlfc->stats.send_pkts[0], in dhd_wlfc_dump()
4330 wlfc->stats.drop_pkts[0], wlfc->stats.drop_pkts[1], wlfc->stats.ooo_pkts[0], in dhd_wlfc_dump()
4331 wlfc->Init_FIFO_credit[1], wlfc->FIFO_credit[1], wlfc->stats.send_pkts[1], in dhd_wlfc_dump()
4332 wlfc->stats.drop_pkts[2], wlfc->stats.drop_pkts[3], wlfc->stats.ooo_pkts[1], in dhd_wlfc_dump()
4333 wlfc->Init_FIFO_credit[2], wlfc->FIFO_credit[2], wlfc->stats.send_pkts[2], in dhd_wlfc_dump()
4334 wlfc->stats.drop_pkts[4], wlfc->stats.drop_pkts[5], wlfc->stats.ooo_pkts[2], in dhd_wlfc_dump()
4335 wlfc->Init_FIFO_credit[3], wlfc->FIFO_credit[3], wlfc->stats.send_pkts[3], in dhd_wlfc_dump()
4336 wlfc->stats.drop_pkts[6], wlfc->stats.drop_pkts[7], wlfc->stats.ooo_pkts[3], in dhd_wlfc_dump()
4337 wlfc->Init_FIFO_credit[4], wlfc->FIFO_credit[4], wlfc->stats.send_pkts[4], in dhd_wlfc_dump()
4338 wlfc->stats.drop_pkts[8], wlfc->stats.drop_pkts[9], wlfc->stats.ooo_pkts[4]); in dhd_wlfc_dump()
4355 iftype_desc, ((wlfc->hostif_flow_state[i] == OFF) in dhd_wlfc_dump()
4446 if (wlfc->stats.latency_sample_count) { in dhd_wlfc_dump()
4447 moving_samples = sizeof(wlfc->stats.deltas)/sizeof(uint32); in dhd_wlfc_dump()
4450 moving_avg += wlfc->stats.deltas[i]; in dhd_wlfc_dump()
4453 avg = (100 * wlfc->stats.total_status_latency) / in dhd_wlfc_dump()
4454 wlfc->stats.latency_sample_count; in dhd_wlfc_dump()
4458 wlfc->stats.latency_most_recent, in dhd_wlfc_dump()
4465 wlfc->stats.fifo_credits_sent[0], in dhd_wlfc_dump()
4466 wlfc->stats.fifo_credits_sent[1], in dhd_wlfc_dump()
4467 wlfc->stats.fifo_credits_sent[2], in dhd_wlfc_dump()
4468 wlfc->stats.fifo_credits_sent[3], in dhd_wlfc_dump()
4469 wlfc->stats.fifo_credits_sent[4], in dhd_wlfc_dump()
4470 wlfc->stats.fifo_credits_sent[5], in dhd_wlfc_dump()
4472 wlfc->stats.fifo_credits_back[0], in dhd_wlfc_dump()
4473 wlfc->stats.fifo_credits_back[1], in dhd_wlfc_dump()
4474 wlfc->stats.fifo_credits_back[2], in dhd_wlfc_dump()
4475 wlfc->stats.fifo_credits_back[3], in dhd_wlfc_dump()
4476 wlfc->stats.fifo_credits_back[4], in dhd_wlfc_dump()
4477 wlfc->stats.fifo_credits_back[5]); in dhd_wlfc_dump()
4485 for (i = 0; i < sizeof(wlfc->stats.fifo_credits_sent)/sizeof(uint32); i++) { in dhd_wlfc_dump()
4486 fifo_cr_sent += wlfc->stats.fifo_credits_sent[i]; in dhd_wlfc_dump()
4489 for (i = 0; i < sizeof(wlfc->stats.fifo_credits_back)/sizeof(uint32); i++) { in dhd_wlfc_dump()
4490 fifo_cr_acked += wlfc->stats.fifo_credits_back[i]; in dhd_wlfc_dump()
4494 if (wlfc->destination_entries.nodes[i].occupied) { in dhd_wlfc_dump()
4496 wlfc->destination_entries.nodes[i].dstncredit_sent_packets; in dhd_wlfc_dump()
4500 if (wlfc->destination_entries.interfaces[i].occupied) { in dhd_wlfc_dump()
4502 wlfc->destination_entries.interfaces[i].dstncredit_sent_packets; in dhd_wlfc_dump()
4506 if (wlfc->destination_entries.nodes[i].occupied) { in dhd_wlfc_dump()
4508 wlfc->destination_entries.nodes[i].dstncredit_acks; in dhd_wlfc_dump()
4512 if (wlfc->destination_entries.interfaces[i].occupied) { in dhd_wlfc_dump()
4514 wlfc->destination_entries.interfaces[i].dstncredit_acks; in dhd_wlfc_dump()
4521 wlfc->destination_entries.other.dstncredit_acks, in dhd_wlfc_dump()
4523 wlfc->stats.signal_only_pkts_sent, wlfc->stats.signal_only_pkts_freed); in dhd_wlfc_dump()
4531 wlfc->stats.pktin, in dhd_wlfc_dump()
4532 wlfc->stats.pkt2bus, in dhd_wlfc_dump()
4533 wlfc->stats.txstatus_in, in dhd_wlfc_dump()
4534 wlfc->stats.dhd_hdrpulls, in dhd_wlfc_dump()
4535 wlfc->stats.pktout, in dhd_wlfc_dump()
4537 wlfc->stats.pktdropped, in dhd_wlfc_dump()
4538 wlfc->stats.wlfc_header_only_pkt, in dhd_wlfc_dump()
4539 wlfc->stats.wlc_tossed_pkts, in dhd_wlfc_dump()
4540 wlfc->stats.pkt_dropped, in dhd_wlfc_dump()
4541 wlfc->stats.pkt_exptime, in dhd_wlfc_dump()
4543 wlfc->stats.pkt_freed, in dhd_wlfc_dump()
4544 wlfc->stats.pkt_free_err, wlfc->stats.rollback); in dhd_wlfc_dump()
4548 wlfc->stats.d11_suppress, in dhd_wlfc_dump()
4549 wlfc->stats.wl_suppress, in dhd_wlfc_dump()
4550 wlfc->stats.bad_suppress, in dhd_wlfc_dump()
4552 wlfc->stats.psq_d11sup_enq, in dhd_wlfc_dump()
4553 wlfc->stats.psq_wlsup_enq, in dhd_wlfc_dump()
4554 wlfc->stats.psq_hostq_enq, in dhd_wlfc_dump()
4555 wlfc->stats.mac_handle_notfound, in dhd_wlfc_dump()
4557 wlfc->stats.psq_d11sup_retx, in dhd_wlfc_dump()
4558 wlfc->stats.psq_wlsup_retx, in dhd_wlfc_dump()
4559 wlfc->stats.psq_hostq_retx); in dhd_wlfc_dump()
4562 wlfc->stats.cleanup_txq_cnt, in dhd_wlfc_dump()
4563 wlfc->stats.cleanup_psq_cnt, in dhd_wlfc_dump()
4564 wlfc->stats.cleanup_fw_cnt); in dhd_wlfc_dump()
4566 bcm_bprintf(strbuf, "wlfc- generic error: %d\n", wlfc->stats.generic_error); in dhd_wlfc_dump()
4570 wlfc->pkt_cnt_in_q[i][0], in dhd_wlfc_dump()
4571 wlfc->pkt_cnt_in_q[i][1], in dhd_wlfc_dump()
4572 wlfc->pkt_cnt_in_q[i][2], in dhd_wlfc_dump()
4573 wlfc->pkt_cnt_in_q[i][3], in dhd_wlfc_dump()
4574 wlfc->pkt_cnt_in_q[i][4]); in dhd_wlfc_dump()
4584 athost_wl_status_info_t* wlfc; in dhd_wlfc_clear_counts() local
4599 wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in dhd_wlfc_clear_counts()
4601 memset(&wlfc->stats, 0, sizeof(athost_wl_stat_counters_t)); in dhd_wlfc_clear_counts()
4604 hanger = (wlfc_hanger_t*)wlfc->hanger; in dhd_wlfc_clear_counts()
4674 athost_wl_status_info_t* wlfc; in dhd_wlfc_is_header_only_pkt() local
4689 wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in dhd_wlfc_is_header_only_pkt()
4691 if (PKTLEN(wlfc->osh, pktbuf) == 0) { in dhd_wlfc_is_header_only_pkt()
4692 wlfc->stats.wlfc_header_only_pkt++; in dhd_wlfc_is_header_only_pkt()
4734 athost_wl_status_info_t* wlfc; in dhd_wlfc_save_rxpath_ac_time() local
4754 wlfc = (athost_wl_status_info_t*)dhd->wlfc_state; in dhd_wlfc_save_rxpath_ac_time()
4757 wlfc->rx_timestamp[rx_path_ac] = OSL_SYSUPTIME(); in dhd_wlfc_save_rxpath_ac_time()