diff options
-rw-r--r-- | drivers/net/mv643xx_eth.c | 18 | ||||
-rw-r--r-- | drivers/net/mv643xx_eth.h | 3 |
2 files changed, 8 insertions, 13 deletions
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index 7ef4b0434a3f..af9bbe649fc1 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c | |||
@@ -243,8 +243,7 @@ static void mv643xx_eth_update_mac_address(struct net_device *dev) | |||
243 | unsigned int port_num = mp->port_num; | 243 | unsigned int port_num = mp->port_num; |
244 | 244 | ||
245 | eth_port_init_mac_tables(port_num); | 245 | eth_port_init_mac_tables(port_num); |
246 | memcpy(mp->port_mac_addr, dev->dev_addr, 6); | 246 | eth_port_uc_addr_set(port_num, dev->dev_addr); |
247 | eth_port_uc_addr_set(port_num, mp->port_mac_addr); | ||
248 | } | 247 | } |
249 | 248 | ||
250 | /* | 249 | /* |
@@ -320,7 +319,7 @@ static void mv643xx_eth_tx_timeout_task(struct net_device *dev) | |||
320 | 319 | ||
321 | netif_device_detach(dev); | 320 | netif_device_detach(dev); |
322 | eth_port_reset(mp->port_num); | 321 | eth_port_reset(mp->port_num); |
323 | eth_port_start(mp); | 322 | eth_port_start(dev); |
324 | netif_device_attach(dev); | 323 | netif_device_attach(dev); |
325 | } | 324 | } |
326 | 325 | ||
@@ -751,9 +750,6 @@ static int mv643xx_eth_open(struct net_device *dev) | |||
751 | /* Stop RX Queues */ | 750 | /* Stop RX Queues */ |
752 | mv_write(MV643XX_ETH_RECEIVE_QUEUE_COMMAND_REG(port_num), 0x0000ff00); | 751 | mv_write(MV643XX_ETH_RECEIVE_QUEUE_COMMAND_REG(port_num), 0x0000ff00); |
753 | 752 | ||
754 | /* Set the MAC Address */ | ||
755 | memcpy(mp->port_mac_addr, dev->dev_addr, 6); | ||
756 | |||
757 | eth_port_init(mp); | 753 | eth_port_init(mp); |
758 | 754 | ||
759 | INIT_WORK(&mp->rx_task, (void (*)(void *))mv643xx_eth_rx_task, dev); | 755 | INIT_WORK(&mp->rx_task, (void (*)(void *))mv643xx_eth_rx_task, dev); |
@@ -839,7 +835,7 @@ static int mv643xx_eth_open(struct net_device *dev) | |||
839 | 835 | ||
840 | mv643xx_eth_rx_task(dev); /* Fill RX ring with skb's */ | 836 | mv643xx_eth_rx_task(dev); /* Fill RX ring with skb's */ |
841 | 837 | ||
842 | eth_port_start(mp); | 838 | eth_port_start(dev); |
843 | 839 | ||
844 | /* Interrupt Coalescing */ | 840 | /* Interrupt Coalescing */ |
845 | 841 | ||
@@ -1706,7 +1702,6 @@ MODULE_DESCRIPTION("Ethernet driver for Marvell MV643XX"); | |||
1706 | * Prior to calling the initialization routine eth_port_init() the user | 1702 | * Prior to calling the initialization routine eth_port_init() the user |
1707 | * must set the following fields under mv643xx_private struct: | 1703 | * must set the following fields under mv643xx_private struct: |
1708 | * port_num User Ethernet port number. | 1704 | * port_num User Ethernet port number. |
1709 | * port_mac_addr[6] User defined port MAC address. | ||
1710 | * port_config User port configuration value. | 1705 | * port_config User port configuration value. |
1711 | * port_config_extend User port config extend value. | 1706 | * port_config_extend User port config extend value. |
1712 | * port_sdma_config User port SDMA config value. | 1707 | * port_sdma_config User port SDMA config value. |
@@ -1796,7 +1791,7 @@ static void eth_port_init(struct mv643xx_private *mp) | |||
1796 | * and ether_init_rx_desc_ring for Rx queues). | 1791 | * and ether_init_rx_desc_ring for Rx queues). |
1797 | * | 1792 | * |
1798 | * INPUT: | 1793 | * INPUT: |
1799 | * struct mv643xx_private *mp Ethernet port control struct | 1794 | * dev - a pointer to the required interface |
1800 | * | 1795 | * |
1801 | * OUTPUT: | 1796 | * OUTPUT: |
1802 | * Ethernet port is ready to receive and transmit. | 1797 | * Ethernet port is ready to receive and transmit. |
@@ -1804,8 +1799,9 @@ static void eth_port_init(struct mv643xx_private *mp) | |||
1804 | * RETURN: | 1799 | * RETURN: |
1805 | * None. | 1800 | * None. |
1806 | */ | 1801 | */ |
1807 | static void eth_port_start(struct mv643xx_private *mp) | 1802 | static void eth_port_start(struct net_device *dev) |
1808 | { | 1803 | { |
1804 | struct mv643xx_private *mp = netdev_priv(dev); | ||
1809 | unsigned int port_num = mp->port_num; | 1805 | unsigned int port_num = mp->port_num; |
1810 | int tx_curr_desc, rx_curr_desc; | 1806 | int tx_curr_desc, rx_curr_desc; |
1811 | 1807 | ||
@@ -1820,7 +1816,7 @@ static void eth_port_start(struct mv643xx_private *mp) | |||
1820 | (u32)((struct eth_rx_desc *)mp->rx_desc_dma + rx_curr_desc)); | 1816 | (u32)((struct eth_rx_desc *)mp->rx_desc_dma + rx_curr_desc)); |
1821 | 1817 | ||
1822 | /* Add the assigned Ethernet address to the port's address table */ | 1818 | /* Add the assigned Ethernet address to the port's address table */ |
1823 | eth_port_uc_addr_set(port_num, mp->port_mac_addr); | 1819 | eth_port_uc_addr_set(port_num, dev->dev_addr); |
1824 | 1820 | ||
1825 | /* Assign port configuration and command. */ | 1821 | /* Assign port configuration and command. */ |
1826 | mv_write(MV643XX_ETH_PORT_CONFIG_REG(port_num), mp->port_config); | 1822 | mv_write(MV643XX_ETH_PORT_CONFIG_REG(port_num), mp->port_config); |
diff --git a/drivers/net/mv643xx_eth.h b/drivers/net/mv643xx_eth.h index f769f9b626ea..c83bcbdef4d5 100644 --- a/drivers/net/mv643xx_eth.h +++ b/drivers/net/mv643xx_eth.h | |||
@@ -324,7 +324,6 @@ struct mv643xx_mib_counters { | |||
324 | 324 | ||
325 | struct mv643xx_private { | 325 | struct mv643xx_private { |
326 | int port_num; /* User Ethernet port number */ | 326 | int port_num; /* User Ethernet port number */ |
327 | u8 port_mac_addr[6]; /* User defined port MAC address.*/ | ||
328 | u32 port_config; /* User port configuration value*/ | 327 | u32 port_config; /* User port configuration value*/ |
329 | u32 port_config_extend; /* User port config extend value*/ | 328 | u32 port_config_extend; /* User port config extend value*/ |
330 | u32 port_sdma_config; /* User port SDMA config value */ | 329 | u32 port_sdma_config; /* User port SDMA config value */ |
@@ -405,7 +404,7 @@ struct mv643xx_private { | |||
405 | /* Port operation control routines */ | 404 | /* Port operation control routines */ |
406 | static void eth_port_init(struct mv643xx_private *mp); | 405 | static void eth_port_init(struct mv643xx_private *mp); |
407 | static void eth_port_reset(unsigned int eth_port_num); | 406 | static void eth_port_reset(unsigned int eth_port_num); |
408 | static void eth_port_start(struct mv643xx_private *mp); | 407 | static void eth_port_start(struct net_device *dev); |
409 | 408 | ||
410 | /* Port MAC address routines */ | 409 | /* Port MAC address routines */ |
411 | static void eth_port_uc_addr_set(unsigned int eth_port_num, | 410 | static void eth_port_uc_addr_set(unsigned int eth_port_num, |