* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
  * Copyright 2013-2014 Intel Mobile Communications GmbH
  * Copyright 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2020 Intel Corporation
+ * Copyright (C) 2018-2021 Intel Corporation
  */
 
 #include <linux/ethtool.h>
  *              If neither @trigger_based nor @non_trigger_based is set,
  *              EDCA based ranging will be used.
  * @lmr_feedback: negotiate for I2R LMR feedback. Only valid if either
- *     @trigger_based or @non_trigger_based is set.
+ *              @trigger_based or @non_trigger_based is set.
+ * @bss_color: the bss color of the responder. Optional. Set to zero to
+ *     indicate the driver should set the BSS color. Only valid if
+ *     @non_trigger_based or @trigger_based is set.
  *
  * See also nl80211 for the respective attribute documentation.
  */
        u8 burst_duration;
        u8 ftms_per_burst;
        u8 ftmr_retries;
+       u8 bss_color;
 };
 
 /**
 
  * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
  * Copyright 2008 Colin McCabe <colin@cozybit.com>
  * Copyright 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2020 Intel Corporation
+ * Copyright (C) 2018-2021 Intel Corporation
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * @NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK: negotiate for LMR feedback. Only
  *     valid if either %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED or
  *     %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set.
+ * @NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR: optional. The BSS color of the
+ *     responder. Only valid if %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED
+ *     or %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED is set.
  *
  * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal
  * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number
        NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED,
        NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED,
        NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK,
+       NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR,
 
        /* keep last */
        NUM_NL80211_PMSR_FTM_REQ_ATTR,
 
                return -EINVAL;
        }
 
+       if (tb[NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR]) {
+               if (!out->ftm.non_trigger_based && !out->ftm.trigger_based) {
+                       NL_SET_ERR_MSG_ATTR(info->extack,
+                                           tb[NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR],
+                                           "FTM: BSS color set for EDCA based ranging");
+                       return -EINVAL;
+               }
+
+               out->ftm.bss_color =
+                       nla_get_u8(tb[NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR]);
+       }
+
        return 0;
 }