]> git.feebdaed.xyz Git - 0xmirror/f-stack.git/commitdiff
Disable RSS if hardware does not support it
authorClcanny <a837940593@gmail.com>
Sun, 13 Apr 2025 06:04:35 +0000 (14:04 +0800)
committerClcanny <a837940593@gmail.com>
Sun, 13 Apr 2025 13:15:36 +0000 (21:15 +0800)
lib/ff_dpdk_if.c

index 9ce6ac21a09e96a3d588a63c19b46a9f06293d75..e0085d352ebc29ed79d9ececd6e438d93276e8ab 100644 (file)
@@ -657,26 +657,28 @@ init_port_start(void)
                     addr.addr_bytes, RTE_ETHER_ADDR_LEN);
 
                 /* Set RSS mode */
-                uint64_t default_rss_hf = RTE_ETH_RSS_PROTO_MASK;
-                port_conf.rxmode.mq_mode = RTE_ETH_MQ_RX_RSS;
-                port_conf.rx_adv_conf.rss_conf.rss_hf = default_rss_hf;
-                if (dev_info.hash_key_size == 52) {
-                    rsskey = default_rsskey_52bytes;
-                    rsskey_len = 52;
-                }
-                if (ff_global_cfg.dpdk.symmetric_rss) {
-                    printf("Use symmetric Receive-side Scaling(RSS) key\n");
-                    rsskey = symmetric_rsskey;
-                }
-                port_conf.rx_adv_conf.rss_conf.rss_key = rsskey;
-                port_conf.rx_adv_conf.rss_conf.rss_key_len = rsskey_len;
-                port_conf.rx_adv_conf.rss_conf.rss_hf &= dev_info.flow_type_rss_offloads;
-                if (port_conf.rx_adv_conf.rss_conf.rss_hf !=
-                        RTE_ETH_RSS_PROTO_MASK) {
-                    printf("Port %u modified RSS hash function based on hardware support,"
-                            "requested:%#"PRIx64" configured:%#"PRIx64"\n",
-                            port_id, default_rss_hf,
-                            port_conf.rx_adv_conf.rss_conf.rss_hf);
+                if (dev_info.flow_type_rss_offloads) {
+                    uint64_t default_rss_hf = RTE_ETH_RSS_PROTO_MASK;
+                    port_conf.rxmode.mq_mode = RTE_ETH_MQ_RX_RSS;
+                    port_conf.rx_adv_conf.rss_conf.rss_hf = default_rss_hf;
+                    if (dev_info.hash_key_size == 52) {
+                        rsskey = default_rsskey_52bytes;
+                        rsskey_len = 52;
+                    }
+                    if (ff_global_cfg.dpdk.symmetric_rss) {
+                        printf("Use symmetric Receive-side Scaling(RSS) key\n");
+                        rsskey = symmetric_rsskey;
+                    }
+                    port_conf.rx_adv_conf.rss_conf.rss_key = rsskey;
+                    port_conf.rx_adv_conf.rss_conf.rss_key_len = rsskey_len;
+                    port_conf.rx_adv_conf.rss_conf.rss_hf &= dev_info.flow_type_rss_offloads;
+                    if (port_conf.rx_adv_conf.rss_conf.rss_hf !=
+                            RTE_ETH_RSS_PROTO_MASK) {
+                        printf("Port %u modified RSS hash function based on hardware support,"
+                                "requested:%#"PRIx64" configured:%#"PRIx64"\n",
+                                port_id, default_rss_hf,
+                                port_conf.rx_adv_conf.rss_conf.rss_hf);
+                    }
                 }
 
                 if (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) {