|
@@ -1766,16 +1766,20 @@ static int ehea_set_mac_addr(struct net_device *dev, void *sa)
|
|
mutex_lock(&ehea_bcmc_regs.lock);
|
|
mutex_lock(&ehea_bcmc_regs.lock);
|
|
|
|
|
|
/* Deregister old MAC in pHYP */
|
|
/* Deregister old MAC in pHYP */
|
|
- ret = ehea_broadcast_reg_helper(port, H_DEREG_BCMC);
|
|
|
|
- if (ret)
|
|
|
|
- goto out_upregs;
|
|
|
|
|
|
+ if (port->state == EHEA_PORT_UP) {
|
|
|
|
+ ret = ehea_broadcast_reg_helper(port, H_DEREG_BCMC);
|
|
|
|
+ if (ret)
|
|
|
|
+ goto out_upregs;
|
|
|
|
+ }
|
|
|
|
|
|
port->mac_addr = cb0->port_mac_addr << 16;
|
|
port->mac_addr = cb0->port_mac_addr << 16;
|
|
|
|
|
|
/* Register new MAC in pHYP */
|
|
/* Register new MAC in pHYP */
|
|
- ret = ehea_broadcast_reg_helper(port, H_REG_BCMC);
|
|
|
|
- if (ret)
|
|
|
|
- goto out_upregs;
|
|
|
|
|
|
+ if (port->state == EHEA_PORT_UP) {
|
|
|
|
+ ret = ehea_broadcast_reg_helper(port, H_REG_BCMC);
|
|
|
|
+ if (ret)
|
|
|
|
+ goto out_upregs;
|
|
|
|
+ }
|
|
|
|
|
|
ret = 0;
|
|
ret = 0;
|
|
|
|
|