wcn 30 drivers/net/wireless/ath/wcn36xx/debug.c struct wcn36xx *wcn = file->private_data; wcn 35 drivers/net/wireless/ath/wcn36xx/debug.c list_for_each_entry(vif_priv, &wcn->vif_list, list) { wcn 55 drivers/net/wireless/ath/wcn36xx/debug.c struct wcn36xx *wcn = file->private_data; wcn 70 drivers/net/wireless/ath/wcn36xx/debug.c list_for_each_entry(vif_priv, &wcn->vif_list, list) { wcn 73 drivers/net/wireless/ath/wcn36xx/debug.c wcn36xx_enable_keep_alive_null_packet(wcn, vif); wcn 74 drivers/net/wireless/ath/wcn36xx/debug.c wcn36xx_pmc_enter_bmps_state(wcn, vif); wcn 81 drivers/net/wireless/ath/wcn36xx/debug.c list_for_each_entry(vif_priv, &wcn->vif_list, list) { wcn 84 drivers/net/wireless/ath/wcn36xx/debug.c wcn36xx_pmc_exit_bmps_state(wcn, vif); wcn 102 drivers/net/wireless/ath/wcn36xx/debug.c struct wcn36xx *wcn = file->private_data; wcn 129 drivers/net/wireless/ath/wcn36xx/debug.c wcn36xx_smd_dump_cmd_req(wcn, arg[0], arg[1], arg[2], arg[3], arg[4]); wcn 153 drivers/net/wireless/ath/wcn36xx/debug.c void wcn36xx_debugfs_init(struct wcn36xx *wcn) wcn 155 drivers/net/wireless/ath/wcn36xx/debug.c struct wcn36xx_dfs_entry *dfs = &wcn->dfs; wcn 158 drivers/net/wireless/ath/wcn36xx/debug.c wcn->hw->wiphy->debugfsdir); wcn 164 drivers/net/wireless/ath/wcn36xx/debug.c ADD_FILE(bmps_switcher, 0600, &fops_wcn36xx_bmps, wcn); wcn 165 drivers/net/wireless/ath/wcn36xx/debug.c ADD_FILE(dump, 0200, &fops_wcn36xx_dump, wcn); wcn 168 drivers/net/wireless/ath/wcn36xx/debug.c void wcn36xx_debugfs_exit(struct wcn36xx *wcn) wcn 170 drivers/net/wireless/ath/wcn36xx/debug.c struct wcn36xx_dfs_entry *dfs = &wcn->dfs; wcn 36 drivers/net/wireless/ath/wcn36xx/debug.h void wcn36xx_debugfs_init(struct wcn36xx *wcn); wcn 37 drivers/net/wireless/ath/wcn36xx/debug.h void wcn36xx_debugfs_exit(struct wcn36xx *wcn); wcn 40 drivers/net/wireless/ath/wcn36xx/debug.h static inline void wcn36xx_debugfs_init(struct wcn36xx *wcn) wcn 43 drivers/net/wireless/ath/wcn36xx/debug.h static inline void wcn36xx_debugfs_exit(struct wcn36xx *wcn) wcn 30 drivers/net/wireless/ath/wcn36xx/dxe.c static void wcn36xx_ccu_write_register(struct wcn36xx *wcn, int addr, int data) wcn 36 drivers/net/wireless/ath/wcn36xx/dxe.c writel(data, wcn->ccu_base + addr); wcn 39 drivers/net/wireless/ath/wcn36xx/dxe.c static void wcn36xx_dxe_write_register(struct wcn36xx *wcn, int addr, int data) wcn 45 drivers/net/wireless/ath/wcn36xx/dxe.c writel(data, wcn->dxe_base + addr); wcn 48 drivers/net/wireless/ath/wcn36xx/dxe.c static void wcn36xx_dxe_read_register(struct wcn36xx *wcn, int addr, int *data) wcn 50 drivers/net/wireless/ath/wcn36xx/dxe.c *data = readl(wcn->dxe_base + addr); wcn 101 drivers/net/wireless/ath/wcn36xx/dxe.c int wcn36xx_dxe_alloc_ctl_blks(struct wcn36xx *wcn) wcn 105 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_l_ch.ch_type = WCN36XX_DXE_CH_TX_L; wcn 106 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_h_ch.ch_type = WCN36XX_DXE_CH_TX_H; wcn 107 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_rx_l_ch.ch_type = WCN36XX_DXE_CH_RX_L; wcn 108 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_rx_h_ch.ch_type = WCN36XX_DXE_CH_RX_H; wcn 110 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_l_ch.desc_num = WCN36XX_DXE_CH_DESC_NUMB_TX_L; wcn 111 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_h_ch.desc_num = WCN36XX_DXE_CH_DESC_NUMB_TX_H; wcn 112 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_rx_l_ch.desc_num = WCN36XX_DXE_CH_DESC_NUMB_RX_L; wcn 113 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_rx_h_ch.desc_num = WCN36XX_DXE_CH_DESC_NUMB_RX_H; wcn 115 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_l_ch.dxe_wq = WCN36XX_DXE_WQ_TX_L; wcn 116 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_h_ch.dxe_wq = WCN36XX_DXE_WQ_TX_H; wcn 118 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_l_ch.ctrl_bd = WCN36XX_DXE_CTRL_TX_L_BD; wcn 119 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_h_ch.ctrl_bd = WCN36XX_DXE_CTRL_TX_H_BD; wcn 121 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_l_ch.ctrl_skb = WCN36XX_DXE_CTRL_TX_L_SKB; wcn 122 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_h_ch.ctrl_skb = WCN36XX_DXE_CTRL_TX_H_SKB; wcn 124 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_l_ch.reg_ctrl = WCN36XX_DXE_REG_CTL_TX_L; wcn 125 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_h_ch.reg_ctrl = WCN36XX_DXE_REG_CTL_TX_H; wcn 127 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_l_ch.def_ctrl = WCN36XX_DXE_CH_DEFAULT_CTL_TX_L; wcn 128 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_h_ch.def_ctrl = WCN36XX_DXE_CH_DEFAULT_CTL_TX_H; wcn 131 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_allocate_ctl_block(&wcn->dxe_tx_l_ch); wcn 134 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_allocate_ctl_block(&wcn->dxe_tx_h_ch); wcn 137 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_allocate_ctl_block(&wcn->dxe_rx_l_ch); wcn 140 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_allocate_ctl_block(&wcn->dxe_rx_h_ch); wcn 145 drivers/net/wireless/ath/wcn36xx/dxe.c ret = qcom_smem_state_update_bits(wcn->tx_enable_state, wcn 156 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_free_ctl_blks(wcn); wcn 160 drivers/net/wireless/ath/wcn36xx/dxe.c void wcn36xx_dxe_free_ctl_blks(struct wcn36xx *wcn) wcn 162 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_free_ctl_block(&wcn->dxe_tx_l_ch); wcn 163 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_free_ctl_block(&wcn->dxe_tx_h_ch); wcn 164 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_free_ctl_block(&wcn->dxe_rx_l_ch); wcn 165 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_free_ctl_block(&wcn->dxe_rx_h_ch); wcn 259 drivers/net/wireless/ath/wcn36xx/dxe.c static int wcn36xx_dxe_enable_ch_int(struct wcn36xx *wcn, u16 wcn_ch) wcn 263 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_read_register(wcn, wcn 269 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 300 drivers/net/wireless/ath/wcn36xx/dxe.c static int wcn36xx_dxe_ch_alloc_skb(struct wcn36xx *wcn, wcn 309 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_fill_skb(wcn->dev, cur_ctl, GFP_KERNEL); wcn 316 drivers/net/wireless/ath/wcn36xx/dxe.c static void wcn36xx_dxe_ch_free_skbs(struct wcn36xx *wcn, wcn 328 drivers/net/wireless/ath/wcn36xx/dxe.c void wcn36xx_dxe_tx_ack_ind(struct wcn36xx *wcn, u32 status) wcn 334 drivers/net/wireless/ath/wcn36xx/dxe.c spin_lock_irqsave(&wcn->dxe_lock, flags); wcn 335 drivers/net/wireless/ath/wcn36xx/dxe.c skb = wcn->tx_ack_skb; wcn 336 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->tx_ack_skb = NULL; wcn 337 drivers/net/wireless/ath/wcn36xx/dxe.c spin_unlock_irqrestore(&wcn->dxe_lock, flags); wcn 351 drivers/net/wireless/ath/wcn36xx/dxe.c ieee80211_tx_status_irqsafe(wcn->hw, skb); wcn 352 drivers/net/wireless/ath/wcn36xx/dxe.c ieee80211_wake_queues(wcn->hw); wcn 355 drivers/net/wireless/ath/wcn36xx/dxe.c static void reap_tx_dxes(struct wcn36xx *wcn, struct wcn36xx_dxe_ch *ch) wcn 374 drivers/net/wireless/ath/wcn36xx/dxe.c dma_unmap_single(wcn->dev, ctl->desc->src_addr_l, wcn 379 drivers/net/wireless/ath/wcn36xx/dxe.c ieee80211_free_txskb(wcn->hw, ctl->skb); wcn 382 drivers/net/wireless/ath/wcn36xx/dxe.c if (wcn->queues_stopped) { wcn 383 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->queues_stopped = false; wcn 384 drivers/net/wireless/ath/wcn36xx/dxe.c ieee80211_wake_queues(wcn->hw); wcn 398 drivers/net/wireless/ath/wcn36xx/dxe.c struct wcn36xx *wcn = (struct wcn36xx *)dev; wcn 401 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_read_register(wcn, WCN36XX_DXE_INT_SRC_RAW_REG, &int_src); wcn 404 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_read_register(wcn, wcn 408 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 413 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 422 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 428 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 438 drivers/net/wireless/ath/wcn36xx/dxe.c reap_tx_dxes(wcn, &wcn->dxe_tx_h_ch); wcn 442 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_read_register(wcn, wcn 446 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 452 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 461 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 467 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 477 drivers/net/wireless/ath/wcn36xx/dxe.c reap_tx_dxes(wcn, &wcn->dxe_tx_l_ch); wcn 485 drivers/net/wireless/ath/wcn36xx/dxe.c struct wcn36xx *wcn = (struct wcn36xx *)dev; wcn 487 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_rx_frame(wcn); wcn 492 drivers/net/wireless/ath/wcn36xx/dxe.c static int wcn36xx_dxe_request_irqs(struct wcn36xx *wcn) wcn 496 drivers/net/wireless/ath/wcn36xx/dxe.c ret = request_irq(wcn->tx_irq, wcn36xx_irq_tx_complete, wcn 497 drivers/net/wireless/ath/wcn36xx/dxe.c IRQF_TRIGGER_HIGH, "wcn36xx_tx", wcn); wcn 503 drivers/net/wireless/ath/wcn36xx/dxe.c ret = request_irq(wcn->rx_irq, wcn36xx_irq_rx_ready, IRQF_TRIGGER_HIGH, wcn 504 drivers/net/wireless/ath/wcn36xx/dxe.c "wcn36xx_rx", wcn); wcn 510 drivers/net/wireless/ath/wcn36xx/dxe.c enable_irq_wake(wcn->rx_irq); wcn 515 drivers/net/wireless/ath/wcn36xx/dxe.c free_irq(wcn->tx_irq, wcn); wcn 521 drivers/net/wireless/ath/wcn36xx/dxe.c static int wcn36xx_rx_handle_packets(struct wcn36xx *wcn, wcn 535 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_read_register(wcn, status_reg, &int_reason); wcn 536 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_0_INT_CLR, int_mask); wcn 539 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 547 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 552 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 568 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_fill_skb(wcn->dev, ctl, GFP_ATOMIC); wcn 573 drivers/net/wireless/ath/wcn36xx/dxe.c dma_unmap_single(wcn->dev, dma_addr, WCN36XX_PKT_SIZE, wcn 575 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_rx_skb(wcn, skb); wcn 582 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_ENCH_ADDR, en_mask); wcn 591 drivers/net/wireless/ath/wcn36xx/dxe.c void wcn36xx_dxe_rx_frame(struct wcn36xx *wcn) wcn 595 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_read_register(wcn, WCN36XX_DXE_INT_SRC_RAW_REG, &int_src); wcn 599 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_rx_handle_packets(wcn, &wcn->dxe_rx_l_ch, wcn 607 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_rx_handle_packets(wcn, &wcn->dxe_rx_h_ch, wcn 617 drivers/net/wireless/ath/wcn36xx/dxe.c int wcn36xx_dxe_allocate_mem_pools(struct wcn36xx *wcn) wcn 625 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->mgmt_mem_pool.chunk_size = WCN36XX_BD_CHUNK_SIZE + wcn 628 drivers/net/wireless/ath/wcn36xx/dxe.c s = wcn->mgmt_mem_pool.chunk_size * WCN36XX_DXE_CH_DESC_NUMB_TX_H; wcn 629 drivers/net/wireless/ath/wcn36xx/dxe.c cpu_addr = dma_alloc_coherent(wcn->dev, s, wcn 630 drivers/net/wireless/ath/wcn36xx/dxe.c &wcn->mgmt_mem_pool.phy_addr, wcn 635 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->mgmt_mem_pool.virt_addr = cpu_addr; wcn 640 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->data_mem_pool.chunk_size = WCN36XX_BD_CHUNK_SIZE + wcn 643 drivers/net/wireless/ath/wcn36xx/dxe.c s = wcn->data_mem_pool.chunk_size * WCN36XX_DXE_CH_DESC_NUMB_TX_L; wcn 644 drivers/net/wireless/ath/wcn36xx/dxe.c cpu_addr = dma_alloc_coherent(wcn->dev, s, wcn 645 drivers/net/wireless/ath/wcn36xx/dxe.c &wcn->data_mem_pool.phy_addr, wcn 650 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->data_mem_pool.virt_addr = cpu_addr; wcn 655 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_free_mem_pools(wcn); wcn 660 drivers/net/wireless/ath/wcn36xx/dxe.c void wcn36xx_dxe_free_mem_pools(struct wcn36xx *wcn) wcn 662 drivers/net/wireless/ath/wcn36xx/dxe.c if (wcn->mgmt_mem_pool.virt_addr) wcn 663 drivers/net/wireless/ath/wcn36xx/dxe.c dma_free_coherent(wcn->dev, wcn->mgmt_mem_pool.chunk_size * wcn 665 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->mgmt_mem_pool.virt_addr, wcn 666 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->mgmt_mem_pool.phy_addr); wcn 668 drivers/net/wireless/ath/wcn36xx/dxe.c if (wcn->data_mem_pool.virt_addr) { wcn 669 drivers/net/wireless/ath/wcn36xx/dxe.c dma_free_coherent(wcn->dev, wcn->data_mem_pool.chunk_size * wcn 671 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->data_mem_pool.virt_addr, wcn 672 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->data_mem_pool.phy_addr); wcn 676 drivers/net/wireless/ath/wcn36xx/dxe.c int wcn36xx_dxe_tx_frame(struct wcn36xx *wcn, wcn 688 drivers/net/wireless/ath/wcn36xx/dxe.c ch = is_low ? &wcn->dxe_tx_l_ch : &wcn->dxe_tx_h_ch; wcn 700 drivers/net/wireless/ath/wcn36xx/dxe.c ieee80211_stop_queues(wcn->hw); wcn 701 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->queues_stopped = true; wcn 733 drivers/net/wireless/ath/wcn36xx/dxe.c desc_skb->src_addr_l = dma_map_single(wcn->dev, wcn 737 drivers/net/wireless/ath/wcn36xx/dxe.c if (dma_mapping_error(wcn->dev, desc_skb->src_addr_l)) { wcn 738 drivers/net/wireless/ath/wcn36xx/dxe.c dev_err(wcn->dev, "unable to DMA map src_addr_l\n"); wcn 767 drivers/net/wireless/ath/wcn36xx/dxe.c qcom_smem_state_update_bits(wcn->tx_rings_empty_state, wcn 774 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 784 drivers/net/wireless/ath/wcn36xx/dxe.c int wcn36xx_dxe_init(struct wcn36xx *wcn) wcn 789 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_REG_CSR_RESET, reg_data); wcn 794 drivers/net/wireless/ath/wcn36xx/dxe.c if (wcn->is_pronto) wcn 795 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_ccu_write_register(wcn, WCN36XX_CCU_DXE_INT_SELECT_PRONTO, reg_data); wcn 797 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_ccu_write_register(wcn, WCN36XX_CCU_DXE_INT_SELECT_RIVA, reg_data); wcn 802 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_init_descs(wcn->dev, &wcn->dxe_tx_l_ch); wcn 804 drivers/net/wireless/ath/wcn36xx/dxe.c dev_err(wcn->dev, "Error allocating descriptor\n"); wcn 807 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_init_tx_bd(&wcn->dxe_tx_l_ch, &wcn->data_mem_pool); wcn 810 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_CH_NEXT_DESC_ADDR_TX_L, wcn 811 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_l_ch.head_blk_ctl->desc_phy_addr); wcn 814 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 818 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_read_register(wcn, WCN36XX_DXE_REG_CH_EN, ®_data); wcn 819 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_enable_ch_int(wcn, WCN36XX_INT_MASK_CHAN_TX_L); wcn 824 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_init_descs(wcn->dev, &wcn->dxe_tx_h_ch); wcn 826 drivers/net/wireless/ath/wcn36xx/dxe.c dev_err(wcn->dev, "Error allocating descriptor\n"); wcn 830 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_init_tx_bd(&wcn->dxe_tx_h_ch, &wcn->mgmt_mem_pool); wcn 833 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_CH_NEXT_DESC_ADDR_TX_H, wcn 834 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_tx_h_ch.head_blk_ctl->desc_phy_addr); wcn 837 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 841 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_read_register(wcn, WCN36XX_DXE_REG_CH_EN, ®_data); wcn 844 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_enable_ch_int(wcn, WCN36XX_INT_MASK_CHAN_TX_H); wcn 849 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_init_descs(wcn->dev, &wcn->dxe_rx_l_ch); wcn 851 drivers/net/wireless/ath/wcn36xx/dxe.c dev_err(wcn->dev, "Error allocating descriptor\n"); wcn 857 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_ch_alloc_skb(wcn, &wcn->dxe_rx_l_ch); wcn 860 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_CH_NEXT_DESC_ADDR_RX_L, wcn 861 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_rx_l_ch.head_blk_ctl->desc_phy_addr); wcn 864 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 869 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 871 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_rx_l_ch.head_blk_ctl->desc->phy_next_l); wcn 874 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 879 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_enable_ch_int(wcn, WCN36XX_INT_MASK_CHAN_RX_L); wcn 884 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_init_descs(wcn->dev, &wcn->dxe_rx_h_ch); wcn 886 drivers/net/wireless/ath/wcn36xx/dxe.c dev_err(wcn->dev, "Error allocating descriptor\n"); wcn 891 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_ch_alloc_skb(wcn, &wcn->dxe_rx_h_ch); wcn 894 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_CH_NEXT_DESC_ADDR_RX_H, wcn 895 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_rx_h_ch.head_blk_ctl->desc_phy_addr); wcn 898 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 903 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 905 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->dxe_rx_h_ch.head_blk_ctl->desc->phy_next_l); wcn 908 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_write_register(wcn, wcn 913 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_enable_ch_int(wcn, WCN36XX_INT_MASK_CHAN_RX_H); wcn 915 drivers/net/wireless/ath/wcn36xx/dxe.c ret = wcn36xx_dxe_request_irqs(wcn); wcn 922 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_deinit_descs(wcn->dev, &wcn->dxe_rx_h_ch); wcn 924 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_deinit_descs(wcn->dev, &wcn->dxe_rx_l_ch); wcn 926 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_deinit_descs(wcn->dev, &wcn->dxe_tx_h_ch); wcn 928 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_deinit_descs(wcn->dev, &wcn->dxe_tx_l_ch); wcn 933 drivers/net/wireless/ath/wcn36xx/dxe.c void wcn36xx_dxe_deinit(struct wcn36xx *wcn) wcn 935 drivers/net/wireless/ath/wcn36xx/dxe.c free_irq(wcn->tx_irq, wcn); wcn 936 drivers/net/wireless/ath/wcn36xx/dxe.c free_irq(wcn->rx_irq, wcn); wcn 938 drivers/net/wireless/ath/wcn36xx/dxe.c if (wcn->tx_ack_skb) { wcn 939 drivers/net/wireless/ath/wcn36xx/dxe.c ieee80211_tx_status_irqsafe(wcn->hw, wcn->tx_ack_skb); wcn 940 drivers/net/wireless/ath/wcn36xx/dxe.c wcn->tx_ack_skb = NULL; wcn 943 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_ch_free_skbs(wcn, &wcn->dxe_rx_l_ch); wcn 944 drivers/net/wireless/ath/wcn36xx/dxe.c wcn36xx_dxe_ch_free_skbs(wcn, &wcn->dxe_rx_h_ch); wcn 456 drivers/net/wireless/ath/wcn36xx/dxe.h int wcn36xx_dxe_allocate_mem_pools(struct wcn36xx *wcn); wcn 457 drivers/net/wireless/ath/wcn36xx/dxe.h void wcn36xx_dxe_free_mem_pools(struct wcn36xx *wcn); wcn 458 drivers/net/wireless/ath/wcn36xx/dxe.h void wcn36xx_dxe_rx_frame(struct wcn36xx *wcn); wcn 459 drivers/net/wireless/ath/wcn36xx/dxe.h int wcn36xx_dxe_alloc_ctl_blks(struct wcn36xx *wcn); wcn 460 drivers/net/wireless/ath/wcn36xx/dxe.h void wcn36xx_dxe_free_ctl_blks(struct wcn36xx *wcn); wcn 461 drivers/net/wireless/ath/wcn36xx/dxe.h int wcn36xx_dxe_init(struct wcn36xx *wcn); wcn 462 drivers/net/wireless/ath/wcn36xx/dxe.h void wcn36xx_dxe_deinit(struct wcn36xx *wcn); wcn 463 drivers/net/wireless/ath/wcn36xx/dxe.h int wcn36xx_dxe_init_channels(struct wcn36xx *wcn); wcn 464 drivers/net/wireless/ath/wcn36xx/dxe.h int wcn36xx_dxe_tx_frame(struct wcn36xx *wcn, wcn 469 drivers/net/wireless/ath/wcn36xx/dxe.h void wcn36xx_dxe_tx_ack_ind(struct wcn36xx *wcn, u32 status); wcn 259 drivers/net/wireless/ath/wcn36xx/main.c static void wcn36xx_feat_caps_info(struct wcn36xx *wcn) wcn 264 drivers/net/wireless/ath/wcn36xx/main.c if (get_feat_caps(wcn->fw_feat_caps, i)) wcn 271 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 277 drivers/net/wireless/ath/wcn36xx/main.c ret = wcn36xx_smd_open(wcn); wcn 284 drivers/net/wireless/ath/wcn36xx/main.c ret = wcn36xx_dxe_allocate_mem_pools(wcn); wcn 290 drivers/net/wireless/ath/wcn36xx/main.c ret = wcn36xx_dxe_alloc_ctl_blks(wcn); wcn 296 drivers/net/wireless/ath/wcn36xx/main.c wcn->hal_buf = kmalloc(WCN36XX_HAL_BUF_SIZE, GFP_KERNEL); wcn 297 drivers/net/wireless/ath/wcn36xx/main.c if (!wcn->hal_buf) { wcn 303 drivers/net/wireless/ath/wcn36xx/main.c ret = wcn36xx_smd_load_nv(wcn); wcn 309 drivers/net/wireless/ath/wcn36xx/main.c ret = wcn36xx_smd_start(wcn); wcn 315 drivers/net/wireless/ath/wcn36xx/main.c if (!wcn36xx_is_fw_version(wcn, 1, 2, 2, 24)) { wcn 316 drivers/net/wireless/ath/wcn36xx/main.c ret = wcn36xx_smd_feature_caps_exchange(wcn); wcn 320 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_feat_caps_info(wcn); wcn 324 drivers/net/wireless/ath/wcn36xx/main.c ret = wcn36xx_dxe_init(wcn); wcn 330 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_debugfs_init(wcn); wcn 332 drivers/net/wireless/ath/wcn36xx/main.c INIT_LIST_HEAD(&wcn->vif_list); wcn 333 drivers/net/wireless/ath/wcn36xx/main.c spin_lock_init(&wcn->dxe_lock); wcn 338 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_stop(wcn); wcn 340 drivers/net/wireless/ath/wcn36xx/main.c kfree(wcn->hal_buf); wcn 342 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_dxe_free_ctl_blks(wcn); wcn 344 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_dxe_free_mem_pools(wcn); wcn 346 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_close(wcn); wcn 353 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 357 drivers/net/wireless/ath/wcn36xx/main.c cancel_work_sync(&wcn->scan_work); wcn 359 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->scan_lock); wcn 360 drivers/net/wireless/ath/wcn36xx/main.c if (wcn->scan_req) { wcn 365 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_scan_completed(wcn->hw, &scan_info); wcn 367 drivers/net/wireless/ath/wcn36xx/main.c wcn->scan_req = NULL; wcn 368 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->scan_lock); wcn 370 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_debugfs_exit(wcn); wcn 371 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_stop(wcn); wcn 372 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_dxe_deinit(wcn); wcn 373 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_close(wcn); wcn 375 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_dxe_free_mem_pools(wcn); wcn 376 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_dxe_free_ctl_blks(wcn); wcn 378 drivers/net/wireless/ath/wcn36xx/main.c kfree(wcn->hal_buf); wcn 383 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 389 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 392 drivers/net/wireless/ath/wcn36xx/main.c int ch = WCN36XX_HW_CHANNEL(wcn); wcn 395 drivers/net/wireless/ath/wcn36xx/main.c list_for_each_entry(tmp, &wcn->vif_list, list) { wcn 397 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_switch_channel(wcn, vif, ch); wcn 402 drivers/net/wireless/ath/wcn36xx/main.c list_for_each_entry(tmp, &wcn->vif_list, list) { wcn 406 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_pmc_enter_bmps_state(wcn, vif); wcn 408 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_pmc_exit_bmps_state(wcn, vif); wcn 413 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 423 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 429 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 434 drivers/net/wireless/ath/wcn36xx/main.c list_for_each_entry(tmp, &wcn->vif_list, list) { wcn 439 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_mc_list(wcn, vif, NULL); wcn 441 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_mc_list(wcn, vif, fp); wcn 444 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 479 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 485 drivers/net/wireless/ath/wcn36xx/main.c if (wcn36xx_start_tx(wcn, sta_priv, skb)) wcn 486 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_free_txskb(wcn->hw, skb); wcn 494 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 508 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 551 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_config_bss(wcn, wcn 557 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_stakey(wcn, wcn 564 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_bsskey(wcn, wcn 576 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_stakey(wcn, wcn 589 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_remove_bsskey(wcn, wcn 599 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_remove_stakey(wcn, wcn 612 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 619 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = container_of(work, struct wcn36xx, scan_work); wcn 620 drivers/net/wireless/ath/wcn36xx/main.c struct cfg80211_scan_request *req = wcn->scan_req; wcn 631 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_update_scan_params(wcn, channels, req->n_channels); wcn 633 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_init_scan(wcn, HAL_SYS_MODE_SCAN); wcn 635 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->scan_lock); wcn 636 drivers/net/wireless/ath/wcn36xx/main.c aborted = wcn->scan_aborted; wcn 637 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->scan_lock); wcn 642 drivers/net/wireless/ath/wcn36xx/main.c wcn->scan_freq = req->channels[i]->center_freq; wcn 643 drivers/net/wireless/ath/wcn36xx/main.c wcn->scan_band = req->channels[i]->band; wcn 645 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_start_scan(wcn, req->channels[i]->hw_value); wcn 647 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_end_scan(wcn, req->channels[i]->hw_value); wcn 649 drivers/net/wireless/ath/wcn36xx/main.c wcn->scan_freq = 0; wcn 651 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_finish_scan(wcn, HAL_SYS_MODE_SCAN); wcn 654 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_scan_completed(wcn->hw, &scan_info); wcn 656 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->scan_lock); wcn 657 drivers/net/wireless/ath/wcn36xx/main.c wcn->scan_req = NULL; wcn 658 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->scan_lock); wcn 665 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 666 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->scan_lock); wcn 667 drivers/net/wireless/ath/wcn36xx/main.c if (wcn->scan_req) { wcn 668 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->scan_lock); wcn 672 drivers/net/wireless/ath/wcn36xx/main.c wcn->scan_aborted = false; wcn 673 drivers/net/wireless/ath/wcn36xx/main.c wcn->scan_req = &hw_req->req; wcn 675 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->scan_lock); wcn 677 drivers/net/wireless/ath/wcn36xx/main.c if (!get_feat_caps(wcn->fw_feat_caps, SCAN_OFFLOAD)) { wcn 679 drivers/net/wireless/ath/wcn36xx/main.c schedule_work(&wcn->scan_work); wcn 683 drivers/net/wireless/ath/wcn36xx/main.c return wcn36xx_smd_start_hw_scan(wcn, vif, &hw_req->req); wcn 689 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 691 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->scan_lock); wcn 692 drivers/net/wireless/ath/wcn36xx/main.c wcn->scan_aborted = true; wcn 693 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->scan_lock); wcn 695 drivers/net/wireless/ath/wcn36xx/main.c if (get_feat_caps(wcn->fw_feat_caps, SCAN_OFFLOAD)) { wcn 698 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_stop_hw_scan(wcn); wcn 704 drivers/net/wireless/ath/wcn36xx/main.c cancel_work_sync(&wcn->scan_work); wcn 705 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_scan_completed(wcn->hw, &scan_info); wcn 780 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 789 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 806 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_link_st(wcn, bss_conf->bssid, vif->addr, wcn 808 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_join(wcn, bss_conf->bssid, wcn 809 drivers/net/wireless/ath/wcn36xx/main.c vif->addr, WCN36XX_HW_CHANNEL(wcn)); wcn 810 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_config_bss(wcn, vif, NULL, wcn 814 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_delete_bss(wcn, vif); wcn 815 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_link_st(wcn, bss_conf->bssid, vif->addr, wcn 861 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_update_allowed_rates(sta, WCN36XX_BAND(wcn)); wcn 863 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_link_st(wcn, bss_conf->bssid, wcn 866 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_config_bss(wcn, vif, sta, wcn 874 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_config_sta(wcn, vif, sta); wcn 882 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_link_st(wcn, wcn 897 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_update_proberesp_tmpl(wcn, vif, skb); wcn 910 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_config_bss(wcn, vif, NULL, wcn 918 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_send_beacon(wcn, vif, skb, tim_off, 0); wcn 927 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_link_st(wcn, vif->addr, vif->addr, wcn 930 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_delete_bss(wcn, vif); wcn 931 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_link_st(wcn, vif->addr, vif->addr, wcn 937 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 945 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 948 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 949 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_update_cfg(wcn, WCN36XX_HAL_CFG_RTS_THRESHOLD, value); wcn 950 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 958 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 962 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 965 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_delete_sta_self(wcn, vif->addr); wcn 967 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 973 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 988 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 992 drivers/net/wireless/ath/wcn36xx/main.c list_add(&vif_priv->list, &wcn->vif_list); wcn 993 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_add_sta_self(wcn, vif); wcn 995 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 1003 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 1009 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 1020 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_update_allowed_rates(sta, WCN36XX_BAND(wcn)); wcn 1022 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_config_sta(wcn, vif, sta); wcn 1025 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 1034 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 1040 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 1043 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_delete_sta(wcn, sta_priv->sta_index); wcn 1046 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 1055 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 1059 drivers/net/wireless/ath/wcn36xx/main.c flush_workqueue(wcn->hal_ind_wq); wcn 1060 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_power_params(wcn, true); wcn 1066 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 1070 drivers/net/wireless/ath/wcn36xx/main.c flush_workqueue(wcn->hal_ind_wq); wcn 1071 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_set_power_params(wcn, false); wcn 1081 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 1091 drivers/net/wireless/ath/wcn36xx/main.c mutex_lock(&wcn->conf_mutex); wcn 1096 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_add_ba_session(wcn, sta, tid, ssn, 0, wcn 1098 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_add_ba(wcn); wcn 1099 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_trigger_ba(wcn, get_sta_index(vif, sta_priv)); wcn 1102 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_del_ba(wcn, tid, get_sta_index(vif, sta_priv)); wcn 1116 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_smd_add_ba_session(wcn, sta, tid, ssn, 1, wcn 1132 drivers/net/wireless/ath/wcn36xx/main.c mutex_unlock(&wcn->conf_mutex); wcn 1162 drivers/net/wireless/ath/wcn36xx/main.c static int wcn36xx_init_ieee80211(struct wcn36xx *wcn) wcn 1171 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_hw_set(wcn->hw, TIMING_BEACON_ONLY); wcn 1172 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_hw_set(wcn->hw, AMPDU_AGGREGATION); wcn 1173 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_hw_set(wcn->hw, CONNECTION_MONITOR); wcn 1174 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_hw_set(wcn->hw, SUPPORTS_PS); wcn 1175 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_hw_set(wcn->hw, SIGNAL_DBM); wcn 1176 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_hw_set(wcn->hw, HAS_RATE_CONTROL); wcn 1177 drivers/net/wireless/ath/wcn36xx/main.c ieee80211_hw_set(wcn->hw, SINGLE_SCAN_ON_ALL_BANDS); wcn 1179 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | wcn 1184 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->wiphy->bands[NL80211_BAND_2GHZ] = &wcn_band_2ghz; wcn 1185 drivers/net/wireless/ath/wcn36xx/main.c if (wcn->rf_id != RF_IRIS_WCN3620) wcn 1186 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->wiphy->bands[NL80211_BAND_5GHZ] = &wcn_band_5ghz; wcn 1188 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->wiphy->max_scan_ssids = WCN36XX_MAX_SCAN_SSIDS; wcn 1189 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->wiphy->max_scan_ie_len = WCN36XX_MAX_SCAN_IE_LEN; wcn 1191 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->wiphy->cipher_suites = cipher_suites; wcn 1192 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites); wcn 1195 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->wiphy->wowlan = &wowlan_support; wcn 1198 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->max_listen_interval = 200; wcn 1200 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->queues = 4; wcn 1202 drivers/net/wireless/ath/wcn36xx/main.c SET_IEEE80211_DEV(wcn->hw, wcn->dev); wcn 1204 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->sta_data_size = sizeof(struct wcn36xx_sta); wcn 1205 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw->vif_data_size = sizeof(struct wcn36xx_vif); wcn 1207 drivers/net/wireless/ath/wcn36xx/main.c wiphy_ext_feature_set(wcn->hw->wiphy, wcn 1213 drivers/net/wireless/ath/wcn36xx/main.c static int wcn36xx_platform_get_resources(struct wcn36xx *wcn, wcn 1228 drivers/net/wireless/ath/wcn36xx/main.c wcn->tx_irq = res->start; wcn 1236 drivers/net/wireless/ath/wcn36xx/main.c wcn->rx_irq = res->start; wcn 1239 drivers/net/wireless/ath/wcn36xx/main.c wcn->tx_enable_state = qcom_smem_state_get(&pdev->dev, wcn 1240 drivers/net/wireless/ath/wcn36xx/main.c "tx-enable", &wcn->tx_enable_state_bit); wcn 1241 drivers/net/wireless/ath/wcn36xx/main.c if (IS_ERR(wcn->tx_enable_state)) { wcn 1243 drivers/net/wireless/ath/wcn36xx/main.c return PTR_ERR(wcn->tx_enable_state); wcn 1247 drivers/net/wireless/ath/wcn36xx/main.c wcn->tx_rings_empty_state = qcom_smem_state_get(&pdev->dev, wcn 1248 drivers/net/wireless/ath/wcn36xx/main.c "tx-rings-empty", &wcn->tx_rings_empty_state_bit); wcn 1249 drivers/net/wireless/ath/wcn36xx/main.c if (IS_ERR(wcn->tx_rings_empty_state)) { wcn 1251 drivers/net/wireless/ath/wcn36xx/main.c return PTR_ERR(wcn->tx_rings_empty_state); wcn 1260 drivers/net/wireless/ath/wcn36xx/main.c wcn->is_pronto = !!of_device_is_compatible(mmio_node, "qcom,pronto"); wcn 1264 drivers/net/wireless/ath/wcn36xx/main.c wcn->ccu_base = of_iomap(mmio_node, index); wcn 1265 drivers/net/wireless/ath/wcn36xx/main.c if (!wcn->ccu_base) { wcn 1273 drivers/net/wireless/ath/wcn36xx/main.c wcn->dxe_base = of_iomap(mmio_node, index); wcn 1274 drivers/net/wireless/ath/wcn36xx/main.c if (!wcn->dxe_base) { wcn 1284 drivers/net/wireless/ath/wcn36xx/main.c wcn->rf_id = RF_IRIS_WCN3620; wcn 1292 drivers/net/wireless/ath/wcn36xx/main.c iounmap(wcn->ccu_base); wcn 1301 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn; wcn 1317 drivers/net/wireless/ath/wcn36xx/main.c wcn = hw->priv; wcn 1318 drivers/net/wireless/ath/wcn36xx/main.c wcn->hw = hw; wcn 1319 drivers/net/wireless/ath/wcn36xx/main.c wcn->dev = &pdev->dev; wcn 1320 drivers/net/wireless/ath/wcn36xx/main.c wcn->first_boot = true; wcn 1321 drivers/net/wireless/ath/wcn36xx/main.c mutex_init(&wcn->conf_mutex); wcn 1322 drivers/net/wireless/ath/wcn36xx/main.c mutex_init(&wcn->hal_mutex); wcn 1323 drivers/net/wireless/ath/wcn36xx/main.c mutex_init(&wcn->scan_lock); wcn 1325 drivers/net/wireless/ath/wcn36xx/main.c ret = dma_set_mask_and_coherent(wcn->dev, DMA_BIT_MASK(32)); wcn 1331 drivers/net/wireless/ath/wcn36xx/main.c INIT_WORK(&wcn->scan_work, wcn36xx_hw_scan_worker); wcn 1333 drivers/net/wireless/ath/wcn36xx/main.c wcn->smd_channel = qcom_wcnss_open_channel(wcnss, "WLAN_CTRL", wcn36xx_smd_rsp_process, hw); wcn 1334 drivers/net/wireless/ath/wcn36xx/main.c if (IS_ERR(wcn->smd_channel)) { wcn 1336 drivers/net/wireless/ath/wcn36xx/main.c ret = PTR_ERR(wcn->smd_channel); wcn 1347 drivers/net/wireless/ath/wcn36xx/main.c SET_IEEE80211_PERM_ADDR(wcn->hw, addr); wcn 1350 drivers/net/wireless/ath/wcn36xx/main.c ret = wcn36xx_platform_get_resources(wcn, pdev); wcn 1354 drivers/net/wireless/ath/wcn36xx/main.c wcn36xx_init_ieee80211(wcn); wcn 1355 drivers/net/wireless/ath/wcn36xx/main.c ret = ieee80211_register_hw(wcn->hw); wcn 1362 drivers/net/wireless/ath/wcn36xx/main.c iounmap(wcn->ccu_base); wcn 1363 drivers/net/wireless/ath/wcn36xx/main.c iounmap(wcn->dxe_base); wcn 1373 drivers/net/wireless/ath/wcn36xx/main.c struct wcn36xx *wcn = hw->priv; wcn 1376 drivers/net/wireless/ath/wcn36xx/main.c release_firmware(wcn->nv); wcn 1380 drivers/net/wireless/ath/wcn36xx/main.c qcom_smem_state_put(wcn->tx_enable_state); wcn 1381 drivers/net/wireless/ath/wcn36xx/main.c qcom_smem_state_put(wcn->tx_rings_empty_state); wcn 1383 drivers/net/wireless/ath/wcn36xx/main.c rpmsg_destroy_ept(wcn->smd_channel); wcn 1385 drivers/net/wireless/ath/wcn36xx/main.c iounmap(wcn->dxe_base); wcn 1386 drivers/net/wireless/ath/wcn36xx/main.c iounmap(wcn->ccu_base); wcn 1388 drivers/net/wireless/ath/wcn36xx/main.c mutex_destroy(&wcn->hal_mutex); wcn 21 drivers/net/wireless/ath/wcn36xx/pmc.c int wcn36xx_pmc_enter_bmps_state(struct wcn36xx *wcn, wcn 27 drivers/net/wireless/ath/wcn36xx/pmc.c ret = wcn36xx_smd_enter_bmps(wcn, vif); wcn 42 drivers/net/wireless/ath/wcn36xx/pmc.c int wcn36xx_pmc_exit_bmps_state(struct wcn36xx *wcn, wcn 53 drivers/net/wireless/ath/wcn36xx/pmc.c wcn36xx_smd_exit_bmps(wcn, vif); wcn 58 drivers/net/wireless/ath/wcn36xx/pmc.c int wcn36xx_enable_keep_alive_null_packet(struct wcn36xx *wcn, wcn 62 drivers/net/wireless/ath/wcn36xx/pmc.c return wcn36xx_smd_keep_alive_req(wcn, vif, wcn 27 drivers/net/wireless/ath/wcn36xx/pmc.h int wcn36xx_pmc_enter_bmps_state(struct wcn36xx *wcn, wcn 29 drivers/net/wireless/ath/wcn36xx/pmc.h int wcn36xx_pmc_exit_bmps_state(struct wcn36xx *wcn, wcn 31 drivers/net/wireless/ath/wcn36xx/pmc.h int wcn36xx_enable_keep_alive_null_packet(struct wcn36xx *wcn, wcn 82 drivers/net/wireless/ath/wcn36xx/smd.c static int put_cfg_tlv_u32(struct wcn36xx *wcn, size_t *len, u32 id, u32 value) wcn 92 drivers/net/wireless/ath/wcn36xx/smd.c entry = (struct wcn36xx_hal_cfg *) (wcn->hal_buf + *len); wcn 106 drivers/net/wireless/ath/wcn36xx/smd.c static void wcn36xx_smd_set_bss_nw_type(struct wcn36xx *wcn, wcn 110 drivers/net/wireless/ath/wcn36xx/smd.c if (NL80211_BAND_5GHZ == WCN36XX_BAND(wcn)) wcn 192 drivers/net/wireless/ath/wcn36xx/smd.c static void wcn36xx_smd_set_sta_params(struct wcn36xx *wcn, wcn 209 drivers/net/wireless/ath/wcn36xx/smd.c sta_params->listen_interval = WCN36XX_LISTEN_INTERVAL(wcn); wcn 251 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_send_and_wait(struct wcn36xx *wcn, size_t len) wcn 256 drivers/net/wireless/ath/wcn36xx/smd.c (struct wcn36xx_hal_msg_header *)wcn->hal_buf; wcn 259 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_dbg_dump(WCN36XX_DBG_SMD_DUMP, "HAL >>> ", wcn->hal_buf, len); wcn 261 drivers/net/wireless/ath/wcn36xx/smd.c init_completion(&wcn->hal_rsp_compl); wcn 263 drivers/net/wireless/ath/wcn36xx/smd.c ret = rpmsg_send(wcn->smd_channel, wcn->hal_buf, len); wcn 268 drivers/net/wireless/ath/wcn36xx/smd.c if (wait_for_completion_timeout(&wcn->hal_rsp_compl, wcn 338 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_load_nv(struct wcn36xx *wcn) wcn 346 drivers/net/wireless/ath/wcn36xx/smd.c if (!wcn->nv) { wcn 347 drivers/net/wireless/ath/wcn36xx/smd.c ret = request_firmware(&wcn->nv, WLAN_NV_FILE, wcn->dev); wcn 355 drivers/net/wireless/ath/wcn36xx/smd.c nv_d = (struct nv_data *)wcn->nv->data; wcn 362 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 365 drivers/net/wireless/ath/wcn36xx/smd.c fw_bytes_left = wcn->nv->size - fm_offset - 4; wcn 379 drivers/net/wireless/ath/wcn36xx/smd.c memcpy(wcn->hal_buf, &msg_body, sizeof(msg_body)); wcn 382 drivers/net/wireless/ath/wcn36xx/smd.c memcpy(wcn->hal_buf + sizeof(msg_body), wcn 386 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 389 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn 390 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_rsp_len); wcn 402 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 406 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_start_rsp(struct wcn36xx *wcn, void *buf, size_t len) wcn 418 drivers/net/wireless/ath/wcn36xx/smd.c memcpy(wcn->crm_version, rsp->start_rsp_params.crm_version, wcn 420 drivers/net/wireless/ath/wcn36xx/smd.c memcpy(wcn->wlan_version, rsp->start_rsp_params.wlan_version, wcn 424 drivers/net/wireless/ath/wcn36xx/smd.c wcn->crm_version[WCN36XX_HAL_VERSION_LENGTH] = '\0'; wcn 425 drivers/net/wireless/ath/wcn36xx/smd.c wcn->wlan_version[WCN36XX_HAL_VERSION_LENGTH] = '\0'; wcn 427 drivers/net/wireless/ath/wcn36xx/smd.c wcn->fw_revision = rsp->start_rsp_params.version.revision; wcn 428 drivers/net/wireless/ath/wcn36xx/smd.c wcn->fw_version = rsp->start_rsp_params.version.version; wcn 429 drivers/net/wireless/ath/wcn36xx/smd.c wcn->fw_minor = rsp->start_rsp_params.version.minor; wcn 430 drivers/net/wireless/ath/wcn36xx/smd.c wcn->fw_major = rsp->start_rsp_params.version.major; wcn 432 drivers/net/wireless/ath/wcn36xx/smd.c if (wcn->first_boot) { wcn 433 drivers/net/wireless/ath/wcn36xx/smd.c wcn->first_boot = false; wcn 435 drivers/net/wireless/ath/wcn36xx/smd.c wcn->wlan_version, wcn->crm_version); wcn 438 drivers/net/wireless/ath/wcn36xx/smd.c wcn->fw_major, wcn->fw_minor, wcn 439 drivers/net/wireless/ath/wcn36xx/smd.c wcn->fw_version, wcn->fw_revision, wcn 446 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_start(struct wcn36xx *wcn) wcn 453 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 459 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 461 drivers/net/wireless/ath/wcn36xx/smd.c body = (struct wcn36xx_hal_mac_start_req_msg *)wcn->hal_buf; wcn 465 drivers/net/wireless/ath/wcn36xx/smd.c ret = put_cfg_tlv_u32(wcn, &len, wcn36xx_cfg_vals[i].cfg_id, wcn 476 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, body->header.len); wcn 482 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_start_rsp(wcn, wcn->hal_buf, wcn->hal_rsp_len); wcn 489 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 493 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_stop(struct wcn36xx *wcn) wcn 498 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 503 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 505 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 510 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 516 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 520 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_init_scan(struct wcn36xx *wcn, enum wcn36xx_hal_sys_mode mode) wcn 525 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 530 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 534 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 539 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 545 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 549 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_start_scan(struct wcn36xx *wcn, u8 scan_channel) wcn 554 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 559 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 564 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 569 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 575 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 579 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_end_scan(struct wcn36xx *wcn, u8 scan_channel) wcn 584 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 589 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 594 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 599 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 605 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 609 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_finish_scan(struct wcn36xx *wcn, wcn 615 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 620 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 625 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 630 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 636 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 640 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_start_hw_scan(struct wcn36xx *wcn, struct ieee80211_vif *vif, wcn 650 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 688 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, (*msg_body)); wcn 695 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body->header.len); wcn 700 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 708 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 712 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_stop_hw_scan(struct wcn36xx *wcn) wcn 717 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 719 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 723 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 728 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 735 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 753 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_switch_channel(struct wcn36xx *wcn, wcn 759 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 767 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 769 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 774 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_switch_channel_rsp(wcn->hal_buf, wcn->hal_rsp_len); wcn 780 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 810 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_process_ptt_msg(struct wcn36xx *wcn, wcn 817 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 829 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_PTT_MSG_BUF(wcn->hal_buf, p_msg_body); wcn 831 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, p_msg_body->header.len); wcn 836 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_process_ptt_msg_rsp(wcn->hal_buf, wcn->hal_rsp_len, wcn 845 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 866 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_update_scan_params(struct wcn36xx *wcn, wcn 872 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 886 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 892 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 897 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_update_scan_params_rsp(wcn->hal_buf, wcn 898 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_rsp_len); wcn 905 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 909 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_add_sta_self_rsp(struct wcn36xx *wcn, wcn 938 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_add_sta_self(struct wcn36xx *wcn, struct ieee80211_vif *vif) wcn 943 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 948 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 954 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 959 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_add_sta_self_rsp(wcn, wcn 961 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_buf, wcn 962 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_rsp_len); wcn 968 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 972 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_delete_sta_self(struct wcn36xx *wcn, u8 *addr) wcn 977 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 982 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 984 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 989 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 996 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1000 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_delete_sta(struct wcn36xx *wcn, u8 sta_index) wcn 1005 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1010 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1016 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1021 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1027 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1047 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_join(struct wcn36xx *wcn, const u8 *bssid, u8 *vif, u8 ch) wcn 1052 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1059 drivers/net/wireless/ath/wcn36xx/smd.c if (conf_is_ht40_minus(&wcn->hw->conf)) wcn 1062 drivers/net/wireless/ath/wcn36xx/smd.c else if (conf_is_ht40_plus(&wcn->hw->conf)) wcn 1072 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1079 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1084 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_join_rsp(wcn->hal_buf, wcn->hal_rsp_len); wcn 1090 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1094 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_set_link_st(struct wcn36xx *wcn, const u8 *bssid, wcn 1101 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1108 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1114 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1119 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1125 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1129 drivers/net/wireless/ath/wcn36xx/smd.c static void wcn36xx_smd_convert_sta_to_v1(struct wcn36xx *wcn, wcn 1166 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_config_sta_rsp(struct wcn36xx *wcn, wcn 1199 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_config_sta_v1(struct wcn36xx *wcn, wcn 1207 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_convert_sta_to_v1(wcn, &orig->sta_params, wcn 1210 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1217 drivers/net/wireless/ath/wcn36xx/smd.c return wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1220 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif, wcn 1227 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1232 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_set_sta_params(wcn, vif, sta, sta_params); wcn 1234 drivers/net/wireless/ath/wcn36xx/smd.c if (!wcn36xx_is_fw_version(wcn, 1, 2, 2, 24)) { wcn 1235 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_config_sta_v1(wcn, &msg); wcn 1237 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg); wcn 1245 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg.header.len); wcn 1251 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_config_sta_rsp(wcn, wcn 1253 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_buf, wcn 1254 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_rsp_len); wcn 1260 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1264 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn, wcn 1361 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_convert_sta_to_v1(wcn, &orig->bss_params.sta, wcn 1364 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, (*msg_body)); wcn 1376 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body->header.len); wcn 1383 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_config_bss_rsp(struct wcn36xx *wcn, wcn 1427 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif, wcn 1437 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1477 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_set_bss_nw_type(wcn, sta, bss); wcn 1491 drivers/net/wireless/ath/wcn36xx/smd.c bss->oper_channel = WCN36XX_HW_CHANNEL(wcn); wcn 1493 drivers/net/wireless/ath/wcn36xx/smd.c if (conf_is_ht40_minus(&wcn->hw->conf)) wcn 1495 drivers/net/wireless/ath/wcn36xx/smd.c else if (conf_is_ht40_plus(&wcn->hw->conf)) wcn 1501 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_set_sta_params(wcn, vif, sta, sta_params); wcn 1522 drivers/net/wireless/ath/wcn36xx/smd.c bss->max_tx_power = WCN36XX_MAX_POWER(wcn); wcn 1539 drivers/net/wireless/ath/wcn36xx/smd.c if (!wcn36xx_is_fw_version(wcn, 1, 2, 2, 24)) { wcn 1540 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_config_bss_v1(wcn, msg); wcn 1542 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, (*msg)); wcn 1544 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg->header.len); wcn 1550 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_config_bss_rsp(wcn, wcn 1553 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_buf, wcn 1554 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_rsp_len); wcn 1561 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1565 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_delete_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif) wcn 1571 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1580 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1584 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1589 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1597 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1601 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct ieee80211_vif *vif, wcn 1608 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1654 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1660 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1665 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1671 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1675 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_update_proberesp_tmpl(struct wcn36xx *wcn, wcn 1682 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1697 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg); wcn 1703 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg.header.len); wcn 1708 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1715 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1719 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_set_stakey(struct wcn36xx *wcn, wcn 1729 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1751 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1753 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1758 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1764 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1768 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_set_bsskey(struct wcn36xx *wcn, wcn 1778 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1790 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1792 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1797 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1803 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1807 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_remove_stakey(struct wcn36xx *wcn, wcn 1815 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1822 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1824 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1829 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1835 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1839 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_remove_bsskey(struct wcn36xx *wcn, wcn 1847 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1853 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1855 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1860 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1866 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1870 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_enter_bmps(struct wcn36xx *wcn, struct ieee80211_vif *vif) wcn 1876 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1883 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1885 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1890 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1896 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1900 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_exit_bmps(struct wcn36xx *wcn, struct ieee80211_vif *vif) wcn 1906 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1911 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1913 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1918 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1924 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1927 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_set_power_params(struct wcn36xx *wcn, bool ignore_dtim) wcn 1932 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1942 drivers/net/wireless/ath/wcn36xx/smd.c msg_body.listen_interval = WCN36XX_LISTEN_INTERVAL(wcn); wcn 1944 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1946 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1953 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1959 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_keep_alive_req(struct wcn36xx *wcn, wcn 1967 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 1982 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 1984 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 1989 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 1995 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 1999 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_dump_cmd_req(struct wcn36xx *wcn, u32 arg1, u32 arg2, wcn 2005 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 2014 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 2016 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 2021 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 2027 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 2074 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_feature_caps_exchange(struct wcn36xx *wcn) wcn 2079 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 2084 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 2086 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 2091 drivers/net/wireless/ath/wcn36xx/smd.c if (wcn->hal_rsp_len != sizeof(*rsp)) { wcn 2096 drivers/net/wireless/ath/wcn36xx/smd.c rsp = (struct wcn36xx_hal_feat_caps_msg *) wcn->hal_buf; wcn 2099 drivers/net/wireless/ath/wcn36xx/smd.c wcn->fw_feat_caps[i] = rsp->feat_caps[i]; wcn 2101 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 2105 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_add_ba_session(struct wcn36xx *wcn, wcn 2115 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 2131 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 2133 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 2138 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 2144 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 2148 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_add_ba(struct wcn36xx *wcn) wcn 2153 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 2159 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 2161 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 2166 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 2172 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 2176 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_del_ba(struct wcn36xx *wcn, u16 tid, u8 sta_index) wcn 2181 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 2187 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 2189 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 2194 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 2200 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 2215 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_trigger_ba(struct wcn36xx *wcn, u8 sta_index) wcn 2221 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 2227 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 2230 drivers/net/wireless/ath/wcn36xx/smd.c (wcn->hal_buf + sizeof(msg_body)); wcn 2234 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); wcn 2239 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_trigger_ba_rsp(wcn->hal_buf, wcn->hal_rsp_len); wcn 2245 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 2249 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_tx_compl_ind(struct wcn36xx *wcn, void *buf, size_t len) wcn 2258 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_dxe_tx_ack_ind(wcn, rsp->status); wcn 2263 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_hw_scan_ind(struct wcn36xx *wcn, void *buf, size_t len) wcn 2281 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->scan_lock); wcn 2282 drivers/net/wireless/ath/wcn36xx/smd.c wcn->scan_req = NULL; wcn 2283 drivers/net/wireless/ath/wcn36xx/smd.c if (wcn->scan_aborted) wcn 2285 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->scan_lock); wcn 2286 drivers/net/wireless/ath/wcn36xx/smd.c ieee80211_scan_completed(wcn->hw, &scan_info); wcn 2300 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_missed_beacon_ind(struct wcn36xx *wcn, wcn 2309 drivers/net/wireless/ath/wcn36xx/smd.c if (wcn36xx_is_fw_version(wcn, 1, 2, 2, 24)) { wcn 2310 drivers/net/wireless/ath/wcn36xx/smd.c list_for_each_entry(tmp, &wcn->vif_list, list) { wcn 2324 drivers/net/wireless/ath/wcn36xx/smd.c list_for_each_entry(tmp, &wcn->vif_list, list) { wcn 2338 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_delete_sta_context_ind(struct wcn36xx *wcn, wcn 2354 drivers/net/wireless/ath/wcn36xx/smd.c list_for_each_entry(tmp, &wcn->vif_list, list) { wcn 2370 drivers/net/wireless/ath/wcn36xx/smd.c static int wcn36xx_smd_print_reg_info_ind(struct wcn36xx *wcn, wcn 2394 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_update_cfg(struct wcn36xx *wcn, u32 cfg_id, u32 value) wcn 2400 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 2403 drivers/net/wireless/ath/wcn36xx/smd.c PREPARE_HAL_BUF(wcn->hal_buf, msg_body); wcn 2405 drivers/net/wireless/ath/wcn36xx/smd.c body = (struct wcn36xx_hal_update_cfg_req_msg *) wcn->hal_buf; wcn 2408 drivers/net/wireless/ath/wcn36xx/smd.c put_cfg_tlv_u32(wcn, &len, cfg_id, value); wcn 2412 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, body->header.len); wcn 2417 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 2423 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 2427 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_set_mc_list(struct wcn36xx *wcn, wcn 2435 drivers/net/wireless/ath/wcn36xx/smd.c mutex_lock(&wcn->hal_mutex); wcn 2438 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_buf; wcn 2451 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_send_and_wait(wcn, msg_body->header.len); wcn 2456 drivers/net/wireless/ath/wcn36xx/smd.c ret = wcn36xx_smd_rsp_status_check(wcn->hal_buf, wcn->hal_rsp_len); wcn 2462 drivers/net/wireless/ath/wcn36xx/smd.c mutex_unlock(&wcn->hal_mutex); wcn 2471 drivers/net/wireless/ath/wcn36xx/smd.c struct wcn36xx *wcn = hw->priv; wcn 2514 drivers/net/wireless/ath/wcn36xx/smd.c memcpy(wcn->hal_buf, buf, len); wcn 2515 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_rsp_len = len; wcn 2516 drivers/net/wireless/ath/wcn36xx/smd.c complete(&wcn->hal_rsp_compl); wcn 2537 drivers/net/wireless/ath/wcn36xx/smd.c spin_lock(&wcn->hal_ind_lock); wcn 2538 drivers/net/wireless/ath/wcn36xx/smd.c list_add_tail(&msg_ind->list, &wcn->hal_ind_queue); wcn 2539 drivers/net/wireless/ath/wcn36xx/smd.c queue_work(wcn->hal_ind_wq, &wcn->hal_ind_work); wcn 2540 drivers/net/wireless/ath/wcn36xx/smd.c spin_unlock(&wcn->hal_ind_lock); wcn 2553 drivers/net/wireless/ath/wcn36xx/smd.c struct wcn36xx *wcn = wcn 2561 drivers/net/wireless/ath/wcn36xx/smd.c spin_lock_irqsave(&wcn->hal_ind_lock, flags); wcn 2563 drivers/net/wireless/ath/wcn36xx/smd.c if (list_empty(&wcn->hal_ind_queue)) { wcn 2564 drivers/net/wireless/ath/wcn36xx/smd.c spin_unlock_irqrestore(&wcn->hal_ind_lock, flags); wcn 2568 drivers/net/wireless/ath/wcn36xx/smd.c hal_ind_msg = list_first_entry(&wcn->hal_ind_queue, wcn 2572 drivers/net/wireless/ath/wcn36xx/smd.c spin_unlock_irqrestore(&wcn->hal_ind_lock, flags); wcn 2582 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_tx_compl_ind(wcn, wcn 2587 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_missed_beacon_ind(wcn, wcn 2592 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_delete_sta_context_ind(wcn, wcn 2597 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_print_reg_info_ind(wcn, wcn 2602 drivers/net/wireless/ath/wcn36xx/smd.c wcn36xx_smd_hw_scan_ind(wcn, hal_ind_msg->msg, wcn 2613 drivers/net/wireless/ath/wcn36xx/smd.c int wcn36xx_smd_open(struct wcn36xx *wcn) wcn 2615 drivers/net/wireless/ath/wcn36xx/smd.c wcn->hal_ind_wq = create_freezable_workqueue("wcn36xx_smd_ind"); wcn 2616 drivers/net/wireless/ath/wcn36xx/smd.c if (!wcn->hal_ind_wq) wcn 2619 drivers/net/wireless/ath/wcn36xx/smd.c INIT_WORK(&wcn->hal_ind_work, wcn36xx_ind_smd_work); wcn 2620 drivers/net/wireless/ath/wcn36xx/smd.c INIT_LIST_HEAD(&wcn->hal_ind_queue); wcn 2621 drivers/net/wireless/ath/wcn36xx/smd.c spin_lock_init(&wcn->hal_ind_lock); wcn 2626 drivers/net/wireless/ath/wcn36xx/smd.c void wcn36xx_smd_close(struct wcn36xx *wcn) wcn 2630 drivers/net/wireless/ath/wcn36xx/smd.c cancel_work_sync(&wcn->hal_ind_work); wcn 2631 drivers/net/wireless/ath/wcn36xx/smd.c destroy_workqueue(wcn->hal_ind_wq); wcn 2633 drivers/net/wireless/ath/wcn36xx/smd.c list_for_each_entry_safe(msg, tmp, &wcn->hal_ind_queue, list) wcn 56 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_open(struct wcn36xx *wcn); wcn 57 drivers/net/wireless/ath/wcn36xx/smd.h void wcn36xx_smd_close(struct wcn36xx *wcn); wcn 59 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_load_nv(struct wcn36xx *wcn); wcn 60 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_start(struct wcn36xx *wcn); wcn 61 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_stop(struct wcn36xx *wcn); wcn 62 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_init_scan(struct wcn36xx *wcn, enum wcn36xx_hal_sys_mode mode); wcn 63 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_start_scan(struct wcn36xx *wcn, u8 scan_channel); wcn 64 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_end_scan(struct wcn36xx *wcn, u8 scan_channel); wcn 65 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_finish_scan(struct wcn36xx *wcn, wcn 67 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_update_scan_params(struct wcn36xx *wcn, u8 *channels, size_t channel_count); wcn 68 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_start_hw_scan(struct wcn36xx *wcn, struct ieee80211_vif *vif, wcn 70 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_stop_hw_scan(struct wcn36xx *wcn); wcn 71 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_add_sta_self(struct wcn36xx *wcn, struct ieee80211_vif *vif); wcn 72 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_delete_sta_self(struct wcn36xx *wcn, u8 *addr); wcn 73 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_delete_sta(struct wcn36xx *wcn, u8 sta_index); wcn 74 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_join(struct wcn36xx *wcn, const u8 *bssid, u8 *vif, u8 ch); wcn 75 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_set_link_st(struct wcn36xx *wcn, const u8 *bssid, wcn 78 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif, wcn 81 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_delete_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif); wcn 82 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif, wcn 84 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct ieee80211_vif *vif, wcn 87 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_switch_channel(struct wcn36xx *wcn, wcn 89 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_process_ptt_msg(struct wcn36xx *wcn, wcn 93 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_update_proberesp_tmpl(struct wcn36xx *wcn, wcn 96 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_set_stakey(struct wcn36xx *wcn, wcn 102 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_set_bsskey(struct wcn36xx *wcn, wcn 108 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_remove_stakey(struct wcn36xx *wcn, wcn 112 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_remove_bsskey(struct wcn36xx *wcn, wcn 116 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_enter_bmps(struct wcn36xx *wcn, struct ieee80211_vif *vif); wcn 117 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_exit_bmps(struct wcn36xx *wcn, struct ieee80211_vif *vif); wcn 118 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_set_power_params(struct wcn36xx *wcn, bool ignore_dtim); wcn 119 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_keep_alive_req(struct wcn36xx *wcn, wcn 122 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_dump_cmd_req(struct wcn36xx *wcn, u32 arg1, u32 arg2, wcn 124 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_feature_caps_exchange(struct wcn36xx *wcn); wcn 129 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_add_ba_session(struct wcn36xx *wcn, wcn 135 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_add_ba(struct wcn36xx *wcn); wcn 136 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_del_ba(struct wcn36xx *wcn, u16 tid, u8 sta_index); wcn 137 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_trigger_ba(struct wcn36xx *wcn, u8 sta_index); wcn 139 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_update_cfg(struct wcn36xx *wcn, u32 cfg_id, u32 value); wcn 144 drivers/net/wireless/ath/wcn36xx/smd.h int wcn36xx_smd_set_mc_list(struct wcn36xx *wcn, wcn 43 drivers/net/wireless/ath/wcn36xx/testmode.c static int wcn36xx_tm_cmd_ptt(struct wcn36xx *wcn, struct ieee80211_vif *vif, wcn 70 drivers/net/wireless/ath/wcn36xx/testmode.c body->drv_major = wcn->fw_major; wcn 71 drivers/net/wireless/ath/wcn36xx/testmode.c body->drv_minor = wcn->fw_minor; wcn 72 drivers/net/wireless/ath/wcn36xx/testmode.c body->drv_patch = wcn->fw_version; wcn 73 drivers/net/wireless/ath/wcn36xx/testmode.c body->drv_build = wcn->fw_revision; wcn 84 drivers/net/wireless/ath/wcn36xx/testmode.c msg->resp_status = wcn36xx_smd_process_ptt_msg(wcn, vif, msg, wcn 104 drivers/net/wireless/ath/wcn36xx/testmode.c skb = cfg80211_testmode_alloc_reply_skb(wcn->hw->wiphy, wcn 129 drivers/net/wireless/ath/wcn36xx/testmode.c struct wcn36xx *wcn = hw->priv; wcn 148 drivers/net/wireless/ath/wcn36xx/testmode.c return wcn36xx_tm_cmd_ptt(wcn, vif, tb); wcn 26 drivers/net/wireless/ath/wcn36xx/txrx.c int wcn36xx_rx_skb(struct wcn36xx *wcn, struct sk_buff *skb) wcn 53 drivers/net/wireless/ath/wcn36xx/txrx.c if (ieee80211_is_beacon(hdr->frame_control) && wcn->scan_freq) { wcn 54 drivers/net/wireless/ath/wcn36xx/txrx.c status.freq = wcn->scan_freq; wcn 55 drivers/net/wireless/ath/wcn36xx/txrx.c status.band = wcn->scan_band; wcn 57 drivers/net/wireless/ath/wcn36xx/txrx.c status.freq = WCN36XX_CENTER_FREQ(wcn); wcn 58 drivers/net/wireless/ath/wcn36xx/txrx.c status.band = WCN36XX_BAND(wcn); wcn 87 drivers/net/wireless/ath/wcn36xx/txrx.c ieee80211_rx_irqsafe(wcn->hw, skb); wcn 106 drivers/net/wireless/ath/wcn36xx/txrx.c static inline struct wcn36xx_vif *get_vif_by_addr(struct wcn36xx *wcn, wcn 111 drivers/net/wireless/ath/wcn36xx/txrx.c list_for_each_entry(vif_priv, &wcn->vif_list, list) { wcn 120 drivers/net/wireless/ath/wcn36xx/txrx.c static void wcn36xx_tx_start_ampdu(struct wcn36xx *wcn, wcn 128 drivers/net/wireless/ath/wcn36xx/txrx.c if (!conf_is_ht(&wcn->hw->conf)) wcn 156 drivers/net/wireless/ath/wcn36xx/txrx.c struct wcn36xx *wcn, wcn 188 drivers/net/wireless/ath/wcn36xx/txrx.c __vif_priv = get_vif_by_addr(wcn, hdr->addr2); wcn 213 drivers/net/wireless/ath/wcn36xx/txrx.c wcn36xx_tx_start_ampdu(wcn, sta_priv, skb); wcn 217 drivers/net/wireless/ath/wcn36xx/txrx.c struct wcn36xx *wcn, wcn 224 drivers/net/wireless/ath/wcn36xx/txrx.c get_vif_by_addr(wcn, hdr->addr2); wcn 231 drivers/net/wireless/ath/wcn36xx/txrx.c bd->bd_rate = (WCN36XX_BAND(wcn) == NL80211_BAND_5GHZ) ? wcn 264 drivers/net/wireless/ath/wcn36xx/txrx.c int wcn36xx_start_tx(struct wcn36xx *wcn, wcn 293 drivers/net/wireless/ath/wcn36xx/txrx.c spin_lock_irqsave(&wcn->dxe_lock, flags); wcn 294 drivers/net/wireless/ath/wcn36xx/txrx.c if (wcn->tx_ack_skb) { wcn 295 drivers/net/wireless/ath/wcn36xx/txrx.c spin_unlock_irqrestore(&wcn->dxe_lock, flags); wcn 300 drivers/net/wireless/ath/wcn36xx/txrx.c wcn->tx_ack_skb = skb; wcn 301 drivers/net/wireless/ath/wcn36xx/txrx.c spin_unlock_irqrestore(&wcn->dxe_lock, flags); wcn 308 drivers/net/wireless/ath/wcn36xx/txrx.c ieee80211_stop_queues(wcn->hw); wcn 313 drivers/net/wireless/ath/wcn36xx/txrx.c wcn36xx_set_tx_data(&bd, wcn, &vif_priv, sta_priv, skb, bcast); wcn 316 drivers/net/wireless/ath/wcn36xx/txrx.c wcn36xx_set_tx_mgmt(&bd, wcn, &vif_priv, skb, bcast); wcn 321 drivers/net/wireless/ath/wcn36xx/txrx.c ret = wcn36xx_dxe_tx_frame(wcn, vif_priv, &bd, skb, is_low); wcn 326 drivers/net/wireless/ath/wcn36xx/txrx.c spin_lock_irqsave(&wcn->dxe_lock, flags); wcn 327 drivers/net/wireless/ath/wcn36xx/txrx.c wcn->tx_ack_skb = NULL; wcn 328 drivers/net/wireless/ath/wcn36xx/txrx.c spin_unlock_irqrestore(&wcn->dxe_lock, flags); wcn 330 drivers/net/wireless/ath/wcn36xx/txrx.c ieee80211_wake_queues(wcn->hw); wcn 162 drivers/net/wireless/ath/wcn36xx/txrx.h int wcn36xx_rx_skb(struct wcn36xx *wcn, struct sk_buff *skb); wcn 163 drivers/net/wireless/ath/wcn36xx/txrx.h int wcn36xx_start_tx(struct wcn36xx *wcn, wcn 259 drivers/net/wireless/ath/wcn36xx/wcn36xx.h static inline bool wcn36xx_is_fw_version(struct wcn36xx *wcn, wcn 265 drivers/net/wireless/ath/wcn36xx/wcn36xx.h return (wcn->fw_major == major && wcn 266 drivers/net/wireless/ath/wcn36xx/wcn36xx.h wcn->fw_minor == minor && wcn 267 drivers/net/wireless/ath/wcn36xx/wcn36xx.h wcn->fw_version == version && wcn 268 drivers/net/wireless/ath/wcn36xx/wcn36xx.h wcn->fw_revision == revision);