ICE_FLAG_FD_ENA,
        ICE_FLAG_ADV_FEATURES,
        ICE_FLAG_LINK_DOWN_ON_CLOSE_ENA,
+       ICE_FLAG_TOTAL_PORT_SHUTDOWN_ENA,
        ICE_FLAG_NO_MEDIA,
        ICE_FLAG_FW_LLDP_AGENT,
        ICE_FLAG_ETHTOOL_CTXT,          /* set when ethtool holds RTNL lock */
 
 
        bitmap_xor(change_flags, pf->flags, orig_flags, ICE_PF_FLAGS_NBITS);
 
+       /* Do not allow change to link-down-on-close when Total Port Shutdown
+        * is enabled.
+        */
+       if (test_bit(ICE_FLAG_LINK_DOWN_ON_CLOSE_ENA, change_flags) &&
+           test_bit(ICE_FLAG_TOTAL_PORT_SHUTDOWN_ENA, pf->flags)) {
+               dev_err(dev, "Setting link-down-on-close not supported on this port\n");
+               set_bit(ICE_FLAG_LINK_DOWN_ON_CLOSE_ENA, pf->flags);
+               ret = -EINVAL;
+               goto ethtool_exit;
+       }
+
        if (test_bit(ICE_FLAG_FW_LLDP_AGENT, change_flags)) {
                if (!test_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags)) {
                        enum ice_status status;
                change_bit(ICE_FLAG_VF_TRUE_PROMISC_ENA, pf->flags);
                ret = -EAGAIN;
        }
+ethtool_exit:
        clear_bit(ICE_FLAG_ETHTOOL_CTXT, pf->flags);
        return ret;
 }
 
 /**
  * ice_init_link_dflt_override - Initialize link default override
  * @pi: port info structure
+ *
+ * Initialize link default override and PHY total port shutdown during probe
  */
 static void ice_init_link_dflt_override(struct ice_port_info *pi)
 {
        struct ice_pf *pf = pi->hw->back;
 
        ldo = &pf->link_dflt_override;
-       ice_get_link_default_override(ldo, pi);
+       if (ice_get_link_default_override(ldo, pi))
+               return;
+
+       if (!(ldo->options & ICE_LINK_OVERRIDE_PORT_DIS))
+               return;
+
+       /* Enable Total Port Shutdown (override/replace link-down-on-close
+        * ethtool private flag) for ports with Port Disable bit set.
+        */
+       set_bit(ICE_FLAG_TOTAL_PORT_SHUTDOWN_ENA, pf->flags);
+       set_bit(ICE_FLAG_LINK_DOWN_ON_CLOSE_ENA, pf->flags);
 }
 
 /**