Lines Matching refs:vpath
657 struct vxge_vpath *vpath, u64 del_mac) in vxge_search_mac_addr_in_list() argument
660 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_search_mac_addr_in_list()
667 static int vxge_mac_list_add(struct vxge_vpath *vpath, struct macInfo *mac) in vxge_mac_list_add() argument
672 if (vpath->mac_addr_cnt >= VXGE_MAX_LEARN_MAC_ADDR_CNT) in vxge_mac_list_add()
683 list_add(&new_mac_entry->item, &vpath->mac_addr_list); in vxge_mac_list_add()
690 vpath->mac_addr_cnt++; in vxge_mac_list_add()
693 vpath->mcast_addr_cnt++; in vxge_mac_list_add()
703 struct vxge_vpath *vpath; in vxge_add_mac_addr() local
711 vpath = &vdev->vpaths[mac->vpath_no]; in vxge_add_mac_addr()
712 status = vxge_hw_vpath_mac_addr_add(vpath->handle, mac->macaddr, in vxge_add_mac_addr()
717 vpath->device_id); in vxge_add_mac_addr()
719 if (FALSE == vxge_mac_list_add(vpath, mac)) in vxge_add_mac_addr()
732 struct vxge_vpath *vpath = NULL; in vxge_learn_mac() local
739 vpath = &vdev->vpaths[vpath_idx]; in vxge_learn_mac()
740 if (vxge_search_mac_addr_in_list(vpath, mac_addr)) in vxge_learn_mac()
749 vpath = &vdev->vpaths[vpath_idx]; in vxge_learn_mac()
750 if (vpath->mac_addr_cnt < vpath->max_mac_addr_cnt) { in vxge_learn_mac()
765 vpath = &vdev->vpaths[vpath_idx]; in vxge_learn_mac()
766 if (vpath->mac_addr_cnt > vpath->max_mac_addr_cnt) { in vxge_learn_mac()
768 if (FALSE == vxge_mac_list_add(vpath, &mac_info)) in vxge_learn_mac()
774 vpath_vector = vxge_mBIT(vpath->device_id); in vxge_learn_mac()
775 status = vxge_hw_mgmt_reg_write(vpath->vdev->devh, in vxge_learn_mac()
785 VXGE_DRIVER_NAME, vpath->device_id); in vxge_learn_mac()
789 if (FALSE == vxge_mac_list_add(vpath, &mac_info)) in vxge_learn_mac()
1067 static int vxge_mac_list_del(struct vxge_vpath *vpath, struct macInfo *mac) in vxge_mac_list_del() argument
1076 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_mac_list_del()
1080 vpath->mac_addr_cnt--; in vxge_mac_list_del()
1083 vpath->mcast_addr_cnt--; in vxge_mac_list_del()
1096 struct vxge_vpath *vpath; in vxge_del_mac_addr() local
1098 vpath = &vdev->vpaths[mac->vpath_no]; in vxge_del_mac_addr()
1099 status = vxge_hw_vpath_mac_addr_delete(vpath->handle, mac->macaddr, in vxge_del_mac_addr()
1104 vpath->device_id); in vxge_del_mac_addr()
1106 vxge_mac_list_del(vpath, mac); in vxge_del_mac_addr()
1126 struct vxge_vpath *vpath; in vxge_set_multicast() local
1145 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1146 vxge_assert(vpath->is_open); in vxge_set_multicast()
1147 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_set_multicast()
1155 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1156 vxge_assert(vpath->is_open); in vxge_set_multicast()
1157 status = vxge_hw_vpath_mcast_disable(vpath->handle); in vxge_set_multicast()
1168 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1169 vxge_assert(vpath->is_open); in vxge_set_multicast()
1173 vpath->handle); in vxge_set_multicast()
1176 vpath->handle); in vxge_set_multicast()
1257 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1258 vxge_assert(vpath->is_open); in vxge_set_multicast()
1260 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_set_multicast()
1312 struct vxge_vpath *vpath = &vdev->vpaths[vpath_idx]; in vxge_set_mac_addr() local
1313 if (!vpath->is_open) { in vxge_set_mac_addr()
1317 vxge_mac_list_del(vpath, &mac_info_old); in vxge_set_mac_addr()
1321 vxge_mac_list_add(vpath, &mac_info_new); in vxge_set_mac_addr()
1358 struct vxge_vpath *vpath = &vdev->vpaths[vp_id]; in vxge_vpath_intr_enable() local
1363 vxge_hw_vpath_intr_enable(vpath->handle); in vxge_vpath_intr_enable()
1366 vxge_hw_vpath_inta_unmask_tx_rx(vpath->handle); in vxge_vpath_intr_enable()
1368 vxge_hw_vpath_msix_set(vpath->handle, tim_msix_id, in vxge_vpath_intr_enable()
1371 msix_id = vpath->device_id * VXGE_HW_VPATH_MSIX_ACTIVE; in vxge_vpath_intr_enable()
1372 vxge_hw_vpath_msix_unmask(vpath->handle, msix_id); in vxge_vpath_intr_enable()
1373 vxge_hw_vpath_msix_unmask(vpath->handle, msix_id + 1); in vxge_vpath_intr_enable()
1376 msix_id = (vpath->handle->vpath->hldev->first_vp_id * in vxge_vpath_intr_enable()
1378 vxge_hw_vpath_msix_unmask(vpath->handle, msix_id); in vxge_vpath_intr_enable()
1391 struct vxge_vpath *vpath = &vdev->vpaths[vp_id]; in vxge_vpath_intr_disable() local
1397 vxge_hw_vpath_wait_receive_idle(hldev, vpath->device_id); in vxge_vpath_intr_disable()
1399 vxge_hw_vpath_intr_disable(vpath->handle); in vxge_vpath_intr_disable()
1402 vxge_hw_vpath_inta_mask_tx_rx(vpath->handle); in vxge_vpath_intr_disable()
1404 msix_id = vpath->device_id * VXGE_HW_VPATH_MSIX_ACTIVE; in vxge_vpath_intr_disable()
1405 vxge_hw_vpath_msix_mask(vpath->handle, msix_id); in vxge_vpath_intr_disable()
1406 vxge_hw_vpath_msix_mask(vpath->handle, msix_id + 1); in vxge_vpath_intr_disable()
1409 msix_id = (vpath->handle->vpath->hldev->first_vp_id * in vxge_vpath_intr_disable()
1411 vxge_hw_vpath_msix_mask(vpath->handle, msix_id); in vxge_vpath_intr_disable()
1417 vxge_search_mac_addr_in_da_table(struct vxge_vpath *vpath, struct macInfo *mac) in vxge_search_mac_addr_in_da_table() argument
1423 status = vxge_hw_vpath_mac_addr_get(vpath->handle, in vxge_search_mac_addr_in_da_table()
1428 vpath->device_id); in vxge_search_mac_addr_in_da_table()
1433 status = vxge_hw_vpath_mac_addr_get_next(vpath->handle, in vxge_search_mac_addr_in_da_table()
1443 static enum vxge_hw_status vxge_restore_vpath_mac_addr(struct vxge_vpath *vpath) in vxge_restore_vpath_mac_addr() argument
1452 if (vpath->is_open) { in vxge_restore_vpath_mac_addr()
1453 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_restore_vpath_mac_addr()
1461 status = vxge_search_mac_addr_in_da_table(vpath, in vxge_restore_vpath_mac_addr()
1466 vpath->handle, mac_info.macaddr, in vxge_restore_vpath_mac_addr()
1472 vpath->device_id); in vxge_restore_vpath_mac_addr()
1485 vxge_restore_vpath_vid_table(struct vxge_vpath *vpath) in vxge_restore_vpath_vid_table() argument
1488 struct vxgedev *vdev = vpath->vdev; in vxge_restore_vpath_vid_table()
1491 if (!vpath->is_open) in vxge_restore_vpath_vid_table()
1495 status = vxge_hw_vpath_vid_add(vpath->handle, vid); in vxge_restore_vpath_vid_table()
1510 struct vxge_vpath *vpath = &vdev->vpaths[vp_id]; in vxge_reset_vpath() local
1521 if (vpath->handle) { in vxge_reset_vpath()
1522 if (vxge_hw_vpath_reset(vpath->handle) == VXGE_HW_OK) { in vxge_reset_vpath()
1524 vxge_hw_vpath_recover_from_reset(vpath->handle) in vxge_reset_vpath()
1540 vxge_restore_vpath_mac_addr(vpath); in vxge_reset_vpath()
1541 vxge_restore_vpath_vid_table(vpath); in vxge_reset_vpath()
1544 vxge_hw_vpath_bcast_enable(vpath->handle); in vxge_reset_vpath()
1548 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_reset_vpath()
1561 vxge_hw_vpath_enable(vpath->handle); in vxge_reset_vpath()
1564 vxge_hw_vpath_rx_doorbell_init(vpath->handle); in vxge_reset_vpath()
1565 vpath->ring.last_status = VXGE_HW_OK; in vxge_reset_vpath()
1571 if (netif_tx_queue_stopped(vpath->fifo.txq)) in vxge_reset_vpath()
1572 netif_tx_wake_queue(vpath->fifo.txq); in vxge_reset_vpath()
1975 struct vxge_vpath *vpath; in vxge_reset_all_vpaths() local
1979 vpath = &vdev->vpaths[i]; in vxge_reset_all_vpaths()
1980 if (vpath->handle) { in vxge_reset_all_vpaths()
1981 if (vxge_hw_vpath_reset(vpath->handle) == VXGE_HW_OK) { in vxge_reset_all_vpaths()
1984 vpath->handle) != VXGE_HW_OK) { in vxge_reset_all_vpaths()
2006 struct vxge_vpath *vpath; in vxge_close_vpaths() local
2010 vpath = &vdev->vpaths[i]; in vxge_close_vpaths()
2012 if (vpath->handle && vpath->is_open) { in vxge_close_vpaths()
2013 vxge_hw_vpath_close(vpath->handle); in vxge_close_vpaths()
2016 vpath->is_open = 0; in vxge_close_vpaths()
2017 vpath->handle = NULL; in vxge_close_vpaths()
2026 struct vxge_vpath *vpath; in vxge_open_vpaths() local
2031 vpath = &vdev->vpaths[i]; in vxge_open_vpaths()
2032 vxge_assert(vpath->is_configured); in vxge_open_vpaths()
2036 vcfg = &vdev->devh->config.vp_config[vpath->device_id]; in vxge_open_vpaths()
2049 attr.vp_id = vpath->device_id; in vxge_open_vpaths()
2053 attr.fifo_attr.userdata = &vpath->fifo; in vxge_open_vpaths()
2059 attr.ring_attr.userdata = &vpath->ring; in vxge_open_vpaths()
2061 vpath->ring.ndev = vdev->ndev; in vxge_open_vpaths()
2062 vpath->ring.pdev = vdev->pdev; in vxge_open_vpaths()
2064 status = vxge_hw_vpath_open(vdev->devh, &attr, &vpath->handle); in vxge_open_vpaths()
2066 vpath->fifo.handle = in vxge_open_vpaths()
2068 vpath->ring.handle = in vxge_open_vpaths()
2070 vpath->fifo.tx_steering_type = in vxge_open_vpaths()
2072 vpath->fifo.ndev = vdev->ndev; in vxge_open_vpaths()
2073 vpath->fifo.pdev = vdev->pdev; in vxge_open_vpaths()
2075 u64_stats_init(&vpath->fifo.stats.syncp); in vxge_open_vpaths()
2076 u64_stats_init(&vpath->ring.stats.syncp); in vxge_open_vpaths()
2079 vpath->fifo.txq = in vxge_open_vpaths()
2082 vpath->fifo.txq = in vxge_open_vpaths()
2084 vpath->fifo.indicate_max_pkts = in vxge_open_vpaths()
2086 vpath->fifo.tx_vector_no = 0; in vxge_open_vpaths()
2087 vpath->ring.rx_vector_no = 0; in vxge_open_vpaths()
2088 vpath->ring.rx_hwts = vdev->rx_hwts; in vxge_open_vpaths()
2089 vpath->is_open = 1; in vxge_open_vpaths()
2090 vdev->vp_handles[i] = vpath->handle; in vxge_open_vpaths()
2091 vpath->ring.vlan_tag_strip = vdev->vlan_tag_strip; in vxge_open_vpaths()
2097 vdev->ndev->name, vpath->device_id, in vxge_open_vpaths()
2103 vp_id = vpath->handle->vpath->vp_id; in vxge_open_vpaths()
2262 struct vxge_vpath *vpath = (struct vxge_vpath *)dev_id; in vxge_alarm_msix_handle() local
2263 struct vxgedev *vdev = vpath->vdev; in vxge_alarm_msix_handle()
2264 int msix_id = (vpath->handle->vpath->vp_id * in vxge_alarm_msix_handle()
2393 struct vxge_vpath *vpath = &vdev->vpaths[i]; in vxge_enable_msix() local
2398 vpath->ring.rx_vector_no = (vpath->device_id * in vxge_enable_msix()
2401 vpath->fifo.tx_vector_no = (vpath->device_id * in vxge_enable_msix()
2404 vxge_hw_vpath_msix_set(vpath->handle, tim_msix_id, in vxge_enable_msix()
2556 msix_idx = (vdev->vpaths[0].handle->vpath->vp_id * in vxge_add_isr()
2613 struct vxge_vpath *vpath; in vxge_poll_vp_lockup() local
2634 vpath = &vdev->vpaths[i]; in vxge_poll_vp_lockup()
2640 netif_tx_stop_queue(vpath->fifo.txq); in vxge_poll_vp_lockup()
2703 struct vxge_vpath *vpath; in vxge_open() local
2742 vpath = &vdev->vpaths[i]; in vxge_open()
2743 vpath->ring.napi_p = &vdev->napi; in vxge_open()
2747 vpath = &vdev->vpaths[i]; in vxge_open()
2748 netif_napi_add(dev, &vpath->ring.napi, in vxge_open()
2750 napi_enable(&vpath->ring.napi); in vxge_open()
2751 vpath->ring.napi_p = &vpath->ring.napi; in vxge_open()
2770 vpath = &vdev->vpaths[i]; in vxge_open()
2773 status = vxge_hw_vpath_mtu_set(vpath->handle, vdev->mtu); in vxge_open()
2792 vpath = &vdev->vpaths[i]; in vxge_open()
2793 vxge_restore_vpath_mac_addr(vpath); in vxge_open()
2794 vxge_restore_vpath_vid_table(vpath); in vxge_open()
2796 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_open()
2830 vpath = &vdev->vpaths[i]; in vxge_open()
2831 status = vxge_hw_vpath_bcast_enable(vpath->handle); in vxge_open()
2837 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_open()
2873 vpath = &vdev->vpaths[i]; in vxge_open()
2875 vxge_hw_vpath_enable(vpath->handle); in vxge_open()
2877 vxge_hw_vpath_rx_doorbell_init(vpath->handle); in vxge_open()
2908 static void vxge_free_mac_add_list(struct vxge_vpath *vpath) in vxge_free_mac_add_list() argument
2912 if (list_empty(&vpath->mac_addr_list)) in vxge_free_mac_add_list()
2915 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_free_mac_add_list()
3306 struct vxge_vpath *vpath; in vxge_vlan_rx_add_vid() local
3311 vpath = &vdev->vpaths[vp_id]; in vxge_vlan_rx_add_vid()
3312 if (!vpath->is_open) in vxge_vlan_rx_add_vid()
3314 vxge_hw_vpath_vid_add(vpath->handle, vid); in vxge_vlan_rx_add_vid()
3332 struct vxge_vpath *vpath; in vxge_vlan_rx_kill_vid() local
3339 vpath = &vdev->vpaths[vp_id]; in vxge_vlan_rx_kill_vid()
3340 if (!vpath->is_open) in vxge_vlan_rx_kill_vid()
3342 vxge_hw_vpath_vid_delete(vpath->handle, vid); in vxge_vlan_rx_kill_vid()
3551 struct vxge_vpath *vpath = NULL; in vxge_callback_crit_err() local
3563 vpath = &vdev->vpaths[vpath_idx]; in vxge_callback_crit_err()
3564 if (vpath->device_id == vp_id) in vxge_callback_crit_err()
3603 netif_tx_stop_queue(vpath->fifo.txq); in vxge_callback_crit_err()