|
@@ -7458,6 +7458,8 @@ static int hdd_unmap_req_id_to_pattern_id(struct hdd_context *hdd_ctx,
|
|
|
#define PARAM_DST_MAC_ADDR \
|
|
|
QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_DST_MAC_ADDR
|
|
|
#define PARAM_PERIOD QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_PERIOD
|
|
|
+#define PARAM_PROTO_TYPE \
|
|
|
+ QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_ETHER_PROTO_TYPE
|
|
|
|
|
|
/**
|
|
|
* wlan_hdd_add_tx_ptrn() - add tx pattern
|
|
@@ -7507,6 +7509,7 @@ wlan_hdd_add_tx_ptrn(struct hdd_adapter *adapter, struct hdd_context *hdd_ctx,
|
|
|
hdd_err("attr period failed");
|
|
|
goto fail;
|
|
|
}
|
|
|
+
|
|
|
add_req->usPtrnIntervalMs = nla_get_u32(tb[PARAM_PERIOD]);
|
|
|
hdd_debug("Period: %u ms", add_req->usPtrnIntervalMs);
|
|
|
if (add_req->usPtrnIntervalMs == 0) {
|
|
@@ -7552,6 +7555,13 @@ wlan_hdd_add_tx_ptrn(struct hdd_adapter *adapter, struct hdd_context *hdd_ctx,
|
|
|
goto fail;
|
|
|
}
|
|
|
|
|
|
+ if (!tb[PARAM_PROTO_TYPE])
|
|
|
+ eth_type = htons(ETH_P_IP);
|
|
|
+ else
|
|
|
+ eth_type = htons(nla_get_u16(tb[PARAM_PROTO_TYPE]));
|
|
|
+
|
|
|
+ hdd_debug("packet proto type: %u", eth_type);
|
|
|
+
|
|
|
len = 0;
|
|
|
qdf_mem_copy(&add_req->ucPattern[0], dst_addr.bytes, QDF_MAC_ADDR_SIZE);
|
|
|
len += QDF_MAC_ADDR_SIZE;
|
|
@@ -7689,6 +7699,7 @@ __wlan_hdd_cfg80211_offloaded_packets(struct wiphy *wiphy,
|
|
|
[PARAM_DST_MAC_ADDR] = { .type = NLA_BINARY,
|
|
|
.len = QDF_MAC_ADDR_SIZE },
|
|
|
[PARAM_PERIOD] = { .type = NLA_U32 },
|
|
|
+ [PARAM_PROTO_TYPE] = {.type = NLA_U16},
|
|
|
};
|
|
|
|
|
|
hdd_enter_dev(dev);
|
|
@@ -7739,6 +7750,7 @@ __wlan_hdd_cfg80211_offloaded_packets(struct wiphy *wiphy,
|
|
|
#undef PARAM_SRC_MAC_ADDR
|
|
|
#undef PARAM_DST_MAC_ADDR
|
|
|
#undef PARAM_PERIOD
|
|
|
+#undef PARAM_PROTO_TYPE
|
|
|
|
|
|
/**
|
|
|
* wlan_hdd_cfg80211_offloaded_packets() - Wrapper to offload packets
|