From dfabf1e5cbb2e9538ed0fbec9d5e6eb0998a14e5 Mon Sep 17 00:00:00 2001 From: Aditya Kodukula Date: Wed, 28 Jul 2021 15:40:28 -0700 Subject: [PATCH] QCA vendor command for mDNS offload Define a new vendor command for enabling/disabling mDNS offload. Signed-off-by: Jouni Malinen --- src/common/qca-vendor.h | 60 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/common/qca-vendor.h b/src/common/qca-vendor.h index 209b39638..d34f9892d 100644 --- a/src/common/qca-vendor.h +++ b/src/common/qca-vendor.h @@ -719,6 +719,10 @@ enum qca_radiotap_vendor_ids { * to get DFS radar history from the driver to userspace. The driver * returns QCA_WLAN_VENDOR_ATTR_RADAR_HISTORY_ENTRIES attribute with an * array of nested entries. + * + * @QCA_NL80211_VENDOR_SUBCMD_MDNS_OFFLOAD: Userspace can use this command to + * enable/disable mDNS offload to the firmware. The attributes used with + * this command are defined in enum qca_wlan_vendor_attr_mdns_offload. */ enum qca_nl80211_vendor_subcmds { QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0, @@ -908,6 +912,7 @@ enum qca_nl80211_vendor_subcmds { QCA_NL80211_VENDOR_SUBCMD_CONCURRENT_MULTI_STA_POLICY = 197, QCA_NL80211_VENDOR_SUBCMD_USABLE_CHANNELS = 198, QCA_NL80211_VENDOR_SUBCMD_GET_RADAR_HISTORY = 199, + QCA_NL80211_VENDOR_SUBCMD_MDNS_OFFLOAD = 200, }; enum qca_wlan_vendor_attr { @@ -11151,4 +11156,59 @@ enum qca_wlan_vendor_attr_radar_history { QCA_WLAN_VENDOR_ATTR_RADAR_HISTORY_LAST - 1, }; +/** + * enum qca_wlan_vendor_attr_mdns_offload - Attributes used by + * %QCA_NL80211_VENDOR_SUBCMD_MDNS_OFFLOAD vendor command. + * + * @QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ENABLE: Required (flag) + * Enable mDNS offload. This attribute is mandatory to enable + * mDNS offload feature. If this attribute is not present, mDNS offload + * is disabled. + * + * @QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_TABLE: Nested attribute containing + * one or more %QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ENTRY attributes. This + * attribute is mandatory when enabling the feature, and not required when + * disabling the feature. + * + * @QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ENTRY: Nested attribute containing + * the following attributes: + * %QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_FQDN + * %QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ANSWER_RESOURCE_RECORDS_COUNT + * %QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ANSWER_PAYLOAD + * + * @QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_FQDN: Required Null terminated string + * attribute. It consists of a hostname and ".local" as the domain name. + * The character set is limited to UTF-8 encoding. The maximum allowed size + * is 64 bytes. It is used to compare the domain in the "QU" query. + * Only 1 FQDN is supported per vdev. + * For example: myphone.local + * + * @QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ANSWER_RESOURCE_RECORDS_COUNT: Required + * u16 attribute. It specifies the total number of resource records present + * in the answer section of the answer payload. This attribute is needed by the + * firmware to populate the mDNS response frame for mDNS queries without having + * to parse the answer payload. + * + * @QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ANSWER_PAYLOAD: Required binary blob + * attribute sent by the mdnsResponder from userspace. It contains resource + * records of various types (e.g., A, AAAA, PTR, TXT) and service list. This + * payload is passed down to the firmware and is transmitted in response to + * mDNS queries. + * The maximum supported size of the answer payload is 1500 bytes. + */ +enum qca_wlan_vendor_attr_mdns_offload { + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_INVALID = 0, + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ENABLE = 1, + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_TABLE = 2, + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ENTRY = 3, + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_FQDN = 4, + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ANSWER_RESOURCE_RECORDS_COUNT = 5, + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_ANSWER_PAYLOAD = 6, + + /* keep last */ + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_AFTER_LAST, + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_MAX = + QCA_WLAN_VENDOR_ATTR_MDNS_OFFLOAD_AFTER_LAST - 1, +}; + #endif /* QCA_VENDOR_H */