amd-xgbe: Move Rx mode configuration into init
authorLendacky, Thomas <Thomas.Lendacky@amd.com>
Thu, 9 Apr 2015 17:11:57 +0000 (12:11 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 9 Apr 2015 21:35:37 +0000 (17:35 -0400)
Currently a call to configure the Rx mode (promiscuous mode, all
multicast mode, etc.) is made in xgbe_start separate from the xgbe_init
function. This call to set the Rx mode should be part of the xgbe_init
function so that calls to the init function don't have to be preceded
with calls to configure the Rx mode.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/amd/xgbe/xgbe-dev.c
drivers/net/ethernet/amd/xgbe/xgbe-drv.c
drivers/net/ethernet/amd/xgbe/xgbe.h

index 96c5e4babbdf4b391a5c1c6f3241b087e1be364d..21d9497518fde356f45e6e0eb0632368d680116b 100644 (file)
@@ -853,6 +853,22 @@ static int xgbe_set_mac_address(struct xgbe_prv_data *pdata, u8 *addr)
        return 0;
 }
 
+static int xgbe_config_rx_mode(struct xgbe_prv_data *pdata)
+{
+       struct net_device *netdev = pdata->netdev;
+       unsigned int pr_mode, am_mode;
+
+       pr_mode = ((netdev->flags & IFF_PROMISC) != 0);
+       am_mode = ((netdev->flags & IFF_ALLMULTI) != 0);
+
+       xgbe_set_promiscuous_mode(pdata, pr_mode);
+       xgbe_set_all_multicast_mode(pdata, am_mode);
+
+       xgbe_add_mac_addresses(pdata);
+
+       return 0;
+}
+
 static int xgbe_read_mmd_regs(struct xgbe_prv_data *pdata, int prtad,
                              int mmd_reg)
 {
@@ -2808,6 +2824,7 @@ static int xgbe_init(struct xgbe_prv_data *pdata)
         * Initialize MAC related features
         */
        xgbe_config_mac_address(pdata);
+       xgbe_config_rx_mode(pdata);
        xgbe_config_jumbo_enable(pdata);
        xgbe_config_flow_control(pdata);
        xgbe_config_mac_speed(pdata);
@@ -2827,10 +2844,8 @@ void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *hw_if)
 
        hw_if->tx_complete = xgbe_tx_complete;
 
-       hw_if->set_promiscuous_mode = xgbe_set_promiscuous_mode;
-       hw_if->set_all_multicast_mode = xgbe_set_all_multicast_mode;
-       hw_if->add_mac_addresses = xgbe_add_mac_addresses;
        hw_if->set_mac_address = xgbe_set_mac_address;
+       hw_if->config_rx_mode = xgbe_config_rx_mode;
 
        hw_if->enable_rx_csum = xgbe_enable_rx_csum;
        hw_if->disable_rx_csum = xgbe_disable_rx_csum;
index 74b4698ea95834090257d75ee699943834f6cc3a..e10abc7db447413bd09134eb2d248604c3b557c5 100644 (file)
 
 static int xgbe_one_poll(struct napi_struct *, int);
 static int xgbe_all_poll(struct napi_struct *, int);
-static void xgbe_set_rx_mode(struct net_device *);
 
 static int xgbe_alloc_channels(struct xgbe_prv_data *pdata)
 {
@@ -952,8 +951,6 @@ static int xgbe_start(struct xgbe_prv_data *pdata)
 
        DBGPR("-->xgbe_start\n");
 
-       xgbe_set_rx_mode(netdev);
-
        hw_if->init(pdata);
 
        phy_start(pdata->phydev);
@@ -1533,17 +1530,10 @@ static void xgbe_set_rx_mode(struct net_device *netdev)
 {
        struct xgbe_prv_data *pdata = netdev_priv(netdev);
        struct xgbe_hw_if *hw_if = &pdata->hw_if;
-       unsigned int pr_mode, am_mode;
 
        DBGPR("-->xgbe_set_rx_mode\n");
 
-       pr_mode = ((netdev->flags & IFF_PROMISC) != 0);
-       am_mode = ((netdev->flags & IFF_ALLMULTI) != 0);
-
-       hw_if->set_promiscuous_mode(pdata, pr_mode);
-       hw_if->set_all_multicast_mode(pdata, am_mode);
-
-       hw_if->add_mac_addresses(pdata);
+       hw_if->config_rx_mode(pdata);
 
        DBGPR("<--xgbe_set_rx_mode\n");
 }
index a864eabe5cd0dc202befd6bfd1eb64fde5904a37..e62dfa2deab67565cbb6c62116f4f8b6b722384f 100644 (file)
@@ -495,10 +495,8 @@ struct xgbe_mmc_stats {
 struct xgbe_hw_if {
        int (*tx_complete)(struct xgbe_ring_desc *);
 
-       int (*set_promiscuous_mode)(struct xgbe_prv_data *, unsigned int);
-       int (*set_all_multicast_mode)(struct xgbe_prv_data *, unsigned int);
-       int (*add_mac_addresses)(struct xgbe_prv_data *);
        int (*set_mac_address)(struct xgbe_prv_data *, u8 *addr);
+       int (*config_rx_mode)(struct xgbe_prv_data *);
 
        int (*enable_rx_csum)(struct xgbe_prv_data *);
        int (*disable_rx_csum)(struct xgbe_prv_data *);