diff options
| author | Lendacky, Thomas <Thomas.Lendacky@amd.com> | 2015-04-09 13:11:57 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-04-09 17:35:37 -0400 |
| commit | b876382bac0fe2ed1129247c47029799bb4d763a (patch) | |
| tree | 6ebfdeffc17763c32916d21ad6ccdd0c177e2ccc /drivers/net/ethernet/amd | |
| parent | 8dee19e619bb6d4aefdf0ce5260099fec08601a3 (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.c | 21 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 12 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe.h | 4 |
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 | ||
| 856 | static 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 | |||
| 856 | static int xgbe_read_mmd_regs(struct xgbe_prv_data *pdata, int prtad, | 872 | static 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 | ||
| 130 | static int xgbe_one_poll(struct napi_struct *, int); | 130 | static int xgbe_one_poll(struct napi_struct *, int); |
| 131 | static int xgbe_all_poll(struct napi_struct *, int); | 131 | static int xgbe_all_poll(struct napi_struct *, int); |
| 132 | static void xgbe_set_rx_mode(struct net_device *); | ||
| 133 | 132 | ||
| 134 | static int xgbe_alloc_channels(struct xgbe_prv_data *pdata) | 133 | static 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 { | |||
| 495 | struct xgbe_hw_if { | 495 | struct 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 *); |
