Lines Matching refs:fnic

20 #include "fnic.h"
22 int fnic_get_vnic_config(struct fnic *fnic)
24 struct vnic_fc_config *c = &fnic->config;
29 err = vnic_dev_spec(fnic->vdev, \
33 shost_printk(KERN_ERR, fnic->lport->host, \
134 shost_printk(KERN_INFO, fnic->lport->host,
137 fnic->ctlr.ctl_src_addr,
140 shost_printk(KERN_INFO, fnic->lport->host,
143 shost_printk(KERN_INFO, fnic->lport->host,
146 shost_printk(KERN_INFO, fnic->lport->host,
149 shost_printk(KERN_INFO, fnic->lport->host,
152 shost_printk(KERN_INFO, fnic->lport->host,
155 shost_printk(KERN_INFO, fnic->lport->host,
158 shost_printk(KERN_INFO, fnic->lport->host,
161 shost_printk(KERN_INFO, fnic->lport->host,
168 int fnic_set_nic_config(struct fnic *fnic, u8 rss_default_cpu,
184 return vnic_dev_cmd(fnic->vdev, CMD_NIC_CFG, &a0, &a1, wait);
187 void fnic_get_res_counts(struct fnic *fnic)
189 fnic->wq_count = vnic_dev_get_res_count(fnic->vdev, RES_TYPE_WQ);
190 fnic->raw_wq_count = fnic->wq_count - 1;
191 fnic->wq_copy_count = fnic->wq_count - fnic->raw_wq_count;
192 fnic->rq_count = vnic_dev_get_res_count(fnic->vdev, RES_TYPE_RQ);
193 fnic->cq_count = vnic_dev_get_res_count(fnic->vdev, RES_TYPE_CQ);
194 fnic->intr_count = vnic_dev_get_res_count(fnic->vdev,
198 void fnic_free_vnic_resources(struct fnic *fnic)
202 for (i = 0; i < fnic->raw_wq_count; i++)
203 vnic_wq_free(&fnic->wq[i]);
205 for (i = 0; i < fnic->wq_copy_count; i++)
206 vnic_wq_copy_free(&fnic->wq_copy[i]);
208 for (i = 0; i < fnic->rq_count; i++)
209 vnic_rq_free(&fnic->rq[i]);
211 for (i = 0; i < fnic->cq_count; i++)
212 vnic_cq_free(&fnic->cq[i]);
214 for (i = 0; i < fnic->intr_count; i++)
215 vnic_intr_free(&fnic->intr[i]);
218 int fnic_alloc_vnic_resources(struct fnic *fnic)
229 intr_mode = vnic_dev_get_intr_mode(fnic->vdev);
231 shost_printk(KERN_INFO, fnic->lport->host, "vNIC interrupt mode: %s\n",
237 shost_printk(KERN_INFO, fnic->lport->host, "vNIC resources avail: "
239 fnic->wq_count, fnic->wq_copy_count, fnic->raw_wq_count,
240 fnic->rq_count, fnic->cq_count, fnic->intr_count);
243 for (i = 0; i < fnic->raw_wq_count; i++) {
244 err = vnic_wq_alloc(fnic->vdev, &fnic->wq[i], i,
245 fnic->config.wq_enet_desc_count,
252 for (i = 0; i < fnic->wq_copy_count; i++) {
253 err = vnic_wq_copy_alloc(fnic->vdev, &fnic->wq_copy[i],
254 (fnic->raw_wq_count + i),
255 fnic->config.wq_copy_desc_count,
262 for (i = 0; i < fnic->rq_count; i++) {
263 err = vnic_rq_alloc(fnic->vdev, &fnic->rq[i], i,
264 fnic->config.rq_desc_count,
271 for (i = 0; i < fnic->rq_count; i++) {
273 err = vnic_cq_alloc(fnic->vdev,
274 &fnic->cq[cq_index], cq_index,
275 fnic->config.rq_desc_count,
282 for (i = 0; i < fnic->raw_wq_count; i++) {
283 cq_index = fnic->rq_count + i;
284 err = vnic_cq_alloc(fnic->vdev, &fnic->cq[cq_index], cq_index,
285 fnic->config.wq_enet_desc_count,
292 wq_copy_cq_desc_count = (fnic->config.wq_copy_desc_count * 3);
293 for (i = 0; i < fnic->wq_copy_count; i++) {
294 cq_index = fnic->raw_wq_count + fnic->rq_count + i;
295 err = vnic_cq_alloc(fnic->vdev, &fnic->cq[cq_index],
303 for (i = 0; i < fnic->intr_count; i++) {
304 err = vnic_intr_alloc(fnic->vdev, &fnic->intr[i], i);
309 fnic->legacy_pba = vnic_dev_get_res(fnic->vdev,
312 if (!fnic->legacy_pba && intr_mode == VNIC_DEV_INTR_MODE_INTX) {
313 shost_printk(KERN_ERR, fnic->lport->host,
335 error_interrupt_offset = fnic->err_intr_offset;
343 for (i = 0; i < fnic->rq_count; i++) {
345 vnic_rq_init(&fnic->rq[i],
351 for (i = 0; i < fnic->raw_wq_count; i++) {
352 cq_index = i + fnic->rq_count;
353 vnic_wq_init(&fnic->wq[i],
359 for (i = 0; i < fnic->wq_copy_count; i++) {
360 vnic_wq_copy_init(&fnic->wq_copy[i],
366 for (i = 0; i < fnic->cq_count; i++) {
377 vnic_cq_init(&fnic->cq[i],
407 for (i = 0; i < fnic->intr_count; i++) {
408 vnic_intr_init(&fnic->intr[i],
409 fnic->config.intr_timer,
410 fnic->config.intr_timer_type,
415 err = vnic_dev_stats_dump(fnic->vdev, &fnic->stats);
417 shost_printk(KERN_ERR, fnic->lport->host,
423 vnic_dev_stats_clear(fnic->vdev);
428 fnic_free_vnic_resources(fnic);