From patchwork Thu Oct 11 14:18:24 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arend van Spriel X-Patchwork-Id: 1582641 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 75D6F3FCFC for ; Thu, 11 Oct 2012 16:19:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757453Ab2JKQSv (ORCPT ); Thu, 11 Oct 2012 12:18:51 -0400 Received: from mms3.broadcom.com ([216.31.210.19]:2889 "EHLO mms3.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751530Ab2JKQSr (ORCPT ); Thu, 11 Oct 2012 12:18:47 -0400 Received: from [10.9.200.131] by mms3.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Thu, 11 Oct 2012 07:15:38 -0700 X-Server-Uuid: B86B6450-0931-4310-942E-F00ED04CA7AF Received: from mail-irva-13.broadcom.com (10.11.16.103) by IRVEXCHHUB01.corp.ad.broadcom.com (10.9.200.131) with Microsoft SMTP Server id 8.2.247.2; Thu, 11 Oct 2012 07:18:27 -0700 Received: from mail-sj1-12.sj.broadcom.com (mail-sj1-12.sj.broadcom.com [10.17.16.106]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id D820340FE3; Thu, 11 Oct 2012 07:18:27 -0700 (PDT) Received: from arend-vb-pepper (unknown [10.176.68.25]) by mail-sj1-12.sj.broadcom.com (Postfix) with ESMTP id 61603207C0; Thu, 11 Oct 2012 07:18:27 -0700 (PDT) Received: from arend by arend-vb-pepper with local (Exim 4.76) ( envelope-from ) id 1TMJaj-0003m1-UX; Thu, 11 Oct 2012 16:18:25 +0200 From: "Arend van Spriel" To: "Johannes Berg" cc: linux-wireless@vger.kernel.org, "Arend van Spriel" Subject: [RFC] wireless: cfg80211: add peer-to-peer related definitions Date: Thu, 11 Oct 2012 16:18:24 +0200 Message-ID: <1349965104-14475-1-git-send-email-arend@broadcom.com> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 X-WSS-ID: 7C680B003PS4212399-01-01 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org The Peer-to-Peer IE is vendor-specific IE identified by WiFi Alliance OUI and specific P2P OUI type. The payload of this IE consists of so-called P2P attributes. This patch adds definitions for processing these attributes. Reviewed-by: Hante Meuleman Reviewed-by: Pieter-Paul Giesberts Reviewed-by: Franky (Zhenhui) Lin Signed-off-by: Arend van Spriel --- Hi Johannes, This patch is for 3.8. It applies to mac80211-next repository. Gr. AvS --- include/linux/ieee80211.h | 78 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 8c803f0..7c4c075 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -168,6 +168,9 @@ #define IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK 0x03 #define IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT 5 +/* Vendor-specific IE */ +#define IEEE80211_VENDOR_SPEC_IE 0xDD + #define IEEE80211_HT_CTL_LEN 4 struct ieee80211_hdr { @@ -905,6 +908,81 @@ struct ieee80211_tdls_data { } u; } __packed; +/* + * Peer-to-Peer IE attribute related definitions. + */ +/** + * enum ieee80211_p2p_attr_id - identifies type of peer-to-peer attribute. + */ +enum ieee80211_p2p_attr_id { + IEEE80211_P2P_ATTR_STATUS = 0, + IEEE80211_P2P_ATTR_MINOR_REASON, + IEEE80211_P2P_ATTR_CAPABILITY, + IEEE80211_P2P_ATTR_DEVICE_ID, + IEEE80211_P2P_ATTR_GO_INTENT, + IEEE80211_P2P_ATTR_GO_CONFIG_TIMEOUT, + IEEE80211_P2P_ATTR_LISTEN_CHANNEL, + IEEE80211_P2P_ATTR_GROUP_BSSID, + IEEE80211_P2P_ATTR_EXT_LISTEN_TIMING, + IEEE80211_P2P_ATTR_INTENDED_IFACE_ADDR, + IEEE80211_P2P_ATTR_MANAGABILITY, + IEEE80211_P2P_ATTR_CHANNEL_LIST, + IEEE80211_P2P_ATTR_ABSENCE_NOTICE, + IEEE80211_P2P_ATTR_DEVICE_INFO, + IEEE80211_P2P_ATTR_GROUP_INFO, + IEEE80211_P2P_ATTR_GROUP_ID, + IEEE80211_P2P_ATTR_INTERFACE, + IEEE80211_P2P_ATTR_OPER_CHANNEL, + IEEE80211_P2P_ATTR_INVITE_FLAGS, + /* 19 - 220: Reserved */ + IEEE80211_P2P_ATTR_VENDOR_SPECIFIC = 221, + + IEEE80211_P2P_ATTR_MAX +}; + +struct ieee80211_p2p_chan_attr { + u8 country[3]; + u8 class; + u8 channel; +} __packed; + +/** + * struct ieee80211_p2p_attribute - attributes in WFA P2P vendor specific IE. + * + * @id: identifier according enum ieee80211_p2p_attr_id. + * @length: length of data buffer mapped by @u. + * @u: union holding information for this peer-to-peer attribute. + */ +struct ieee80211_p2p_attribute { + u8 id; + __le16 length; + union { + u8 status; + u8 minor_reason; + struct { + u8 device; + u8 group; + } __packed cap; + u8 devid[6]; + u8 go_intent; + struct { + u8 group; + u8 client; + } __packed cfg_timeout; + struct ieee80211_p2p_chan_attr listen; + u8 bssid[6]; + struct { + __le16 period; + __le16 interval; + } __packed listen_availability; + u8 ifc_addr[6]; + u8 managability; + struct ieee80211_p2p_chan_attr operating; + u8 invitation; + u8 var_attr[0]; + } u; +} __packed; + /** * struct ieee80211_bar - HT Block Ack Request *