Skip to content

Commit 405642a

Browse files
IronShendavem330
authored andcommitted
net: hns3: refactor out hclge_get_rss_tuple()
To improve code readability and maintainability, separate the flow type parsing part and the converting part from bloated hclge_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 88936e3 commit 405642a

File tree

1 file changed

+38
-21
lines changed

1 file changed

+38
-21
lines changed

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4580,52 +4580,69 @@ static int hclge_set_rss_tuple(struct hnae3_handle *handle,
45804580
return 0;
45814581
}
45824582

4583-
static int hclge_get_rss_tuple(struct hnae3_handle *handle,
4584-
struct ethtool_rxnfc *nfc)
4583+
static int hclge_get_vport_rss_tuple(struct hclge_vport *vport, int flow_type,
4584+
u8 *tuple_sets)
45854585
{
4586-
struct hclge_vport *vport = hclge_get_vport(handle);
4587-
u8 tuple_sets;
4588-
4589-
nfc->data = 0;
4590-
4591-
switch (nfc->flow_type) {
4586+
switch (flow_type) {
45924587
case TCP_V4_FLOW:
4593-
tuple_sets = vport->rss_tuple_sets.ipv4_tcp_en;
4588+
*tuple_sets = vport->rss_tuple_sets.ipv4_tcp_en;
45944589
break;
45954590
case UDP_V4_FLOW:
4596-
tuple_sets = vport->rss_tuple_sets.ipv4_udp_en;
4591+
*tuple_sets = vport->rss_tuple_sets.ipv4_udp_en;
45974592
break;
45984593
case TCP_V6_FLOW:
4599-
tuple_sets = vport->rss_tuple_sets.ipv6_tcp_en;
4594+
*tuple_sets = vport->rss_tuple_sets.ipv6_tcp_en;
46004595
break;
46014596
case UDP_V6_FLOW:
4602-
tuple_sets = vport->rss_tuple_sets.ipv6_udp_en;
4597+
*tuple_sets = vport->rss_tuple_sets.ipv6_udp_en;
46034598
break;
46044599
case SCTP_V4_FLOW:
4605-
tuple_sets = vport->rss_tuple_sets.ipv4_sctp_en;
4600+
*tuple_sets = vport->rss_tuple_sets.ipv4_sctp_en;
46064601
break;
46074602
case SCTP_V6_FLOW:
4608-
tuple_sets = vport->rss_tuple_sets.ipv6_sctp_en;
4603+
*tuple_sets = vport->rss_tuple_sets.ipv6_sctp_en;
46094604
break;
46104605
case IPV4_FLOW:
46114606
case IPV6_FLOW:
4612-
tuple_sets = HCLGE_S_IP_BIT | HCLGE_D_IP_BIT;
4607+
*tuple_sets = HCLGE_S_IP_BIT | HCLGE_D_IP_BIT;
46134608
break;
46144609
default:
46154610
return -EINVAL;
46164611
}
46174612

4618-
if (!tuple_sets)
4619-
return 0;
4613+
return 0;
4614+
}
4615+
4616+
static u64 hclge_convert_rss_tuple(u8 tuple_sets)
4617+
{
4618+
u64 tuple_data = 0;
46204619

46214620
if (tuple_sets & HCLGE_D_PORT_BIT)
4622-
nfc->data |= RXH_L4_B_2_3;
4621+
tuple_data |= RXH_L4_B_2_3;
46234622
if (tuple_sets & HCLGE_S_PORT_BIT)
4624-
nfc->data |= RXH_L4_B_0_1;
4623+
tuple_data |= RXH_L4_B_0_1;
46254624
if (tuple_sets & HCLGE_D_IP_BIT)
4626-
nfc->data |= RXH_IP_DST;
4625+
tuple_data |= RXH_IP_DST;
46274626
if (tuple_sets & HCLGE_S_IP_BIT)
4628-
nfc->data |= RXH_IP_SRC;
4627+
tuple_data |= RXH_IP_SRC;
4628+
4629+
return tuple_data;
4630+
}
4631+
4632+
static int hclge_get_rss_tuple(struct hnae3_handle *handle,
4633+
struct ethtool_rxnfc *nfc)
4634+
{
4635+
struct hclge_vport *vport = hclge_get_vport(handle);
4636+
u8 tuple_sets;
4637+
int ret;
4638+
4639+
nfc->data = 0;
4640+
4641+
ret = hclge_get_vport_rss_tuple(vport, nfc->flow_type, &tuple_sets);
4642+
if (ret || !tuple_sets)
4643+
return ret;
4644+
4645+
nfc->data = hclge_convert_rss_tuple(tuple_sets);
46294646

46304647
return 0;
46314648
}

0 commit comments

Comments
 (0)