[dpdk-dev] [PATCH v2 3/7] cxgbe: add support to update RSS hash configuration and key
Ferruh Yigit
ferruh.yigit at intel.com
Thu Mar 8 14:34:31 CET 2018
On 2/28/2018 6:04 PM, Rahul Lakkireddy wrote:
> From: Kumar Sanghvi <kumaras at chelsio.com>
>
> Add firmware API for updating RSS hash configuration and key. Move
> RSS hash configuration from cxgb4_write_rss() to a separate function
> cxgbe_write_rss_conf().
>
> Also, rename cxgb4_write_rss() to cxgbe_write_rss() for consistency.
>
> Original work by Surendra Mobiya <surendra at chelsio.com>
>
> Signed-off-by: Kumar Sanghvi <kumaras at chelsio.com>
> Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy at chelsio.com>
<...>
> @@ -985,6 +1016,7 @@ static const struct eth_dev_ops cxgbe_eth_dev_ops = {
> .get_eeprom = cxgbe_get_eeprom,
> .set_eeprom = cxgbe_set_eeprom,
> .get_reg = cxgbe_get_regs,
> + .rss_hash_update = cxgbe_dev_rss_hash_update,
Also in cxgbe_dev_info_get(), rte_eth_dev_info->flow_type_rss_offloads should be
updated with supported RSS hash functions.
I don't see any usage of "flow_type_rss_offloads" in sample apps except testpmd
is using it to print the log, but that is the way to notify applications about
support.
You don't need to send a new version of patchset for this, please send an
incremental patch and I can squash it into this set.
<...>
> +int cxgbe_write_rss_conf(const struct port_info *pi, uint64_t rss_hf)
> +{
> + struct adapter *adapter = pi->adapter;
> + const struct sge_eth_rxq *rxq;
> + u64 flags = 0;
> + u16 rss;
> + int err;
> +
> + /* Should never be called before setting up sge eth rx queues */
> + if (!(adapter->flags & FULL_INIT_DONE)) {
> + dev_err(adap, "%s No RXQs available on port %d\n",
> + __func__, pi->port_id);
> + return -EINVAL;
> + }
> +
> + if (rss_hf & ETH_RSS_IPV4)
> + flags |= F_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN;
> +
> + if (rss_hf & ETH_RSS_NONFRAG_IPV4_TCP)
> + flags |= F_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN;
> +
> + if (rss_hf & ETH_RSS_NONFRAG_IPV4_UDP)
> + flags |= F_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN |
> + F_FW_RSS_VI_CONFIG_CMD_UDPEN;
> +
> + if (rss_hf & ETH_RSS_IPV6)
> + flags |= F_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN;
> +
> + if (rss_hf & ETH_RSS_NONFRAG_IPV6_TCP)
> + flags |= F_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN;
> +
> + if (rss_hf & ETH_RSS_NONFRAG_IPV6_UDP)
> + flags |= F_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN |
> + F_FW_RSS_VI_CONFIG_CMD_UDPEN;
> +
> + rxq = &adapter->sge.ethrxq[pi->first_qset];
> + rss = rxq[0].rspq.abs_id;
What if driver gets a rss_hf that is not supported, will the API report back an
error to the application?
More information about the dev
mailing list