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
5a85d716
Commit
5a85d716
authored
Oct 23, 2012
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
parents
b3ce5ae1
1b3d2d77
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
64 additions
and
30 deletions
+64
-30
MAINTAINERS
MAINTAINERS
+2
-0
drivers/net/ethernet/intel/e1000e/netdev.c
drivers/net/ethernet/intel/e1000e/netdev.c
+11
-0
drivers/net/ethernet/intel/igb/e1000_phy.c
drivers/net/ethernet/intel/igb/e1000_phy.c
+20
-0
drivers/net/ethernet/intel/igb/igb_main.c
drivers/net/ethernet/intel/igb/igb_main.c
+1
-1
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+30
-29
No files found.
MAINTAINERS
View file @
5a85d716
...
@@ -3869,7 +3869,9 @@ M: Greg Rose <gregory.v.rose@intel.com>
...
@@ -3869,7 +3869,9 @@ M: Greg Rose <gregory.v.rose@intel.com>
M: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
M: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
M: Alex Duyck <alexander.h.duyck@intel.com>
M: Alex Duyck <alexander.h.duyck@intel.com>
M: John Ronciak <john.ronciak@intel.com>
M: John Ronciak <john.ronciak@intel.com>
M: Tushar Dave <tushar.n.dave@intel.com>
L: e1000-devel@lists.sourceforge.net
L: e1000-devel@lists.sourceforge.net
W: http://www.intel.com/support/feedback.htm
W: http://e1000.sourceforge.net/
W: http://e1000.sourceforge.net/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next.git
...
...
drivers/net/ethernet/intel/e1000e/netdev.c
View file @
5a85d716
...
@@ -5067,6 +5067,17 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
...
@@ -5067,6 +5067,17 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
return
NETDEV_TX_OK
;
return
NETDEV_TX_OK
;
}
}
/*
* The minimum packet size with TCTL.PSP set is 17 bytes so
* pad skb in order to meet this minimum size requirement
*/
if
(
unlikely
(
skb
->
len
<
17
))
{
if
(
skb_pad
(
skb
,
17
-
skb
->
len
))
return
NETDEV_TX_OK
;
skb
->
len
=
17
;
skb_set_tail_pointer
(
skb
,
17
);
}
mss
=
skb_shinfo
(
skb
)
->
gso_size
;
mss
=
skb_shinfo
(
skb
)
->
gso_size
;
if
(
mss
)
{
if
(
mss
)
{
u8
hdr_len
;
u8
hdr_len
;
...
...
drivers/net/ethernet/intel/igb/e1000_phy.c
View file @
5a85d716
...
@@ -1710,6 +1710,26 @@ s32 igb_get_cable_length_m88_gen2(struct e1000_hw *hw)
...
@@ -1710,6 +1710,26 @@ s32 igb_get_cable_length_m88_gen2(struct e1000_hw *hw)
switch
(
hw
->
phy
.
id
)
{
switch
(
hw
->
phy
.
id
)
{
case
I210_I_PHY_ID
:
case
I210_I_PHY_ID
:
/* Get cable length from PHY Cable Diagnostics Control Reg */
ret_val
=
phy
->
ops
.
read_reg
(
hw
,
(
0x7
<<
GS40G_PAGE_SHIFT
)
+
(
I347AT4_PCDL
+
phy
->
addr
),
&
phy_data
);
if
(
ret_val
)
return
ret_val
;
/* Check if the unit of cable length is meters or cm */
ret_val
=
phy
->
ops
.
read_reg
(
hw
,
(
0x7
<<
GS40G_PAGE_SHIFT
)
+
I347AT4_PCDC
,
&
phy_data2
);
if
(
ret_val
)
return
ret_val
;
is_cm
=
!
(
phy_data2
&
I347AT4_PCDC_CABLE_LENGTH_UNIT
);
/* Populate the phy structure with cable length in meters */
phy
->
min_cable_length
=
phy_data
/
(
is_cm
?
100
:
1
);
phy
->
max_cable_length
=
phy_data
/
(
is_cm
?
100
:
1
);
phy
->
cable_length
=
phy_data
/
(
is_cm
?
100
:
1
);
break
;
case
I347AT4_E_PHY_ID
:
case
I347AT4_E_PHY_ID
:
/* Remember the original page select and set it to 7 */
/* Remember the original page select and set it to 7 */
ret_val
=
phy
->
ops
.
read_reg
(
hw
,
I347AT4_PAGE_SELECT
,
ret_val
=
phy
->
ops
.
read_reg
(
hw
,
I347AT4_PAGE_SELECT
,
...
...
drivers/net/ethernet/intel/igb/igb_main.c
View file @
5a85d716
...
@@ -61,7 +61,7 @@
...
@@ -61,7 +61,7 @@
#define MAJ 4
#define MAJ 4
#define MIN 0
#define MIN 0
#define BUILD 1
#define BUILD 1
7
#define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \
#define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \
__stringify(BUILD) "-k"
__stringify(BUILD) "-k"
char
igb_driver_name
[]
=
"igb"
;
char
igb_driver_name
[]
=
"igb"
;
...
...
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
View file @
5a85d716
...
@@ -58,7 +58,7 @@ const char ixgbevf_driver_name[] = "ixgbevf";
...
@@ -58,7 +58,7 @@ const char ixgbevf_driver_name[] = "ixgbevf";
static
const
char
ixgbevf_driver_string
[]
=
static
const
char
ixgbevf_driver_string
[]
=
"Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver"
;
"Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver"
;
#define DRV_VERSION "2.
6.0
-k"
#define DRV_VERSION "2.
7.12
-k"
const
char
ixgbevf_driver_version
[]
=
DRV_VERSION
;
const
char
ixgbevf_driver_version
[]
=
DRV_VERSION
;
static
char
ixgbevf_copyright
[]
=
static
char
ixgbevf_copyright
[]
=
"Copyright (c) 2009 - 2012 Intel Corporation."
;
"Copyright (c) 2009 - 2012 Intel Corporation."
;
...
@@ -359,6 +359,12 @@ static void ixgbevf_alloc_rx_buffers(struct ixgbevf_adapter *adapter,
...
@@ -359,6 +359,12 @@ static void ixgbevf_alloc_rx_buffers(struct ixgbevf_adapter *adapter,
bi
->
dma
=
dma_map_single
(
&
pdev
->
dev
,
skb
->
data
,
bi
->
dma
=
dma_map_single
(
&
pdev
->
dev
,
skb
->
data
,
rx_ring
->
rx_buf_len
,
rx_ring
->
rx_buf_len
,
DMA_FROM_DEVICE
);
DMA_FROM_DEVICE
);
if
(
dma_mapping_error
(
&
pdev
->
dev
,
bi
->
dma
))
{
dev_kfree_skb
(
skb
);
bi
->
skb
=
NULL
;
dev_err
(
&
pdev
->
dev
,
"RX DMA map failed
\n
"
);
break
;
}
}
}
rx_desc
->
read
.
pkt_addr
=
cpu_to_le64
(
bi
->
dma
);
rx_desc
->
read
.
pkt_addr
=
cpu_to_le64
(
bi
->
dma
);
...
@@ -1132,12 +1138,12 @@ static int ixgbevf_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
...
@@ -1132,12 +1138,12 @@ static int ixgbevf_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
if
(
!
hw
->
mac
.
ops
.
set_vfta
)
if
(
!
hw
->
mac
.
ops
.
set_vfta
)
return
-
EOPNOTSUPP
;
return
-
EOPNOTSUPP
;
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
/* add VID to filter table */
/* add VID to filter table */
err
=
hw
->
mac
.
ops
.
set_vfta
(
hw
,
vid
,
0
,
true
);
err
=
hw
->
mac
.
ops
.
set_vfta
(
hw
,
vid
,
0
,
true
);
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
/* translate error return types so error makes sense */
/* translate error return types so error makes sense */
if
(
err
==
IXGBE_ERR_MBX
)
if
(
err
==
IXGBE_ERR_MBX
)
...
@@ -1157,13 +1163,13 @@ static int ixgbevf_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
...
@@ -1157,13 +1163,13 @@ static int ixgbevf_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
struct
ixgbe_hw
*
hw
=
&
adapter
->
hw
;
struct
ixgbe_hw
*
hw
=
&
adapter
->
hw
;
int
err
=
-
EOPNOTSUPP
;
int
err
=
-
EOPNOTSUPP
;
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
/* remove VID from filter table */
/* remove VID from filter table */
if
(
hw
->
mac
.
ops
.
set_vfta
)
if
(
hw
->
mac
.
ops
.
set_vfta
)
err
=
hw
->
mac
.
ops
.
set_vfta
(
hw
,
vid
,
0
,
false
);
err
=
hw
->
mac
.
ops
.
set_vfta
(
hw
,
vid
,
0
,
false
);
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
clear_bit
(
vid
,
adapter
->
active_vlans
);
clear_bit
(
vid
,
adapter
->
active_vlans
);
...
@@ -1219,7 +1225,7 @@ static void ixgbevf_set_rx_mode(struct net_device *netdev)
...
@@ -1219,7 +1225,7 @@ static void ixgbevf_set_rx_mode(struct net_device *netdev)
struct
ixgbevf_adapter
*
adapter
=
netdev_priv
(
netdev
);
struct
ixgbevf_adapter
*
adapter
=
netdev_priv
(
netdev
);
struct
ixgbe_hw
*
hw
=
&
adapter
->
hw
;
struct
ixgbe_hw
*
hw
=
&
adapter
->
hw
;
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
/* reprogram multicast list */
/* reprogram multicast list */
if
(
hw
->
mac
.
ops
.
update_mc_addr_list
)
if
(
hw
->
mac
.
ops
.
update_mc_addr_list
)
...
@@ -1227,7 +1233,7 @@ static void ixgbevf_set_rx_mode(struct net_device *netdev)
...
@@ -1227,7 +1233,7 @@ static void ixgbevf_set_rx_mode(struct net_device *netdev)
ixgbevf_write_uc_addr_list
(
netdev
);
ixgbevf_write_uc_addr_list
(
netdev
);
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
}
}
static
void
ixgbevf_napi_enable_all
(
struct
ixgbevf_adapter
*
adapter
)
static
void
ixgbevf_napi_enable_all
(
struct
ixgbevf_adapter
*
adapter
)
...
@@ -1341,7 +1347,7 @@ static void ixgbevf_negotiate_api(struct ixgbevf_adapter *adapter)
...
@@ -1341,7 +1347,7 @@ static void ixgbevf_negotiate_api(struct ixgbevf_adapter *adapter)
ixgbe_mbox_api_unknown
};
ixgbe_mbox_api_unknown
};
int
err
=
0
,
idx
=
0
;
int
err
=
0
,
idx
=
0
;
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
while
(
api
[
idx
]
!=
ixgbe_mbox_api_unknown
)
{
while
(
api
[
idx
]
!=
ixgbe_mbox_api_unknown
)
{
err
=
ixgbevf_negotiate_api_version
(
hw
,
api
[
idx
]);
err
=
ixgbevf_negotiate_api_version
(
hw
,
api
[
idx
]);
...
@@ -1350,7 +1356,7 @@ static void ixgbevf_negotiate_api(struct ixgbevf_adapter *adapter)
...
@@ -1350,7 +1356,7 @@ static void ixgbevf_negotiate_api(struct ixgbevf_adapter *adapter)
idx
++
;
idx
++
;
}
}
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
}
}
static
void
ixgbevf_up_complete
(
struct
ixgbevf_adapter
*
adapter
)
static
void
ixgbevf_up_complete
(
struct
ixgbevf_adapter
*
adapter
)
...
@@ -1391,7 +1397,7 @@ static void ixgbevf_up_complete(struct ixgbevf_adapter *adapter)
...
@@ -1391,7 +1397,7 @@ static void ixgbevf_up_complete(struct ixgbevf_adapter *adapter)
ixgbevf_configure_msix
(
adapter
);
ixgbevf_configure_msix
(
adapter
);
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
if
(
hw
->
mac
.
ops
.
set_rar
)
{
if
(
hw
->
mac
.
ops
.
set_rar
)
{
if
(
is_valid_ether_addr
(
hw
->
mac
.
addr
))
if
(
is_valid_ether_addr
(
hw
->
mac
.
addr
))
...
@@ -1400,7 +1406,7 @@ static void ixgbevf_up_complete(struct ixgbevf_adapter *adapter)
...
@@ -1400,7 +1406,7 @@ static void ixgbevf_up_complete(struct ixgbevf_adapter *adapter)
hw
->
mac
.
ops
.
set_rar
(
hw
,
0
,
hw
->
mac
.
perm_addr
,
0
);
hw
->
mac
.
ops
.
set_rar
(
hw
,
0
,
hw
->
mac
.
perm_addr
,
0
);
}
}
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
clear_bit
(
__IXGBEVF_DOWN
,
&
adapter
->
state
);
clear_bit
(
__IXGBEVF_DOWN
,
&
adapter
->
state
);
ixgbevf_napi_enable_all
(
adapter
);
ixgbevf_napi_enable_all
(
adapter
);
...
@@ -1424,12 +1430,12 @@ static int ixgbevf_reset_queues(struct ixgbevf_adapter *adapter)
...
@@ -1424,12 +1430,12 @@ static int ixgbevf_reset_queues(struct ixgbevf_adapter *adapter)
unsigned
int
num_rx_queues
=
1
;
unsigned
int
num_rx_queues
=
1
;
int
err
,
i
;
int
err
,
i
;
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
/* fetch queue configuration from the PF */
/* fetch queue configuration from the PF */
err
=
ixgbevf_get_queues
(
hw
,
&
num_tcs
,
&
def_q
);
err
=
ixgbevf_get_queues
(
hw
,
&
num_tcs
,
&
def_q
);
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
if
(
err
)
if
(
err
)
return
err
;
return
err
;
...
@@ -1688,14 +1694,14 @@ void ixgbevf_reset(struct ixgbevf_adapter *adapter)
...
@@ -1688,14 +1694,14 @@ void ixgbevf_reset(struct ixgbevf_adapter *adapter)
struct
ixgbe_hw
*
hw
=
&
adapter
->
hw
;
struct
ixgbe_hw
*
hw
=
&
adapter
->
hw
;
struct
net_device
*
netdev
=
adapter
->
netdev
;
struct
net_device
*
netdev
=
adapter
->
netdev
;
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
if
(
hw
->
mac
.
ops
.
reset_hw
(
hw
))
if
(
hw
->
mac
.
ops
.
reset_hw
(
hw
))
hw_dbg
(
hw
,
"PF still resetting
\n
"
);
hw_dbg
(
hw
,
"PF still resetting
\n
"
);
else
else
hw
->
mac
.
ops
.
init_hw
(
hw
);
hw
->
mac
.
ops
.
init_hw
(
hw
);
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
if
(
is_valid_ether_addr
(
adapter
->
hw
.
mac
.
addr
))
{
if
(
is_valid_ether_addr
(
adapter
->
hw
.
mac
.
addr
))
{
memcpy
(
netdev
->
dev_addr
,
adapter
->
hw
.
mac
.
addr
,
memcpy
(
netdev
->
dev_addr
,
adapter
->
hw
.
mac
.
addr
,
...
@@ -1912,18 +1918,13 @@ static int ixgbevf_alloc_q_vectors(struct ixgbevf_adapter *adapter)
...
@@ -1912,18 +1918,13 @@ static int ixgbevf_alloc_q_vectors(struct ixgbevf_adapter *adapter)
**/
**/
static
void
ixgbevf_free_q_vectors
(
struct
ixgbevf_adapter
*
adapter
)
static
void
ixgbevf_free_q_vectors
(
struct
ixgbevf_adapter
*
adapter
)
{
{
int
q_idx
,
num_q_vectors
;
int
q_idx
,
num_q_vectors
=
adapter
->
num_msix_vectors
-
NON_Q_VECTORS
;
int
napi_vectors
;
num_q_vectors
=
adapter
->
num_msix_vectors
-
NON_Q_VECTORS
;
napi_vectors
=
adapter
->
num_rx_queues
;
for
(
q_idx
=
0
;
q_idx
<
num_q_vectors
;
q_idx
++
)
{
for
(
q_idx
=
0
;
q_idx
<
num_q_vectors
;
q_idx
++
)
{
struct
ixgbevf_q_vector
*
q_vector
=
adapter
->
q_vector
[
q_idx
];
struct
ixgbevf_q_vector
*
q_vector
=
adapter
->
q_vector
[
q_idx
];
adapter
->
q_vector
[
q_idx
]
=
NULL
;
adapter
->
q_vector
[
q_idx
]
=
NULL
;
if
(
q_idx
<
napi_vectors
)
netif_napi_del
(
&
q_vector
->
napi
);
netif_napi_del
(
&
q_vector
->
napi
);
kfree
(
q_vector
);
kfree
(
q_vector
);
}
}
}
}
...
@@ -2194,12 +2195,12 @@ static void ixgbevf_watchdog_task(struct work_struct *work)
...
@@ -2194,12 +2195,12 @@ static void ixgbevf_watchdog_task(struct work_struct *work)
if
(
hw
->
mac
.
ops
.
check_link
)
{
if
(
hw
->
mac
.
ops
.
check_link
)
{
s32
need_reset
;
s32
need_reset
;
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
need_reset
=
hw
->
mac
.
ops
.
check_link
(
hw
,
&
link_speed
,
need_reset
=
hw
->
mac
.
ops
.
check_link
(
hw
,
&
link_speed
,
&
link_up
,
false
);
&
link_up
,
false
);
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
if
(
need_reset
)
{
if
(
need_reset
)
{
adapter
->
link_up
=
link_up
;
adapter
->
link_up
=
link_up
;
...
@@ -2467,12 +2468,12 @@ static int ixgbevf_setup_queues(struct ixgbevf_adapter *adapter)
...
@@ -2467,12 +2468,12 @@ static int ixgbevf_setup_queues(struct ixgbevf_adapter *adapter)
unsigned
int
num_rx_queues
=
1
;
unsigned
int
num_rx_queues
=
1
;
int
err
,
i
;
int
err
,
i
;
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
/* fetch queue configuration from the PF */
/* fetch queue configuration from the PF */
err
=
ixgbevf_get_queues
(
hw
,
&
num_tcs
,
&
def_q
);
err
=
ixgbevf_get_queues
(
hw
,
&
num_tcs
,
&
def_q
);
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
if
(
err
)
if
(
err
)
return
err
;
return
err
;
...
@@ -2822,10 +2823,10 @@ static int ixgbevf_tx_map(struct ixgbevf_ring *tx_ring,
...
@@ -2822,10 +2823,10 @@ static int ixgbevf_tx_map(struct ixgbevf_ring *tx_ring,
tx_buffer_info
->
dma
=
tx_buffer_info
->
dma
=
skb_frag_dma_map
(
tx_ring
->
dev
,
frag
,
skb_frag_dma_map
(
tx_ring
->
dev
,
frag
,
offset
,
size
,
DMA_TO_DEVICE
);
offset
,
size
,
DMA_TO_DEVICE
);
tx_buffer_info
->
mapped_as_page
=
true
;
if
(
dma_mapping_error
(
tx_ring
->
dev
,
if
(
dma_mapping_error
(
tx_ring
->
dev
,
tx_buffer_info
->
dma
))
tx_buffer_info
->
dma
))
goto
dma_error
;
goto
dma_error
;
tx_buffer_info
->
mapped_as_page
=
true
;
tx_buffer_info
->
next_to_watch
=
i
;
tx_buffer_info
->
next_to_watch
=
i
;
len
-=
size
;
len
-=
size
;
...
@@ -3046,12 +3047,12 @@ static int ixgbevf_set_mac(struct net_device *netdev, void *p)
...
@@ -3046,12 +3047,12 @@ static int ixgbevf_set_mac(struct net_device *netdev, void *p)
memcpy
(
netdev
->
dev_addr
,
addr
->
sa_data
,
netdev
->
addr_len
);
memcpy
(
netdev
->
dev_addr
,
addr
->
sa_data
,
netdev
->
addr_len
);
memcpy
(
hw
->
mac
.
addr
,
addr
->
sa_data
,
netdev
->
addr_len
);
memcpy
(
hw
->
mac
.
addr
,
addr
->
sa_data
,
netdev
->
addr_len
);
spin_lock
(
&
adapter
->
mbx_lock
);
spin_lock
_bh
(
&
adapter
->
mbx_lock
);
if
(
hw
->
mac
.
ops
.
set_rar
)
if
(
hw
->
mac
.
ops
.
set_rar
)
hw
->
mac
.
ops
.
set_rar
(
hw
,
0
,
hw
->
mac
.
addr
,
0
);
hw
->
mac
.
ops
.
set_rar
(
hw
,
0
,
hw
->
mac
.
addr
,
0
);
spin_unlock
(
&
adapter
->
mbx_lock
);
spin_unlock
_bh
(
&
adapter
->
mbx_lock
);
return
0
;
return
0
;
}
}
...
...
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