]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
r8169: move rtl_set_rx_mode before its rtl_hw_start callers.
authorJoe Jin <joe.jin@oracle.com>
Tue, 28 Aug 2012 00:16:01 +0000 (08:16 +0800)
committerJoe Jin <joe.jin@oracle.com>
Wed, 29 Aug 2012 00:22:15 +0000 (08:22 +0800)
(backporteded from upstream commit e6b763ea0527f1038752a591e4b45cffacc4bba2)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/r8169.c

index 4462341f3292a4bb8bcdaa6156f8ca651cb03074..fa9f1a8e849e3e779388aa481618c2d30b5a57a4 100644 (file)
@@ -780,7 +780,6 @@ MODULE_FIRMWARE(FIRMWARE_8168F_2);
 static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance);
 static int rtl8169_init_ring(struct net_device *dev);
 static void rtl_hw_start(struct net_device *dev);
-static void rtl_set_rx_mode(struct net_device *dev);
 static void rtl8169_rx_clear(struct rtl8169_private *tp);
 static int rtl8169_poll(struct napi_struct *napi, int budget);
 
@@ -4214,6 +4213,53 @@ static void rtl8169_set_magic_reg(void __iomem *ioaddr, unsigned mac_version)
        }
 }
 
+static void rtl_set_rx_mode(struct net_device *dev)
+{
+       struct rtl8169_private *tp = netdev_priv(dev);
+       void __iomem *ioaddr = tp->mmio_addr;
+       u32 mc_filter[2];       /* Multicast hash filter */
+       int rx_mode;
+       u32 tmp = 0;
+
+       if (dev->flags & IFF_PROMISC) {
+               /* Unconditionally log net taps. */
+               netif_notice(tp, link, dev, "Promiscuous mode enabled\n");
+               rx_mode =
+                   AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
+                   AcceptAllPhys;
+               mc_filter[1] = mc_filter[0] = 0xffffffff;
+       } else if ((netdev_mc_count(dev) > multicast_filter_limit) ||
+                  (dev->flags & IFF_ALLMULTI)) {
+               /* Too many to filter perfectly -- accept all multicasts. */
+               rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
+               mc_filter[1] = mc_filter[0] = 0xffffffff;
+       } else {
+               struct netdev_hw_addr *ha;
+
+               rx_mode = AcceptBroadcast | AcceptMyPhys;
+               mc_filter[1] = mc_filter[0] = 0;
+               netdev_for_each_mc_addr(ha, dev) {
+                       int bit_nr = ether_crc(ETH_ALEN, ha->addr) >> 26;
+                       mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
+                       rx_mode |= AcceptMulticast;
+               }
+       }
+
+       tmp = (RTL_R32(RxConfig) & ~RX_CONFIG_ACCEPT_MASK) | rx_mode;
+
+       if (tp->mac_version > RTL_GIGA_MAC_VER_06) {
+               u32 data = mc_filter[0];
+
+               mc_filter[0] = swab32(mc_filter[1]);
+               mc_filter[1] = swab32(data);
+       }
+
+       RTL_W32(MAR0 + 4, mc_filter[1]);
+       RTL_W32(MAR0 + 0, mc_filter[0]);
+
+       RTL_W32(RxConfig, tmp);
+}
+
 static void rtl_hw_start_8169(struct net_device *dev)
 {
        struct rtl8169_private *tp = netdev_priv(dev);
@@ -5721,53 +5767,6 @@ static int rtl8169_close(struct net_device *dev)
        return 0;
 }
 
-static void rtl_set_rx_mode(struct net_device *dev)
-{
-       struct rtl8169_private *tp = netdev_priv(dev);
-       void __iomem *ioaddr = tp->mmio_addr;
-       u32 mc_filter[2];       /* Multicast hash filter */
-       int rx_mode;
-       u32 tmp = 0;
-
-       if (dev->flags & IFF_PROMISC) {
-               /* Unconditionally log net taps. */
-               netif_notice(tp, link, dev, "Promiscuous mode enabled\n");
-               rx_mode =
-                   AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
-                   AcceptAllPhys;
-               mc_filter[1] = mc_filter[0] = 0xffffffff;
-       } else if ((netdev_mc_count(dev) > multicast_filter_limit) ||
-                  (dev->flags & IFF_ALLMULTI)) {
-               /* Too many to filter perfectly -- accept all multicasts. */
-               rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
-               mc_filter[1] = mc_filter[0] = 0xffffffff;
-       } else {
-               struct netdev_hw_addr *ha;
-
-               rx_mode = AcceptBroadcast | AcceptMyPhys;
-               mc_filter[1] = mc_filter[0] = 0;
-               netdev_for_each_mc_addr(ha, dev) {
-                       int bit_nr = ether_crc(ETH_ALEN, ha->addr) >> 26;
-                       mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
-                       rx_mode |= AcceptMulticast;
-               }
-       }
-
-       tmp = (RTL_R32(RxConfig) & ~RX_CONFIG_ACCEPT_MASK) | rx_mode;
-
-       if (tp->mac_version > RTL_GIGA_MAC_VER_06) {
-               u32 data = mc_filter[0];
-
-               mc_filter[0] = swab32(mc_filter[1]);
-               mc_filter[1] = swab32(data);
-       }
-
-       RTL_W32(MAR0 + 4, mc_filter[1]);
-       RTL_W32(MAR0 + 0, mc_filter[0]);
-
-       RTL_W32(RxConfig, tmp);
-}
-
 static struct rtnl_link_stats64 *
 rtl8169_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
 {