skbuff/mac80211: introduce and use skb_put_zero()
This pattern was introduced a number of times in mac80211 just now, and since it's present in a number of other places it makes sense to add a little helper for it. This just adds the helper and transforms the mac80211 code, a later patch will transform other places. Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -1937,6 +1937,15 @@ static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
|
|||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline unsigned char *skb_put_zero(struct sk_buff *skb, unsigned int len)
|
||||||
|
{
|
||||||
|
unsigned char *tmp = skb_put(skb, len);
|
||||||
|
|
||||||
|
memset(tmp, 0, len);
|
||||||
|
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned char *skb_push(struct sk_buff *skb, unsigned int len);
|
unsigned char *skb_push(struct sk_buff *skb, unsigned int len);
|
||||||
static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
|
static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
|
||||||
{
|
{
|
||||||
|
@@ -744,8 +744,7 @@ ieee80211_mesh_build_beacon(struct ieee80211_if_mesh *ifmsh)
|
|||||||
int ie_len = 2 + sizeof(struct ieee80211_channel_sw_ie) +
|
int ie_len = 2 + sizeof(struct ieee80211_channel_sw_ie) +
|
||||||
2 + sizeof(struct ieee80211_mesh_chansw_params_ie);
|
2 + sizeof(struct ieee80211_mesh_chansw_params_ie);
|
||||||
|
|
||||||
pos = skb_put(skb, ie_len);
|
pos = skb_put_zero(skb, ie_len);
|
||||||
memset(pos, 0, ie_len);
|
|
||||||
*pos++ = WLAN_EID_CHANNEL_SWITCH;
|
*pos++ = WLAN_EID_CHANNEL_SWITCH;
|
||||||
*pos++ = 3;
|
*pos++ = 3;
|
||||||
*pos++ = 0x0;
|
*pos++ = 0x0;
|
||||||
@@ -772,8 +771,7 @@ ieee80211_mesh_build_beacon(struct ieee80211_if_mesh *ifmsh)
|
|||||||
switch (csa->settings.chandef.width) {
|
switch (csa->settings.chandef.width) {
|
||||||
case NL80211_CHAN_WIDTH_40:
|
case NL80211_CHAN_WIDTH_40:
|
||||||
ie_len = 2 + sizeof(struct ieee80211_sec_chan_offs_ie);
|
ie_len = 2 + sizeof(struct ieee80211_sec_chan_offs_ie);
|
||||||
pos = skb_put(skb, ie_len);
|
pos = skb_put_zero(skb, ie_len);
|
||||||
memset(pos, 0, ie_len);
|
|
||||||
|
|
||||||
*pos++ = WLAN_EID_SECONDARY_CHANNEL_OFFSET; /* EID */
|
*pos++ = WLAN_EID_SECONDARY_CHANNEL_OFFSET; /* EID */
|
||||||
*pos++ = 1; /* len */
|
*pos++ = 1; /* len */
|
||||||
@@ -789,8 +787,7 @@ ieee80211_mesh_build_beacon(struct ieee80211_if_mesh *ifmsh)
|
|||||||
/* Channel Switch Wrapper + Wide Bandwidth CSA IE */
|
/* Channel Switch Wrapper + Wide Bandwidth CSA IE */
|
||||||
ie_len = 2 + 2 +
|
ie_len = 2 + 2 +
|
||||||
sizeof(struct ieee80211_wide_bw_chansw_ie);
|
sizeof(struct ieee80211_wide_bw_chansw_ie);
|
||||||
pos = skb_put(skb, ie_len);
|
pos = skb_put_zero(skb, ie_len);
|
||||||
memset(pos, 0, ie_len);
|
|
||||||
|
|
||||||
*pos++ = WLAN_EID_CHANNEL_SWITCH_WRAPPER; /* EID */
|
*pos++ = WLAN_EID_CHANNEL_SWITCH_WRAPPER; /* EID */
|
||||||
*pos++ = 5; /* len */
|
*pos++ = 5; /* len */
|
||||||
|
@@ -264,8 +264,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
|
|||||||
band = sband->band;
|
band = sband->band;
|
||||||
|
|
||||||
/* capability info */
|
/* capability info */
|
||||||
pos = skb_put(skb, 2);
|
pos = skb_put_zero(skb, 2);
|
||||||
memset(pos, 0, 2);
|
|
||||||
if (action == WLAN_SP_MESH_PEERING_CONFIRM) {
|
if (action == WLAN_SP_MESH_PEERING_CONFIRM) {
|
||||||
/* AID */
|
/* AID */
|
||||||
pos = skb_put(skb, 2);
|
pos = skb_put(skb, 2);
|
||||||
|
Reference in New Issue
Block a user