Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
This commit is contained in:
commit
d3c6e7ad09
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
1666
drivers/net/pxa168_eth.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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 */
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
};
|
};
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
|
@ -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,
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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]);
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
30
include/linux/pxa168_eth.h
Normal file
30
include/linux/pxa168_eth.h
Normal 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 */
|
@ -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;
|
||||||
|
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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),
|
||||||
|
Loading…
Reference in New Issue
Block a user