@@ -2124,50 +2124,51 @@ static int hclgevf_config_gro(struct hclgevf_dev *hdev, bool en)
21242124 return ret ;
21252125}
21262126
2127- static int hclgevf_rss_init_hw (struct hclgevf_dev * hdev )
2127+ static void hclgevf_rss_init_cfg (struct hclgevf_dev * hdev )
21282128{
21292129 struct hclgevf_rss_cfg * rss_cfg = & hdev -> rss_cfg ;
2130- int ret ;
2130+ struct hclgevf_rss_tuple_cfg * tuple_sets ;
21312131 u32 i ;
21322132
2133+ rss_cfg -> hash_algo = HCLGEVF_RSS_HASH_ALGO_TOEPLITZ ;
21332134 rss_cfg -> rss_size = hdev -> nic .kinfo .rss_size ;
2134-
2135+ tuple_sets = & rss_cfg -> rss_tuple_sets ;
21352136 if (hdev -> pdev -> revision >= 0x21 ) {
21362137 rss_cfg -> hash_algo = HCLGEVF_RSS_HASH_ALGO_SIMPLE ;
21372138 memcpy (rss_cfg -> rss_hash_key , hclgevf_hash_key ,
21382139 HCLGEVF_RSS_KEY_SIZE );
21392140
2141+ tuple_sets -> ipv4_tcp_en = HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2142+ tuple_sets -> ipv4_udp_en = HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2143+ tuple_sets -> ipv4_sctp_en = HCLGEVF_RSS_INPUT_TUPLE_SCTP ;
2144+ tuple_sets -> ipv4_fragment_en = HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2145+ tuple_sets -> ipv6_tcp_en = HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2146+ tuple_sets -> ipv6_udp_en = HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2147+ tuple_sets -> ipv6_sctp_en = HCLGEVF_RSS_INPUT_TUPLE_SCTP ;
2148+ tuple_sets -> ipv6_fragment_en = HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2149+ }
2150+
2151+ /* Initialize RSS indirect table */
2152+ for (i = 0 ; i < HCLGEVF_RSS_IND_TBL_SIZE ; i ++ )
2153+ rss_cfg -> rss_indirection_tbl [i ] = i % rss_cfg -> rss_size ;
2154+ }
2155+
2156+ static int hclgevf_rss_init_hw (struct hclgevf_dev * hdev )
2157+ {
2158+ struct hclgevf_rss_cfg * rss_cfg = & hdev -> rss_cfg ;
2159+ int ret ;
2160+
2161+ if (hdev -> pdev -> revision >= 0x21 ) {
21402162 ret = hclgevf_set_rss_algo_key (hdev , rss_cfg -> hash_algo ,
21412163 rss_cfg -> rss_hash_key );
21422164 if (ret )
21432165 return ret ;
21442166
2145- rss_cfg -> rss_tuple_sets .ipv4_tcp_en =
2146- HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2147- rss_cfg -> rss_tuple_sets .ipv4_udp_en =
2148- HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2149- rss_cfg -> rss_tuple_sets .ipv4_sctp_en =
2150- HCLGEVF_RSS_INPUT_TUPLE_SCTP ;
2151- rss_cfg -> rss_tuple_sets .ipv4_fragment_en =
2152- HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2153- rss_cfg -> rss_tuple_sets .ipv6_tcp_en =
2154- HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2155- rss_cfg -> rss_tuple_sets .ipv6_udp_en =
2156- HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2157- rss_cfg -> rss_tuple_sets .ipv6_sctp_en =
2158- HCLGEVF_RSS_INPUT_TUPLE_SCTP ;
2159- rss_cfg -> rss_tuple_sets .ipv6_fragment_en =
2160- HCLGEVF_RSS_INPUT_TUPLE_OTHER ;
2161-
21622167 ret = hclgevf_set_rss_input_tuple (hdev , rss_cfg );
21632168 if (ret )
21642169 return ret ;
21652170 }
21662171
2167- /* Initialize RSS indirect table */
2168- for (i = 0 ; i < HCLGEVF_RSS_IND_TBL_SIZE ; i ++ )
2169- rss_cfg -> rss_indirection_tbl [i ] = i % rss_cfg -> rss_size ;
2170-
21712172 ret = hclgevf_set_rss_indir_table (hdev );
21722173 if (ret )
21732174 return ret ;
@@ -2764,6 +2765,7 @@ static int hclgevf_init_hdev(struct hclgevf_dev *hdev)
27642765 goto err_config ;
27652766
27662767 /* Initialize RSS for this VF */
2768+ hclgevf_rss_init_cfg (hdev );
27672769 ret = hclgevf_rss_init_hw (hdev );
27682770 if (ret ) {
27692771 dev_err (& hdev -> pdev -> dev ,
@@ -2936,6 +2938,8 @@ static int hclgevf_set_channels(struct hnae3_handle *handle, u32 new_tqps_num,
29362938 for (i = 0 ; i < HCLGEVF_RSS_IND_TBL_SIZE ; i ++ )
29372939 rss_indir [i ] = i % kinfo -> rss_size ;
29382940
2941+ hdev -> rss_cfg .rss_size = kinfo -> rss_size ;
2942+
29392943 ret = hclgevf_set_rss (handle , rss_indir , NULL , 0 );
29402944 if (ret )
29412945 dev_err (& hdev -> pdev -> dev , "set rss indir table fail, ret=%d\n" ,
0 commit comments