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()
1126 struct vxge_vpath *vpath; in vxge_set_multicast() local
1146 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1147 vxge_assert(vpath->is_open); in vxge_set_multicast()
1148 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_set_multicast()
1156 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1157 vxge_assert(vpath->is_open); in vxge_set_multicast()
1158 status = vxge_hw_vpath_mcast_disable(vpath->handle); in vxge_set_multicast()
1169 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1170 vxge_assert(vpath->is_open); in vxge_set_multicast()
1174 vpath->handle); in vxge_set_multicast()
1177 vpath->handle); in vxge_set_multicast()
1258 vpath = &vdev->vpaths[i]; in vxge_set_multicast()
1259 vxge_assert(vpath->is_open); in vxge_set_multicast()
1261 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_set_multicast()
1314 struct vxge_vpath *vpath = &vdev->vpaths[vpath_idx]; in vxge_set_mac_addr() local
1315 if (!vpath->is_open) { in vxge_set_mac_addr()
1319 vxge_mac_list_del(vpath, &mac_info_old); in vxge_set_mac_addr()
1323 vxge_mac_list_add(vpath, &mac_info_new); in vxge_set_mac_addr()
1360 struct vxge_vpath *vpath = &vdev->vpaths[vp_id]; in vxge_vpath_intr_enable() local
1365 vxge_hw_vpath_intr_enable(vpath->handle); in vxge_vpath_intr_enable()
1368 vxge_hw_vpath_inta_unmask_tx_rx(vpath->handle); in vxge_vpath_intr_enable()
1370 vxge_hw_vpath_msix_set(vpath->handle, tim_msix_id, in vxge_vpath_intr_enable()
1373 msix_id = vpath->device_id * VXGE_HW_VPATH_MSIX_ACTIVE; in vxge_vpath_intr_enable()
1374 vxge_hw_vpath_msix_unmask(vpath->handle, msix_id); in vxge_vpath_intr_enable()
1375 vxge_hw_vpath_msix_unmask(vpath->handle, msix_id + 1); in vxge_vpath_intr_enable()
1378 msix_id = (vpath->handle->vpath->hldev->first_vp_id * in vxge_vpath_intr_enable()
1380 vxge_hw_vpath_msix_unmask(vpath->handle, msix_id); in vxge_vpath_intr_enable()
1393 struct vxge_vpath *vpath = &vdev->vpaths[vp_id]; in vxge_vpath_intr_disable() local
1399 vxge_hw_vpath_wait_receive_idle(hldev, vpath->device_id); in vxge_vpath_intr_disable()
1401 vxge_hw_vpath_intr_disable(vpath->handle); in vxge_vpath_intr_disable()
1404 vxge_hw_vpath_inta_mask_tx_rx(vpath->handle); in vxge_vpath_intr_disable()
1406 msix_id = vpath->device_id * VXGE_HW_VPATH_MSIX_ACTIVE; in vxge_vpath_intr_disable()
1407 vxge_hw_vpath_msix_mask(vpath->handle, msix_id); in vxge_vpath_intr_disable()
1408 vxge_hw_vpath_msix_mask(vpath->handle, msix_id + 1); in vxge_vpath_intr_disable()
1411 msix_id = (vpath->handle->vpath->hldev->first_vp_id * in vxge_vpath_intr_disable()
1413 vxge_hw_vpath_msix_mask(vpath->handle, msix_id); in vxge_vpath_intr_disable()
1419 vxge_search_mac_addr_in_da_table(struct vxge_vpath *vpath, struct macInfo *mac) in vxge_search_mac_addr_in_da_table() argument
1425 status = vxge_hw_vpath_mac_addr_get(vpath->handle, in vxge_search_mac_addr_in_da_table()
1430 vpath->device_id); in vxge_search_mac_addr_in_da_table()
1435 status = vxge_hw_vpath_mac_addr_get_next(vpath->handle, in vxge_search_mac_addr_in_da_table()
1445 static enum vxge_hw_status vxge_restore_vpath_mac_addr(struct vxge_vpath *vpath) in vxge_restore_vpath_mac_addr() argument
1454 if (vpath->is_open) { in vxge_restore_vpath_mac_addr()
1455 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_restore_vpath_mac_addr()
1463 status = vxge_search_mac_addr_in_da_table(vpath, in vxge_restore_vpath_mac_addr()
1468 vpath->handle, mac_info.macaddr, in vxge_restore_vpath_mac_addr()
1474 vpath->device_id); in vxge_restore_vpath_mac_addr()
1487 vxge_restore_vpath_vid_table(struct vxge_vpath *vpath) in vxge_restore_vpath_vid_table() argument
1490 struct vxgedev *vdev = vpath->vdev; in vxge_restore_vpath_vid_table()
1493 if (!vpath->is_open) in vxge_restore_vpath_vid_table()
1497 status = vxge_hw_vpath_vid_add(vpath->handle, vid); in vxge_restore_vpath_vid_table()
1512 struct vxge_vpath *vpath = &vdev->vpaths[vp_id]; in vxge_reset_vpath() local
1523 if (vpath->handle) { in vxge_reset_vpath()
1524 if (vxge_hw_vpath_reset(vpath->handle) == VXGE_HW_OK) { in vxge_reset_vpath()
1526 vxge_hw_vpath_recover_from_reset(vpath->handle) in vxge_reset_vpath()
1542 vxge_restore_vpath_mac_addr(vpath); in vxge_reset_vpath()
1543 vxge_restore_vpath_vid_table(vpath); in vxge_reset_vpath()
1546 vxge_hw_vpath_bcast_enable(vpath->handle); in vxge_reset_vpath()
1550 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_reset_vpath()
1563 vxge_hw_vpath_enable(vpath->handle); in vxge_reset_vpath()
1566 vxge_hw_vpath_rx_doorbell_init(vpath->handle); in vxge_reset_vpath()
1567 vpath->ring.last_status = VXGE_HW_OK; in vxge_reset_vpath()
1573 if (netif_tx_queue_stopped(vpath->fifo.txq)) in vxge_reset_vpath()
1574 netif_tx_wake_queue(vpath->fifo.txq); in vxge_reset_vpath()
1978 struct vxge_vpath *vpath; in vxge_reset_all_vpaths() local
1982 vpath = &vdev->vpaths[i]; in vxge_reset_all_vpaths()
1983 if (vpath->handle) { in vxge_reset_all_vpaths()
1984 if (vxge_hw_vpath_reset(vpath->handle) == VXGE_HW_OK) { in vxge_reset_all_vpaths()
1987 vpath->handle) != VXGE_HW_OK) { in vxge_reset_all_vpaths()
2009 struct vxge_vpath *vpath; in vxge_close_vpaths() local
2013 vpath = &vdev->vpaths[i]; in vxge_close_vpaths()
2015 if (vpath->handle && vpath->is_open) { in vxge_close_vpaths()
2016 vxge_hw_vpath_close(vpath->handle); in vxge_close_vpaths()
2019 vpath->is_open = 0; in vxge_close_vpaths()
2020 vpath->handle = NULL; in vxge_close_vpaths()
2029 struct vxge_vpath *vpath; in vxge_open_vpaths() local
2034 vpath = &vdev->vpaths[i]; in vxge_open_vpaths()
2035 vxge_assert(vpath->is_configured); in vxge_open_vpaths()
2039 vcfg = &vdev->devh->config.vp_config[vpath->device_id]; in vxge_open_vpaths()
2052 attr.vp_id = vpath->device_id; in vxge_open_vpaths()
2056 attr.fifo_attr.userdata = &vpath->fifo; in vxge_open_vpaths()
2062 attr.ring_attr.userdata = &vpath->ring; in vxge_open_vpaths()
2064 vpath->ring.ndev = vdev->ndev; in vxge_open_vpaths()
2065 vpath->ring.pdev = vdev->pdev; in vxge_open_vpaths()
2067 status = vxge_hw_vpath_open(vdev->devh, &attr, &vpath->handle); in vxge_open_vpaths()
2069 vpath->fifo.handle = in vxge_open_vpaths()
2071 vpath->ring.handle = in vxge_open_vpaths()
2073 vpath->fifo.tx_steering_type = in vxge_open_vpaths()
2075 vpath->fifo.ndev = vdev->ndev; in vxge_open_vpaths()
2076 vpath->fifo.pdev = vdev->pdev; in vxge_open_vpaths()
2078 u64_stats_init(&vpath->fifo.stats.syncp); in vxge_open_vpaths()
2079 u64_stats_init(&vpath->ring.stats.syncp); in vxge_open_vpaths()
2082 vpath->fifo.txq = in vxge_open_vpaths()
2085 vpath->fifo.txq = in vxge_open_vpaths()
2087 vpath->fifo.indicate_max_pkts = in vxge_open_vpaths()
2089 vpath->fifo.tx_vector_no = 0; in vxge_open_vpaths()
2090 vpath->ring.rx_vector_no = 0; in vxge_open_vpaths()
2091 vpath->ring.rx_hwts = vdev->rx_hwts; in vxge_open_vpaths()
2092 vpath->is_open = 1; in vxge_open_vpaths()
2093 vdev->vp_handles[i] = vpath->handle; in vxge_open_vpaths()
2094 vpath->ring.vlan_tag_strip = vdev->vlan_tag_strip; in vxge_open_vpaths()
2100 vdev->ndev->name, vpath->device_id, in vxge_open_vpaths()
2106 vp_id = vpath->handle->vpath->vp_id; in vxge_open_vpaths()
2271 struct vxge_vpath *vpath = (struct vxge_vpath *)dev_id; in vxge_alarm_msix_handle() local
2272 struct vxgedev *vdev = vpath->vdev; in vxge_alarm_msix_handle()
2273 int msix_id = (vpath->handle->vpath->vp_id * in vxge_alarm_msix_handle()
2404 struct vxge_vpath *vpath = &vdev->vpaths[i]; in vxge_enable_msix() local
2409 vpath->ring.rx_vector_no = (vpath->device_id * in vxge_enable_msix()
2412 vpath->fifo.tx_vector_no = (vpath->device_id * in vxge_enable_msix()
2415 vxge_hw_vpath_msix_set(vpath->handle, tim_msix_id, in vxge_enable_msix()
2572 msix_idx = (vdev->vpaths[0].handle->vpath->vp_id * in vxge_add_isr()
2630 struct vxge_vpath *vpath; in vxge_poll_vp_lockup() local
2651 vpath = &vdev->vpaths[i]; in vxge_poll_vp_lockup()
2657 netif_tx_stop_queue(vpath->fifo.txq); in vxge_poll_vp_lockup()
2720 struct vxge_vpath *vpath; in vxge_open() local
2760 vpath = &vdev->vpaths[i]; in vxge_open()
2761 vpath->ring.napi_p = &vdev->napi; in vxge_open()
2765 vpath = &vdev->vpaths[i]; in vxge_open()
2766 netif_napi_add(dev, &vpath->ring.napi, in vxge_open()
2768 napi_enable(&vpath->ring.napi); in vxge_open()
2769 vpath->ring.napi_p = &vpath->ring.napi; in vxge_open()
2788 vpath = &vdev->vpaths[i]; in vxge_open()
2791 status = vxge_hw_vpath_mtu_set(vpath->handle, vdev->mtu); in vxge_open()
2810 vpath = &vdev->vpaths[i]; in vxge_open()
2811 vxge_restore_vpath_mac_addr(vpath); in vxge_open()
2812 vxge_restore_vpath_vid_table(vpath); in vxge_open()
2814 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_open()
2848 vpath = &vdev->vpaths[i]; in vxge_open()
2849 status = vxge_hw_vpath_bcast_enable(vpath->handle); in vxge_open()
2855 status = vxge_hw_vpath_mcast_enable(vpath->handle); in vxge_open()
2891 vpath = &vdev->vpaths[i]; in vxge_open()
2893 vxge_hw_vpath_enable(vpath->handle); in vxge_open()
2895 vxge_hw_vpath_rx_doorbell_init(vpath->handle); in vxge_open()
2926 static void vxge_free_mac_add_list(struct vxge_vpath *vpath) in vxge_free_mac_add_list() argument
2930 if (list_empty(&vpath->mac_addr_list)) in vxge_free_mac_add_list()
2933 list_for_each_safe(entry, next, &vpath->mac_addr_list) { in vxge_free_mac_add_list()
3329 struct vxge_vpath *vpath; in vxge_vlan_rx_add_vid() local
3334 vpath = &vdev->vpaths[vp_id]; in vxge_vlan_rx_add_vid()
3335 if (!vpath->is_open) in vxge_vlan_rx_add_vid()
3337 vxge_hw_vpath_vid_add(vpath->handle, vid); in vxge_vlan_rx_add_vid()
3355 struct vxge_vpath *vpath; in vxge_vlan_rx_kill_vid() local
3362 vpath = &vdev->vpaths[vp_id]; in vxge_vlan_rx_kill_vid()
3363 if (!vpath->is_open) in vxge_vlan_rx_kill_vid()
3365 vxge_hw_vpath_vid_delete(vpath->handle, vid); in vxge_vlan_rx_kill_vid()
3570 struct vxge_vpath *vpath = NULL; in vxge_callback_crit_err() local
3582 vpath = &vdev->vpaths[vpath_idx]; in vxge_callback_crit_err()
3583 if (vpath->device_id == vp_id) in vxge_callback_crit_err()
3622 netif_tx_stop_queue(vpath->fifo.txq); in vxge_callback_crit_err()