Lines Matching refs:vinfo
37 static void hfi1_vnic_update_stats(struct hfi1_vnic_vport_info *vinfo,
40 struct net_device *netdev = vinfo->netdev;
44 for (i = 0; i < vinfo->num_tx_q; i++) {
45 struct opa_vnic_stats *qstats = &vinfo->stats[i];
46 struct rtnl_link_stats64 *qnstats = &vinfo->stats[i].netstats;
59 for (i = 0; i < vinfo->num_rx_q; i++) {
60 struct opa_vnic_stats *qstats = &vinfo->stats[i];
61 struct rtnl_link_stats64 *qnstats = &vinfo->stats[i].netstats;
123 static void hfi1_vnic_update_tx_counters(struct hfi1_vnic_vport_info *vinfo,
127 struct opa_vnic_stats *stats = &vinfo->stats[q_idx];
152 static void hfi1_vnic_update_rx_counters(struct hfi1_vnic_vport_info *vinfo,
156 struct opa_vnic_stats *stats = &vinfo->stats[q_idx];
185 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);
187 hfi1_vnic_update_stats(vinfo, vstats);
204 static void hfi1_vnic_maybe_stop_tx(struct hfi1_vnic_vport_info *vinfo,
207 netif_stop_subqueue(vinfo->netdev, q_idx);
208 if (!hfi1_vnic_sdma_write_avail(vinfo, q_idx))
211 netif_start_subqueue(vinfo->netdev, q_idx);
217 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);
219 struct hfi1_devdata *dd = vinfo->dd;
227 vinfo->stats[q_idx].tx_drop_state++;
235 vinfo->stats[q_idx].tx_dlid_zero++;
255 err = dd->process_vnic_dma_send(dd, q_idx, vinfo, skb, pbc, pad_len);
258 vinfo->stats[q_idx].netstats.tx_fifo_errors++;
260 vinfo->stats[q_idx].netstats.tx_carrier_errors++;
266 hfi1_vnic_maybe_stop_tx(vinfo, q_idx);
273 hfi1_vnic_update_tx_counters(vinfo, q_idx, skb, err);
282 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);
287 sde = sdma_select_engine_vl(vinfo->dd, mdata->entropy, mdata->vl);
295 struct hfi1_vnic_vport_info *vinfo = rxq->vinfo;
296 int max_len = vinfo->netdev->mtu + VLAN_ETH_HLEN;
303 vinfo->stats[rxq->idx].rx_oversize++;
305 vinfo->stats[rxq->idx].rx_runt++;
321 struct hfi1_vnic_vport_info *vinfo;
324 vinfo = hfi1_netdev_get_first_data(dd, &next_id);
329 return vinfo;
335 struct hfi1_vnic_vport_info *vinfo = NULL;
345 vinfo = get_vnic_port(dd, vesw_id);
351 if (unlikely(!vinfo)) {
363 if (unlikely(!vinfo)) {
370 rxq = &vinfo->rxq[q_idx];
371 if (unlikely(!netif_oper_up(vinfo->netdev))) {
372 vinfo->stats[q_idx].rx_drop_state++;
376 skb = netdev_alloc_skb(vinfo->netdev, packet->tlen);
378 vinfo->stats[q_idx].netstats.rx_fifo_errors++;
392 hfi1_vnic_update_rx_counters(vinfo, rxq->idx, skb, rc);
404 static int hfi1_vnic_up(struct hfi1_vnic_vport_info *vinfo)
406 struct hfi1_devdata *dd = vinfo->dd;
407 struct net_device *netdev = vinfo->netdev;
411 if (!vinfo->vesw_id)
414 rc = hfi1_netdev_add_data(dd, VNIC_ID(vinfo->vesw_id), vinfo);
424 set_bit(HFI1_VNIC_UP, &vinfo->flags);
429 hfi1_netdev_remove_data(dd, VNIC_ID(vinfo->vesw_id));
433 static void hfi1_vnic_down(struct hfi1_vnic_vport_info *vinfo)
435 struct hfi1_devdata *dd = vinfo->dd;
437 clear_bit(HFI1_VNIC_UP, &vinfo->flags);
438 netif_carrier_off(vinfo->netdev);
439 netif_tx_disable(vinfo->netdev);
440 hfi1_netdev_remove_data(dd, VNIC_ID(vinfo->vesw_id));
447 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);
450 mutex_lock(&vinfo->lock);
451 rc = hfi1_vnic_up(vinfo);
452 mutex_unlock(&vinfo->lock);
458 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);
460 mutex_lock(&vinfo->lock);
461 if (test_bit(HFI1_VNIC_UP, &vinfo->flags))
462 hfi1_vnic_down(vinfo);
463 mutex_unlock(&vinfo->lock);
467 static int hfi1_vnic_init(struct hfi1_vnic_vport_info *vinfo)
469 struct hfi1_devdata *dd = vinfo->dd;
488 hfi1_vnic_sdma_init(vinfo);
498 static void hfi1_vnic_deinit(struct hfi1_vnic_vport_info *vinfo)
500 struct hfi1_devdata *dd = vinfo->dd;
513 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);
520 if (id != vinfo->vesw_id) {
521 mutex_lock(&vinfo->lock);
522 if (test_bit(HFI1_VNIC_UP, &vinfo->flags)) {
523 hfi1_vnic_down(vinfo);
527 vinfo->vesw_id = id;
529 hfi1_vnic_up(vinfo);
531 mutex_unlock(&vinfo->lock);
546 struct hfi1_vnic_vport_info *vinfo = opa_vnic_dev_priv(netdev);
548 hfi1_vnic_deinit(vinfo);
549 mutex_destroy(&vinfo->lock);
561 struct hfi1_vnic_vport_info *vinfo;
575 size = sizeof(struct opa_vnic_rdma_netdev) + sizeof(*vinfo);
583 vinfo = opa_vnic_dev_priv(netdev);
584 vinfo->dd = dd;
585 vinfo->num_tx_q = chip_sdma_engines(dd);
586 vinfo->num_rx_q = dd->num_netdev_contexts;
587 vinfo->netdev = netdev;
596 mutex_init(&vinfo->lock);
598 for (i = 0; i < vinfo->num_rx_q; i++) {
599 struct hfi1_vnic_rx_queue *rxq = &vinfo->rxq[i];
602 rxq->vinfo = vinfo;
606 rc = hfi1_vnic_init(vinfo);
612 mutex_destroy(&vinfo->lock);