Lines Matching refs:vnic
3517 struct bnxt_vnic_info *vnic = &bp->vnic_info[i];
3520 vnic->fw_vnic_id = INVALID_HW_RING_ID;
3522 vnic->fw_rss_cos_lb_ctx[j] = INVALID_HW_RING_ID;
3524 vnic->fw_l2_ctx_id = INVALID_HW_RING_ID;
3528 prandom_bytes(vnic->rss_hash_key,
3531 memcpy(vnic->rss_hash_key,
3677 struct bnxt_vnic_info *vnic;
3684 vnic = &bp->vnic_info[i];
3686 kfree(vnic->fw_grp_ids);
3687 vnic->fw_grp_ids = NULL;
3689 kfree(vnic->uc_list);
3690 vnic->uc_list = NULL;
3692 if (vnic->mc_list) {
3693 dma_free_coherent(&pdev->dev, vnic->mc_list_size,
3694 vnic->mc_list, vnic->mc_list_mapping);
3695 vnic->mc_list = NULL;
3698 if (vnic->rss_table) {
3699 dma_free_coherent(&pdev->dev, vnic->rss_table_size,
3700 vnic->rss_table,
3701 vnic->rss_table_dma_addr);
3702 vnic->rss_table = NULL;
3705 vnic->rss_hash_key = NULL;
3706 vnic->flags = 0;
3713 struct bnxt_vnic_info *vnic;
3718 vnic = &bp->vnic_info[i];
3720 if (vnic->flags & BNXT_VNIC_UCAST_FLAG) {
3724 vnic->uc_list = kmalloc(mem_size, GFP_KERNEL);
3725 if (!vnic->uc_list) {
3732 if (vnic->flags & BNXT_VNIC_MCAST_FLAG) {
3733 vnic->mc_list_size = BNXT_MAX_MC_ADDRS * ETH_ALEN;
3734 vnic->mc_list =
3736 vnic->mc_list_size,
3737 &vnic->mc_list_mapping,
3739 if (!vnic->mc_list) {
3748 if (vnic->flags & BNXT_VNIC_RSS_FLAG)
3753 vnic->fw_grp_ids = kcalloc(max_rings, sizeof(u16), GFP_KERNEL);
3754 if (!vnic->fw_grp_ids) {
3760 !(vnic->flags & BNXT_VNIC_RSS_FLAG))
3768 vnic->rss_table_size = size + HW_HASH_KEY_SIZE;
3769 vnic->rss_table = dma_alloc_coherent(&pdev->dev,
3770 vnic->rss_table_size,
3771 &vnic->rss_table_dma_addr,
3773 if (!vnic->rss_table) {
3778 vnic->rss_hash_key = ((void *)vnic->rss_table) + size;
3779 vnic->rss_hash_key_dma_addr = vnic->rss_table_dma_addr + size;
4836 struct bnxt_vnic_info *vnic = &bp->vnic_info[vnic_id];
4839 req.vnic_id = cpu_to_le32(vnic->fw_vnic_id);
4841 req.num_mc_entries = cpu_to_le32(vnic->mc_list_count);
4842 req.mc_tbl_addr = cpu_to_le64(vnic->mc_list_mapping);
4843 req.mask = cpu_to_le32(vnic->rx_mask);
4883 struct bnxt_vnic_info *vnic;
4894 vnic = &bp->vnic_info[fltr->rxq + 1];
4895 req.dst_id = cpu_to_le16(vnic->fw_vnic_id);
4983 u16 i, j, num_of_vnics = 1; /* only vnic 0 supported */
4989 struct bnxt_vnic_info *vnic = &bp->vnic_info[i];
4991 for (j = 0; j < vnic->uc_filter_count; j++) {
4997 req.l2_filter_id = vnic->fw_l2_filter_id[j];
5002 vnic->uc_filter_count = 0;
5011 struct bnxt_vnic_info *vnic = &bp->vnic_info[vnic_id];
5015 if (vnic->fw_vnic_id == INVALID_HW_RING_ID)
5063 req.vnic_id = cpu_to_le16(vnic->fw_vnic_id);
5163 static void __bnxt_fill_hw_rss_tbl(struct bnxt *bp, struct bnxt_vnic_info *vnic)
5165 bool no_rss = !(vnic->flags & BNXT_VNIC_RSS_FLAG);
5172 vnic->rss_table[i] = cpu_to_le16(vnic->fw_grp_ids[j]);
5177 struct bnxt_vnic_info *vnic)
5179 __le16 *ring_tbl = vnic->rss_table;
5198 static void bnxt_fill_hw_rss_tbl(struct bnxt *bp, struct bnxt_vnic_info *vnic)
5201 __bnxt_fill_hw_rss_tbl_p5(bp, vnic);
5203 __bnxt_fill_hw_rss_tbl(bp, vnic);
5208 struct bnxt_vnic_info *vnic = &bp->vnic_info[vnic_id];
5212 vnic->fw_rss_cos_lb_ctx[0] == INVALID_HW_RING_ID)
5217 bnxt_fill_hw_rss_tbl(bp, vnic);
5220 req.ring_grp_tbl_addr = cpu_to_le64(vnic->rss_table_dma_addr);
5222 cpu_to_le64(vnic->rss_hash_key_dma_addr);
5224 req.rss_ctx_idx = cpu_to_le16(vnic->fw_rss_cos_lb_ctx[0]);
5230 struct bnxt_vnic_info *vnic = &bp->vnic_info[vnic_id];
5236 req.vnic_id = cpu_to_le16(vnic->fw_vnic_id);
5241 bnxt_fill_hw_rss_tbl(bp, vnic);
5244 req.hash_key_tbl_addr = cpu_to_le64(vnic->rss_hash_key_dma_addr);
5245 ring_tbl_map = vnic->rss_table_dma_addr;
5252 req.rss_ctx_idx = cpu_to_le16(vnic->fw_rss_cos_lb_ctx[i]);
5262 struct bnxt_vnic_info *vnic = &bp->vnic_info[vnic_id];
5275 req.vnic_id = cpu_to_le32(vnic->fw_vnic_id);
5297 struct bnxt_vnic_info *vnic = &bp->vnic_info[i];
5300 if (vnic->fw_rss_cos_lb_ctx[j] != INVALID_HW_RING_ID)
5337 struct bnxt_vnic_info *vnic = &bp->vnic_info[vnic_id];
5357 if (vnic->fw_rss_cos_lb_ctx[0] != INVALID_HW_RING_ID) {
5358 req.rss_rule = cpu_to_le16(vnic->fw_rss_cos_lb_ctx[0]);
5361 } else if (vnic->flags & BNXT_VNIC_RFS_NEW_RSS_FLAG) {
5372 (vnic->fw_rss_cos_lb_ctx[0] != INVALID_HW_RING_ID)) {
5373 req.cos_rule = cpu_to_le16(vnic->fw_rss_cos_lb_ctx[1]);
5379 if (vnic->flags & BNXT_VNIC_RSS_FLAG)
5381 else if (vnic->flags & BNXT_VNIC_RFS_FLAG)
5392 req.vnic_id = cpu_to_le16(vnic->fw_vnic_id);
5435 struct bnxt_vnic_info *vnic = &bp->vnic_info[vnic_id];
5440 /* map ring groups to this vnic */
5448 vnic->fw_grp_ids[j] = bp->grp_info[grp_idx].fw_grp_id;
5453 vnic->fw_rss_cos_lb_ctx[i] = INVALID_HW_RING_ID;
5462 vnic->fw_vnic_id = le32_to_cpu(resp->vnic_id);
6213 int cp, int stat, int vnic)
6217 vnic);
6220 vnic);
6284 int vnic = 1, grp = rx;
6300 vnic = rx + 1;
6305 hw_resc->resv_vnics != vnic || hw_resc->resv_stat_ctxs != stat ||
6322 int vnic = 1, stat;
6331 vnic = rx + 1;
6337 rc = bnxt_hwrm_reserve_rings(bp, tx, rx, grp, cp, stat, vnic);
6346 vnic = hw_resc->resv_vnics;
6393 if (!tx || !rx || !cp || !grp || !vnic || !stat)
8056 netdev_err(bp->dev, "hwrm vnic set tpa failure rc for vnic %d: %x\n",
8079 /* clear all RSS setting before free vnic ctx */
8083 /* before free the vnic, undo the vnic tpa settings */
8138 struct bnxt_vnic_info *vnic = &bp->vnic_info[vnic_id];
8141 if (vnic->flags & BNXT_VNIC_RFS_NEW_RSS_FLAG)
8144 /* allocate context for vnic */
8147 netdev_err(bp->dev, "hwrm vnic %d alloc failure rc: %x\n",
8156 netdev_err(bp->dev, "hwrm vnic %d cos ctx alloc failure rc: %x\n",
8164 /* configure default vnic, ring grp */
8167 netdev_err(bp->dev, "hwrm vnic %d cfg failure rc: %x\n",
8172 /* Enable RSS hashing on vnic */
8175 netdev_err(bp->dev, "hwrm vnic %d set rss failure rc: %x\n",
8183 netdev_err(bp->dev, "hwrm vnic %d set hds failure rc: %x\n",
8200 netdev_err(bp->dev, "hwrm vnic %d ctx %d alloc failure rc: %x\n",
8211 netdev_err(bp->dev, "hwrm vnic %d set rss failure rc: %d\n",
8217 netdev_err(bp->dev, "hwrm vnic %d cfg failure rc: %x\n",
8224 netdev_err(bp->dev, "hwrm vnic %d set hds failure rc: %x\n",
8248 struct bnxt_vnic_info *vnic;
8255 vnic = &bp->vnic_info[vnic_id];
8256 vnic->flags |= BNXT_VNIC_RFS_FLAG;
8258 vnic->flags |= BNXT_VNIC_RFS_NEW_RSS_FLAG;
8261 netdev_err(bp->dev, "hwrm vnic %d alloc failure rc: %x\n",
8291 netdev_err(bp->dev, "Cannot allocate special vnic for NS2 A0: %x\n",
8298 netdev_err(bp->dev, "Cannot allocate special vnic for NS2 A0: %x\n",
8310 struct bnxt_vnic_info *vnic = &bp->vnic_info[0];
8338 /* default vnic 0 */
8341 netdev_err(bp->dev, "hwrm vnic alloc failure rc: %x\n", rc);
8367 /* Filter for default vnic 0 */
8370 netdev_err(bp->dev, "HWRM vnic filter failure rc: %x\n", rc);
8373 vnic->uc_filter_count = 1;
8375 vnic->rx_mask = 0;
8377 vnic->rx_mask |= CFA_L2_SET_RX_MASK_REQ_MASK_BCAST;
8380 vnic->rx_mask |= CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS;
8383 vnic->rx_mask |= CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST;
8384 vnic->mc_list_count = 0;
8389 vnic->rx_mask |= mask;
8404 netdev_err(bp->dev, "Special vnic setup failure for NS2 A0 rc: %x\n",
10269 struct bnxt_vnic_info *vnic = &bp->vnic_info[0];
10279 vnic->mc_list_count = 0;
10283 if (!ether_addr_equal(haddr, vnic->mc_list + off)) {
10284 memcpy(vnic->mc_list + off, haddr, ETH_ALEN);
10293 if (mc_count != vnic->mc_list_count) {
10294 vnic->mc_list_count = mc_count;
10303 struct bnxt_vnic_info *vnic = &bp->vnic_info[0];
10307 if (netdev_uc_count(dev) != (vnic->uc_filter_count - 1))
10311 if (!ether_addr_equal(ha->addr, vnic->uc_list + off))
10322 struct bnxt_vnic_info *vnic;
10330 vnic = &bp->vnic_info[0];
10331 mask = vnic->rx_mask;
10346 vnic->mc_list_count = 0;
10351 if (mask != vnic->rx_mask || uc_update || mc_update) {
10352 vnic->rx_mask = mask;
10362 struct bnxt_vnic_info *vnic = &bp->vnic_info[0];
10375 for (i = 1; i < vnic->uc_filter_count; i++) {
10381 req.l2_filter_id = vnic->fw_l2_filter_id[i];
10388 vnic->uc_filter_count = 1;
10392 vnic->rx_mask |= CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS;
10395 memcpy(vnic->uc_list + off, ha->addr, ETH_ALEN);
10397 vnic->uc_filter_count++;
10402 for (i = 1, off = 0; i < vnic->uc_filter_count; i++, off += ETH_ALEN) {
10403 rc = bnxt_hwrm_set_vnic_filter(bp, 0, i, vnic->uc_list + off);
10405 netdev_err(bp->dev, "HWRM vnic filter failure rc: %x\n",
10407 vnic->uc_filter_count = i;
10414 if (rc && vnic->mc_list_count) {
10417 vnic->rx_mask |= CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST;
10418 vnic->mc_list_count = 0;
11979 struct bnxt_vnic_info *vnic = &bp->vnic_info[0];
11983 for (j = 0; j < vnic->uc_filter_count; j++, off += ETH_ALEN) {
11985 vnic->uc_list + off)) {