Commit 252486a1 authored by Nishant Sarmukadam's avatar Nishant Sarmukadam Committed by John W. Linville

mwl8k: Modify add_dma_header to include pad parameters

Add capability to add_dma_header to support padding at tail of the data
packet to be transmitted when crypto is enabled. Padding is required for
adding crypto information in data packets for supporting 802.11 security
modes.
Signed-off-by: default avatarNishant Sarmukadam <nishants@marvell.com>
Signed-off-by: default avatarPradeep Nemavat <pnemavat@marvell.com>
Signed-off-by: default avatarThomas Pedersen <thomas@cozybit.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent c56eb8fb
...@@ -715,10 +715,12 @@ static inline void mwl8k_remove_dma_header(struct sk_buff *skb, __le16 qos) ...@@ -715,10 +715,12 @@ static inline void mwl8k_remove_dma_header(struct sk_buff *skb, __le16 qos)
skb_pull(skb, sizeof(*tr) - hdrlen); skb_pull(skb, sizeof(*tr) - hdrlen);
} }
static inline void mwl8k_add_dma_header(struct sk_buff *skb) static void
mwl8k_add_dma_header(struct sk_buff *skb, int tail_pad)
{ {
struct ieee80211_hdr *wh; struct ieee80211_hdr *wh;
int hdrlen; int hdrlen;
int reqd_hdrlen;
struct mwl8k_dma_data *tr; struct mwl8k_dma_data *tr;
/* /*
...@@ -730,11 +732,13 @@ static inline void mwl8k_add_dma_header(struct sk_buff *skb) ...@@ -730,11 +732,13 @@ static inline void mwl8k_add_dma_header(struct sk_buff *skb)
wh = (struct ieee80211_hdr *)skb->data; wh = (struct ieee80211_hdr *)skb->data;
hdrlen = ieee80211_hdrlen(wh->frame_control); hdrlen = ieee80211_hdrlen(wh->frame_control);
if (hdrlen != sizeof(*tr)) reqd_hdrlen = sizeof(*tr);
skb_push(skb, sizeof(*tr) - hdrlen);
if (hdrlen != reqd_hdrlen)
skb_push(skb, reqd_hdrlen - hdrlen);
if (ieee80211_is_data_qos(wh->frame_control)) if (ieee80211_is_data_qos(wh->frame_control))
hdrlen -= 2; hdrlen -= IEEE80211_QOS_CTL_LEN;
tr = (struct mwl8k_dma_data *)skb->data; tr = (struct mwl8k_dma_data *)skb->data;
if (wh != &tr->wh) if (wh != &tr->wh)
...@@ -747,7 +751,7 @@ static inline void mwl8k_add_dma_header(struct sk_buff *skb) ...@@ -747,7 +751,7 @@ static inline void mwl8k_add_dma_header(struct sk_buff *skb)
* payload". That is, everything except for the 802.11 header. * payload". That is, everything except for the 802.11 header.
* This includes all crypto material including the MIC. * This includes all crypto material including the MIC.
*/ */
tr->fwlen = cpu_to_le16(skb->len - sizeof(*tr)); tr->fwlen = cpu_to_le16(skb->len - sizeof(*tr) + tail_pad);
} }
...@@ -1443,7 +1447,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, int index, struct sk_buff *skb) ...@@ -1443,7 +1447,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, int index, struct sk_buff *skb)
else else
qos = 0; qos = 0;
mwl8k_add_dma_header(skb); mwl8k_add_dma_header(skb, 0);
wh = &((struct mwl8k_dma_data *)skb->data)->wh; wh = &((struct mwl8k_dma_data *)skb->data)->wh;
tx_info = IEEE80211_SKB_CB(skb); tx_info = IEEE80211_SKB_CB(skb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment