[third_party/bcmdhd] Extract BTM enum, constants.

In order to support firmware handling of BSS Transition Management
request handling, these constants and this enum are necessary for
the brcmfmac driver to configure and interact with Broadcom
firmware.

Bug: 111760
Test: none, change just adds some types.
Change-Id: I9737f8af95eddc70d429388de4d342d8f6d3850c
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/bcmdhd/+/738362
Reviewed-by: John Tan <johntan@google.com>
diff --git a/README.fuchsia b/README.fuchsia
index bbc9482..f892e4c 100644
--- a/README.fuchsia
+++ b/README.fuchsia
@@ -25,6 +25,9 @@
 * fxrev.dev/483877
   * Extracted ratespec parsing logic into crossdriver/dhd.h, crossdriver/dhd.cc, and
     crossdriver/include/devctrl_if/wlioctl_defs.h
+* fxrev.dev/738362
+  * Extracted enum and constants used for configuring firmware WNM support into
+    crossdriver/wlioctl.h and crossdriver/include/devctrl_if/wlioctl_defs.h
 
 Description:
 
diff --git a/crossdriver/include/devctrl_if/wlioctl_defs.h b/crossdriver/include/devctrl_if/wlioctl_defs.h
index eea8533..fbbaf96 100644
--- a/crossdriver/include/devctrl_if/wlioctl_defs.h
+++ b/crossdriver/include/devctrl_if/wlioctl_defs.h
@@ -58,4 +58,16 @@
 #define WL_RSPEC_BW_5MHZ 0x00060000
 #define WL_RSPEC_BW_2P5MHZ 0x00070000
 
+/* WNM/NPS subfeatures mask */
+#define WL_WNM_BSSTRANS 0x00000001
+#define WL_WNM_PROXYARP 0x00000002
+#define WL_WNM_MAXIDLE 0x00000004
+#define WL_WNM_TIMBC 0x00000008
+#define WL_WNM_TFS 0x00000010
+#define WL_WNM_SLEEP 0x00000020
+#define WL_WNM_DMS 0x00000040
+#define WL_WNM_FMS 0x00000080
+#define WL_WNM_NOTIF 0x00000100
+#define WL_WNM_MAX 0x00000200
+
 #endif  // THIRD_PARTY_BCMDHD_CROSSDRIVER_INCLUDE_DEVCTRL_IF_WLIOCTL_DEFS_H_
diff --git a/crossdriver/wlioctl.h b/crossdriver/wlioctl.h
index 5db24b8..ca1547a 100644
--- a/crossdriver/wlioctl.h
+++ b/crossdriver/wlioctl.h
@@ -631,4 +631,18 @@
 
 } wl_wme_cnt_t;
 
+/* "wnm_bsstrans_policy" argument programs behavior after BSSTRANS Req reception.
+ * BSS-Transition feature is used by multiple programs such as NPS-PF, VE-PF,
+ * Band-steering, Hotspot 2.0 and customer requirements. Each PF and its test plan
+ * mandates different behavior on receiving BSS-transition request. To accomodate
+ * such divergent behaviors these policies have been created.
+ */
+enum {
+  WL_BSSTRANS_POLICY_ROAM_ALWAYS = 0,  /* Roam (or disassociate) in all cases */
+  WL_BSSTRANS_POLICY_ROAM_IF_MODE = 1, /* Roam only if requested by Request Mode field */
+  WL_BSSTRANS_POLICY_ROAM_IF_PREF = 2, /* Roam only if Preferred BSS provided */
+  WL_BSSTRANS_POLICY_WAIT = 3,         /* Wait for deauth and send Accepted status */
+  WL_BSSTRANS_POLICY_PRODUCT = 4,      /* Policy for real product use cases (non-pf) */
+};
+
 #endif  // THIRD_PARTY_BCMDHD_CROSSDRIVER_WLIOCTL_H_