.type = VNET_DEV_ARG_TYPE_BOOL,
.default_val.boolean = false,
},
+ {
+ .id = OCT_PORT_ARG_RSS_FLOW_KEY,
+ .name = "rss_flow_key",
+ .desc = "RSS Flow Key Bitmap, applicable to network devices only",
+ .type = VNET_DEV_ARG_TYPE_UINT32,
+ .default_val.uint32 = FLOW_KEY_TYPE_IPV4 | FLOW_KEY_TYPE_IPV6 |
+ FLOW_KEY_TYPE_TCP | FLOW_KEY_TYPE_UDP |
+ FLOW_KEY_TYPE_SCTP,
+ },
{
.id = OCT_PORT_ARG_END,
.name = "end",
0x56, 0xbc, 0x78, 0x9a, 0x9a, 0x78, 0xbc, 0x56, 0xcd, 0x34, 0xef, 0x12
};
-static const u32 default_rss_flowkey =
- (FLOW_KEY_TYPE_IPV4 | FLOW_KEY_TYPE_IPV6 | FLOW_KEY_TYPE_TCP |
- FLOW_KEY_TYPE_UDP | FLOW_KEY_TYPE_SCTP);
-
static const u64 rxq_cfg =
ROC_NIX_LF_RX_CFG_DIS_APAD | ROC_NIX_LF_RX_CFG_IP6_UDP_OPT |
ROC_NIX_LF_RX_CFG_L2_LEN_ERR | ROC_NIX_LF_RX_CFG_DROP_RE |
if (arg->id == OCT_PORT_ARG_EN_ETH_PAUSE_FRAME &&
vnet_dev_arg_get_bool (arg))
is_pause_frame_enable = true;
+ else if (arg->id == OCT_PORT_ARG_RSS_FLOW_KEY)
+ cp->rss_flowkey = vnet_dev_arg_get_uint32 (arg);
}
if ((rrv = roc_nix_lf_alloc (nix, ifs->num_rx_queues, ifs->num_tx_queues,
return oct_roc_err (dev, rrv, "roc_nix_tm_hierarchy_enable() failed");
}
- if ((rrv = roc_nix_rss_default_setup (nix, default_rss_flowkey)))
+ if ((rrv = roc_nix_rss_default_setup (nix, cp->rss_flowkey)))
{
oct_port_deinit (vm, port);
return oct_roc_err (dev, rrv, "roc_nix_rss_default_setup() failed");
{
vnet_dev_t *dev = port->dev;
oct_device_t *cd = vnet_dev_get_data (dev);
+ oct_port_t *cp = vnet_dev_get_port_data (port);
struct roc_nix *nix = cd->nix;
vnet_dev_rv_t rv = VNET_DEV_OK;
i32 rrv;
}
}
- rrv = roc_nix_rss_default_setup (nix, default_rss_flowkey);
+ rrv = roc_nix_rss_default_setup (nix, cp->rss_flowkey);
if (rrv)
rv = oct_roc_err (dev, rrv, "roc_nix_rss_default_setup() failed");
}