* [GIT PULL] Remove __dev* markings from the networking drivers
From: Greg KH @ 2012-12-03 20:29 UTC (permalink / raw)
To: linux-wireless-u79uwXL29TY76Z2rM5mHXA, John W. Linville
Cc: netdev-u79uwXL29TY76Z2rM5mHXA, Bill Pemberton
Hi John,
Here's a pull request for all of Bill's __dev* removal patches for the
wireless networking drivers, based on net-next. If you want this
rebased on a different tree, or sent as patches (it's only 18 of them),
please let me know.
thanks,
greg k-h
-------------
The following changes since commit 60e476d02129acb1f863a9b4932358678ee6a355:
bna: remove useless calls to memset(). (2012-12-02 20:32:56 -0500)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/net-next.git tags/dev_removal_wireless
for you to fetch changes up to 40ccc6ab03053a2ad1f52c8b3f4d3ee828b7c013:
rtlwifi: remove __dev* attributes (2012-12-03 11:47:38 -0800)
----------------------------------------------------------------
Wireless: Remove __dev* markings from the wireless drivers
This is a series of patches that remove the dev* attributes for all
wireless drivers.
Use of __devinit, __devexit_p, __devinitdata, __devinitconst, and
__devexit are no longer needed since CONFIG_HOTPLUG is being removed as
an option.
Note, there are some devinit compiler section mismatch warnings due to
this series, but they are fixed up when merged with my driver-next
branch, which fixes the PCI device id warnings, and removes the modpost
detection, as it's no longer needed.
Signed-off-by: Greg Kroah-Hartman <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
----------------------------------------------------------------
Bill Pemberton (18):
rfkill: remove __dev* attributes
wireless: remove __dev* attributes
ath5k: remove __dev* attributes
atmel: remove __dev* attributes
b43: remove __dev* attributes
brcm80211: remove __dev* attributes
ipw2x00: remove __dev* attributes
iwlegacy: remove __dev* attributes
iwlwifi: remove __dev* attributes
libertas: remove __dev* attributes
mwl8k: remove __dev* attributes
orinoco: remove __dev* attributes
p54: remove __dev* attributes
rt2x00: remove __dev* attributes
rtl8187: remove __dev* attributes
rtl8187: remove __dev* attributes
wlcore/wl18xx/wl12xx: remove __dev* attributes
rtlwifi: remove __dev* attributes
drivers/net/wireless/adm8211.c | 6 +++---
drivers/net/wireless/airo.c | 6 +++---
drivers/net/wireless/ath/ath5k/base.c | 4 ++--
drivers/net/wireless/ath/ath5k/led.c | 2 +-
drivers/net/wireless/ath/ath5k/pci.c | 6 +++---
drivers/net/wireless/atmel_pci.c | 6 +++---
drivers/net/wireless/b43/pcmcia.c | 6 +++---
drivers/net/wireless/b43/sdio.c | 6 +++---
drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c | 4 ++--
drivers/net/wireless/ipw2x00/ipw2100.c | 4 ++--
drivers/net/wireless/ipw2x00/ipw2200.c | 8 ++++----
drivers/net/wireless/iwlegacy/3945-mac.c | 4 ++--
drivers/net/wireless/iwlegacy/4965-mac.c | 4 ++--
drivers/net/wireless/iwlwifi/pcie/drv.c | 4 ++--
drivers/net/wireless/libertas/if_spi.c | 6 +++---
drivers/net/wireless/mwl8k.c | 12 ++++++------
drivers/net/wireless/orinoco/orinoco_nortel.c | 4 ++--
drivers/net/wireless/orinoco/orinoco_pci.c | 4 ++--
drivers/net/wireless/orinoco/orinoco_plx.c | 4 ++--
drivers/net/wireless/orinoco/orinoco_tmd.c | 4 ++--
drivers/net/wireless/p54/p54pci.c | 6 +++---
drivers/net/wireless/p54/p54spi.c | 6 +++---
drivers/net/wireless/p54/p54usb.c | 6 +++---
drivers/net/wireless/rt2x00/rt2400pci.c | 2 +-
drivers/net/wireless/rt2x00/rt2500pci.c | 2 +-
drivers/net/wireless/rt2x00/rt2800pci.c | 4 ++--
drivers/net/wireless/rt2x00/rt61pci.c | 2 +-
drivers/net/wireless/rtl818x/rtl8180/dev.c | 6 +++---
drivers/net/wireless/rtl818x/rtl8187/dev.c | 6 +++---
drivers/net/wireless/rtlwifi/pci.c | 2 +-
drivers/net/wireless/rtlwifi/pci.h | 2 +-
drivers/net/wireless/rtlwifi/rtl8192de/sw.c | 2 +-
drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 2 +-
drivers/net/wireless/rtlwifi/usb.c | 2 +-
drivers/net/wireless/rtlwifi/usb.h | 2 +-
drivers/net/wireless/ti/wl1251/sdio.c | 4 ++--
drivers/net/wireless/ti/wl1251/spi.c | 6 +++---
drivers/net/wireless/ti/wl12xx/main.c | 6 +++---
drivers/net/wireless/ti/wl18xx/main.c | 6 +++---
drivers/net/wireless/ti/wlcore/main.c | 4 ++--
drivers/net/wireless/ti/wlcore/sdio.c | 8 ++++----
drivers/net/wireless/ti/wlcore/spi.c | 6 +++---
drivers/net/wireless/ti/wlcore/wlcore.h | 4 ++--
net/rfkill/rfkill-gpio.c | 2 +-
net/rfkill/rfkill-regulator.c | 6 +++---
45 files changed, 104 insertions(+), 104 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* [PATCH v2] ipv6: Fix default route failover when CONFIG_IPV6_ROUTER_PREF=n
From: Paul Marks @ 2012-12-03 20:26 UTC (permalink / raw)
To: davem; +Cc: yoshfuji, netdev, Paul Marks
In-Reply-To: <20121203.135923.1359930693250099951.davem@davemloft.net>
I believe this commit from 2008 was incorrect:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=398bcbebb6f721ac308df1e3d658c0029bb74503
When CONFIG_IPV6_ROUTER_PREF is disabled, the kernel should follow
RFC4861 section 6.3.6: if no route is NUD_VALID, then traffic should be
sprayed across all routers (indirectly triggering NUD) until one of them
becomes NUD_VALID.
However, the following experiment demonstrates that this does not work:
1) Connect to an IPv6 network.
2) Change the router's MAC (and link-local) address.
The kernel will lock onto the first router and never try the new one, even
if the first becomes unreachable. This patch fixes the problem by
allowing rt6_check_neigh() to return 0; if all routers return 0, then
rt6_select() will fall back to round-robin behavior.
This patch should have no effect when CONFIG_IPV6_ROUTER_PREF=y.
Note that rt6_check_neigh() is only used in a boolean context, so I've
changed its return type accordingly.
Signed-off-by: Paul Marks <pmarks@google.com>
---
Changelog since v1:
- Changed return type from 'int' to 'bool'.
net/ipv6/route.c | 24 ++++++++++--------------
1 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index b1e6cf0..35f2815 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -487,35 +487,32 @@ static inline int rt6_check_dev(struct rt6_info *rt, int oif)
return 0;
}
-static inline int rt6_check_neigh(struct rt6_info *rt)
+static inline bool rt6_check_neigh(struct rt6_info *rt)
{
struct neighbour *neigh;
- int m;
+ bool ret = false;
neigh = rt->n;
if (rt->rt6i_flags & RTF_NONEXTHOP ||
!(rt->rt6i_flags & RTF_GATEWAY))
- m = 1;
+ ret = true;
else if (neigh) {
read_lock_bh(&neigh->lock);
if (neigh->nud_state & NUD_VALID)
- m = 2;
+ ret = true;
#ifdef CONFIG_IPV6_ROUTER_PREF
- else if (neigh->nud_state & NUD_FAILED)
- m = 0;
+ else if (!(neigh->nud_state & NUD_FAILED))
+ ret = true;
#endif
- else
- m = 1;
read_unlock_bh(&neigh->lock);
- } else
- m = 0;
- return m;
+ }
+ return ret;
}
static int rt6_score_route(struct rt6_info *rt, int oif,
int strict)
{
- int m, n;
+ int m;
m = rt6_check_dev(rt, oif);
if (!m && (strict & RT6_LOOKUP_F_IFACE))
@@ -523,8 +520,7 @@ static int rt6_score_route(struct rt6_info *rt, int oif,
#ifdef CONFIG_IPV6_ROUTER_PREF
m |= IPV6_DECODE_PREF(IPV6_EXTRACT_PREF(rt->rt6i_flags)) << 2;
#endif
- n = rt6_check_neigh(rt);
- if (!n && (strict & RT6_LOOKUP_F_REACHABLE))
+ if (!rt6_check_neigh(rt) && (strict & RT6_LOOKUP_F_REACHABLE))
return -1;
return m;
}
--
1.7.7.3
^ permalink raw reply related
* [GIT PULL] Remove __dev* markings from the networking drivers
From: Greg KH @ 2012-12-03 20:27 UTC (permalink / raw)
To: netdev; +Cc: Bill Pemberton
Here's a pull request for all of Bill's __dev* removal patches for the
networking drivers, based on net-next. I'll send out a separate one for
the wireless drivers in case those want to go through John's tree
If I should rework these in any way, please let me know.
thanks,
greg k-h
-------------
The following changes since commit 60e476d02129acb1f863a9b4932358678ee6a355:
bna: remove useless calls to memset(). (2012-12-02 20:32:56 -0500)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/net-next.git tags/dev_removal
for you to fetch changes up to 9f9a12f8ca79839c948464a37c5b557808278708:
net/intel: remove __dev* attributes (2012-12-03 11:17:07 -0800)
----------------------------------------------------------------
Networking: Remove __dev* markings from the networking drivers
This is a series of patches that remove the dev* attributes for all
networking drivers, with the exception of wireless drivers, those are in
a different branch.
Use of __devinit, __devexit_p, __devinitdata, __devinitconst, and
__devexit are no longer needed since CONFIG_HOTPLUG is being removed as
an option.
Note, there are some devinit compiler section mismatch warnings due to
this series, but they are fixed up when merged with my driver-next
branch, which fixes the PCI device id warnings, and removes the modpost
detection, as it's no longer needed.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----------------------------------------------------------------
Bill Pemberton (103):
ARCNET: remove __dev* attributes
can: remove __dev* attributes
drivers/net/ethernet/amd/am79c961a.c: remove __dev* attributes
i825xx/ether1.c: remove __dev* attributes
i825xx: remove __dev* attributes
3c59x: remove __dev* attributes
typhoon: remove __dev* attributes
3c509: remove __dev* attributes
8390: remove __dev* attributes
acenic: remove __dev* attributes
starfire: remove __dev* attributes
bfin_mac: remove __dev* attributes
aeroflex: remove __dev* attributes
pcnet32: remove __dev* attributes
b44: remove __dev* attributes
bnx2: remove __dev* attributes
tg3: remove __dev* attributes
bna: remove __dev* attributes
cxgb3: remove __dev* attributes
cxgb4: remove __dev* attributes
cxgb4vf: remove __dev* attributes
chelsio: remove __dev* attributes
enic: remove __dev* attributes
dm9000: remove __dev* attributes
dlink: remove __dev* attributes
fs_enet: remove __dev* attributes
be2net: remove __dev* attributes
ehea: remove __dev* attributes
hp100: remove __dev* attributes
ibmveth: remove __dev* attributes
ibm/emac: remove __dev* attributes
skge: remove __dev* attributes
mlx4_core: remove __dev* attributes
enc28j60: remove __dev* attributes
natsemi: remove __dev* attributes
vxge/s2io: remove __dev* attributes
nuvoton: remove __dev* attributes
forcedeth: remove __dev* attributes
lpc_eth: remove __dev* attributes
net/octeon_mgmt: remove __dev* attributes
packetengines: remove __dev* attributes
netxen: remove __dev* attributes
qlcnic: remove __dev* attributes
qla3xxx: remove __dev* attributes
qlge: remove __dev* attributes
r8169: remove __dev* attributes
8139too: remove __dev* attributes
r6040: remove __dev* attributes
seeq: remove __dev* attributes
sfc: remove __dev* attributes
sc92031: remove __dev* attributes
stmmac: remove __dev* attributes
sis190: remove __dev* attributes
sis900: remove __dev* attributes
smc91x: remove __dev* attributes
smsc911x: remove __dev* attributes
smc911x: remove __dev* attributes
smsc9420: remove __dev* attributes
tulip: remove __dev* attributes
epic100: remove __dev* attributes
cpmac: remove __dev* attributes
tlan: remove __dev* attributes
cpsw: remove __dev* attributes
tehuti: remove __dev* attributes
tc35815: remove __dev* attributes
via-rhine: remove __dev* attributes
via-velocity: remove __dev* attributes
xilinx_axienet: remove __dev* attributes
ixp4xx_eth: remove __dev* attributes
icplus: remove __dev* attributes
jme: remove __dev* attributes
net/amd: remove __dev* attributes
net/apple: remove __dev* attributes
net/atheros: remove __dev* attributes
net/cadence: remove __dev* attributes
net/freescale: remove __dev* attributes
net/micrel: remove __dev* attributes
net/pasemi: remove __dev* attributes
net/sgi: remove __dev* attributes
net/sun: remove __dev* attributes
net/davinci_emac: remove __dev* attributes
net/ps3_gelic_net: remove __dev* attributes
net/spider_net: remove __dev* attributes
net/ps3_gelic_wireless: remove __dev* attributes
net/wiznet: remove __dev* attributes
net/xilinx: remove __dev* attributes
net/ethernet: remove __dev* attributes
fddi: remove __dev* attributes
hippi: remove __dev* attributes
ieee802154: remove __dev* attributes
irda: remove __dev* attributes
net/phy: remove __dev* attributes
virtio_net: remove __dev* attributes
vmxnet3: remove __dev* attributes
dscc4: remove __dev* attributes
farsync: remove __dev* attributes
net/hdlc: remove __dev* attributes
ixp4xx_hss: remove __dev* attributes
net/lmc: remove __dev* attributes
xen-netfront: remove __dev* attributes
net/broadcom: remove __dev* attributes
bnx2x: remove __dev* attributes
net/intel: remove __dev* attributes
drivers/net/arcnet/com20020-pci.c | 6 ++---
drivers/net/can/at91_can.c | 8 +++----
drivers/net/can/bfin_can.c | 6 ++---
drivers/net/can/c_can/c_can_pci.c | 6 ++---
drivers/net/can/c_can/c_can_platform.c | 6 ++---
drivers/net/can/cc770/cc770_isa.c | 18 +++++++--------
drivers/net/can/cc770/cc770_platform.c | 12 +++++-----
drivers/net/can/flexcan.c | 10 ++++----
drivers/net/can/grcan.c | 8 +++----
drivers/net/can/janz-ican3.c | 24 +++++++++----------
drivers/net/can/mcp251x.c | 6 ++---
drivers/net/can/mscan/mpc5xxx_can.c | 24 +++++++++----------
drivers/net/can/pch_can.c | 6 ++---
drivers/net/can/sja1000/ems_pci.c | 2 +-
drivers/net/can/sja1000/ems_pcmcia.c | 4 ++--
drivers/net/can/sja1000/kvaser_pci.c | 6 ++---
drivers/net/can/sja1000/peak_pci.c | 6 ++---
drivers/net/can/sja1000/peak_pcmcia.c | 2 +-
drivers/net/can/sja1000/plx_pci.c | 20 ++++++++--------
drivers/net/can/sja1000/sja1000_isa.c | 16 ++++++-------
drivers/net/can/sja1000/sja1000_of_platform.c | 8 +++----
drivers/net/can/sja1000/tscan1.c | 8 +++----
drivers/net/can/softing/softing_cs.c | 10 ++++----
drivers/net/can/softing/softing_main.c | 12 +++++-----
drivers/net/can/ti_hecc.c | 4 ++--
drivers/net/ethernet/3com/3c509.c | 24 +++++++++----------
drivers/net/ethernet/3com/3c59x.c | 16 ++++++-------
drivers/net/ethernet/3com/typhoon.c | 10 ++++----
drivers/net/ethernet/8390/etherh.c | 8 +++----
drivers/net/ethernet/8390/hydra.c | 16 ++++++-------
drivers/net/ethernet/8390/ne2k-pci.c | 12 +++++-----
drivers/net/ethernet/8390/ne3210.c | 4 ++--
drivers/net/ethernet/8390/zorro8390.c | 12 +++++-----
drivers/net/ethernet/adaptec/starfire.c | 10 ++++----
drivers/net/ethernet/adi/bfin_mac.c | 12 +++++-----
drivers/net/ethernet/aeroflex/greth.c | 6 ++---
drivers/net/ethernet/alteon/acenic.c | 26 ++++++++++-----------
drivers/net/ethernet/amd/a2065.c | 12 +++++-----
drivers/net/ethernet/amd/am79c961a.c | 2 +-
drivers/net/ethernet/amd/amd8111e.c | 8 +++----
drivers/net/ethernet/amd/ariadne.c | 8 +++----
drivers/net/ethernet/amd/au1000_eth.c | 6 ++---
drivers/net/ethernet/amd/declance.c | 8 +++----
drivers/net/ethernet/amd/depca.c | 10 ++++----
drivers/net/ethernet/amd/hplance.c | 14 ++++++------
drivers/net/ethernet/amd/pcnet32.c | 10 ++++----
drivers/net/ethernet/amd/sunlance.c | 8 +++----
drivers/net/ethernet/apple/bmac.c | 4 ++--
drivers/net/ethernet/apple/mace.c | 4 ++--
drivers/net/ethernet/apple/macmace.c | 6 ++---
drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 14 ++++++------
drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 10 ++++----
drivers/net/ethernet/atheros/atl1e/atl1e_param.c | 7 +++---
drivers/net/ethernet/atheros/atlx/atl1.c | 14 ++++++------
drivers/net/ethernet/atheros/atlx/atl2.c | 16 ++++++-------
drivers/net/ethernet/broadcom/b44.c | 8 +++----
drivers/net/ethernet/broadcom/bcm63xx_enet.c | 12 +++++-----
drivers/net/ethernet/broadcom/bnx2.c | 20 ++++++++--------
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 2 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 2 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 66 ++++++++++++++++++++++++++---------------------------
drivers/net/ethernet/broadcom/cnic.c | 2 +-
drivers/net/ethernet/broadcom/sb1250-mac.c | 2 +-
drivers/net/ethernet/broadcom/tg3.c | 95 ++++++++++++++++++++++++++++++++++++++--------------------------------------
drivers/net/ethernet/brocade/bna/bnad.c | 6 ++---
drivers/net/ethernet/cadence/at91_ether.c | 4 ++--
drivers/net/ethernet/cadence/macb.c | 8 +++----
drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 6 ++---
drivers/net/ethernet/chelsio/cxgb/sge.c | 2 +-
drivers/net/ethernet/chelsio/cxgb/subr.c | 8 +++----
drivers/net/ethernet/chelsio/cxgb/tp.c | 2 +-
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 12 +++++-----
drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c | 4 ++--
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 22 +++++++++---------
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 12 +++++-----
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 20 ++++++++--------
drivers/net/ethernet/chelsio/cxgb4vf/t4vf_common.h | 4 ++--
drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c | 6 ++---
drivers/net/ethernet/cisco/enic/enic_main.c | 6 ++---
drivers/net/ethernet/davicom/dm9000.c | 6 ++---
drivers/net/ethernet/dec/tulip/de2104x.c | 17 +++++++-------
drivers/net/ethernet/dec/tulip/de4x5.c | 18 +++++++--------
drivers/net/ethernet/dec/tulip/dmfe.c | 12 +++++-----
drivers/net/ethernet/dec/tulip/eeprom.c | 10 ++++----
drivers/net/ethernet/dec/tulip/media.c | 2 +-
drivers/net/ethernet/dec/tulip/tulip_core.c | 14 ++++++------
drivers/net/ethernet/dec/tulip/uli526x.c | 12 +++++-----
drivers/net/ethernet/dec/tulip/winbond-840.c | 10 ++++----
drivers/net/ethernet/dec/tulip/xircom_cb.c | 6 ++---
drivers/net/ethernet/dlink/dl2k.c | 8 +++----
drivers/net/ethernet/dlink/sundance.c | 14 ++++++------
drivers/net/ethernet/dnet.c | 8 +++----
drivers/net/ethernet/emulex/benet/be_main.c | 4 ++--
drivers/net/ethernet/ethoc.c | 8 +++----
drivers/net/ethernet/fealnx.c | 10 ++++----
drivers/net/ethernet/freescale/fec.c | 10 ++++----
drivers/net/ethernet/freescale/fec_mpc52xx.c | 2 +-
drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | 2 +-
drivers/net/ethernet/freescale/fs_enet/mii-bitbang.c | 4 ++--
drivers/net/ethernet/freescale/fs_enet/mii-fec.c | 2 +-
drivers/net/ethernet/freescale/xgmac_mdio.c | 4 ++--
drivers/net/ethernet/hp/hp100.c | 16 ++++++-------
drivers/net/ethernet/i825xx/ether1.c | 14 ++++++------
drivers/net/ethernet/i825xx/lasi_82596.c | 8 +++----
drivers/net/ethernet/i825xx/lib82596.c | 2 +-
drivers/net/ethernet/i825xx/sni_82596.c | 8 +++----
drivers/net/ethernet/ibm/ehea/ehea_main.c | 10 ++++----
drivers/net/ethernet/ibm/emac/core.c | 18 +++++++--------
drivers/net/ethernet/ibm/emac/mal.c | 6 ++---
drivers/net/ethernet/ibm/emac/rgmii.c | 6 ++---
drivers/net/ethernet/ibm/emac/tah.c | 6 ++---
drivers/net/ethernet/ibm/emac/zmii.c | 6 ++---
drivers/net/ethernet/ibm/ibmveth.c | 6 ++---
drivers/net/ethernet/icplus/ipg.c | 6 ++---
drivers/net/ethernet/intel/e100.c | 6 ++---
drivers/net/ethernet/intel/e1000/e1000_main.c | 12 +++++-----
drivers/net/ethernet/intel/e1000/e1000_param.c | 10 ++++----
drivers/net/ethernet/intel/e1000e/netdev.c | 10 ++++----
drivers/net/ethernet/intel/e1000e/param.c | 6 ++---
drivers/net/ethernet/intel/igb/igb_main.c | 12 +++++-----
drivers/net/ethernet/intel/igbvf/netdev.c | 10 ++++----
drivers/net/ethernet/intel/ixgb/ixgb_main.c | 10 ++++----
drivers/net/ethernet/intel/ixgb/ixgb_param.c | 6 ++---
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 8 +++----
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 8 +++----
drivers/net/ethernet/jme.c | 6 ++---
drivers/net/ethernet/lantiq_etop.c | 4 ++--
drivers/net/ethernet/marvell/skge.c | 8 +++----
drivers/net/ethernet/marvell/sky2.c | 16 ++++++-------
drivers/net/ethernet/mellanox/mlx4/main.c | 6 ++---
drivers/net/ethernet/micrel/ks8695net.c | 10 ++++----
drivers/net/ethernet/micrel/ks8842.c | 6 ++---
drivers/net/ethernet/micrel/ks8851.c | 6 ++---
drivers/net/ethernet/micrel/ks8851_mll.c | 6 ++---
drivers/net/ethernet/micrel/ksz884x.c | 4 ++--
drivers/net/ethernet/microchip/enc28j60.c | 6 ++---
drivers/net/ethernet/natsemi/ibmlana.c | 4 ++--
drivers/net/ethernet/natsemi/jazzsonic.c | 8 +++----
drivers/net/ethernet/natsemi/macsonic.c | 18 +++++++--------
drivers/net/ethernet/natsemi/natsemi.c | 14 ++++++------
drivers/net/ethernet/natsemi/ns83820.c | 6 ++---
drivers/net/ethernet/natsemi/xtsonic.c | 6 ++---
drivers/net/ethernet/neterion/s2io.c | 6 ++---
drivers/net/ethernet/neterion/s2io.h | 4 ++--
drivers/net/ethernet/neterion/vxge/vxge-config.c | 6 ++---
drivers/net/ethernet/neterion/vxge/vxge-config.h | 6 ++---
drivers/net/ethernet/neterion/vxge/vxge-main.c | 16 ++++++-------
drivers/net/ethernet/nuvoton/w90p910_ether.c | 6 ++---
drivers/net/ethernet/nvidia/forcedeth.c | 6 ++---
drivers/net/ethernet/nxp/lpc_eth.c | 2 +-
drivers/net/ethernet/octeon/octeon_mgmt.c | 6 ++---
drivers/net/ethernet/packetengines/hamachi.c | 12 +++++-----
drivers/net/ethernet/packetengines/yellowfin.c | 10 ++++----
drivers/net/ethernet/pasemi/pasemi_mac.c | 6 ++---
drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c | 10 ++++----
drivers/net/ethernet/qlogic/qla3xxx.c | 6 ++---
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 10 ++++----
drivers/net/ethernet/qlogic/qlge/qlge_main.c | 8 +++----
drivers/net/ethernet/rdc/r6040.c | 8 +++----
drivers/net/ethernet/realtek/8139too.c | 14 ++++++------
drivers/net/ethernet/realtek/r8169.c | 18 +++++++--------
drivers/net/ethernet/s6gmac.c | 6 ++---
drivers/net/ethernet/seeq/ether3.c | 16 ++++++-------
drivers/net/ethernet/seeq/sgiseeq.c | 2 +-
drivers/net/ethernet/sfc/efx.c | 2 +-
drivers/net/ethernet/sgi/ioc3-eth.c | 10 ++++----
drivers/net/ethernet/sgi/meth.c | 2 +-
drivers/net/ethernet/silan/sc92031.c | 6 ++---
drivers/net/ethernet/sis/sis190.c | 20 ++++++++--------
drivers/net/ethernet/sis/sis900.c | 27 +++++++++++-----------
drivers/net/ethernet/smsc/epic100.c | 12 +++++-----
drivers/net/ethernet/smsc/smc911x.c | 10 ++++----
drivers/net/ethernet/smsc/smc91x.c | 10 ++++----
drivers/net/ethernet/smsc/smsc911x.c | 14 ++++++------
drivers/net/ethernet/smsc/smsc9420.c | 6 ++---
drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | 6 ++---
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 6 ++---
drivers/net/ethernet/sun/cassini.c | 12 +++++-----
drivers/net/ethernet/sun/niu.c | 90 ++++++++++++++++++++++++++++++++++++------------------------------------
drivers/net/ethernet/sun/sunbmac.c | 8 +++----
drivers/net/ethernet/sun/sungem.c | 6 ++---
drivers/net/ethernet/sun/sunhme.c | 18 +++++++--------
drivers/net/ethernet/sun/sunqe.c | 12 +++++-----
drivers/net/ethernet/sun/sunvnet.c | 14 ++++++------
drivers/net/ethernet/tehuti/tehuti.c | 6 ++---
drivers/net/ethernet/ti/cpmac.c | 10 ++++----
drivers/net/ethernet/ti/cpsw.c | 6 ++---
drivers/net/ethernet/ti/davinci_emac.c | 6 ++---
drivers/net/ethernet/ti/davinci_mdio.c | 6 ++---
drivers/net/ethernet/ti/tlan.c | 8 +++----
drivers/net/ethernet/toshiba/ps3_gelic_net.c | 14 ++++++------
drivers/net/ethernet/toshiba/ps3_gelic_wireless.c | 6 ++---
drivers/net/ethernet/toshiba/spider_net.c | 6 ++---
drivers/net/ethernet/toshiba/tc35815.c | 16 ++++++-------
drivers/net/ethernet/via/via-rhine.c | 12 +++++-----
drivers/net/ethernet/via/via-velocity.c | 25 ++++++++++++--------
drivers/net/ethernet/wiznet/w5100.c | 8 +++----
drivers/net/ethernet/wiznet/w5300.c | 8 +++----
drivers/net/ethernet/xilinx/ll_temac_main.c | 8 +++----
drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 8 +++----
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 8 +++----
drivers/net/ethernet/xscale/ixp4xx_eth.c | 4 ++--
drivers/net/fddi/defxx.c | 40 ++++++++++++++++----------------
drivers/net/fddi/skfp/skfddi.c | 4 ++--
drivers/net/hippi/rrunner.c | 10 ++++----
drivers/net/ieee802154/at86rf230.c | 6 ++---
drivers/net/ieee802154/fakehard.c | 6 ++---
drivers/net/ieee802154/fakelb.c | 6 ++---
drivers/net/ieee802154/mrf24j40.c | 6 ++---
drivers/net/irda/au1k_ir.c | 8 +++----
drivers/net/irda/bfin_sir.c | 8 +++----
drivers/net/irda/sh_irda.c | 6 ++---
drivers/net/irda/sh_sir.c | 6 ++---
drivers/net/irda/smsc-ircc2.c | 4 ++--
drivers/net/irda/via-ircc.c | 14 ++++++------
drivers/net/irda/vlsi_ir.c | 6 ++---
drivers/net/phy/mdio-gpio.c | 10 ++++----
drivers/net/phy/mdio-mux-gpio.c | 6 ++---
drivers/net/phy/mdio-mux-mmioreg.c | 6 ++---
drivers/net/phy/mdio-octeon.c | 6 ++---
drivers/net/phy/spi_ks8995.c | 6 ++---
drivers/net/virtio_net.c | 4 ++--
drivers/net/vmxnet3/vmxnet3_drv.c | 6 ++---
drivers/net/wan/dscc4.c | 6 ++---
drivers/net/wan/farsync.c | 10 ++++----
drivers/net/wan/hd64570.c | 4 ++--
drivers/net/wan/hd64572.c | 4 ++--
drivers/net/wan/ixp4xx_hss.c | 4 ++--
drivers/net/wan/lmc/lmc_main.c | 6 ++---
drivers/net/wan/pc300too.c | 2 +-
drivers/net/wan/pci200syn.c | 2 +-
drivers/net/wan/wanxl.c | 2 +-
drivers/net/xen-netfront.c | 8 +++----
233 files changed, 1142 insertions(+), 1133 deletions(-)
^ permalink raw reply
* Re: [net-next:master 98/98] drivers/net/ethernet/myricom/myri10ge/myri10ge.c:1286:34: sparse: cast to restricted __be16
From: Christopher Li @ 2012-12-03 20:13 UTC (permalink / raw)
To: Andrew Gallatin; +Cc: Fengguang Wu, netdev, Stephen Hemminger
In-Reply-To: <50BCFBAA.5060001@myri.com>
On Mon, Dec 3, 2012 at 11:21 AM, Andrew Gallatin <gallatin@myri.com> wrote:
> drivers/net/ethernet/myricom/myri10ge/myri10ge.c:1434:35: warning:
> context imbalance in 'myri10ge_intr' - different lock contexts for basic
> block
>
> Which is apparently triggered by using __netif_tx_trylock().
> Is there something I'm missing, or does sparse just not like
> __netif_tx_trylock() because it divides spinlock acquisition and
> release into 2 different functions?
>
Right. Sparse currently does not have cross function analyse.
It will complain if the lock is not balanced with lock split into
different functions.
Chris
^ permalink raw reply
* Re: [PATCH] atm: introduce vcc_pop_skb()
From: Krzysztof Mazur @ 2012-12-03 20:11 UTC (permalink / raw)
To: David Woodhouse; +Cc: chas williams - CONTRACTOR, davem, netdev, linux-kernel
In-Reply-To: <1354540961.24281.82.camel@shinybook.infradead.org>
On Mon, Dec 03, 2012 at 01:22:41PM +0000, David Woodhouse wrote:
> On Wed, 2012-11-28 at 23:33 +0100, Krzysztof Mazur wrote:
> >
> > Many ATM drivers store vcc in ATM_SKB(skb)->vcc and use it for
> > freeing skbs. Now they can just use atm_pop_skb() to free such
> > buffers.
> >
> > Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
>
> Note that this one didn't make it into the tree that Dave just pulled.
>
> Not that I didn't think it was a good idea, but it was just separate
> from the other "real" fixes ??? and the tree had already grown into a big
> enough pile from your original single patch!
That patch is a preparation of separate series. The current version
(far from final version) is available at:
git://git.podlesie.net/km/linux.git atm-pop
and
http://git.podlesie.net/gitweb.cgi?p=km/linux.git;a=shortlog;h=refs/heads/atm-pop
Patch 3 and especially patch 4 are far from being ready. They are also ugly
because many ATM drivers use strange coding style and I tried to use that
style because using different style for new code would be probably be even worse.
Currently there are 4 patches:
atm: introduce vcc_pop()
atm: introduce vcc_pop_skb()
atm: convert drivers to use vcc_pop*()
atm: add missing vcc_pop*() calls in drivers
The first two introduce two helpers vcc_pop() and vcc_pop_skb(). The third
should be 1:1 conversion of vcc->pop() users to vcc_pop*() interface.
The forth patch fixes some problems I've found. In all cases the bugs
occurs in error handling code, in most cases dev_kfree_skb() is used
instead of vcc_pop(), in some cases driver just returns some error
code and skb is never freed, in two cases I removed the vcc->pop()
call in code like:
static int eni_send(struct atm_vcc *vcc,struct sk_buff *skb)
{
[...]
if (!skb) {
printk(KERN_CRIT "!skb in eni_send ?\n");
if (vcc->pop) vcc->pop(vcc,skb);
return -EINVAL;
}
I don't think that we should check for !skb and even if skb == NULL
it's not a good idea to call vcc->pop() because it will crash.
Current diffstat:
drivers/atm/adummy.c | 5 +---
drivers/atm/ambassador.c | 34 ++++++++++++++--------------
drivers/atm/atmtcp.c | 15 ++++--------
drivers/atm/eni.c | 11 ++++-----
drivers/atm/firestream.c | 19 ++--------------
drivers/atm/fore200e.c | 23 ++++---------------
drivers/atm/he.c | 33 ++++++---------------------
drivers/atm/horizon.c | 31 +++++++++----------------
drivers/atm/idt77252.c | 32 +++++++-------------------
drivers/atm/iphase.c | 59 +++++++++++++-----------------------------------
drivers/atm/lanai.c | 18 ++++-----------
drivers/atm/nicstar.c | 31 ++++++++-----------------
drivers/atm/solos-pci.c | 5 +---
drivers/atm/zatm.c | 13 ++++-------
drivers/usb/atm/usbatm.c | 17 ++++----------
include/linux/atmdev.h | 16 +++++++++++++
net/atm/common.c | 15 ++++++++++++
17 files changed, 128 insertions(+), 249 deletions(-)
>
> In <20121006154606.GA25588@shrek.podlesie.net> you posted another patch:
> > I think there is another problem here. The pppoatm gets a reference
> > to atmvcc, but I don't see anything that protects against removal
> > of that vcc.
> >
> > The vcc uses vcc->sk socket for reference counting, so sock_hold()
> > and sock_put() should be used by pppoatm.
>
> That one I think *isn't* needed, because we have properly fixed the
> races with vcc_destroy_socket(). I just wanted to check you agree...?
>
It was never really needed, I removed it from v3.
Thanks,
Krzysiek
^ permalink raw reply
* Re: Re: [B.A.T.M.A.N.] [PATCH] net: fix possible deadlocks in rtnl_trylock/unlock
From: Antonio Quartulli @ 2012-12-03 20:09 UTC (permalink / raw)
To: Eric Dumazet
Cc: Simon Wunderlich, Sven Eckelmann, b.a.t.m.a.n, netdev, davem,
Simon Wunderlich
In-Reply-To: <20121201200153.GA1002@pandem0nium>
[-- Attachment #1: Type: text/plain, Size: 2342 bytes --]
On Sat, Dec 01, 2012 at 09:01:53PM +0100, Simon Wunderlich wrote:
> On Sat, Dec 01, 2012 at 11:44:34AM -0800, Eric Dumazet wrote:
> > On Sat, 2012-12-01 at 20:04 +0100, Sven Eckelmann wrote:
> > > On Saturday 01 December 2012 10:36:12 Eric Dumazet wrote:
> > >
> > > > > diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
> > > > > index c5c0593..c122782 100644
> > > > > --- a/net/bridge/br_sysfs_br.c
> > > > > +++ b/net/bridge/br_sysfs_br.c
> > > > > @@ -142,7 +142,7 @@ static ssize_t store_stp_state(struct device *d,
> > > > >
> > > > > if (!rtnl_trylock())
> > > > >
> > > > > return restart_syscall();
> > > > >
> > > > > br_stp_set_enabled(br, val);
> > > > >
> > > > > - rtnl_unlock();
> > > > > + __rtnl_unlock();
> > > > >
> > > > > return len;
> > > > >
> > > > > }
> > > >
> > > > I have no idea of why you believe there is a problem here.
> > > >
> > > > Could you explain how net_todo_list could be not empty ?
> > > >
> > > > As long as no device is unregistered between
> > > > rtnl_trylock()/rtnl_unlock(), there is no possible deadlock.
> > >
> > > I am not sure what "here" means for your. At least batman-adv tries to
> > > unregister a device -> problem [1]. I will not make any judgements about the
> > > other uses in the kernel/other parts patched by Simon.
> > >
> >
> > I was reacting to the change in net/bridge/br_sysfs_br.c
> >
> > rtnl_trylock() could set a boolean flag to explicitly WARN_ON()
> > in case we try to unregister a device.
>
> Well, I'm not sure if this can happen in the bridge code, but from looking at the
> code it doesn't appear to be impossible. It would be better to be sure that it can't
> deadlock IMHO.
>
> (Although doing unlock/lock/unlock in an unlock function is also a little "uncommon").
But still we have the problem in batman-adv (as Sven pointed out in a previous
email) that tries to unregister a device in that "critical window".
Exporting __rtnl_unlock() would solve the issue in this case.
If you think the bridge code should not end up in such situation, what if Simon
resends the patch with only the __rtnl_unlock() exportation and the change in
batman-adv?
Cheers,
--
Antonio Quartulli
..each of us alone is worth nothing..
Ernesto "Che" Guevara
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply
* Re: [PATCHv3] tun: only queue packets on device
From: David Miller @ 2012-12-03 20:07 UTC (permalink / raw)
To: mst; +Cc: jasowang, nhorman, ramirose, davej, mtk.manpages, netdev,
linux-kernel
In-Reply-To: <20121203200714.GA2183@redhat.com>
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: Mon, 3 Dec 2012 22:07:14 +0200
> Historically tun supported two modes of operation:
> - in default mode, a small number of packets would get queued
> at the device, the rest would be queued in qdisc
> - in one queue mode, all packets would get queued at the device
>
> This might have made sense up to a point where we made the
> queue depth for both modes the same and set it to
> a huge value (500) so unless the consumer
> is stuck the chance of losing packets is small.
>
> Thus in practice both modes behave the same, but the
> default mode has some problems:
> - if packets are never consumed, fragments are never orphaned
> which cases a DOS for sender using zero copy transmit
> - overrun errors are hard to diagnose: fifo error is incremented
> only once so you can not distinguish between
> userspace that is stuck and a transient failure,
> tcpdump on the device does not show any traffic
>
> Userspace solves this simply by enabling IFF_ONE_QUEUE
> but there seems to be little point in not doing the
> right thing for everyone, by default.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Applied, thanks Michael.
^ permalink raw reply
* [PATCHv3] tun: only queue packets on device
From: Michael S. Tsirkin @ 2012-12-03 20:07 UTC (permalink / raw)
To: David S. Miller
Cc: Jason Wang, Michael S. Tsirkin, Neil Horman, Rami Rosen,
Dave Jones, Michael Kerrisk, netdev, linux-kernel
Historically tun supported two modes of operation:
- in default mode, a small number of packets would get queued
at the device, the rest would be queued in qdisc
- in one queue mode, all packets would get queued at the device
This might have made sense up to a point where we made the
queue depth for both modes the same and set it to
a huge value (500) so unless the consumer
is stuck the chance of losing packets is small.
Thus in practice both modes behave the same, but the
default mode has some problems:
- if packets are never consumed, fragments are never orphaned
which cases a DOS for sender using zero copy transmit
- overrun errors are hard to diagnose: fifo error is incremented
only once so you can not distinguish between
userspace that is stuck and a transient failure,
tcpdump on the device does not show any traffic
Userspace solves this simply by enabling IFF_ONE_QUEUE
but there seems to be little point in not doing the
right thing for everyone, by default.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
Changes since v2:
Fix comment style
Changes from v1:
Address comment by David Miller:
Now that TUN_NO_QUEUE has no real effect and is a NOP,
document it as such both in if_tun.h and the places
in the driver that flip the bit based upon userspace requests.
drivers/net/tun.c | 24 ++++++++----------------
include/uapi/linux/if_tun.h | 2 ++
2 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 607a3a5..038196b 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -693,21 +693,8 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
* number of queues.
*/
if (skb_queue_len(&tfile->socket.sk->sk_receive_queue)
- >= dev->tx_queue_len / tun->numqueues){
- if (!(tun->flags & TUN_ONE_QUEUE)) {
- /* Normal queueing mode. */
- /* Packet scheduler handles dropping of further packets. */
- netif_stop_subqueue(dev, txq);
-
- /* We won't see all dropped packets individually, so overrun
- * error is more appropriate. */
- dev->stats.tx_fifo_errors++;
- } else {
- /* Single queue mode.
- * Driver handles dropping of all packets itself. */
- goto drop;
- }
- }
+ >= dev->tx_queue_len / tun->numqueues)
+ goto drop;
/* Orphan the skb - required as we might hang on to it
* for indefinite time. */
@@ -1322,7 +1309,6 @@ static ssize_t tun_do_read(struct tun_struct *tun, struct tun_file *tfile,
schedule();
continue;
}
- netif_wake_subqueue(tun->dev, tfile->queue_index);
ret = tun_put_user(tun, tfile, skb, iv, len);
kfree_skb(skb);
@@ -1485,6 +1471,9 @@ static int tun_flags(struct tun_struct *tun)
if (tun->flags & TUN_NO_PI)
flags |= IFF_NO_PI;
+ /* This flag has no real effect. We track the value for backwards
+ * compatibility.
+ */
if (tun->flags & TUN_ONE_QUEUE)
flags |= IFF_ONE_QUEUE;
@@ -1633,6 +1622,9 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
else
tun->flags &= ~TUN_NO_PI;
+ /* This flag has no real effect. We track the value for backwards
+ * compatibility.
+ */
if (ifr->ifr_flags & IFF_ONE_QUEUE)
tun->flags |= TUN_ONE_QUEUE;
else
diff --git a/include/uapi/linux/if_tun.h b/include/uapi/linux/if_tun.h
index 958497a..2835b85 100644
--- a/include/uapi/linux/if_tun.h
+++ b/include/uapi/linux/if_tun.h
@@ -31,6 +31,7 @@
#define TUN_FASYNC 0x0010
#define TUN_NOCHECKSUM 0x0020
#define TUN_NO_PI 0x0040
+/* This flag has no real effect */
#define TUN_ONE_QUEUE 0x0080
#define TUN_PERSIST 0x0100
#define TUN_VNET_HDR 0x0200
@@ -60,6 +61,7 @@
#define IFF_TUN 0x0001
#define IFF_TAP 0x0002
#define IFF_NO_PI 0x1000
+/* This flag has no real effect */
#define IFF_ONE_QUEUE 0x2000
#define IFF_VNET_HDR 0x4000
#define IFF_TUN_EXCL 0x8000
--
MST
^ permalink raw reply related
* Re: [PATCH net-next 0/2] igb: fixes and improvements for irq fallback
From: Jeff Kirsher @ 2012-12-03 19:51 UTC (permalink / raw)
To: Stefan Assmann
Cc: netdev, e1000-devel, alexander.h.duyck, carolyn.wyborny,
jeffrey.t.kirsher
In-Reply-To: <1354540501-18407-1-git-send-email-sassmann@kpanic.de>
[-- Attachment #1: Type: text/plain, Size: 653 bytes --]
On 12/03/2012 05:14 AM, Stefan Assmann wrote:
> The interrupt fallback code should utilize the same code that's used for normal
> setup instead of duplicating it. It also has some shortcomings when it comes
> to situations where for some reason request_irq() fails to allocate vectors for
> MSI-X. Hoping to address these with this patchset.
>
> Would be nice for these patches to go through Intel testing before inclusion.
>
> Stefan Assmann (2):
> igb: remove duplicate code for fallback interrupt initialization
> igb: release already assigned MSI-X interrupts if setup fails
>
Thanks Stefan, I have added the patches to my queue.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 899 bytes --]
^ permalink raw reply
* Re: [PATCHv2] tun: only queue packets on device
From: David Miller @ 2012-12-03 19:48 UTC (permalink / raw)
To: mst; +Cc: jasowang, nhorman, ramirose, davej, mtk.manpages, netdev,
linux-kernel
In-Reply-To: <20121203194850.GA920@redhat.com>
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: Mon, 3 Dec 2012 21:48:50 +0200
>
> + /* This flag has no real effect. We track the value for backwards
> + * compatibility. */
/* Always
* like this.
*/
/*
* Never
* like this.
*/
/* And never
* like this. */
^ permalink raw reply
* [PATCHv2] tun: only queue packets on device
From: Michael S. Tsirkin @ 2012-12-03 19:48 UTC (permalink / raw)
To: David S. Miller
Cc: Jason Wang, Neil Horman, Rami Rosen, Dave Jones, Michael Kerrisk,
netdev, linux-kernel
Historically tun supported two modes of operation:
- in default mode, a small number of packets would get queued
at the device, the rest would be queued in qdisc
- in one queue mode, all packets would get queued at the device
This might have made sense up to a point where we made the
queue depth for both modes the same and set it to
a huge value (500) so unless the consumer
is stuck the chance of losing packets is small.
Thus in practice both modes behave the same, but the
default mode has some problems:
- if packets are never consumed, fragments are never orphaned
which cases a DOS for sender using zero copy transmit
- overrun errors are hard to diagnose: fifo error is incremented
only once so you can not distinguish between
userspace that is stuck and a transient failure,
tcpdump on the device does not show any traffic
Userspace solves this simply by enabling IFF_ONE_QUEUE
but there seems to be little point in not doing the
right thing for everyone, by default.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
Changes from v1:
Address comment by David Miller:
Now that TUN_NO_QUEUE has no real effect and is a NOP,
document it as such both in if_tun.h and the places
in the driver that flip the bit based upon userspace requests.
drivers/net/tun.c | 22 ++++++----------------
include/uapi/linux/if_tun.h | 2 ++
2 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 607a3a5..4a88dad 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -693,21 +693,8 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
* number of queues.
*/
if (skb_queue_len(&tfile->socket.sk->sk_receive_queue)
- >= dev->tx_queue_len / tun->numqueues){
- if (!(tun->flags & TUN_ONE_QUEUE)) {
- /* Normal queueing mode. */
- /* Packet scheduler handles dropping of further packets. */
- netif_stop_subqueue(dev, txq);
-
- /* We won't see all dropped packets individually, so overrun
- * error is more appropriate. */
- dev->stats.tx_fifo_errors++;
- } else {
- /* Single queue mode.
- * Driver handles dropping of all packets itself. */
- goto drop;
- }
- }
+ >= dev->tx_queue_len / tun->numqueues)
+ goto drop;
/* Orphan the skb - required as we might hang on to it
* for indefinite time. */
@@ -1322,7 +1309,6 @@ static ssize_t tun_do_read(struct tun_struct *tun, struct tun_file *tfile,
schedule();
continue;
}
- netif_wake_subqueue(tun->dev, tfile->queue_index);
ret = tun_put_user(tun, tfile, skb, iv, len);
kfree_skb(skb);
@@ -1485,6 +1471,8 @@ static int tun_flags(struct tun_struct *tun)
if (tun->flags & TUN_NO_PI)
flags |= IFF_NO_PI;
+ /* This flag has no real effect. We track the value for backwards
+ * compatibility. */
if (tun->flags & TUN_ONE_QUEUE)
flags |= IFF_ONE_QUEUE;
@@ -1633,6 +1621,8 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
else
tun->flags &= ~TUN_NO_PI;
+ /* This flag has no real effect. We track the value for backwards
+ * compatibility. */
if (ifr->ifr_flags & IFF_ONE_QUEUE)
tun->flags |= TUN_ONE_QUEUE;
else
diff --git a/include/uapi/linux/if_tun.h b/include/uapi/linux/if_tun.h
index 958497a..2835b85 100644
--- a/include/uapi/linux/if_tun.h
+++ b/include/uapi/linux/if_tun.h
@@ -31,6 +31,7 @@
#define TUN_FASYNC 0x0010
#define TUN_NOCHECKSUM 0x0020
#define TUN_NO_PI 0x0040
+/* This flag has no real effect */
#define TUN_ONE_QUEUE 0x0080
#define TUN_PERSIST 0x0100
#define TUN_VNET_HDR 0x0200
@@ -60,6 +61,7 @@
#define IFF_TUN 0x0001
#define IFF_TAP 0x0002
#define IFF_NO_PI 0x1000
+/* This flag has no real effect */
#define IFF_ONE_QUEUE 0x2000
#define IFF_VNET_HDR 0x4000
#define IFF_TUN_EXCL 0x8000
--
MST
^ permalink raw reply related
* Re: [PATCH 3/4 net-next] tg3: PTP - Add the hardware timestamp ioctl
From: Richard Cochran @ 2012-12-03 19:41 UTC (permalink / raw)
To: Michael Chan; +Cc: davem, netdev, nsujir
In-Reply-To: <1354506171-1646-3-git-send-email-mchan@broadcom.com>
On Sun, Dec 02, 2012 at 07:42:50PM -0800, Michael Chan wrote:
> From: Matt Carlson <mcarlson@broadcom.com>
>
> This patch implements the SIOCSHWTSTAMP ioctl as described in
> Documentation/networking/timestamping.txt
>
> Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
> ---
> drivers/net/ethernet/broadcom/tg3.c | 99 +++++++++++++++++++++++++++++++++++
> 1 files changed, 99 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
> index a54d194..f6e956c 100644
> --- a/drivers/net/ethernet/broadcom/tg3.c
> +++ b/drivers/net/ethernet/broadcom/tg3.c
> @@ -12755,6 +12755,102 @@ static void tg3_self_test(struct net_device *dev, struct ethtool_test *etest,
>
> }
>
> +static int tg3_hwtstamp_ioctl(struct net_device *dev,
> + struct ifreq *ifr, int cmd)
> +{
> + struct tg3 *tp = netdev_priv(dev);
> + struct hwtstamp_config stmpconf;
> +
> + if (!tg3_flag(tp, PTP_CAPABLE))
> + return -EINVAL;
> +
> + if (copy_from_user(&stmpconf, ifr->ifr_data, sizeof(stmpconf)))
> + return -EFAULT;
> +
> + if (stmpconf.flags)
> + return -EINVAL;
> +
> + switch (stmpconf.tx_type) {
> + case HWTSTAMP_TX_ON:
> + tg3_flag_set(tp, TX_TSTAMP_EN);
> + break;
> + case HWTSTAMP_TX_OFF:
> + tg3_flag_clear(tp, TX_TSTAMP_EN);
> + break;
> + default:
> + return -ERANGE;
> + }
> +
> + switch (stmpconf.rx_filter) {
> + case HWTSTAMP_FILTER_NONE:
> + tp->rxptpctl = 0;
> + break;
> + case HWTSTAMP_FILTER_ALL:
This filter code means that all packets are stamped, not just all PTP
packets. I guess that you should return ERANGE here.
Thanks,
Richard
^ permalink raw reply
* Re: [net-next:master 98/98] drivers/net/ethernet/myricom/myri10ge/myri10ge.c:1286:34: sparse: cast to restricted __be16
From: Andrew Gallatin @ 2012-12-03 19:21 UTC (permalink / raw)
To: Fengguang Wu; +Cc: netdev, Christopher Li, Stephen Hemminger
In-Reply-To: <20121130220228.GA22050@localhost>
I think I have a handle on most of the pre-existing warnings. The
device responds to BAR reads/writes with big endian data, while
I think everything expects little endian. These will be easy
to fix. The warning I don't see a fix for is this:
drivers/net/ethernet/myricom/myri10ge/myri10ge.c:1434:35: warning:
context imbalance in 'myri10ge_intr' - different lock contexts for basic
block
Which is apparently triggered by using __netif_tx_trylock().
Is there something I'm missing, or does sparse just not like
__netif_tx_trylock() because it divides spinlock acquisition and
release into 2 different functions?
Thanks,
Drew
^ permalink raw reply
* Re: [PATCH] net: ICMPv6 packets transmitted on wrong interface if nfmark is mangled
From: David Miller @ 2012-12-03 19:11 UTC (permalink / raw)
To: dries.dewinter; +Cc: pablo, kaber, netdev, netfilter-devel
In-Reply-To: <1354538763-2678-1-git-send-email-dries.dewinter@gmail.com>
From: Dries De Winter <dries.dewinter@gmail.com>
Date: Mon, 3 Dec 2012 13:46:03 +0100
> The IPv6 mangle table may change the source/destination address and skb->mark
> of a packet. Therefore it may be necessary to "reroute" a packet after it
> traversed this table. But this should not happen for some special packets like
> neighbour solicitations and MLD reports: they have an explicit destination, not
> originating from the routing table. Rerouting these packets may cause them to
> go out on the wrong interface or not to go out at all depending on the routing
> table.
>
> This patch allows to mark a dst_entry as "non-reroutable". icmp6_dst_alloc()
> (used by ndisc and MLD implementation) will always mark the allocated dst_entry
> as such. A check is added to netfilter (IPv6-only) so packets heading for a
> non-reroutable destination are never rerouted.
>
> Remarks:
>
> (1) dst entries allocated by addrconf_dst_alloc() are added to the routing
> table like normal routes and skbuffs get assigned such dst entries by normal
> rule lookup / route lookup. Therefore it's not needed to mark those dst
> entries as non-reroutable: if an skbuff got assigned such a dst entry by
> normal routing in the first place, and the changes done by the mangle table
> don't affect routing, rerouting the packet will get it there too.
>
> (2) Similar logic exists in IPv4 so local multicast/broadcast messages are
> potentially transmitted on the wrong interface. However, it's a less likely
> corner case there because those packets are treated differently by local
> output routing: multicast/broadcast messages are by default routed to the
> interface with a matching source IP-address. But this logic is invalid because
> it is allowed to (1) send messages with a source IP-address different from
> your own and (2) to assign the same IP-address on multiple interfaces.
> So ideally in IPv4 some dsts should be marked as non-reroutable as well.
>
> Signed-off-by: Dries De Winter <dries.dewinter@gmail.com>
Thinking about this some more I can't see how this is correct.
What if netfilter modified one of the keys that go into the route
lookup such as the source or destination address?
That's the whole point of this reroute call.
I'm not applying this, sorry.
^ permalink raw reply
* Re: [PATCH V3 1/5] cxgb4: Add T4 filter support
From: David Miller @ 2012-12-03 19:02 UTC (permalink / raw)
To: vipul-ut6Up61K2wZBDgjK7y7TUQ
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, netdev-u79uwXL29TY76Z2rM5mHXA,
roland-BHEL68pLQRGGvPXPguhicg, divy-ut6Up61K2wZBDgjK7y7TUQ,
dm-ut6Up61K2wZBDgjK7y7TUQ, kumaras-ut6Up61K2wZBDgjK7y7TUQ,
swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW,
abhishek-ut6Up61K2wZBDgjK7y7TUQ
In-Reply-To: <1354533781-31575-2-git-send-email-vipul-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>
From: Vipul Pandya <vipul-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>
Date: Mon, 3 Dec 2012 16:52:57 +0530
> + /*
> + * If the new or old filter have loopback rewriteing rules then we'll
> + * need to free any existing Layer Two Table (L2T) entries of the old
> + * filter rule. The firmware will handle freeing up any Source MAC
> + * Table (SMT) entries used for rewriting Source MAC Addresses in
> + * loopback rules.
> + */
> + if (f->l2t)
> + cxgb4_l2t_release(f->l2t);
> +
> + /* The zeroing of the filter rule below clears the filter valid,
> + * pending, locked flags, l2t pointer, etc. so it's all we need for
> + * this operation.
> + */
My greatest amusement is achieved when someone gets a code formatting
rule both correct and wrong in the same patch, as you have done here.
Format comments in the networking:
/* Like
* this.
*/
/*
* Never,
* like this.
*/
Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH net-next] ipv6: Make 'addrconf_rs_timer' send Router Solicitations (and re-arm itself) if Router Advertisements are accepted
From: David Miller @ 2012-12-03 19:00 UTC (permalink / raw)
To: shmulik.ladkani; +Cc: netdev, yoshfuji, tgraf, tore, amikoren
In-Reply-To: <1354448693-32155-1-git-send-email-shmulik.ladkani@gmail.com>
From: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Date: Sun, 2 Dec 2012 13:44:53 +0200
> As of 026359b [ipv6: Send ICMPv6 RSes only when RAs are accepted],
> Router Solicitations are sent whenever kernel accepts Router
> Advertisements on the interface.
>
> However, this logic isn't reflected in 'addrconf_rs_timer'.
>
> The timer fails to issue subsequent RS messages (and fails to re-arm
> itself) if forwarding is enabled and the special hybrid mode is
> enabled (accept_ra=2).
>
> Fix the condition determining whether next RS should be sent, by using
> 'ipv6_accept_ra()'.
>
> Reported-by: Ami Koren <amikoren@yahoo.com>
> Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH] ipv6: Fix default route failover when CONFIG_IPV6_ROUTER_PREF=n
From: David Miller @ 2012-12-03 18:59 UTC (permalink / raw)
To: pmarks; +Cc: yoshfuji, netdev
In-Reply-To: <1354442421-689-1-git-send-email-pmarks@google.com>
From: Paul Marks <pmarks@google.com>
Date: Sun, 2 Dec 2012 02:00:21 -0800
> I believe this commit from 2008 was incorrect:
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=398bcbebb6f721ac308df1e3d658c0029bb74503
>
> When CONFIG_IPV6_ROUTER_PREF is disabled, the kernel should follow
> RFC4861 section 6.3.6: if no route is NUD_VALID, then traffic should be
> sprayed across all routers (indirectly triggering NUD) until one of them
> becomes NUD_VALID.
>
> However, the following experiment demonstrates that this does not work:
>
> 1) Connect to an IPv6 network.
> 2) Change the router's MAC (and link-local) address.
>
> The kernel will lock onto the first router and never try the new one, even
> if the first becomes unreachable. This patch fixes the problem by
> allowing rt6_check_neigh() to return 0; if all routers return 0, then
> rt6_select() will fall back to round-robin behavior.
>
> This patch should have no effect when CONFIG_IPV6_ROUTER_PREF=y.
>
> Note that rt6_check_neigh() is only used in a boolean context, so the
> presence of both "m = 1" and "m = 2" was irrelevant and confusing.
>
> Signed-off-by: Paul Marks <pmarks@google.com>
The values '1' and '2' used to influence rt6_score_route() in different
ways.
Please change rt6_check_neigh() to return a "bool" if you are going to
do this.
Thanks.
^ permalink raw reply
* Re: [PATCH 1/1] net: mvneta: Remove unneeded version.h header inclusion
From: Thomas Petazzoni @ 2012-12-03 18:58 UTC (permalink / raw)
To: David Miller; +Cc: sachin.kamat, netdev, patches
In-Reply-To: <20121203.134620.972752091312747013.davem@davemloft.net>
Dear David Miller,
On Mon, 03 Dec 2012 13:46:20 -0500 (EST), David Miller wrote:
> From: Sachin Kamat <sachin.kamat@linaro.org>
> Date: Mon, 3 Dec 2012 15:15:28 +0530
>
> > linux/version.h inclusion is not necessary.
> >
> > Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
>
> Acked-by: David S. Miller <davem@davemloft.net>
>
> I hope the mvneta folks will pick this up and apply it where it
> needs to be as the mvneta driver isn't in the net-next tree.
Yes, I will pick it up, and send a pull request to the Marvell
maintainers. I have other mvneta fixes that I'll send together with
this one.
Thanks,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply
* Re: sky2: fix cleanup sequence in probe() function
From: David Miller @ 2012-12-03 18:53 UTC (permalink / raw)
To: LinoSanfilippo; +Cc: shemminger, mlindner, netdev
In-Reply-To: <20121201123928.GA3914@neptun>
From: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Date: Sat, 1 Dec 2012 13:39:28 +0100
> The cleanup sequence in sky2_probe() that is called in case of an error is
> mixed up in different places:
>
> - pci_disable_device() is not called in each case the device has been enabled
> before
>
> - same for pci_disable_msi(): test_msi() may return with an error != EOPNOTSUPP
> (due to failure of request_irq()). In that case msi is not disabled
>
> - also failure of register_netdev() does not disable msi
>
> This patch fixes the concerning parts.
>
> Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
This looks clearly correct to me, so I've applied it to net-next, thanks.
^ permalink raw reply
* Re: [PATCH 2/4 net-next] tg3: PTP - Implement the ptp api and ethtool functions
From: Richard Cochran @ 2012-12-03 18:51 UTC (permalink / raw)
To: Michael Chan; +Cc: davem, netdev, nsujir
In-Reply-To: <1354506171-1646-2-git-send-email-mchan@broadcom.com>
On Sun, Dec 02, 2012 at 07:42:49PM -0800, Michael Chan wrote:
> From: Matt Carlson <mcarlson@broadcom.com>
>
> This patch updates the ptp_caps structure with implementation functions.
> All the basic clock operations as described in
> Documentation/ptp/ptp.txt are supported.
>
> Frequency adjustment is performed using hardware with a 24 bit
> accumulator and a programmable correction value. On each clk, the
> correction value gets added to the accumulator and when it overflows,
> the time counter is incremented/decremented and the accumulator reset.
>
> So conversion from ppb to correction value is
> ppb * (1 << 24) / 1000000000
Are you sure about this? I don't know your hardware, but the others
ones with an addend and an accumulator work differently. Usually there
is a default addend based on the frequency ratio between the input
clock and the divided nominal clock. Then the ppb is applied to the
default addend.
For example, see how tmr_add is calculated in
Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
>
> Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
> ---
> drivers/net/ethernet/broadcom/tg3.c | 125 ++++++++++++++++++++++++++++++++++-
> 1 files changed, 123 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
> index 38047a9..a54d194 100644
> --- a/drivers/net/ethernet/broadcom/tg3.c
> +++ b/drivers/net/ethernet/broadcom/tg3.c
> @@ -5519,6 +5519,14 @@ static int tg3_setup_phy(struct tg3 *tp, int force_reset)
> return err;
> }
>
> +
> +static u64 tg3_refclk_read(struct tg3 *tp)
> +{
> + u64 stamp = tr32(TG3_EAV_REF_CLCK_LSB);
> +
> + return stamp | (u64) tr32(TG3_EAV_REF_CLCK_MSB) << 32;
> +}
> +
> static void tg3_refclk_write(struct tg3 *tp, u64 newval)
> {
> tw32(TG3_EAV_REF_CLCK_CTL, TG3_EAV_REF_CLCK_CTL_STOP);
> @@ -5527,14 +5535,127 @@ static void tg3_refclk_write(struct tg3 *tp, u64 newval)
> tw32_f(TG3_EAV_REF_CLCK_CTL, TG3_EAV_REF_CLCK_CTL_RESUME);
> }
>
> +static inline void tg3_full_lock(struct tg3 *tp, int irq_sync);
> +static inline void tg3_full_unlock(struct tg3 *tp);
> +static int tg3_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info)
> +{
> + struct tg3 *tp = netdev_priv(dev);
> +
> + info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE |
> + SOF_TIMESTAMPING_RX_SOFTWARE |
> + SOF_TIMESTAMPING_SOFTWARE |
> + SOF_TIMESTAMPING_TX_HARDWARE |
> + SOF_TIMESTAMPING_RX_HARDWARE |
> + SOF_TIMESTAMPING_RAW_HARDWARE;
> +
> + if (tp->ptp_clock)
> + info->phc_index = ptp_clock_index(tp->ptp_clock);
> + else
> + info->phc_index = -1;
> +
> + info->tx_types = (1 << HWTSTAMP_TX_OFF) |
> + (1 << HWTSTAMP_TX_ON);
> +
> + info->rx_filters = (1 << HWTSTAMP_FILTER_NONE) |
> + (1 << HWTSTAMP_FILTER_ALL);
> + return 0;
> +}
> +
> +static int tg3_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb)
> +{
> + struct tg3 *tp = container_of(ptp, struct tg3, ptp_info);
> + bool neg_adj = false;
> + u32 correction = 0;
> +
> + if (ppb < 0) {
> + neg_adj = true;
> + ppb = -ppb;
> + }
> +
> + /* Frequency adjustment is performed using hardware with a 24 bit
> + * accumulator and a programmable correction value. On each clk, the
> + * correction value gets added to the accumulator and when it
> + * overflows, the time counter is incremented/decremented.
> + *
> + * So conversion from ppb to correction value is
> + * ppb * (1 << 24) / 1000000000
> + */
> + correction = div_u64((u64)ppb * (1 << 24), 1000000000ULL) &
> + TG3_EAV_REF_CLK_CORRECT_MASK;
> +
> + tg3_full_lock(tp, 0);
> +
> + if (correction)
> + tw32(TG3_EAV_REF_CLK_CORRECT_CTL,
> + TG3_EAV_REF_CLK_CORRECT_EN |
> + (neg_adj ? TG3_EAV_REF_CLK_CORRECT_NEG : 0) | correction);
> + else
> + tw32(TG3_EAV_REF_CLK_CORRECT_CTL, 0);
> +
> + tg3_full_unlock(tp);
> +
> + return 0;
> +}
> +
> +static int tg3_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
> +{
> + struct tg3 *tp = container_of(ptp, struct tg3, ptp_info);
> + tp->ptp_adjust += delta;
This 'ptp_adjust' should be placed under the lock. This races with the
reader method.
> + return 0;
> +}
> +
> +static int tg3_ptp_gettime(struct ptp_clock_info *ptp, struct timespec *ts)
> +{
> + u64 ns;
> + u32 remainder;
> + struct tg3 *tp = container_of(ptp, struct tg3, ptp_info);
> +
> + tg3_full_lock(tp, 0);
> + ns = tg3_refclk_read(tp);
> + tg3_full_unlock(tp);
> + ns += tp->ptp_adjust;
> +
> + ts->tv_sec = div_u64_rem(ns, 1000000000, &remainder);
> + ts->tv_nsec = remainder;
> +
> + return 0;
> +}
> +
> +static int tg3_ptp_settime(struct ptp_clock_info *ptp,
> + const struct timespec *ts)
> +{
> + u64 ns;
> + struct tg3 *tp = container_of(ptp, struct tg3, ptp_info);
> +
> + ns = timespec_to_ns(ts);
> +
> + tg3_full_lock(tp, 0);
> + tg3_refclk_write(tp, ns);
> + tg3_full_unlock(tp);
> + tp->ptp_adjust = 0;
> +
> + return 0;
> +}
> +
> +static int tg3_ptp_enable(struct ptp_clock_info *ptp,
> + struct ptp_clock_request *rq, int on)
> +{
> + return -EOPNOTSUPP;
> +}
> +
> static const struct ptp_clock_info tg3_ptp_caps = {
> .owner = THIS_MODULE,
> .name = "",
> - .max_adj = 0,
> + .max_adj = 250000000,
> .n_alarm = 0,
> .n_ext_ts = 0,
> .n_per_out = 0,
> .pps = 0,
> + .adjfreq = tg3_ptp_adjfreq,
> + .adjtime = tg3_ptp_adjtime,
> + .gettime = tg3_ptp_gettime,
> + .settime = tg3_ptp_settime,
> + .enable = tg3_ptp_enable,
These are missing from patch #1.
> };
>
> static void tg3_ptp_init(struct tg3 *tp)
Thanks,
Richard
^ permalink raw reply
* Re: [RFT PATCH] 8139cp: properly support change of MTU values [v2]
From: David Miller @ 2012-12-03 18:52 UTC (permalink / raw)
To: jogreene; +Cc: netdev
In-Reply-To: <1354551573-23721-1-git-send-email-jogreene@redhat.com>
From: John Greene <jogreene@redhat.com>
Date: Mon, 3 Dec 2012 11:19:33 -0500
> The 8139cp driver has a change_mtu function that has not been
> enabled since the dawn of the git repository. However, the
> generic eth_change_mtu is not used in its place, so that
> invalid MTU values can be set on the interface.
>
> Original patch salvages the broken code for the single case of
> setting the MTU while the interface is down, which is safe
> and also includes the range check. Now enhanced to support up
> or down interface.
>
> v2: fix case where rxbufsz isn't changed in the up state case
>
> Original patch from
> http://lkml.indiana.edu/hypermail/linux/kernel/1202.2/00770.html
>
> Testing: has been test on virtual 8139cp setup without issue,
> have no access real hardware 8139cp, need testing help.
>
> Signed-off-by: "John Greene" <jogreene@redhat.com>
I've applied this to net-next, if it triggers any problems we have
some time to work it out before 3.8 is released.
^ permalink raw reply
* Re: [PATCH net-next] tuntap: attach queue 0 before registering netdevice
From: David Miller @ 2012-12-03 18:49 UTC (permalink / raw)
To: jasowang; +Cc: netdev, linux-kernel, jslaby
In-Reply-To: <1354504785-13036-1-git-send-email-jasowang@redhat.com>
From: Jason Wang <jasowang@redhat.com>
Date: Mon, 3 Dec 2012 11:19:45 +0800
> We attach queue 0 after registering netdevice currently. This leads to call
> netif_set_real_num_{tx|rx}_queues() after registering the netdevice. Since we
> allow tun/tap has a maximum of 1024 queues, this may lead a huge number of
> uevents to be injected to userspace since we create 2048 kobjects and then
> remove 2046. Solve this problem by attaching queue 0 and set the real number of
> queues before registering netdevice.
>
> Reported-by: Jiri Slaby <jslaby@suse.cz>
> Tested-by: Jiri Slaby <jslaby@suse.cz>
> Signed-off-by: Jason Wang <jasowang@redhat.com>
Applied, thanks Jason.
^ permalink raw reply
* Re: [PATCH net 1/1] bnx2x: recognize fan failure
From: David Miller @ 2012-12-03 18:47 UTC (permalink / raw)
To: yuvalmin; +Cc: netdev, ariele, yaniv.rosner, eilong
In-Reply-To: <1354528609-17486-1-git-send-email-yuvalmin@broadcom.com>
From: "Yuval Mintz" <yuvalmin@broadcom.com>
Date: Mon, 3 Dec 2012 11:56:49 +0200
> From: Yaniv Rosner <yaniv.rosner@broadcom.com>
>
> If fan failure is detected, MCP prevents PCI I/O registers from being
> mapped to the bar, causing a fatal error as driver is unaware.
>
> This patch recognizes such an event occurred and gracefully terminates
> the probe process.
>
> Signed-off-by: Yaniv Rosner <yaniv.rosner@broadcom.com>
> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com>
> Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
> ---
> Hi Dave,
>
> This patch prevents a fatal error on newer bnx2x boards.
>
> Please consider applying it to 'net'.
Too late, I've applied it to net-next. I'm not asking Linus to hold back
an already delayed released for such a rarely triggering issue such as this
one.
^ permalink raw reply
* Re: [PATCH 1/1] net: mvneta: Remove unneeded version.h header inclusion
From: David Miller @ 2012-12-03 18:46 UTC (permalink / raw)
To: sachin.kamat; +Cc: netdev, thomas.petazzoni, patches
In-Reply-To: <1354527928-27472-1-git-send-email-sachin.kamat@linaro.org>
From: Sachin Kamat <sachin.kamat@linaro.org>
Date: Mon, 3 Dec 2012 15:15:28 +0530
> linux/version.h inclusion is not necessary.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Acked-by: David S. Miller <davem@davemloft.net>
I hope the mvneta folks will pick this up and apply it where it
needs to be as the mvneta driver isn't in the net-next tree.
^ permalink raw reply
* Re: [RFC PATCH] tcp: introduce raw access to experimental options
From: Einar Lueck @ 2012-12-03 18:44 UTC (permalink / raw)
To: Yuchung Cheng; +Cc: netdev, frankbla, raspl, ubacher, samudrala, davem
In-Reply-To: <CAK6E8=cXin1rSvQNMPife692wkd5tswsR_7RVG6FNB0rqymHeg@mail.gmail.com>
On 11/28/2012 01:01 PM, Yuchung Cheng wrote:
> On Sat, Nov 17, 2012 at 12:54 AM, <elelueck@linux.vnet.ibm.com> wrote:
>> From: Einar Lueck <elelueck@linux.vnet.ibm.com>
>>
>> This patch adds means for raw acces to TCP expirimental options
>> 253 and 254. The intention of this is to enable user space
>> applications to implement communication behaviour that depends
>> on experimental options. For that, new (set|get)sockopts are
>
> Could you elaborate on the use case? I am having a hard time
> understanding that. If you need to use experimental options for your
> applications, why not just use another magic number according to
> draft-ietf-tcpm-experimental-options-02 (since you cite that too)?
We want to enable application programmers to exploit this without
having to change the kernel with all the corresponding implications.
Einar.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox