Skip to content

Commit

Permalink
mwl8k: Modify add_dma_header to include pad parameters
Browse files Browse the repository at this point in the history
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: Nishant Sarmukadam <nishants@marvell.com>
Signed-off-by: Pradeep Nemavat <pnemavat@marvell.com>
Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Nishant Sarmukadam authored and John W. Linville committed Jan 19, 2011
1 parent c56eb8f commit 252486a
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions drivers/net/wireless/mwl8k.c
Original file line number Diff line number Diff line change
Expand Up @@ -715,10 +715,12 @@ static inline void mwl8k_remove_dma_header(struct sk_buff *skb, __le16 qos)
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;
int hdrlen;
int reqd_hdrlen;
struct mwl8k_dma_data *tr;

/*
Expand All @@ -730,11 +732,13 @@ static inline void mwl8k_add_dma_header(struct sk_buff *skb)
wh = (struct ieee80211_hdr *)skb->data;

hdrlen = ieee80211_hdrlen(wh->frame_control);
if (hdrlen != sizeof(*tr))
skb_push(skb, sizeof(*tr) - hdrlen);
reqd_hdrlen = sizeof(*tr);

if (hdrlen != reqd_hdrlen)
skb_push(skb, reqd_hdrlen - hdrlen);

if (ieee80211_is_data_qos(wh->frame_control))
hdrlen -= 2;
hdrlen -= IEEE80211_QOS_CTL_LEN;

tr = (struct mwl8k_dma_data *)skb->data;
if (wh != &tr->wh)
Expand All @@ -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.
* 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);
}


Expand Down Expand Up @@ -1443,7 +1447,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, int index, struct sk_buff *skb)
else
qos = 0;

mwl8k_add_dma_header(skb);
mwl8k_add_dma_header(skb, 0);
wh = &((struct mwl8k_dma_data *)skb->data)->wh;

tx_info = IEEE80211_SKB_CB(skb);
Expand Down

0 comments on commit 252486a

Please sign in to comment.