Lines Matching refs:snic
30 #include "snic.h"
40 struct snic *snic = container_of(work, struct snic, link_work);
42 if (snic->config.xpt_type == SNIC_DAS)
45 snic->link_status = svnic_dev_link_status(snic->vdev);
46 snic->link_down_cnt = svnic_dev_link_down_cnt(snic->vdev);
47 SNIC_HOST_INFO(snic->shost, "Link Event: Link %s.\n",
48 ((snic->link_status) ? "Up" : "Down"));
106 snic_queue_exch_ver_req(struct snic *snic)
113 SNIC_HOST_INFO(snic->shost, "Exch Ver Req Preparing...\n");
115 rqi = snic_req_init(snic, 0);
117 SNIC_HOST_ERR(snic->shost,
129 snic->config.hid, 0, (ulong)rqi);
134 snic_handle_untagged_req(snic, rqi);
136 ret = snic_queue_wq_desc(snic, req, sizeof(*req));
138 snic_release_untagged_req(snic, rqi);
139 SNIC_HOST_ERR(snic->shost,
145 SNIC_HOST_INFO(snic->shost, "Exch Ver Req is issued. ret = %d\n", ret);
155 snic_io_exch_ver_cmpl_handler(struct snic *snic, struct snic_fw_req *fwreq)
164 SNIC_HOST_INFO(snic->shost, "Exch Ver Compl Received.\n");
166 SNIC_BUG_ON(snic->config.hid != hid);
170 SNIC_HOST_ERR(snic->shost,
177 spin_lock_irqsave(&snic->snic_lock, flags);
178 snic->fwinfo.fw_ver = le32_to_cpu(exv_cmpl->version);
179 snic->fwinfo.hid = le32_to_cpu(exv_cmpl->hid);
180 snic->fwinfo.max_concur_ios = le32_to_cpu(exv_cmpl->max_concur_ios);
181 snic->fwinfo.max_sgs_per_cmd = le32_to_cpu(exv_cmpl->max_sgs_per_cmd);
182 snic->fwinfo.max_io_sz = le32_to_cpu(exv_cmpl->max_io_sz);
183 snic->fwinfo.max_tgts = le32_to_cpu(exv_cmpl->max_tgts);
184 snic->fwinfo.io_tmo = le16_to_cpu(exv_cmpl->io_timeout);
186 SNIC_HOST_INFO(snic->shost,
188 snic->fwinfo.fw_ver,
189 snic->fwinfo.hid,
190 snic->fwinfo.max_concur_ios,
191 snic->fwinfo.max_sgs_per_cmd,
192 snic->fwinfo.max_io_sz,
193 snic->fwinfo.max_tgts,
194 snic->fwinfo.io_tmo);
196 SNIC_HOST_INFO(snic->shost,
201 max_sgs = snic->fwinfo.max_sgs_per_cmd;
203 snic->shost->sg_tablesize = max_sgs;
204 SNIC_HOST_INFO(snic->shost, "Max SGs set to %d\n",
205 snic->shost->sg_tablesize);
206 } else if (max_sgs > snic->shost->sg_tablesize) {
207 SNIC_HOST_INFO(snic->shost,
209 snic->config.xpt_type, max_sgs,
210 snic->shost->sg_tablesize);
213 if (snic->shost->can_queue > snic->fwinfo.max_concur_ios)
214 snic->shost->can_queue = snic->fwinfo.max_concur_ios;
216 snic->shost->max_sectors = snic->fwinfo.max_io_sz >> 9;
217 if (snic->fwinfo.wait)
218 complete(snic->fwinfo.wait);
220 spin_unlock_irqrestore(&snic->snic_lock, flags);
223 snic_release_untagged_req(snic, rqi);
225 SNIC_HOST_INFO(snic->shost, "Exch_cmpl Done, hdr_stat %d.\n", hdr_stat);
231 * Synchronous call, and Retrieves snic params.
234 snic_get_conf(struct snic *snic)
241 SNIC_HOST_INFO(snic->shost, "Retrieving snic params.\n");
242 spin_lock_irqsave(&snic->snic_lock, flags);
243 memset(&snic->fwinfo, 0, sizeof(snic->fwinfo));
244 snic->fwinfo.wait = &wait;
245 spin_unlock_irqrestore(&snic->snic_lock, flags);
255 ret = snic_queue_exch_ver_req(snic);
260 spin_lock_irqsave(&snic->snic_lock, flags);
261 ret = (snic->fwinfo.fw_ver != 0) ? 0 : -ETIMEDOUT;
263 SNIC_HOST_ERR(snic->shost,
264 "Failed to retrieve snic params,\n");
268 snic->fwinfo.wait = NULL;
270 spin_unlock_irqrestore(&snic->snic_lock, flags);