Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Browse files Browse the repository at this point in the history
Pull networking fixes from David Miller:

 1) Fix regression in /proc/net/if_inet6, sometimes devices do not get
    listed.  From Eric Dumazet.

 2) Add IPSEC networking sub-section to MAINTAINERS.

 3) S390 networking fixes from Hendrik Brueckner and Stefan Raspl.

 4) Fix enslavement of devices that can't do VLAN properly, from Jiri
    Pirko.

 5) SCTP sack handling fix from Zijie Pan.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
  ipv6: addrconf: fix /proc/net/if_inet6
  bnx2x: fix handling mf storage modes
  qeth: fix deadlock between recovery and bonding driver
  smsgiucv: reestablish IUCV path after resume
  sctp: fix call to SCTP_CMD_PROCESS_SACK in sctp_cmd_interpreter()
  vlan: fix bond/team enslave of vlan challenged slave/port
  MAINTAINERS: Add explicit section for IPSEC networking.
  • Loading branch information
torvalds committed Oct 17, 2012
2 parents ccbfddb + 9f0d3c2 commit 1867353
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 24 deletions.
14 changes: 14 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -5019,6 +5019,20 @@ F: net/ipv6/
F: include/net/ip*
F: arch/x86/net/*

NETWORKING [IPSEC]
M: Steffen Klassert <[email protected]>
M: Herbert Xu <[email protected]>
M: "David S. Miller" <[email protected]>
L: [email protected]
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
S: Maintained
F: net/xfrm/
F: net/key/
F: net/ipv4/xfrm*
F: net/ipv6/xfrm*
F: include/uapi/linux/xfrm.h
F: include/net/xfrm.h

NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK)
M: Paul Moore <[email protected]>
L: [email protected]
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1519,7 +1519,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
/* no need to lock since we're protected by rtnl_lock */
if (slave_dev->features & NETIF_F_VLAN_CHALLENGED) {
pr_debug("%s: NETIF_F_VLAN_CHALLENGED\n", slave_dev->name);
if (bond_vlan_used(bond)) {
if (vlan_uses_dev(bond_dev)) {
pr_err("%s: Error: cannot enslave VLAN challenged slave %s on VLAN enabled bond %s\n",
bond_dev->name, slave_dev->name, bond_dev->name);
return -EPERM;
Expand Down
10 changes: 7 additions & 3 deletions drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
Original file line number Diff line number Diff line change
Expand Up @@ -2957,9 +2957,13 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
skb_shinfo(skb)->nr_frags +
BDS_PER_TX_PKT +
NEXT_CNT_PER_TX_PKT(MAX_BDS_PER_TX_PKT))) {
bnx2x_fp_qstats(bp, txdata->parent_fp)->driver_xoff++;
netif_tx_stop_queue(txq);
BNX2X_ERR("BUG! Tx ring full when queue awake!\n");
/* Handle special storage cases separately */
if (txdata->tx_ring_size != 0) {
BNX2X_ERR("BUG! Tx ring full when queue awake!\n");
bnx2x_fp_qstats(bp, txdata->parent_fp)->driver_xoff++;
netif_tx_stop_queue(txq);
}

return NETDEV_TX_BUSY;
}

Expand Down
2 changes: 1 addition & 1 deletion drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ static inline int bnx2x_exe_queue_add(struct bnx2x *bp,
/* Check if this request is ok */
rc = o->validate(bp, o->owner, elem);
if (rc) {
BNX2X_ERR("Preamble failed: %d\n", rc);
DP(BNX2X_MSG_SP, "Preamble failed: %d\n", rc);
goto free_and_exit;
}
}
Expand Down
11 changes: 6 additions & 5 deletions drivers/s390/net/qeth_l2_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1141,11 +1141,12 @@ static int qeth_l2_recover(void *ptr)
dev_info(&card->gdev->dev,
"Device successfully recovered!\n");
else {
rtnl_lock();
dev_close(card->dev);
rtnl_unlock();
dev_warn(&card->gdev->dev, "The qeth device driver "
"failed to recover an error on the device\n");
if (rtnl_trylock()) {
dev_close(card->dev);
rtnl_unlock();
dev_warn(&card->gdev->dev, "The qeth device driver "
"failed to recover an error on the device\n");
}
}
qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD);
qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD);
Expand Down
11 changes: 6 additions & 5 deletions drivers/s390/net/qeth_l3_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3510,11 +3510,12 @@ static int qeth_l3_recover(void *ptr)
dev_info(&card->gdev->dev,
"Device successfully recovered!\n");
else {
rtnl_lock();
dev_close(card->dev);
rtnl_unlock();
dev_warn(&card->gdev->dev, "The qeth device driver "
"failed to recover an error on the device\n");
if (rtnl_trylock()) {
dev_close(card->dev);
rtnl_unlock();
dev_warn(&card->gdev->dev, "The qeth device driver "
"failed to recover an error on the device\n");
}
}
qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD);
qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD);
Expand Down
2 changes: 1 addition & 1 deletion drivers/s390/net/smsgiucv.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ static int smsg_pm_restore_thaw(struct device *dev)
#ifdef CONFIG_PM_DEBUG
printk(KERN_WARNING "smsg_pm_restore_thaw\n");
#endif
if (smsg_path && iucv_path_connected) {
if (smsg_path && !iucv_path_connected) {
memset(smsg_path, 0, sizeof(*smsg_path));
smsg_path->msglim = 255;
smsg_path->flags = 0;
Expand Down
9 changes: 8 additions & 1 deletion net/8021q/vlan_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,13 @@ EXPORT_SYMBOL(vlan_vids_del_by_dev);

bool vlan_uses_dev(const struct net_device *dev)
{
return rtnl_dereference(dev->vlan_info) ? true : false;
struct vlan_info *vlan_info;

ASSERT_RTNL();

vlan_info = rtnl_dereference(dev->vlan_info);
if (!vlan_info)
return false;
return vlan_info->grp.nr_vlan_devs ? true : false;
}
EXPORT_SYMBOL(vlan_uses_dev);
15 changes: 9 additions & 6 deletions net/ipv6/addrconf.c
Original file line number Diff line number Diff line change
Expand Up @@ -3064,14 +3064,15 @@ static struct inet6_ifaddr *if6_get_first(struct seq_file *seq, loff_t pos)
struct hlist_node *n;
hlist_for_each_entry_rcu_bh(ifa, n, &inet6_addr_lst[state->bucket],
addr_lst) {
if (!net_eq(dev_net(ifa->idev->dev), net))
continue;
/* sync with offset */
if (p < state->offset) {
p++;
continue;
}
state->offset++;
if (net_eq(dev_net(ifa->idev->dev), net))
return ifa;
return ifa;
}

/* prepare for next bucket */
Expand All @@ -3089,18 +3090,20 @@ static struct inet6_ifaddr *if6_get_next(struct seq_file *seq,
struct hlist_node *n = &ifa->addr_lst;

hlist_for_each_entry_continue_rcu_bh(ifa, n, addr_lst) {
if (!net_eq(dev_net(ifa->idev->dev), net))
continue;
state->offset++;
if (net_eq(dev_net(ifa->idev->dev), net))
return ifa;
return ifa;
}

while (++state->bucket < IN6_ADDR_HSIZE) {
state->offset = 0;
hlist_for_each_entry_rcu_bh(ifa, n,
&inet6_addr_lst[state->bucket], addr_lst) {
if (!net_eq(dev_net(ifa->idev->dev), net))
continue;
state->offset++;
if (net_eq(dev_net(ifa->idev->dev), net))
return ifa;
return ifa;
}
}

Expand Down
3 changes: 2 additions & 1 deletion net/sctp/sm_sideeffect.c
Original file line number Diff line number Diff line change
Expand Up @@ -1642,8 +1642,9 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
asoc->outqueue.outstanding_bytes;
sackh.num_gap_ack_blocks = 0;
sackh.num_dup_tsns = 0;
chunk->subh.sack_hdr = &sackh;
sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK,
SCTP_SACKH(&sackh));
SCTP_CHUNK(chunk));
break;

case SCTP_CMD_DISCARD_PACKET:
Expand Down

0 comments on commit 1867353

Please sign in to comment.