Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3caf772b authored by Yufeng Mo's avatar Yufeng Mo Committed by David S. Miller
Browse files

net: hns3: refactor PF/VF RSS hash key configuration



In order to make it more readable, this patch modifies PF/VF's
RSS hash key configuring function.

Signed-off-by: default avatarYufeng Mo <moyufeng@huawei.com>
Signed-off-by: default avatarJian Shen <shenjian15@huawei.com>
Signed-off-by: default avatarWeihang Li <liweihang@hisilicon.com>
Signed-off-by: default avatarHuazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b37ce587
Loading
Loading
Loading
Loading
+7 −8
Original line number Original line Diff line number Diff line
@@ -3609,28 +3609,27 @@ static int hclge_set_rss_algo_key(struct hclge_dev *hdev,
{
{
	struct hclge_rss_config_cmd *req;
	struct hclge_rss_config_cmd *req;
	struct hclge_desc desc;
	struct hclge_desc desc;
	int key_offset;
	int key_offset = 0;
	int key_counts;
	int key_size;
	int key_size;
	int ret;
	int ret;


	key_counts = HCLGE_RSS_KEY_SIZE;
	req = (struct hclge_rss_config_cmd *)desc.data;
	req = (struct hclge_rss_config_cmd *)desc.data;


	for (key_offset = 0; key_offset < 3; key_offset++) {
	while (key_counts) {
		hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_RSS_GENERIC_CONFIG,
		hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_RSS_GENERIC_CONFIG,
					   false);
					   false);


		req->hash_config |= (hfunc & HCLGE_RSS_HASH_ALGO_MASK);
		req->hash_config |= (hfunc & HCLGE_RSS_HASH_ALGO_MASK);
		req->hash_config |= (key_offset << HCLGE_RSS_HASH_KEY_OFFSET_B);
		req->hash_config |= (key_offset << HCLGE_RSS_HASH_KEY_OFFSET_B);


		if (key_offset == 2)
		key_size = min(HCLGE_RSS_HASH_KEY_NUM, key_counts);
			key_size =
			HCLGE_RSS_KEY_SIZE - HCLGE_RSS_HASH_KEY_NUM * 2;
		else
			key_size = HCLGE_RSS_HASH_KEY_NUM;

		memcpy(req->hash_key,
		memcpy(req->hash_key,
		       key + key_offset * HCLGE_RSS_HASH_KEY_NUM, key_size);
		       key + key_offset * HCLGE_RSS_HASH_KEY_NUM, key_size);


		key_counts -= key_size;
		key_offset++;
		ret = hclge_cmd_send(&hdev->hw, &desc, 1);
		ret = hclge_cmd_send(&hdev->hw, &desc, 1);
		if (ret) {
		if (ret) {
			dev_err(&hdev->pdev->dev,
			dev_err(&hdev->pdev->dev,
+7 −8
Original line number Original line Diff line number Diff line
@@ -539,13 +539,15 @@ static int hclgevf_set_rss_algo_key(struct hclgevf_dev *hdev,
{
{
	struct hclgevf_rss_config_cmd *req;
	struct hclgevf_rss_config_cmd *req;
	struct hclgevf_desc desc;
	struct hclgevf_desc desc;
	int key_offset;
	int key_offset = 0;
	int key_counts;
	int key_size;
	int key_size;
	int ret;
	int ret;


	key_counts = HCLGEVF_RSS_KEY_SIZE;
	req = (struct hclgevf_rss_config_cmd *)desc.data;
	req = (struct hclgevf_rss_config_cmd *)desc.data;


	for (key_offset = 0; key_offset < 3; key_offset++) {
	while (key_counts) {
		hclgevf_cmd_setup_basic_desc(&desc,
		hclgevf_cmd_setup_basic_desc(&desc,
					     HCLGEVF_OPC_RSS_GENERIC_CONFIG,
					     HCLGEVF_OPC_RSS_GENERIC_CONFIG,
					     false);
					     false);
@@ -554,15 +556,12 @@ static int hclgevf_set_rss_algo_key(struct hclgevf_dev *hdev,
		req->hash_config |=
		req->hash_config |=
			(key_offset << HCLGEVF_RSS_HASH_KEY_OFFSET_B);
			(key_offset << HCLGEVF_RSS_HASH_KEY_OFFSET_B);


		if (key_offset == 2)
		key_size = min(HCLGEVF_RSS_HASH_KEY_NUM, key_counts);
			key_size =
			HCLGEVF_RSS_KEY_SIZE - HCLGEVF_RSS_HASH_KEY_NUM * 2;
		else
			key_size = HCLGEVF_RSS_HASH_KEY_NUM;

		memcpy(req->hash_key,
		memcpy(req->hash_key,
		       key + key_offset * HCLGEVF_RSS_HASH_KEY_NUM, key_size);
		       key + key_offset * HCLGEVF_RSS_HASH_KEY_NUM, key_size);


		key_counts -= key_size;
		key_offset++;
		ret = hclgevf_cmd_send(&hdev->hw, &desc, 1);
		ret = hclgevf_cmd_send(&hdev->hw, &desc, 1);
		if (ret) {
		if (ret) {
			dev_err(&hdev->pdev->dev,
			dev_err(&hdev->pdev->dev,