* [PATCH net-next 0/2] r8152: random MAC address
@ 2014-09-02 9:55 Hayes Wang
2014-09-02 9:55 ` [PATCH net-next 1/2] r8152: change the location of rtl8152_set_mac_address Hayes Wang
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Hayes Wang @ 2014-09-02 9:55 UTC (permalink / raw)
To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb
If the interface has invalid MAC address, it couldn't
be used. In order to let it work normally, give a
random one.
Hayes Wang (2):
r8152: change the location of rtl8152_set_mac_address
r8152: use eth_hw_addr_random
drivers/net/usb/r8152.c | 65 ++++++++++++++++++++++++++++---------------------
1 file changed, 37 insertions(+), 28 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net-next 1/2] r8152: change the location of rtl8152_set_mac_address
2014-09-02 9:55 [PATCH net-next 0/2] r8152: random MAC address Hayes Wang
@ 2014-09-02 9:55 ` Hayes Wang
2014-09-02 9:55 ` [PATCH net-next 2/2] r8152: use eth_hw_addr_random Hayes Wang
` (2 subsequent siblings)
3 siblings, 0 replies; 9+ messages in thread
From: Hayes Wang @ 2014-09-02 9:55 UTC (permalink / raw)
To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb
Exchange the location of rtl8152_set_mac_address() and
set_ethernet_addr(). Then, the set_ethernet_addr() could
set the MAC address by calling rtl8152_set_mac_address()
later.
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
drivers/net/usb/r8152.c | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 80b0179..b5ff933 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -975,6 +975,23 @@ void write_mii_word(struct net_device *netdev, int phy_id, int reg, int val)
static int
r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags);
+static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
+{
+ struct r8152 *tp = netdev_priv(netdev);
+ struct sockaddr *addr = p;
+
+ if (!is_valid_ether_addr(addr->sa_data))
+ return -EADDRNOTAVAIL;
+
+ memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+
+ ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_CONFIG);
+ pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES, 8, addr->sa_data);
+ ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_NORAML);
+
+ return 0;
+}
+
static inline void set_ethernet_addr(struct r8152 *tp)
{
struct net_device *dev = tp->netdev;
@@ -1003,23 +1020,6 @@ static inline void set_ethernet_addr(struct r8152 *tp)
}
}
-static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
-{
- struct r8152 *tp = netdev_priv(netdev);
- struct sockaddr *addr = p;
-
- if (!is_valid_ether_addr(addr->sa_data))
- return -EADDRNOTAVAIL;
-
- memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
-
- ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_CONFIG);
- pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES, 8, addr->sa_data);
- ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_NORAML);
-
- return 0;
-}
-
static void read_bulk_callback(struct urb *urb)
{
struct net_device *netdev;
--
1.9.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH net-next 2/2] r8152: use eth_hw_addr_random
2014-09-02 9:55 [PATCH net-next 0/2] r8152: random MAC address Hayes Wang
2014-09-02 9:55 ` [PATCH net-next 1/2] r8152: change the location of rtl8152_set_mac_address Hayes Wang
@ 2014-09-02 9:55 ` Hayes Wang
2014-09-02 12:53 ` Sergei Shtylyov
2014-09-03 2:59 ` [PATCH net-next v2 0/2] r8152: random MAC address Hayes Wang
[not found] ` <1394712342-15778-32-Taiwan-albertk@realtek.com>
3 siblings, 1 reply; 9+ messages in thread
From: Hayes Wang @ 2014-09-02 9:55 UTC (permalink / raw)
To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb
If the hw doesn't have a valid MAC address, give a random one and
set it to the hw.
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
drivers/net/usb/r8152.c | 39 ++++++++++++++++++++++++---------------
1 file changed, 24 insertions(+), 15 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index b5ff933..2bc1b8d 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -992,32 +992,41 @@ static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
return 0;
}
-static inline void set_ethernet_addr(struct r8152 *tp)
+static int set_ethernet_addr(struct r8152 *tp)
{
struct net_device *dev = tp->netdev;
+ struct sockaddr sa;
int ret;
- u8 node_id[8] = {0};
if (tp->version == RTL_VER_01)
- ret = pla_ocp_read(tp, PLA_IDR, sizeof(node_id), node_id);
+ ret = pla_ocp_read(tp, PLA_IDR, 8, sa.sa_data);
else
- ret = pla_ocp_read(tp, PLA_BACKUP, sizeof(node_id), node_id);
+ ret = pla_ocp_read(tp, PLA_BACKUP, 8, sa.sa_data);
if (ret < 0) {
- netif_notice(tp, probe, dev, "inet addr fail\n");
+ netif_err(tp, probe, dev, "Get ether addr fail\n");
+ } else if (!is_valid_ether_addr(sa.sa_data)) {
+ netif_err(tp, probe, dev,
+ "Invalid ether addr %02x:%02x:%02x:%02x:%02x:%02x\n",
+ sa.sa_data[0], sa.sa_data[1], sa.sa_data[2],
+ sa.sa_data[3], sa.sa_data[4], sa.sa_data[5]);
+ eth_hw_addr_random(dev);
+ ether_addr_copy(sa.sa_data, dev->dev_addr);
+ ret = rtl8152_set_mac_address(dev, &sa);
+ netif_info(tp, probe, dev,
+ "Random ether addr %02x:%02x:%02x:%02x:%02x:%02x\n",
+ sa.sa_data[0], sa.sa_data[1], sa.sa_data[2],
+ sa.sa_data[3], sa.sa_data[4], sa.sa_data[5]);
} else {
- if (tp->version != RTL_VER_01) {
- ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR,
- CRWECR_CONFIG);
- pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES,
- sizeof(node_id), node_id);
- ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR,
- CRWECR_NORAML);
- }
+ if (tp->version == RTL_VER_01)
+ ether_addr_copy(dev->dev_addr, sa.sa_data);
+ else
+ ret = rtl8152_set_mac_address(dev, &sa);
- memcpy(dev->dev_addr, node_id, dev->addr_len);
- memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
+ ether_addr_copy(dev->perm_addr, dev->dev_addr);
}
+
+ return ret;
}
static void read_bulk_callback(struct urb *urb)
--
1.9.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net-next 2/2] r8152: use eth_hw_addr_random
2014-09-02 9:55 ` [PATCH net-next 2/2] r8152: use eth_hw_addr_random Hayes Wang
@ 2014-09-02 12:53 ` Sergei Shtylyov
0 siblings, 0 replies; 9+ messages in thread
From: Sergei Shtylyov @ 2014-09-02 12:53 UTC (permalink / raw)
To: Hayes Wang, netdev; +Cc: nic_swsd, linux-kernel, linux-usb
Hello.
On 9/2/2014 1:55 PM, Hayes Wang wrote:
> If the hw doesn't have a valid MAC address, give a random one and
> set it to the hw.
> Signed-off-by: Hayes Wang <hayeswang@realtek.com>
> ---
> drivers/net/usb/r8152.c | 39 ++++++++++++++++++++++++---------------
> 1 file changed, 24 insertions(+), 15 deletions(-)
> diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
> index b5ff933..2bc1b8d 100644
> --- a/drivers/net/usb/r8152.c
> +++ b/drivers/net/usb/r8152.c
> @@ -992,32 +992,41 @@ static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
> return 0;
> }
>
> -static inline void set_ethernet_addr(struct r8152 *tp)
> +static int set_ethernet_addr(struct r8152 *tp)
> {
> struct net_device *dev = tp->netdev;
> + struct sockaddr sa;
> int ret;
> - u8 node_id[8] = {0};
>
> if (tp->version == RTL_VER_01)
> - ret = pla_ocp_read(tp, PLA_IDR, sizeof(node_id), node_id);
> + ret = pla_ocp_read(tp, PLA_IDR, 8, sa.sa_data);
> else
> - ret = pla_ocp_read(tp, PLA_BACKUP, sizeof(node_id), node_id);
> + ret = pla_ocp_read(tp, PLA_BACKUP, 8, sa.sa_data);
>
> if (ret < 0) {
> - netif_notice(tp, probe, dev, "inet addr fail\n");
> + netif_err(tp, probe, dev, "Get ether addr fail\n");
> + } else if (!is_valid_ether_addr(sa.sa_data)) {
> + netif_err(tp, probe, dev,
> + "Invalid ether addr %02x:%02x:%02x:%02x:%02x:%02x\n",
There's now "%pM" format specifier for printing a MAC address.
> + sa.sa_data[0], sa.sa_data[1], sa.sa_data[2],
> + sa.sa_data[3], sa.sa_data[4], sa.sa_data[5]);
> + eth_hw_addr_random(dev);
> + ether_addr_copy(sa.sa_data, dev->dev_addr);
> + ret = rtl8152_set_mac_address(dev, &sa);
> + netif_info(tp, probe, dev,
> + "Random ether addr %02x:%02x:%02x:%02x:%02x:%02x\n",
Likewise.
WBR, Sergei
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net-next v2 0/2] r8152: random MAC address
2014-09-02 9:55 [PATCH net-next 0/2] r8152: random MAC address Hayes Wang
2014-09-02 9:55 ` [PATCH net-next 1/2] r8152: change the location of rtl8152_set_mac_address Hayes Wang
2014-09-02 9:55 ` [PATCH net-next 2/2] r8152: use eth_hw_addr_random Hayes Wang
@ 2014-09-03 2:59 ` Hayes Wang
2014-09-03 2:59 ` [PATCH net-next v2 1/2] r8152: change the location of rtl8152_set_mac_address Hayes Wang
2014-09-03 2:59 ` [PATCH net-next v2 2/2] r8152: use eth_hw_addr_random Hayes Wang
[not found] ` <1394712342-15778-32-Taiwan-albertk@realtek.com>
3 siblings, 2 replies; 9+ messages in thread
From: Hayes Wang @ 2014-09-03 2:59 UTC (permalink / raw)
To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb
If the interface has invalid MAC address, it couldn't
be used. In order to let it work normally, give a
random one.
v2:
Use "%pM" format specifier for printing a MAC address.
Hayes Wang (2):
r8152: change the location of rtl8152_set_mac_address
r8152: use eth_hw_addr_random
drivers/net/usb/r8152.c | 65 ++++++++++++++++++++++++++++---------------------
1 file changed, 37 insertions(+), 28 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net-next v2 1/2] r8152: change the location of rtl8152_set_mac_address
2014-09-03 2:59 ` [PATCH net-next v2 0/2] r8152: random MAC address Hayes Wang
@ 2014-09-03 2:59 ` Hayes Wang
2014-09-03 2:59 ` [PATCH net-next v2 2/2] r8152: use eth_hw_addr_random Hayes Wang
1 sibling, 0 replies; 9+ messages in thread
From: Hayes Wang @ 2014-09-03 2:59 UTC (permalink / raw)
To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb
Exchange the location of rtl8152_set_mac_address() and
set_ethernet_addr(). Then, the set_ethernet_addr() could
set the MAC address by calling rtl8152_set_mac_address()
later.
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
drivers/net/usb/r8152.c | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 80b0179..b5ff933 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -975,6 +975,23 @@ void write_mii_word(struct net_device *netdev, int phy_id, int reg, int val)
static int
r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags);
+static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
+{
+ struct r8152 *tp = netdev_priv(netdev);
+ struct sockaddr *addr = p;
+
+ if (!is_valid_ether_addr(addr->sa_data))
+ return -EADDRNOTAVAIL;
+
+ memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+
+ ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_CONFIG);
+ pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES, 8, addr->sa_data);
+ ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_NORAML);
+
+ return 0;
+}
+
static inline void set_ethernet_addr(struct r8152 *tp)
{
struct net_device *dev = tp->netdev;
@@ -1003,23 +1020,6 @@ static inline void set_ethernet_addr(struct r8152 *tp)
}
}
-static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
-{
- struct r8152 *tp = netdev_priv(netdev);
- struct sockaddr *addr = p;
-
- if (!is_valid_ether_addr(addr->sa_data))
- return -EADDRNOTAVAIL;
-
- memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
-
- ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_CONFIG);
- pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES, 8, addr->sa_data);
- ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_NORAML);
-
- return 0;
-}
-
static void read_bulk_callback(struct urb *urb)
{
struct net_device *netdev;
--
1.9.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH net-next v2 2/2] r8152: use eth_hw_addr_random
2014-09-03 2:59 ` [PATCH net-next v2 0/2] r8152: random MAC address Hayes Wang
2014-09-03 2:59 ` [PATCH net-next v2 1/2] r8152: change the location of rtl8152_set_mac_address Hayes Wang
@ 2014-09-03 2:59 ` Hayes Wang
[not found] ` <1394712342-15778-31-Taiwan-albertk-Rasf1IRRPZFBDgjK7y7TUQ@public.gmane.org>
1 sibling, 1 reply; 9+ messages in thread
From: Hayes Wang @ 2014-09-03 2:59 UTC (permalink / raw)
To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb
If the hw doesn't have a valid MAC address, give a random one and
set it to the hw.
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
drivers/net/usb/r8152.c | 35 ++++++++++++++++++++---------------
1 file changed, 20 insertions(+), 15 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index b5ff933..443eb9e 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -992,32 +992,37 @@ static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
return 0;
}
-static inline void set_ethernet_addr(struct r8152 *tp)
+static int set_ethernet_addr(struct r8152 *tp)
{
struct net_device *dev = tp->netdev;
+ struct sockaddr sa;
int ret;
- u8 node_id[8] = {0};
if (tp->version == RTL_VER_01)
- ret = pla_ocp_read(tp, PLA_IDR, sizeof(node_id), node_id);
+ ret = pla_ocp_read(tp, PLA_IDR, 8, sa.sa_data);
else
- ret = pla_ocp_read(tp, PLA_BACKUP, sizeof(node_id), node_id);
+ ret = pla_ocp_read(tp, PLA_BACKUP, 8, sa.sa_data);
if (ret < 0) {
- netif_notice(tp, probe, dev, "inet addr fail\n");
+ netif_err(tp, probe, dev, "Get ether addr fail\n");
+ } else if (!is_valid_ether_addr(sa.sa_data)) {
+ netif_err(tp, probe, dev, "Invalid ether addr %pM\n",
+ sa.sa_data);
+ eth_hw_addr_random(dev);
+ ether_addr_copy(sa.sa_data, dev->dev_addr);
+ ret = rtl8152_set_mac_address(dev, &sa);
+ netif_info(tp, probe, dev, "Random ether addr %pM\n",
+ sa.sa_data);
} else {
- if (tp->version != RTL_VER_01) {
- ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR,
- CRWECR_CONFIG);
- pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES,
- sizeof(node_id), node_id);
- ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR,
- CRWECR_NORAML);
- }
+ if (tp->version == RTL_VER_01)
+ ether_addr_copy(dev->dev_addr, sa.sa_data);
+ else
+ ret = rtl8152_set_mac_address(dev, &sa);
- memcpy(dev->dev_addr, node_id, dev->addr_len);
- memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
+ ether_addr_copy(dev->perm_addr, dev->dev_addr);
}
+
+ return ret;
}
static void read_bulk_callback(struct urb *urb)
--
1.9.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net-next v2 2/2] r8152: use eth_hw_addr_random
[not found] ` <1394712342-15778-31-Taiwan-albertk-Rasf1IRRPZFBDgjK7y7TUQ@public.gmane.org>
@ 2014-09-03 8:33 ` Bjørn Mork
0 siblings, 0 replies; 9+ messages in thread
From: Bjørn Mork @ 2014-09-03 8:33 UTC (permalink / raw)
To: Hayes Wang
Cc: netdev-u79uwXL29TY76Z2rM5mHXA, nic_swsd-Rasf1IRRPZFBDgjK7y7TUQ,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-usb-u79uwXL29TY76Z2rM5mHXA
Hayes Wang <hayeswang-Rasf1IRRPZFBDgjK7y7TUQ@public.gmane.org> writes:
> + ether_addr_copy(dev->perm_addr, dev->dev_addr);
This isn't strictly necessary. register_netdev() will do it for you as
long as you leave the default addr_assign_type (NET_ADDR_PERM). And you
do.
Bjørn
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net-next v3 0/2] r8152: random MAC address
[not found] ` <1394712342-15778-32-Taiwan-albertk@realtek.com>
@ 2014-09-05 19:18 ` David Miller
0 siblings, 0 replies; 9+ messages in thread
From: David Miller @ 2014-09-05 19:18 UTC (permalink / raw)
To: hayeswang; +Cc: netdev, nic_swsd, linux-kernel, linux-usb
From: Hayes Wang <hayeswang@realtek.com>
Date: Thu, 4 Sep 2014 16:15:40 +0800
> If the interface has invalid MAC address, it couldn't
> be used. In order to let it work normally, give a
> random one.
>
> v3:
> Remove
> ether_addr_copy(dev->perm_addr, dev->dev_addr);
>
> v2:
> Use "%pM" format specifier for printing a MAC address.
Series applied, thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-09-05 19:18 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-02 9:55 [PATCH net-next 0/2] r8152: random MAC address Hayes Wang
2014-09-02 9:55 ` [PATCH net-next 1/2] r8152: change the location of rtl8152_set_mac_address Hayes Wang
2014-09-02 9:55 ` [PATCH net-next 2/2] r8152: use eth_hw_addr_random Hayes Wang
2014-09-02 12:53 ` Sergei Shtylyov
2014-09-03 2:59 ` [PATCH net-next v2 0/2] r8152: random MAC address Hayes Wang
2014-09-03 2:59 ` [PATCH net-next v2 1/2] r8152: change the location of rtl8152_set_mac_address Hayes Wang
2014-09-03 2:59 ` [PATCH net-next v2 2/2] r8152: use eth_hw_addr_random Hayes Wang
[not found] ` <1394712342-15778-31-Taiwan-albertk-Rasf1IRRPZFBDgjK7y7TUQ@public.gmane.org>
2014-09-03 8:33 ` Bjørn Mork
[not found] ` <1394712342-15778-32-Taiwan-albertk@realtek.com>
2014-09-05 19:18 ` [PATCH net-next v3 0/2] r8152: random MAC address David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).