Lines Matching refs:trans

11 #include "iwl-trans.h"
23 struct iwl_trans *trans;
28 trans = devm_kzalloc(dev, sizeof(*trans) + priv_size, GFP_KERNEL);
29 if (!trans)
32 trans->trans_cfg = cfg_trans;
35 lockdep_init_map(&trans->sync_cmd_lockdep_map, "sync_cmd_lockdep_map",
39 trans->dev = dev;
40 trans->ops = ops;
41 trans->num_rx_queues = 1;
45 if (trans->trans_cfg->gen2) {
46 trans->txqs.tfd.addr_size = 64;
47 trans->txqs.tfd.max_tbs = IWL_TFH_NUM_TBS;
48 trans->txqs.tfd.size = sizeof(struct iwl_tfh_tfd);
50 trans->txqs.tfd.addr_size = 36;
51 trans->txqs.tfd.max_tbs = IWL_NUM_OF_TBS;
52 trans->txqs.tfd.size = sizeof(struct iwl_tfd);
54 trans->max_skb_frags = IWL_TRANS_MAX_FRAGS(trans);
56 return trans;
59 int iwl_trans_init(struct iwl_trans *trans)
63 if (!trans->trans_cfg->gen2) {
66 } else if (trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_AX210) {
78 if (WARN_ON(trans->trans_cfg->gen2 && txcmd_size >= txcmd_align))
81 if (trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_BZ)
82 trans->txqs.bc_tbl_size =
84 else if (trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210)
85 trans->txqs.bc_tbl_size =
88 trans->txqs.bc_tbl_size = sizeof(struct iwlagn_scd_bc_tbl);
94 if (trans->trans_cfg->gen2) {
95 trans->txqs.bc_pool = dmam_pool_create("iwlwifi:bc", trans->dev,
96 trans->txqs.bc_tbl_size,
98 if (!trans->txqs.bc_pool)
103 WARN_ON(trans->txqs.tfd.addr_size !=
104 (trans->trans_cfg->gen2 ? 64 : 36));
106 snprintf(trans->dev_cmd_pool_name, sizeof(trans->dev_cmd_pool_name),
107 "iwl_cmd_pool:%s", dev_name(trans->dev));
108 trans->dev_cmd_pool =
109 kmem_cache_create(trans->dev_cmd_pool_name,
112 if (!trans->dev_cmd_pool)
115 trans->txqs.tso_hdr_page = alloc_percpu(struct iwl_tso_hdr_page);
116 if (!trans->txqs.tso_hdr_page) {
117 kmem_cache_destroy(trans->dev_cmd_pool);
122 init_waitqueue_head(&trans->wait_command_queue);
127 void iwl_trans_free(struct iwl_trans *trans)
131 if (trans->txqs.tso_hdr_page) {
134 per_cpu_ptr(trans->txqs.tso_hdr_page, i);
140 free_percpu(trans->txqs.tso_hdr_page);
143 kmem_cache_destroy(trans->dev_cmd_pool);
146 int iwl_trans_send_cmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
151 test_bit(STATUS_RFKILL_OPMODE, &trans->status)))
163 if (unlikely(trans->system_pm_mode == IWL_PLAT_PM_MODE_D3 &&
167 if (unlikely(test_bit(STATUS_FW_ERROR, &trans->status)))
170 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) {
171 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state);
176 lock_map_acquire_read(&trans->sync_cmd_lockdep_map);
178 if (trans->wide_cmd_header && !iwl_cmd_groupid(cmd->id)) {
183 ret = iwl_trans_txq_send_hcmd(trans, cmd);
186 lock_map_release(&trans->sync_cmd_lockdep_map);
212 const char *iwl_get_cmd_string(struct iwl_trans *trans, u32 id)
222 if (!trans->command_groups || grp >= trans->command_groups_size ||
223 !trans->command_groups[grp].arr)
226 arr = &trans->command_groups[grp];
234 int iwl_cmd_groups_verify_sorted(const struct iwl_trans_config *trans)
239 for (i = 0; i < trans->command_groups_size; i++) {
240 arr = &trans->command_groups[i];