Commit 02dc96ef authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

Pull networking fixes from David Miller:

 1) Sanity check URB networking device parameters to avoid divide by
    zero, from Oliver Neukum.

 2) Disable global multicast filter in NCSI, otherwise LLDP and IPV6
    don't work properly. Longer term this needs a better fix tho. From
    Vijay Khemka.

 3) Small fixes to selftests (use ping when ping6 is not present, etc.)
    from David Ahern.

 4) Bring back rt_uses_gateway member of struct rtable, it's semantics
    were not well understood and trying to remove it broke things. From
    David Ahern.

 5) Move usbnet snaity checking, ignore endpoints with invalid
    wMaxPacketSize. From Bjørn Mork.

 6) Missing Kconfig deps for sja1105 driver, from Mao Wenan.

 7) Various small fixes to the mlx5 DR steering code, from Alaa Hleihel,
    Alex Vesker, and Yevgeny Kliteynik

 8) Missing CAP_NET_RAW checks in various places, from Ori Nimron.

 9) Fix crash when removing sch_cbs entry while offloading is enabled,
    from Vinicius Costa Gomes.

10) Signedness bug fixes, generally in looking at the result given by
    of_get_phy_mode() and friends. From Dan Crapenter.

11) Disable preemption around BPF_PROG_RUN() calls, from Eric Dumazet.

12) Don't create VRF ipv6 rules if ipv6 is disabled, from David Ahern.

13) Fix quantization code in tcp_bbr, from Kevin Yang.

* git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (127 commits)
  net: tap: clean up an indentation issue
  nfp: abm: fix memory leak in nfp_abm_u32_knode_replace
  tcp: better handle TCP_USER_TIMEOUT in SYN_SENT state
  sk_buff: drop all skb extensions on free and skb scrubbing
  tcp_bbr: fix quantization code to not raise cwnd if not probing bandwidth
  mlxsw: spectrum_flower: Fail in case user specifies multiple mirror actions
  Documentation: Clarify trap's description
  mlxsw: spectrum: Clear VLAN filters during port initialization
  net: ena: clean up indentation issue
  NFC: st95hf: clean up indentation issue
  net: phy: micrel: add Asym Pause workaround for KSZ9021
  net: socionext: ave: Avoid using netdev_err() before calling register_netdev()
  ptp: correctly disable flags on old ioctls
  lib: dimlib: fix help text typos
  net: dsa: microchip: Always set regmap stride to 1
  nfp: flower: fix memory leak in nfp_flower_spawn_vnic_reprs
  nfp: flower: prevent memory leak in nfp_flower_spawn_phy_reprs
  net/sched: Set default of CONFIG_NET_TC_SKB_EXT to N
  vrf: Do not attempt to create IPv6 mcast rule if IPv6 is disabled
  net: sched: sch_sfb: don't call qdisc_put() while holding tree lock
  ...
parents edf445ad faeacb6d
...@@ -670,7 +670,7 @@ static int stmmac_test_flowctrl(struct stmmac_priv *priv) ...@@ -670,7 +670,7 @@ static int stmmac_test_flowctrl(struct stmmac_priv *priv)
unsigned int pkt_count; unsigned int pkt_count;
int i, ret = 0; int i, ret = 0;
if (!phydev || !phydev->pause) if (!phydev || (!phydev->pause && !phydev->asym_pause))
return -EOPNOTSUPP; return -EOPNOTSUPP;
tpriv = kzalloc(sizeof(*tpriv), GFP_KERNEL); tpriv = kzalloc(sizeof(*tpriv), GFP_KERNEL);
...@@ -1233,12 +1233,9 @@ static int __stmmac_test_l3filt(struct stmmac_priv *priv, u32 dst, u32 src, ...@@ -1233,12 +1233,9 @@ static int __stmmac_test_l3filt(struct stmmac_priv *priv, u32 dst, u32 src,
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (!priv->dma_cap.l3l4fnum) if (!priv->dma_cap.l3l4fnum)
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (priv->rss.enable) { if (priv->rss.enable)
struct stmmac_rss rss = { .enable = false, }; stmmac_rss_configure(priv, priv->hw, NULL,
stmmac_rss_configure(priv, priv->hw, &rss,
priv->plat->rx_queues_to_use); priv->plat->rx_queues_to_use);
}
dissector = kzalloc(sizeof(*dissector), GFP_KERNEL); dissector = kzalloc(sizeof(*dissector), GFP_KERNEL);
if (!dissector) { if (!dissector) {
...@@ -1357,12 +1354,9 @@ static int __stmmac_test_l4filt(struct stmmac_priv *priv, u32 dst, u32 src, ...@@ -1357,12 +1354,9 @@ static int __stmmac_test_l4filt(struct stmmac_priv *priv, u32 dst, u32 src,
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (!priv->dma_cap.l3l4fnum) if (!priv->dma_cap.l3l4fnum)
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (priv->rss.enable) { if (priv->rss.enable)
struct stmmac_rss rss = { .enable = false, }; stmmac_rss_configure(priv, priv->hw, NULL,
stmmac_rss_configure(priv, priv->hw, &rss,
priv->plat->rx_queues_to_use); priv->plat->rx_queues_to_use);
}
dissector = kzalloc(sizeof(*dissector), GFP_KERNEL); dissector = kzalloc(sizeof(*dissector), GFP_KERNEL);
if (!dissector) { if (!dissector) {
......
...@@ -1762,7 +1762,7 @@ static int axienet_probe(struct platform_device *pdev) ...@@ -1762,7 +1762,7 @@ static int axienet_probe(struct platform_device *pdev)
} }
} else { } else {
lp->phy_mode = of_get_phy_mode(pdev->dev.of_node); lp->phy_mode = of_get_phy_mode(pdev->dev.of_node);
if (lp->phy_mode < 0) { if ((int)lp->phy_mode < 0) {
ret = -EINVAL; ret = -EINVAL;
goto free_netdev; goto free_netdev;
} }
......
...@@ -1235,6 +1235,7 @@ deliver: ...@@ -1235,6 +1235,7 @@ deliver:
macsec_rxsa_put(rx_sa); macsec_rxsa_put(rx_sa);
macsec_rxsc_put(rx_sc); macsec_rxsc_put(rx_sc);
skb_orphan(skb);
ret = gro_cells_receive(&macsec->gro_cells, skb); ret = gro_cells_receive(&macsec->gro_cells, skb);
if (ret == NET_RX_SUCCESS) if (ret == NET_RX_SUCCESS)
count_rx(dev, skb->len); count_rx(dev, skb->len);
......
...@@ -460,9 +460,9 @@ config RENESAS_PHY ...@@ -460,9 +460,9 @@ config RENESAS_PHY
Supports the Renesas PHYs uPD60620 and uPD60620A. Supports the Renesas PHYs uPD60620 and uPD60620A.
config ROCKCHIP_PHY config ROCKCHIP_PHY
tristate "Driver for Rockchip Ethernet PHYs" tristate "Driver for Rockchip Ethernet PHYs"
---help--- ---help---
Currently supports the integrated Ethernet PHY. Currently supports the integrated Ethernet PHY.
config SMSC_PHY config SMSC_PHY
tristate "SMSC PHYs" tristate "SMSC PHYs"
......
...@@ -763,6 +763,8 @@ static int ksz9031_get_features(struct phy_device *phydev) ...@@ -763,6 +763,8 @@ static int ksz9031_get_features(struct phy_device *phydev)
* Whenever the device's Asymmetric Pause capability is set to 1, * Whenever the device's Asymmetric Pause capability is set to 1,
* link-up may fail after a link-up to link-down transition. * link-up may fail after a link-up to link-down transition.
* *
* The Errata Sheet is for ksz9031, but ksz9021 has the same issue
*
* Workaround: * Workaround:
* Do not enable the Asymmetric Pause capability bit. * Do not enable the Asymmetric Pause capability bit.
*/ */
...@@ -1076,6 +1078,7 @@ static struct phy_driver ksphy_driver[] = { ...@@ -1076,6 +1078,7 @@ static struct phy_driver ksphy_driver[] = {
/* PHY_GBIT_FEATURES */ /* PHY_GBIT_FEATURES */
.driver_data = &ksz9021_type, .driver_data = &ksz9021_type,
.probe = kszphy_probe, .probe = kszphy_probe,
.get_features = ksz9031_get_features,
.config_init = ksz9021_config_init, .config_init = ksz9021_config_init,
.ack_interrupt = kszphy_ack_interrupt, .ack_interrupt = kszphy_ack_interrupt,
.config_intr = kszphy_config_intr, .config_intr = kszphy_config_intr,
......
...@@ -105,14 +105,17 @@ static void ns_giga_speed_fallback(struct phy_device *phydev, int mode) ...@@ -105,14 +105,17 @@ static void ns_giga_speed_fallback(struct phy_device *phydev, int mode)
static void ns_10_base_t_hdx_loopack(struct phy_device *phydev, int disable) static void ns_10_base_t_hdx_loopack(struct phy_device *phydev, int disable)
{ {
u16 lb_dis = BIT(1);
if (disable) if (disable)
ns_exp_write(phydev, 0x1c0, ns_exp_read(phydev, 0x1c0) | 1); ns_exp_write(phydev, 0x1c0,
ns_exp_read(phydev, 0x1c0) | lb_dis);
else else
ns_exp_write(phydev, 0x1c0, ns_exp_write(phydev, 0x1c0,
ns_exp_read(phydev, 0x1c0) & 0xfffe); ns_exp_read(phydev, 0x1c0) & ~lb_dis);
pr_debug("10BASE-T HDX loopback %s\n", pr_debug("10BASE-T HDX loopback %s\n",
(ns_exp_read(phydev, 0x1c0) & 0x0001) ? "off" : "on"); (ns_exp_read(phydev, 0x1c0) & lb_dis) ? "off" : "on");
} }
static int ns_config_init(struct phy_device *phydev) static int ns_config_init(struct phy_device *phydev)
......
...@@ -1415,6 +1415,8 @@ static void __ppp_xmit_process(struct ppp *ppp, struct sk_buff *skb) ...@@ -1415,6 +1415,8 @@ static void __ppp_xmit_process(struct ppp *ppp, struct sk_buff *skb)
netif_wake_queue(ppp->dev); netif_wake_queue(ppp->dev);
else else
netif_stop_queue(ppp->dev); netif_stop_queue(ppp->dev);
} else {
kfree_skb(skb);
} }
ppp_xmit_unlock(ppp); ppp_xmit_unlock(ppp);
} }
......
...@@ -1200,7 +1200,7 @@ err_kfree: ...@@ -1200,7 +1200,7 @@ err_kfree:
kfree_skb(skb); kfree_skb(skb);
err: err:
rcu_read_lock(); rcu_read_lock();
tap = rcu_dereference(q->tap); tap = rcu_dereference(q->tap);
if (tap && tap->count_tx_dropped) if (tap && tap->count_tx_dropped)
tap->count_tx_dropped(tap); tap->count_tx_dropped(tap);
rcu_read_unlock(); rcu_read_unlock();
......
...@@ -681,8 +681,12 @@ cdc_ncm_find_endpoints(struct usbnet *dev, struct usb_interface *intf) ...@@ -681,8 +681,12 @@ cdc_ncm_find_endpoints(struct usbnet *dev, struct usb_interface *intf)
u8 ep; u8 ep;
for (ep = 0; ep < intf->cur_altsetting->desc.bNumEndpoints; ep++) { for (ep = 0; ep < intf->cur_altsetting->desc.bNumEndpoints; ep++) {
e = intf->cur_altsetting->endpoint + ep; e = intf->cur_altsetting->endpoint + ep;
/* ignore endpoints which cannot transfer data */
if (!usb_endpoint_maxp(&e->desc))
continue;
switch (e->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) { switch (e->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
case USB_ENDPOINT_XFER_INT: case USB_ENDPOINT_XFER_INT:
if (usb_endpoint_dir_in(&e->desc)) { if (usb_endpoint_dir_in(&e->desc)) {
......
...@@ -100,6 +100,11 @@ int usbnet_get_endpoints(struct usbnet *dev, struct usb_interface *intf) ...@@ -100,6 +100,11 @@ int usbnet_get_endpoints(struct usbnet *dev, struct usb_interface *intf)
int intr = 0; int intr = 0;
e = alt->endpoint + ep; e = alt->endpoint + ep;
/* ignore endpoints which cannot transfer data */
if (!usb_endpoint_maxp(&e->desc))
continue;
switch (e->desc.bmAttributes) { switch (e->desc.bmAttributes) {
case USB_ENDPOINT_XFER_INT: case USB_ENDPOINT_XFER_INT:
if (!usb_endpoint_dir_in(&e->desc)) if (!usb_endpoint_dir_in(&e->desc))
...@@ -339,6 +344,8 @@ void usbnet_update_max_qlen(struct usbnet *dev) ...@@ -339,6 +344,8 @@ void usbnet_update_max_qlen(struct usbnet *dev)
{ {
enum usb_device_speed speed = dev->udev->speed; enum usb_device_speed speed = dev->udev->speed;
if (!dev->rx_urb_size || !dev->hard_mtu)
goto insanity;
switch (speed) { switch (speed) {
case USB_SPEED_HIGH: case USB_SPEED_HIGH:
dev->rx_qlen = MAX_QUEUE_MEMORY / dev->rx_urb_size; dev->rx_qlen = MAX_QUEUE_MEMORY / dev->rx_urb_size;
...@@ -355,6 +362,7 @@ void usbnet_update_max_qlen(struct usbnet *dev) ...@@ -355,6 +362,7 @@ void usbnet_update_max_qlen(struct usbnet *dev)
dev->tx_qlen = 5 * MAX_QUEUE_MEMORY / dev->hard_mtu; dev->tx_qlen = 5 * MAX_QUEUE_MEMORY / dev->hard_mtu;
break; break;
default: default:
insanity:
dev->rx_qlen = dev->tx_qlen = 4; dev->rx_qlen = dev->tx_qlen = 4;
} }
} }
......
...@@ -1154,7 +1154,8 @@ static int vrf_fib_rule(const struct net_device *dev, __u8 family, bool add_it) ...@@ -1154,7 +1154,8 @@ static int vrf_fib_rule(const struct net_device *dev, __u8 family, bool add_it)
struct sk_buff *skb; struct sk_buff *skb;
int err; int err;
if (family == AF_INET6 && !ipv6_mod_enabled()) if ((family == AF_INET6 || family == RTNL_FAMILY_IP6MR) &&
!ipv6_mod_enabled())
return 0; return 0;
skb = nlmsg_new(vrf_fib_rule_nl_size(), GFP_KERNEL); skb = nlmsg_new(vrf_fib_rule_nl_size(), GFP_KERNEL);
......
...@@ -34,7 +34,7 @@ config ATH_TRACEPOINTS ...@@ -34,7 +34,7 @@ config ATH_TRACEPOINTS
depends on ATH_DEBUG depends on ATH_DEBUG
depends on EVENT_TRACING depends on EVENT_TRACING
---help--- ---help---
This option enables tracepoints for atheros wireless drivers. This option enables tracepoints for atheros wireless drivers.
Currently, ath9k makes use of this facility. Currently, ath9k makes use of this facility.
config ATH_REG_DYNAMIC_USER_REG_HINTS config ATH_REG_DYNAMIC_USER_REG_HINTS
......
...@@ -5,5 +5,5 @@ config AR5523 ...@@ -5,5 +5,5 @@ config AR5523
select ATH_COMMON select ATH_COMMON
select FW_LOADER select FW_LOADER
---help--- ---help---
This module add support for AR5523 based USB dongles such as D-Link This module add support for AR5523 based USB dongles such as D-Link
DWL-G132, Netgear WPN111 and many more. DWL-G132, Netgear WPN111 and many more.
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
config ATH6KL config ATH6KL
tristate "Atheros mobile chipsets support" tristate "Atheros mobile chipsets support"
depends on CFG80211 depends on CFG80211
---help--- ---help---
This module adds core support for wireless adapters based on This module adds core support for wireless adapters based on
Atheros AR6003 and AR6004 chipsets. You still need separate Atheros AR6003 and AR6004 chipsets. You still need separate
bus drivers for USB and SDIO to be able to use real devices. bus drivers for USB and SDIO to be able to use real devices.
......
...@@ -148,7 +148,7 @@ config ATH9K_CHANNEL_CONTEXT ...@@ -148,7 +148,7 @@ config ATH9K_CHANNEL_CONTEXT
depends on ATH9K depends on ATH9K
default n default n
---help--- ---help---
This option enables channel context support in ath9k, which is needed This option enables channel context support in ath9k, which is needed
for multi-channel concurrency. Enable this if P2P PowerSave support for multi-channel concurrency. Enable this if P2P PowerSave support
is required. is required.
......
...@@ -41,9 +41,9 @@ config CARL9170_WPC ...@@ -41,9 +41,9 @@ config CARL9170_WPC
default y default y
config CARL9170_HWRNG config CARL9170_HWRNG
bool "Random number generator" bool "Random number generator"
depends on CARL9170 && (HW_RANDOM = y || HW_RANDOM = CARL9170) depends on CARL9170 && (HW_RANDOM = y || HW_RANDOM = CARL9170)
default n default n
help help
Provides a hardware random number generator to the kernel. Provides a hardware random number generator to the kernel.
......
...@@ -1012,11 +1012,11 @@ void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev) ...@@ -1012,11 +1012,11 @@ void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev)
skb_orphan(skb); skb_orphan(skb);
if (security && (wil->txrx_ops.rx_crypto_check(wil, skb) != 0)) { if (security && (wil->txrx_ops.rx_crypto_check(wil, skb) != 0)) {
wil_dbg_txrx(wil, "Rx drop %d bytes\n", skb->len);
dev_kfree_skb(skb); dev_kfree_skb(skb);
ndev->stats.rx_dropped++; ndev->stats.rx_dropped++;
stats->rx_replay++; stats->rx_replay++;
stats->rx_dropped++; stats->rx_dropped++;
wil_dbg_txrx(wil, "Rx drop %d bytes\n", skb->len);
return; return;
} }
......
...@@ -20,22 +20,22 @@ config ATMEL ...@@ -20,22 +20,22 @@ config ATMEL
select FW_LOADER select FW_LOADER
select CRC32 select CRC32
---help--- ---help---
A driver 802.11b wireless cards based on the Atmel fast-vnet A driver 802.11b wireless cards based on the Atmel fast-vnet
chips. This driver supports standard Linux wireless extensions. chips. This driver supports standard Linux wireless extensions.
Many cards based on this chipset do not have flash memory Many cards based on this chipset do not have flash memory
and need their firmware loaded at start-up. If yours is and need their firmware loaded at start-up. If yours is
one of these, you will need to provide a firmware image one of these, you will need to provide a firmware image
to be loaded into the card by the driver. The Atmel to be loaded into the card by the driver. The Atmel
firmware package can be downloaded from firmware package can be downloaded from
<http://www.thekelleys.org.uk/atmel> <http://www.thekelleys.org.uk/atmel>
config PCI_ATMEL config PCI_ATMEL
tristate "Atmel at76c506 PCI cards" tristate "Atmel at76c506 PCI cards"
depends on ATMEL && PCI depends on ATMEL && PCI
---help--- ---help---
Enable support for PCI and mini-PCI cards containing the Enable support for PCI and mini-PCI cards containing the
Atmel at76c506 chip. Atmel at76c506 chip.
config PCMCIA_ATMEL config PCMCIA_ATMEL
tristate "Atmel at76c502/at76c504 PCMCIA cards" tristate "Atmel at76c502/at76c504 PCMCIA cards"
...@@ -48,11 +48,11 @@ config PCMCIA_ATMEL ...@@ -48,11 +48,11 @@ config PCMCIA_ATMEL
Atmel at76c502 and at76c504 chips. Atmel at76c502 and at76c504 chips.
config AT76C50X_USB config AT76C50X_USB
tristate "Atmel at76c503/at76c505/at76c505a USB cards" tristate "Atmel at76c503/at76c505/at76c505a USB cards"
depends on MAC80211 && USB depends on MAC80211 && USB
select FW_LOADER select FW_LOADER
---help--- ---help---
Enable support for USB Wireless devices using Atmel at76c503, Enable support for USB Wireless devices using Atmel at76c503,
at76c505 or at76c505a chips. at76c505 or at76c505a chips.
endif # WLAN_VENDOR_ATMEL endif # WLAN_VENDOR_ATMEL
...@@ -13,37 +13,37 @@ config IPW2100 ...@@ -13,37 +13,37 @@ config IPW2100
select LIB80211 select LIB80211
select LIBIPW select LIBIPW
---help--- ---help---
A driver for the Intel PRO/Wireless 2100 Network A driver for the Intel PRO/Wireless 2100 Network
Connection 802.11b wireless network adapter. Connection 802.11b wireless network adapter.
See <file:Documentation/networking/device_drivers/intel/ipw2100.txt> See <file:Documentation/networking/device_drivers/intel/ipw2100.txt>
for information on the capabilities currently enabled in this driver for information on the capabilities currently enabled in this driver
and for tips for debugging issues and problems. and for tips for debugging issues and problems.
In order to use this driver, you will need a firmware image for it. In order to use this driver, you will need a firmware image for it.
You can obtain the firmware from You can obtain the firmware from
<http://ipw2100.sf.net/>. Once you have the firmware image, you <http://ipw2100.sf.net/>. Once you have the firmware image, you
will need to place it in /lib/firmware. will need to place it in /lib/firmware.
You will also very likely need the Wireless Tools in order to You will also very likely need the Wireless Tools in order to
configure your card: configure your card:
<http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>. <http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>.
It is recommended that you compile this driver as a module (M)
rather than built-in (Y). This driver requires firmware at device
initialization time, and when built-in this typically happens
before the filesystem is accessible (hence firmware will be
unavailable and initialization will fail). If you do choose to build
this driver into your kernel image, you can avoid this problem by
including the firmware and a firmware loader in an initramfs.
It is recommended that you compile this driver as a module (M)
rather than built-in (Y). This driver requires firmware at device
initialization time, and when built-in this typically happens
before the filesystem is accessible (hence firmware will be
unavailable and initialization will fail). If you do choose to build
this driver into your kernel image, you can avoid this problem by
including the firmware and a firmware loader in an initramfs.
config IPW2100_MONITOR config IPW2100_MONITOR
bool "Enable promiscuous mode" bool "Enable promiscuous mode"
depends on IPW2100 depends on IPW2100
---help--- ---help---
Enables promiscuous/monitor mode support for the ipw2100 driver. Enables promiscuous/monitor mode support for the ipw2100 driver.
With this feature compiled into the driver, you can switch to With this feature compiled into the driver, you can switch to
promiscuous mode via the Wireless Tool's Monitor mode. While in this promiscuous mode via the Wireless Tool's Monitor mode. While in this
mode, no packets can be sent. mode, no packets can be sent.
...@@ -51,17 +51,17 @@ config IPW2100_DEBUG ...@@ -51,17 +51,17 @@ config IPW2100_DEBUG
bool "Enable full debugging output in IPW2100 module." bool "Enable full debugging output in IPW2100 module."
depends on IPW2100 depends on IPW2100
---help--- ---help---
This option will enable debug tracing output for the IPW2100. This option will enable debug tracing output for the IPW2100.
This will result in the kernel module being ~60k larger. You can This will result in the kernel module being ~60k larger. You can
control which debug output is sent to the kernel log by setting the control which debug output is sent to the kernel log by setting the
value in value in
/sys/bus/pci/drivers/ipw2100/debug_level /sys/bus/pci/drivers/ipw2100/debug_level
This entry will only exist if this option is enabled. This entry will only exist if this option is enabled.
If you are not trying to debug or develop the IPW2100 driver, you If you are not trying to debug or develop the IPW2100 driver, you
most likely want to say N here. most likely want to say N here.
config IPW2200 config IPW2200
...@@ -75,37 +75,37 @@ config IPW2200 ...@@ -75,37 +75,37 @@ config IPW2200
select LIB80211 select LIB80211
select LIBIPW select LIBIPW
---help--- ---help---
A driver for the Intel PRO/Wireless 2200BG and 2915ABG Network A driver for the Intel PRO/Wireless 2200BG and 2915ABG Network
Connection adapters. Connection adapters.
See <file:Documentation/networking/device_drivers/intel/ipw2200.txt> See <file:Documentation/networking/device_drivers/intel/ipw2200.txt>
for information on the capabilities currently enabled in this for information on the capabilities currently enabled in this
driver and for tips for debugging issues and problems. driver and for tips for debugging issues and problems.
In order to use this driver, you will need a firmware image for it. In order to use this driver, you will need a firmware image for it.
You can obtain the firmware from You can obtain the firmware from
<http://ipw2200.sf.net/>. See the above referenced README.ipw2200 <http://ipw2200.sf.net/>. See the above referenced README.ipw2200
for information on where to install the firmware images. for information on where to install the firmware images.
You will also very likely need the Wireless Tools in order to You will also very likely need the Wireless Tools in order to
configure your card: configure your card:
<http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>. <http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>.
It is recommended that you compile this driver as a module (M) It is recommended that you compile this driver as a module (M)
rather than built-in (Y). This driver requires firmware at device rather than built-in (Y). This driver requires firmware at device
initialization time, and when built-in this typically happens initialization time, and when built-in this typically happens
before the filesystem is accessible (hence firmware will be before the filesystem is accessible (hence firmware will be
unavailable and initialization will fail). If you do choose to build unavailable and initialization will fail). If you do choose to build
this driver into your kernel image, you can avoid this problem by this driver into your kernel image, you can avoid this problem by
including the firmware and a firmware loader in an initramfs. including the firmware and a firmware loader in an initramfs.
config IPW2200_MONITOR config IPW2200_MONITOR
bool "Enable promiscuous mode" bool "Enable promiscuous mode"
depends on IPW2200 depends on IPW2200
---help--- ---help---
Enables promiscuous/monitor mode support for the ipw2200 driver. Enables promiscuous/monitor mode support for the ipw2200 driver.
With this feature compiled into the driver, you can switch to With this feature compiled into the driver, you can switch to
promiscuous mode via the Wireless Tool's Monitor mode. While in this promiscuous mode via the Wireless Tool's Monitor mode. While in this
mode, no packets can be sent. mode, no packets can be sent.
...@@ -118,28 +118,28 @@ config IPW2200_PROMISCUOUS ...@@ -118,28 +118,28 @@ config IPW2200_PROMISCUOUS
depends on IPW2200_MONITOR depends on IPW2200_MONITOR
select IPW2200_RADIOTAP select IPW2200_RADIOTAP
---help--- ---help---
Enables the creation of a second interface prefixed 'rtap'. Enables the creation of a second interface prefixed 'rtap'.
This second interface will provide every received in radiotap This second interface will provide every received in radiotap
format. format.
This is useful for performing wireless network analysis while This is useful for performing wireless network analysis while
maintaining an active association. maintaining an active association.