Lines Matching refs:vpath
656 struct vxge_vpath *vpath, u64 del_mac) in vxge_search_mac_addr_in_list() argument
659 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_search_mac_addr_in_list()
666 static int vxge_mac_list_add(struct vxge_vpath *vpath, struct macInfo *mac) in vxge_mac_list_add() argument
671 if (vpath->mac_addr_cnt >= VXGE_MAX_LEARN_MAC_ADDR_CNT) in vxge_mac_list_add()
682 list_add(&new_mac_entry->item, &vpath->mac_addr_list); in vxge_mac_list_add()
689 vpath->mac_addr_cnt++; in vxge_mac_list_add()
692 vpath->mcast_addr_cnt++; in vxge_mac_list_add()
702 struct vxge_vpath *vpath; in vxge_add_mac_addr() local
710 vpath = &vdev->vpaths[mac->vpath_no]; in vxge_add_mac_addr()
711 status = vxge_hw_vpath_mac_addr_add(vpath->handle, mac->macaddr, in vxge_add_mac_addr()
716 vpath->device_id); in vxge_add_mac_addr()
718 if (FALSE == vxge_mac_list_add(vpath, mac)) in vxge_add_mac_addr()
731 struct vxge_vpath *vpath = NULL; in vxge_learn_mac() local
738 vpath = &vdev->vpaths[vpath_idx]; in vxge_learn_mac()
739 if (vxge_search_mac_addr_in_list(vpath, mac_addr)) in vxge_learn_mac()
748 vpath = &vdev->vpaths[vpath_idx]; in vxge_learn_mac()
749 if (vpath->mac_addr_cnt < vpath->max_mac_addr_cnt) { in vxge_learn_mac()
764 vpath = &vdev->vpaths[vpath_idx]; in vxge_learn_mac()
765 if (vpath->mac_addr_cnt > vpath->max_mac_addr_cnt) { in vxge_learn_mac()
767 if (FALSE == vxge_mac_list_add(vpath, &mac_info)) in vxge_learn_mac()
773 vpath_vector = vxge_mBIT(vpath->device_id); in vxge_learn_mac()
774 status = vxge_hw_mgmt_reg_write(vpath->vdev->devh, in vxge_learn_mac()
784 VXGE_DRIVER_NAME, vpath->device_id); in vxge_learn_mac()
788 if (FALSE == vxge_mac_list_add(vpath, &mac_info)) in vxge_learn_mac()
1066 static int vxge_mac_list_del(struct vxge_vpath *vpath, struct macInfo *mac) in vxge_mac_list_del() argument
1075 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_mac_list_del()
1079 vpath->mac_addr_cnt--; in vxge_mac_list_del()
1082 vpath->mcast_addr_cnt--; in vxge_mac_list_del()
1095 struct vxge_vpath *vpath; in vxge_del_mac_addr() local
1097 vpath = &vdev->vpaths[mac->vpath_no]; in vxge_del_mac_addr()
1098 status = vxge_hw_vpath_mac_addr_delete(vpath->handle, mac->macaddr, in vxge_del_mac_addr()
1103 vpath->device_id); in vxge_del_mac_addr()
1105 vxge_mac_list_del(vpath, mac); in vxge_del_mac_addr()
1125 struct vxge_vpath *vpath; in vxge_set_multicast() local
1144 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1145 vxge_assert(vpath->is_open); in vxge_set_multicast()
1146 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_set_multicast()
1154 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1155 vxge_assert(vpath->is_open); in vxge_set_multicast()
1156 status = vxge_hw_vpath_mcast_disable(vpath->handle); in vxge_set_multicast()
1167 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1168 vxge_assert(vpath->is_open); in vxge_set_multicast()
1172 vpath->handle); in vxge_set_multicast()
1175 vpath->handle); in vxge_set_multicast()
1256 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1257 vxge_assert(vpath->is_open); in vxge_set_multicast()
1259 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_set_multicast()
1310 struct vxge_vpath *vpath = &vdev->vpaths[vpath_idx]; in vxge_set_mac_addr() local
1311 if (!vpath->is_open) { in vxge_set_mac_addr()
1315 vxge_mac_list_del(vpath, &mac_info_old); in vxge_set_mac_addr()
1319 vxge_mac_list_add(vpath, &mac_info_new); in vxge_set_mac_addr()
1356 struct vxge_vpath *vpath = &vdev->vpaths[vp_id]; in vxge_vpath_intr_enable() local
1361 vxge_hw_vpath_intr_enable(vpath->handle); in vxge_vpath_intr_enable()
1364 vxge_hw_vpath_inta_unmask_tx_rx(vpath->handle); in vxge_vpath_intr_enable()
1366 vxge_hw_vpath_msix_set(vpath->handle, tim_msix_id, in vxge_vpath_intr_enable()
1369 msix_id = vpath->device_id * VXGE_HW_VPATH_MSIX_ACTIVE; in vxge_vpath_intr_enable()
1370 vxge_hw_vpath_msix_unmask(vpath->handle, msix_id); in vxge_vpath_intr_enable()
1371 vxge_hw_vpath_msix_unmask(vpath->handle, msix_id + 1); in vxge_vpath_intr_enable()
1374 msix_id = (vpath->handle->vpath->hldev->first_vp_id * in vxge_vpath_intr_enable()
1376 vxge_hw_vpath_msix_unmask(vpath->handle, msix_id); in vxge_vpath_intr_enable()
1389 struct vxge_vpath *vpath = &vdev->vpaths[vp_id]; in vxge_vpath_intr_disable() local
1395 vxge_hw_vpath_wait_receive_idle(hldev, vpath->device_id); in vxge_vpath_intr_disable()
1397 vxge_hw_vpath_intr_disable(vpath->handle); in vxge_vpath_intr_disable()
1400 vxge_hw_vpath_inta_mask_tx_rx(vpath->handle); in vxge_vpath_intr_disable()
1402 msix_id = vpath->device_id * VXGE_HW_VPATH_MSIX_ACTIVE; in vxge_vpath_intr_disable()
1403 vxge_hw_vpath_msix_mask(vpath->handle, msix_id); in vxge_vpath_intr_disable()
1404 vxge_hw_vpath_msix_mask(vpath->handle, msix_id + 1); in vxge_vpath_intr_disable()
1407 msix_id = (vpath->handle->vpath->hldev->first_vp_id * in vxge_vpath_intr_disable()
1409 vxge_hw_vpath_msix_mask(vpath->handle, msix_id); in vxge_vpath_intr_disable()
1415 vxge_search_mac_addr_in_da_table(struct vxge_vpath *vpath, struct macInfo *mac) in vxge_search_mac_addr_in_da_table() argument
1421 status = vxge_hw_vpath_mac_addr_get(vpath->handle, in vxge_search_mac_addr_in_da_table()
1426 vpath->device_id); in vxge_search_mac_addr_in_da_table()
1431 status = vxge_hw_vpath_mac_addr_get_next(vpath->handle, in vxge_search_mac_addr_in_da_table()
1441 static enum vxge_hw_status vxge_restore_vpath_mac_addr(struct vxge_vpath *vpath) in vxge_restore_vpath_mac_addr() argument
1450 if (vpath->is_open) { in vxge_restore_vpath_mac_addr()
1451 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_restore_vpath_mac_addr()
1459 status = vxge_search_mac_addr_in_da_table(vpath, in vxge_restore_vpath_mac_addr()
1464 vpath->handle, mac_info.macaddr, in vxge_restore_vpath_mac_addr()
1470 vpath->device_id); in vxge_restore_vpath_mac_addr()
1483 vxge_restore_vpath_vid_table(struct vxge_vpath *vpath) in vxge_restore_vpath_vid_table() argument
1486 struct vxgedev *vdev = vpath->vdev; in vxge_restore_vpath_vid_table()
1489 if (!vpath->is_open) in vxge_restore_vpath_vid_table()
1493 status = vxge_hw_vpath_vid_add(vpath->handle, vid); in vxge_restore_vpath_vid_table()
1508 struct vxge_vpath *vpath = &vdev->vpaths[vp_id]; in vxge_reset_vpath() local
1519 if (vpath->handle) { in vxge_reset_vpath()
1520 if (vxge_hw_vpath_reset(vpath->handle) == VXGE_HW_OK) { in vxge_reset_vpath()
1522 vxge_hw_vpath_recover_from_reset(vpath->handle) in vxge_reset_vpath()
1538 vxge_restore_vpath_mac_addr(vpath); in vxge_reset_vpath()
1539 vxge_restore_vpath_vid_table(vpath); in vxge_reset_vpath()
1542 vxge_hw_vpath_bcast_enable(vpath->handle); in vxge_reset_vpath()
1546 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_reset_vpath()
1559 vxge_hw_vpath_enable(vpath->handle); in vxge_reset_vpath()
1562 vxge_hw_vpath_rx_doorbell_init(vpath->handle); in vxge_reset_vpath()
1563 vpath->ring.last_status = VXGE_HW_OK; in vxge_reset_vpath()
1569 if (netif_tx_queue_stopped(vpath->fifo.txq)) in vxge_reset_vpath()
1570 netif_tx_wake_queue(vpath->fifo.txq); in vxge_reset_vpath()
1973 struct vxge_vpath *vpath; in vxge_reset_all_vpaths() local
1977 vpath = &vdev->vpaths[i]; in vxge_reset_all_vpaths()
1978 if (vpath->handle) { in vxge_reset_all_vpaths()
1979 if (vxge_hw_vpath_reset(vpath->handle) == VXGE_HW_OK) { in vxge_reset_all_vpaths()
1982 vpath->handle) != VXGE_HW_OK) { in vxge_reset_all_vpaths()
2004 struct vxge_vpath *vpath; in vxge_close_vpaths() local
2008 vpath = &vdev->vpaths[i]; in vxge_close_vpaths()
2010 if (vpath->handle && vpath->is_open) { in vxge_close_vpaths()
2011 vxge_hw_vpath_close(vpath->handle); in vxge_close_vpaths()
2014 vpath->is_open = 0; in vxge_close_vpaths()
2015 vpath->handle = NULL; in vxge_close_vpaths()
2024 struct vxge_vpath *vpath; in vxge_open_vpaths() local
2029 vpath = &vdev->vpaths[i]; in vxge_open_vpaths()
2030 vxge_assert(vpath->is_configured); in vxge_open_vpaths()
2034 vcfg = &vdev->devh->config.vp_config[vpath->device_id]; in vxge_open_vpaths()
2047 attr.vp_id = vpath->device_id; in vxge_open_vpaths()
2051 attr.fifo_attr.userdata = &vpath->fifo; in vxge_open_vpaths()
2057 attr.ring_attr.userdata = &vpath->ring; in vxge_open_vpaths()
2059 vpath->ring.ndev = vdev->ndev; in vxge_open_vpaths()
2060 vpath->ring.pdev = vdev->pdev; in vxge_open_vpaths()
2062 status = vxge_hw_vpath_open(vdev->devh, &attr, &vpath->handle); in vxge_open_vpaths()
2064 vpath->fifo.handle = in vxge_open_vpaths()
2066 vpath->ring.handle = in vxge_open_vpaths()
2068 vpath->fifo.tx_steering_type = in vxge_open_vpaths()
2070 vpath->fifo.ndev = vdev->ndev; in vxge_open_vpaths()
2071 vpath->fifo.pdev = vdev->pdev; in vxge_open_vpaths()
2073 u64_stats_init(&vpath->fifo.stats.syncp); in vxge_open_vpaths()
2074 u64_stats_init(&vpath->ring.stats.syncp); in vxge_open_vpaths()
2077 vpath->fifo.txq = in vxge_open_vpaths()
2080 vpath->fifo.txq = in vxge_open_vpaths()
2082 vpath->fifo.indicate_max_pkts = in vxge_open_vpaths()
2084 vpath->fifo.tx_vector_no = 0; in vxge_open_vpaths()
2085 vpath->ring.rx_vector_no = 0; in vxge_open_vpaths()
2086 vpath->ring.rx_hwts = vdev->rx_hwts; in vxge_open_vpaths()
2087 vpath->is_open = 1; in vxge_open_vpaths()
2088 vdev->vp_handles[i] = vpath->handle; in vxge_open_vpaths()
2089 vpath->ring.vlan_tag_strip = vdev->vlan_tag_strip; in vxge_open_vpaths()
2095 vdev->ndev->name, vpath->device_id, in vxge_open_vpaths()
2101 vp_id = vpath->handle->vpath->vp_id; in vxge_open_vpaths()
2260 struct vxge_vpath *vpath = (struct vxge_vpath *)dev_id; in vxge_alarm_msix_handle() local
2261 struct vxgedev *vdev = vpath->vdev; in vxge_alarm_msix_handle()
2262 int msix_id = (vpath->handle->vpath->vp_id * in vxge_alarm_msix_handle()
2391 struct vxge_vpath *vpath = &vdev->vpaths[i]; in vxge_enable_msix() local
2396 vpath->ring.rx_vector_no = (vpath->device_id * in vxge_enable_msix()
2399 vpath->fifo.tx_vector_no = (vpath->device_id * in vxge_enable_msix()
2402 vxge_hw_vpath_msix_set(vpath->handle, tim_msix_id, in vxge_enable_msix()
2554 msix_idx = (vdev->vpaths[0].handle->vpath->vp_id * in vxge_add_isr()
2611 struct vxge_vpath *vpath; in vxge_poll_vp_lockup() local
2632 vpath = &vdev->vpaths[i]; in vxge_poll_vp_lockup()
2638 netif_tx_stop_queue(vpath->fifo.txq); in vxge_poll_vp_lockup()
2701 struct vxge_vpath *vpath; in vxge_open() local
2740 vpath = &vdev->vpaths[i]; in vxge_open()
2741 vpath->ring.napi_p = &vdev->napi; in vxge_open()
2745 vpath = &vdev->vpaths[i]; in vxge_open()
2746 netif_napi_add(dev, &vpath->ring.napi, in vxge_open()
2748 napi_enable(&vpath->ring.napi); in vxge_open()
2749 vpath->ring.napi_p = &vpath->ring.napi; in vxge_open()
2768 vpath = &vdev->vpaths[i]; in vxge_open()
2771 status = vxge_hw_vpath_mtu_set(vpath->handle, vdev->mtu); in vxge_open()
2790 vpath = &vdev->vpaths[i]; in vxge_open()
2791 vxge_restore_vpath_mac_addr(vpath); in vxge_open()
2792 vxge_restore_vpath_vid_table(vpath); in vxge_open()
2794 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_open()
2828 vpath = &vdev->vpaths[i]; in vxge_open()
2829 status = vxge_hw_vpath_bcast_enable(vpath->handle); in vxge_open()
2835 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_open()
2871 vpath = &vdev->vpaths[i]; in vxge_open()
2873 vxge_hw_vpath_enable(vpath->handle); in vxge_open()
2875 vxge_hw_vpath_rx_doorbell_init(vpath->handle); in vxge_open()
2906 static void vxge_free_mac_add_list(struct vxge_vpath *vpath) in vxge_free_mac_add_list() argument
2910 if (list_empty(&vpath->mac_addr_list)) in vxge_free_mac_add_list()
2913 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_free_mac_add_list()
3303 struct vxge_vpath *vpath; in vxge_vlan_rx_add_vid() local
3308 vpath = &vdev->vpaths[vp_id]; in vxge_vlan_rx_add_vid()
3309 if (!vpath->is_open) in vxge_vlan_rx_add_vid()
3311 vxge_hw_vpath_vid_add(vpath->handle, vid); in vxge_vlan_rx_add_vid()
3329 struct vxge_vpath *vpath; in vxge_vlan_rx_kill_vid() local
3336 vpath = &vdev->vpaths[vp_id]; in vxge_vlan_rx_kill_vid()
3337 if (!vpath->is_open) in vxge_vlan_rx_kill_vid()
3339 vxge_hw_vpath_vid_delete(vpath->handle, vid); in vxge_vlan_rx_kill_vid()
3548 struct vxge_vpath *vpath = NULL; in vxge_callback_crit_err() local
3560 vpath = &vdev->vpaths[vpath_idx]; in vxge_callback_crit_err()
3561 if (vpath->device_id == vp_id) in vxge_callback_crit_err()
3600 netif_tx_stop_queue(vpath->fifo.txq); in vxge_callback_crit_err()