@@ -4580,52 +4580,69 @@ static int hclge_set_rss_tuple(struct hnae3_handle *handle,
4580
4580
return 0 ;
4581
4581
}
4582
4582
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 )
4585
4585
{
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 ) {
4592
4587
case TCP_V4_FLOW :
4593
- tuple_sets = vport -> rss_tuple_sets .ipv4_tcp_en ;
4588
+ * tuple_sets = vport -> rss_tuple_sets .ipv4_tcp_en ;
4594
4589
break ;
4595
4590
case UDP_V4_FLOW :
4596
- tuple_sets = vport -> rss_tuple_sets .ipv4_udp_en ;
4591
+ * tuple_sets = vport -> rss_tuple_sets .ipv4_udp_en ;
4597
4592
break ;
4598
4593
case TCP_V6_FLOW :
4599
- tuple_sets = vport -> rss_tuple_sets .ipv6_tcp_en ;
4594
+ * tuple_sets = vport -> rss_tuple_sets .ipv6_tcp_en ;
4600
4595
break ;
4601
4596
case UDP_V6_FLOW :
4602
- tuple_sets = vport -> rss_tuple_sets .ipv6_udp_en ;
4597
+ * tuple_sets = vport -> rss_tuple_sets .ipv6_udp_en ;
4603
4598
break ;
4604
4599
case SCTP_V4_FLOW :
4605
- tuple_sets = vport -> rss_tuple_sets .ipv4_sctp_en ;
4600
+ * tuple_sets = vport -> rss_tuple_sets .ipv4_sctp_en ;
4606
4601
break ;
4607
4602
case SCTP_V6_FLOW :
4608
- tuple_sets = vport -> rss_tuple_sets .ipv6_sctp_en ;
4603
+ * tuple_sets = vport -> rss_tuple_sets .ipv6_sctp_en ;
4609
4604
break ;
4610
4605
case IPV4_FLOW :
4611
4606
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 ;
4613
4608
break ;
4614
4609
default :
4615
4610
return - EINVAL ;
4616
4611
}
4617
4612
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 ;
4620
4619
4621
4620
if (tuple_sets & HCLGE_D_PORT_BIT )
4622
- nfc -> data |= RXH_L4_B_2_3 ;
4621
+ tuple_data |= RXH_L4_B_2_3 ;
4623
4622
if (tuple_sets & HCLGE_S_PORT_BIT )
4624
- nfc -> data |= RXH_L4_B_0_1 ;
4623
+ tuple_data |= RXH_L4_B_0_1 ;
4625
4624
if (tuple_sets & HCLGE_D_IP_BIT )
4626
- nfc -> data |= RXH_IP_DST ;
4625
+ tuple_data |= RXH_IP_DST ;
4627
4626
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 );
4629
4646
4630
4647
return 0 ;
4631
4648
}
0 commit comments