Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: net/mac80211/rc80211_pid_algo.c
This commit is contained in:
commit
255333c1db
34 changed files with 115 additions and 131 deletions
32
MAINTAINERS
32
MAINTAINERS
|
@ -2039,43 +2039,19 @@ M: kernel@wantstofly.org
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
INTEL PRO/100 ETHERNET SUPPORT
|
INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe)
|
||||||
P: Auke Kok
|
P: Auke Kok
|
||||||
M: auke-jan.h.kok@intel.com
|
M: auke-jan.h.kok@intel.com
|
||||||
P: Jesse Brandeburg
|
P: Jesse Brandeburg
|
||||||
M: jesse.brandeburg@intel.com
|
M: jesse.brandeburg@intel.com
|
||||||
P: Jeff Kirsher
|
P: Jeff Kirsher
|
||||||
M: jeffrey.t.kirsher@intel.com
|
M: jeffrey.t.kirsher@intel.com
|
||||||
|
P: Bruce Allan
|
||||||
|
M: bruce.w.allan@intel.com
|
||||||
P: John Ronciak
|
P: John Ronciak
|
||||||
M: john.ronciak@intel.com
|
M: john.ronciak@intel.com
|
||||||
L: e1000-devel@lists.sourceforge.net
|
L: e1000-devel@lists.sourceforge.net
|
||||||
W: http://sourceforge.net/projects/e1000/
|
W: http://e1000.sourceforge.net/
|
||||||
S: Supported
|
|
||||||
|
|
||||||
INTEL PRO/1000 GIGABIT ETHERNET SUPPORT
|
|
||||||
P: Auke Kok
|
|
||||||
M: auke-jan.h.kok@intel.com
|
|
||||||
P: Jesse Brandeburg
|
|
||||||
M: jesse.brandeburg@intel.com
|
|
||||||
P: Jeff Kirsher
|
|
||||||
M: jeffrey.t.kirsher@intel.com
|
|
||||||
P: John Ronciak
|
|
||||||
M: john.ronciak@intel.com
|
|
||||||
L: e1000-devel@lists.sourceforge.net
|
|
||||||
W: http://sourceforge.net/projects/e1000/
|
|
||||||
S: Supported
|
|
||||||
|
|
||||||
INTEL PRO/10GbE SUPPORT
|
|
||||||
P: Ayyappan Veeraiyan
|
|
||||||
M: ayyappan.veeraiyan@intel.com
|
|
||||||
P: Auke Kok
|
|
||||||
M: auke-jan.h.kok@intel.com
|
|
||||||
P: Jesse Brandeburg
|
|
||||||
M: jesse.brandeburg@intel.com
|
|
||||||
P: John Ronciak
|
|
||||||
M: john.ronciak@intel.com
|
|
||||||
L: e1000-devel@lists.sourceforge.net
|
|
||||||
W: http://sourceforge.net/projects/e1000/
|
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
|
INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
|
||||||
|
|
|
@ -2519,7 +2519,7 @@ config CHELSIO_T3
|
||||||
|
|
||||||
config EHEA
|
config EHEA
|
||||||
tristate "eHEA Ethernet support"
|
tristate "eHEA Ethernet support"
|
||||||
depends on IBMEBUS && INET
|
depends on IBMEBUS && INET && SPARSEMEM
|
||||||
select INET_LRO
|
select INET_LRO
|
||||||
---help---
|
---help---
|
||||||
This driver supports the IBM pSeries eHEA ethernet adapter.
|
This driver supports the IBM pSeries eHEA ethernet adapter.
|
||||||
|
|
|
@ -336,8 +336,6 @@ struct lance_addr {
|
||||||
|
|
||||||
/***************************** Prototypes *****************************/
|
/***************************** Prototypes *****************************/
|
||||||
|
|
||||||
static int addr_accessible( volatile void *regp, int wordflag, int
|
|
||||||
writeflag );
|
|
||||||
static unsigned long lance_probe1( struct net_device *dev, struct lance_addr
|
static unsigned long lance_probe1( struct net_device *dev, struct lance_addr
|
||||||
*init_rec );
|
*init_rec );
|
||||||
static int lance_open( struct net_device *dev );
|
static int lance_open( struct net_device *dev );
|
||||||
|
@ -406,7 +404,8 @@ struct net_device * __init atarilance_probe(int unit)
|
||||||
|
|
||||||
/* Derived from hwreg_present() in atari/config.c: */
|
/* Derived from hwreg_present() in atari/config.c: */
|
||||||
|
|
||||||
static int __init addr_accessible( volatile void *regp, int wordflag, int writeflag )
|
static noinline int __init addr_accessible(volatile void *regp, int wordflag,
|
||||||
|
int writeflag)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
long flags;
|
long flags;
|
||||||
|
|
|
@ -2782,16 +2782,13 @@ static void __devexit e100_remove(struct pci_dev *pdev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
|
||||||
static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
|
static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||||
{
|
{
|
||||||
struct net_device *netdev = pci_get_drvdata(pdev);
|
struct net_device *netdev = pci_get_drvdata(pdev);
|
||||||
struct nic *nic = netdev_priv(netdev);
|
struct nic *nic = netdev_priv(netdev);
|
||||||
|
|
||||||
if (netif_running(netdev))
|
if (netif_running(netdev))
|
||||||
napi_disable(&nic->napi);
|
e100_down(nic);
|
||||||
del_timer_sync(&nic->watchdog);
|
|
||||||
netif_carrier_off(nic->netdev);
|
|
||||||
netif_device_detach(netdev);
|
netif_device_detach(netdev);
|
||||||
|
|
||||||
pci_save_state(pdev);
|
pci_save_state(pdev);
|
||||||
|
@ -2804,14 +2801,13 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||||
pci_enable_wake(pdev, PCI_D3cold, 0);
|
pci_enable_wake(pdev, PCI_D3cold, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
free_irq(pdev->irq, netdev);
|
|
||||||
|
|
||||||
pci_disable_device(pdev);
|
pci_disable_device(pdev);
|
||||||
pci_set_power_state(pdev, PCI_D3hot);
|
pci_set_power_state(pdev, PCI_D3hot);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM
|
||||||
static int e100_resume(struct pci_dev *pdev)
|
static int e100_resume(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
struct net_device *netdev = pci_get_drvdata(pdev);
|
struct net_device *netdev = pci_get_drvdata(pdev);
|
||||||
|
@ -2832,26 +2828,7 @@ static int e100_resume(struct pci_dev *pdev)
|
||||||
|
|
||||||
static void e100_shutdown(struct pci_dev *pdev)
|
static void e100_shutdown(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
struct net_device *netdev = pci_get_drvdata(pdev);
|
e100_suspend(pdev, PMSG_SUSPEND);
|
||||||
struct nic *nic = netdev_priv(netdev);
|
|
||||||
|
|
||||||
if (netif_running(netdev))
|
|
||||||
napi_disable(&nic->napi);
|
|
||||||
del_timer_sync(&nic->watchdog);
|
|
||||||
netif_carrier_off(nic->netdev);
|
|
||||||
|
|
||||||
if ((nic->flags & wol_magic) | e100_asf(nic)) {
|
|
||||||
pci_enable_wake(pdev, PCI_D3hot, 1);
|
|
||||||
pci_enable_wake(pdev, PCI_D3cold, 1);
|
|
||||||
} else {
|
|
||||||
pci_enable_wake(pdev, PCI_D3hot, 0);
|
|
||||||
pci_enable_wake(pdev, PCI_D3cold, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
free_irq(pdev->irq, netdev);
|
|
||||||
|
|
||||||
pci_disable_device(pdev);
|
|
||||||
pci_set_power_state(pdev, PCI_D3hot);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------ PCI Error Recovery infrastructure -------------- */
|
/* ------------------ PCI Error Recovery infrastructure -------------- */
|
||||||
|
|
|
@ -2133,7 +2133,7 @@ static void ixgbe_watchdog(unsigned long data)
|
||||||
(link_speed == IXGBE_LINK_SPEED_10GB_FULL ?
|
(link_speed == IXGBE_LINK_SPEED_10GB_FULL ?
|
||||||
"10 Gbps" :
|
"10 Gbps" :
|
||||||
(link_speed == IXGBE_LINK_SPEED_1GB_FULL ?
|
(link_speed == IXGBE_LINK_SPEED_1GB_FULL ?
|
||||||
"1 Gpbs" : "unknown speed")),
|
"1 Gbps" : "unknown speed")),
|
||||||
((FLOW_RX && FLOW_TX) ? "RX/TX" :
|
((FLOW_RX && FLOW_TX) ? "RX/TX" :
|
||||||
(FLOW_RX ? "RX" :
|
(FLOW_RX ? "RX" :
|
||||||
(FLOW_TX ? "TX" : "None"))));
|
(FLOW_TX ? "TX" : "None"))));
|
||||||
|
|
|
@ -2104,6 +2104,7 @@ MODULE_LICENSE("GPL");
|
||||||
MODULE_AUTHOR( "Rabeeh Khoury, Assaf Hoffman, Matthew Dharm, Manish Lachwani"
|
MODULE_AUTHOR( "Rabeeh Khoury, Assaf Hoffman, Matthew Dharm, Manish Lachwani"
|
||||||
" and Dale Farnsworth");
|
" and Dale Farnsworth");
|
||||||
MODULE_DESCRIPTION("Ethernet driver for Marvell MV643XX");
|
MODULE_DESCRIPTION("Ethernet driver for Marvell MV643XX");
|
||||||
|
MODULE_ALIAS("platform:mv643xx_eth");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The second part is the low level driver of the gigE ethernet ports.
|
* The second part is the low level driver of the gigE ethernet ports.
|
||||||
|
|
|
@ -1268,7 +1268,7 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (interrupts && ei_debug)
|
if (interrupts && ei_debug > 3)
|
||||||
{
|
{
|
||||||
handled = 1;
|
handled = 1;
|
||||||
if (nr_serviced >= MAX_SERVICE)
|
if (nr_serviced >= MAX_SERVICE)
|
||||||
|
|
|
@ -67,6 +67,7 @@ config REALTEK_PHY
|
||||||
|
|
||||||
config FIXED_PHY
|
config FIXED_PHY
|
||||||
bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs"
|
bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs"
|
||||||
|
depends on PHYLIB=y
|
||||||
---help---
|
---help---
|
||||||
Adds the platform "fixed" MDIO Bus to cover the boards that use
|
Adds the platform "fixed" MDIO Bus to cover the boards that use
|
||||||
PHYs that are not connected to the real MDIO bus.
|
PHYs that are not connected to the real MDIO bus.
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
#define MII_DM9161_SCR 0x10
|
#define MII_DM9161_SCR 0x10
|
||||||
#define MII_DM9161_SCR_INIT 0x0610
|
#define MII_DM9161_SCR_INIT 0x0610
|
||||||
|
#define MII_DM9161_SCR_RMII 0x0100
|
||||||
|
|
||||||
/* DM9161 Interrupt Register */
|
/* DM9161 Interrupt Register */
|
||||||
#define MII_DM9161_INTR 0x15
|
#define MII_DM9161_INTR 0x15
|
||||||
|
@ -103,7 +104,7 @@ static int dm9161_config_aneg(struct phy_device *phydev)
|
||||||
|
|
||||||
static int dm9161_config_init(struct phy_device *phydev)
|
static int dm9161_config_init(struct phy_device *phydev)
|
||||||
{
|
{
|
||||||
int err;
|
int err, temp;
|
||||||
|
|
||||||
/* Isolate the PHY */
|
/* Isolate the PHY */
|
||||||
err = phy_write(phydev, MII_BMCR, BMCR_ISOLATE);
|
err = phy_write(phydev, MII_BMCR, BMCR_ISOLATE);
|
||||||
|
@ -111,9 +112,19 @@ static int dm9161_config_init(struct phy_device *phydev)
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
/* Do not bypass the scrambler/descrambler */
|
switch (phydev->interface) {
|
||||||
err = phy_write(phydev, MII_DM9161_SCR, MII_DM9161_SCR_INIT);
|
case PHY_INTERFACE_MODE_MII:
|
||||||
|
temp = MII_DM9161_SCR_INIT;
|
||||||
|
break;
|
||||||
|
case PHY_INTERFACE_MODE_RMII:
|
||||||
|
temp = MII_DM9161_SCR_INIT | MII_DM9161_SCR_RMII;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Do not bypass the scrambler/descrambler */
|
||||||
|
err = phy_write(phydev, MII_DM9161_SCR, temp);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
|
|
@ -455,6 +455,7 @@ static void pppol2tp_recv_dequeue(struct pppol2tp_session *session)
|
||||||
skb_queue_len(&session->reorder_q));
|
skb_queue_len(&session->reorder_q));
|
||||||
__skb_unlink(skb, &session->reorder_q);
|
__skb_unlink(skb, &session->reorder_q);
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
|
sock_put(session->sock);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1110,6 +1111,8 @@ static void pppol2tp_tunnel_closeall(struct pppol2tp_tunnel *tunnel)
|
||||||
for (hash = 0; hash < PPPOL2TP_HASH_SIZE; hash++) {
|
for (hash = 0; hash < PPPOL2TP_HASH_SIZE; hash++) {
|
||||||
again:
|
again:
|
||||||
hlist_for_each_safe(walk, tmp, &tunnel->session_hlist[hash]) {
|
hlist_for_each_safe(walk, tmp, &tunnel->session_hlist[hash]) {
|
||||||
|
struct sk_buff *skb;
|
||||||
|
|
||||||
session = hlist_entry(walk, struct pppol2tp_session, hlist);
|
session = hlist_entry(walk, struct pppol2tp_session, hlist);
|
||||||
|
|
||||||
sk = session->sock;
|
sk = session->sock;
|
||||||
|
@ -1138,7 +1141,10 @@ static void pppol2tp_tunnel_closeall(struct pppol2tp_tunnel *tunnel)
|
||||||
/* Purge any queued data */
|
/* Purge any queued data */
|
||||||
skb_queue_purge(&sk->sk_receive_queue);
|
skb_queue_purge(&sk->sk_receive_queue);
|
||||||
skb_queue_purge(&sk->sk_write_queue);
|
skb_queue_purge(&sk->sk_write_queue);
|
||||||
skb_queue_purge(&session->reorder_q);
|
while ((skb = skb_dequeue(&session->reorder_q))) {
|
||||||
|
kfree_skb(skb);
|
||||||
|
sock_put(sk);
|
||||||
|
}
|
||||||
|
|
||||||
release_sock(sk);
|
release_sock(sk);
|
||||||
sock_put(sk);
|
sock_put(sk);
|
||||||
|
|
|
@ -1088,7 +1088,7 @@ static int s2io_print_pci_mode(struct s2io_nic *nic)
|
||||||
* '-1' on failure
|
* '-1' on failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int init_tti(struct s2io_nic *nic, int link)
|
static int init_tti(struct s2io_nic *nic, int link)
|
||||||
{
|
{
|
||||||
struct XENA_dev_config __iomem *bar0 = nic->bar0;
|
struct XENA_dev_config __iomem *bar0 = nic->bar0;
|
||||||
register u64 val64 = 0;
|
register u64 val64 = 0;
|
||||||
|
|
|
@ -910,7 +910,8 @@ static void de_set_media (struct de_private *de)
|
||||||
unsigned media = de->media_type;
|
unsigned media = de->media_type;
|
||||||
u32 macmode = dr32(MacMode);
|
u32 macmode = dr32(MacMode);
|
||||||
|
|
||||||
BUG_ON(de_is_running(de));
|
if (de_is_running(de))
|
||||||
|
printk(KERN_WARNING "%s: chip is running while changing media!\n", de->dev->name);
|
||||||
|
|
||||||
if (de->de21040)
|
if (de->de21040)
|
||||||
dw32(CSR11, FULL_DUPLEX_MAGIC);
|
dw32(CSR11, FULL_DUPLEX_MAGIC);
|
||||||
|
|
|
@ -663,7 +663,11 @@ static int tun_chr_ioctl(struct inode *inode, struct file *file,
|
||||||
case SIOCSIFHWADDR:
|
case SIOCSIFHWADDR:
|
||||||
{
|
{
|
||||||
/* try to set the actual net device's hw address */
|
/* try to set the actual net device's hw address */
|
||||||
int ret = dev_set_mac_address(tun->dev, &ifr.ifr_hwaddr);
|
int ret;
|
||||||
|
|
||||||
|
rtnl_lock();
|
||||||
|
ret = dev_set_mac_address(tun->dev, &ifr.ifr_hwaddr);
|
||||||
|
rtnl_unlock();
|
||||||
|
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
/** Set the character device's hardware address. This is used when
|
/** Set the character device's hardware address. This is used when
|
||||||
|
|
|
@ -3870,7 +3870,7 @@ static void b43legacy_print_driverinfo(void)
|
||||||
#ifdef CONFIG_B43LEGACY_DMA
|
#ifdef CONFIG_B43LEGACY_DMA
|
||||||
feat_dma = "D";
|
feat_dma = "D";
|
||||||
#endif
|
#endif
|
||||||
printk(KERN_INFO "Broadcom 43xx driver loaded "
|
printk(KERN_INFO "Broadcom 43xx-legacy driver loaded "
|
||||||
"[ Features: %s%s%s%s%s, Firmware-ID: "
|
"[ Features: %s%s%s%s%s, Firmware-ID: "
|
||||||
B43legacy_SUPPORTED_FIRMWARE_ID " ]\n",
|
B43legacy_SUPPORTED_FIRMWARE_ID " ]\n",
|
||||||
feat_pci, feat_leds, feat_rfkill, feat_pio, feat_dma);
|
feat_pci, feat_leds, feat_rfkill, feat_pio, feat_dma);
|
||||||
|
|
|
@ -562,9 +562,7 @@ int lbs_process_rx_command(struct lbs_private *priv)
|
||||||
}
|
}
|
||||||
|
|
||||||
resp = (void *)priv->upld_buf;
|
resp = (void *)priv->upld_buf;
|
||||||
|
curcmd = le16_to_cpu(priv->cur_cmd->cmdbuf->command);
|
||||||
curcmd = le16_to_cpu(resp->command);
|
|
||||||
|
|
||||||
respcmd = le16_to_cpu(resp->command);
|
respcmd = le16_to_cpu(resp->command);
|
||||||
result = le16_to_cpu(resp->result);
|
result = le16_to_cpu(resp->result);
|
||||||
|
|
||||||
|
@ -572,9 +570,9 @@ int lbs_process_rx_command(struct lbs_private *priv)
|
||||||
respcmd, le16_to_cpu(resp->seqnum), priv->upld_len, jiffies);
|
respcmd, le16_to_cpu(resp->seqnum), priv->upld_len, jiffies);
|
||||||
lbs_deb_hex(LBS_DEB_CMD, "CMD_RESP", (void *) resp, priv->upld_len);
|
lbs_deb_hex(LBS_DEB_CMD, "CMD_RESP", (void *) resp, priv->upld_len);
|
||||||
|
|
||||||
if (resp->seqnum != resp->seqnum) {
|
if (resp->seqnum != priv->cur_cmd->cmdbuf->seqnum) {
|
||||||
lbs_pr_info("Received CMD_RESP with invalid sequence %d (expected %d)\n",
|
lbs_pr_info("Received CMD_RESP with invalid sequence %d (expected %d)\n",
|
||||||
le16_to_cpu(resp->seqnum), le16_to_cpu(resp->seqnum));
|
le16_to_cpu(resp->seqnum), le16_to_cpu(priv->cur_cmd->cmdbuf->seqnum));
|
||||||
spin_unlock_irqrestore(&priv->driver_lock, flags);
|
spin_unlock_irqrestore(&priv->driver_lock, flags);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto done;
|
goto done;
|
||||||
|
|
|
@ -206,18 +206,23 @@ int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
|
||||||
struct p54_common *priv = dev->priv;
|
struct p54_common *priv = dev->priv;
|
||||||
struct eeprom_pda_wrap *wrap = NULL;
|
struct eeprom_pda_wrap *wrap = NULL;
|
||||||
struct pda_entry *entry;
|
struct pda_entry *entry;
|
||||||
int i = 0;
|
|
||||||
unsigned int data_len, entry_len;
|
unsigned int data_len, entry_len;
|
||||||
void *tmp;
|
void *tmp;
|
||||||
int err;
|
int err;
|
||||||
|
u8 *end = (u8 *)eeprom + len;
|
||||||
|
|
||||||
wrap = (struct eeprom_pda_wrap *) eeprom;
|
wrap = (struct eeprom_pda_wrap *) eeprom;
|
||||||
entry = (void *)wrap->data + wrap->len;
|
entry = (void *)wrap->data + le16_to_cpu(wrap->len);
|
||||||
i += 2;
|
|
||||||
i += le16_to_cpu(entry->len)*2;
|
/* verify that at least the entry length/code fits */
|
||||||
while (i < len) {
|
while ((u8 *)entry <= end - sizeof(*entry)) {
|
||||||
entry_len = le16_to_cpu(entry->len);
|
entry_len = le16_to_cpu(entry->len);
|
||||||
data_len = ((entry_len - 1) << 1);
|
data_len = ((entry_len - 1) << 1);
|
||||||
|
|
||||||
|
/* abort if entry exceeds whole structure */
|
||||||
|
if ((u8 *)entry + sizeof(*entry) + data_len > end)
|
||||||
|
break;
|
||||||
|
|
||||||
switch (le16_to_cpu(entry->code)) {
|
switch (le16_to_cpu(entry->code)) {
|
||||||
case PDR_MAC_ADDRESS:
|
case PDR_MAC_ADDRESS:
|
||||||
SET_IEEE80211_PERM_ADDR(dev, entry->data);
|
SET_IEEE80211_PERM_ADDR(dev, entry->data);
|
||||||
|
@ -289,7 +294,8 @@ int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
|
||||||
priv->version = *(u8 *)(entry->data + 1);
|
priv->version = *(u8 *)(entry->data + 1);
|
||||||
break;
|
break;
|
||||||
case PDR_END:
|
case PDR_END:
|
||||||
i = len;
|
/* make it overrun */
|
||||||
|
entry_len = len;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printk(KERN_INFO "p54: unknown eeprom code : 0x%x\n",
|
printk(KERN_INFO "p54: unknown eeprom code : 0x%x\n",
|
||||||
|
@ -298,8 +304,6 @@ int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
|
||||||
}
|
}
|
||||||
|
|
||||||
entry = (void *)entry + (entry_len + 1)*2;
|
entry = (void *)entry + (entry_len + 1)*2;
|
||||||
i += 2;
|
|
||||||
i += entry_len*2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!priv->iq_autocal || !priv->output_limit || !priv->curve_data) {
|
if (!priv->iq_autocal || !priv->output_limit || !priv->curve_data) {
|
||||||
|
|
|
@ -53,10 +53,10 @@ struct pda_entry {
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct eeprom_pda_wrap {
|
struct eeprom_pda_wrap {
|
||||||
u32 magic;
|
__le32 magic;
|
||||||
u16 pad;
|
__le16 pad;
|
||||||
u16 len;
|
__le16 len;
|
||||||
u32 arm_opcode;
|
__le32 arm_opcode;
|
||||||
u8 data[0];
|
u8 data[0];
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
|
|
|
@ -260,7 +260,7 @@ struct NDIS_802_11_KEY {
|
||||||
__le32 KeyLength;
|
__le32 KeyLength;
|
||||||
u8 Bssid[6];
|
u8 Bssid[6];
|
||||||
u8 Padding[6];
|
u8 Padding[6];
|
||||||
__le64 KeyRSC;
|
u8 KeyRSC[8];
|
||||||
u8 KeyMaterial[32];
|
u8 KeyMaterial[32];
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
@ -1508,7 +1508,7 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,
|
||||||
struct usbnet *usbdev = dev->priv;
|
struct usbnet *usbdev = dev->priv;
|
||||||
struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
|
struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
|
||||||
struct NDIS_802_11_KEY ndis_key;
|
struct NDIS_802_11_KEY ndis_key;
|
||||||
int i, keyidx, ret;
|
int keyidx, ret;
|
||||||
u8 *addr;
|
u8 *addr;
|
||||||
|
|
||||||
keyidx = wrqu->encoding.flags & IW_ENCODE_INDEX;
|
keyidx = wrqu->encoding.flags & IW_ENCODE_INDEX;
|
||||||
|
@ -1543,9 +1543,7 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,
|
||||||
ndis_key.KeyIndex = cpu_to_le32(keyidx);
|
ndis_key.KeyIndex = cpu_to_le32(keyidx);
|
||||||
|
|
||||||
if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) {
|
if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) {
|
||||||
for (i = 0; i < 6; i++)
|
memcpy(ndis_key.KeyRSC, ext->rx_seq, 6);
|
||||||
ndis_key.KeyRSC |=
|
|
||||||
cpu_to_le64(ext->rx_seq[i] << (i * 8));
|
|
||||||
ndis_key.KeyIndex |= cpu_to_le32(1 << 29);
|
ndis_key.KeyIndex |= cpu_to_le32(1 << 29);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,10 @@ static void __init ssb_fixup_pcibridge(struct pci_dev *dev)
|
||||||
|
|
||||||
/* Enable PCI bridge bus mastering and memory space */
|
/* Enable PCI bridge bus mastering and memory space */
|
||||||
pci_set_master(dev);
|
pci_set_master(dev);
|
||||||
pcibios_enable_device(dev, ~0);
|
if (pcibios_enable_device(dev, ~0) < 0) {
|
||||||
|
ssb_printk(KERN_ERR "PCI: SSB bridge enable failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Enable PCI bridge BAR1 prefetch and burst */
|
/* Enable PCI bridge BAR1 prefetch and burst */
|
||||||
pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);
|
pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);
|
||||||
|
|
|
@ -25,6 +25,7 @@ struct netpoll {
|
||||||
|
|
||||||
struct netpoll_info {
|
struct netpoll_info {
|
||||||
atomic_t refcnt;
|
atomic_t refcnt;
|
||||||
|
int rx_flags;
|
||||||
spinlock_t rx_lock;
|
spinlock_t rx_lock;
|
||||||
struct netpoll *rx_np; /* netpoll that registered an rx_hook */
|
struct netpoll *rx_np; /* netpoll that registered an rx_hook */
|
||||||
struct sk_buff_head arp_tx; /* list of arp requests to reply to */
|
struct sk_buff_head arp_tx; /* list of arp requests to reply to */
|
||||||
|
@ -50,12 +51,12 @@ static inline int netpoll_rx(struct sk_buff *skb)
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (!npinfo || !npinfo->rx_np)
|
if (!npinfo || (!npinfo->rx_np && !npinfo->rx_flags))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
spin_lock_irqsave(&npinfo->rx_lock, flags);
|
spin_lock_irqsave(&npinfo->rx_lock, flags);
|
||||||
/* check rx_np again with the lock held */
|
/* check rx_flags again with the lock held */
|
||||||
if (npinfo->rx_np && __netpoll_rx(skb))
|
if (npinfo->rx_flags && __netpoll_rx(skb))
|
||||||
ret = 1;
|
ret = 1;
|
||||||
spin_unlock_irqrestore(&npinfo->rx_lock, flags);
|
spin_unlock_irqrestore(&npinfo->rx_lock, flags);
|
||||||
|
|
||||||
|
|
|
@ -175,7 +175,8 @@ extern void build_ehash_secret(void);
|
||||||
static inline unsigned int inet_ehashfn(const __be32 laddr, const __u16 lport,
|
static inline unsigned int inet_ehashfn(const __be32 laddr, const __u16 lport,
|
||||||
const __be32 faddr, const __be16 fport)
|
const __be32 faddr, const __be16 fport)
|
||||||
{
|
{
|
||||||
return jhash_2words((__force __u32) laddr ^ (__force __u32) faddr,
|
return jhash_3words((__force __u32) laddr,
|
||||||
|
(__force __u32) faddr,
|
||||||
((__u32) lport) << 16 | (__force __u32)fport,
|
((__u32) lport) << 16 | (__force __u32)fport,
|
||||||
inet_ehash_secret);
|
inet_ehash_secret);
|
||||||
}
|
}
|
||||||
|
|
|
@ -417,7 +417,8 @@ static void l2cap_conn_del(struct hci_conn *hcon, int err)
|
||||||
l2cap_sock_kill(sk);
|
l2cap_sock_kill(sk);
|
||||||
}
|
}
|
||||||
|
|
||||||
del_timer_sync(&conn->info_timer);
|
if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT)
|
||||||
|
del_timer_sync(&conn->info_timer);
|
||||||
|
|
||||||
hcon->l2cap_data = NULL;
|
hcon->l2cap_data = NULL;
|
||||||
kfree(conn);
|
kfree(conn);
|
||||||
|
|
|
@ -839,7 +839,7 @@ static void neigh_timer_handler(unsigned long arg)
|
||||||
struct sk_buff *skb = skb_peek(&neigh->arp_queue);
|
struct sk_buff *skb = skb_peek(&neigh->arp_queue);
|
||||||
/* keep skb alive even if arp_queue overflows */
|
/* keep skb alive even if arp_queue overflows */
|
||||||
if (skb)
|
if (skb)
|
||||||
skb_get(skb);
|
skb = skb_copy(skb, GFP_ATOMIC);
|
||||||
write_unlock(&neigh->lock);
|
write_unlock(&neigh->lock);
|
||||||
neigh->ops->solicit(neigh, skb);
|
neigh->ops->solicit(neigh, skb);
|
||||||
atomic_inc(&neigh->probes);
|
atomic_inc(&neigh->probes);
|
||||||
|
|
|
@ -39,6 +39,8 @@ static struct sk_buff_head skb_pool;
|
||||||
static atomic_t trapped;
|
static atomic_t trapped;
|
||||||
|
|
||||||
#define USEC_PER_POLL 50
|
#define USEC_PER_POLL 50
|
||||||
|
#define NETPOLL_RX_ENABLED 1
|
||||||
|
#define NETPOLL_RX_DROP 2
|
||||||
|
|
||||||
#define MAX_SKB_SIZE \
|
#define MAX_SKB_SIZE \
|
||||||
(MAX_UDP_CHUNK + sizeof(struct udphdr) + \
|
(MAX_UDP_CHUNK + sizeof(struct udphdr) + \
|
||||||
|
@ -126,11 +128,13 @@ static int poll_one_napi(struct netpoll_info *npinfo,
|
||||||
if (!test_bit(NAPI_STATE_SCHED, &napi->state))
|
if (!test_bit(NAPI_STATE_SCHED, &napi->state))
|
||||||
return budget;
|
return budget;
|
||||||
|
|
||||||
|
npinfo->rx_flags |= NETPOLL_RX_DROP;
|
||||||
atomic_inc(&trapped);
|
atomic_inc(&trapped);
|
||||||
|
|
||||||
work = napi->poll(napi, budget);
|
work = napi->poll(napi, budget);
|
||||||
|
|
||||||
atomic_dec(&trapped);
|
atomic_dec(&trapped);
|
||||||
|
npinfo->rx_flags &= ~NETPOLL_RX_DROP;
|
||||||
|
|
||||||
return budget - work;
|
return budget - work;
|
||||||
}
|
}
|
||||||
|
@ -470,7 +474,7 @@ int __netpoll_rx(struct sk_buff *skb)
|
||||||
if (skb->dev->type != ARPHRD_ETHER)
|
if (skb->dev->type != ARPHRD_ETHER)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* if receive ARP during middle of NAPI poll, then queue */
|
/* check if netpoll clients need ARP */
|
||||||
if (skb->protocol == htons(ETH_P_ARP) &&
|
if (skb->protocol == htons(ETH_P_ARP) &&
|
||||||
atomic_read(&trapped)) {
|
atomic_read(&trapped)) {
|
||||||
skb_queue_tail(&npi->arp_tx, skb);
|
skb_queue_tail(&npi->arp_tx, skb);
|
||||||
|
@ -532,9 +536,6 @@ int __netpoll_rx(struct sk_buff *skb)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
/* If packet received while already in poll then just
|
|
||||||
* silently drop.
|
|
||||||
*/
|
|
||||||
if (atomic_read(&trapped)) {
|
if (atomic_read(&trapped)) {
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -673,6 +674,7 @@ int netpoll_setup(struct netpoll *np)
|
||||||
goto release;
|
goto release;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
npinfo->rx_flags = 0;
|
||||||
npinfo->rx_np = NULL;
|
npinfo->rx_np = NULL;
|
||||||
|
|
||||||
spin_lock_init(&npinfo->rx_lock);
|
spin_lock_init(&npinfo->rx_lock);
|
||||||
|
@ -754,6 +756,7 @@ int netpoll_setup(struct netpoll *np)
|
||||||
|
|
||||||
if (np->rx_hook) {
|
if (np->rx_hook) {
|
||||||
spin_lock_irqsave(&npinfo->rx_lock, flags);
|
spin_lock_irqsave(&npinfo->rx_lock, flags);
|
||||||
|
npinfo->rx_flags |= NETPOLL_RX_ENABLED;
|
||||||
npinfo->rx_np = np;
|
npinfo->rx_np = np;
|
||||||
spin_unlock_irqrestore(&npinfo->rx_lock, flags);
|
spin_unlock_irqrestore(&npinfo->rx_lock, flags);
|
||||||
}
|
}
|
||||||
|
@ -795,6 +798,7 @@ void netpoll_cleanup(struct netpoll *np)
|
||||||
if (npinfo->rx_np == np) {
|
if (npinfo->rx_np == np) {
|
||||||
spin_lock_irqsave(&npinfo->rx_lock, flags);
|
spin_lock_irqsave(&npinfo->rx_lock, flags);
|
||||||
npinfo->rx_np = NULL;
|
npinfo->rx_np = NULL;
|
||||||
|
npinfo->rx_flags &= ~NETPOLL_RX_ENABLED;
|
||||||
spin_unlock_irqrestore(&npinfo->rx_lock, flags);
|
spin_unlock_irqrestore(&npinfo->rx_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -343,7 +343,7 @@ config INET_ESP
|
||||||
tristate "IP: ESP transformation"
|
tristate "IP: ESP transformation"
|
||||||
select XFRM
|
select XFRM
|
||||||
select CRYPTO
|
select CRYPTO
|
||||||
select CRYPTO_AEAD
|
select CRYPTO_AUTHENC
|
||||||
select CRYPTO_HMAC
|
select CRYPTO_HMAC
|
||||||
select CRYPTO_MD5
|
select CRYPTO_MD5
|
||||||
select CRYPTO_CBC
|
select CRYPTO_CBC
|
||||||
|
|
|
@ -750,9 +750,9 @@ static void __init ic_bootp_send_if(struct ic_device *d, unsigned long jiffies_d
|
||||||
printk("Unknown ARP type 0x%04x for device %s\n", dev->type, dev->name);
|
printk("Unknown ARP type 0x%04x for device %s\n", dev->type, dev->name);
|
||||||
b->htype = dev->type; /* can cause undefined behavior */
|
b->htype = dev->type; /* can cause undefined behavior */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* server_ip and your_ip address are both already zero per RFC2131 */
|
||||||
b->hlen = dev->addr_len;
|
b->hlen = dev->addr_len;
|
||||||
b->your_ip = NONE;
|
|
||||||
b->server_ip = NONE;
|
|
||||||
memcpy(b->hw_addr, dev->dev_addr, dev->addr_len);
|
memcpy(b->hw_addr, dev->dev_addr, dev->addr_len);
|
||||||
b->secs = htons(jiffies_diff / HZ);
|
b->secs = htons(jiffies_diff / HZ);
|
||||||
b->xid = d->xid;
|
b->xid = d->xid;
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
/*
|
/*
|
||||||
* Binary Increase Congestion control for TCP
|
* Binary Increase Congestion control for TCP
|
||||||
*
|
* Home page:
|
||||||
|
* http://netsrv.csc.ncsu.edu/twiki/bin/view/Main/BIC
|
||||||
* This is from the implementation of BICTCP in
|
* This is from the implementation of BICTCP in
|
||||||
* Lison-Xu, Kahaled Harfoush, and Injong Rhee.
|
* Lison-Xu, Kahaled Harfoush, and Injong Rhee.
|
||||||
* "Binary Increase Congestion Control for Fast, Long Distance
|
* "Binary Increase Congestion Control for Fast, Long Distance
|
||||||
* Networks" in InfoComm 2004
|
* Networks" in InfoComm 2004
|
||||||
* Available from:
|
* Available from:
|
||||||
* http://www.csc.ncsu.edu/faculty/rhee/export/bitcp.pdf
|
* http://netsrv.csc.ncsu.edu/export/bitcp.pdf
|
||||||
*
|
*
|
||||||
* Unless BIC is enabled and congestion window is large
|
* Unless BIC is enabled and congestion window is large
|
||||||
* this behaves the same as the original Reno.
|
* this behaves the same as the original Reno.
|
||||||
|
|
|
@ -1367,7 +1367,7 @@ static struct sk_buff *tcp_sacktag_walk(struct sk_buff *skb, struct sock *sk,
|
||||||
* a normal way
|
* a normal way
|
||||||
*/
|
*/
|
||||||
static struct sk_buff *tcp_sacktag_skip(struct sk_buff *skb, struct sock *sk,
|
static struct sk_buff *tcp_sacktag_skip(struct sk_buff *skb, struct sock *sk,
|
||||||
u32 skip_to_seq)
|
u32 skip_to_seq, int *fack_count)
|
||||||
{
|
{
|
||||||
tcp_for_write_queue_from(skb, sk) {
|
tcp_for_write_queue_from(skb, sk) {
|
||||||
if (skb == tcp_send_head(sk))
|
if (skb == tcp_send_head(sk))
|
||||||
|
@ -1375,6 +1375,8 @@ static struct sk_buff *tcp_sacktag_skip(struct sk_buff *skb, struct sock *sk,
|
||||||
|
|
||||||
if (!before(TCP_SKB_CB(skb)->end_seq, skip_to_seq))
|
if (!before(TCP_SKB_CB(skb)->end_seq, skip_to_seq))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
*fack_count += tcp_skb_pcount(skb);
|
||||||
}
|
}
|
||||||
return skb;
|
return skb;
|
||||||
}
|
}
|
||||||
|
@ -1390,7 +1392,7 @@ static struct sk_buff *tcp_maybe_skipping_dsack(struct sk_buff *skb,
|
||||||
return skb;
|
return skb;
|
||||||
|
|
||||||
if (before(next_dup->start_seq, skip_to_seq)) {
|
if (before(next_dup->start_seq, skip_to_seq)) {
|
||||||
skb = tcp_sacktag_skip(skb, sk, next_dup->start_seq);
|
skb = tcp_sacktag_skip(skb, sk, next_dup->start_seq, fack_count);
|
||||||
tcp_sacktag_walk(skb, sk, NULL,
|
tcp_sacktag_walk(skb, sk, NULL,
|
||||||
next_dup->start_seq, next_dup->end_seq,
|
next_dup->start_seq, next_dup->end_seq,
|
||||||
1, fack_count, reord, flag);
|
1, fack_count, reord, flag);
|
||||||
|
@ -1537,7 +1539,8 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb,
|
||||||
|
|
||||||
/* Head todo? */
|
/* Head todo? */
|
||||||
if (before(start_seq, cache->start_seq)) {
|
if (before(start_seq, cache->start_seq)) {
|
||||||
skb = tcp_sacktag_skip(skb, sk, start_seq);
|
skb = tcp_sacktag_skip(skb, sk, start_seq,
|
||||||
|
&fack_count);
|
||||||
skb = tcp_sacktag_walk(skb, sk, next_dup,
|
skb = tcp_sacktag_walk(skb, sk, next_dup,
|
||||||
start_seq,
|
start_seq,
|
||||||
cache->start_seq,
|
cache->start_seq,
|
||||||
|
@ -1565,7 +1568,8 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb,
|
||||||
goto walk;
|
goto walk;
|
||||||
}
|
}
|
||||||
|
|
||||||
skb = tcp_sacktag_skip(skb, sk, cache->end_seq);
|
skb = tcp_sacktag_skip(skb, sk, cache->end_seq,
|
||||||
|
&fack_count);
|
||||||
/* Check overlap against next cached too (past this one already) */
|
/* Check overlap against next cached too (past this one already) */
|
||||||
cache++;
|
cache++;
|
||||||
continue;
|
continue;
|
||||||
|
@ -1577,7 +1581,7 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb,
|
||||||
break;
|
break;
|
||||||
fack_count = tp->fackets_out;
|
fack_count = tp->fackets_out;
|
||||||
}
|
}
|
||||||
skb = tcp_sacktag_skip(skb, sk, start_seq);
|
skb = tcp_sacktag_skip(skb, sk, start_seq, &fack_count);
|
||||||
|
|
||||||
walk:
|
walk:
|
||||||
skb = tcp_sacktag_walk(skb, sk, next_dup, start_seq, end_seq,
|
skb = tcp_sacktag_walk(skb, sk, next_dup, start_seq, end_seq,
|
||||||
|
|
|
@ -85,7 +85,7 @@ config INET6_ESP
|
||||||
depends on IPV6
|
depends on IPV6
|
||||||
select XFRM
|
select XFRM
|
||||||
select CRYPTO
|
select CRYPTO
|
||||||
select CRYPTO_AEAD
|
select CRYPTO_AUTHENC
|
||||||
select CRYPTO_HMAC
|
select CRYPTO_HMAC
|
||||||
select CRYPTO_MD5
|
select CRYPTO_MD5
|
||||||
select CRYPTO_CBC
|
select CRYPTO_CBC
|
||||||
|
|
|
@ -76,9 +76,11 @@ static int __init ircomm_init(void)
|
||||||
|
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
{ struct proc_dir_entry *ent;
|
{ struct proc_dir_entry *ent;
|
||||||
ent = create_proc_entry("ircomm", 0, proc_irda);
|
ent = proc_create("ircomm", 0, proc_irda, &ircomm_proc_fops);
|
||||||
if (ent)
|
if (!ent) {
|
||||||
ent->proc_fops = &ircomm_proc_fops;
|
printk(KERN_ERR "ircomm_init: can't create /proc entry!\n");
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PROC_FS */
|
#endif /* CONFIG_PROC_FS */
|
||||||
|
|
||||||
|
|
|
@ -128,13 +128,11 @@ static int __init irlan_init(void)
|
||||||
|
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
{ struct proc_dir_entry *proc;
|
{ struct proc_dir_entry *proc;
|
||||||
proc = create_proc_entry("irlan", 0, proc_irda);
|
proc = proc_create("irlan", 0, proc_irda, &irlan_fops);
|
||||||
if (!proc) {
|
if (!proc) {
|
||||||
printk(KERN_ERR "irlan_init: can't create /proc entry!\n");
|
printk(KERN_ERR "irlan_init: can't create /proc entry!\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
proc->proc_fops = &irlan_fops;
|
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PROC_FS */
|
#endif /* CONFIG_PROC_FS */
|
||||||
|
|
||||||
|
|
|
@ -72,11 +72,9 @@ void __init irda_proc_register(void)
|
||||||
return;
|
return;
|
||||||
proc_irda->owner = THIS_MODULE;
|
proc_irda->owner = THIS_MODULE;
|
||||||
|
|
||||||
for (i=0; i<ARRAY_SIZE(irda_dirs); i++) {
|
for (i = 0; i < ARRAY_SIZE(irda_dirs); i++)
|
||||||
d = create_proc_entry(irda_dirs[i].name, 0, proc_irda);
|
d = proc_create(irda_dirs[i].name, 0, proc_irda,
|
||||||
if (d)
|
irda_dirs[i].fops);
|
||||||
d->proc_fops = irda_dirs[i].fops;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -621,7 +621,6 @@ static int iucv_sever_pathid(u16 pathid, u8 userdata[16])
|
||||||
return iucv_call_b2f0(IUCV_SEVER, parm);
|
return iucv_call_b2f0(IUCV_SEVER, parm);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
/**
|
/**
|
||||||
* __iucv_cleanup_queue
|
* __iucv_cleanup_queue
|
||||||
* @dummy: unused dummy argument
|
* @dummy: unused dummy argument
|
||||||
|
@ -632,7 +631,6 @@ static int iucv_sever_pathid(u16 pathid, u8 userdata[16])
|
||||||
static void __iucv_cleanup_queue(void *dummy)
|
static void __iucv_cleanup_queue(void *dummy)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* iucv_cleanup_queue
|
* iucv_cleanup_queue
|
||||||
|
|
|
@ -256,12 +256,10 @@ int __init sctp_eps_proc_init(void)
|
||||||
{
|
{
|
||||||
struct proc_dir_entry *p;
|
struct proc_dir_entry *p;
|
||||||
|
|
||||||
p = create_proc_entry("eps", S_IRUGO, proc_net_sctp);
|
p = proc_create("eps", S_IRUGO, proc_net_sctp, &sctp_eps_seq_fops);
|
||||||
if (!p)
|
if (!p)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
p->proc_fops = &sctp_eps_seq_fops;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,12 +373,11 @@ int __init sctp_assocs_proc_init(void)
|
||||||
{
|
{
|
||||||
struct proc_dir_entry *p;
|
struct proc_dir_entry *p;
|
||||||
|
|
||||||
p = create_proc_entry("assocs", S_IRUGO, proc_net_sctp);
|
p = proc_create("assocs", S_IRUGO, proc_net_sctp,
|
||||||
|
&sctp_assocs_seq_fops);
|
||||||
if (!p)
|
if (!p)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
p->proc_fops = &sctp_assocs_seq_fops;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue