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