mt76: unify {insert/remove}_hdr_pad
Merge insert/remove _hdr_pad from mt76x0 and mt76x2. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
493703aa9e
commit
0e59cba856
|
@ -2,6 +2,6 @@ obj-$(CONFIG_MT76x0U) += mt76x0.o
|
|||
|
||||
mt76x0-objs = \
|
||||
usb.o init.o main.o mcu.o trace.o dma.o eeprom.o phy.o \
|
||||
mac.o util.o debugfs.o tx.o
|
||||
mac.o debugfs.o tx.o
|
||||
# ccflags-y := -DDEBUG
|
||||
CFLAGS_trace.o := -I$(src)
|
||||
|
|
|
@ -245,10 +245,6 @@ void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
|
|||
void mt76x0_tx_status(struct mt76x0_dev *dev, struct sk_buff *skb);
|
||||
void mt76x0_tx_stat(struct work_struct *work);
|
||||
|
||||
/* util */
|
||||
void mt76x0_remove_hdr_pad(struct sk_buff *skb);
|
||||
int mt76x0_insert_hdr_pad(struct sk_buff *skb);
|
||||
|
||||
int mt76x0_dma_init(struct mt76x0_dev *dev);
|
||||
void mt76x0_dma_cleanup(struct mt76x0_dev *dev);
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
#include "mt76x0.h"
|
||||
#include "trace.h"
|
||||
#include "../mt76x02_util.h"
|
||||
|
||||
/* Take mac80211 Q id from the skb and translate it to hardware Q id */
|
||||
static u8 skb2q(struct sk_buff *skb)
|
||||
|
@ -35,7 +36,7 @@ static void mt76x0_tx_skb_remove_dma_overhead(struct sk_buff *skb,
|
|||
|
||||
skb_pull(skb, sizeof(struct mt76x02_txwi) + 4);
|
||||
if (ieee80211_get_hdrlen_from_skb(skb) % 4)
|
||||
mt76x0_remove_hdr_pad(skb);
|
||||
mt76x02_remove_hdr_pad(skb, 2);
|
||||
|
||||
skb_trim(skb, pkt_len);
|
||||
}
|
||||
|
@ -146,7 +147,7 @@ void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
|
|||
BUILD_BUG_ON(ARRAY_SIZE(info->status.status_driver_data) < 1);
|
||||
info->status.status_driver_data[0] = (void *)(unsigned long)pkt_len;
|
||||
|
||||
mt76x0_insert_hdr_pad(skb);
|
||||
mt76x02_insert_hdr_pad(skb);
|
||||
|
||||
if (sta) {
|
||||
msta = (struct mt76x02_sta *) sta->drv_priv;
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2
|
||||
* as published by the Free Software Foundation
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include "mt76x0.h"
|
||||
|
||||
void mt76x0_remove_hdr_pad(struct sk_buff *skb)
|
||||
{
|
||||
int len = ieee80211_get_hdrlen_from_skb(skb);
|
||||
|
||||
memmove(skb->data + 2, skb->data, len);
|
||||
skb_pull(skb, 2);
|
||||
}
|
||||
|
||||
int mt76x0_insert_hdr_pad(struct sk_buff *skb)
|
||||
{
|
||||
int len = ieee80211_get_hdrlen_from_skb(skb);
|
||||
int ret;
|
||||
|
||||
if (len % 4 == 0)
|
||||
return 0;
|
||||
|
||||
ret = skb_cow(skb, 2);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
skb_push(skb, 2);
|
||||
memmove(skb->data, skb->data + 2, len);
|
||||
|
||||
skb->data[len] = 0;
|
||||
skb->data[len + 1] = 0;
|
||||
return 0;
|
||||
}
|
|
@ -348,4 +348,33 @@ void mt76x02_sta_rate_tbl_update(struct ieee80211_hw *hw,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x02_sta_rate_tbl_update);
|
||||
|
||||
int mt76x02_insert_hdr_pad(struct sk_buff *skb)
|
||||
{
|
||||
int len = ieee80211_get_hdrlen_from_skb(skb);
|
||||
|
||||
if (len % 4 == 0)
|
||||
return 0;
|
||||
|
||||
skb_push(skb, 2);
|
||||
memmove(skb->data, skb->data + 2, len);
|
||||
|
||||
skb->data[len] = 0;
|
||||
skb->data[len + 1] = 0;
|
||||
return 2;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x02_insert_hdr_pad);
|
||||
|
||||
void mt76x02_remove_hdr_pad(struct sk_buff *skb, int len)
|
||||
{
|
||||
int hdrlen;
|
||||
|
||||
if (!len)
|
||||
return;
|
||||
|
||||
hdrlen = ieee80211_get_hdrlen_from_skb(skb);
|
||||
memmove(skb->data + len, skb->data, hdrlen);
|
||||
skb_pull(skb, len);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x02_remove_hdr_pad);
|
||||
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
|
|
|
@ -43,4 +43,6 @@ int mt76x02_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|||
void mt76x02_sta_rate_tbl_update(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta);
|
||||
int mt76x02_insert_hdr_pad(struct sk_buff *skb);
|
||||
void mt76x02_remove_hdr_pad(struct sk_buff *skb, int len);
|
||||
#endif
|
||||
|
|
|
@ -239,7 +239,6 @@ s8 mt76x2_tx_get_max_txpwr_adj(struct mt76_dev *dev,
|
|||
s8 mt76x2_tx_get_txpwr_adj(struct mt76x2_dev *dev, s8 txpwr, s8 max_txpwr_adj);
|
||||
void mt76x2_tx_set_txpwr_auto(struct mt76x2_dev *dev, s8 txpwr);
|
||||
|
||||
int mt76x2_insert_hdr_pad(struct sk_buff *skb);
|
||||
|
||||
void mt76x2_reset_wlan(struct mt76x2_dev *dev, bool enable);
|
||||
void mt76x2_init_txpower(struct mt76x2_dev *dev,
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
*/
|
||||
|
||||
#include "mt76x2.h"
|
||||
#include "mt76x02_util.h"
|
||||
|
||||
void mt76x2_mac_stop(struct mt76x2_dev *dev, bool force)
|
||||
{
|
||||
|
@ -146,18 +147,6 @@ void mt76x2_mac_write_txwi(struct mt76x2_dev *dev, struct mt76x02_txwi *txwi,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x2_mac_write_txwi);
|
||||
|
||||
static void mt76x2_remove_hdr_pad(struct sk_buff *skb, int len)
|
||||
{
|
||||
int hdrlen;
|
||||
|
||||
if (!len)
|
||||
return;
|
||||
|
||||
hdrlen = ieee80211_get_hdrlen_from_skb(skb);
|
||||
memmove(skb->data + len, skb->data, hdrlen);
|
||||
skb_pull(skb, len);
|
||||
}
|
||||
|
||||
int mt76x2_mac_get_rssi(struct mt76x2_dev *dev, s8 rssi, int chain)
|
||||
{
|
||||
struct mt76x2_rx_freq_cal *cal = &dev->cal.rx;
|
||||
|
@ -254,7 +243,7 @@ int mt76x2_mac_process_rx(struct mt76x2_dev *dev, struct sk_buff *skb,
|
|||
}
|
||||
}
|
||||
|
||||
mt76x2_remove_hdr_pad(skb, pad_len);
|
||||
mt76x02_remove_hdr_pad(skb, pad_len);
|
||||
|
||||
if ((rxinfo & MT_RXINFO_BA) && !(rxinfo & MT_RXINFO_NULL))
|
||||
status->aggr = true;
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "mt76x2.h"
|
||||
#include "mt76x2_dma.h"
|
||||
#include "mt76x02_util.h"
|
||||
|
||||
struct beacon_bc_data {
|
||||
struct mt76x2_dev *dev;
|
||||
|
@ -38,7 +39,7 @@ int mt76x2_tx_prepare_skb(struct mt76_dev *mdev, void *txwi,
|
|||
|
||||
mt76x2_mac_write_txwi(dev, txwi, skb, wcid, sta, skb->len);
|
||||
|
||||
ret = mt76x2_insert_hdr_pad(skb);
|
||||
ret = mt76x02_insert_hdr_pad(skb);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -47,22 +47,6 @@ void mt76x2_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x2_tx);
|
||||
|
||||
int mt76x2_insert_hdr_pad(struct sk_buff *skb)
|
||||
{
|
||||
int len = ieee80211_get_hdrlen_from_skb(skb);
|
||||
|
||||
if (len % 4 == 0)
|
||||
return 0;
|
||||
|
||||
skb_push(skb, 2);
|
||||
memmove(skb->data, skb->data + 2, len);
|
||||
|
||||
skb->data[len] = 0;
|
||||
skb->data[len + 1] = 0;
|
||||
return 2;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x2_insert_hdr_pad);
|
||||
|
||||
s8 mt76x2_tx_get_max_txpwr_adj(struct mt76_dev *mdev,
|
||||
const struct ieee80211_tx_rate *rate)
|
||||
{
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "mt76x2u.h"
|
||||
#include "dma.h"
|
||||
#include "mt76x02_util.h"
|
||||
|
||||
static void mt76x2u_remove_dma_hdr(struct sk_buff *skb)
|
||||
{
|
||||
|
@ -89,7 +90,7 @@ int mt76x2u_tx_prepare_skb(struct mt76_dev *mdev, void *data,
|
|||
if (err < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
mt76x2_insert_hdr_pad(skb);
|
||||
mt76x02_insert_hdr_pad(skb);
|
||||
|
||||
txwi = skb_push(skb, sizeof(struct mt76x02_txwi));
|
||||
mt76x2_mac_write_txwi(dev, txwi, skb, wcid, sta, len);
|
||||
|
|
Loading…
Reference in New Issue