s390/qeth: fix using of ref counter for rxip addresses
IP-address setting and removal are delayed when the device is not yet in state SOFTSETUP or UP. ref_counter has been implemented only for ip-address with type normal. In this patch ref_counter logic is also used for ip-address with type rxip to allow appropriate handling of multiple postponed rxip add and del calls. Signed-off-by: Kittipon Meesompop <kmeesomp@linux.vnet.ibm.com> Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ea4ae35a82
commit
cb816192d9
|
@ -247,7 +247,8 @@ int qeth_l3_delete_ip(struct qeth_card *card, struct qeth_ipaddr *tmp_addr)
|
|||
return -ENOENT;
|
||||
|
||||
addr->ref_counter--;
|
||||
if (addr->type == QETH_IP_TYPE_NORMAL && addr->ref_counter > 0)
|
||||
if (addr->ref_counter > 0 && (addr->type == QETH_IP_TYPE_NORMAL ||
|
||||
addr->type == QETH_IP_TYPE_RXIP))
|
||||
return rc;
|
||||
if (addr->in_progress)
|
||||
return -EINPROGRESS;
|
||||
|
@ -329,8 +330,9 @@ int qeth_l3_add_ip(struct qeth_card *card, struct qeth_ipaddr *tmp_addr)
|
|||
kfree(addr);
|
||||
}
|
||||
} else {
|
||||
if (addr->type == QETH_IP_TYPE_NORMAL)
|
||||
addr->ref_counter++;
|
||||
if (addr->type == QETH_IP_TYPE_NORMAL ||
|
||||
addr->type == QETH_IP_TYPE_RXIP)
|
||||
addr->ref_counter++;
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
|
Loading…
Reference in New Issue