Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
a5db219f
Commit
a5db219f
authored
Jan 18, 2011
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
parents
c56eb8fb
ff76015f
Changes
34
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
502 additions
and
249 deletions
+502
-249
drivers/net/bnx2x/bnx2x.h
drivers/net/bnx2x/bnx2x.h
+2
-2
drivers/net/bnx2x/bnx2x_hsi.h
drivers/net/bnx2x/bnx2x_hsi.h
+4
-0
drivers/net/bnx2x/bnx2x_link.c
drivers/net/bnx2x/bnx2x_link.c
+139
-34
drivers/net/bnx2x/bnx2x_reg.h
drivers/net/bnx2x/bnx2x_reg.h
+4
-0
drivers/net/gianfar.c
drivers/net/gianfar.c
+1
-1
drivers/net/irda/sh_irda.c
drivers/net/irda/sh_irda.c
+12
-2
drivers/net/ns83820.c
drivers/net/ns83820.c
+2
-3
drivers/net/usb/cdc_ncm.c
drivers/net/usb/cdc_ncm.c
+12
-7
drivers/net/vmxnet3/vmxnet3_drv.c
drivers/net/vmxnet3/vmxnet3_drv.c
+62
-31
drivers/net/vmxnet3/vmxnet3_ethtool.c
drivers/net/vmxnet3/vmxnet3_ethtool.c
+160
-114
drivers/net/vmxnet3/vmxnet3_int.h
drivers/net/vmxnet3/vmxnet3_int.h
+4
-3
drivers/net/wireless/ath/ath5k/base.c
drivers/net/wireless/ath/ath5k/base.c
+4
-0
drivers/net/wireless/ath/ath9k/ar9002_calib.c
drivers/net/wireless/ath/ath9k/ar9002_calib.c
+5
-5
drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
+1
-1
drivers/net/wireless/ath/ath9k/ar9003_hw.c
drivers/net/wireless/ath/ath9k/ar9003_hw.c
+2
-2
drivers/net/wireless/ath/ath9k/htc.h
drivers/net/wireless/ath/ath9k/htc.h
+1
-1
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
+5
-3
drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c
drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c
+1
-1
drivers/net/wireless/iwmc3200wifi/netdev.c
drivers/net/wireless/iwmc3200wifi/netdev.c
+2
-0
drivers/net/wireless/rt2x00/rt2x00firmware.c
drivers/net/wireless/rt2x00/rt2x00firmware.c
+1
-0
drivers/s390/net/qeth_l2_main.c
drivers/s390/net/qeth_l2_main.c
+16
-2
drivers/s390/net/qeth_l3_main.c
drivers/s390/net/qeth_l3_main.c
+19
-3
include/linux/ieee80211.h
include/linux/ieee80211.h
+1
-1
net/batman-adv/main.h
net/batman-adv/main.h
+3
-3
net/batman-adv/packet.h
net/batman-adv/packet.h
+7
-7
net/batman-adv/types.h
net/batman-adv/types.h
+2
-2
net/batman-adv/unicast.c
net/batman-adv/unicast.c
+4
-2
net/caif/cfcnfg.c
net/caif/cfcnfg.c
+5
-4
net/can/bcm.c
net/can/bcm.c
+3
-0
net/can/raw.c
net/can/raw.c
+3
-0
net/core/dev.c
net/core/dev.c
+2
-2
net/ipv6/addrconf.c
net/ipv6/addrconf.c
+0
-3
net/mac80211/agg-rx.c
net/mac80211/agg-rx.c
+2
-9
net/mac80211/main.c
net/mac80211/main.c
+11
-1
No files found.
drivers/net/bnx2x/bnx2x.h
View file @
a5db219f
...
...
@@ -22,8 +22,8 @@
* (you will need to reboot afterwards) */
/* #define BNX2X_STOP_ON_ERROR */
#define DRV_MODULE_VERSION "1.62.00-
3
"
#define DRV_MODULE_RELDATE "201
0/12/21
"
#define DRV_MODULE_VERSION "1.62.00-
4
"
#define DRV_MODULE_RELDATE "201
1/01/18
"
#define BNX2X_BC_VER 0x040200
#define BNX2X_MULTI_QUEUE
...
...
drivers/net/bnx2x/bnx2x_hsi.h
View file @
a5db219f
...
...
@@ -352,6 +352,10 @@ struct port_hw_cfg { /* port 0: 0x12c port 1: 0x2bc */
#define PORT_HW_CFG_LANE_SWAP_CFG_31203120 0x0000d8d8
/* forced only */
#define PORT_HW_CFG_LANE_SWAP_CFG_32103210 0x0000e4e4
/* Indicate whether to swap the external phy polarity */
#define PORT_HW_CFG_SWAP_PHY_POLARITY_MASK 0x00010000
#define PORT_HW_CFG_SWAP_PHY_POLARITY_DISABLED 0x00000000
#define PORT_HW_CFG_SWAP_PHY_POLARITY_ENABLED 0x00010000
u32
external_phy_config
;
#define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_MASK 0xff000000
...
...
drivers/net/bnx2x/bnx2x_link.c
View file @
a5db219f
...
...
@@ -1573,7 +1573,7 @@ static void bnx2x_set_aer_mmd_xgxs(struct link_params *params,
offset
=
phy
->
addr
+
ser_lane
;
if
(
CHIP_IS_E2
(
bp
))
aer_val
=
0x
2
800
+
offset
-
1
;
aer_val
=
0x
3
800
+
offset
-
1
;
else
aer_val
=
0x3800
+
offset
;
CL45_WR_OVER_CL22
(
bp
,
phy
,
...
...
@@ -3166,7 +3166,23 @@ u8 bnx2x_set_led(struct link_params *params,
if
(
!
vars
->
link_up
)
break
;
case
LED_MODE_ON
:
if
(
SINGLE_MEDIA_DIRECT
(
params
))
{
if
(
params
->
phy
[
EXT_PHY1
].
type
==
PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727
&&
CHIP_IS_E2
(
bp
)
&&
params
->
num_phys
==
2
)
{
/**
* This is a work-around for E2+8727 Configurations
*/
if
(
mode
==
LED_MODE_ON
||
speed
==
SPEED_10000
){
REG_WR
(
bp
,
NIG_REG_LED_MODE_P0
+
port
*
4
,
0
);
REG_WR
(
bp
,
NIG_REG_LED_10G_P0
+
port
*
4
,
1
);
tmp
=
EMAC_RD
(
bp
,
EMAC_REG_EMAC_LED
);
EMAC_WR
(
bp
,
EMAC_REG_EMAC_LED
,
(
tmp
|
EMAC_LED_OVERRIDE
));
return
rc
;
}
}
else
if
(
SINGLE_MEDIA_DIRECT
(
params
))
{
/**
* This is a work-around for HW issue found when link
* is up in CL73
...
...
@@ -3854,11 +3870,14 @@ static void bnx2x_8073_resolve_fc(struct bnx2x_phy *phy,
pause_result
);
}
}
static
void
bnx2x_8073_8727_external_rom_boot
(
struct
bnx2x
*
bp
,
static
u8
bnx2x_8073_8727_external_rom_boot
(
struct
bnx2x
*
bp
,
struct
bnx2x_phy
*
phy
,
u8
port
)
{
u32
count
=
0
;
u16
fw_ver1
,
fw_msgout
;
u8
rc
=
0
;
/* Boot port from external ROM */
/* EDC grst */
bnx2x_cl45_write
(
bp
,
phy
,
...
...
@@ -3888,14 +3907,45 @@ static void bnx2x_8073_8727_external_rom_boot(struct bnx2x *bp,
MDIO_PMA_REG_GEN_CTRL
,
MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP
);
/* wait for 120ms for code download via SPI port */
msleep
(
120
);
/* Delay 100ms per the PHY specifications */
msleep
(
100
);
/* 8073 sometimes taking longer to download */
do
{
count
++
;
if
(
count
>
300
)
{
DP
(
NETIF_MSG_LINK
,
"bnx2x_8073_8727_external_rom_boot port %x:"
"Download failed. fw version = 0x%x
\n
"
,
port
,
fw_ver1
);
rc
=
-
EINVAL
;
break
;
}
bnx2x_cl45_read
(
bp
,
phy
,
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_ROM_VER1
,
&
fw_ver1
);
bnx2x_cl45_read
(
bp
,
phy
,
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_M8051_MSGOUT_REG
,
&
fw_msgout
);
msleep
(
1
);
}
while
(
fw_ver1
==
0
||
fw_ver1
==
0x4321
||
((
fw_msgout
&
0xff
)
!=
0x03
&&
(
phy
->
type
==
PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073
)));
/* Clear ser_boot_ctl bit */
bnx2x_cl45_write
(
bp
,
phy
,
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_MISC_CTRL1
,
0x0000
);
bnx2x_save_bcm_spirom_ver
(
bp
,
phy
,
port
);
DP
(
NETIF_MSG_LINK
,
"bnx2x_8073_8727_external_rom_boot port %x:"
"Download complete. fw version = 0x%x
\n
"
,
port
,
fw_ver1
);
return
rc
;
}
static
void
bnx2x_8073_set_xaui_low_power_mode
(
struct
bnx2x
*
bp
,
...
...
@@ -4108,6 +4158,25 @@ static u8 bnx2x_8073_config_init(struct bnx2x_phy *phy,
DP
(
NETIF_MSG_LINK
,
"Before rom RX_ALARM(port1): 0x%x
\n
"
,
tmp1
);
/**
* If this is forced speed, set to KR or KX (all other are not
* supported)
*/
/* Swap polarity if required - Must be done only in non-1G mode */
if
(
params
->
lane_config
&
PORT_HW_CFG_SWAP_PHY_POLARITY_ENABLED
)
{
/* Configure the 8073 to swap _P and _N of the KR lines */
DP
(
NETIF_MSG_LINK
,
"Swapping polarity for the 8073
\n
"
);
/* 10G Rx/Tx and 1G Tx signal polarity swap */
bnx2x_cl45_read
(
bp
,
phy
,
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_8073_OPT_DIGITAL_CTRL
,
&
val
);
bnx2x_cl45_write
(
bp
,
phy
,
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_8073_OPT_DIGITAL_CTRL
,
(
val
|
(
3
<<
9
)));
}
/* Enable CL37 BAM */
if
(
REG_RD
(
bp
,
params
->
shmem_base
+
offsetof
(
struct
shmem_region
,
dev_info
.
...
...
@@ -4314,8 +4383,32 @@ static u8 bnx2x_8073_read_status(struct bnx2x_phy *phy,
}
if
(
link_up
)
{
/* Swap polarity if required */
if
(
params
->
lane_config
&
PORT_HW_CFG_SWAP_PHY_POLARITY_ENABLED
)
{
/* Configure the 8073 to swap P and N of the KR lines */
bnx2x_cl45_read
(
bp
,
phy
,
MDIO_XS_DEVAD
,
MDIO_XS_REG_8073_RX_CTRL_PCIE
,
&
val1
);
/**
* Set bit 3 to invert Rx in 1G mode and clear this bit
* when it`s in 10G mode.
*/
if
(
vars
->
line_speed
==
SPEED_1000
)
{
DP
(
NETIF_MSG_LINK
,
"Swapping 1G polarity for"
"the 8073
\n
"
);
val1
|=
(
1
<<
3
);
}
else
val1
&=
~
(
1
<<
3
);
bnx2x_cl45_write
(
bp
,
phy
,
MDIO_XS_DEVAD
,
MDIO_XS_REG_8073_RX_CTRL_PCIE
,
val1
);
}
bnx2x_ext_phy_10G_an_resolve
(
bp
,
phy
,
vars
);
bnx2x_8073_resolve_fc
(
phy
,
params
,
vars
);
vars
->
duplex
=
DUPLEX_FULL
;
}
return
link_up
;
}
...
...
@@ -5062,6 +5155,7 @@ static u8 bnx2x_8706_8726_read_status(struct bnx2x_phy *phy,
else
vars
->
line_speed
=
SPEED_10000
;
bnx2x_ext_phy_resolve_fc
(
phy
,
params
,
vars
);
vars
->
duplex
=
DUPLEX_FULL
;
}
return
link_up
;
}
...
...
@@ -5758,8 +5852,11 @@ static u8 bnx2x_8727_read_status(struct bnx2x_phy *phy,
DP
(
NETIF_MSG_LINK
,
"port %x: External link is down
\n
"
,
params
->
port
);
}
if
(
link_up
)
if
(
link_up
)
{
bnx2x_ext_phy_resolve_fc
(
phy
,
params
,
vars
);
vars
->
duplex
=
DUPLEX_FULL
;
DP
(
NETIF_MSG_LINK
,
"duplex = 0x%x
\n
"
,
vars
->
duplex
);
}
if
((
DUAL_MEDIA
(
params
))
&&
(
phy
->
req_line_speed
==
SPEED_1000
))
{
...
...
@@ -5875,10 +5972,26 @@ static void bnx2x_848xx_set_led(struct bnx2x *bp,
MDIO_PMA_REG_8481_LED2_MASK
,
0x18
);
/* Select activity source by Tx and Rx, as suggested by PHY AE */
bnx2x_cl45_write
(
bp
,
phy
,
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_8481_LED3_MASK
,
0x0040
);
0x0006
);
/* Select the closest activity blink rate to that in 10/100/1000 */
bnx2x_cl45_write
(
bp
,
phy
,
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_8481_LED3_BLINK
,
0
);
bnx2x_cl45_read
(
bp
,
phy
,
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_84823_CTL_LED_CTL_1
,
&
val
);
val
|=
MDIO_PMA_REG_84823_LED3_STRETCH_EN
;
/* stretch_en for LED3*/
bnx2x_cl45_write
(
bp
,
phy
,
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_84823_CTL_LED_CTL_1
,
val
);
/* 'Interrupt Mask' */
bnx2x_cl45_write
(
bp
,
phy
,
...
...
@@ -6126,6 +6239,7 @@ static u8 bnx2x_848xx_read_status(struct bnx2x_phy *phy,
/* Check link 10G */
if
(
val2
&
(
1
<<
11
))
{
vars
->
line_speed
=
SPEED_10000
;
vars
->
duplex
=
DUPLEX_FULL
;
link_up
=
1
;
bnx2x_ext_phy_10G_an_resolve
(
bp
,
phy
,
vars
);
}
else
{
/* Check Legacy speed link */
...
...
@@ -6489,6 +6603,7 @@ static u8 bnx2x_7101_read_status(struct bnx2x_phy *phy,
MDIO_AN_DEVAD
,
MDIO_AN_REG_MASTER_STATUS
,
&
val2
);
vars
->
line_speed
=
SPEED_10000
;
vars
->
duplex
=
DUPLEX_FULL
;
DP
(
NETIF_MSG_LINK
,
"SFX7101 AN status 0x%x->Master=%x
\n
"
,
val2
,
(
val2
&
(
1
<<
14
)));
bnx2x_ext_phy_10G_an_resolve
(
bp
,
phy
,
vars
);
...
...
@@ -7663,7 +7778,6 @@ static u8 bnx2x_8073_common_init_phy(struct bnx2x *bp,
/* PART2 - Download firmware to both phys */
for
(
port
=
PORT_MAX
-
1
;
port
>=
PORT_0
;
port
--
)
{
u16
fw_ver1
;
if
(
CHIP_IS_E2
(
bp
))
port_of_path
=
0
;
else
...
...
@@ -7671,19 +7785,9 @@ static u8 bnx2x_8073_common_init_phy(struct bnx2x *bp,
DP
(
NETIF_MSG_LINK
,
"Loading spirom for phy address 0x%x
\n
"
,
phy_blk
[
port
]
->
addr
);
bnx2x_8073_8727_external_rom_boot
(
bp
,
phy_blk
[
port
],
port_of_path
);
bnx2x_cl45_read
(
bp
,
phy_blk
[
port
],
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_ROM_VER1
,
&
fw_ver1
);
if
(
fw_ver1
==
0
||
fw_ver1
==
0x4321
)
{
DP
(
NETIF_MSG_LINK
,
"bnx2x_8073_common_init_phy port %x:"
"Download failed. fw version = 0x%x
\n
"
,
port
,
fw_ver1
);
if
(
bnx2x_8073_8727_external_rom_boot
(
bp
,
phy_blk
[
port
],
port_of_path
))
return
-
EINVAL
;
}
/* Only set bit 10 = 1 (Tx power down) */
bnx2x_cl45_read
(
bp
,
phy_blk
[
port
],
...
...
@@ -7848,27 +7952,17 @@ static u8 bnx2x_8727_common_init_phy(struct bnx2x *bp,
}
/* PART2 - Download firmware to both phys */
for
(
port
=
PORT_MAX
-
1
;
port
>=
PORT_0
;
port
--
)
{
u16
fw_ver1
;
if
(
CHIP_IS_E2
(
bp
))
port_of_path
=
0
;
else
port_of_path
=
port
;
DP
(
NETIF_MSG_LINK
,
"Loading spirom for phy address 0x%x
\n
"
,
phy_blk
[
port
]
->
addr
);
bnx2x_8073_8727_external_rom_boot
(
bp
,
phy_blk
[
port
],
port_of_path
);
bnx2x_cl45_read
(
bp
,
phy_blk
[
port
],
MDIO_PMA_DEVAD
,
MDIO_PMA_REG_ROM_VER1
,
&
fw_ver1
);
if
(
fw_ver1
==
0
||
fw_ver1
==
0x4321
)
{
DP
(
NETIF_MSG_LINK
,
"bnx2x_8727_common_init_phy port %x:"
"Download failed. fw version = 0x%x
\n
"
,
port
,
fw_ver1
);
if
(
bnx2x_8073_8727_external_rom_boot
(
bp
,
phy_blk
[
port
],
port_of_path
))
return
-
EINVAL
;
}
}
}
return
0
;
}
...
...
@@ -7916,6 +8010,7 @@ u8 bnx2x_common_init_phy(struct bnx2x *bp, u32 shmem_base_path[],
u32
shmem2_base_path
[],
u32
chip_id
)
{
u8
rc
=
0
;
u32
phy_ver
;
u8
phy_index
;
u32
ext_phy_type
,
ext_phy_config
;
DP
(
NETIF_MSG_LINK
,
"Begin common phy init
\n
"
);
...
...
@@ -7923,6 +8018,16 @@ u8 bnx2x_common_init_phy(struct bnx2x *bp, u32 shmem_base_path[],
if
(
CHIP_REV_IS_EMUL
(
bp
))
return
0
;
/* Check if common init was already done */
phy_ver
=
REG_RD
(
bp
,
shmem_base_path
[
0
]
+
offsetof
(
struct
shmem_region
,
port_mb
[
PORT_0
].
ext_phy_fw_version
));
if
(
phy_ver
)
{
DP
(
NETIF_MSG_LINK
,
"Not doing common init; phy ver is 0x%x
\n
"
,
phy_ver
);
return
0
;
}
/* Read the ext_phy_type for arbitrary port(0) */
for
(
phy_index
=
EXT_PHY1
;
phy_index
<
MAX_PHYS
;
phy_index
++
)
{
...
...
drivers/net/bnx2x/bnx2x_reg.h
View file @
a5db219f
...
...
@@ -6194,7 +6194,11 @@ Theotherbitsarereservedandshouldbezero*/
#define MDIO_CTL_REG_84823_MEDIA_PRIORITY_COPPER 0x0000
#define MDIO_CTL_REG_84823_MEDIA_PRIORITY_FIBER 0x0100
#define MDIO_CTL_REG_84823_MEDIA_FIBER_1G 0x1000
#define MDIO_CTL_REG_84823_USER_CTRL_REG 0x4005
#define MDIO_CTL_REG_84823_USER_CTRL_CMS 0x0080
#define MDIO_PMA_REG_84823_CTL_LED_CTL_1 0xa8e3
#define MDIO_PMA_REG_84823_LED3_STRETCH_EN 0x0080
#define IGU_FUNC_BASE 0x0400
...
...
drivers/net/gianfar.c
View file @
a5db219f
drivers/net/irda/sh_irda.c
View file @
a5db219f
...
...
@@ -635,7 +635,7 @@ static int sh_irda_hard_xmit(struct sk_buff *skb, struct net_device *ndev)
ret
=
sh_irda_set_baudrate
(
self
,
speed
);
if
(
ret
<
0
)
return
ret
;
goto
sh_irda_hard_xmit_end
;
self
->
tx_buff
.
len
=
0
;
if
(
skb
->
len
)
{
...
...
@@ -652,11 +652,21 @@ static int sh_irda_hard_xmit(struct sk_buff *skb, struct net_device *ndev)
sh_irda_write
(
self
,
IRTFLR
,
self
->
tx_buff
.
len
);
sh_irda_write
(
self
,
IRTCTR
,
ARMOD
|
TE
);
}
}
else
goto
sh_irda_hard_xmit_end
;
dev_kfree_skb
(
skb
);
return
0
;
sh_irda_hard_xmit_end:
sh_irda_set_baudrate
(
self
,
9600
);
netif_wake_queue
(
self
->
ndev
);
sh_irda_rcv_ctrl
(
self
,
1
);
dev_kfree_skb
(
skb
);
return
ret
;
}
static
int
sh_irda_ioctl
(
struct
net_device
*
ndev
,
struct
ifreq
*
ifreq
,
int
cmd
)
...
...
drivers/net/ns83820.c
View file @
a5db219f
...
...
@@ -1988,12 +1988,11 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev,
}
ndev
=
alloc_etherdev
(
sizeof
(
struct
ns83820
));
dev
=
PRIV
(
ndev
);
err
=
-
ENOMEM
;
if
(
!
dev
)
if
(
!
n
dev
)
goto
out
;
dev
=
PRIV
(
ndev
);
dev
->
ndev
=
ndev
;
spin_lock_init
(
&
dev
->
rx_info
.
lock
);
...
...
drivers/net/usb/cdc_ncm.c
View file @
a5db219f
...
...
@@ -54,7 +54,7 @@
#include <linux/usb/usbnet.h>
#include <linux/usb/cdc.h>
#define DRIVER_VERSION "
30-Nov-2010
"
#define DRIVER_VERSION "
17-Jan-2011
"
/* CDC NCM subclass 3.2.1 */
#define USB_CDC_NCM_NDP16_LENGTH_MIN 0x10
...
...
@@ -868,15 +868,19 @@ static void cdc_ncm_tx_timeout(unsigned long arg)
if
(
ctx
->
tx_timer_pending
!=
0
)
{
ctx
->
tx_timer_pending
--
;
restart
=
1
;
}
else
}
else
{
restart
=
0
;
}
spin_unlock
(
&
ctx
->
mtx
);
if
(
restart
)
if
(
restart
)
{
spin_lock
(
&
ctx
->
mtx
);
cdc_ncm_tx_timeout_start
(
ctx
);
else
if
(
ctx
->
netdev
!=
NULL
)
spin_unlock
(
&
ctx
->
mtx
);
}
else
if
(
ctx
->
netdev
!=
NULL
)
{
usbnet_start_xmit
(
NULL
,
ctx
->
netdev
);
}
}
static
struct
sk_buff
*
...
...
@@ -900,7 +904,6 @@ cdc_ncm_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
skb_out
=
cdc_ncm_fill_tx_frame
(
ctx
,
skb
);
if
(
ctx
->
tx_curr_skb
!=
NULL
)
need_timer
=
1
;
spin_unlock
(
&
ctx
->
mtx
);
/* Start timer, if there is a remaining skb */
if
(
need_timer
)
...
...
@@ -908,6 +911,8 @@ cdc_ncm_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
if
(
skb_out
)
dev
->
net
->
stats
.
tx_packets
+=
ctx
->
tx_curr_frame_num
;
spin_unlock
(
&
ctx
->
mtx
);
return
skb_out
;
error:
...
...
drivers/net/vmxnet3/vmxnet3_drv.c
View file @
a5db219f
This diff is collapsed.
Click to expand it.
drivers/net/vmxnet3/vmxnet3_ethtool.c
View file @
a5db219f
This diff is collapsed.
Click to expand it.
drivers/net/vmxnet3/vmxnet3_int.h
View file @
a5db219f
...
...
@@ -68,10 +68,10 @@
/*
* Version numbers
*/
#define VMXNET3_DRIVER_VERSION_STRING "1.0.
16
.0-k"
#define VMXNET3_DRIVER_VERSION_STRING "1.0.
25
.0-k"
/* a 32-bit int, each byte encode a verion number in VMXNET3_DRIVER_VERSION */
#define VMXNET3_DRIVER_VERSION_NUM 0x01001
0
00
#define VMXNET3_DRIVER_VERSION_NUM 0x01001
9
00
#if defined(CONFIG_PCI_MSI)
/* RSS only makes sense if MSI-X is supported. */
...
...
@@ -289,7 +289,7 @@ struct vmxnet3_rx_queue {
#define VMXNET3_LINUX_MAX_MSIX_VECT (VMXNET3_DEVICE_MAX_TX_QUEUES + \
VMXNET3_DEVICE_MAX_RX_QUEUES + 1)
#define VMXNET3_LINUX_MIN_MSIX_VECT
3
/* 1 for each : tx, rx and
event */
#define VMXNET3_LINUX_MIN_MSIX_VECT
2
/* 1 for tx-rx pair and 1 for
event */
struct
vmxnet3_intr
{
...
...
@@ -317,6 +317,7 @@ struct vmxnet3_adapter {
struct
vmxnet3_rx_queue
rx_queue
[
VMXNET3_DEVICE_MAX_RX_QUEUES
];
struct
vlan_group
*
vlan_grp
;
struct
vmxnet3_intr
intr
;
spinlock_t
cmd_lock
;
struct
Vmxnet3_DriverShared
*
shared
;
struct
Vmxnet3_PMConf
*
pm_conf
;
struct
Vmxnet3_TxQueueDesc
*
tqd_start
;
/* all tx queue desc */
...
...
drivers/net/wireless/ath/ath5k/base.c
View file @
a5db219f
...
...
@@ -2294,6 +2294,8 @@ ath5k_tx_complete_poll_work(struct work_struct *work)
int
i
;
bool
needreset
=
false
;
mutex_lock
(
&
sc
->
lock
);
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
sc
->
txqs
);
i
++
)
{
if
(
sc
->
txqs
[
i
].
setup
)
{
txq
=
&
sc
->
txqs
[
i
];
...
...
@@ -2321,6 +2323,8 @@ ath5k_tx_complete_poll_work(struct work_struct *work)
ath5k_reset
(
sc
,
NULL
,
true
);
}
mutex_unlock
(
&
sc
->
lock
);
ieee80211_queue_delayed_work
(
sc
->
hw
,
&
sc
->
tx_complete_work
,
msecs_to_jiffies
(
ATH5K_TX_COMPLETE_POLL_INT
));
}
...
...
drivers/net/wireless/ath/ath9k/ar9002_calib.c
View file @
a5db219f
...
...
@@ -679,10 +679,6 @@ static bool ar9002_hw_calibrate(struct ath_hw *ah,
/* Do NF cal only at longer intervals */
if
(
longcal
||
nfcal_pending
)
{
/* Do periodic PAOffset Cal */
ar9002_hw_pa_cal
(
ah
,
false
);
ar9002_hw_olc_temp_compensation
(
ah
);
/*
* Get the value from the previous NF cal and update
* history buffer.
...
...
@@ -697,8 +693,12 @@ static bool ar9002_hw_calibrate(struct ath_hw *ah,
ath9k_hw_loadnf
(
ah
,
ah
->
curchan
);
}
if
(
longcal
)
if
(
longcal
)
{
ath9k_hw_start_nfcal
(
ah
,
false
);
/* Do periodic PAOffset Cal */
ar9002_hw_pa_cal
(
ah
,
false
);
ar9002_hw_olc_temp_compensation
(
ah
);
}
}
return
iscaldone
;
...
...
drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
View file @
a5db219f
...
...
@@ -1842,7 +1842,7 @@ static const u32 ar9300_2p2_soc_preamble[][2] = {
static
const
u32
ar9300PciePhy_pll_on_clkreq_disable_L1_2p2
[][
2
]
=
{
/* Addr allmodes */
{
0x00004040
,
0x08212
e
5e
},
{
0x00004040
,
0x08212
6
5e
},
{
0x00004040
,
0x0008003b
},
{
0x00004044
,
0x00000000
},
};
...
...
drivers/net/wireless/ath/ath9k/ar9003_hw.c
View file @
a5db219f
...
...
@@ -146,8 +146,8 @@ static void ar9003_hw_init_mode_regs(struct ath_hw *ah)
/* Sleep Setting */
INIT_INI_ARRAY
(
&
ah
->
iniPcieSerdesLowPower
,
ar9300PciePhy_
clkreq_en
able_L1_2p2
,
ARRAY_SIZE
(
ar9300PciePhy_
clkreq_en
able_L1_2p2
),
ar9300PciePhy_
pll_on_clkreq_dis
able_L1_2p2
,
ARRAY_SIZE
(
ar9300PciePhy_
pll_on_clkreq_dis
able_L1_2p2
),
2
);
/* Fast clock modal settings */
...
...
drivers/net/wireless/ath/ath9k/htc.h
View file @
a5db219f
...
...
@@ -78,7 +78,7 @@ struct tx_frame_hdr {
u8
node_idx
;
u8
vif_idx
;
u8
tidno
;
u
32
flags
;
/* ATH9K_HTC_TX_* */
__be
32
flags
;
/* ATH9K_HTC_TX_* */
u8
key_type
;
u8
keyix
;
u8
reserved
[
26
];
...
...
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
View file @
a5db219f
...
...
@@ -113,6 +113,7 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb)
if
(
ieee80211_is_data
(
fc
))
{
struct
tx_frame_hdr
tx_hdr
;
u32
flags
=
0
;
u8
*
qc
;
memset
(
&
tx_hdr
,
0
,
sizeof
(
struct
tx_frame_hdr
));
...
...
@@ -136,13 +137,14 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb)
/* Check for RTS protection */
if
(
priv
->
hw
->
wiphy
->
rts_threshold
!=
(
u32
)
-
1
)
if
(
skb
->
len
>
priv
->
hw
->
wiphy
->
rts_threshold
)
tx_hdr
.
flags
|=
ATH9K_HTC_TX_RTSCTS
;
flags
|=
ATH9K_HTC_TX_RTSCTS
;
/* CTS-to-self */
if
(
!
(
tx_hdr
.
flags
&
ATH9K_HTC_TX_RTSCTS
)
&&
if
(
!
(
flags
&
ATH9K_HTC_TX_RTSCTS
)
&&
(
priv
->
op_flags
&
OP_PROTECT_ENABLE
))
tx_hdr
.
flags
|=
ATH9K_HTC_TX_CTSONLY
;
flags
|=
ATH9K_HTC_TX_CTSONLY
;
tx_hdr
.
flags
=
cpu_to_be32
(
flags
);
tx_hdr
.
key_type
=
ath9k_cmn_get_hw_crypto_keytype
(
skb
);
if
(
tx_hdr
.
key_type
==
ATH9K_KEY_TYPE_CLEAR
)
tx_hdr
.
keyix
=
(
u8
)
ATH9K_TXKEYIX_INVALID
;
...
...
drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c
View file @
a5db219f
...
...
@@ -168,7 +168,7 @@ int iwl_eeprom_check_sku(struct iwl_priv *priv)
/* not using .cfg overwrite */
radio_cfg
=
iwl_eeprom_query16
(
priv
,
EEPROM_RADIO_CONFIG
);
priv
->
cfg
->
valid_tx_ant
=
EEPROM_RF_CFG_TX_ANT_MSK
(
radio_cfg
);
priv
->
cfg
->
valid_rx_ant
=
EEPROM_RF_CFG_
T
X_ANT_MSK
(
radio_cfg
);
priv
->
cfg
->
valid_rx_ant
=
EEPROM_RF_CFG_
R
X_ANT_MSK
(
radio_cfg
);
if
(
!
priv
->
cfg
->
valid_tx_ant
||
!
priv
->
cfg
->
valid_rx_ant
)
{
IWL_ERR
(
priv
,
"Invalid chain (0X%x, 0X%x)
\n
"
,
priv
->
cfg
->
valid_tx_ant
,
...
...
drivers/net/wireless/iwmc3200wifi/netdev.c
View file @
a5db219f
...
...
@@ -126,6 +126,7 @@ void *iwm_if_alloc(int sizeof_bus, struct device *dev,
ndev
=
alloc_netdev_mq
(
0
,
"wlan%d"
,
ether_setup
,
IWM_TX_QUEUES
);
if
(
!
ndev
)
{
dev_err
(
dev
,
"no memory for network device instance
\n
"
);
ret
=
-
ENOMEM
;
goto
out_priv
;
}
...
...
@@ -138,6 +139,7 @@ void *iwm_if_alloc(int sizeof_bus, struct device *dev,
GFP_KERNEL
);
if
(
!
iwm
->
umac_profile
)
{
dev_err
(
dev
,
"Couldn't alloc memory for profile
\n
"
);
ret
=
-
ENOMEM
;
goto
out_profile
;
}
...
...
drivers/net/wireless/rt2x00/rt2x00firmware.c
View file @
a5db219f
...
...
@@ -58,6 +58,7 @@ static int rt2x00lib_request_firmware(struct rt2x00_dev *rt2x00dev)
if
(
!
fw
||
!
fw
->
size
||
!
fw
->
data
)
{
ERROR
(
rt2x00dev
,
"Failed to read Firmware.
\n
"
);
release_firmware
(
fw
);
return
-
ENOENT
;
}
...
...
drivers/s390/net/qeth_l2_main.c
View file @
a5db219f
...
...
@@ -831,12 +831,14 @@ static int qeth_l2_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
return
NETDEV_TX_OK
;
}
static
int
qeth_l2_open
(
struct
net_device
*
dev
)
static
int
__
qeth_l2_open
(
struct
net_device
*
dev
)
{
struct
qeth_card
*
card
=
dev
->
ml_priv
;
int
rc
=
0
;
QETH_CARD_TEXT
(
card
,
4
,
"qethopen"
);
if
(
card
->
state
==
CARD_STATE_UP
)
return
rc
;
if
(
card
->
state
!=
CARD_STATE_SOFTSETUP
)
return
-
ENODEV
;
...
...
@@ -857,6 +859,18 @@ static int qeth_l2_open(struct net_device *dev)
return
rc
;
}
static
int
qeth_l2_open
(
struct
net_device
*
dev
)
{
struct
qeth_card
*
card
=
dev
->
ml_priv
;
QETH_CARD_TEXT
(
card
,
5
,
"qethope_"
);
if
(
qeth_wait_for_threads
(
card
,
QETH_RECOVER_THREAD
))
{
QETH_CARD_TEXT
(
card
,
3
,
"openREC"
);
return
-
ERESTARTSYS
;
}
return
__qeth_l2_open
(
dev
);
}
static
int
qeth_l2_stop
(
struct
net_device
*
dev
)
{
struct
qeth_card
*
card
=
dev
->
ml_priv
;
...
...
@@ -1046,7 +1060,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)
if
(
recover_flag
==
CARD_STATE_RECOVER
)
{
if
(
recovery_mode
&&
card
->
info
.
type
!=
QETH_CARD_TYPE_OSN
)
{
qeth_l2_open
(
card
->
dev
);
__
qeth_l2_open
(
card
->
dev
);
}
else
{
rtnl_lock
();
dev_open
(
card
->
dev
);
...
...
drivers/s390/net/qeth_l3_main.c
View file @
a5db219f
...
...
@@ -2998,7 +2998,9 @@ static inline void qeth_l3_hdr_csum(struct qeth_card *card,
*/
if
(
iph
->
protocol
==
IPPROTO_UDP
)
hdr
->
hdr
.
l3
.
ext_flags
|=
QETH_HDR_EXT_UDP
;
hdr
->
hdr
.
l3
.
ext_flags
|=
QETH_HDR_EXT_CSUM_TRANSP_REQ
;
hdr
->
hdr
.
l3
.
ext_flags
|=
QETH_HDR_EXT_CSUM_TRANSP_REQ
|
QETH_HDR_EXT_CSUM_HDR_REQ
;
iph
->
check
=
0
;
if
(
card
->
options
.
performance_stats
)
card
->
perf_stats
.
tx_csum
++
;
}
...
...
@@ -3240,12 +3242,14 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
return
NETDEV_TX_OK
;
}
static
int
qeth_l3_open
(
struct
net_device
*
dev
)
static
int
__
qeth_l3_open
(
struct
net_device
*
dev
)
{
struct
qeth_card
*
card
=
dev
->
ml_priv
;
int
rc
=
0
;
QETH_CARD_TEXT
(
card
,
4
,
"qethopen"
);
if
(
card
->
state
==
CARD_STATE_UP
)
return
rc
;
if
(
card
->
state
!=
CARD_STATE_SOFTSETUP
)
return
-
ENODEV
;
card
->
data
.
state
=
CH_STATE_UP
;
...
...
@@ -3260,6 +3264,18 @@ static int qeth_l3_open(struct net_device *dev)
return
rc
;
}
static
int
qeth_l3_open
(
struct
net_device
*
dev
)
{
struct
qeth_card
*
card
=
dev
->
ml_priv
;
QETH_CARD_TEXT
(
card
,
5
,
"qethope_"
);
if
(
qeth_wait_for_threads
(
card
,
QETH_RECOVER_THREAD
))
{
QETH_CARD_TEXT
(
card
,
3
,
"openREC"
);
return
-
ERESTARTSYS
;
}
return
__qeth_l3_open
(
dev
);
}
static
int
qeth_l3_stop
(
struct
net_device
*
dev
)
{
struct
qeth_card
*
card
=
dev
->
ml_priv
;
...
...
@@ -3564,7 +3580,7 @@ static int __qeth_l3_set_online(struct ccwgroup_device *gdev, int recovery_mode)
netif_carrier_off
(
card
->
dev
);
if
(
recover_flag
==
CARD_STATE_RECOVER
)
{
if
(
recovery_mode
)
qeth_l3_open
(
card
->
dev
);
__
qeth_l3_open
(
card
->
dev
);
else
{
rtnl_lock
();
dev_open
(
card
->
dev
);
...
...
include/linux/ieee80211.h
View file @
a5db219f
...
...
@@ -959,7 +959,7 @@ struct ieee80211_ht_info {
/* block-ack parameters */
#define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002
#define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C
#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFF
A
0
#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFF
C
0
#define IEEE80211_DELBA_PARAM_TID_MASK 0xF000
#define IEEE80211_DELBA_PARAM_INITIATOR_MASK 0x0800
...
...
net/batman-adv/main.h
View file @
a5db219f
...
...
@@ -151,9 +151,9 @@ int debug_log(struct bat_priv *bat_priv, char *fmt, ...);
} \
while (0)
#else
/* !CONFIG_BATMAN_ADV_DEBUG */
static
inline
void
bat_dbg
(
char
type
__a
ttribute__
((
unused
))
,
struct
bat_priv
*
bat_priv
__a
ttribute__
((
unused
))
,
char
*
fmt
__a
ttribute__
((
unused
))
,
...)
static
inline
void
bat_dbg
(
char
type
__a
lways_unused
,
struct
bat_priv
*
bat_priv
__a
lways_unused
,
char
*
fmt
__a
lways_unused
,
...)
{
}
#endif
...
...
net/batman-adv/packet.h
View file @
a5db219f
...
...
@@ -63,7 +63,7 @@ struct batman_packet {
uint8_t
num_hna
;
uint8_t
gw_flags
;
/* flags related to gateway class */
uint8_t
align
;
}
__
attribute__
((
packed
))
;
}
__
packed
;
#define BAT_PACKET_LEN sizeof(struct batman_packet)
...
...
@@ -76,7 +76,7 @@ struct icmp_packet {
uint8_t
orig
[
6
];
uint16_t
seqno
;
uint8_t
uid
;
}
__
attribute__
((
packed
))
;
}
__
packed
;
#define BAT_RR_LEN 16
...
...
@@ -93,14 +93,14 @@ struct icmp_packet_rr {
uint8_t
uid
;
uint8_t
rr_cur
;
uint8_t
rr
[
BAT_RR_LEN
][
ETH_ALEN
];
}
__
attribute__
((
packed
))
;
}
__
packed
;
struct
unicast_packet
{
uint8_t
packet_type
;
uint8_t
version
;
/* batman version field */
uint8_t
dest
[
6
];
uint8_t
ttl
;
}
__
attribute__
((
packed
))
;
}
__
packed
;
struct
unicast_frag_packet
{
uint8_t
packet_type
;
...
...
@@ -110,7 +110,7 @@ struct unicast_frag_packet {
uint8_t
flags
;
uint8_t
orig
[
6
];
uint16_t
seqno
;
}
__
attribute__
((
packed
))
;
}
__
packed
;
struct
bcast_packet
{
uint8_t
packet_type
;
...
...
@@ -118,7 +118,7 @@ struct bcast_packet {
uint8_t
orig
[
6
];
uint8_t
ttl
;
uint32_t
seqno
;
}
__
attribute__
((
packed
))
;
}
__
packed
;
struct
vis_packet
{
uint8_t
packet_type
;
...
...
@@ -131,6 +131,6 @@ struct vis_packet {
* neighbors */
uint8_t
target_orig
[
6
];
/* who should receive this packet */
uint8_t
sender_orig
[
6
];
/* who sent or rebroadcasted this packet */
}
__
attribute__
((
packed
))
;
}
__
packed
;
#endif
/* _NET_BATMAN_ADV_PACKET_H_ */
net/batman-adv/types.h
View file @
a5db219f
...
...
@@ -246,13 +246,13 @@ struct vis_info {
/* this packet might be part of the vis send queue. */
struct
sk_buff
*
skb_packet
;
/* vis_info may follow here*/
}
__
attribute__
((
packed
))
;
}
__
packed
;
struct
vis_info_entry
{
uint8_t
src
[
ETH_ALEN
];
uint8_t
dest
[
ETH_ALEN
];
uint8_t
quality
;
/* quality = 0 means HNA */
}
__
attribute__
((
packed
))
;
}
__
packed
;
struct
recvlist_node
{
struct
list_head
list
;
...
...
net/batman-adv/unicast.c
View file @
a5db219f
...
...
@@ -229,10 +229,12 @@ int frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
if
(
!
bat_priv
->
primary_if
)
goto
dropped
;
unicast_packet
=
(
struct
unicast_packet
*
)
skb
->
data
;
frag_skb
=
dev_alloc_skb
(
data_len
-
(
data_len
/
2
)
+
ucf_hdr_len
);
if
(
!
frag_skb
)
goto
dropped
;
unicast_packet
=
(
struct
unicast_packet
*
)
skb
->
data
;
memcpy
(
&
tmp_uc
,
unicast_packet
,
uc_hdr_len
);
frag_skb
=
dev_alloc_skb
(
data_len
-
(
data_len
/
2
)
+
ucf_hdr_len
);
skb_split
(
skb
,
frag_skb
,
data_len
/
2
);
if
(
my_skb_head_push
(
skb
,
ucf_hdr_len
-
uc_hdr_len
)
<
0
||
...
...
net/caif/cfcnfg.c
View file @
a5db219f
...
...
@@ -191,6 +191,7 @@ int cfcnfg_disconn_adapt_layer(struct cfcnfg *cnfg, struct cflayer *adap_layer)
struct
cflayer
*
servl
=
NULL
;
struct
cfcnfg_phyinfo
*
phyinfo
=
NULL
;
u8
phyid
=
0
;
caif_assert
(
adap_layer
!=
NULL
);
channel_id
=
adap_layer
->
id
;
if
(
adap_layer
->
dn
==
NULL
||
channel_id
==
0
)
{
...
...
@@ -199,16 +200,16 @@ int cfcnfg_disconn_adapt_layer(struct cfcnfg *cnfg, struct cflayer *adap_layer)
goto
end
;
}
servl
=
cfmuxl_remove_uplayer
(
cnfg
->
mux
,
channel_id
);
if
(
servl
==
NULL
)
goto
end
;
layer_set_up
(
servl
,
NULL
);
ret
=
cfctrl_linkdown_req
(
cnfg
->
ctrl
,
channel_id
,
adap_layer
);
if
(
servl
==
NULL
)
{
pr_err
(
"PROTOCOL ERROR - Error removing service_layer Channel_Id(%d)"
,
channel_id
);
ret
=
-
EINVAL
;
goto
end
;
}
layer_set_up
(
servl
,
NULL
);
ret
=
cfctrl_linkdown_req
(
cnfg
->
ctrl
,
channel_id
,
adap_layer
);
if
(
ret
)
goto
end
;
caif_assert
(
channel_id
==
servl
->
id
);
if
(
adap_layer
->
dn
!=
NULL
)
{
phyid
=
cfsrvl_getphyid
(
adap_layer
->
dn
);
...
...
net/can/bcm.c
View file @
a5db219f
...
...
@@ -1256,6 +1256,9 @@ static int bcm_sendmsg(struct kiocb *iocb, struct socket *sock,
struct
sockaddr_can
*
addr
=
(
struct
sockaddr_can
*
)
msg
->
msg_name
;
if
(
msg
->
msg_namelen
<
sizeof
(
*
addr
))
return
-
EINVAL
;
if
(
addr
->
can_family
!=
AF_CAN
)
return
-
EINVAL
;
...
...
net/can/raw.c
View file @
a5db219f
...
...
@@ -649,6 +649,9 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock,
struct
sockaddr_can
*
addr
=
(
struct
sockaddr_can
*
)
msg
->
msg_name
;
if
(
msg
->
msg_namelen
<
sizeof
(
*
addr
))
return
-
EINVAL
;
if
(
addr
->
can_family
!=
AF_CAN
)
return
-
EINVAL
;
...
...
net/core/dev.c
View file @
a5db219f
...
...
@@ -2023,13 +2023,13 @@ int netif_skb_features(struct sk_buff *skb)
return
harmonize_features
(
skb
,
protocol
,
features
);
}
features
&=
skb
->
dev
->
vlan_features
;
features
&=
(
skb
->
dev
->
vlan_features
|
NETIF_F_HW_VLAN_TX
)
;
if
(
protocol
!=
htons
(
ETH_P_8021Q
))
{
return
harmonize_features
(
skb
,
protocol
,
features
);
}
else
{
features
&=
NETIF_F_SG
|
NETIF_F_HIGHDMA
|
NETIF_F_FRAGLIST
|
NETIF_F_GEN_CSUM
;
NETIF_F_GEN_CSUM
|
NETIF_F_HW_VLAN_TX
;
return
harmonize_features
(
skb
,
protocol
,
features
);
}
}
...
...
net/ipv6/addrconf.c
View file @
a5db219f
...
...
@@ -420,9 +420,6 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
dev
->
type
==
ARPHRD_TUNNEL6
||
dev
->
type
==
ARPHRD_SIT
||
dev
->
type
==
ARPHRD_NONE
)
{
printk
(
KERN_INFO
"%s: Disabled Privacy Extensions
\n
"
,
dev
->
name
);
ndev
->
cnf
.
use_tempaddr
=
-
1
;
}
else
{
in6_dev_hold
(
ndev
);
...
...
net/mac80211/agg-rx.c
View file @
a5db219f
...
...
@@ -185,8 +185,6 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
struct
ieee80211_mgmt
*
mgmt
,
size_t
len
)
{
struct
ieee80211_hw
*
hw
=
&
local
->
hw
;
struct
ieee80211_conf
*
conf
=
&
hw
->
conf
;
struct
tid_ampdu_rx
*
tid_agg_rx
;
u16
capab
,
tid
,
timeout
,
ba_policy
,
buf_size
,
start_seq_num
,
status
;
u8
dialog_token
;
...
...
@@ -231,13 +229,8 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
goto
end_no_lock
;
}
/* determine default buffer size */
if
(
buf_size
==
0
)
{
struct
ieee80211_supported_band
*
sband
;
sband
=
local
->
hw
.
wiphy
->
bands
[
conf
->
channel
->
band
];
buf_size
=
IEEE80211_MIN_AMPDU_BUF
;
buf_size
=
buf_size
<<
sband
->
ht_cap
.
ampdu_factor
;
}
if
(
buf_size
==
0
)
buf_size
=
IEEE80211_MAX_AMPDU_BUF
;
/* examine state machine */
...
...
net/mac80211/main.c
View file @
a5db219f
...
...
@@ -39,6 +39,8 @@ module_param(ieee80211_disable_40mhz_24ghz, bool, 0644);
MODULE_PARM_DESC
(
ieee80211_disable_40mhz_24ghz
,
"Disable 40MHz support in the 2.4GHz band"
);
static
struct
lock_class_key
ieee80211_rx_skb_queue_class
;
void
ieee80211_configure_filter
(
struct
ieee80211_local
*
local
)
{
u64
mc
;
...
...
@@ -569,7 +571,15 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len,
spin_lock_init
(
&
local
->
filter_lock
);
spin_lock_init
(
&
local
->
queue_stop_reason_lock
);
skb_queue_head_init
(
&
local
->
rx_skb_queue
);
/*
* The rx_skb_queue is only accessed from tasklets,
* but other SKB queues are used from within IRQ
* context. Therefore, this one needs a different
* locking class so our direct, non-irq-safe use of
* the queue's lock doesn't throw lockdep warnings.
*/
skb_queue_head_init_class
(
&
local
->
rx_skb_queue
,
&
ieee80211_rx_skb_queue_class
);
INIT_DELAYED_WORK
(
&
local
->
scan_work
,
ieee80211_scan_work
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment