Lines Matching refs:trans

23 	struct iwl_trans *trans;  in iwl_trans_alloc()  local
28 trans = devm_kzalloc(dev, sizeof(*trans) + priv_size, GFP_KERNEL); in iwl_trans_alloc()
29 if (!trans) in iwl_trans_alloc()
32 trans->trans_cfg = cfg_trans; in iwl_trans_alloc()
35 lockdep_init_map(&trans->sync_cmd_lockdep_map, "sync_cmd_lockdep_map", in iwl_trans_alloc()
39 trans->dev = dev; in iwl_trans_alloc()
40 trans->ops = ops; in iwl_trans_alloc()
41 trans->num_rx_queues = 1; in iwl_trans_alloc()
45 if (trans->trans_cfg->use_tfh) { in iwl_trans_alloc()
46 trans->txqs.tfd.addr_size = 64; in iwl_trans_alloc()
47 trans->txqs.tfd.max_tbs = IWL_TFH_NUM_TBS; in iwl_trans_alloc()
48 trans->txqs.tfd.size = sizeof(struct iwl_tfh_tfd); in iwl_trans_alloc()
50 trans->txqs.tfd.addr_size = 36; in iwl_trans_alloc()
51 trans->txqs.tfd.max_tbs = IWL_NUM_OF_TBS; in iwl_trans_alloc()
52 trans->txqs.tfd.size = sizeof(struct iwl_tfd); in iwl_trans_alloc()
54 trans->max_skb_frags = IWL_TRANS_MAX_FRAGS(trans); in iwl_trans_alloc()
56 return trans; in iwl_trans_alloc()
59 int iwl_trans_init(struct iwl_trans *trans) in iwl_trans_init() argument
63 if (!trans->trans_cfg->gen2) { in iwl_trans_init()
66 } else if (trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_AX210) { in iwl_trans_init()
78 if (WARN_ON(trans->trans_cfg->gen2 && txcmd_size >= txcmd_align)) in iwl_trans_init()
81 if (trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) in iwl_trans_init()
82 trans->txqs.bc_tbl_size = sizeof(struct iwl_gen3_bc_tbl); in iwl_trans_init()
84 trans->txqs.bc_tbl_size = sizeof(struct iwlagn_scd_bc_tbl); in iwl_trans_init()
90 if (trans->trans_cfg->gen2) { in iwl_trans_init()
91 trans->txqs.bc_pool = dmam_pool_create("iwlwifi:bc", trans->dev, in iwl_trans_init()
92 trans->txqs.bc_tbl_size, in iwl_trans_init()
94 if (!trans->txqs.bc_pool) in iwl_trans_init()
99 WARN_ON(trans->txqs.tfd.addr_size != in iwl_trans_init()
100 (trans->trans_cfg->use_tfh ? 64 : 36)); in iwl_trans_init()
102 snprintf(trans->dev_cmd_pool_name, sizeof(trans->dev_cmd_pool_name), in iwl_trans_init()
103 "iwl_cmd_pool:%s", dev_name(trans->dev)); in iwl_trans_init()
104 trans->dev_cmd_pool = in iwl_trans_init()
105 kmem_cache_create(trans->dev_cmd_pool_name, in iwl_trans_init()
108 if (!trans->dev_cmd_pool) in iwl_trans_init()
111 trans->txqs.tso_hdr_page = alloc_percpu(struct iwl_tso_hdr_page); in iwl_trans_init()
112 if (!trans->txqs.tso_hdr_page) { in iwl_trans_init()
113 kmem_cache_destroy(trans->dev_cmd_pool); in iwl_trans_init()
118 init_waitqueue_head(&trans->wait_command_queue); in iwl_trans_init()
123 void iwl_trans_free(struct iwl_trans *trans) in iwl_trans_free() argument
127 if (trans->txqs.tso_hdr_page) { in iwl_trans_free()
130 per_cpu_ptr(trans->txqs.tso_hdr_page, i); in iwl_trans_free()
136 free_percpu(trans->txqs.tso_hdr_page); in iwl_trans_free()
139 kmem_cache_destroy(trans->dev_cmd_pool); in iwl_trans_free()
142 int iwl_trans_send_cmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd) in iwl_trans_send_cmd() argument
147 test_bit(STATUS_RFKILL_OPMODE, &trans->status))) in iwl_trans_send_cmd()
159 if (unlikely(trans->system_pm_mode == IWL_PLAT_PM_MODE_D3 && in iwl_trans_send_cmd()
163 if (unlikely(test_bit(STATUS_FW_ERROR, &trans->status))) in iwl_trans_send_cmd()
166 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) { in iwl_trans_send_cmd()
167 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_send_cmd()
176 lock_map_acquire_read(&trans->sync_cmd_lockdep_map); in iwl_trans_send_cmd()
178 if (trans->wide_cmd_header && !iwl_cmd_groupid(cmd->id)) { in iwl_trans_send_cmd()
183 ret = iwl_trans_txq_send_hcmd(trans, cmd); in iwl_trans_send_cmd()
186 lock_map_release(&trans->sync_cmd_lockdep_map); in iwl_trans_send_cmd()
212 const char *iwl_get_cmd_string(struct iwl_trans *trans, u32 id) in iwl_get_cmd_string() argument
222 if (!trans->command_groups || grp >= trans->command_groups_size || in iwl_get_cmd_string()
223 !trans->command_groups[grp].arr) in iwl_get_cmd_string()
226 arr = &trans->command_groups[grp]; in iwl_get_cmd_string()
234 int iwl_cmd_groups_verify_sorted(const struct iwl_trans_config *trans) in iwl_cmd_groups_verify_sorted() argument
239 for (i = 0; i < trans->command_groups_size; i++) { in iwl_cmd_groups_verify_sorted()
240 arr = &trans->command_groups[i]; in iwl_cmd_groups_verify_sorted()