Lines Matching refs:fnic
32 #include "fnic.h"
34 int fnic_get_vnic_config(struct fnic *fnic)
36 struct vnic_fc_config *c = &fnic->config;
41 err = vnic_dev_spec(fnic->vdev, \
45 shost_printk(KERN_ERR, fnic->lport->host, \
146 shost_printk(KERN_INFO, fnic->lport->host,
149 fnic->ctlr.ctl_src_addr,
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,
164 shost_printk(KERN_INFO, fnic->lport->host,
167 shost_printk(KERN_INFO, fnic->lport->host,
170 shost_printk(KERN_INFO, fnic->lport->host,
173 shost_printk(KERN_INFO, fnic->lport->host,
180 int fnic_set_nic_config(struct fnic *fnic, u8 rss_default_cpu,
196 return vnic_dev_cmd(fnic->vdev, CMD_NIC_CFG, &a0, &a1, wait);
199 void fnic_get_res_counts(struct fnic *fnic)
201 fnic->wq_count = vnic_dev_get_res_count(fnic->vdev, RES_TYPE_WQ);
202 fnic->raw_wq_count = fnic->wq_count - 1;
203 fnic->wq_copy_count = fnic->wq_count - fnic->raw_wq_count;
204 fnic->rq_count = vnic_dev_get_res_count(fnic->vdev, RES_TYPE_RQ);
205 fnic->cq_count = vnic_dev_get_res_count(fnic->vdev, RES_TYPE_CQ);
206 fnic->intr_count = vnic_dev_get_res_count(fnic->vdev,
210 void fnic_free_vnic_resources(struct fnic *fnic)
214 for (i = 0; i < fnic->raw_wq_count; i++)
215 vnic_wq_free(&fnic->wq[i]);
217 for (i = 0; i < fnic->wq_copy_count; i++)
218 vnic_wq_copy_free(&fnic->wq_copy[i]);
220 for (i = 0; i < fnic->rq_count; i++)
221 vnic_rq_free(&fnic->rq[i]);
223 for (i = 0; i < fnic->cq_count; i++)
224 vnic_cq_free(&fnic->cq[i]);
226 for (i = 0; i < fnic->intr_count; i++)
227 vnic_intr_free(&fnic->intr[i]);
230 int fnic_alloc_vnic_resources(struct fnic *fnic)
241 intr_mode = vnic_dev_get_intr_mode(fnic->vdev);
243 shost_printk(KERN_INFO, fnic->lport->host, "vNIC interrupt mode: %s\n",
249 shost_printk(KERN_INFO, fnic->lport->host, "vNIC resources avail: "
251 fnic->wq_count, fnic->wq_copy_count, fnic->raw_wq_count,
252 fnic->rq_count, fnic->cq_count, fnic->intr_count);
255 for (i = 0; i < fnic->raw_wq_count; i++) {
256 err = vnic_wq_alloc(fnic->vdev, &fnic->wq[i], i,
257 fnic->config.wq_enet_desc_count,
264 for (i = 0; i < fnic->wq_copy_count; i++) {
265 err = vnic_wq_copy_alloc(fnic->vdev, &fnic->wq_copy[i],
266 (fnic->raw_wq_count + i),
267 fnic->config.wq_copy_desc_count,
274 for (i = 0; i < fnic->rq_count; i++) {
275 err = vnic_rq_alloc(fnic->vdev, &fnic->rq[i], i,
276 fnic->config.rq_desc_count,
283 for (i = 0; i < fnic->rq_count; i++) {
285 err = vnic_cq_alloc(fnic->vdev,
286 &fnic->cq[cq_index], cq_index,
287 fnic->config.rq_desc_count,
294 for (i = 0; i < fnic->raw_wq_count; i++) {
295 cq_index = fnic->rq_count + i;
296 err = vnic_cq_alloc(fnic->vdev, &fnic->cq[cq_index], cq_index,
297 fnic->config.wq_enet_desc_count,
304 wq_copy_cq_desc_count = (fnic->config.wq_copy_desc_count * 3);
305 for (i = 0; i < fnic->wq_copy_count; i++) {
306 cq_index = fnic->raw_wq_count + fnic->rq_count + i;
307 err = vnic_cq_alloc(fnic->vdev, &fnic->cq[cq_index],
315 for (i = 0; i < fnic->intr_count; i++) {
316 err = vnic_intr_alloc(fnic->vdev, &fnic->intr[i], i);
321 fnic->legacy_pba = vnic_dev_get_res(fnic->vdev,
324 if (!fnic->legacy_pba && intr_mode == VNIC_DEV_INTR_MODE_INTX) {
325 shost_printk(KERN_ERR, fnic->lport->host,
347 error_interrupt_offset = fnic->err_intr_offset;
355 for (i = 0; i < fnic->rq_count; i++) {
357 vnic_rq_init(&fnic->rq[i],
363 for (i = 0; i < fnic->raw_wq_count; i++) {
364 cq_index = i + fnic->rq_count;
365 vnic_wq_init(&fnic->wq[i],
371 for (i = 0; i < fnic->wq_copy_count; i++) {
372 vnic_wq_copy_init(&fnic->wq_copy[i],
378 for (i = 0; i < fnic->cq_count; i++) {
389 vnic_cq_init(&fnic->cq[i],
419 for (i = 0; i < fnic->intr_count; i++) {
420 vnic_intr_init(&fnic->intr[i],
421 fnic->config.intr_timer,
422 fnic->config.intr_timer_type,
427 err = vnic_dev_stats_dump(fnic->vdev, &fnic->stats);
429 shost_printk(KERN_ERR, fnic->lport->host,
435 vnic_dev_stats_clear(fnic->vdev);
440 fnic_free_vnic_resources(fnic);