diff options
author | Zhu Yi <yi.zhu@intel.com> | 2009-11-30 21:18:37 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-12-22 13:31:15 -0500 |
commit | eaf85ca7fecb218fc41ff57c1642ca73b097aabb (patch) | |
tree | ad7965715f0cd67fe8946980ae2d1e9f3ea231a1 /include/net | |
parent | ca99861d5421c91f5a8fd3a77acb4b7be14f119d (diff) |
wireless: add ieee80211_amsdu_to_8023s
Move the A-MSDU handling code from mac80211 to cfg80211 so that more
drivers can use it. The new created function ieee80211_amsdu_to_8023s
converts an A-MSDU frame to a list of 802.3 frames.
Cc: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/cfg80211.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 0884b9a0f778..542a477a94da 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -1578,7 +1578,7 @@ unsigned int ieee80211_hdrlen(__le16 fc); | |||
1578 | * @addr: the device MAC address | 1578 | * @addr: the device MAC address |
1579 | * @iftype: the virtual interface type | 1579 | * @iftype: the virtual interface type |
1580 | */ | 1580 | */ |
1581 | int ieee80211_data_to_8023(struct sk_buff *skb, u8 *addr, | 1581 | int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr, |
1582 | enum nl80211_iftype iftype); | 1582 | enum nl80211_iftype iftype); |
1583 | 1583 | ||
1584 | /** | 1584 | /** |
@@ -1589,10 +1589,28 @@ int ieee80211_data_to_8023(struct sk_buff *skb, u8 *addr, | |||
1589 | * @bssid: the network bssid (used only for iftype STATION and ADHOC) | 1589 | * @bssid: the network bssid (used only for iftype STATION and ADHOC) |
1590 | * @qos: build 802.11 QoS data frame | 1590 | * @qos: build 802.11 QoS data frame |
1591 | */ | 1591 | */ |
1592 | int ieee80211_data_from_8023(struct sk_buff *skb, u8 *addr, | 1592 | int ieee80211_data_from_8023(struct sk_buff *skb, const u8 *addr, |
1593 | enum nl80211_iftype iftype, u8 *bssid, bool qos); | 1593 | enum nl80211_iftype iftype, u8 *bssid, bool qos); |
1594 | 1594 | ||
1595 | /** | 1595 | /** |
1596 | * ieee80211_amsdu_to_8023s - decode an IEEE 802.11n A-MSDU frame | ||
1597 | * | ||
1598 | * Decode an IEEE 802.11n A-MSDU frame and convert it to a list of | ||
1599 | * 802.3 frames. The @list will be empty if the decode fails. The | ||
1600 | * @skb is consumed after the function returns. | ||
1601 | * | ||
1602 | * @skb: The input IEEE 802.11n A-MSDU frame. | ||
1603 | * @list: The output list of 802.3 frames. It must be allocated and | ||
1604 | * initialized by by the caller. | ||
1605 | * @addr: The device MAC address. | ||
1606 | * @iftype: The device interface type. | ||
1607 | * @extra_headroom: The hardware extra headroom for SKBs in the @list. | ||
1608 | */ | ||
1609 | void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list, | ||
1610 | const u8 *addr, enum nl80211_iftype iftype, | ||
1611 | const unsigned int extra_headroom); | ||
1612 | |||
1613 | /** | ||
1596 | * cfg80211_classify8021d - determine the 802.1p/1d tag for a data frame | 1614 | * cfg80211_classify8021d - determine the 802.1p/1d tag for a data frame |
1597 | * @skb: the data frame | 1615 | * @skb: the data frame |
1598 | */ | 1616 | */ |