enum devlink_port_flavour flavour,
                            u32 port_number, bool split,
                            u32 split_subport_number);
+int devlink_port_get_phys_port_name(struct devlink_port *devlink_port,
+                                   char *name, size_t len);
 int devlink_sb_register(struct devlink *devlink, unsigned int sb_index,
                        u32 size, u16 ingress_pools_count,
                        u16 egress_pools_count, u16 ingress_tc_count,
 {
 }
 
+static inline int
+devlink_port_get_phys_port_name(struct devlink_port *devlink_port,
+                               char *name, size_t len)
+{
+       return -EOPNOTSUPP;
+}
+
 static inline int devlink_sb_register(struct devlink *devlink,
                                      unsigned int sb_index, u32 size,
                                      u16 ingress_pools_count,
 
 }
 EXPORT_SYMBOL_GPL(devlink_port_attrs_set);
 
+int devlink_port_get_phys_port_name(struct devlink_port *devlink_port,
+                                   char *name, size_t len)
+{
+       struct devlink_port_attrs *attrs = &devlink_port->attrs;
+       int n = 0;
+
+       if (!attrs->set)
+               return -EOPNOTSUPP;
+
+       switch (attrs->flavour) {
+       case DEVLINK_PORT_FLAVOUR_PHYSICAL:
+               if (!attrs->split)
+                       n = snprintf(name, len, "p%u", attrs->port_number);
+               else
+                       n = snprintf(name, len, "p%us%u", attrs->port_number,
+                                    attrs->split_subport_number);
+               break;
+       case DEVLINK_PORT_FLAVOUR_CPU:
+       case DEVLINK_PORT_FLAVOUR_DSA:
+               /* As CPU and DSA ports do not have a netdevice associated
+                * case should not ever happen.
+                */
+               WARN_ON(1);
+               return -EINVAL;
+       }
+
+       if (n >= len)
+               return -EINVAL;
+
+       return 0;
+}
+EXPORT_SYMBOL_GPL(devlink_port_get_phys_port_name);
+
 int devlink_sb_register(struct devlink *devlink, unsigned int sb_index,
                        u32 size, u16 ingress_pools_count,
                        u16 egress_pools_count, u16 ingress_tc_count,