Skip to content

Commit 73f7767

Browse files
IronShendavem330
authored andcommitted
net: hns3: refactor out hclgevf_get_rss_tuple()
To improve code readability and maintainability, separate the flow type parsing part and the converting part from bloated hclgevf_get_rss_tuple(). Signed-off-by: Jian Shen <[email protected]> Signed-off-by: Huazhong Tan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 405642a commit 73f7767

File tree

1 file changed

+42
-25
lines changed

1 file changed

+42
-25
lines changed

drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -954,56 +954,73 @@ static int hclgevf_set_rss_tuple(struct hnae3_handle *handle,
954954
return 0;
955955
}
956956

957-
static int hclgevf_get_rss_tuple(struct hnae3_handle *handle,
958-
struct ethtool_rxnfc *nfc)
957+
static int hclgevf_get_rss_tuple_by_flow_type(struct hclgevf_dev *hdev,
958+
int flow_type, u8 *tuple_sets)
959959
{
960-
struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
961-
struct hclgevf_rss_cfg *rss_cfg = &hdev->rss_cfg;
962-
u8 tuple_sets;
963-
964-
if (hdev->ae_dev->dev_version < HNAE3_DEVICE_VERSION_V2)
965-
return -EOPNOTSUPP;
966-
967-
nfc->data = 0;
968-
969-
switch (nfc->flow_type) {
960+
switch (flow_type) {
970961
case TCP_V4_FLOW:
971-
tuple_sets = rss_cfg->rss_tuple_sets.ipv4_tcp_en;
962+
*tuple_sets = hdev->rss_cfg.rss_tuple_sets.ipv4_tcp_en;
972963
break;
973964
case UDP_V4_FLOW:
974-
tuple_sets = rss_cfg->rss_tuple_sets.ipv4_udp_en;
965+
*tuple_sets = hdev->rss_cfg.rss_tuple_sets.ipv4_udp_en;
975966
break;
976967
case TCP_V6_FLOW:
977-
tuple_sets = rss_cfg->rss_tuple_sets.ipv6_tcp_en;
968+
*tuple_sets = hdev->rss_cfg.rss_tuple_sets.ipv6_tcp_en;
978969
break;
979970
case UDP_V6_FLOW:
980-
tuple_sets = rss_cfg->rss_tuple_sets.ipv6_udp_en;
971+
*tuple_sets = hdev->rss_cfg.rss_tuple_sets.ipv6_udp_en;
981972
break;
982973
case SCTP_V4_FLOW:
983-
tuple_sets = rss_cfg->rss_tuple_sets.ipv4_sctp_en;
974+
*tuple_sets = hdev->rss_cfg.rss_tuple_sets.ipv4_sctp_en;
984975
break;
985976
case SCTP_V6_FLOW:
986-
tuple_sets = rss_cfg->rss_tuple_sets.ipv6_sctp_en;
977+
*tuple_sets = hdev->rss_cfg.rss_tuple_sets.ipv6_sctp_en;
987978
break;
988979
case IPV4_FLOW:
989980
case IPV6_FLOW:
990-
tuple_sets = HCLGEVF_S_IP_BIT | HCLGEVF_D_IP_BIT;
981+
*tuple_sets = HCLGEVF_S_IP_BIT | HCLGEVF_D_IP_BIT;
991982
break;
992983
default:
993984
return -EINVAL;
994985
}
995986

996-
if (!tuple_sets)
997-
return 0;
987+
return 0;
988+
}
989+
990+
static u64 hclgevf_convert_rss_tuple(u8 tuple_sets)
991+
{
992+
u64 tuple_data = 0;
998993

999994
if (tuple_sets & HCLGEVF_D_PORT_BIT)
1000-
nfc->data |= RXH_L4_B_2_3;
995+
tuple_data |= RXH_L4_B_2_3;
1001996
if (tuple_sets & HCLGEVF_S_PORT_BIT)
1002-
nfc->data |= RXH_L4_B_0_1;
997+
tuple_data |= RXH_L4_B_0_1;
1003998
if (tuple_sets & HCLGEVF_D_IP_BIT)
1004-
nfc->data |= RXH_IP_DST;
999+
tuple_data |= RXH_IP_DST;
10051000
if (tuple_sets & HCLGEVF_S_IP_BIT)
1006-
nfc->data |= RXH_IP_SRC;
1001+
tuple_data |= RXH_IP_SRC;
1002+
1003+
return tuple_data;
1004+
}
1005+
1006+
static int hclgevf_get_rss_tuple(struct hnae3_handle *handle,
1007+
struct ethtool_rxnfc *nfc)
1008+
{
1009+
struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
1010+
u8 tuple_sets;
1011+
int ret;
1012+
1013+
if (hdev->ae_dev->dev_version < HNAE3_DEVICE_VERSION_V2)
1014+
return -EOPNOTSUPP;
1015+
1016+
nfc->data = 0;
1017+
1018+
ret = hclgevf_get_rss_tuple_by_flow_type(hdev, nfc->flow_type,
1019+
&tuple_sets);
1020+
if (ret || !tuple_sets)
1021+
return ret;
1022+
1023+
nfc->data = hclgevf_convert_rss_tuple(tuple_sets);
10071024

10081025
return 0;
10091026
}

0 commit comments

Comments
 (0)