Lines Matching refs:vinfo

79 static void hfi1_vnic_update_stats(struct hfi1_vnic_vport_info *vinfo,  in hfi1_vnic_update_stats()  argument
82 struct net_device *netdev = vinfo->netdev; in hfi1_vnic_update_stats()
86 for (i = 0; i < vinfo->num_tx_q; i++) { in hfi1_vnic_update_stats()
87 struct opa_vnic_stats *qstats = &vinfo->stats[i]; in hfi1_vnic_update_stats()
88 struct rtnl_link_stats64 *qnstats = &vinfo->stats[i].netstats; in hfi1_vnic_update_stats()
101 for (i = 0; i < vinfo->num_rx_q; i++) { in hfi1_vnic_update_stats()
102 struct opa_vnic_stats *qstats = &vinfo->stats[i]; in hfi1_vnic_update_stats()
103 struct rtnl_link_stats64 *qnstats = &vinfo->stats[i].netstats; in hfi1_vnic_update_stats()
165 static void hfi1_vnic_update_tx_counters(struct hfi1_vnic_vport_info *vinfo, in hfi1_vnic_update_tx_counters() argument
169 struct opa_vnic_stats *stats = &vinfo->stats[q_idx]; in hfi1_vnic_update_tx_counters()
194 static void hfi1_vnic_update_rx_counters(struct hfi1_vnic_vport_info *vinfo, in hfi1_vnic_update_rx_counters() argument
198 struct opa_vnic_stats *stats = &vinfo->stats[q_idx]; in hfi1_vnic_update_rx_counters()
227 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev); in hfi1_vnic_get_stats64() local
229 hfi1_vnic_update_stats(vinfo, vstats); in hfi1_vnic_get_stats64()
246 static void hfi1_vnic_maybe_stop_tx(struct hfi1_vnic_vport_info *vinfo, in hfi1_vnic_maybe_stop_tx() argument
249 netif_stop_subqueue(vinfo->netdev, q_idx); in hfi1_vnic_maybe_stop_tx()
250 if (!hfi1_vnic_sdma_write_avail(vinfo, q_idx)) in hfi1_vnic_maybe_stop_tx()
253 netif_start_subqueue(vinfo->netdev, q_idx); in hfi1_vnic_maybe_stop_tx()
259 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev); in hfi1_netdev_start_xmit() local
261 struct hfi1_devdata *dd = vinfo->dd; in hfi1_netdev_start_xmit()
269 vinfo->stats[q_idx].tx_drop_state++; in hfi1_netdev_start_xmit()
277 vinfo->stats[q_idx].tx_dlid_zero++; in hfi1_netdev_start_xmit()
297 err = dd->process_vnic_dma_send(dd, q_idx, vinfo, skb, pbc, pad_len); in hfi1_netdev_start_xmit()
300 vinfo->stats[q_idx].netstats.tx_fifo_errors++; in hfi1_netdev_start_xmit()
302 vinfo->stats[q_idx].netstats.tx_carrier_errors++; in hfi1_netdev_start_xmit()
308 hfi1_vnic_maybe_stop_tx(vinfo, q_idx); in hfi1_netdev_start_xmit()
315 hfi1_vnic_update_tx_counters(vinfo, q_idx, skb, err); in hfi1_netdev_start_xmit()
324 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev); in hfi1_vnic_select_queue() local
329 sde = sdma_select_engine_vl(vinfo->dd, mdata->entropy, mdata->vl); in hfi1_vnic_select_queue()
337 struct hfi1_vnic_vport_info *vinfo = rxq->vinfo; in hfi1_vnic_decap_skb() local
338 int max_len = vinfo->netdev->mtu + VLAN_ETH_HLEN; in hfi1_vnic_decap_skb()
345 vinfo->stats[rxq->idx].rx_oversize++; in hfi1_vnic_decap_skb()
347 vinfo->stats[rxq->idx].rx_runt++; in hfi1_vnic_decap_skb()
363 struct hfi1_vnic_vport_info *vinfo; in get_first_vnic_port() local
366 vinfo = hfi1_netdev_get_first_data(dd, &next_id); in get_first_vnic_port()
371 return vinfo; in get_first_vnic_port()
377 struct hfi1_vnic_vport_info *vinfo = NULL; in hfi1_vnic_bypass_rcv() local
387 vinfo = get_vnic_port(dd, vesw_id); in hfi1_vnic_bypass_rcv()
393 if (unlikely(!vinfo)) { in hfi1_vnic_bypass_rcv()
405 if (unlikely(!vinfo)) { in hfi1_vnic_bypass_rcv()
412 rxq = &vinfo->rxq[q_idx]; in hfi1_vnic_bypass_rcv()
413 if (unlikely(!netif_oper_up(vinfo->netdev))) { in hfi1_vnic_bypass_rcv()
414 vinfo->stats[q_idx].rx_drop_state++; in hfi1_vnic_bypass_rcv()
418 skb = netdev_alloc_skb(vinfo->netdev, packet->tlen); in hfi1_vnic_bypass_rcv()
420 vinfo->stats[q_idx].netstats.rx_fifo_errors++; in hfi1_vnic_bypass_rcv()
434 hfi1_vnic_update_rx_counters(vinfo, rxq->idx, skb, rc); in hfi1_vnic_bypass_rcv()
446 static int hfi1_vnic_up(struct hfi1_vnic_vport_info *vinfo) in hfi1_vnic_up() argument
448 struct hfi1_devdata *dd = vinfo->dd; in hfi1_vnic_up()
449 struct net_device *netdev = vinfo->netdev; in hfi1_vnic_up()
453 if (!vinfo->vesw_id) in hfi1_vnic_up()
456 rc = hfi1_netdev_add_data(dd, VNIC_ID(vinfo->vesw_id), vinfo); in hfi1_vnic_up()
466 set_bit(HFI1_VNIC_UP, &vinfo->flags); in hfi1_vnic_up()
471 hfi1_netdev_remove_data(dd, VNIC_ID(vinfo->vesw_id)); in hfi1_vnic_up()
475 static void hfi1_vnic_down(struct hfi1_vnic_vport_info *vinfo) in hfi1_vnic_down() argument
477 struct hfi1_devdata *dd = vinfo->dd; in hfi1_vnic_down()
479 clear_bit(HFI1_VNIC_UP, &vinfo->flags); in hfi1_vnic_down()
480 netif_carrier_off(vinfo->netdev); in hfi1_vnic_down()
481 netif_tx_disable(vinfo->netdev); in hfi1_vnic_down()
482 hfi1_netdev_remove_data(dd, VNIC_ID(vinfo->vesw_id)); in hfi1_vnic_down()
489 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev); in hfi1_netdev_open() local
492 mutex_lock(&vinfo->lock); in hfi1_netdev_open()
493 rc = hfi1_vnic_up(vinfo); in hfi1_netdev_open()
494 mutex_unlock(&vinfo->lock); in hfi1_netdev_open()
500 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev); in hfi1_netdev_close() local
502 mutex_lock(&vinfo->lock); in hfi1_netdev_close()
503 if (test_bit(HFI1_VNIC_UP, &vinfo->flags)) in hfi1_netdev_close()
504 hfi1_vnic_down(vinfo); in hfi1_netdev_close()
505 mutex_unlock(&vinfo->lock); in hfi1_netdev_close()
509 static int hfi1_vnic_init(struct hfi1_vnic_vport_info *vinfo) in hfi1_vnic_init() argument
511 struct hfi1_devdata *dd = vinfo->dd; in hfi1_vnic_init()
530 hfi1_vnic_sdma_init(vinfo); in hfi1_vnic_init()
540 static void hfi1_vnic_deinit(struct hfi1_vnic_vport_info *vinfo) in hfi1_vnic_deinit() argument
542 struct hfi1_devdata *dd = vinfo->dd; in hfi1_vnic_deinit()
555 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev); in hfi1_vnic_set_vesw_id() local
562 if (id != vinfo->vesw_id) { in hfi1_vnic_set_vesw_id()
563 mutex_lock(&vinfo->lock); in hfi1_vnic_set_vesw_id()
564 if (test_bit(HFI1_VNIC_UP, &vinfo->flags)) { in hfi1_vnic_set_vesw_id()
565 hfi1_vnic_down(vinfo); in hfi1_vnic_set_vesw_id()
569 vinfo->vesw_id = id; in hfi1_vnic_set_vesw_id()
571 hfi1_vnic_up(vinfo); in hfi1_vnic_set_vesw_id()
573 mutex_unlock(&vinfo->lock); in hfi1_vnic_set_vesw_id()
588 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev); in hfi1_vnic_free_rn() local
590 hfi1_vnic_deinit(vinfo); in hfi1_vnic_free_rn()
591 mutex_destroy(&vinfo->lock); in hfi1_vnic_free_rn()
603 struct hfi1_vnic_vport_info *vinfo; in hfi1_vnic_alloc_rn() local
617 size = sizeof(struct opa_vnic_rdma_netdev) + sizeof(*vinfo); in hfi1_vnic_alloc_rn()
625 vinfo = opa_vnic_dev_priv(netdev); in hfi1_vnic_alloc_rn()
626 vinfo->dd = dd; in hfi1_vnic_alloc_rn()
627 vinfo->num_tx_q = chip_sdma_engines(dd); in hfi1_vnic_alloc_rn()
628 vinfo->num_rx_q = dd->num_netdev_contexts; in hfi1_vnic_alloc_rn()
629 vinfo->netdev = netdev; in hfi1_vnic_alloc_rn()
638 mutex_init(&vinfo->lock); in hfi1_vnic_alloc_rn()
640 for (i = 0; i < vinfo->num_rx_q; i++) { in hfi1_vnic_alloc_rn()
641 struct hfi1_vnic_rx_queue *rxq = &vinfo->rxq[i]; in hfi1_vnic_alloc_rn()
644 rxq->vinfo = vinfo; in hfi1_vnic_alloc_rn()
648 rc = hfi1_vnic_init(vinfo); in hfi1_vnic_alloc_rn()
654 mutex_destroy(&vinfo->lock); in hfi1_vnic_alloc_rn()