The commit d3ab3ffd1d728d7ee77340e7e7e2c7cfe6a4013e (bonding: use rlb_client_info->vlan_id instead of ->tag) remove the rlb_client_info->tag, but occur some issues, The vlan_get_tag() will return 0 for success and -EINVAL for error, so the client_info->vlan_id always be set to 0 if the vlan_get_tag return 0 for success, so the client_info would never get a correct vlan id. We should only set the vlan id to 0 when the vlan_get_tag return error. Fixes: d3ab3ffd1d7 (bonding: use rlb_client_info->vlan_id instead of ->tag)
Unified · Split
| @@ -730,7 +730,7 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon · 729 unmodified lines | ||
| 730 | 730 | client_info->ntt = 0; |
| 731 | 731 | } |
| 732 | 732 | |
| 733 | − if (!vlan_get_tag(skb, &client_info->vlan_id)) | |
| 733 | + if (vlan_get_tag(skb, &client_info->vlan_id)) | |
| 734 | 734 | client_info->vlan_id = 0; |
| 735 | 735 | |
| 736 | 736 | if (!client_info->assigned) { |