Lines Matching refs:lio

468 static inline int check_txq_status(struct lio *lio)  in check_txq_status()  argument
470 int numqs = lio->netdev->real_num_tx_queues; in check_txq_status()
476 iq = lio->linfo.txpciq[q % in check_txq_status()
477 lio->oct_dev->num_iqs].s.q_no; in check_txq_status()
478 if (octnet_iq_is_full(lio->oct_dev, iq)) in check_txq_status()
480 if (__netif_subqueue_stopped(lio->netdev, q)) { in check_txq_status()
481 netif_wake_subqueue(lio->netdev, q); in check_txq_status()
482 INCR_INSTRQUEUE_PKT_COUNT(lio->oct_dev, iq, in check_txq_status()
497 struct lio *lio = GET_LIO(netdev); in print_link_info() local
499 if (!ifstate_check(lio, LIO_IFSTATE_RESETTING) && in print_link_info()
500 ifstate_check(lio, LIO_IFSTATE_REGISTERED)) { in print_link_info()
501 struct oct_link_info *linfo = &lio->linfo; in print_link_info()
504 netif_info(lio, link, lio->netdev, "%d Mbps %s Duplex UP\n", in print_link_info()
508 netif_info(lio, link, lio->netdev, "Link Down\n"); in print_link_info()
520 struct lio *lio = (struct lio *)wk->ctxptr; in octnet_link_status_change() local
527 dev_set_mtu(lio->netdev, lio->linfo.link.s.mtu); in octnet_link_status_change()
537 struct lio *lio = GET_LIO(netdev); in setup_link_status_change_wq() local
538 struct octeon_device *oct = lio->oct_dev; in setup_link_status_change_wq()
540 lio->link_status_wq.wq = alloc_workqueue("link-status", in setup_link_status_change_wq()
542 if (!lio->link_status_wq.wq) { in setup_link_status_change_wq()
546 INIT_DELAYED_WORK(&lio->link_status_wq.wk.work, in setup_link_status_change_wq()
548 lio->link_status_wq.wk.ctxptr = lio; in setup_link_status_change_wq()
555 struct lio *lio = GET_LIO(netdev); in cleanup_link_status_change_wq() local
557 if (lio->link_status_wq.wq) { in cleanup_link_status_change_wq()
558 cancel_delayed_work_sync(&lio->link_status_wq.wk.work); in cleanup_link_status_change_wq()
559 destroy_workqueue(lio->link_status_wq.wq); in cleanup_link_status_change_wq()
574 struct lio *lio = GET_LIO(netdev); in update_link_status() local
575 int changed = (lio->linfo.link.u64 != ls->u64); in update_link_status()
576 int current_max_mtu = lio->linfo.link.s.mtu; in update_link_status()
577 struct octeon_device *oct = lio->oct_dev; in update_link_status()
580 __func__, lio->linfo.link.u64, ls->u64); in update_link_status()
581 lio->linfo.link.u64 = ls->u64; in update_link_status()
583 if ((lio->intf_open) && (changed)) { in update_link_status()
585 lio->link_changes++; in update_link_status()
587 if (lio->linfo.link.s.link_up) { in update_link_status()
596 if (lio->linfo.link.s.mtu != current_max_mtu) { in update_link_status()
597 netif_info(lio, probe, lio->netdev, "Max MTU changed from %d to %d\n", in update_link_status()
598 current_max_mtu, lio->linfo.link.s.mtu); in update_link_status()
599 netdev->max_mtu = lio->linfo.link.s.mtu; in update_link_status()
601 if (lio->linfo.link.s.mtu < netdev->mtu) { in update_link_status()
604 netdev->mtu, lio->linfo.link.s.mtu); in update_link_status()
605 queue_delayed_work(lio->link_status_wq.wq, in update_link_status()
606 &lio->link_status_wq.wk.work, 0); in update_link_status()
620 struct lio *lio = (struct lio *)wk->ctxptr; in lio_sync_octeon_time() local
621 struct octeon_device *oct = lio->oct_dev; in lio_sync_octeon_time()
642 sc->iq_no = lio->linfo.txpciq[0].s.q_no; in lio_sync_octeon_time()
658 queue_delayed_work(lio->sync_octeon_time_wq.wq, in lio_sync_octeon_time()
659 &lio->sync_octeon_time_wq.wk.work, in lio_sync_octeon_time()
670 struct lio *lio = GET_LIO(netdev); in setup_sync_octeon_time_wq() local
671 struct octeon_device *oct = lio->oct_dev; in setup_sync_octeon_time_wq()
673 lio->sync_octeon_time_wq.wq = in setup_sync_octeon_time_wq()
675 if (!lio->sync_octeon_time_wq.wq) { in setup_sync_octeon_time_wq()
679 INIT_DELAYED_WORK(&lio->sync_octeon_time_wq.wk.work, in setup_sync_octeon_time_wq()
681 lio->sync_octeon_time_wq.wk.ctxptr = lio; in setup_sync_octeon_time_wq()
682 queue_delayed_work(lio->sync_octeon_time_wq.wq, in setup_sync_octeon_time_wq()
683 &lio->sync_octeon_time_wq.wk.work, in setup_sync_octeon_time_wq()
699 struct lio *lio = GET_LIO(netdev); in cleanup_sync_octeon_time_wq() local
700 struct cavium_wq *time_wq = &lio->sync_octeon_time_wq; in cleanup_sync_octeon_time_wq()
1155 static int send_rx_ctrl_cmd(struct lio *lio, int start_stop) in send_rx_ctrl_cmd() argument
1159 struct octeon_device *oct = (struct octeon_device *)lio->oct_dev; in send_rx_ctrl_cmd()
1162 if (oct->props[lio->ifidx].rx_on == start_stop) in send_rx_ctrl_cmd()
1169 netif_info(lio, rx_err, lio->netdev, in send_rx_ctrl_cmd()
1182 sc->iq_no = lio->linfo.txpciq[0].s.q_no; in send_rx_ctrl_cmd()
1192 netif_info(lio, rx_err, lio->netdev, "Failed to send RX Control message\n"); in send_rx_ctrl_cmd()
1202 oct->props[lio->ifidx].rx_on = start_stop; in send_rx_ctrl_cmd()
1223 struct lio *lio; in liquidio_destroy_nic_device() local
1231 lio = GET_LIO(netdev); in liquidio_destroy_nic_device()
1235 if (atomic_read(&lio->ifstate) & LIO_IFSTATE_RUNNING) in liquidio_destroy_nic_device()
1238 if (oct->props[lio->ifidx].napi_enabled == 1) { in liquidio_destroy_nic_device()
1242 oct->props[lio->ifidx].napi_enabled = 0; in liquidio_destroy_nic_device()
1254 if (atomic_read(&lio->ifstate) & LIO_IFSTATE_REGISTERED) in liquidio_destroy_nic_device()
1262 lio_delete_glists(lio); in liquidio_destroy_nic_device()
1278 struct lio *lio; in liquidio_stop_nic_module() local
1301 lio = GET_LIO(oct->props[i].netdev); in liquidio_stop_nic_module()
1304 lio->linfo.rxpciq[j].s.q_no); in liquidio_stop_nic_module()
1423 struct lio *lio; in free_netbuf() local
1427 lio = finfo->lio; in free_netbuf()
1429 dma_unmap_single(&lio->oct_dev->pci_dev->dev, finfo->dptr, skb->len, in free_netbuf()
1443 struct lio *lio; in free_netsgbuf() local
1449 lio = finfo->lio; in free_netsgbuf()
1453 dma_unmap_single(&lio->oct_dev->pci_dev->dev, in free_netsgbuf()
1461 dma_unmap_page(&lio->oct_dev->pci_dev->dev, in free_netsgbuf()
1467 iq = skb_iq(lio->oct_dev, skb); in free_netsgbuf()
1468 spin_lock(&lio->glist_lock[iq]); in free_netsgbuf()
1469 list_add_tail(&g->list, &lio->glist[iq]); in free_netsgbuf()
1470 spin_unlock(&lio->glist_lock[iq]); in free_netsgbuf()
1484 struct lio *lio; in free_netsgbuf_with_resp() local
1492 lio = finfo->lio; in free_netsgbuf_with_resp()
1496 dma_unmap_single(&lio->oct_dev->pci_dev->dev, in free_netsgbuf_with_resp()
1504 dma_unmap_page(&lio->oct_dev->pci_dev->dev, in free_netsgbuf_with_resp()
1510 iq = skb_iq(lio->oct_dev, skb); in free_netsgbuf_with_resp()
1512 spin_lock(&lio->glist_lock[iq]); in free_netsgbuf_with_resp()
1513 list_add_tail(&g->list, &lio->glist[iq]); in free_netsgbuf_with_resp()
1514 spin_unlock(&lio->glist_lock[iq]); in free_netsgbuf_with_resp()
1526 struct lio *lio = container_of(ptp, struct lio, ptp_info); in liquidio_ptp_adjfreq() local
1527 struct octeon_device *oct = (struct octeon_device *)lio->oct_dev; in liquidio_ptp_adjfreq()
1544 spin_lock_irqsave(&lio->ptp_lock, flags); in liquidio_ptp_adjfreq()
1551 spin_unlock_irqrestore(&lio->ptp_lock, flags); in liquidio_ptp_adjfreq()
1564 struct lio *lio = container_of(ptp, struct lio, ptp_info); in liquidio_ptp_adjtime() local
1566 spin_lock_irqsave(&lio->ptp_lock, flags); in liquidio_ptp_adjtime()
1567 lio->ptp_adjust += delta; in liquidio_ptp_adjtime()
1568 spin_unlock_irqrestore(&lio->ptp_lock, flags); in liquidio_ptp_adjtime()
1583 struct lio *lio = container_of(ptp, struct lio, ptp_info); in liquidio_ptp_gettime() local
1584 struct octeon_device *oct = (struct octeon_device *)lio->oct_dev; in liquidio_ptp_gettime()
1586 spin_lock_irqsave(&lio->ptp_lock, flags); in liquidio_ptp_gettime()
1588 ns += lio->ptp_adjust; in liquidio_ptp_gettime()
1589 spin_unlock_irqrestore(&lio->ptp_lock, flags); in liquidio_ptp_gettime()
1606 struct lio *lio = container_of(ptp, struct lio, ptp_info); in liquidio_ptp_settime() local
1607 struct octeon_device *oct = (struct octeon_device *)lio->oct_dev; in liquidio_ptp_settime()
1611 spin_lock_irqsave(&lio->ptp_lock, flags); in liquidio_ptp_settime()
1613 lio->ptp_adjust = 0; in liquidio_ptp_settime()
1614 spin_unlock_irqrestore(&lio->ptp_lock, flags); in liquidio_ptp_settime()
1639 struct lio *lio = GET_LIO(netdev); in oct_ptp_open() local
1640 struct octeon_device *oct = (struct octeon_device *)lio->oct_dev; in oct_ptp_open()
1642 spin_lock_init(&lio->ptp_lock); in oct_ptp_open()
1644 snprintf(lio->ptp_info.name, 16, "%s", netdev->name); in oct_ptp_open()
1645 lio->ptp_info.owner = THIS_MODULE; in oct_ptp_open()
1646 lio->ptp_info.max_adj = 250000000; in oct_ptp_open()
1647 lio->ptp_info.n_alarm = 0; in oct_ptp_open()
1648 lio->ptp_info.n_ext_ts = 0; in oct_ptp_open()
1649 lio->ptp_info.n_per_out = 0; in oct_ptp_open()
1650 lio->ptp_info.pps = 0; in oct_ptp_open()
1651 lio->ptp_info.adjfreq = liquidio_ptp_adjfreq; in oct_ptp_open()
1652 lio->ptp_info.adjtime = liquidio_ptp_adjtime; in oct_ptp_open()
1653 lio->ptp_info.gettime64 = liquidio_ptp_gettime; in oct_ptp_open()
1654 lio->ptp_info.settime64 = liquidio_ptp_settime; in oct_ptp_open()
1655 lio->ptp_info.enable = liquidio_ptp_enable; in oct_ptp_open()
1657 lio->ptp_adjust = 0; in oct_ptp_open()
1659 lio->ptp_clock = ptp_clock_register(&lio->ptp_info, in oct_ptp_open()
1662 if (IS_ERR(lio->ptp_clock)) in oct_ptp_open()
1663 lio->ptp_clock = NULL; in oct_ptp_open()
1729 struct lio *lio = (struct lio *)wk->ctxptr; in octnet_poll_check_txq_status() local
1731 if (!ifstate_check(lio, LIO_IFSTATE_RUNNING)) in octnet_poll_check_txq_status()
1734 check_txq_status(lio); in octnet_poll_check_txq_status()
1735 queue_delayed_work(lio->txq_status_wq.wq, in octnet_poll_check_txq_status()
1736 &lio->txq_status_wq.wk.work, msecs_to_jiffies(1)); in octnet_poll_check_txq_status()
1745 struct lio *lio = GET_LIO(netdev); in setup_tx_poll_fn() local
1746 struct octeon_device *oct = lio->oct_dev; in setup_tx_poll_fn()
1748 lio->txq_status_wq.wq = alloc_workqueue("txq-status", in setup_tx_poll_fn()
1750 if (!lio->txq_status_wq.wq) { in setup_tx_poll_fn()
1754 INIT_DELAYED_WORK(&lio->txq_status_wq.wk.work, in setup_tx_poll_fn()
1756 lio->txq_status_wq.wk.ctxptr = lio; in setup_tx_poll_fn()
1757 queue_delayed_work(lio->txq_status_wq.wq, in setup_tx_poll_fn()
1758 &lio->txq_status_wq.wk.work, msecs_to_jiffies(1)); in setup_tx_poll_fn()
1764 struct lio *lio = GET_LIO(netdev); in cleanup_tx_poll_fn() local
1766 if (lio->txq_status_wq.wq) { in cleanup_tx_poll_fn()
1767 cancel_delayed_work_sync(&lio->txq_status_wq.wk.work); in cleanup_tx_poll_fn()
1768 destroy_workqueue(lio->txq_status_wq.wq); in cleanup_tx_poll_fn()
1778 struct lio *lio = GET_LIO(netdev); in liquidio_open() local
1779 struct octeon_device *oct = lio->oct_dev; in liquidio_open()
1785 if (oct->props[lio->ifidx].napi_enabled == 0) { in liquidio_open()
1791 oct->props[lio->ifidx].napi_enabled = 1; in liquidio_open()
1800 ifstate_set(lio, LIO_IFSTATE_RUNNING); in liquidio_open()
1814 lio->intf_open = 1; in liquidio_open()
1816 netif_info(lio, ifup, lio->netdev, "Interface Open, ready for traffic\n"); in liquidio_open()
1819 ret = send_rx_ctrl_cmd(lio, 1); in liquidio_open()
1824 INIT_DELAYED_WORK(&lio->stats_wk.work, lio_fetch_stats); in liquidio_open()
1825 lio->stats_wk.ctxptr = lio; in liquidio_open()
1826 schedule_delayed_work(&lio->stats_wk.work, msecs_to_jiffies in liquidio_open()
1841 struct lio *lio = GET_LIO(netdev); in liquidio_stop() local
1842 struct octeon_device *oct = lio->oct_dev; in liquidio_stop()
1848 ifstate_reset(lio, LIO_IFSTATE_RUNNING); in liquidio_stop()
1851 lio->intf_open = 0; in liquidio_stop()
1859 lio->linfo.link.s.link_up = 0; in liquidio_stop()
1860 lio->link_changes++; in liquidio_stop()
1863 ret = send_rx_ctrl_cmd(lio, 0); in liquidio_stop()
1874 cancel_delayed_work_sync(&lio->stats_wk.work); in liquidio_stop()
1876 if (lio->ptp_clock) { in liquidio_stop()
1877 ptp_clock_unregister(lio->ptp_clock); in liquidio_stop()
1878 lio->ptp_clock = NULL; in liquidio_stop()
1883 netif_info(lio, rx_err, lio->netdev, in liquidio_stop()
1886 if (oct->props[lio->ifidx].napi_enabled == 1) { in liquidio_stop()
1890 oct->props[lio->ifidx].napi_enabled = 0; in liquidio_stop()
1942 struct lio *lio = GET_LIO(netdev); in liquidio_set_mcast_list() local
1943 struct octeon_device *oct = lio->oct_dev; in liquidio_set_mcast_list()
1958 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_set_mcast_list()
1977 ret = octnet_send_nic_ctrl_pkt(lio->oct_dev, &nctrl); in liquidio_set_mcast_list()
1992 struct lio *lio = GET_LIO(netdev); in liquidio_set_mac() local
1993 struct octeon_device *oct = lio->oct_dev; in liquidio_set_mac()
2006 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_set_mac()
2013 ret = octnet_send_nic_ctrl_pkt(lio->oct_dev, &nctrl); in liquidio_set_mac()
2027 memcpy(((u8 *)&lio->linfo.hw_addr) + 2, addr->sa_data, ETH_ALEN); in liquidio_set_mac()
2036 struct lio *lio = GET_LIO(netdev); in liquidio_get_stats64() local
2043 oct = lio->oct_dev; in liquidio_get_stats64()
2045 if (ifstate_check(lio, LIO_IFSTATE_RESETTING)) in liquidio_get_stats64()
2049 iq_no = lio->linfo.txpciq[i].s.q_no; in liquidio_get_stats64()
2065 oq_no = lio->linfo.rxpciq[i].s.q_no; in liquidio_get_stats64()
2112 struct lio *lio = GET_LIO(netdev); in hwtstamp_ioctl() local
2153 ifstate_set(lio, LIO_IFSTATE_RX_TIMESTAMP_ENABLED); in hwtstamp_ioctl()
2156 ifstate_reset(lio, LIO_IFSTATE_RX_TIMESTAMP_ENABLED); in hwtstamp_ioctl()
2169 struct lio *lio = GET_LIO(netdev); in liquidio_ioctl() local
2173 if (lio->oct_dev->ptp_enable) in liquidio_ioctl()
2194 struct lio *lio; in handle_timestamp() local
2198 lio = finfo->lio; in handle_timestamp()
2200 oct = lio->oct_dev; in handle_timestamp()
2215 netif_info(lio, tx_done, lio->netdev, in handle_timestamp()
2218 ts.hwtstamp = ns_to_ktime(ns + lio->ptp_adjust); in handle_timestamp()
2240 struct lio *lio; in send_nic_timestamp_pkt() local
2244 lio = finfo->lio; in send_nic_timestamp_pkt()
2281 netif_info(lio, tx_queued, lio->netdev, "Queued timestamp packet\n"); in send_nic_timestamp_pkt()
2297 struct lio *lio; in liquidio_xmit() local
2311 lio = GET_LIO(netdev); in liquidio_xmit()
2312 oct = lio->oct_dev; in liquidio_xmit()
2316 iq_no = lio->linfo.txpciq[q_idx].s.q_no; in liquidio_xmit()
2323 if (!(atomic_read(&lio->ifstate) & LIO_IFSTATE_RUNNING) || in liquidio_xmit()
2324 (!lio->linfo.link.s.link_up) || in liquidio_xmit()
2326 netif_info(lio, tx_err, lio->netdev, in liquidio_xmit()
2328 lio->linfo.link.s.link_up); in liquidio_xmit()
2336 finfo->lio = lio; in liquidio_xmit()
2349 netif_info(lio, tx_err, lio->netdev, "Transmit failed iq:%d full\n", in liquidio_xmit()
2405 spin_lock(&lio->glist_lock[q_idx]); in liquidio_xmit()
2407 lio_list_delete_head(&lio->glist[q_idx]); in liquidio_xmit()
2408 spin_unlock(&lio->glist_lock[q_idx]); in liquidio_xmit()
2411 netif_info(lio, tx_err, lio->netdev, in liquidio_xmit()
2508 netif_info(lio, tx_queued, lio->netdev, "Transmit queued successfully\n"); in liquidio_xmit()
2525 netif_info(lio, tx_err, lio->netdev, "IQ%d Transmit dropped:%llu\n", in liquidio_xmit()
2544 struct lio *lio; in liquidio_tx_timeout() local
2546 lio = GET_LIO(netdev); in liquidio_tx_timeout()
2548 netif_info(lio, tx_err, lio->netdev, in liquidio_tx_timeout()
2559 struct lio *lio = GET_LIO(netdev); in liquidio_vlan_rx_add_vid() local
2560 struct octeon_device *oct = lio->oct_dev; in liquidio_vlan_rx_add_vid()
2569 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_vlan_rx_add_vid()
2573 ret = octnet_send_nic_ctrl_pkt(lio->oct_dev, &nctrl); in liquidio_vlan_rx_add_vid()
2588 struct lio *lio = GET_LIO(netdev); in liquidio_vlan_rx_kill_vid() local
2589 struct octeon_device *oct = lio->oct_dev; in liquidio_vlan_rx_kill_vid()
2598 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_vlan_rx_kill_vid()
2602 ret = octnet_send_nic_ctrl_pkt(lio->oct_dev, &nctrl); in liquidio_vlan_rx_kill_vid()
2622 struct lio *lio = GET_LIO(netdev); in liquidio_set_rxcsum_command() local
2623 struct octeon_device *oct = lio->oct_dev; in liquidio_set_rxcsum_command()
2632 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_set_rxcsum_command()
2636 ret = octnet_send_nic_ctrl_pkt(lio->oct_dev, &nctrl); in liquidio_set_rxcsum_command()
2659 struct lio *lio = GET_LIO(netdev); in liquidio_vxlan_port_command() local
2660 struct octeon_device *oct = lio->oct_dev; in liquidio_vxlan_port_command()
2670 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_vxlan_port_command()
2674 ret = octnet_send_nic_ctrl_pkt(lio->oct_dev, &nctrl); in liquidio_vxlan_port_command()
2723 struct lio *lio = netdev_priv(netdev); in liquidio_fix_features() local
2726 !(lio->dev_capability & NETIF_F_RXCSUM)) in liquidio_fix_features()
2730 !(lio->dev_capability & NETIF_F_HW_CSUM)) in liquidio_fix_features()
2733 if ((request & NETIF_F_TSO) && !(lio->dev_capability & NETIF_F_TSO)) in liquidio_fix_features()
2736 if ((request & NETIF_F_TSO6) && !(lio->dev_capability & NETIF_F_TSO6)) in liquidio_fix_features()
2739 if ((request & NETIF_F_LRO) && !(lio->dev_capability & NETIF_F_LRO)) in liquidio_fix_features()
2744 (lio->dev_capability & NETIF_F_LRO)) in liquidio_fix_features()
2748 !(lio->dev_capability & NETIF_F_HW_VLAN_CTAG_FILTER)) in liquidio_fix_features()
2762 struct lio *lio = netdev_priv(netdev); in liquidio_set_features() local
2765 (lio->dev_capability & NETIF_F_LRO) && in liquidio_set_features()
2770 (lio->dev_capability & NETIF_F_LRO) && in liquidio_set_features()
2779 (lio->enc_dev_capability & NETIF_F_RXCSUM) && in liquidio_set_features()
2785 (lio->enc_dev_capability & NETIF_F_RXCSUM) && in liquidio_set_features()
2791 (lio->dev_capability & NETIF_F_HW_VLAN_CTAG_FILTER) && in liquidio_set_features()
2796 (lio->dev_capability & NETIF_F_HW_VLAN_CTAG_FILTER) && in liquidio_set_features()
2807 struct lio *lio = GET_LIO(netdev); in __liquidio_set_vf_mac() local
2808 struct octeon_device *oct = lio->oct_dev; in __liquidio_set_vf_mac()
2825 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in __liquidio_set_vf_mac()
2847 struct lio *lio = GET_LIO(netdev); in liquidio_set_vf_mac() local
2848 struct octeon_device *oct = lio->oct_dev; in liquidio_set_vf_mac()
2864 struct lio *lio = GET_LIO(netdev); in liquidio_set_vf_spoofchk() local
2865 struct octeon_device *oct = lio->oct_dev; in liquidio_set_vf_spoofchk()
2870 netif_info(lio, drv, lio->netdev, in liquidio_set_vf_spoofchk()
2876 netif_info(lio, drv, lio->netdev, "Invalid vfidx %d\n", vfidx); in liquidio_set_vf_spoofchk()
2898 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_set_vf_spoofchk()
2904 netif_info(lio, drv, lio->netdev, in liquidio_set_vf_spoofchk()
2911 netif_info(lio, drv, lio->netdev, "VF %u spoofchk is %s\n", vfidx, in liquidio_set_vf_spoofchk()
2920 struct lio *lio = GET_LIO(netdev); in liquidio_set_vf_vlan() local
2921 struct octeon_device *oct = lio->oct_dev; in liquidio_set_vf_vlan()
2954 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_set_vf_vlan()
2972 struct lio *lio = GET_LIO(netdev); in liquidio_get_vf_config() local
2973 struct octeon_device *oct = lio->oct_dev; in liquidio_get_vf_config()
2993 ivi->max_tx_rate = lio->linfo.link.s.speed; in liquidio_get_vf_config()
2999 static int liquidio_send_vf_trust_cmd(struct lio *lio, int vfidx, bool trusted) in liquidio_send_vf_trust_cmd() argument
3001 struct octeon_device *oct = lio->oct_dev; in liquidio_send_vf_trust_cmd()
3009 sc->iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_send_vf_trust_cmd()
3038 struct lio *lio = GET_LIO(netdev); in liquidio_set_vf_trust() local
3039 struct octeon_device *oct = lio->oct_dev; in liquidio_set_vf_trust()
3047 netif_info(lio, drv, lio->netdev, "Invalid vfidx %d\n", vfidx); in liquidio_set_vf_trust()
3059 netif_info(lio, drv, lio->netdev, "More than one trusted VF is not allowed\n"); in liquidio_set_vf_trust()
3069 if (!liquidio_send_vf_trust_cmd(lio, vfidx, setting)) { in liquidio_set_vf_trust()
3077 netif_info(lio, drv, lio->netdev, "VF %u is %strusted\n", vfidx, in liquidio_set_vf_trust()
3080 netif_info(lio, drv, lio->netdev, "Failed to set VF trusted\n"); in liquidio_set_vf_trust()
3090 struct lio *lio = GET_LIO(netdev); in liquidio_set_vf_link_state() local
3091 struct octeon_device *oct = lio->oct_dev; in liquidio_set_vf_link_state()
3107 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in liquidio_set_vf_link_state()
3178 struct lio *lio = GET_LIO(dev); in liquidio_get_port_parent_id() local
3179 struct octeon_device *oct = lio->oct_dev; in liquidio_get_port_parent_id()
3185 ether_addr_copy(ppid->id, (void *)&lio->linfo.hw_addr + 2); in liquidio_get_port_parent_id()
3193 struct lio *lio = GET_LIO(netdev); in liquidio_get_vf_stats() local
3194 struct octeon_device *oct = lio->oct_dev; in liquidio_get_vf_stats()
3333 struct lio *lio = NULL; in setup_nic_devices() local
3531 lio = GET_LIO(netdev); in setup_nic_devices()
3533 memset(lio, 0, sizeof(struct lio)); in setup_nic_devices()
3535 lio->ifidx = ifidx_or_pfnum; in setup_nic_devices()
3541 lio->linfo.num_rxpciq = num_oqueues; in setup_nic_devices()
3542 lio->linfo.num_txpciq = num_iqueues; in setup_nic_devices()
3544 lio->linfo.rxpciq[j].u64 = in setup_nic_devices()
3548 lio->linfo.txpciq[j].u64 = in setup_nic_devices()
3551 lio->linfo.hw_addr = resp->cfg_info.linfo.hw_addr; in setup_nic_devices()
3552 lio->linfo.gmxport = resp->cfg_info.linfo.gmxport; in setup_nic_devices()
3553 lio->linfo.link.u64 = resp->cfg_info.linfo.link.u64; in setup_nic_devices()
3557 lio->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); in setup_nic_devices()
3561 lio->dev_capability = NETIF_F_HIGHDMA in setup_nic_devices()
3574 lio->enc_dev_capability = NETIF_F_IP_CSUM in setup_nic_devices()
3582 netdev->hw_enc_features = (lio->enc_dev_capability & in setup_nic_devices()
3587 lio->dev_capability |= NETIF_F_GSO_UDP_TUNNEL; in setup_nic_devices()
3589 netdev->vlan_features = lio->dev_capability; in setup_nic_devices()
3591 lio->dev_capability |= NETIF_F_HW_VLAN_CTAG_FILTER | in setup_nic_devices()
3595 netdev->features = (lio->dev_capability & ~NETIF_F_LRO); in setup_nic_devices()
3597 netdev->hw_features = lio->dev_capability; in setup_nic_devices()
3609 lio->oct_dev = octeon_dev; in setup_nic_devices()
3610 lio->octprops = props; in setup_nic_devices()
3611 lio->netdev = netdev; in setup_nic_devices()
3615 lio->linfo.gmxport, CVM_CAST64(lio->linfo.hw_addr)); in setup_nic_devices()
3630 octeon_swap_8B_data(&lio->linfo.hw_addr, 1); in setup_nic_devices()
3632 mac[j] = *((u8 *)(((u8 *)&lio->linfo.hw_addr) + 2 + j)); in setup_nic_devices()
3641 lio->txq = lio->linfo.txpciq[0].s.q_no; in setup_nic_devices()
3642 lio->rxq = lio->linfo.rxpciq[0].s.q_no; in setup_nic_devices()
3644 lio->linfo.num_txpciq, in setup_nic_devices()
3645 lio->linfo.num_rxpciq)) { in setup_nic_devices()
3650 ifstate_set(lio, LIO_IFSTATE_DROQ_OPS); in setup_nic_devices()
3652 lio->tx_qsize = octeon_get_tx_qsize(octeon_dev, lio->txq); in setup_nic_devices()
3653 lio->rx_qsize = octeon_get_rx_qsize(octeon_dev, lio->rxq); in setup_nic_devices()
3655 if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { in setup_nic_devices()
3663 if (lio->oct_dev->chip_id == OCTEON_CN23XX_PF_VID) in setup_nic_devices()
3700 lio->link_changes++; in setup_nic_devices()
3702 ifstate_set(lio, LIO_IFSTATE_REGISTERED); in setup_nic_devices()
3731 liquidio_get_speed(lio); in setup_nic_devices()
3747 liquidio_get_fec(lio); in setup_nic_devices()
3748 octeon_dev->props[lio->ifidx].fec_boot = in setup_nic_devices()
3749 octeon_dev->props[lio->ifidx].fec; in setup_nic_devices()