aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/amd
diff options
context:
space:
mode:
authorLendacky, Thomas <Thomas.Lendacky@amd.com>2015-04-09 13:11:57 -0400
committerDavid S. Miller <davem@davemloft.net>2015-04-09 17:35:37 -0400
commitb876382bac0fe2ed1129247c47029799bb4d763a (patch)
tree6ebfdeffc17763c32916d21ad6ccdd0c177e2ccc /drivers/net/ethernet/amd
parent8dee19e619bb6d4aefdf0ce5260099fec08601a3 (diff)
amd-xgbe: Move Rx mode configuration into init
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>
Diffstat (limited to 'drivers/net/ethernet/amd')
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-dev.c21
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-drv.c12
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe.h4
3 files changed, 20 insertions, 17 deletions
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
index 96c5e4babbdf..21d9497518fd 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
@@ -853,6 +853,22 @@ static int xgbe_set_mac_address(struct xgbe_prv_data *pdata, u8 *addr)
853 return 0; 853 return 0;
854} 854}
855 855
856static int xgbe_config_rx_mode(struct xgbe_prv_data *pdata)
857{
858 struct net_device *netdev = pdata->netdev;
859 unsigned int pr_mode, am_mode;
860
861 pr_mode = ((netdev->flags & IFF_PROMISC) != 0);
862 am_mode = ((netdev->flags & IFF_ALLMULTI) != 0);
863
864 xgbe_set_promiscuous_mode(pdata, pr_mode);
865 xgbe_set_all_multicast_mode(pdata, am_mode);
866
867 xgbe_add_mac_addresses(pdata);
868
869 return 0;
870}
871
856static int xgbe_read_mmd_regs(struct xgbe_prv_data *pdata, int prtad, 872static int xgbe_read_mmd_regs(struct xgbe_prv_data *pdata, int prtad,
857 int mmd_reg) 873 int mmd_reg)
858{ 874{
@@ -2808,6 +2824,7 @@ static int xgbe_init(struct xgbe_prv_data *pdata)
2808 * Initialize MAC related features 2824 * Initialize MAC related features
2809 */ 2825 */
2810 xgbe_config_mac_address(pdata); 2826 xgbe_config_mac_address(pdata);
2827 xgbe_config_rx_mode(pdata);
2811 xgbe_config_jumbo_enable(pdata); 2828 xgbe_config_jumbo_enable(pdata);
2812 xgbe_config_flow_control(pdata); 2829 xgbe_config_flow_control(pdata);
2813 xgbe_config_mac_speed(pdata); 2830 xgbe_config_mac_speed(pdata);
@@ -2827,10 +2844,8 @@ void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *hw_if)
2827 2844
2828 hw_if->tx_complete = xgbe_tx_complete; 2845 hw_if->tx_complete = xgbe_tx_complete;
2829 2846
2830 hw_if->set_promiscuous_mode = xgbe_set_promiscuous_mode;
2831 hw_if->set_all_multicast_mode = xgbe_set_all_multicast_mode;
2832 hw_if->add_mac_addresses = xgbe_add_mac_addresses;
2833 hw_if->set_mac_address = xgbe_set_mac_address; 2847 hw_if->set_mac_address = xgbe_set_mac_address;
2848 hw_if->config_rx_mode = xgbe_config_rx_mode;
2834 2849
2835 hw_if->enable_rx_csum = xgbe_enable_rx_csum; 2850 hw_if->enable_rx_csum = xgbe_enable_rx_csum;
2836 hw_if->disable_rx_csum = xgbe_disable_rx_csum; 2851 hw_if->disable_rx_csum = xgbe_disable_rx_csum;
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
index 74b4698ea958..e10abc7db447 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
@@ -129,7 +129,6 @@
129 129
130static int xgbe_one_poll(struct napi_struct *, int); 130static int xgbe_one_poll(struct napi_struct *, int);
131static int xgbe_all_poll(struct napi_struct *, int); 131static int xgbe_all_poll(struct napi_struct *, int);
132static void xgbe_set_rx_mode(struct net_device *);
133 132
134static int xgbe_alloc_channels(struct xgbe_prv_data *pdata) 133static int xgbe_alloc_channels(struct xgbe_prv_data *pdata)
135{ 134{
@@ -952,8 +951,6 @@ static int xgbe_start(struct xgbe_prv_data *pdata)
952 951
953 DBGPR("-->xgbe_start\n"); 952 DBGPR("-->xgbe_start\n");
954 953
955 xgbe_set_rx_mode(netdev);
956
957 hw_if->init(pdata); 954 hw_if->init(pdata);
958 955
959 phy_start(pdata->phydev); 956 phy_start(pdata->phydev);
@@ -1533,17 +1530,10 @@ static void xgbe_set_rx_mode(struct net_device *netdev)
1533{ 1530{
1534 struct xgbe_prv_data *pdata = netdev_priv(netdev); 1531 struct xgbe_prv_data *pdata = netdev_priv(netdev);
1535 struct xgbe_hw_if *hw_if = &pdata->hw_if; 1532 struct xgbe_hw_if *hw_if = &pdata->hw_if;
1536 unsigned int pr_mode, am_mode;
1537 1533
1538 DBGPR("-->xgbe_set_rx_mode\n"); 1534 DBGPR("-->xgbe_set_rx_mode\n");
1539 1535
1540 pr_mode = ((netdev->flags & IFF_PROMISC) != 0); 1536 hw_if->config_rx_mode(pdata);
1541 am_mode = ((netdev->flags & IFF_ALLMULTI) != 0);
1542
1543 hw_if->set_promiscuous_mode(pdata, pr_mode);
1544 hw_if->set_all_multicast_mode(pdata, am_mode);
1545
1546 hw_if->add_mac_addresses(pdata);
1547 1537
1548 DBGPR("<--xgbe_set_rx_mode\n"); 1538 DBGPR("<--xgbe_set_rx_mode\n");
1549} 1539}
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h
index a864eabe5cd0..e62dfa2deab6 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe.h
+++ b/drivers/net/ethernet/amd/xgbe/xgbe.h
@@ -495,10 +495,8 @@ struct xgbe_mmc_stats {
495struct xgbe_hw_if { 495struct xgbe_hw_if {
496 int (*tx_complete)(struct xgbe_ring_desc *); 496 int (*tx_complete)(struct xgbe_ring_desc *);
497 497
498 int (*set_promiscuous_mode)(struct xgbe_prv_data *, unsigned int);
499 int (*set_all_multicast_mode)(struct xgbe_prv_data *, unsigned int);
500 int (*add_mac_addresses)(struct xgbe_prv_data *);
501 int (*set_mac_address)(struct xgbe_prv_data *, u8 *addr); 498 int (*set_mac_address)(struct xgbe_prv_data *, u8 *addr);
499 int (*config_rx_mode)(struct xgbe_prv_data *);
502 500
503 int (*enable_rx_csum)(struct xgbe_prv_data *); 501 int (*enable_rx_csum)(struct xgbe_prv_data *);
504 int (*disable_rx_csum)(struct xgbe_prv_data *); 502 int (*disable_rx_csum)(struct xgbe_prv_data *);