Lines Matching refs:attr

78     struct nlattr *attr[WLAN_ATTR_SCAN_MAX + 1];

81 if (nla_parse(attr, WLAN_ATTR_SCAN_MAX, data, len, NULL) ||
82 attr[WLAN_ATTR_SCAN_STATUS] ||
83 !attr[WLAN_ATTR_SCAN_COOKIE]) {
87 status = nla_get_u8(attr[WLAN_ATTR_SCAN_STATUS]);
96 static void WifiEventVendorProcess(const char *ifName, struct nlattr **attr)
103 if (attr[NL80211_ATTR_VENDOR_ID] == NULL) {
107 if (attr[NL80211_ATTR_VENDOR_SUBCMD] == NULL) {
112 vendorId = nla_get_u32(attr[NL80211_ATTR_VENDOR_ID]);
113 subCmd = nla_get_u32(attr[NL80211_ATTR_VENDOR_SUBCMD]);
119 if (attr[NL80211_ATTR_VENDOR_DATA] == NULL) {
123 data = nla_data(attr[NL80211_ATTR_VENDOR_DATA]);
124 len = (uint32_t)nla_len(attr[NL80211_ATTR_VENDOR_DATA]);
129 static int32_t GetNlaDataScanResult(struct nlattr *attr[], int len, WifiScanResult *scanResult)
136 if (attr[NL80211_BSS_INFORMATION_ELEMENTS]) {
137 ie = nla_data(attr[NL80211_BSS_INFORMATION_ELEMENTS]);
138 scanResult->ieLen = (uint32_t)nla_len(attr[NL80211_BSS_INFORMATION_ELEMENTS]);
147 if (attr[NL80211_BSS_BEACON_IES]) {
148 beaconIe = nla_data(attr[NL80211_BSS_INFORMATION_ELEMENTS]);
149 scanResult->beaconIeLen = (uint32_t)nla_len(attr[NL80211_BSS_INFORMATION_ELEMENTS]);
159 if (attr[NL80211_BSS_BSSID]) {
160 bssid = nla_data(attr[NL80211_BSS_BSSID]);
172 static int32_t DoGetScanResult(struct nlattr *attr[], int len, WifiScanResult *scanResult)
174 if (GetNlaDataScanResult(attr, len, scanResult) != RET_CODE_SUCCESS) {
177 if (attr[NL80211_BSS_FREQUENCY]) {
178 scanResult->freq = nla_get_u32(attr[NL80211_BSS_FREQUENCY]);
180 if (attr[NL80211_BSS_BEACON_INTERVAL]) {
181 scanResult->beaconInt = nla_get_u16(attr[NL80211_BSS_BEACON_INTERVAL]);
183 if (attr[NL80211_BSS_CAPABILITY]) {
184 scanResult->caps = nla_get_u16(attr[NL80211_BSS_CAPABILITY]);
186 if (attr[NL80211_BSS_SIGNAL_MBM]) {
188 scanResult->level = (int32_t)nla_get_u32(attr[NL80211_BSS_SIGNAL_MBM]) / SIGNAL_LEVEL_CONFFICIENT;
190 } else if (attr[NL80211_BSS_SIGNAL_UNSPEC]) {
191 scanResult->level = (int32_t)nla_get_u8(attr[NL80211_BSS_SIGNAL_UNSPEC]);
196 if (attr[NL80211_BSS_TSF]) {
197 scanResult->tsf = nla_get_u64(attr[NL80211_BSS_TSF]);
199 if (attr[NL80211_BSS_BEACON_TSF]) {
200 uint64_t tsf = nla_get_u64(attr[NL80211_BSS_BEACON_TSF]);
205 if (attr[NL80211_BSS_SEEN_MS_AGO]) {
206 scanResult->age = nla_get_u32(attr[NL80211_BSS_SEEN_MS_AGO]);
217 struct nlattr *attr[NL80211_ATTR_MAX + 1], *bssAttr[NL80211_BSS_MAX + 1];
235 nla_parse(attr, NL80211_ATTR_MAX, genlmsg_attrdata(hdr, 0), genlmsg_attrlen(hdr, 0), NULL);
236 if (!attr[NL80211_ATTR_BSS]) {
240 if (nla_parse_nested(bssAttr, NL80211_BSS_MAX, attr[NL80211_ATTR_BSS], bssPolicy)) {
315 static void WifiEventDataFrameProcess(const char *ifName, struct nlattr **attr)
318 /* The outer function can ensure that attr is not empty */
319 if (ifName == NULL || attr[NL80211_ATTR_FRAME] == NULL) {
326 dataFrame.data = nla_data(attr[NL80211_ATTR_FRAME]);
327 dataFrame.dataLen = (uint32_t)nla_len(attr[NL80211_ATTR_FRAME]);
336 static void DoProcessEvent(const char *ifName, int cmd, struct nlattr **attr)
342 WifiEventVendorProcess(ifName, attr);
367 WifiEventTxStatus(ifName, attr);
371 WifiEventDataFrameProcess(ifName, attr);
384 struct nlattr *attr[NL80211_ATTR_MAX + 1];
390 nla_parse(attr, NL80211_ATTR_MAX, genlmsg_attrdata(hdr, 0),
393 if (attr[NL80211_ATTR_IFINDEX]) {
394 ifidx = nla_get_u32(attr[NL80211_ATTR_IFINDEX]);
408 DoProcessEvent(networkInfo.infos[i].name, hdr->cmd, attr);
453 struct nlattr *attr[NL80211_ATTR_MAX + 1];
455 nla_parse(attr, NL80211_ATTR_MAX, genlmsg_attrdata(hdr, 0),
461 if (attr[NL80211_ATTR_FRAME] == NULL) {
467 actionData.data = nla_data(attr[NL80211_ATTR_FRAME]);
468 actionData.dataLen = (uint32_t)nla_len(attr[NL80211_ATTR_FRAME]);