]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: dc2114x: remove the pass all multicast flag in operation mode settings
authorHanyuan Zhao <hanyuan-z@qq.com>
Fri, 9 Aug 2024 08:57:01 +0000 (16:57 +0800)
committerTom Rini <trini@konsulko.com>
Sun, 27 Oct 2024 16:15:29 +0000 (10:15 -0600)
Remove the OMR_PM flag and choose 16 perfect filtering mode since in
modern networks there're plenty of multicasts and set ORM_PM flag will
increase the dc2114x's workload and ask the U-Boot to handle packets
not related to itself. And most of the time, U-Boot does not need this
feature.

Signed-off-by: Hanyuan Zhao <zhaohy22@mails.tsinghua.edu.cn>
drivers/net/dc2114x.c

index 11dea9b4d7931b933a89b8cd249689fb29b0fafa..e1edda8e19c8ce47cfa483207d5a5b71843d3919 100644 (file)
@@ -437,7 +437,16 @@ static int dc21x4x_init_common(struct dc2114x_priv *priv)
                return -1;
        }
 
-       dc2114x_outl(priv, OMR_SDP | OMR_PS | OMR_PM, DE4X5_OMR);
+       /* 2024-07:
+        * Remove the OMR_PM flag and choose 16 perfect filtering mode since in
+        * modern networks there're plenty of multicasts and set ORM_PM flag will
+        * increase the dc2114x's workload and ask the U-Boot to handle packets
+        * not related to itself. And most of the time, U-Boot does not need this
+        * feature.
+        *
+        * A better way: let user to decide whether to have this flag.
+        */
+       dc2114x_outl(priv, OMR_SDP | OMR_PS, DE4X5_OMR);
 
        for (i = 0; i < NUM_RX_DESC; i++) {
                priv->rx_ring[i].status = cpu_to_le32(R_OWN);