Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

This commit is contained in:
David S. Miller 2010-08-21 23:32:24 -07:00
commit d3c6e7ad09
56 changed files with 2077 additions and 257 deletions

View File

@ -928,6 +928,16 @@ config SMC91X
The module will be called smc91x. If you want to compile it as a The module will be called smc91x. If you want to compile it as a
module, say M here and read <file:Documentation/kbuild/modules.txt>. module, say M here and read <file:Documentation/kbuild/modules.txt>.
config PXA168_ETH
tristate "Marvell pxa168 ethernet support"
depends on CPU_PXA168
select PHYLIB
help
This driver supports the pxa168 Ethernet ports.
To compile this driver as a module, choose M here. The module
will be called pxa168_eth.
config NET_NETX config NET_NETX
tristate "NetX Ethernet support" tristate "NetX Ethernet support"
select MII select MII

View File

@ -245,6 +245,7 @@ obj-$(CONFIG_MYRI10GE) += myri10ge/
obj-$(CONFIG_SMC91X) += smc91x.o obj-$(CONFIG_SMC91X) += smc91x.o
obj-$(CONFIG_SMC911X) += smc911x.o obj-$(CONFIG_SMC911X) += smc911x.o
obj-$(CONFIG_SMSC911X) += smsc911x.o obj-$(CONFIG_SMSC911X) += smsc911x.o
obj-$(CONFIG_PXA168_ETH) += pxa168_eth.o
obj-$(CONFIG_BFIN_MAC) += bfin_mac.o obj-$(CONFIG_BFIN_MAC) += bfin_mac.o
obj-$(CONFIG_DM9000) += dm9000.o obj-$(CONFIG_DM9000) += dm9000.o
obj-$(CONFIG_PASEMI_MAC) += pasemi_mac_driver.o obj-$(CONFIG_PASEMI_MAC) += pasemi_mac_driver.o

View File

@ -20,8 +20,8 @@
* (you will need to reboot afterwards) */ * (you will need to reboot afterwards) */
/* #define BNX2X_STOP_ON_ERROR */ /* #define BNX2X_STOP_ON_ERROR */
#define DRV_MODULE_VERSION "1.52.53-3" #define DRV_MODULE_VERSION "1.52.53-4"
#define DRV_MODULE_RELDATE "2010/18/04" #define DRV_MODULE_RELDATE "2010/16/08"
#define BNX2X_BC_VER 0x040200 #define BNX2X_BC_VER 0x040200
#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)

View File

@ -4328,10 +4328,12 @@ static int bnx2x_init_port(struct bnx2x *bp)
val |= aeu_gpio_mask; val |= aeu_gpio_mask;
REG_WR(bp, offset, val); REG_WR(bp, offset, val);
} }
bp->port.need_hw_lock = 1;
break; break;
case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727:
bp->port.need_hw_lock = 1;
case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
/* add SPIO 5 to group 0 */ /* add SPIO 5 to group 0 */
{ {
u32 reg_addr = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 : u32 reg_addr = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 :
@ -4341,7 +4343,10 @@ static int bnx2x_init_port(struct bnx2x *bp)
REG_WR(bp, reg_addr, val); REG_WR(bp, reg_addr, val);
} }
break; break;
case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
bp->port.need_hw_lock = 1;
break;
default: default:
break; break;
} }

View File

@ -936,12 +936,14 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw)
ew32(IMC, 0xffffffff); ew32(IMC, 0xffffffff);
icr = er32(ICR); icr = er32(ICR);
if (hw->mac.type == e1000_82571) {
/* Install any alternate MAC address into RAR0 */ /* Install any alternate MAC address into RAR0 */
ret_val = e1000_check_alt_mac_addr_generic(hw); ret_val = e1000_check_alt_mac_addr_generic(hw);
if (ret_val) if (ret_val)
return ret_val; return ret_val;
e1000e_set_laa_state_82571(hw, true); e1000e_set_laa_state_82571(hw, true);
}
/* Reinitialize the 82571 serdes link state machine */ /* Reinitialize the 82571 serdes link state machine */
if (hw->phy.media_type == e1000_media_type_internal_serdes) if (hw->phy.media_type == e1000_media_type_internal_serdes)
@ -1618,6 +1620,7 @@ static s32 e1000_read_mac_addr_82571(struct e1000_hw *hw)
{ {
s32 ret_val = 0; s32 ret_val = 0;
if (hw->mac.type == e1000_82571) {
/* /*
* If there's an alternate MAC address place it in RAR0 * If there's an alternate MAC address place it in RAR0
* so that it will override the Si installed default perm * so that it will override the Si installed default perm
@ -1626,6 +1629,7 @@ static s32 e1000_read_mac_addr_82571(struct e1000_hw *hw)
ret_val = e1000_check_alt_mac_addr_generic(hw); ret_val = e1000_check_alt_mac_addr_generic(hw);
if (ret_val) if (ret_val)
goto out; goto out;
}
ret_val = e1000_read_mac_addr_generic(hw); ret_val = e1000_read_mac_addr_generic(hw);
@ -1833,6 +1837,7 @@ struct e1000_info e1000_82573_info = {
| FLAG_HAS_SMART_POWER_DOWN | FLAG_HAS_SMART_POWER_DOWN
| FLAG_HAS_AMT | FLAG_HAS_AMT
| FLAG_HAS_SWSM_ON_LOAD, | FLAG_HAS_SWSM_ON_LOAD,
.flags2 = FLAG2_DISABLE_ASPM_L1,
.pba = 20, .pba = 20,
.max_hw_frame_size = ETH_FRAME_LEN + ETH_FCS_LEN, .max_hw_frame_size = ETH_FRAME_LEN + ETH_FCS_LEN,
.get_variants = e1000_get_variants_82571, .get_variants = e1000_get_variants_82571,

View File

@ -621,6 +621,7 @@
#define E1000_FLASH_UPDATES 2000 #define E1000_FLASH_UPDATES 2000
/* NVM Word Offsets */ /* NVM Word Offsets */
#define NVM_COMPAT 0x0003
#define NVM_ID_LED_SETTINGS 0x0004 #define NVM_ID_LED_SETTINGS 0x0004
#define NVM_INIT_CONTROL2_REG 0x000F #define NVM_INIT_CONTROL2_REG 0x000F
#define NVM_INIT_CONTROL3_PORT_B 0x0014 #define NVM_INIT_CONTROL3_PORT_B 0x0014
@ -643,6 +644,9 @@
/* Mask bits for fields in Word 0x1a of the NVM */ /* Mask bits for fields in Word 0x1a of the NVM */
#define NVM_WORD1A_ASPM_MASK 0x000C #define NVM_WORD1A_ASPM_MASK 0x000C
/* Mask bits for fields in Word 0x03 of the EEPROM */
#define NVM_COMPAT_LOM 0x0800
/* For checksumming, the sum of all words in the NVM should equal 0xBABA. */ /* For checksumming, the sum of all words in the NVM should equal 0xBABA. */
#define NVM_SUM 0xBABA #define NVM_SUM 0xBABA

View File

@ -183,6 +183,16 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)
u16 offset, nvm_alt_mac_addr_offset, nvm_data; u16 offset, nvm_alt_mac_addr_offset, nvm_data;
u8 alt_mac_addr[ETH_ALEN]; u8 alt_mac_addr[ETH_ALEN];
ret_val = e1000_read_nvm(hw, NVM_COMPAT, 1, &nvm_data);
if (ret_val)
goto out;
/* Check for LOM (vs. NIC) or one of two valid mezzanine cards */
if (!((nvm_data & NVM_COMPAT_LOM) ||
(hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_DUAL) ||
(hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_QUAD)))
goto out;
ret_val = e1000_read_nvm(hw, NVM_ALT_MAC_ADDR_PTR, 1, ret_val = e1000_read_nvm(hw, NVM_ALT_MAC_ADDR_PTR, 1,
&nvm_alt_mac_addr_offset); &nvm_alt_mac_addr_offset);
if (ret_val) { if (ret_val) {

View File

@ -40,7 +40,7 @@
#include <asm/io.h> #include <asm/io.h>
#define DRV_NAME "ehea" #define DRV_NAME "ehea"
#define DRV_VERSION "EHEA_0105" #define DRV_VERSION "EHEA_0106"
/* eHEA capability flags */ /* eHEA capability flags */
#define DLPAR_PORT_ADD_REM 1 #define DLPAR_PORT_ADD_REM 1
@ -400,6 +400,7 @@ struct ehea_port_res {
u32 poll_counter; u32 poll_counter;
struct net_lro_mgr lro_mgr; struct net_lro_mgr lro_mgr;
struct net_lro_desc lro_desc[MAX_LRO_DESCRIPTORS]; struct net_lro_desc lro_desc[MAX_LRO_DESCRIPTORS];
int sq_restart_flag;
}; };

View File

@ -776,6 +776,53 @@ static int ehea_proc_rwqes(struct net_device *dev,
return processed; return processed;
} }
#define SWQE_RESTART_CHECK 0xdeadbeaff00d0000ull
static void reset_sq_restart_flag(struct ehea_port *port)
{
int i;
for (i = 0; i < port->num_def_qps + port->num_add_tx_qps; i++) {
struct ehea_port_res *pr = &port->port_res[i];
pr->sq_restart_flag = 0;
}
}
static void check_sqs(struct ehea_port *port)
{
struct ehea_swqe *swqe;
int swqe_index;
int i, k;
for (i = 0; i < port->num_def_qps + port->num_add_tx_qps; i++) {
struct ehea_port_res *pr = &port->port_res[i];
k = 0;
swqe = ehea_get_swqe(pr->qp, &swqe_index);
memset(swqe, 0, SWQE_HEADER_SIZE);
atomic_dec(&pr->swqe_avail);
swqe->tx_control |= EHEA_SWQE_PURGE;
swqe->wr_id = SWQE_RESTART_CHECK;
swqe->tx_control |= EHEA_SWQE_SIGNALLED_COMPLETION;
swqe->tx_control |= EHEA_SWQE_IMM_DATA_PRESENT;
swqe->immediate_data_length = 80;
ehea_post_swqe(pr->qp, swqe);
while (pr->sq_restart_flag == 0) {
msleep(5);
if (++k == 100) {
ehea_error("HW/SW queues out of sync");
ehea_schedule_port_reset(pr->port);
return;
}
}
}
return;
}
static struct ehea_cqe *ehea_proc_cqes(struct ehea_port_res *pr, int my_quota) static struct ehea_cqe *ehea_proc_cqes(struct ehea_port_res *pr, int my_quota)
{ {
struct sk_buff *skb; struct sk_buff *skb;
@ -793,6 +840,13 @@ static struct ehea_cqe *ehea_proc_cqes(struct ehea_port_res *pr, int my_quota)
cqe_counter++; cqe_counter++;
rmb(); rmb();
if (cqe->wr_id == SWQE_RESTART_CHECK) {
pr->sq_restart_flag = 1;
swqe_av++;
break;
}
if (cqe->status & EHEA_CQE_STAT_ERR_MASK) { if (cqe->status & EHEA_CQE_STAT_ERR_MASK) {
ehea_error("Bad send completion status=0x%04X", ehea_error("Bad send completion status=0x%04X",
cqe->status); cqe->status);
@ -2675,11 +2729,13 @@ static void ehea_flush_sq(struct ehea_port *port)
int k = 0; int k = 0;
while (atomic_read(&pr->swqe_avail) < swqe_max) { while (atomic_read(&pr->swqe_avail) < swqe_max) {
msleep(5); msleep(5);
if (++k == 20) if (++k == 20) {
ehea_error("WARNING: sq not flushed completely");
break; break;
} }
} }
} }
}
int ehea_stop_qps(struct net_device *dev) int ehea_stop_qps(struct net_device *dev)
{ {
@ -2917,6 +2973,7 @@ static void ehea_rereg_mrs(struct work_struct *work)
port_napi_disable(port); port_napi_disable(port);
mutex_unlock(&port->port_lock); mutex_unlock(&port->port_lock);
} }
reset_sq_restart_flag(port);
} }
/* Unregister old memory region */ /* Unregister old memory region */
@ -2951,6 +3008,7 @@ static void ehea_rereg_mrs(struct work_struct *work)
mutex_lock(&port->port_lock); mutex_lock(&port->port_lock);
port_napi_enable(port); port_napi_enable(port);
ret = ehea_restart_qps(dev); ret = ehea_restart_qps(dev);
check_sqs(port);
if (!ret) if (!ret)
netif_wake_queue(dev); netif_wake_queue(dev);
mutex_unlock(&port->port_lock); mutex_unlock(&port->port_lock);

View File

@ -1113,7 +1113,8 @@ static int ibmveth_change_mtu(struct net_device *dev, int new_mtu)
struct ibmveth_adapter *adapter = netdev_priv(dev); struct ibmveth_adapter *adapter = netdev_priv(dev);
struct vio_dev *viodev = adapter->vdev; struct vio_dev *viodev = adapter->vdev;
int new_mtu_oh = new_mtu + IBMVETH_BUFF_OH; int new_mtu_oh = new_mtu + IBMVETH_BUFF_OH;
int i; int i, rc;
int need_restart = 0;
if (new_mtu < IBMVETH_MAX_MTU) if (new_mtu < IBMVETH_MAX_MTU)
return -EINVAL; return -EINVAL;
@ -1127,11 +1128,11 @@ static int ibmveth_change_mtu(struct net_device *dev, int new_mtu)
/* Deactivate all the buffer pools so that the next loop can activate /* Deactivate all the buffer pools so that the next loop can activate
only the buffer pools necessary to hold the new MTU */ only the buffer pools necessary to hold the new MTU */
for (i = 0; i < IbmVethNumBufferPools; i++) if (netif_running(adapter->netdev)) {
if (adapter->rx_buff_pool[i].active) { need_restart = 1;
ibmveth_free_buffer_pool(adapter, adapter->pool_config = 1;
&adapter->rx_buff_pool[i]); ibmveth_close(adapter->netdev);
adapter->rx_buff_pool[i].active = 0; adapter->pool_config = 0;
} }
/* Look for an active buffer pool that can hold the new MTU */ /* Look for an active buffer pool that can hold the new MTU */
@ -1139,23 +1140,20 @@ static int ibmveth_change_mtu(struct net_device *dev, int new_mtu)
adapter->rx_buff_pool[i].active = 1; adapter->rx_buff_pool[i].active = 1;
if (new_mtu_oh < adapter->rx_buff_pool[i].buff_size) { if (new_mtu_oh < adapter->rx_buff_pool[i].buff_size) {
if (netif_running(adapter->netdev)) {
adapter->pool_config = 1;
ibmveth_close(adapter->netdev);
adapter->pool_config = 0;
dev->mtu = new_mtu; dev->mtu = new_mtu;
vio_cmo_set_dev_desired(viodev, vio_cmo_set_dev_desired(viodev,
ibmveth_get_desired_dma ibmveth_get_desired_dma
(viodev)); (viodev));
if (need_restart) {
return ibmveth_open(adapter->netdev); return ibmveth_open(adapter->netdev);
} }
dev->mtu = new_mtu;
vio_cmo_set_dev_desired(viodev,
ibmveth_get_desired_dma
(viodev));
return 0; return 0;
} }
} }
if (need_restart && (rc = ibmveth_open(adapter->netdev)))
return rc;
return -EINVAL; return -EINVAL;
} }

View File

@ -902,8 +902,8 @@ temac_poll_controller(struct net_device *ndev)
disable_irq(lp->tx_irq); disable_irq(lp->tx_irq);
disable_irq(lp->rx_irq); disable_irq(lp->rx_irq);
ll_temac_rx_irq(lp->tx_irq, lp); ll_temac_rx_irq(lp->tx_irq, ndev);
ll_temac_tx_irq(lp->rx_irq, lp); ll_temac_tx_irq(lp->rx_irq, ndev);
enable_irq(lp->tx_irq); enable_irq(lp->tx_irq);
enable_irq(lp->rx_irq); enable_irq(lp->rx_irq);

View File

@ -53,8 +53,8 @@
#define _NETXEN_NIC_LINUX_MAJOR 4 #define _NETXEN_NIC_LINUX_MAJOR 4
#define _NETXEN_NIC_LINUX_MINOR 0 #define _NETXEN_NIC_LINUX_MINOR 0
#define _NETXEN_NIC_LINUX_SUBVERSION 73 #define _NETXEN_NIC_LINUX_SUBVERSION 74
#define NETXEN_NIC_LINUX_VERSIONID "4.0.73" #define NETXEN_NIC_LINUX_VERSIONID "4.0.74"
#define NETXEN_VERSION_CODE(a, b, c) (((a) << 24) + ((b) << 16) + (c)) #define NETXEN_VERSION_CODE(a, b, c) (((a) << 24) + ((b) << 16) + (c))
#define _major(v) (((v) >> 24) & 0xff) #define _major(v) (((v) >> 24) & 0xff)

View File

@ -1805,8 +1805,6 @@ netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ringid,
netxen_ctx_msg msg = 0; netxen_ctx_msg msg = 0;
struct list_head *head; struct list_head *head;
spin_lock(&rds_ring->lock);
producer = rds_ring->producer; producer = rds_ring->producer;
head = &rds_ring->free_list; head = &rds_ring->free_list;
@ -1853,8 +1851,6 @@ netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ringid,
NETXEN_RCV_PRODUCER_OFFSET), msg); NETXEN_RCV_PRODUCER_OFFSET), msg);
} }
} }
spin_unlock(&rds_ring->lock);
} }
static void static void

View File

@ -2032,8 +2032,6 @@ struct net_device_stats *netxen_nic_get_stats(struct net_device *netdev)
struct netxen_adapter *adapter = netdev_priv(netdev); struct netxen_adapter *adapter = netdev_priv(netdev);
struct net_device_stats *stats = &netdev->stats; struct net_device_stats *stats = &netdev->stats;
memset(stats, 0, sizeof(*stats));
stats->rx_packets = adapter->stats.rx_pkts + adapter->stats.lro_pkts; stats->rx_packets = adapter->stats.rx_pkts + adapter->stats.lro_pkts;
stats->tx_packets = adapter->stats.xmitfinished; stats->tx_packets = adapter->stats.xmitfinished;
stats->rx_bytes = adapter->stats.rxbytes; stats->rx_bytes = adapter->stats.rxbytes;

1666
drivers/net/pxa168_eth.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2091,8 +2091,6 @@ static struct net_device_stats *qlcnic_get_stats(struct net_device *netdev)
struct qlcnic_adapter *adapter = netdev_priv(netdev); struct qlcnic_adapter *adapter = netdev_priv(netdev);
struct net_device_stats *stats = &netdev->stats; struct net_device_stats *stats = &netdev->stats;
memset(stats, 0, sizeof(*stats));
stats->rx_packets = adapter->stats.rx_pkts + adapter->stats.lro_pkts; stats->rx_packets = adapter->stats.rx_pkts + adapter->stats.lro_pkts;
stats->tx_packets = adapter->stats.xmitfinished; stats->tx_packets = adapter->stats.xmitfinished;
stats->rx_bytes = adapter->stats.rxbytes + adapter->stats.lrobytes; stats->rx_bytes = adapter->stats.rxbytes + adapter->stats.lrobytes;

View File

@ -1437,7 +1437,7 @@ static const struct net_device_ops sh_eth_netdev_ops = {
static int sh_eth_drv_probe(struct platform_device *pdev) static int sh_eth_drv_probe(struct platform_device *pdev)
{ {
int ret, i, devno = 0; int ret, devno = 0;
struct resource *res; struct resource *res;
struct net_device *ndev = NULL; struct net_device *ndev = NULL;
struct sh_eth_private *mdp; struct sh_eth_private *mdp;

View File

@ -732,7 +732,7 @@ static int adm8211_rf_set_channel(struct ieee80211_hw *dev, unsigned int chan)
/* Nothing to do for ADMtek BBP */ /* Nothing to do for ADMtek BBP */
} else if (priv->bbp_type != ADM8211_TYPE_ADMTEK) } else if (priv->bbp_type != ADM8211_TYPE_ADMTEK)
wiphy_debug(dev->wiphy, "unsupported bbp type %d\n", wiphy_debug(dev->wiphy, "unsupported BBP type %d\n",
priv->bbp_type); priv->bbp_type);
ADM8211_RESTORE(); ADM8211_RESTORE();
@ -1032,7 +1032,7 @@ static int adm8211_hw_init_bbp(struct ieee80211_hw *dev)
break; break;
} }
} else } else
wiphy_debug(dev->wiphy, "unsupported bbp %d\n", priv->bbp_type); wiphy_debug(dev->wiphy, "unsupported BBP %d\n", priv->bbp_type);
ADM8211_CSR_WRITE(SYNRF, 0); ADM8211_CSR_WRITE(SYNRF, 0);
@ -1525,7 +1525,7 @@ static int adm8211_start(struct ieee80211_hw *dev)
retval = request_irq(priv->pdev->irq, adm8211_interrupt, retval = request_irq(priv->pdev->irq, adm8211_interrupt,
IRQF_SHARED, "adm8211", dev); IRQF_SHARED, "adm8211", dev);
if (retval) { if (retval) {
wiphy_err(dev->wiphy, "failed to register irq handler\n"); wiphy_err(dev->wiphy, "failed to register IRQ handler\n");
goto fail; goto fail;
} }
@ -1902,7 +1902,7 @@ static int __devinit adm8211_probe(struct pci_dev *pdev,
goto err_free_eeprom; goto err_free_eeprom;
} }
wiphy_info(dev->wiphy, "hwaddr %pm, rev 0x%02x\n", wiphy_info(dev->wiphy, "hwaddr %pM, Rev 0x%02x\n",
dev->wiphy->perm_addr, pdev->revision); dev->wiphy->perm_addr, pdev->revision);
return 0; return 0;

View File

@ -655,7 +655,7 @@ static int at76_get_hw_config(struct at76_priv *priv)
exit: exit:
kfree(hwcfg); kfree(hwcfg);
if (ret < 0) if (ret < 0)
wiphy_err(priv->hw->wiphy, "cannot get hw config (error %d)\n", wiphy_err(priv->hw->wiphy, "cannot get HW Config (error %d)\n",
ret); ret);
return ret; return ret;
@ -960,7 +960,7 @@ static void at76_dump_mib_mac_addr(struct at76_priv *priv)
sizeof(struct mib_mac_addr)); sizeof(struct mib_mac_addr));
if (ret < 0) { if (ret < 0) {
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"at76_get_mib (mac_addr) failed: %d\n", ret); "at76_get_mib (MAC_ADDR) failed: %d\n", ret);
goto exit; goto exit;
} }
@ -989,7 +989,7 @@ static void at76_dump_mib_mac_wep(struct at76_priv *priv)
sizeof(struct mib_mac_wep)); sizeof(struct mib_mac_wep));
if (ret < 0) { if (ret < 0) {
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"at76_get_mib (mac_wep) failed: %d\n", ret); "at76_get_mib (MAC_WEP) failed: %d\n", ret);
goto exit; goto exit;
} }
@ -1026,7 +1026,7 @@ static void at76_dump_mib_mac_mgmt(struct at76_priv *priv)
sizeof(struct mib_mac_mgmt)); sizeof(struct mib_mac_mgmt));
if (ret < 0) { if (ret < 0) {
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"at76_get_mib (mac_mgmt) failed: %d\n", ret); "at76_get_mib (MAC_MGMT) failed: %d\n", ret);
goto exit; goto exit;
} }
@ -1062,7 +1062,7 @@ static void at76_dump_mib_mac(struct at76_priv *priv)
ret = at76_get_mib(priv->udev, MIB_MAC, m, sizeof(struct mib_mac)); ret = at76_get_mib(priv->udev, MIB_MAC, m, sizeof(struct mib_mac));
if (ret < 0) { if (ret < 0) {
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"at76_get_mib (mac) failed: %d\n", ret); "at76_get_mib (MAC) failed: %d\n", ret);
goto exit; goto exit;
} }
@ -1099,7 +1099,7 @@ static void at76_dump_mib_phy(struct at76_priv *priv)
ret = at76_get_mib(priv->udev, MIB_PHY, m, sizeof(struct mib_phy)); ret = at76_get_mib(priv->udev, MIB_PHY, m, sizeof(struct mib_phy));
if (ret < 0) { if (ret < 0) {
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"at76_get_mib (phy) failed: %d\n", ret); "at76_get_mib (PHY) failed: %d\n", ret);
goto exit; goto exit;
} }
@ -1132,7 +1132,7 @@ static void at76_dump_mib_local(struct at76_priv *priv)
ret = at76_get_mib(priv->udev, MIB_LOCAL, m, sizeof(struct mib_local)); ret = at76_get_mib(priv->udev, MIB_LOCAL, m, sizeof(struct mib_local));
if (ret < 0) { if (ret < 0) {
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"at76_get_mib (local) failed: %d\n", ret); "at76_get_mib (LOCAL) failed: %d\n", ret);
goto exit; goto exit;
} }
@ -1158,7 +1158,7 @@ static void at76_dump_mib_mdomain(struct at76_priv *priv)
sizeof(struct mib_mdomain)); sizeof(struct mib_mdomain));
if (ret < 0) { if (ret < 0) {
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"at76_get_mib (mdomain) failed: %d\n", ret); "at76_get_mib (MDOMAIN) failed: %d\n", ret);
goto exit; goto exit;
} }
@ -1229,7 +1229,7 @@ static int at76_submit_rx_urb(struct at76_priv *priv)
struct sk_buff *skb = priv->rx_skb; struct sk_buff *skb = priv->rx_skb;
if (!priv->rx_urb) { if (!priv->rx_urb) {
wiphy_err(priv->hw->wiphy, "%s: priv->rx_urb is null\n", wiphy_err(priv->hw->wiphy, "%s: priv->rx_urb is NULL\n",
__func__); __func__);
return -EFAULT; return -EFAULT;
} }
@ -1792,7 +1792,7 @@ static int at76_mac80211_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
wiphy_err(priv->hw->wiphy, "error in tx submit urb: %d\n", ret); wiphy_err(priv->hw->wiphy, "error in tx submit urb: %d\n", ret);
if (ret == -EINVAL) if (ret == -EINVAL)
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"-einval: tx urb %p hcpriv %p complete %p\n", "-EINVAL: tx urb %p hcpriv %p complete %p\n",
priv->tx_urb, priv->tx_urb,
priv->tx_urb->hcpriv, priv->tx_urb->complete); priv->tx_urb->hcpriv, priv->tx_urb->complete);
} }
@ -2310,7 +2310,7 @@ static int at76_init_new_device(struct at76_priv *priv,
priv->mac80211_registered = 1; priv->mac80211_registered = 1;
wiphy_info(priv->hw->wiphy, "usb %s, mac %pm, firmware %d.%d.%d-%d\n", wiphy_info(priv->hw->wiphy, "USB %s, MAC %pM, firmware %d.%d.%d-%d\n",
dev_name(&interface->dev), priv->mac_addr, dev_name(&interface->dev), priv->mac_addr,
priv->fw_version.major, priv->fw_version.minor, priv->fw_version.major, priv->fw_version.minor,
priv->fw_version.patch, priv->fw_version.build); priv->fw_version.patch, priv->fw_version.build);

View File

@ -245,7 +245,7 @@ static void __ar9170_dump_txstats(struct ar9170 *ar)
{ {
int i; int i;
wiphy_debug(ar->hw->wiphy, "qos queue stats\n"); wiphy_debug(ar->hw->wiphy, "QoS queue stats\n");
for (i = 0; i < __AR9170_NUM_TXQ; i++) for (i = 0; i < __AR9170_NUM_TXQ; i++)
wiphy_debug(ar->hw->wiphy, wiphy_debug(ar->hw->wiphy,
@ -387,7 +387,7 @@ static struct sk_buff *ar9170_get_queued_skb(struct ar9170 *ar,
if (mac && compare_ether_addr(ieee80211_get_DA(hdr), mac)) { if (mac && compare_ether_addr(ieee80211_get_DA(hdr), mac)) {
#ifdef AR9170_QUEUE_DEBUG #ifdef AR9170_QUEUE_DEBUG
wiphy_debug(ar->hw->wiphy, wiphy_debug(ar->hw->wiphy,
"skip frame => da %pm != %pm\n", "skip frame => DA %pM != %pM\n",
mac, ieee80211_get_DA(hdr)); mac, ieee80211_get_DA(hdr));
ar9170_print_txheader(ar, skb); ar9170_print_txheader(ar, skb);
#endif /* AR9170_QUEUE_DEBUG */ #endif /* AR9170_QUEUE_DEBUG */

View File

@ -2723,14 +2723,6 @@ static void __ipw2100_rx_process(struct ipw2100_priv *priv)
packet = &priv->rx_buffers[i]; packet = &priv->rx_buffers[i];
/* Sync the DMA for the STATUS buffer so CPU is sure to get
* the correct values */
pci_dma_sync_single_for_cpu(priv->pci_dev,
sq->nic +
sizeof(struct ipw2100_status) * i,
sizeof(struct ipw2100_status),
PCI_DMA_FROMDEVICE);
/* Sync the DMA for the RX buffer so CPU is sure to get /* Sync the DMA for the RX buffer so CPU is sure to get
* the correct values */ * the correct values */
pci_dma_sync_single_for_cpu(priv->pci_dev, packet->dma_addr, pci_dma_sync_single_for_cpu(priv->pci_dev, packet->dma_addr,

View File

@ -265,7 +265,7 @@ struct iwl_cfg iwl1000_bgn_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 128, .max_event_log_size = 128,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -297,7 +297,7 @@ struct iwl_cfg iwl1000_bg_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 128, .max_event_log_size = 128,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,

View File

@ -2731,7 +2731,7 @@ static struct iwl_cfg iwl3945_bg_cfg = {
.led_compensation = 64, .led_compensation = 64,
.broken_powersave = true, .broken_powersave = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.tx_power_by_driver = true, .tx_power_by_driver = true,
}; };
@ -2752,7 +2752,7 @@ static struct iwl_cfg iwl3945_abg_cfg = {
.led_compensation = 64, .led_compensation = 64,
.broken_powersave = true, .broken_powersave = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.tx_power_by_driver = true, .tx_power_by_driver = true,
}; };

View File

@ -2322,7 +2322,7 @@ struct iwl_cfg iwl4965_agn_cfg = {
.led_compensation = 61, .led_compensation = 61,
.chain_noise_num_beacons = IWL4965_CAL_NUM_BEACONS, .chain_noise_num_beacons = IWL4965_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.temperature_kelvin = true, .temperature_kelvin = true,
.max_event_log_size = 512, .max_event_log_size = 512,
.tx_power_by_driver = true, .tx_power_by_driver = true,

View File

@ -510,7 +510,7 @@ struct iwl_cfg iwl5300_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -541,7 +541,7 @@ struct iwl_cfg iwl5100_bgn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -570,7 +570,7 @@ struct iwl_cfg iwl5100_abg_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -601,7 +601,7 @@ struct iwl_cfg iwl5100_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -632,7 +632,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -663,7 +663,7 @@ struct iwl_cfg iwl5150_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -693,7 +693,7 @@ struct iwl_cfg iwl5150_abg_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,

View File

@ -388,7 +388,7 @@ struct iwl_cfg iwl6000g2a_2agn_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -424,7 +424,7 @@ struct iwl_cfg iwl6000g2a_2abg_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true, .chain_noise_calib_by_driver = true,
@ -459,7 +459,7 @@ struct iwl_cfg iwl6000g2a_2bg_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true, .chain_noise_calib_by_driver = true,
@ -496,7 +496,7 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true, .chain_noise_calib_by_driver = true,
@ -532,7 +532,7 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true, .chain_noise_calib_by_driver = true,
@ -570,7 +570,7 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true, .chain_noise_calib_by_driver = true,
@ -606,7 +606,7 @@ struct iwl_cfg iwl6000g2b_2bg_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true, .chain_noise_calib_by_driver = true,
@ -644,7 +644,7 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true, .chain_noise_calib_by_driver = true,
@ -680,7 +680,7 @@ struct iwl_cfg iwl6000g2b_bg_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512, .max_event_log_size = 512,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true, .chain_noise_calib_by_driver = true,
@ -721,7 +721,7 @@ struct iwl_cfg iwl6000i_2agn_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024, .max_event_log_size = 1024,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -756,7 +756,7 @@ struct iwl_cfg iwl6000i_2abg_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024, .max_event_log_size = 1024,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -791,7 +791,7 @@ struct iwl_cfg iwl6000i_2bg_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024, .max_event_log_size = 1024,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -828,7 +828,7 @@ struct iwl_cfg iwl6050_2agn_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1500, .chain_noise_scale = 1500,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024, .max_event_log_size = 1024,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -866,7 +866,7 @@ struct iwl_cfg iwl6050g2_bgn_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1500, .chain_noise_scale = 1500,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024, .max_event_log_size = 1024,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -902,7 +902,7 @@ struct iwl_cfg iwl6050_2abg_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1500, .chain_noise_scale = 1500,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024, .max_event_log_size = 1024,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,
@ -940,7 +940,7 @@ struct iwl_cfg iwl6000_3agn_cfg = {
.support_ct_kill_exit = true, .support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000, .chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024, .max_event_log_size = 1024,
.ucode_tracing = true, .ucode_tracing = true,
.sensitivity_calib_by_driver = true, .sensitivity_calib_by_driver = true,

View File

@ -3667,6 +3667,49 @@ out_exit:
IWL_DEBUG_MAC80211(priv, "leave\n"); IWL_DEBUG_MAC80211(priv, "leave\n");
} }
static void iwlagn_configure_filter(struct ieee80211_hw *hw,
unsigned int changed_flags,
unsigned int *total_flags,
u64 multicast)
{
struct iwl_priv *priv = hw->priv;
__le32 filter_or = 0, filter_nand = 0;
#define CHK(test, flag) do { \
if (*total_flags & (test)) \
filter_or |= (flag); \
else \
filter_nand |= (flag); \
} while (0)
IWL_DEBUG_MAC80211(priv, "Enter: changed: 0x%x, total: 0x%x\n",
changed_flags, *total_flags);
CHK(FIF_OTHER_BSS | FIF_PROMISC_IN_BSS, RXON_FILTER_PROMISC_MSK);
CHK(FIF_CONTROL, RXON_FILTER_CTL2HOST_MSK);
CHK(FIF_BCN_PRBRESP_PROMISC, RXON_FILTER_BCON_AWARE_MSK);
#undef CHK
mutex_lock(&priv->mutex);
priv->staging_rxon.filter_flags &= ~filter_nand;
priv->staging_rxon.filter_flags |= filter_or;
iwlcore_commit_rxon(priv);
mutex_unlock(&priv->mutex);
/*
* Receiving all multicast frames is always enabled by the
* default flags setup in iwl_connection_init_rx_config()
* since we currently do not support programming multicast
* filters into the device.
*/
*total_flags &= FIF_OTHER_BSS | FIF_ALLMULTI | FIF_PROMISC_IN_BSS |
FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL;
}
static void iwl_mac_flush(struct ieee80211_hw *hw, bool drop) static void iwl_mac_flush(struct ieee80211_hw *hw, bool drop)
{ {
struct iwl_priv *priv = hw->priv; struct iwl_priv *priv = hw->priv;
@ -3867,7 +3910,7 @@ static struct ieee80211_ops iwl_hw_ops = {
.add_interface = iwl_mac_add_interface, .add_interface = iwl_mac_add_interface,
.remove_interface = iwl_mac_remove_interface, .remove_interface = iwl_mac_remove_interface,
.config = iwl_mac_config, .config = iwl_mac_config,
.configure_filter = iwl_configure_filter, .configure_filter = iwlagn_configure_filter,
.set_key = iwl_mac_set_key, .set_key = iwl_mac_set_key,
.update_tkip_key = iwl_mac_update_tkip_key, .update_tkip_key = iwl_mac_update_tkip_key,
.conf_tx = iwl_mac_conf_tx, .conf_tx = iwl_mac_conf_tx,

View File

@ -1328,51 +1328,6 @@ out:
EXPORT_SYMBOL(iwl_apm_init); EXPORT_SYMBOL(iwl_apm_init);
void iwl_configure_filter(struct ieee80211_hw *hw,
unsigned int changed_flags,
unsigned int *total_flags,
u64 multicast)
{
struct iwl_priv *priv = hw->priv;
__le32 filter_or = 0, filter_nand = 0;
#define CHK(test, flag) do { \
if (*total_flags & (test)) \
filter_or |= (flag); \
else \
filter_nand |= (flag); \
} while (0)
IWL_DEBUG_MAC80211(priv, "Enter: changed: 0x%x, total: 0x%x\n",
changed_flags, *total_flags);
CHK(FIF_OTHER_BSS | FIF_PROMISC_IN_BSS, RXON_FILTER_PROMISC_MSK);
CHK(FIF_CONTROL, RXON_FILTER_CTL2HOST_MSK);
CHK(FIF_BCN_PRBRESP_PROMISC, RXON_FILTER_BCON_AWARE_MSK);
#undef CHK
mutex_lock(&priv->mutex);
priv->staging_rxon.filter_flags &= ~filter_nand;
priv->staging_rxon.filter_flags |= filter_or;
iwlcore_commit_rxon(priv);
mutex_unlock(&priv->mutex);
/*
* Receiving all multicast frames is always enabled by the
* default flags setup in iwl_connection_init_rx_config()
* since we currently do not support programming multicast
* filters into the device.
*/
*total_flags &= FIF_OTHER_BSS | FIF_ALLMULTI | FIF_PROMISC_IN_BSS |
FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL;
}
EXPORT_SYMBOL(iwl_configure_filter);
int iwl_set_hw_params(struct iwl_priv *priv) int iwl_set_hw_params(struct iwl_priv *priv)
{ {
priv->hw_params.max_rxq_size = RX_QUEUE_SIZE; priv->hw_params.max_rxq_size = RX_QUEUE_SIZE;

View File

@ -372,9 +372,6 @@ int iwl_set_decrypted_flag(struct iwl_priv *priv,
u32 decrypt_res, u32 decrypt_res,
struct ieee80211_rx_status *stats); struct ieee80211_rx_status *stats);
void iwl_irq_handle_error(struct iwl_priv *priv); void iwl_irq_handle_error(struct iwl_priv *priv);
void iwl_configure_filter(struct ieee80211_hw *hw,
unsigned int changed_flags,
unsigned int *total_flags, u64 multicast);
int iwl_set_hw_params(struct iwl_priv *priv); int iwl_set_hw_params(struct iwl_priv *priv);
void iwl_post_associate(struct iwl_priv *priv, struct ieee80211_vif *vif); void iwl_post_associate(struct iwl_priv *priv, struct ieee80211_vif *vif);
void iwl_bss_info_changed(struct ieee80211_hw *hw, void iwl_bss_info_changed(struct ieee80211_hw *hw,

View File

@ -1049,7 +1049,8 @@ struct iwl_event_log {
#define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5) #define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5)
/* timer constants use to monitor and recover stuck tx queues in mSecs */ /* timer constants use to monitor and recover stuck tx queues in mSecs */
#define IWL_MONITORING_PERIOD (1000) #define IWL_DEF_MONITORING_PERIOD (1000)
#define IWL_LONG_MONITORING_PERIOD (5000)
#define IWL_ONE_HUNDRED_MSECS (100) #define IWL_ONE_HUNDRED_MSECS (100)
#define IWL_SIXTY_SECS (60000) #define IWL_SIXTY_SECS (60000)

View File

@ -3391,6 +3391,55 @@ static int iwl3945_mac_sta_add(struct ieee80211_hw *hw,
return 0; return 0;
} }
static void iwl3945_configure_filter(struct ieee80211_hw *hw,
unsigned int changed_flags,
unsigned int *total_flags,
u64 multicast)
{
struct iwl_priv *priv = hw->priv;
__le32 filter_or = 0, filter_nand = 0;
#define CHK(test, flag) do { \
if (*total_flags & (test)) \
filter_or |= (flag); \
else \
filter_nand |= (flag); \
} while (0)
IWL_DEBUG_MAC80211(priv, "Enter: changed: 0x%x, total: 0x%x\n",
changed_flags, *total_flags);
CHK(FIF_OTHER_BSS | FIF_PROMISC_IN_BSS, RXON_FILTER_PROMISC_MSK);
CHK(FIF_CONTROL, RXON_FILTER_CTL2HOST_MSK);
CHK(FIF_BCN_PRBRESP_PROMISC, RXON_FILTER_BCON_AWARE_MSK);
#undef CHK
mutex_lock(&priv->mutex);
priv->staging_rxon.filter_flags &= ~filter_nand;
priv->staging_rxon.filter_flags |= filter_or;
/*
* Committing directly here breaks for some reason,
* but we'll eventually commit the filter flags
* change anyway.
*/
mutex_unlock(&priv->mutex);
/*
* Receiving all multicast frames is always enabled by the
* default flags setup in iwl_connection_init_rx_config()
* since we currently do not support programming multicast
* filters into the device.
*/
*total_flags &= FIF_OTHER_BSS | FIF_ALLMULTI | FIF_PROMISC_IN_BSS |
FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL;
}
/***************************************************************************** /*****************************************************************************
* *
* sysfs attributes * sysfs attributes
@ -3796,7 +3845,7 @@ static struct ieee80211_ops iwl3945_hw_ops = {
.add_interface = iwl_mac_add_interface, .add_interface = iwl_mac_add_interface,
.remove_interface = iwl_mac_remove_interface, .remove_interface = iwl_mac_remove_interface,
.config = iwl_mac_config, .config = iwl_mac_config,
.configure_filter = iwl_configure_filter, .configure_filter = iwl3945_configure_filter,
.set_key = iwl3945_mac_set_key, .set_key = iwl3945_mac_set_key,
.conf_tx = iwl_mac_conf_tx, .conf_tx = iwl_mac_conf_tx,
.reset_tsf = iwl_mac_reset_tsf, .reset_tsf = iwl_mac_reset_tsf,

View File

@ -486,7 +486,7 @@ static bool mac80211_hwsim_tx_frame(struct ieee80211_hw *hw,
struct ieee80211_rx_status rx_status; struct ieee80211_rx_status rx_status;
if (data->idle) { if (data->idle) {
wiphy_debug(hw->wiphy, "trying to tx when idle - reject\n"); wiphy_debug(hw->wiphy, "Trying to TX when idle - reject\n");
return false; return false;
} }

View File

@ -910,14 +910,14 @@ static int mwl8k_rxq_init(struct ieee80211_hw *hw, int index)
rxq->rxd = pci_alloc_consistent(priv->pdev, size, &rxq->rxd_dma); rxq->rxd = pci_alloc_consistent(priv->pdev, size, &rxq->rxd_dma);
if (rxq->rxd == NULL) { if (rxq->rxd == NULL) {
wiphy_err(hw->wiphy, "failed to alloc rx descriptors\n"); wiphy_err(hw->wiphy, "failed to alloc RX descriptors\n");
return -ENOMEM; return -ENOMEM;
} }
memset(rxq->rxd, 0, size); memset(rxq->rxd, 0, size);
rxq->buf = kmalloc(MWL8K_RX_DESCS * sizeof(*rxq->buf), GFP_KERNEL); rxq->buf = kmalloc(MWL8K_RX_DESCS * sizeof(*rxq->buf), GFP_KERNEL);
if (rxq->buf == NULL) { if (rxq->buf == NULL) {
wiphy_err(hw->wiphy, "failed to alloc rx skbuff list\n"); wiphy_err(hw->wiphy, "failed to alloc RX skbuff list\n");
pci_free_consistent(priv->pdev, size, rxq->rxd, rxq->rxd_dma); pci_free_consistent(priv->pdev, size, rxq->rxd, rxq->rxd_dma);
return -ENOMEM; return -ENOMEM;
} }
@ -1145,14 +1145,14 @@ static int mwl8k_txq_init(struct ieee80211_hw *hw, int index)
txq->txd = pci_alloc_consistent(priv->pdev, size, &txq->txd_dma); txq->txd = pci_alloc_consistent(priv->pdev, size, &txq->txd_dma);
if (txq->txd == NULL) { if (txq->txd == NULL) {
wiphy_err(hw->wiphy, "failed to alloc tx descriptors\n"); wiphy_err(hw->wiphy, "failed to alloc TX descriptors\n");
return -ENOMEM; return -ENOMEM;
} }
memset(txq->txd, 0, size); memset(txq->txd, 0, size);
txq->skb = kmalloc(MWL8K_TX_DESCS * sizeof(*txq->skb), GFP_KERNEL); txq->skb = kmalloc(MWL8K_TX_DESCS * sizeof(*txq->skb), GFP_KERNEL);
if (txq->skb == NULL) { if (txq->skb == NULL) {
wiphy_err(hw->wiphy, "failed to alloc tx skbuff list\n"); wiphy_err(hw->wiphy, "failed to alloc TX skbuff list\n");
pci_free_consistent(priv->pdev, size, txq->txd, txq->txd_dma); pci_free_consistent(priv->pdev, size, txq->txd, txq->txd_dma);
return -ENOMEM; return -ENOMEM;
} }
@ -1573,7 +1573,7 @@ static int mwl8k_post_cmd(struct ieee80211_hw *hw, struct mwl8k_cmd_pkt *cmd)
PCI_DMA_BIDIRECTIONAL); PCI_DMA_BIDIRECTIONAL);
if (!timeout) { if (!timeout) {
wiphy_err(hw->wiphy, "command %s timeout after %u ms\n", wiphy_err(hw->wiphy, "Command %s timeout after %u ms\n",
mwl8k_cmd_name(cmd->code, buf, sizeof(buf)), mwl8k_cmd_name(cmd->code, buf, sizeof(buf)),
MWL8K_CMD_TIMEOUT_MS); MWL8K_CMD_TIMEOUT_MS);
rc = -ETIMEDOUT; rc = -ETIMEDOUT;
@ -1584,11 +1584,11 @@ static int mwl8k_post_cmd(struct ieee80211_hw *hw, struct mwl8k_cmd_pkt *cmd)
rc = cmd->result ? -EINVAL : 0; rc = cmd->result ? -EINVAL : 0;
if (rc) if (rc)
wiphy_err(hw->wiphy, "command %s error 0x%x\n", wiphy_err(hw->wiphy, "Command %s error 0x%x\n",
mwl8k_cmd_name(cmd->code, buf, sizeof(buf)), mwl8k_cmd_name(cmd->code, buf, sizeof(buf)),
le16_to_cpu(cmd->result)); le16_to_cpu(cmd->result));
else if (ms > 2000) else if (ms > 2000)
wiphy_notice(hw->wiphy, "command %s took %d ms\n", wiphy_notice(hw->wiphy, "Command %s took %d ms\n",
mwl8k_cmd_name(cmd->code, mwl8k_cmd_name(cmd->code,
buf, sizeof(buf)), buf, sizeof(buf)),
ms); ms);
@ -3210,7 +3210,7 @@ static int mwl8k_start(struct ieee80211_hw *hw)
rc = request_irq(priv->pdev->irq, mwl8k_interrupt, rc = request_irq(priv->pdev->irq, mwl8k_interrupt,
IRQF_SHARED, MWL8K_NAME, hw); IRQF_SHARED, MWL8K_NAME, hw);
if (rc) { if (rc) {
wiphy_err(hw->wiphy, "failed to register irq handler\n"); wiphy_err(hw->wiphy, "failed to register IRQ handler\n");
return -EIO; return -EIO;
} }
@ -3926,7 +3926,7 @@ static int __devinit mwl8k_probe(struct pci_dev *pdev,
priv->sram = pci_iomap(pdev, 0, 0x10000); priv->sram = pci_iomap(pdev, 0, 0x10000);
if (priv->sram == NULL) { if (priv->sram == NULL) {
wiphy_err(hw->wiphy, "cannot map device sram\n"); wiphy_err(hw->wiphy, "Cannot map device SRAM\n");
goto err_iounmap; goto err_iounmap;
} }
@ -3938,7 +3938,7 @@ static int __devinit mwl8k_probe(struct pci_dev *pdev,
if (priv->regs == NULL) { if (priv->regs == NULL) {
priv->regs = pci_iomap(pdev, 2, 0x10000); priv->regs = pci_iomap(pdev, 2, 0x10000);
if (priv->regs == NULL) { if (priv->regs == NULL) {
wiphy_err(hw->wiphy, "cannot map device registers\n"); wiphy_err(hw->wiphy, "Cannot map device registers\n");
goto err_iounmap; goto err_iounmap;
} }
} }
@ -3950,14 +3950,14 @@ static int __devinit mwl8k_probe(struct pci_dev *pdev,
/* Ask userland hotplug daemon for the device firmware */ /* Ask userland hotplug daemon for the device firmware */
rc = mwl8k_request_firmware(priv); rc = mwl8k_request_firmware(priv);
if (rc) { if (rc) {
wiphy_err(hw->wiphy, "firmware files not found\n"); wiphy_err(hw->wiphy, "Firmware files not found\n");
goto err_stop_firmware; goto err_stop_firmware;
} }
/* Load firmware into hardware */ /* Load firmware into hardware */
rc = mwl8k_load_firmware(hw); rc = mwl8k_load_firmware(hw);
if (rc) { if (rc) {
wiphy_err(hw->wiphy, "cannot start firmware\n"); wiphy_err(hw->wiphy, "Cannot start firmware\n");
goto err_stop_firmware; goto err_stop_firmware;
} }
@ -4047,7 +4047,7 @@ static int __devinit mwl8k_probe(struct pci_dev *pdev,
rc = request_irq(priv->pdev->irq, mwl8k_interrupt, rc = request_irq(priv->pdev->irq, mwl8k_interrupt,
IRQF_SHARED, MWL8K_NAME, hw); IRQF_SHARED, MWL8K_NAME, hw);
if (rc) { if (rc) {
wiphy_err(hw->wiphy, "failed to register irq handler\n"); wiphy_err(hw->wiphy, "failed to register IRQ handler\n");
goto err_free_queues; goto err_free_queues;
} }
@ -4067,7 +4067,7 @@ static int __devinit mwl8k_probe(struct pci_dev *pdev,
rc = mwl8k_cmd_get_hw_spec_sta(hw); rc = mwl8k_cmd_get_hw_spec_sta(hw);
} }
if (rc) { if (rc) {
wiphy_err(hw->wiphy, "cannot initialise firmware\n"); wiphy_err(hw->wiphy, "Cannot initialise firmware\n");
goto err_free_irq; goto err_free_irq;
} }
@ -4081,14 +4081,14 @@ static int __devinit mwl8k_probe(struct pci_dev *pdev,
/* Turn radio off */ /* Turn radio off */
rc = mwl8k_cmd_radio_disable(hw); rc = mwl8k_cmd_radio_disable(hw);
if (rc) { if (rc) {
wiphy_err(hw->wiphy, "cannot disable\n"); wiphy_err(hw->wiphy, "Cannot disable\n");
goto err_free_irq; goto err_free_irq;
} }
/* Clear MAC address */ /* Clear MAC address */
rc = mwl8k_cmd_set_mac_addr(hw, NULL, "\x00\x00\x00\x00\x00\x00"); rc = mwl8k_cmd_set_mac_addr(hw, NULL, "\x00\x00\x00\x00\x00\x00");
if (rc) { if (rc) {
wiphy_err(hw->wiphy, "cannot clear mac address\n"); wiphy_err(hw->wiphy, "Cannot clear MAC address\n");
goto err_free_irq; goto err_free_irq;
} }
@ -4098,7 +4098,7 @@ static int __devinit mwl8k_probe(struct pci_dev *pdev,
rc = ieee80211_register_hw(hw); rc = ieee80211_register_hw(hw);
if (rc) { if (rc) {
wiphy_err(hw->wiphy, "cannot register device\n"); wiphy_err(hw->wiphy, "Cannot register device\n");
goto err_free_queues; goto err_free_queues;
} }

View File

@ -167,7 +167,7 @@ static int p54_generate_band(struct ieee80211_hw *dev,
} }
if (j == 0) { if (j == 0) {
wiphy_err(dev->wiphy, "disabling totally damaged %d GHz band\n", wiphy_err(dev->wiphy, "Disabling totally damaged %d GHz band\n",
(band == IEEE80211_BAND_2GHZ) ? 2 : 5); (band == IEEE80211_BAND_2GHZ) ? 2 : 5);
ret = -ENODATA; ret = -ENODATA;
@ -695,12 +695,12 @@ int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
u8 perm_addr[ETH_ALEN]; u8 perm_addr[ETH_ALEN];
wiphy_warn(dev->wiphy, wiphy_warn(dev->wiphy,
"invalid hwaddr! using randomly generated mac addr\n"); "Invalid hwaddr! Using randomly generated MAC addr\n");
random_ether_addr(perm_addr); random_ether_addr(perm_addr);
SET_IEEE80211_PERM_ADDR(dev, perm_addr); SET_IEEE80211_PERM_ADDR(dev, perm_addr);
} }
wiphy_info(dev->wiphy, "hwaddr %pm, mac:isl38%02x rf:%s\n", wiphy_info(dev->wiphy, "hwaddr %pM, MAC:isl38%02x RF:%s\n",
dev->wiphy->perm_addr, priv->version, dev->wiphy->perm_addr, priv->version,
p54_rf_chips[priv->rxhw]); p54_rf_chips[priv->rxhw]);

View File

@ -125,7 +125,7 @@ int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw)
if (fw_version) if (fw_version)
wiphy_info(priv->hw->wiphy, wiphy_info(priv->hw->wiphy,
"fw rev %s - softmac protocol %x.%x\n", "FW rev %s - Softmac protocol %x.%x\n",
fw_version, priv->fw_var >> 8, priv->fw_var & 0xff); fw_version, priv->fw_var >> 8, priv->fw_var & 0xff);
if (priv->fw_var < 0x500) if (priv->fw_var < 0x500)

View File

@ -58,7 +58,7 @@ static void p54_update_leds(struct work_struct *work)
err = p54_set_leds(priv); err = p54_set_leds(priv);
if (err && net_ratelimit()) if (err && net_ratelimit())
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"failed to update leds (%d).\n", err); "failed to update LEDs (%d).\n", err);
if (rerun) if (rerun)
ieee80211_queue_delayed_work(priv->hw, &priv->led_work, ieee80211_queue_delayed_work(priv->hw, &priv->led_work,
@ -103,7 +103,7 @@ static int p54_register_led(struct p54_common *priv,
err = led_classdev_register(wiphy_dev(priv->hw->wiphy), &led->led_dev); err = led_classdev_register(wiphy_dev(priv->hw->wiphy), &led->led_dev);
if (err) if (err)
wiphy_err(priv->hw->wiphy, wiphy_err(priv->hw->wiphy,
"failed to register %s led.\n", name); "Failed to register %s LED.\n", name);
else else
led->registered = 1; led->registered = 1;

View File

@ -466,7 +466,7 @@ static int p54p_open(struct ieee80211_hw *dev)
P54P_READ(dev_int); P54P_READ(dev_int);
if (!wait_for_completion_interruptible_timeout(&priv->boot_comp, HZ)) { if (!wait_for_completion_interruptible_timeout(&priv->boot_comp, HZ)) {
wiphy_err(dev->wiphy, "cannot boot firmware!\n"); wiphy_err(dev->wiphy, "Cannot boot firmware!\n");
p54p_stop(dev); p54p_stop(dev);
return -ETIMEDOUT; return -ETIMEDOUT;
} }

View File

@ -540,7 +540,7 @@ static void p54_rx_trap(struct p54_common *priv, struct sk_buff *skb)
case P54_TRAP_BEACON_TX: case P54_TRAP_BEACON_TX:
break; break;
case P54_TRAP_RADAR: case P54_TRAP_RADAR:
wiphy_info(priv->hw->wiphy, "radar (freq:%d mhz)\n", freq); wiphy_info(priv->hw->wiphy, "radar (freq:%d MHz)\n", freq);
break; break;
case P54_TRAP_NO_BEACON: case P54_TRAP_NO_BEACON:
if (priv->vif) if (priv->vif)

View File

@ -445,7 +445,7 @@ static int rtl8180_init_rx_ring(struct ieee80211_hw *dev)
&priv->rx_ring_dma); &priv->rx_ring_dma);
if (!priv->rx_ring || (unsigned long)priv->rx_ring & 0xFF) { if (!priv->rx_ring || (unsigned long)priv->rx_ring & 0xFF) {
wiphy_err(dev->wiphy, "cannot allocate rx ring\n"); wiphy_err(dev->wiphy, "Cannot allocate RX ring\n");
return -ENOMEM; return -ENOMEM;
} }
@ -502,7 +502,7 @@ static int rtl8180_init_tx_ring(struct ieee80211_hw *dev,
ring = pci_alloc_consistent(priv->pdev, sizeof(*ring) * entries, &dma); ring = pci_alloc_consistent(priv->pdev, sizeof(*ring) * entries, &dma);
if (!ring || (unsigned long)ring & 0xFF) { if (!ring || (unsigned long)ring & 0xFF) {
wiphy_err(dev->wiphy, "cannot allocate tx ring (prio = %d)\n", wiphy_err(dev->wiphy, "Cannot allocate TX ring (prio = %d)\n",
prio); prio);
return -ENOMEM; return -ENOMEM;
} }
@ -568,7 +568,7 @@ static int rtl8180_start(struct ieee80211_hw *dev)
ret = request_irq(priv->pdev->irq, rtl8180_interrupt, ret = request_irq(priv->pdev->irq, rtl8180_interrupt,
IRQF_SHARED, KBUILD_MODNAME, dev); IRQF_SHARED, KBUILD_MODNAME, dev);
if (ret) { if (ret) {
wiphy_err(dev->wiphy, "failed to register irq handler\n"); wiphy_err(dev->wiphy, "failed to register IRQ handler\n");
goto err_free_rings; goto err_free_rings;
} }

View File

@ -573,7 +573,7 @@ static int rtl8187_cmd_reset(struct ieee80211_hw *dev)
} while (--i); } while (--i);
if (!i) { if (!i) {
wiphy_err(dev->wiphy, "reset timeout!\n"); wiphy_err(dev->wiphy, "Reset timeout!\n");
return -ETIMEDOUT; return -ETIMEDOUT;
} }
@ -1526,7 +1526,7 @@ static int __devinit rtl8187_probe(struct usb_interface *intf,
mutex_init(&priv->conf_mutex); mutex_init(&priv->conf_mutex);
skb_queue_head_init(&priv->b_tx_status.queue); skb_queue_head_init(&priv->b_tx_status.queue);
wiphy_info(dev->wiphy, "hwaddr %pm, %s v%d + %s, rfkill mask %d\n", wiphy_info(dev->wiphy, "hwaddr %pM, %s V%d + %s, rfkill mask %d\n",
mac_addr, chip_name, priv->asic_rev, priv->rf->name, mac_addr, chip_name, priv->asic_rev, priv->rf->name,
priv->rfkill_mask); priv->rfkill_mask);

View File

@ -366,7 +366,7 @@ static void rtl8225_rf_init(struct ieee80211_hw *dev)
rtl8225_write(dev, 0x02, 0x044d); rtl8225_write(dev, 0x02, 0x044d);
msleep(100); msleep(100);
if (!(rtl8225_read(dev, 6) & (1 << 7))) if (!(rtl8225_read(dev, 6) & (1 << 7)))
wiphy_warn(dev->wiphy, "rf calibration failed! %x\n", wiphy_warn(dev->wiphy, "RF Calibration Failed! %x\n",
rtl8225_read(dev, 6)); rtl8225_read(dev, 6));
} }
@ -735,7 +735,7 @@ static void rtl8225z2_rf_init(struct ieee80211_hw *dev)
rtl8225_write(dev, 0x02, 0x044D); rtl8225_write(dev, 0x02, 0x044D);
msleep(100); msleep(100);
if (!(rtl8225_read(dev, 6) & (1 << 7))) if (!(rtl8225_read(dev, 6) & (1 << 7)))
wiphy_warn(dev->wiphy, "rf calibration failed! %x\n", wiphy_warn(dev->wiphy, "RF Calibration Failed! %x\n",
rtl8225_read(dev, 6)); rtl8225_read(dev, 6));
} }

View File

@ -1,6 +1,8 @@
#ifndef _XT_IPVS_H #ifndef _XT_IPVS_H
#define _XT_IPVS_H #define _XT_IPVS_H
#include <linux/types.h>
enum { enum {
XT_IPVS_IPVS_PROPERTY = 1 << 0, /* all other options imply this one */ XT_IPVS_IPVS_PROPERTY = 1 << 0, /* all other options imply this one */
XT_IPVS_PROTO = 1 << 1, XT_IPVS_PROTO = 1 << 1,

View File

@ -0,0 +1,30 @@
/*
*pxa168 ethernet platform device data definition file.
*/
#ifndef __LINUX_PXA168_ETH_H
#define __LINUX_PXA168_ETH_H
struct pxa168_eth_platform_data {
int port_number;
int phy_addr;
/*
* If speed is 0, then speed and duplex are autonegotiated.
*/
int speed; /* 0, SPEED_10, SPEED_100 */
int duplex; /* DUPLEX_HALF or DUPLEX_FULL */
/*
* Override default RX/TX queue sizes if nonzero.
*/
int rx_queue_size;
int tx_queue_size;
/*
* init callback is used for board specific initialization
* e.g on Aspenite its used to initialize the PHY transceiver.
*/
int (*init)(void);
};
#endif /* __LINUX_PXA168_ETH_H */

View File

@ -510,6 +510,7 @@ static int vlan_dev_open(struct net_device *dev)
if (vlan->flags & VLAN_FLAG_GVRP) if (vlan->flags & VLAN_FLAG_GVRP)
vlan_gvrp_request_join(dev); vlan_gvrp_request_join(dev);
if (netif_carrier_ok(real_dev))
netif_carrier_on(dev); netif_carrier_on(dev);
return 0; return 0;

View File

@ -3156,7 +3156,7 @@ pull:
put_page(skb_shinfo(skb)->frags[0].page); put_page(skb_shinfo(skb)->frags[0].page);
memmove(skb_shinfo(skb)->frags, memmove(skb_shinfo(skb)->frags,
skb_shinfo(skb)->frags + 1, skb_shinfo(skb)->frags + 1,
--skb_shinfo(skb)->nr_frags); --skb_shinfo(skb)->nr_frags * sizeof(skb_frag_t));
} }
} }

View File

@ -735,6 +735,7 @@ static void get_counters(const struct xt_table_info *t,
if (cpu == curcpu) if (cpu == curcpu)
continue; continue;
i = 0; i = 0;
local_bh_disable();
xt_info_wrlock(cpu); xt_info_wrlock(cpu);
xt_entry_foreach(iter, t->entries[cpu], t->size) { xt_entry_foreach(iter, t->entries[cpu], t->size) {
ADD_COUNTER(counters[i], iter->counters.bcnt, ADD_COUNTER(counters[i], iter->counters.bcnt,
@ -742,6 +743,7 @@ static void get_counters(const struct xt_table_info *t,
++i; ++i;
} }
xt_info_wrunlock(cpu); xt_info_wrunlock(cpu);
local_bh_enable();
} }
put_cpu(); put_cpu();
} }

View File

@ -909,6 +909,7 @@ get_counters(const struct xt_table_info *t,
if (cpu == curcpu) if (cpu == curcpu)
continue; continue;
i = 0; i = 0;
local_bh_disable();
xt_info_wrlock(cpu); xt_info_wrlock(cpu);
xt_entry_foreach(iter, t->entries[cpu], t->size) { xt_entry_foreach(iter, t->entries[cpu], t->size) {
ADD_COUNTER(counters[i], iter->counters.bcnt, ADD_COUNTER(counters[i], iter->counters.bcnt,
@ -916,6 +917,7 @@ get_counters(const struct xt_table_info *t,
++i; /* macro does multi eval of i */ ++i; /* macro does multi eval of i */
} }
xt_info_wrunlock(cpu); xt_info_wrunlock(cpu);
local_bh_enable();
} }
put_cpu(); put_cpu();
} }

View File

@ -922,6 +922,7 @@ get_counters(const struct xt_table_info *t,
if (cpu == curcpu) if (cpu == curcpu)
continue; continue;
i = 0; i = 0;
local_bh_disable();
xt_info_wrlock(cpu); xt_info_wrlock(cpu);
xt_entry_foreach(iter, t->entries[cpu], t->size) { xt_entry_foreach(iter, t->entries[cpu], t->size) {
ADD_COUNTER(counters[i], iter->counters.bcnt, ADD_COUNTER(counters[i], iter->counters.bcnt,
@ -929,6 +930,7 @@ get_counters(const struct xt_table_info *t,
++i; ++i;
} }
xt_info_wrunlock(cpu); xt_info_wrunlock(cpu);
local_bh_enable();
} }
put_cpu(); put_cpu();
} }

View File

@ -169,6 +169,7 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
{ {
struct irlan_cb *self = netdev_priv(dev); struct irlan_cb *self = netdev_priv(dev);
int ret; int ret;
unsigned int len;
/* skb headroom large enough to contain all IrDA-headers? */ /* skb headroom large enough to contain all IrDA-headers? */
if ((skb_headroom(skb) < self->max_header_size) || (skb_shared(skb))) { if ((skb_headroom(skb) < self->max_header_size) || (skb_shared(skb))) {
@ -188,6 +189,7 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
dev->trans_start = jiffies; dev->trans_start = jiffies;
len = skb->len;
/* Now queue the packet in the transport layer */ /* Now queue the packet in the transport layer */
if (self->use_udata) if (self->use_udata)
ret = irttp_udata_request(self->tsap_data, skb); ret = irttp_udata_request(self->tsap_data, skb);
@ -209,7 +211,7 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
self->stats.tx_dropped++; self->stats.tx_dropped++;
} else { } else {
self->stats.tx_packets++; self->stats.tx_packets++;
self->stats.tx_bytes += skb->len; self->stats.tx_bytes += len;
} }
return NETDEV_TX_OK; return NETDEV_TX_OK;

View File

@ -1406,7 +1406,7 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
struct netlink_sock *nlk = nlk_sk(sk); struct netlink_sock *nlk = nlk_sk(sk);
int noblock = flags&MSG_DONTWAIT; int noblock = flags&MSG_DONTWAIT;
size_t copied; size_t copied;
struct sk_buff *skb, *frag __maybe_unused = NULL; struct sk_buff *skb, *data_skb;
int err; int err;
if (flags&MSG_OOB) if (flags&MSG_OOB)
@ -1418,45 +1418,35 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
if (skb == NULL) if (skb == NULL)
goto out; goto out;
data_skb = skb;
#ifdef CONFIG_COMPAT_NETLINK_MESSAGES #ifdef CONFIG_COMPAT_NETLINK_MESSAGES
if (unlikely(skb_shinfo(skb)->frag_list)) { if (unlikely(skb_shinfo(skb)->frag_list)) {
bool need_compat = !!(flags & MSG_CMSG_COMPAT);
/* /*
* If this skb has a frag_list, then here that means that * If this skb has a frag_list, then here that means that we
* we will have to use the frag_list skb for compat tasks * will have to use the frag_list skb's data for compat tasks
* and the regular skb for non-compat tasks. * and the regular skb's data for normal (non-compat) tasks.
* *
* The skb might (and likely will) be cloned, so we can't * If we need to send the compat skb, assign it to the
* just reset frag_list and go on with things -- we need to * 'data_skb' variable so that it will be used below for data
* keep that. For the compat case that's easy -- simply get * copying. We keep 'skb' for everything else, including
* a reference to the compat skb and free the regular one * freeing both later.
* including the frag. For the non-compat case, we need to
* avoid sending the frag to the user -- so assign NULL but
* restore it below before freeing the skb.
*/ */
if (need_compat) { if (flags & MSG_CMSG_COMPAT)
struct sk_buff *compskb = skb_shinfo(skb)->frag_list; data_skb = skb_shinfo(skb)->frag_list;
skb_get(compskb);
kfree_skb(skb);
skb = compskb;
} else {
frag = skb_shinfo(skb)->frag_list;
skb_shinfo(skb)->frag_list = NULL;
}
} }
#endif #endif
msg->msg_namelen = 0; msg->msg_namelen = 0;
copied = skb->len; copied = data_skb->len;
if (len < copied) { if (len < copied) {
msg->msg_flags |= MSG_TRUNC; msg->msg_flags |= MSG_TRUNC;
copied = len; copied = len;
} }
skb_reset_transport_header(skb); skb_reset_transport_header(data_skb);
err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); err = skb_copy_datagram_iovec(data_skb, 0, msg->msg_iov, copied);
if (msg->msg_name) { if (msg->msg_name) {
struct sockaddr_nl *addr = (struct sockaddr_nl *)msg->msg_name; struct sockaddr_nl *addr = (struct sockaddr_nl *)msg->msg_name;
@ -1476,11 +1466,7 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
} }
siocb->scm->creds = *NETLINK_CREDS(skb); siocb->scm->creds = *NETLINK_CREDS(skb);
if (flags & MSG_TRUNC) if (flags & MSG_TRUNC)
copied = skb->len; copied = data_skb->len;
#ifdef CONFIG_COMPAT_NETLINK_MESSAGES
skb_shinfo(skb)->frag_list = frag;
#endif
skb_free_datagram(sk, skb); skb_free_datagram(sk, skb);

View File

@ -297,7 +297,7 @@ static int rds_still_queued(struct rds_sock *rs, struct rds_incoming *inc,
int rds_notify_queue_get(struct rds_sock *rs, struct msghdr *msghdr) int rds_notify_queue_get(struct rds_sock *rs, struct msghdr *msghdr)
{ {
struct rds_notifier *notifier; struct rds_notifier *notifier;
struct rds_rdma_notify cmsg; struct rds_rdma_notify cmsg = { 0 }; /* fill holes with zero */
unsigned int count = 0, max_messages = ~0U; unsigned int count = 0, max_messages = ~0U;
unsigned long flags; unsigned long flags;
LIST_HEAD(copy); LIST_HEAD(copy);

View File

@ -152,21 +152,24 @@ static int tcf_gact(struct sk_buff *skb, struct tc_action *a, struct tcf_result
static int tcf_gact_dump(struct sk_buff *skb, struct tc_action *a, int bind, int ref) static int tcf_gact_dump(struct sk_buff *skb, struct tc_action *a, int bind, int ref)
{ {
unsigned char *b = skb_tail_pointer(skb); unsigned char *b = skb_tail_pointer(skb);
struct tc_gact opt;
struct tcf_gact *gact = a->priv; struct tcf_gact *gact = a->priv;
struct tc_gact opt = {
.index = gact->tcf_index,
.refcnt = gact->tcf_refcnt - ref,
.bindcnt = gact->tcf_bindcnt - bind,
.action = gact->tcf_action,
};
struct tcf_t t; struct tcf_t t;
opt.index = gact->tcf_index;
opt.refcnt = gact->tcf_refcnt - ref;
opt.bindcnt = gact->tcf_bindcnt - bind;
opt.action = gact->tcf_action;
NLA_PUT(skb, TCA_GACT_PARMS, sizeof(opt), &opt); NLA_PUT(skb, TCA_GACT_PARMS, sizeof(opt), &opt);
#ifdef CONFIG_GACT_PROB #ifdef CONFIG_GACT_PROB
if (gact->tcfg_ptype) { if (gact->tcfg_ptype) {
struct tc_gact_p p_opt; struct tc_gact_p p_opt = {
p_opt.paction = gact->tcfg_paction; .paction = gact->tcfg_paction,
p_opt.pval = gact->tcfg_pval; .pval = gact->tcfg_pval,
p_opt.ptype = gact->tcfg_ptype; .ptype = gact->tcfg_ptype,
};
NLA_PUT(skb, TCA_GACT_PROB, sizeof(p_opt), &p_opt); NLA_PUT(skb, TCA_GACT_PROB, sizeof(p_opt), &p_opt);
} }
#endif #endif

View File

@ -219,15 +219,16 @@ static int tcf_mirred_dump(struct sk_buff *skb, struct tc_action *a, int bind, i
{ {
unsigned char *b = skb_tail_pointer(skb); unsigned char *b = skb_tail_pointer(skb);
struct tcf_mirred *m = a->priv; struct tcf_mirred *m = a->priv;
struct tc_mirred opt; struct tc_mirred opt = {
.index = m->tcf_index,
.action = m->tcf_action,
.refcnt = m->tcf_refcnt - ref,
.bindcnt = m->tcf_bindcnt - bind,
.eaction = m->tcfm_eaction,
.ifindex = m->tcfm_ifindex,
};
struct tcf_t t; struct tcf_t t;
opt.index = m->tcf_index;
opt.action = m->tcf_action;
opt.refcnt = m->tcf_refcnt - ref;
opt.bindcnt = m->tcf_bindcnt - bind;
opt.eaction = m->tcfm_eaction;
opt.ifindex = m->tcfm_ifindex;
NLA_PUT(skb, TCA_MIRRED_PARMS, sizeof(opt), &opt); NLA_PUT(skb, TCA_MIRRED_PARMS, sizeof(opt), &opt);
t.install = jiffies_to_clock_t(jiffies - m->tcf_tm.install); t.install = jiffies_to_clock_t(jiffies - m->tcf_tm.install);
t.lastuse = jiffies_to_clock_t(jiffies - m->tcf_tm.lastuse); t.lastuse = jiffies_to_clock_t(jiffies - m->tcf_tm.lastuse);

View File

@ -272,19 +272,19 @@ static int tcf_nat_dump(struct sk_buff *skb, struct tc_action *a,
{ {
unsigned char *b = skb_tail_pointer(skb); unsigned char *b = skb_tail_pointer(skb);
struct tcf_nat *p = a->priv; struct tcf_nat *p = a->priv;
struct tc_nat opt; struct tc_nat opt = {
.old_addr = p->old_addr,
.new_addr = p->new_addr,
.mask = p->mask,
.flags = p->flags,
.index = p->tcf_index,
.action = p->tcf_action,
.refcnt = p->tcf_refcnt - ref,
.bindcnt = p->tcf_bindcnt - bind,
};
struct tcf_t t; struct tcf_t t;
opt.old_addr = p->old_addr;
opt.new_addr = p->new_addr;
opt.mask = p->mask;
opt.flags = p->flags;
opt.index = p->tcf_index;
opt.action = p->tcf_action;
opt.refcnt = p->tcf_refcnt - ref;
opt.bindcnt = p->tcf_bindcnt - bind;
NLA_PUT(skb, TCA_NAT_PARMS, sizeof(opt), &opt); NLA_PUT(skb, TCA_NAT_PARMS, sizeof(opt), &opt);
t.install = jiffies_to_clock_t(jiffies - p->tcf_tm.install); t.install = jiffies_to_clock_t(jiffies - p->tcf_tm.install);
t.lastuse = jiffies_to_clock_t(jiffies - p->tcf_tm.lastuse); t.lastuse = jiffies_to_clock_t(jiffies - p->tcf_tm.lastuse);

View File

@ -164,13 +164,14 @@ static inline int tcf_simp_dump(struct sk_buff *skb, struct tc_action *a,
{ {
unsigned char *b = skb_tail_pointer(skb); unsigned char *b = skb_tail_pointer(skb);
struct tcf_defact *d = a->priv; struct tcf_defact *d = a->priv;
struct tc_defact opt; struct tc_defact opt = {
.index = d->tcf_index,
.refcnt = d->tcf_refcnt - ref,
.bindcnt = d->tcf_bindcnt - bind,
.action = d->tcf_action,
};
struct tcf_t t; struct tcf_t t;
opt.index = d->tcf_index;
opt.refcnt = d->tcf_refcnt - ref;
opt.bindcnt = d->tcf_bindcnt - bind;
opt.action = d->tcf_action;
NLA_PUT(skb, TCA_DEF_PARMS, sizeof(opt), &opt); NLA_PUT(skb, TCA_DEF_PARMS, sizeof(opt), &opt);
NLA_PUT_STRING(skb, TCA_DEF_DATA, d->tcfd_defdata); NLA_PUT_STRING(skb, TCA_DEF_DATA, d->tcfd_defdata);
t.install = jiffies_to_clock_t(jiffies - d->tcf_tm.install); t.install = jiffies_to_clock_t(jiffies - d->tcf_tm.install);

View File

@ -159,13 +159,14 @@ static inline int tcf_skbedit_dump(struct sk_buff *skb, struct tc_action *a,
{ {
unsigned char *b = skb_tail_pointer(skb); unsigned char *b = skb_tail_pointer(skb);
struct tcf_skbedit *d = a->priv; struct tcf_skbedit *d = a->priv;
struct tc_skbedit opt; struct tc_skbedit opt = {
.index = d->tcf_index,
.refcnt = d->tcf_refcnt - ref,
.bindcnt = d->tcf_bindcnt - bind,
.action = d->tcf_action,
};
struct tcf_t t; struct tcf_t t;
opt.index = d->tcf_index;
opt.refcnt = d->tcf_refcnt - ref;
opt.bindcnt = d->tcf_bindcnt - bind;
opt.action = d->tcf_action;
NLA_PUT(skb, TCA_SKBEDIT_PARMS, sizeof(opt), &opt); NLA_PUT(skb, TCA_SKBEDIT_PARMS, sizeof(opt), &opt);
if (d->flags & SKBEDIT_F_PRIORITY) if (d->flags & SKBEDIT_F_PRIORITY)
NLA_PUT(skb, TCA_SKBEDIT_PRIORITY, sizeof(d->priority), NLA_PUT(skb, TCA_SKBEDIT_PRIORITY, sizeof(d->priority),