MCPcopy Create free account
hub / github.com/F-Stack/f-stack / i40e_set_rss_key

Function i40e_set_rss_key

dpdk/drivers/net/i40e/i40e_ethdev.c:7625–7675  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7623}
7624
7625int
7626i40e_set_rss_key(struct i40e_vsi *vsi, uint8_t *key, uint8_t key_len)
7627{
7628 struct i40e_pf *pf = I40E_VSI_TO_PF(vsi);
7629 struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
7630 uint16_t key_idx = (vsi->type == I40E_VSI_SRIOV) ?
7631 I40E_VFQF_HKEY_MAX_INDEX :
7632 I40E_PFQF_HKEY_MAX_INDEX;
7633
7634 if (!key || key_len == 0) {
7635 PMD_DRV_LOG(DEBUG, "No key to be configured");
7636 return 0;
7637 } else if (key_len != (key_idx + 1) *
7638 sizeof(uint32_t)) {
7639 PMD_DRV_LOG(ERR, "Invalid key length %u", key_len);
7640 return -EINVAL;
7641 }
7642
7643 if (pf->flags & I40E_FLAG_RSS_AQ_CAPABLE) {
7644 struct i40e_aqc_get_set_rss_key_data *key_dw =
7645 (struct i40e_aqc_get_set_rss_key_data *)key;
7646 enum i40e_status_code status =
7647 i40e_aq_set_rss_key(hw, vsi->vsi_id, key_dw);
7648
7649 if (status) {
7650 PMD_DRV_LOG(ERR,
7651 "Failed to configure RSS key via AQ, error status: %d",
7652 status);
7653 return -EIO;
7654 }
7655 } else {
7656 uint32_t *hash_key = (uint32_t *)key;
7657 uint16_t i;
7658
7659 if (vsi->type == I40E_VSI_SRIOV) {
7660 for (i = 0; i <= I40E_VFQF_HKEY_MAX_INDEX; i++)
7661 I40E_WRITE_REG(
7662 hw,
7663 I40E_VFQF_HKEY1(i, vsi->user_param),
7664 hash_key[i]);
7665
7666 } else {
7667 for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++)
7668 I40E_WRITE_REG(hw, I40E_PFQF_HKEY(i),
7669 hash_key[i]);
7670 }
7671 I40E_WRITE_FLUSH(hw);
7672 }
7673
7674 return 0;
7675}
7676
7677static int
7678i40e_get_rss_key(struct i40e_vsi *vsi, uint8_t *key, uint8_t *key_len)

Callers 4

i40e_hw_rss_hash_setFunction · 0.85
i40e_pf_reset_rss_keyFunction · 0.85
i40e_hash_configFunction · 0.85

Calls 1

i40e_aq_set_rss_keyFunction · 0.85

Tested by

no test coverage detected