};
struct devlink_port_attrs {
- u8 split:1,
- switch_port:1;
+ u8 split:1;
enum devlink_port_flavour flavour;
struct netdev_phys_item_id switch_id;
union {
enum devlink_port_type desired_type;
void *type_dev;
struct devlink_port_attrs attrs;
- u8 attrs_set:1;
+ u8 attrs_set:1,
+ switch_port:1;
struct delayed_work type_warn_dw;
};
devlink_port->attrs_set = true;
attrs->flavour = flavour;
if (switch_id) {
- attrs->switch_port = true;
+ devlink_port->switch_port = true;
if (WARN_ON(switch_id_len > MAX_PHYS_ITEM_ID_LEN))
switch_id_len = MAX_PHYS_ITEM_ID_LEN;
memcpy(attrs->switch_id.id, switch_id, switch_id_len);
attrs->switch_id.id_len = switch_id_len;
} else {
- attrs->switch_port = false;
+ devlink_port->switch_port = false;
}
return 0;
}
* any devlink lock as only permanent values are accessed.
*/
devlink_port = netdev_to_devlink_port(dev);
- if (!devlink_port || !devlink_port->attrs.switch_port)
+ if (!devlink_port || !devlink_port->switch_port)
return -EOPNOTSUPP;
memcpy(ppid, &devlink_port->attrs.switch_id, sizeof(*ppid));