the bridge's FDB.  It's possible, but not optimal, to enable learning on the
 device port and on the bridge port, and disable learning_sync.
 
-To support learning and learning_sync port attributes, the driver implements
-switchdev op switchdev_port_attr_get/set for
-SWITCHDEV_ATTR_PORT_ID_BRIDGE_FLAGS. The driver should initialize the attributes
-to the hardware defaults.
+To support learning, the driver implements switchdev op
+switchdev_port_attr_get/set for SWITCHDEV_ATTR_PORT_ID_BRIDGE_FLAGS.
 
 FDB Ageing
 ^^^^^^^^^^
 
 static int mlxsw_sp_port_attr_get(struct net_device *dev,
                                  struct switchdev_attr *attr)
 {
-       switch (attr->id) {
-       case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT:
-               attr->u.brport_flags_support = BR_LEARNING | BR_FLOOD |
-                                              BR_MCAST_FLOOD;
-               break;
-       default:
-               return -EOPNOTSUPP;
-       }
-
-       return 0;
+       return -EOPNOTSUPP;
 }
 
 static int
 
 static int rocker_port_attr_get(struct net_device *dev,
                                struct switchdev_attr *attr)
 {
-       const struct rocker_port *rocker_port = netdev_priv(dev);
-       int err = 0;
-
-       switch (attr->id) {
-       case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT:
-               err = rocker_world_port_attr_bridge_flags_support_get(rocker_port,
-                                                                     &attr->u.brport_flags_support);
-               break;
-       default:
-               return -EOPNOTSUPP;
-       }
-
-       return err;
+       return -EOPNOTSUPP;
 }
 
 static int rocker_port_attr_set(struct net_device *dev,
 
 static int swdev_port_attr_get(struct net_device *netdev,
                               struct switchdev_attr *attr)
 {
-       switch (attr->id) {
-       case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT:
-               attr->u.brport_flags_support = BR_LEARNING | BR_FLOOD;
-               break;
-       default:
-               return -EOPNOTSUPP;
-       }
-
-       return 0;
+       return -EOPNOTSUPP;
 }
 
 static int port_attr_stp_state_set(struct net_device *netdev,
 
        SWITCHDEV_ATTR_ID_UNDEFINED,
        SWITCHDEV_ATTR_ID_PORT_STP_STATE,
        SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS,
-       SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT,
        SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS,
        SWITCHDEV_ATTR_ID_PORT_MROUTER,
        SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME,
        union {
                u8 stp_state;                           /* PORT_STP_STATE */
                unsigned long brport_flags;             /* PORT_{PRE}_BRIDGE_FLAGS */
-               unsigned long brport_flags_support;     /* PORT_BRIDGE_FLAGS_SUPPORT */
                bool mrouter;                           /* PORT_MROUTER */
                clock_t ageing_time;                    /* BRIDGE_AGEING_TIME */
                bool vlan_filtering;                    /* BRIDGE_VLAN_FILTERING */
 
 static int dsa_slave_port_attr_get(struct net_device *dev,
                                   struct switchdev_attr *attr)
 {
-       struct dsa_port *dp = dsa_slave_to_port(dev);
-       struct dsa_switch *ds = dp->ds;
-
-       switch (attr->id) {
-       case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT:
-               attr->u.brport_flags_support = 0;
-               if (ds->ops->port_egress_floods)
-                       attr->u.brport_flags_support |= BR_FLOOD |
-                                                       BR_MCAST_FLOOD;
-               break;
-       default:
-               return -EOPNOTSUPP;
-       }
-
-       return 0;
+       return -EOPNOTSUPP;
 }
 
 static inline netdev_tx_t dsa_slave_netpoll_send_skb(struct net_device *dev,