Lines Matching defs:vsi
571 struct ixl_vsi *vsi = ama->vsi;
576 f = ixl_find_filter(&vsi->ftl, macaddr, IXL_VLAN_ANY);
582 device_printf(vsi->dev, "WARNING: no filter available!!\n");
597 ixl_add_multi(struct ixl_vsi *vsi)
599 if_t ifp = vsi->ifp;
600 struct i40e_hw *hw = vsi->hw;
609 vsi->seid, TRUE, NULL);
611 ixl_del_multi(vsi, true);
615 cb_arg.vsi = vsi;
620 ixl_add_hw_filters(vsi, &cb_arg.to_add, mcnt);
637 ixl_del_multi(struct ixl_vsi *vsi, bool all)
640 if_t ifp = vsi->ifp;
648 LIST_FOREACH_SAFE(f, &vsi->ftl, ftle, fn) {
659 ixl_del_hw_filters(vsi, &to_del, mcnt);
666 if_t ifp = pf->vsi.ifp;
828 struct ixl_vsi *vsi = &pf->vsi;
829 device_t dev = iflib_get_dev(vsi->ctx);
860 vsi->uplink_seid = LE16_TO_CPU(sw_config->element[0].uplink_seid);
861 vsi->downlink_seid = LE16_TO_CPU(sw_config->element[0].downlink_seid);
862 vsi->seid = LE16_TO_CPU(sw_config->element[0].seid);
867 ixl_vsi_add_sysctls(struct ixl_vsi * vsi, const char * sysctl_name, bool queues_sysctls)
873 tree = device_get_sysctl_tree(vsi->dev);
875 vsi->vsi_node = SYSCTL_ADD_NODE(&vsi->sysctl_ctx, child, OID_AUTO, sysctl_name,
878 vsi_list = SYSCTL_CHILDREN(vsi->vsi_node);
879 ixl_add_sysctls_eth_stats(&vsi->sysctl_ctx, vsi_list, &vsi->eth_stats);
882 SYSCTL_ADD_UQUAD(&vsi->sysctl_ctx, vsi_list, OID_AUTO, "rx_errors",
883 CTLFLAG_RD, &vsi->ierrors,
887 ixl_vsi_add_queues_stats(vsi, &vsi->sysctl_ctx);
1021 struct ixl_vsi *vsi = &pf->vsi;
1036 status = i40e_aq_set_rss_key(hw, vsi->vsi_num, &key_data);
1106 ixl_del_default_hw_filters(struct ixl_vsi *vsi)
1111 bcopy(vsi->hw->mac.perm_addr, e.mac_addr, ETHER_ADDR_LEN);
1114 i40e_aq_remove_macvlan(vsi->hw, vsi->seid, &e, 1, NULL);
1117 bcopy(vsi->hw->mac.perm_addr, e.mac_addr, ETHER_ADDR_LEN);
1121 i40e_aq_remove_macvlan(vsi->hw, vsi->seid, &e, 1, NULL);
1131 ixl_init_filters(struct ixl_vsi *vsi)
1133 struct ixl_pf *pf = (struct ixl_pf *)vsi->back;
1138 LIST_INIT(&vsi->ftl);
1139 vsi->num_hw_filters = 0;
1142 i40e_aq_set_vsi_broadcast(&pf->hw, vsi->seid, TRUE, NULL);
1144 if (IXL_VSI_IS_VF(vsi))
1147 ixl_del_default_hw_filters(vsi);
1149 ixl_add_filter(vsi, vsi->hw->mac.addr, IXL_VLAN_ANY);
1157 i40e_add_filter_to_drop_tx_flow_control_frames(vsi->hw, vsi->seid);
1160 i40e_add_filter_to_drop_tx_flow_control_frames(vsi->hw, vsi->seid);
1165 ixl_reconfigure_filters(struct ixl_vsi *vsi)
1167 struct i40e_hw *hw = vsi->hw;
1177 LIST_CONCAT(&tmp, &vsi->ftl, ixl_mac_filter, ftle);
1178 cnt = vsi->num_hw_filters;
1179 vsi->num_hw_filters = 0;
1181 ixl_add_hw_filters(vsi, &tmp, cnt);
1184 * When the vsi is allocated for the VFs, both vsi->hw and vsi->ifp
1185 * will be NULL. Furthermore, the ftl of such vsi already contains
1192 ixl_add_filter(vsi, hw->mac.addr, IXL_VLAN_ANY);
1194 if ((if_getcapenable(vsi->ifp) & IFCAP_VLAN_HWFILTER) == 0)
1200 ixl_add_vlan_filters(vsi, hw->mac.addr);
1209 ixl_add_filter(struct ixl_vsi *vsi, const u8 *macaddr, s16 vlan)
1217 pf = vsi->back;
1225 f = ixl_find_filter(&vsi->ftl, macaddr, vlan);
1238 vsi->num_macs++;
1245 if ((vlan != IXL_VLAN_ANY) && (vsi->num_vlans == 1)) {
1246 tmp = ixl_find_filter(&vsi->ftl, macaddr, IXL_VLAN_ANY);
1263 ixl_del_hw_filters(vsi, &to_del, 1);
1267 ixl_add_hw_filters(vsi, &to_add, to_add_cnt);
1272 * @vsi: pointer to VSI
1281 ixl_add_vlan_filters(struct ixl_vsi *vsi, const u8 *macaddr)
1288 if (vsi->num_vlans == 0 || vsi->num_vlans > IXL_MAX_VLAN_FILTERS) {
1289 ixl_add_filter(vsi, macaddr, IXL_VLAN_ANY);
1295 f = ixl_find_filter(&vsi->ftl, macaddr, 0);
1299 device_printf(vsi->dev, "WARNING: no filter available!!\n");
1306 bit_ffs_at(vsi->vlans_map, i, IXL_VLANS_MAP_LEN, &vlan);
1311 f = ixl_find_filter(&vsi->ftl, macaddr, vlan);
1317 device_printf(vsi->dev, "WARNING: no filter available!!\n");
1324 ixl_add_hw_filters(vsi, &to_add, to_add_cnt);
1328 ixl_del_filter(struct ixl_vsi *vsi, const u8 *macaddr, s16 vlan)
1334 ixl_dbg_filter((struct ixl_pf *)vsi->back,
1338 f = ixl_find_filter(&vsi->ftl, macaddr, vlan);
1346 vsi->num_macs--;
1349 if (vlan == IXL_VLAN_ANY || vsi->num_vlans > 0) {
1350 ixl_del_hw_filters(vsi, &ftl_head, to_del_cnt);
1355 tmp = ixl_find_filter(&vsi->ftl, macaddr, 0);
1361 ixl_del_hw_filters(vsi, &ftl_head, to_del_cnt);
1363 ixl_add_filter(vsi, macaddr, IXL_VLAN_ANY);
1368 * @vsi: VSI which filters need to be removed
1377 ixl_del_all_vlan_filters(struct ixl_vsi *vsi, const u8 *macaddr)
1385 LIST_FOREACH_SAFE(f, &vsi->ftl, ftle, tmp) {
1395 ixl_dbg_filter((struct ixl_pf *)vsi->back,
1399 ixl_del_hw_filters(vsi, &to_del, to_del_cnt);
1421 ** This routine takes additions to the vsi filter
1426 ixl_add_hw_filters(struct ixl_vsi *vsi, struct ixl_ftl_head *to_add, int cnt)
1436 pf = vsi->back;
1437 dev = vsi->dev;
1485 status = i40e_aq_add_macvlan(hw, vsi->seid, a, j, NULL);
1487 LIST_CONCAT(&vsi->ftl, to_add, ixl_mac_filter, ftle);
1488 vsi->num_hw_filters += j;
1510 LIST_INSERT_HEAD(&vsi->ftl, f, ftle);
1511 vsi->num_hw_filters++;
1521 ** This routine takes removals in the vsi filter
1526 ixl_del_hw_filters(struct ixl_vsi *vsi, struct ixl_ftl_head *to_del, int cnt)
1536 pf = vsi->back;
1538 dev = vsi->dev;
1577 status = i40e_aq_remove_macvlan(hw, vsi->seid, d, j, NULL);
1593 vsi->num_hw_filters -= j;
1992 struct ixl_vsi *vsi = &pf->vsi;
1993 bool is_up = !!(if_getdrvflags(vsi->ifp) & IFF_DRV_RUNNING);
2022 struct ixl_vsi *vsi = &pf->vsi;
2107 vsi->shared->isc_pause_frames = 1;
2197 /* Update vsi stats */
2198 ixl_update_vsi_stats(vsi);
2203 ixl_update_eth_stats(&pf->vfs[i].vsi);
2211 ixl_update_eth_stats(struct ixl_vsi *vsi)
2213 struct ixl_pf *pf = (struct ixl_pf *)vsi->back;
2217 u16 stat_idx = vsi->info.stat_counter_idx;
2219 es = &vsi->eth_stats;
2220 oes = &vsi->eth_stats_offsets;
2224 vsi->stat_offsets_loaded,
2227 vsi->stat_offsets_loaded,
2231 vsi->stat_offsets_loaded,
2234 vsi->stat_offsets_loaded,
2237 vsi->stat_offsets_loaded,
2240 vsi->stat_offsets_loaded,
2244 vsi->stat_offsets_loaded,
2247 vsi->stat_offsets_loaded,
2250 vsi->stat_offsets_loaded,
2253 vsi->stat_offsets_loaded,
2255 vsi->stat_offsets_loaded = true;
2259 ixl_update_vsi_stats(struct ixl_vsi *vsi)
2267 pf = vsi->back;
2268 es = &vsi->eth_stats;
2271 ixl_update_eth_stats(vsi);
2276 for (int i = 0; i < vsi->num_rx_queues; i++)
2277 csum_errs += vsi->rx_queues[i].rxr.csum_errs;
2281 IXL_SET_IPACKETS(vsi, es->rx_unicast +
2284 IXL_SET_OPACKETS(vsi, es->tx_unicast +
2287 IXL_SET_IBYTES(vsi, es->rx_bytes);
2288 IXL_SET_OBYTES(vsi, es->tx_bytes);
2289 IXL_SET_IMCASTS(vsi, es->rx_multicast);
2290 IXL_SET_OMCASTS(vsi, es->tx_multicast);
2292 IXL_SET_IERRORS(vsi, nsd->crc_errors + nsd->illegal_bytes +
2296 IXL_SET_OERRORS(vsi, es->tx_errors);
2297 IXL_SET_IQDROPS(vsi, es->rx_discards + nsd->eth.rx_discards);
2298 IXL_SET_OQDROPS(vsi, tx_discards);
2299 IXL_SET_NOPROTO(vsi, es->rx_unknown_protocol);
2300 IXL_SET_COLLISIONS(vsi, 0);
2315 * Resets all stats of the given vsi
2318 ixl_vsi_reset_stats(struct ixl_vsi *vsi)
2320 bzero(&vsi->eth_stats, sizeof(struct i40e_eth_stats));
2321 bzero(&vsi->eth_stats_offsets, sizeof(struct i40e_eth_stats));
2322 vsi->stat_offsets_loaded = false;
3602 struct ixl_vsi *vsi = &pf->vsi;
3619 LIST_FOREACH(f, &vsi->ftl, ftle)
3625 LIST_FOREACH(f, &vsi->ftl, ftle) {
3645 vsi = &vf->vsi;
3648 LIST_FOREACH(f, &vsi->ftl, ftle)
3654 LIST_FOREACH(f, &vsi->ftl, ftle) {
4012 status = i40e_aq_get_rss_key(hw, pf->vsi.vsi_num, &key_data);
4100 status = i40e_aq_get_rss_lut(hw, pf->vsi.vsi_num, TRUE, hlut, sizeof(hlut));
4831 struct ixl_vsi *vsi = &pf->vsi;
4832 struct i40e_hw *hw = vsi->hw;
4837 struct ixl_rx_queue *rx_que = vsi->rx_queues;
4838 struct ixl_tx_queue *tx_que = vsi->tx_queues;
4847 for (int i = 0; i < vsi->num_rx_queues; i++) {
4848 rx_que = &vsi->rx_queues[i];
4855 for (int i = 0; i < vsi->num_tx_queues; i++) {
4856 tx_que = &vsi->tx_queues[i];
4874 struct ixl_vsi *vsi = &pf->vsi;
4875 struct i40e_hw *hw = vsi->hw;
4880 struct ixl_rx_queue *rx_que = vsi->rx_queues;
4889 for (int i = 0; i < vsi->num_rx_queues; i++) {
4890 rx_que = &vsi->rx_queues[i];