You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
This commit is contained in:
@@ -101,7 +101,7 @@ void bcma_chipco_bcm4331_ext_pa_lines_ctl(struct bcma_drv_cc *cc, bool enable)
|
||||
bcma_cc_write32(cc, BCMA_CC_CHIPCTL, val);
|
||||
}
|
||||
|
||||
void bcma_pmu_workarounds(struct bcma_drv_cc *cc)
|
||||
static void bcma_pmu_workarounds(struct bcma_drv_cc *cc)
|
||||
{
|
||||
struct bcma_bus *bus = cc->core->bus;
|
||||
|
||||
@@ -257,7 +257,7 @@ static u32 bcma_pmu_clock_bcm4706(struct bcma_drv_cc *cc, u32 pll0, u32 m)
|
||||
}
|
||||
|
||||
/* query bus clock frequency for PMU-enabled chipcommon */
|
||||
u32 bcma_pmu_get_clockcontrol(struct bcma_drv_cc *cc)
|
||||
static u32 bcma_pmu_get_clockcontrol(struct bcma_drv_cc *cc)
|
||||
{
|
||||
struct bcma_bus *bus = cc->core->bus;
|
||||
|
||||
|
||||
@@ -77,8 +77,8 @@ static void bcma_host_pci_write32(struct bcma_device *core, u16 offset,
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BCMA_BLOCKIO
|
||||
void bcma_host_pci_block_read(struct bcma_device *core, void *buffer,
|
||||
size_t count, u16 offset, u8 reg_width)
|
||||
static void bcma_host_pci_block_read(struct bcma_device *core, void *buffer,
|
||||
size_t count, u16 offset, u8 reg_width)
|
||||
{
|
||||
void __iomem *addr = core->bus->mmio + offset;
|
||||
if (core->bus->mapped_core != core)
|
||||
@@ -100,8 +100,9 @@ void bcma_host_pci_block_read(struct bcma_device *core, void *buffer,
|
||||
}
|
||||
}
|
||||
|
||||
void bcma_host_pci_block_write(struct bcma_device *core, const void *buffer,
|
||||
size_t count, u16 offset, u8 reg_width)
|
||||
static void bcma_host_pci_block_write(struct bcma_device *core,
|
||||
const void *buffer, size_t count,
|
||||
u16 offset, u8 reg_width)
|
||||
{
|
||||
void __iomem *addr = core->bus->mmio + offset;
|
||||
if (core->bus->mapped_core != core)
|
||||
@@ -139,7 +140,7 @@ static void bcma_host_pci_awrite32(struct bcma_device *core, u16 offset,
|
||||
iowrite32(value, core->bus->mmio + (1 * BCMA_CORE_SIZE) + offset);
|
||||
}
|
||||
|
||||
const struct bcma_host_ops bcma_host_pci_ops = {
|
||||
static const struct bcma_host_ops bcma_host_pci_ops = {
|
||||
.read8 = bcma_host_pci_read8,
|
||||
.read16 = bcma_host_pci_read16,
|
||||
.read32 = bcma_host_pci_read32,
|
||||
|
||||
@@ -143,7 +143,7 @@ static void bcma_host_soc_awrite32(struct bcma_device *core, u16 offset,
|
||||
writel(value, core->io_wrap + offset);
|
||||
}
|
||||
|
||||
const struct bcma_host_ops bcma_host_soc_ops = {
|
||||
static const struct bcma_host_ops bcma_host_soc_ops = {
|
||||
.read8 = bcma_host_soc_read8,
|
||||
.read16 = bcma_host_soc_read16,
|
||||
.read32 = bcma_host_soc_read32,
|
||||
|
||||
@@ -177,7 +177,7 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
|
||||
if (intf->cur_altsetting->desc.bInterfaceNumber != 0)
|
||||
return -ENODEV;
|
||||
|
||||
data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||
data = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL);
|
||||
if (!data) {
|
||||
BT_ERR("Can't allocate memory for data structure");
|
||||
return -ENOMEM;
|
||||
@@ -189,14 +189,12 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
|
||||
data->urb = usb_alloc_urb(0, GFP_KERNEL);
|
||||
if (!data->urb) {
|
||||
BT_ERR("Can't allocate URB");
|
||||
kfree(data);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (request_firmware(&firmware, "BCM2033-MD.hex", &udev->dev) < 0) {
|
||||
BT_ERR("Mini driver request failed");
|
||||
usb_free_urb(data->urb);
|
||||
kfree(data);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
@@ -209,7 +207,6 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
|
||||
BT_ERR("Can't allocate memory for mini driver");
|
||||
release_firmware(firmware);
|
||||
usb_free_urb(data->urb);
|
||||
kfree(data);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -224,7 +221,6 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
|
||||
BT_ERR("Firmware request failed");
|
||||
usb_free_urb(data->urb);
|
||||
kfree(data->buffer);
|
||||
kfree(data);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
@@ -236,7 +232,6 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
|
||||
release_firmware(firmware);
|
||||
usb_free_urb(data->urb);
|
||||
kfree(data->buffer);
|
||||
kfree(data);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -271,7 +266,6 @@ static void bcm203x_disconnect(struct usb_interface *intf)
|
||||
usb_free_urb(data->urb);
|
||||
kfree(data->fw_data);
|
||||
kfree(data->buffer);
|
||||
kfree(data);
|
||||
}
|
||||
|
||||
static struct usb_driver bcm203x_driver = {
|
||||
|
||||
@@ -653,7 +653,7 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i
|
||||
}
|
||||
|
||||
/* Initialize control structure and load firmware */
|
||||
data = kzalloc(sizeof(struct bfusb_data), GFP_KERNEL);
|
||||
data = devm_kzalloc(&intf->dev, sizeof(struct bfusb_data), GFP_KERNEL);
|
||||
if (!data) {
|
||||
BT_ERR("Can't allocate memory for control structure");
|
||||
goto done;
|
||||
@@ -674,7 +674,7 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i
|
||||
|
||||
if (request_firmware(&firmware, "bfubase.frm", &udev->dev) < 0) {
|
||||
BT_ERR("Firmware request failed");
|
||||
goto error;
|
||||
goto done;
|
||||
}
|
||||
|
||||
BT_DBG("firmware data %p size %zu", firmware->data, firmware->size);
|
||||
@@ -690,7 +690,7 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i
|
||||
hdev = hci_alloc_dev();
|
||||
if (!hdev) {
|
||||
BT_ERR("Can't allocate HCI device");
|
||||
goto error;
|
||||
goto done;
|
||||
}
|
||||
|
||||
data->hdev = hdev;
|
||||
@@ -708,7 +708,7 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i
|
||||
if (hci_register_dev(hdev) < 0) {
|
||||
BT_ERR("Can't register HCI device");
|
||||
hci_free_dev(hdev);
|
||||
goto error;
|
||||
goto done;
|
||||
}
|
||||
|
||||
usb_set_intfdata(intf, data);
|
||||
@@ -718,9 +718,6 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i
|
||||
release:
|
||||
release_firmware(firmware);
|
||||
|
||||
error:
|
||||
kfree(data);
|
||||
|
||||
done:
|
||||
return -EIO;
|
||||
}
|
||||
@@ -741,7 +738,6 @@ static void bfusb_disconnect(struct usb_interface *intf)
|
||||
|
||||
hci_unregister_dev(hdev);
|
||||
hci_free_dev(hdev);
|
||||
kfree(data);
|
||||
}
|
||||
|
||||
static struct usb_driver bfusb_driver = {
|
||||
|
||||
@@ -849,7 +849,7 @@ static int bluecard_probe(struct pcmcia_device *link)
|
||||
bluecard_info_t *info;
|
||||
|
||||
/* Create new info device */
|
||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||
info = devm_kzalloc(&link->dev, sizeof(*info), GFP_KERNEL);
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -864,10 +864,7 @@ static int bluecard_probe(struct pcmcia_device *link)
|
||||
|
||||
static void bluecard_detach(struct pcmcia_device *link)
|
||||
{
|
||||
bluecard_info_t *info = link->priv;
|
||||
|
||||
bluecard_release(link);
|
||||
kfree(info);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -443,7 +443,7 @@ static int bpa10x_probe(struct usb_interface *intf, const struct usb_device_id *
|
||||
if (intf->cur_altsetting->desc.bInterfaceNumber != 0)
|
||||
return -ENODEV;
|
||||
|
||||
data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||
data = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -453,10 +453,8 @@ static int bpa10x_probe(struct usb_interface *intf, const struct usb_device_id *
|
||||
init_usb_anchor(&data->rx_anchor);
|
||||
|
||||
hdev = hci_alloc_dev();
|
||||
if (!hdev) {
|
||||
kfree(data);
|
||||
if (!hdev)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
hdev->bus = HCI_USB;
|
||||
hci_set_drvdata(hdev, data);
|
||||
@@ -475,7 +473,6 @@ static int bpa10x_probe(struct usb_interface *intf, const struct usb_device_id *
|
||||
err = hci_register_dev(hdev);
|
||||
if (err < 0) {
|
||||
hci_free_dev(hdev);
|
||||
kfree(data);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -500,7 +497,6 @@ static void bpa10x_disconnect(struct usb_interface *intf)
|
||||
hci_free_dev(data->hdev);
|
||||
kfree_skb(data->rx_skb[0]);
|
||||
kfree_skb(data->rx_skb[1]);
|
||||
kfree(data);
|
||||
}
|
||||
|
||||
static struct usb_driver bpa10x_driver = {
|
||||
|
||||
@@ -638,7 +638,7 @@ static int bt3c_probe(struct pcmcia_device *link)
|
||||
bt3c_info_t *info;
|
||||
|
||||
/* Create new info device */
|
||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||
info = devm_kzalloc(&link->dev, sizeof(*info), GFP_KERNEL);
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -654,10 +654,7 @@ static int bt3c_probe(struct pcmcia_device *link)
|
||||
|
||||
static void bt3c_detach(struct pcmcia_device *link)
|
||||
{
|
||||
bt3c_info_t *info = link->priv;
|
||||
|
||||
bt3c_release(link);
|
||||
kfree(info);
|
||||
}
|
||||
|
||||
static int bt3c_check_config(struct pcmcia_device *p_dev, void *priv_data)
|
||||
|
||||
@@ -956,11 +956,9 @@ static int btmrvl_sdio_probe(struct sdio_func *func,
|
||||
BT_INFO("vendor=0x%x, device=0x%x, class=%d, fn=%d",
|
||||
id->vendor, id->device, id->class, func->num);
|
||||
|
||||
card = kzalloc(sizeof(*card), GFP_KERNEL);
|
||||
if (!card) {
|
||||
ret = -ENOMEM;
|
||||
goto done;
|
||||
}
|
||||
card = devm_kzalloc(&func->dev, sizeof(*card), GFP_KERNEL);
|
||||
if (!card)
|
||||
return -ENOMEM;
|
||||
|
||||
card->func = func;
|
||||
|
||||
@@ -974,8 +972,7 @@ static int btmrvl_sdio_probe(struct sdio_func *func,
|
||||
|
||||
if (btmrvl_sdio_register_dev(card) < 0) {
|
||||
BT_ERR("Failed to register BT device!");
|
||||
ret = -ENODEV;
|
||||
goto free_card;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Disable the interrupts on the card */
|
||||
@@ -1023,9 +1020,6 @@ disable_host_int:
|
||||
btmrvl_sdio_disable_host_int(card);
|
||||
unreg_dev:
|
||||
btmrvl_sdio_unregister_dev(card);
|
||||
free_card:
|
||||
kfree(card);
|
||||
done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1047,7 +1041,6 @@ static void btmrvl_sdio_remove(struct sdio_func *func)
|
||||
BT_DBG("unregester dev");
|
||||
btmrvl_sdio_unregister_dev(card);
|
||||
btmrvl_remove_card(card->priv);
|
||||
kfree(card);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,7 +304,7 @@ static int btsdio_probe(struct sdio_func *func,
|
||||
tuple = tuple->next;
|
||||
}
|
||||
|
||||
data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||
data = devm_kzalloc(&func->dev, sizeof(*data), GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -315,10 +315,8 @@ static int btsdio_probe(struct sdio_func *func,
|
||||
skb_queue_head_init(&data->txq);
|
||||
|
||||
hdev = hci_alloc_dev();
|
||||
if (!hdev) {
|
||||
kfree(data);
|
||||
if (!hdev)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
hdev->bus = HCI_SDIO;
|
||||
hci_set_drvdata(hdev, data);
|
||||
@@ -340,7 +338,6 @@ static int btsdio_probe(struct sdio_func *func,
|
||||
err = hci_register_dev(hdev);
|
||||
if (err < 0) {
|
||||
hci_free_dev(hdev);
|
||||
kfree(data);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -366,7 +363,6 @@ static void btsdio_remove(struct sdio_func *func)
|
||||
hci_unregister_dev(hdev);
|
||||
|
||||
hci_free_dev(hdev);
|
||||
kfree(data);
|
||||
}
|
||||
|
||||
static struct sdio_driver btsdio_driver = {
|
||||
|
||||
@@ -567,7 +567,7 @@ static int btuart_probe(struct pcmcia_device *link)
|
||||
btuart_info_t *info;
|
||||
|
||||
/* Create new info device */
|
||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||
info = devm_kzalloc(&link->dev, sizeof(*info), GFP_KERNEL);
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -583,10 +583,7 @@ static int btuart_probe(struct pcmcia_device *link)
|
||||
|
||||
static void btuart_detach(struct pcmcia_device *link)
|
||||
{
|
||||
btuart_info_t *info = link->priv;
|
||||
|
||||
btuart_release(link);
|
||||
kfree(info);
|
||||
}
|
||||
|
||||
static int btuart_check_config(struct pcmcia_device *p_dev, void *priv_data)
|
||||
|
||||
@@ -952,7 +952,7 @@ static int btusb_probe(struct usb_interface *intf,
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||
data = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -975,10 +975,8 @@ static int btusb_probe(struct usb_interface *intf,
|
||||
}
|
||||
}
|
||||
|
||||
if (!data->intr_ep || !data->bulk_tx_ep || !data->bulk_rx_ep) {
|
||||
kfree(data);
|
||||
if (!data->intr_ep || !data->bulk_tx_ep || !data->bulk_rx_ep)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
data->cmdreq_type = USB_TYPE_CLASS;
|
||||
|
||||
@@ -998,10 +996,8 @@ static int btusb_probe(struct usb_interface *intf,
|
||||
init_usb_anchor(&data->deferred);
|
||||
|
||||
hdev = hci_alloc_dev();
|
||||
if (!hdev) {
|
||||
kfree(data);
|
||||
if (!hdev)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
hdev->bus = HCI_USB;
|
||||
hci_set_drvdata(hdev, data);
|
||||
@@ -1069,7 +1065,6 @@ static int btusb_probe(struct usb_interface *intf,
|
||||
data->isoc, data);
|
||||
if (err < 0) {
|
||||
hci_free_dev(hdev);
|
||||
kfree(data);
|
||||
return err;
|
||||
}
|
||||
}
|
||||
@@ -1077,7 +1072,6 @@ static int btusb_probe(struct usb_interface *intf,
|
||||
err = hci_register_dev(hdev);
|
||||
if (err < 0) {
|
||||
hci_free_dev(hdev);
|
||||
kfree(data);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1110,7 +1104,6 @@ static void btusb_disconnect(struct usb_interface *intf)
|
||||
usb_driver_release_interface(&btusb_driver, data->isoc);
|
||||
|
||||
hci_free_dev(hdev);
|
||||
kfree(data);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
@@ -297,16 +297,14 @@ static int bt_ti_probe(struct platform_device *pdev)
|
||||
struct hci_dev *hdev;
|
||||
int err;
|
||||
|
||||
hst = kzalloc(sizeof(struct ti_st), GFP_KERNEL);
|
||||
hst = devm_kzalloc(&pdev->dev, sizeof(struct ti_st), GFP_KERNEL);
|
||||
if (!hst)
|
||||
return -ENOMEM;
|
||||
|
||||
/* Expose "hciX" device to user space */
|
||||
hdev = hci_alloc_dev();
|
||||
if (!hdev) {
|
||||
kfree(hst);
|
||||
if (!hdev)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
BT_DBG("hdev %p", hdev);
|
||||
|
||||
@@ -321,7 +319,6 @@ static int bt_ti_probe(struct platform_device *pdev)
|
||||
err = hci_register_dev(hdev);
|
||||
if (err < 0) {
|
||||
BT_ERR("Can't register HCI device error %d", err);
|
||||
kfree(hst);
|
||||
hci_free_dev(hdev);
|
||||
return err;
|
||||
}
|
||||
@@ -347,7 +344,6 @@ static int bt_ti_remove(struct platform_device *pdev)
|
||||
hci_unregister_dev(hdev);
|
||||
|
||||
hci_free_dev(hdev);
|
||||
kfree(hst);
|
||||
|
||||
dev_set_drvdata(&pdev->dev, NULL);
|
||||
return 0;
|
||||
|
||||
@@ -550,7 +550,7 @@ static int dtl1_probe(struct pcmcia_device *link)
|
||||
dtl1_info_t *info;
|
||||
|
||||
/* Create new info device */
|
||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||
info = devm_kzalloc(&link->dev, sizeof(*info), GFP_KERNEL);
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -569,7 +569,6 @@ static void dtl1_detach(struct pcmcia_device *link)
|
||||
|
||||
dtl1_close(info);
|
||||
pcmcia_disable_device(link);
|
||||
kfree(info);
|
||||
}
|
||||
|
||||
static int dtl1_confcheck(struct pcmcia_device *p_dev, void *priv_data)
|
||||
|
||||
@@ -1331,7 +1331,6 @@ struct ath5k_hw {
|
||||
unsigned int nexttbtt; /* next beacon time in TU */
|
||||
struct ath5k_txq *cabq; /* content after beacon */
|
||||
|
||||
int power_level; /* Requested tx power in dBm */
|
||||
bool assoc; /* associate state */
|
||||
bool enable_beacon; /* true if beacons are on */
|
||||
|
||||
@@ -1425,6 +1424,7 @@ struct ath5k_hw {
|
||||
/* Value in dB units */
|
||||
s16 txp_cck_ofdm_pwr_delta;
|
||||
bool txp_setup;
|
||||
int txp_requested; /* Requested tx power in dBm */
|
||||
} ah_txpower;
|
||||
|
||||
struct ath5k_nfcal_hist ah_nfcal_hist;
|
||||
|
||||
@@ -723,7 +723,7 @@ ath5k_txbuf_setup(struct ath5k_hw *ah, struct ath5k_buf *bf,
|
||||
ret = ah->ah_setup_tx_desc(ah, ds, pktlen,
|
||||
ieee80211_get_hdrlen_from_skb(skb), padsize,
|
||||
get_hw_packet_type(skb),
|
||||
(ah->power_level * 2),
|
||||
(ah->ah_txpower.txp_requested * 2),
|
||||
hw_rate,
|
||||
info->control.rates[0].count, keyidx, ah->ah_tx_ant, flags,
|
||||
cts_rate, duration);
|
||||
@@ -1778,7 +1778,8 @@ ath5k_beacon_setup(struct ath5k_hw *ah, struct ath5k_buf *bf)
|
||||
ds->ds_data = bf->skbaddr;
|
||||
ret = ah->ah_setup_tx_desc(ah, ds, skb->len,
|
||||
ieee80211_get_hdrlen_from_skb(skb), padsize,
|
||||
AR5K_PKT_TYPE_BEACON, (ah->power_level * 2),
|
||||
AR5K_PKT_TYPE_BEACON,
|
||||
(ah->ah_txpower.txp_requested * 2),
|
||||
ieee80211_get_tx_rate(ah->hw, info)->hw_value,
|
||||
1, AR5K_TXKEYIX_INVALID,
|
||||
antenna, flags, 0, 0);
|
||||
|
||||
@@ -207,8 +207,8 @@ ath5k_config(struct ieee80211_hw *hw, u32 changed)
|
||||
}
|
||||
|
||||
if ((changed & IEEE80211_CONF_CHANGE_POWER) &&
|
||||
(ah->power_level != conf->power_level)) {
|
||||
ah->power_level = conf->power_level;
|
||||
(ah->ah_txpower.txp_requested != conf->power_level)) {
|
||||
ah->ah_txpower.txp_requested = conf->power_level;
|
||||
|
||||
/* Half dB steps */
|
||||
ath5k_hw_set_txpower_limit(ah, (conf->power_level * 2));
|
||||
|
||||
@@ -3516,6 +3516,7 @@ ath5k_setup_rate_powertable(struct ath5k_hw *ah, u16 max_pwr,
|
||||
{
|
||||
unsigned int i;
|
||||
u16 *rates;
|
||||
s16 rate_idx_scaled = 0;
|
||||
|
||||
/* max_pwr is power level we got from driver/user in 0.5dB
|
||||
* units, switch to 0.25dB units so we can compare */
|
||||
@@ -3562,20 +3563,32 @@ ath5k_setup_rate_powertable(struct ath5k_hw *ah, u16 max_pwr,
|
||||
for (i = 8; i <= 15; i++)
|
||||
rates[i] -= ah->ah_txpower.txp_cck_ofdm_gainf_delta;
|
||||
|
||||
/* Save min/max and current tx power for this channel
|
||||
* in 0.25dB units.
|
||||
*
|
||||
* Note: We use rates[0] for current tx power because
|
||||
* it covers most of the rates, in most cases. It's our
|
||||
* tx power limit and what the user expects to see. */
|
||||
ah->ah_txpower.txp_min_pwr = 2 * rates[7];
|
||||
ah->ah_txpower.txp_cur_pwr = 2 * rates[0];
|
||||
|
||||
/* Set max txpower for correct OFDM operation on all rates
|
||||
* -that is the txpower for 54Mbit-, it's used for the PAPD
|
||||
* gain probe and it's in 0.5dB units */
|
||||
ah->ah_txpower.txp_ofdm = rates[7];
|
||||
|
||||
/* Now that we have all rates setup use table offset to
|
||||
* match the power range set by user with the power indices
|
||||
* on PCDAC/PDADC table */
|
||||
for (i = 0; i < 16; i++) {
|
||||
rates[i] += ah->ah_txpower.txp_offset;
|
||||
rate_idx_scaled = rates[i] + ah->ah_txpower.txp_offset;
|
||||
/* Don't get out of bounds */
|
||||
if (rates[i] > 63)
|
||||
rates[i] = 63;
|
||||
if (rate_idx_scaled > 63)
|
||||
rate_idx_scaled = 63;
|
||||
if (rate_idx_scaled < 0)
|
||||
rate_idx_scaled = 0;
|
||||
rates[i] = rate_idx_scaled;
|
||||
}
|
||||
|
||||
/* Min/max in 0.25dB units */
|
||||
ah->ah_txpower.txp_min_pwr = 2 * rates[7];
|
||||
ah->ah_txpower.txp_cur_pwr = 2 * rates[0];
|
||||
ah->ah_txpower.txp_ofdm = rates[7];
|
||||
}
|
||||
|
||||
|
||||
@@ -3639,10 +3652,17 @@ ath5k_hw_txpower(struct ath5k_hw *ah, struct ieee80211_channel *channel,
|
||||
if (!ah->ah_txpower.txp_setup ||
|
||||
(channel->hw_value != curr_channel->hw_value) ||
|
||||
(channel->center_freq != curr_channel->center_freq)) {
|
||||
/* Reset TX power values */
|
||||
/* Reset TX power values but preserve requested
|
||||
* tx power from above */
|
||||
int requested_txpower = ah->ah_txpower.txp_requested;
|
||||
|
||||
memset(&ah->ah_txpower, 0, sizeof(ah->ah_txpower));
|
||||
|
||||
/* Restore TPC setting and requested tx power */
|
||||
ah->ah_txpower.txp_tpc = AR5K_TUNE_TPC_TXPOWER;
|
||||
|
||||
ah->ah_txpower.txp_requested = requested_txpower;
|
||||
|
||||
/* Calculate the powertable */
|
||||
ret = ath5k_setup_channel_powertable(ah, channel,
|
||||
ee_mode, type);
|
||||
@@ -3789,8 +3809,9 @@ ath5k_hw_phy_init(struct ath5k_hw *ah, struct ieee80211_channel *channel,
|
||||
* RF buffer settings on 5211/5212+ so that we
|
||||
* properly set curve indices.
|
||||
*/
|
||||
ret = ath5k_hw_txpower(ah, channel, ah->ah_txpower.txp_cur_pwr ?
|
||||
ah->ah_txpower.txp_cur_pwr / 2 : AR5K_TUNE_MAX_TXPOWER);
|
||||
ret = ath5k_hw_txpower(ah, channel, ah->ah_txpower.txp_requested ?
|
||||
ah->ah_txpower.txp_requested * 2 :
|
||||
AR5K_TUNE_MAX_TXPOWER);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -4901,90 +4901,79 @@ static void ar9003_hw_set_power_per_rate_table(struct ath_hw *ah,
|
||||
i, cfgCtl, pCtlMode[ctlMode], ctlIndex[i],
|
||||
chan->channel);
|
||||
|
||||
/*
|
||||
* compare test group from regulatory
|
||||
* channel list with test mode from pCtlMode
|
||||
* list
|
||||
*/
|
||||
if ((((cfgCtl & ~CTL_MODE_M) |
|
||||
(pCtlMode[ctlMode] & CTL_MODE_M)) ==
|
||||
ctlIndex[i]) ||
|
||||
(((cfgCtl & ~CTL_MODE_M) |
|
||||
(pCtlMode[ctlMode] & CTL_MODE_M)) ==
|
||||
((ctlIndex[i] & CTL_MODE_M) |
|
||||
SD_NO_CTL))) {
|
||||
twiceMinEdgePower =
|
||||
ar9003_hw_get_max_edge_power(pEepData,
|
||||
freq, i,
|
||||
is2ghz);
|
||||
/*
|
||||
* compare test group from regulatory
|
||||
* channel list with test mode from pCtlMode
|
||||
* list
|
||||
*/
|
||||
if ((((cfgCtl & ~CTL_MODE_M) |
|
||||
(pCtlMode[ctlMode] & CTL_MODE_M)) ==
|
||||
ctlIndex[i]) ||
|
||||
(((cfgCtl & ~CTL_MODE_M) |
|
||||
(pCtlMode[ctlMode] & CTL_MODE_M)) ==
|
||||
((ctlIndex[i] & CTL_MODE_M) |
|
||||
SD_NO_CTL))) {
|
||||
twiceMinEdgePower =
|
||||
ar9003_hw_get_max_edge_power(pEepData,
|
||||
freq, i,
|
||||
is2ghz);
|
||||
|
||||
if ((cfgCtl & ~CTL_MODE_M) == SD_NO_CTL)
|
||||
/*
|
||||
* Find the minimum of all CTL
|
||||
* edge powers that apply to
|
||||
* this channel
|
||||
*/
|
||||
twiceMaxEdgePower =
|
||||
min(twiceMaxEdgePower,
|
||||
twiceMinEdgePower);
|
||||
else {
|
||||
/* specific */
|
||||
twiceMaxEdgePower =
|
||||
twiceMinEdgePower;
|
||||
break;
|
||||
}
|
||||
if ((cfgCtl & ~CTL_MODE_M) == SD_NO_CTL)
|
||||
/*
|
||||
* Find the minimum of all CTL
|
||||
* edge powers that apply to
|
||||
* this channel
|
||||
*/
|
||||
twiceMaxEdgePower =
|
||||
min(twiceMaxEdgePower,
|
||||
twiceMinEdgePower);
|
||||
else {
|
||||
/* specific */
|
||||
twiceMaxEdgePower = twiceMinEdgePower;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
minCtlPower = (u8)min(twiceMaxEdgePower, scaledPower);
|
||||
minCtlPower = (u8)min(twiceMaxEdgePower, scaledPower);
|
||||
|
||||
ath_dbg(common, REGULATORY,
|
||||
"SEL-Min ctlMode %d pCtlMode %d 2xMaxEdge %d sP %d minCtlPwr %d\n",
|
||||
ctlMode, pCtlMode[ctlMode], twiceMaxEdgePower,
|
||||
scaledPower, minCtlPower);
|
||||
ath_dbg(common, REGULATORY,
|
||||
"SEL-Min ctlMode %d pCtlMode %d 2xMaxEdge %d sP %d minCtlPwr %d\n",
|
||||
ctlMode, pCtlMode[ctlMode], twiceMaxEdgePower,
|
||||
scaledPower, minCtlPower);
|
||||
|
||||
/* Apply ctl mode to correct target power set */
|
||||
switch (pCtlMode[ctlMode]) {
|
||||
case CTL_11B:
|
||||
for (i = ALL_TARGET_LEGACY_1L_5L;
|
||||
i <= ALL_TARGET_LEGACY_11S; i++)
|
||||
pPwrArray[i] =
|
||||
(u8)min((u16)pPwrArray[i],
|
||||
minCtlPower);
|
||||
break;
|
||||
case CTL_11A:
|
||||
case CTL_11G:
|
||||
for (i = ALL_TARGET_LEGACY_6_24;
|
||||
i <= ALL_TARGET_LEGACY_54; i++)
|
||||
pPwrArray[i] =
|
||||
(u8)min((u16)pPwrArray[i],
|
||||
minCtlPower);
|
||||
break;
|
||||
case CTL_5GHT20:
|
||||
case CTL_2GHT20:
|
||||
for (i = ALL_TARGET_HT20_0_8_16;
|
||||
i <= ALL_TARGET_HT20_21; i++)
|
||||
pPwrArray[i] =
|
||||
(u8)min((u16)pPwrArray[i],
|
||||
minCtlPower);
|
||||
pPwrArray[ALL_TARGET_HT20_22] =
|
||||
(u8)min((u16)pPwrArray[ALL_TARGET_HT20_22],
|
||||
minCtlPower);
|
||||
pPwrArray[ALL_TARGET_HT20_23] =
|
||||
(u8)min((u16)pPwrArray[ALL_TARGET_HT20_23],
|
||||
minCtlPower);
|
||||
break;
|
||||
case CTL_5GHT40:
|
||||
case CTL_2GHT40:
|
||||
for (i = ALL_TARGET_HT40_0_8_16;
|
||||
i <= ALL_TARGET_HT40_23; i++)
|
||||
pPwrArray[i] =
|
||||
(u8)min((u16)pPwrArray[i],
|
||||
minCtlPower);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
/* Apply ctl mode to correct target power set */
|
||||
switch (pCtlMode[ctlMode]) {
|
||||
case CTL_11B:
|
||||
for (i = ALL_TARGET_LEGACY_1L_5L;
|
||||
i <= ALL_TARGET_LEGACY_11S; i++)
|
||||
pPwrArray[i] = (u8)min((u16)pPwrArray[i],
|
||||
minCtlPower);
|
||||
break;
|
||||
case CTL_11A:
|
||||
case CTL_11G:
|
||||
for (i = ALL_TARGET_LEGACY_6_24;
|
||||
i <= ALL_TARGET_LEGACY_54; i++)
|
||||
pPwrArray[i] = (u8)min((u16)pPwrArray[i],
|
||||
minCtlPower);
|
||||
break;
|
||||
case CTL_5GHT20:
|
||||
case CTL_2GHT20:
|
||||
for (i = ALL_TARGET_HT20_0_8_16;
|
||||
i <= ALL_TARGET_HT20_23; i++)
|
||||
pPwrArray[i] = (u8)min((u16)pPwrArray[i],
|
||||
minCtlPower);
|
||||
break;
|
||||
case CTL_5GHT40:
|
||||
case CTL_2GHT40:
|
||||
for (i = ALL_TARGET_HT40_0_8_16;
|
||||
i <= ALL_TARGET_HT40_23; i++)
|
||||
pPwrArray[i] = (u8)min((u16)pPwrArray[i],
|
||||
minCtlPower);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} /* end ctl mode checking */
|
||||
}
|
||||
|
||||
|
||||
+340
-468
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user