• Jason Wang's avatar
    virtio-net: synchronize operstate with admin state on up/down · df28de7b
    Jason Wang authored
    This patch synchronizes operstate with admin state per RFC2863.
    
    This is done by trying to toggle the carrier upon open/close and
    synchronize with the config change work. This allows to propagate
    status correctly to stacked devices like:
    
    ip link add link enp0s3 macvlan0 type macvlan
    ip link set link enp0s3 down
    ip link show
    
    Before this patch:
    
    3: enp0s3: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
        link/ether 00:00:05:00:00:09 brd ff:ff:ff:ff:ff:ff
    ......
    5: macvlan0@enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
        link/ether b2:a9:c5:04:da:53 brd ff:ff:ff:ff:ff:ff
    
    After this patch:
    
    3: enp0s3: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
        link/ether 00:00:05:00:00:09 brd ff:ff:ff:ff:ff:ff
    ...
    5: macvlan0@enp0s3: <NO-CARRIER,BROADCAST,MULTICAST,UP,M-DOWN> mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
        link/ether b2:a9:c5:04:da:53 brd ff:ff:ff:ff:ff:ff
    
    Cc: Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
    Cc: Gia-Khanh Nguyen <gia-khanh.nguyen@oracle.com>
    Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
    Link: https://patch.msgid.link/20240814052228.4654-4-jasowang@redhat.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    df28de7b
virtio_net.c 176 KB